@flanksource/clicky-ui 0.3.10 → 0.3.11
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 +85 -0
- package/README.md +33 -2
- package/dist/ai.cjs +71 -5
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +71 -5
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +17 -13
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +8 -4
- package/dist/clicky.d.ts +1 -1
- package/dist/clicky.d.ts.map +1 -1
- package/dist/comments/CommentCard.cjs +84 -38
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +85 -39
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentComposer.cjs +21 -11
- package/dist/comments/CommentComposer.cjs.map +1 -1
- package/dist/comments/CommentComposer.d.ts.map +1 -1
- package/dist/comments/CommentComposer.js +21 -11
- package/dist/comments/CommentComposer.js.map +1 -1
- package/dist/comments/CommentProvider.cjs +84 -12
- package/dist/comments/CommentProvider.cjs.map +1 -1
- package/dist/comments/CommentProvider.d.ts +4 -2
- package/dist/comments/CommentProvider.d.ts.map +1 -1
- package/dist/comments/CommentProvider.js +86 -14
- package/dist/comments/CommentProvider.js.map +1 -1
- package/dist/comments/CommentSidePanel.cjs +116 -38
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.d.ts +2 -0
- package/dist/comments/CommentSidePanel.d.ts.map +1 -1
- package/dist/comments/CommentSidePanel.js +117 -39
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/CommentThread.cjs +4 -0
- package/dist/comments/CommentThread.cjs.map +1 -1
- package/dist/comments/CommentThread.d.ts +5 -1
- package/dist/comments/CommentThread.d.ts.map +1 -1
- package/dist/comments/CommentThread.js +4 -0
- package/dist/comments/CommentThread.js.map +1 -1
- package/dist/comments/CommentThreadList.cjs +17 -5
- package/dist/comments/CommentThreadList.cjs.map +1 -1
- package/dist/comments/CommentThreadList.d.ts +3 -1
- package/dist/comments/CommentThreadList.d.ts.map +1 -1
- package/dist/comments/CommentThreadList.js +18 -6
- package/dist/comments/CommentThreadList.js.map +1 -1
- package/dist/comments/comment-context.cjs +88 -0
- package/dist/comments/comment-context.cjs.map +1 -1
- package/dist/comments/comment-context.d.ts +26 -0
- package/dist/comments/comment-context.d.ts.map +1 -1
- package/dist/comments/comment-context.js +89 -1
- package/dist/comments/comment-context.js.map +1 -1
- package/dist/comments.cjs +3 -0
- package/dist/comments.cjs.map +1 -1
- package/dist/comments.d.ts +1 -1
- package/dist/comments.d.ts.map +1 -1
- package/dist/comments.js +4 -1
- package/dist/components/Combobox.cjs +145 -34
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +24 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +147 -36
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DatePicker.cjs +1 -1
- package/dist/components/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker.js +1 -1
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +1 -1
- package/dist/components/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker.js +1 -1
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/FilterBar.cjs +41 -459
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +4 -62
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +13 -430
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +97 -0
- package/dist/components/InputField.cjs.map +1 -0
- package/dist/components/InputField.d.ts +42 -0
- package/dist/components/InputField.d.ts.map +1 -0
- package/dist/components/InputField.js +97 -0
- package/dist/components/InputField.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +90 -15
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +92 -17
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MdxEditorField.cjs.map +1 -1
- package/dist/components/MdxEditorField.d.ts +1 -1
- package/dist/components/MdxEditorField.d.ts.map +1 -1
- package/dist/components/MdxEditorField.js.map +1 -1
- package/dist/components/MdxEditorToolbar.cjs +6 -1
- package/dist/components/MdxEditorToolbar.cjs.map +1 -1
- package/dist/components/MdxEditorToolbar.d.ts.map +1 -1
- package/dist/components/MdxEditorToolbar.js +6 -1
- package/dist/components/MdxEditorToolbar.js.map +1 -1
- package/dist/components/MultiSelect.cjs +0 -1
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +0 -1
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SearchInput.cjs +14 -43
- package/dist/components/SearchInput.cjs.map +1 -1
- package/dist/components/SearchInput.d.ts +6 -5
- package/dist/components/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput.js +15 -44
- package/dist/components/SearchInput.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +155 -67
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +34 -16
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +158 -70
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/SecretKeySelector.model.cjs +32 -0
- package/dist/components/SecretKeySelector.model.cjs.map +1 -0
- package/dist/components/SecretKeySelector.model.d.ts +4 -0
- package/dist/components/SecretKeySelector.model.d.ts.map +1 -0
- package/dist/components/SecretKeySelector.model.js +32 -0
- package/dist/components/SecretKeySelector.model.js.map +1 -0
- package/dist/components/SegmentedControl.cjs +41 -6
- package/dist/components/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl.d.ts +7 -3
- package/dist/components/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl.js +41 -6
- package/dist/components/SegmentedControl.js.map +1 -1
- package/dist/components/filter-bar-context.cjs +10 -0
- package/dist/components/filter-bar-context.cjs.map +1 -0
- package/dist/components/filter-bar-context.d.ts +5 -0
- package/dist/components/filter-bar-context.d.ts.map +1 -0
- package/dist/components/filter-bar-context.js +10 -0
- package/dist/components/filter-bar-context.js.map +1 -0
- package/dist/components/filter-bar-field-utils.cjs +119 -0
- package/dist/components/filter-bar-field-utils.cjs.map +1 -0
- package/dist/components/filter-bar-field-utils.d.ts +21 -0
- package/dist/components/filter-bar-field-utils.d.ts.map +1 -0
- package/dist/components/filter-bar-field-utils.js +119 -0
- package/dist/components/filter-bar-field-utils.js.map +1 -0
- package/dist/components/filter-bar-multi.cjs +193 -0
- package/dist/components/filter-bar-multi.cjs.map +1 -0
- package/dist/components/filter-bar-multi.d.ts +74 -0
- package/dist/components/filter-bar-multi.d.ts.map +1 -0
- package/dist/components/filter-bar-multi.js +193 -0
- package/dist/components/filter-bar-multi.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +81 -10
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +82 -11
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +156 -24
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +9 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +156 -24
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +35 -12
- 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 +37 -14
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +21 -3
- 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 +22 -4
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +123 -13
- 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 +123 -13
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +30 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +19 -0
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +3 -0
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +19 -0
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/loading.cjs +17 -0
- package/dist/components/loading.cjs.map +1 -1
- package/dist/components/loading.d.ts +9 -0
- package/dist/components/loading.d.ts.map +1 -1
- package/dist/components/loading.js +17 -0
- package/dist/components/loading.js.map +1 -1
- package/dist/components/mdx-editor-field-plugins.cjs +28 -4
- package/dist/components/mdx-editor-field-plugins.cjs.map +1 -1
- package/dist/components/mdx-editor-field-plugins.d.ts.map +1 -1
- package/dist/components/mdx-editor-field-plugins.js +28 -4
- package/dist/components/mdx-editor-field-plugins.js.map +1 -1
- package/dist/components/mdx-editor-options.d.ts +23 -1
- package/dist/components/mdx-editor-options.d.ts.map +1 -1
- package/dist/components.cjs +13 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +20 -16
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +14 -2
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +301 -51
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts +21 -3
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +301 -51
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/CodeBlock.cjs +100 -20
- package/dist/data/CodeBlock.cjs.map +1 -1
- package/dist/data/CodeBlock.d.ts +18 -1
- package/dist/data/CodeBlock.d.ts.map +1 -1
- package/dist/data/CodeBlock.js +101 -21
- package/dist/data/CodeBlock.js.map +1 -1
- package/dist/data/CodeDiff.cjs +221 -0
- package/dist/data/CodeDiff.cjs.map +1 -0
- package/dist/data/CodeDiff.d.ts +24 -0
- package/dist/data/CodeDiff.d.ts.map +1 -0
- package/dist/data/CodeDiff.js +221 -0
- package/dist/data/CodeDiff.js.map +1 -0
- package/dist/data/DataTable.cjs +359 -219
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +12 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +353 -213
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FilterPill.cjs +43 -35
- package/dist/data/FilterPill.cjs.map +1 -1
- package/dist/data/FilterPill.d.ts +9 -1
- package/dist/data/FilterPill.d.ts.map +1 -1
- package/dist/data/FilterPill.js +43 -35
- package/dist/data/FilterPill.js.map +1 -1
- package/dist/data/FixtureEditor/FenceForm.cjs +123 -0
- package/dist/data/FixtureEditor/FenceForm.cjs.map +1 -0
- package/dist/data/FixtureEditor/FenceForm.d.ts +14 -0
- package/dist/data/FixtureEditor/FenceForm.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FenceForm.js +123 -0
- package/dist/data/FixtureEditor/FenceForm.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.cjs +236 -0
- package/dist/data/FixtureEditor/FixtureEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.d.ts +3 -0
- package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.js +236 -0
- package/dist/data/FixtureEditor/FixtureEditor.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs +128 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts +8 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js +128 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +148 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts +11 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +148 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.cjs +35 -0
- package/dist/data/FixtureEditor/RawFenceEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts +11 -0
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.js +35 -0
- package/dist/data/FixtureEditor/RawFenceEditor.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.cjs +130 -0
- package/dist/data/FixtureEditor/fixture-blocks.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.d.ts +26 -0
- package/dist/data/FixtureEditor/fixture-blocks.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.js +130 -0
- package/dist/data/FixtureEditor/fixture-blocks.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.cjs +17 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.d.ts +3 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.js +17 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs +300 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts +32 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.js +300 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -0
- package/dist/data/FixtureEditor/index.d.ts +5 -0
- package/dist/data/FixtureEditor/index.d.ts.map +1 -0
- package/dist/data/FixtureEditor/types.d.ts +44 -0
- package/dist/data/FixtureEditor/types.d.ts.map +1 -0
- package/dist/data/LogDetails.cjs +4 -4
- package/dist/data/LogDetails.cjs.map +1 -1
- package/dist/data/LogDetails.js +4 -4
- package/dist/data/LogDetails.js.map +1 -1
- package/dist/data/Markdown.cjs +29 -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 +30 -2
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/Properties.cjs +160 -40
- package/dist/data/Properties.cjs.map +1 -1
- package/dist/data/Properties.d.ts +8 -2
- package/dist/data/Properties.d.ts.map +1 -1
- package/dist/data/Properties.js +160 -40
- package/dist/data/Properties.js.map +1 -1
- package/dist/data/SchemaViewer.cjs +1 -1
- package/dist/data/SchemaViewer.cjs.map +1 -1
- package/dist/data/SchemaViewer.js +2 -2
- package/dist/data/SchemaViewer.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +336 -18
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +13 -4
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +336 -18
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.test-utils.d.ts +12 -0
- package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -0
- package/dist/data/ai/PolicyTree.cjs +265 -0
- package/dist/data/ai/PolicyTree.cjs.map +1 -0
- package/dist/data/ai/PolicyTree.d.ts +33 -0
- package/dist/data/ai/PolicyTree.d.ts.map +1 -0
- package/dist/data/ai/PolicyTree.js +265 -0
- package/dist/data/ai/PolicyTree.js.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +251 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +31 -0
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.js +251 -0
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -0
- package/dist/data/ai/PromptPicker/index.d.ts +4 -0
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.cjs +39 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.d.ts +9 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.js +39 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.js.map +1 -0
- package/dist/data/ai/PromptPicker/types.d.ts +25 -0
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +242 -0
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.d.ts +42 -0
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.js +242 -0
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -0
- package/dist/data/ai/RuntimeModePicker.cjs +61 -0
- package/dist/data/ai/RuntimeModePicker.cjs.map +1 -0
- package/dist/data/ai/RuntimeModePicker.d.ts +12 -0
- package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -0
- package/dist/data/ai/RuntimeModePicker.js +61 -0
- package/dist/data/ai/RuntimeModePicker.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +432 -0
- package/dist/data/ai/SessionInspector.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +11 -0
- package/dist/data/ai/SessionInspector.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.js +432 -0
- package/dist/data/ai/SessionInspector.js.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +208 -196
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +39 -3
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.grouping.cjs +44 -0
- package/dist/data/ai/SessionViewer.grouping.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.grouping.d.ts +17 -0
- package/dist/data/ai/SessionViewer.grouping.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.grouping.js +44 -0
- package/dist/data/ai/SessionViewer.grouping.js.map +1 -0
- package/dist/data/ai/SessionViewer.input.cjs +219 -0
- package/dist/data/ai/SessionViewer.input.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.input.d.ts +44 -0
- package/dist/data/ai/SessionViewer.input.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.input.js +219 -0
- package/dist/data/ai/SessionViewer.input.js.map +1 -0
- package/dist/data/ai/SessionViewer.js +209 -197
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +203 -105
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +45 -7
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +203 -105
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +751 -0
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.rows.d.ts +20 -0
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.rows.js +751 -0
- package/dist/data/ai/SessionViewer.rows.js.map +1 -0
- package/dist/data/ai/SessionViewer.unified.d.ts +193 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -0
- package/dist/data/ai/SessionViewerMenu.cjs +57 -68
- package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
- package/dist/data/ai/SessionViewerMenu.d.ts +3 -3
- package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.js +58 -69
- package/dist/data/ai/SessionViewerMenu.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs +25 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js +25 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +6 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +44 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +137 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +137 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.cjs +29 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.js +29 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +481 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +16 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +481 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +421 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +17 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +421 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +98 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +10 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +98 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.cjs +23 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +7 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.js +23 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +77 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +14 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +77 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +65 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +65 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +227 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +227 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs +45 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts +7 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.js +45 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs +287 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +79 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.js +287 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +213 -0
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +41 -0
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.js +213 -0
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs +252 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts +36 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.js +252 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs +214 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +35 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.js +214 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs +15 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +13 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.js +15 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.cjs +74 -0
- package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts +19 -0
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.js +74 -0
- package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +144 -0
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +28 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.js +144 -0
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs +55 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts +9 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js +55 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +398 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +169 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js +398 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -0
- package/dist/data/ai/ToolPreferences.cjs +705 -165
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +29 -5
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +707 -167
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.cjs +549 -0
- package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -0
- package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.js +549 -0
- package/dist/data/ai/ToolSchemaBrowser.js.map +1 -0
- package/dist/data/ai/agent-action-icons.cjs +78 -0
- package/dist/data/ai/agent-action-icons.cjs.map +1 -0
- package/dist/data/ai/agent-action-icons.d.ts +22 -0
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -0
- package/dist/data/ai/agent-action-icons.js +78 -0
- package/dist/data/ai/agent-action-icons.js.map +1 -0
- package/dist/data/ai/index.d.ts +21 -6
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.cjs +23 -0
- package/dist/data/ai/model-capabilities.cjs.map +1 -0
- package/dist/data/ai/model-capabilities.d.ts +9 -0
- package/dist/data/ai/model-capabilities.d.ts.map +1 -0
- package/dist/data/ai/model-capabilities.js +23 -0
- package/dist/data/ai/model-capabilities.js.map +1 -0
- package/dist/data/ai/runtime-mode.cjs +133 -0
- package/dist/data/ai/runtime-mode.cjs.map +1 -0
- package/dist/data/ai/runtime-mode.d.ts +31 -0
- package/dist/data/ai/runtime-mode.d.ts.map +1 -0
- package/dist/data/ai/runtime-mode.js +133 -0
- package/dist/data/ai/runtime-mode.js.map +1 -0
- package/dist/data/ai/session-categories.cjs +34 -0
- package/dist/data/ai/session-categories.cjs.map +1 -1
- package/dist/data/ai/session-categories.d.ts +2 -0
- package/dist/data/ai/session-categories.d.ts.map +1 -1
- package/dist/data/ai/session-categories.js +34 -0
- package/dist/data/ai/session-categories.js.map +1 -1
- package/dist/data/ai/session-cost.cjs +13 -0
- package/dist/data/ai/session-cost.cjs.map +1 -0
- package/dist/data/ai/session-cost.d.ts +8 -0
- package/dist/data/ai/session-cost.d.ts.map +1 -0
- package/dist/data/ai/session-cost.js +13 -0
- package/dist/data/ai/session-cost.js.map +1 -0
- package/dist/data/ai/tool-name.d.ts +10 -0
- package/dist/data/ai/tool-name.d.ts.map +1 -0
- package/dist/data/ai/use-session-scroll.cjs +96 -0
- package/dist/data/ai/use-session-scroll.cjs.map +1 -0
- package/dist/data/ai/use-session-scroll.d.ts +43 -0
- package/dist/data/ai/use-session-scroll.d.ts.map +1 -0
- package/dist/data/ai/use-session-scroll.js +96 -0
- package/dist/data/ai/use-session-scroll.js.map +1 -0
- package/dist/data/cells/TagList.cjs +4 -2
- package/dist/data/cells/TagList.cjs.map +1 -1
- package/dist/data/cells/TagList.d.ts +2 -1
- package/dist/data/cells/TagList.d.ts.map +1 -1
- package/dist/data/cells/TagList.js +4 -2
- package/dist/data/cells/TagList.js.map +1 -1
- package/dist/data/chat/Chat.cjs +49 -15
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +16 -2
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +49 -15
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +164 -0
- package/dist/data/chat/ContextMeter.cjs.map +1 -0
- package/dist/data/chat/ContextMeter.d.ts +50 -0
- package/dist/data/chat/ContextMeter.d.ts.map +1 -0
- package/dist/data/chat/ContextMeter.js +164 -0
- package/dist/data/chat/ContextMeter.js.map +1 -0
- package/dist/data/chat/ModelSelector.cjs +139 -10
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts +44 -3
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +141 -12
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +83 -69
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts +3 -3
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +83 -69
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/effort-icons.cjs +43 -0
- package/dist/data/chat/effort-icons.cjs.map +1 -0
- package/dist/data/chat/effort-icons.d.ts +10 -0
- package/dist/data/chat/effort-icons.d.ts.map +1 -0
- package/dist/data/chat/effort-icons.js +43 -0
- package/dist/data/chat/effort-icons.js.map +1 -0
- package/dist/data/chat/index.d.ts +3 -3
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.cjs +25 -6
- package/dist/data/chat/provider-icons.cjs.map +1 -1
- package/dist/data/chat/provider-icons.d.ts +3 -5
- package/dist/data/chat/provider-icons.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.js +25 -6
- package/dist/data/chat/provider-icons.js.map +1 -1
- package/dist/data/chat/types.cjs +42 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +83 -19
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +42 -0
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/code-block-actions.cjs +101 -0
- package/dist/data/code-block-actions.cjs.map +1 -0
- package/dist/data/code-block-actions.d.ts +20 -0
- package/dist/data/code-block-actions.d.ts.map +1 -0
- package/dist/data/code-block-actions.js +101 -0
- package/dist/data/code-block-actions.js.map +1 -0
- package/dist/data/code-diff.cjs +106 -0
- package/dist/data/code-diff.cjs.map +1 -0
- package/dist/data/code-diff.d.ts +20 -0
- package/dist/data/code-diff.d.ts.map +1 -0
- package/dist/data/code-diff.js +106 -0
- package/dist/data/code-diff.js.map +1 -0
- package/dist/data/code-highlight.cjs +30 -0
- package/dist/data/code-highlight.cjs.map +1 -1
- package/dist/data/code-highlight.d.ts +8 -0
- package/dist/data/code-highlight.d.ts.map +1 -1
- package/dist/data/code-highlight.js +30 -0
- package/dist/data/code-highlight.js.map +1 -1
- package/dist/data/git/GitChangeList.cjs +410 -0
- package/dist/data/git/GitChangeList.cjs.map +1 -0
- package/dist/data/git/GitChangeList.d.ts +69 -0
- package/dist/data/git/GitChangeList.d.ts.map +1 -0
- package/dist/data/git/GitChangeList.js +410 -0
- package/dist/data/git/GitChangeList.js.map +1 -0
- package/dist/data/git/git-dates.cjs +37 -0
- package/dist/data/git/git-dates.cjs.map +1 -0
- package/dist/data/git/git-dates.d.ts +4 -0
- package/dist/data/git/git-dates.d.ts.map +1 -0
- package/dist/data/git/git-dates.js +37 -0
- package/dist/data/git/git-dates.js.map +1 -0
- package/dist/data/git/index.d.ts +3 -0
- package/dist/data/git/index.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.cjs +323 -0
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.cjs +99 -0
- package/dist/data/query-browser/QueryBrowser.completion.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.d.ts +34 -0
- package/dist/data/query-browser/QueryBrowser.completion.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.js +99 -0
- package/dist/data/query-browser/QueryBrowser.completion.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.d.ts +42 -0
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.js +323 -0
- package/dist/data/query-browser/QueryBrowser.js.map +1 -0
- package/dist/data/query-browser/index.d.ts +3 -0
- package/dist/data/query-browser/index.d.ts.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.cjs.map +1 -1
- package/dist/data/version-info.js +3 -3
- package/dist/data/version-info.js.map +1 -1
- package/dist/data.cjs +164 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +7 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +166 -2
- package/dist/data.js.map +1 -1
- package/dist/icons/components/UiArrowFatUp.cjs +15 -0
- package/dist/icons/components/UiArrowFatUp.cjs.map +1 -0
- package/dist/icons/components/UiArrowFatUp.d.ts +15 -0
- package/dist/icons/components/UiArrowFatUp.d.ts.map +1 -0
- package/dist/icons/components/UiArrowFatUp.js +15 -0
- package/dist/icons/components/UiArrowFatUp.js.map +1 -0
- package/dist/icons/components/UiAsterisk.cjs +15 -0
- package/dist/icons/components/UiAsterisk.cjs.map +1 -0
- package/dist/icons/components/UiAsterisk.d.ts +15 -0
- package/dist/icons/components/UiAsterisk.d.ts.map +1 -0
- package/dist/icons/components/UiAsterisk.js +15 -0
- package/dist/icons/components/UiAsterisk.js.map +1 -0
- package/dist/icons/components/UiAtom.cjs +15 -0
- package/dist/icons/components/UiAtom.cjs.map +1 -0
- package/dist/icons/components/UiAtom.d.ts +15 -0
- package/dist/icons/components/UiAtom.d.ts.map +1 -0
- package/dist/icons/components/UiAtom.js +15 -0
- package/dist/icons/components/UiAtom.js.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.cjs +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.cjs.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.d.ts +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.js +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.js +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.js +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.js +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.js +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.js +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.js.map +1 -0
- package/dist/icons/components/UiChatDots.cjs +15 -0
- package/dist/icons/components/UiChatDots.cjs.map +1 -0
- package/dist/icons/components/UiChatDots.d.ts +15 -0
- package/dist/icons/components/UiChatDots.d.ts.map +1 -0
- package/dist/icons/components/UiChatDots.js +15 -0
- package/dist/icons/components/UiChatDots.js.map +1 -0
- package/dist/icons/components/UiCoins.cjs +15 -0
- package/dist/icons/components/UiCoins.cjs.map +1 -0
- package/dist/icons/components/UiCoins.d.ts +15 -0
- package/dist/icons/components/UiCoins.d.ts.map +1 -0
- package/dist/icons/components/UiCoins.js +15 -0
- package/dist/icons/components/UiCoins.js.map +1 -0
- package/dist/icons/components/UiCompass.cjs +15 -0
- package/dist/icons/components/UiCompass.cjs.map +1 -0
- package/dist/icons/components/UiCompass.d.ts +15 -0
- package/dist/icons/components/UiCompass.d.ts.map +1 -0
- package/dist/icons/components/UiCompass.js +15 -0
- package/dist/icons/components/UiCompass.js.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.cjs +15 -0
- package/dist/icons/components/UiCurrencyDollar.cjs.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.d.ts +15 -0
- package/dist/icons/components/UiCurrencyDollar.d.ts.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.js +15 -0
- package/dist/icons/components/UiCurrencyDollar.js.map +1 -0
- package/dist/icons/components/UiCursorClick.cjs +15 -0
- package/dist/icons/components/UiCursorClick.cjs.map +1 -0
- package/dist/icons/components/UiCursorClick.d.ts +15 -0
- package/dist/icons/components/UiCursorClick.d.ts.map +1 -0
- package/dist/icons/components/UiCursorClick.js +15 -0
- package/dist/icons/components/UiCursorClick.js.map +1 -0
- package/dist/icons/components/UiCursorText.cjs +15 -0
- package/dist/icons/components/UiCursorText.cjs.map +1 -0
- package/dist/icons/components/UiCursorText.d.ts +15 -0
- package/dist/icons/components/UiCursorText.d.ts.map +1 -0
- package/dist/icons/components/UiCursorText.js +15 -0
- package/dist/icons/components/UiCursorText.js.map +1 -0
- package/dist/icons/components/UiEllipsisBold.cjs +10 -0
- package/dist/icons/components/UiEllipsisBold.cjs.map +1 -0
- package/dist/icons/components/UiEllipsisBold.d.ts +9 -0
- package/dist/icons/components/UiEllipsisBold.d.ts.map +1 -0
- package/dist/icons/components/UiEllipsisBold.js +10 -0
- package/dist/icons/components/UiEllipsisBold.js.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.cjs +15 -0
- package/dist/icons/components/UiFastForwardCircle.cjs.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.d.ts +15 -0
- package/dist/icons/components/UiFastForwardCircle.d.ts.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.js +15 -0
- package/dist/icons/components/UiFastForwardCircle.js.map +1 -0
- package/dist/icons/components/UiFilePlus.cjs +15 -0
- package/dist/icons/components/UiFilePlus.cjs.map +1 -0
- package/dist/icons/components/UiFilePlus.d.ts +15 -0
- package/dist/icons/components/UiFilePlus.d.ts.map +1 -0
- package/dist/icons/components/UiFilePlus.js +15 -0
- package/dist/icons/components/UiFilePlus.js.map +1 -0
- package/dist/icons/components/UiGavel.cjs +15 -0
- package/dist/icons/components/UiGavel.cjs.map +1 -0
- package/dist/icons/components/UiGavel.d.ts +15 -0
- package/dist/icons/components/UiGavel.d.ts.map +1 -0
- package/dist/icons/components/UiGavel.js +15 -0
- package/dist/icons/components/UiGavel.js.map +1 -0
- package/dist/icons/components/UiGearSix.cjs +15 -0
- package/dist/icons/components/UiGearSix.cjs.map +1 -0
- package/dist/icons/components/UiGearSix.d.ts +15 -0
- package/dist/icons/components/UiGearSix.d.ts.map +1 -0
- package/dist/icons/components/UiGearSix.js +15 -0
- package/dist/icons/components/UiGearSix.js.map +1 -0
- package/dist/icons/components/UiGitCommit.cjs +15 -0
- package/dist/icons/components/UiGitCommit.cjs.map +1 -0
- package/dist/icons/components/UiGitCommit.d.ts +15 -0
- package/dist/icons/components/UiGitCommit.d.ts.map +1 -0
- package/dist/icons/components/UiGitCommit.js +15 -0
- package/dist/icons/components/UiGitCommit.js.map +1 -0
- package/dist/icons/components/UiHandPalm.cjs +15 -0
- package/dist/icons/components/UiHandPalm.cjs.map +1 -0
- package/dist/icons/components/UiHandPalm.d.ts +15 -0
- package/dist/icons/components/UiHandPalm.d.ts.map +1 -0
- package/dist/icons/components/UiHandPalm.js +15 -0
- package/dist/icons/components/UiHandPalm.js.map +1 -0
- package/dist/icons/components/UiKeyboard.cjs +15 -0
- package/dist/icons/components/UiKeyboard.cjs.map +1 -0
- package/dist/icons/components/UiKeyboard.d.ts +15 -0
- package/dist/icons/components/UiKeyboard.d.ts.map +1 -0
- package/dist/icons/components/UiKeyboard.js +15 -0
- package/dist/icons/components/UiKeyboard.js.map +1 -0
- package/dist/icons/components/UiListChecks.cjs +15 -0
- package/dist/icons/components/UiListChecks.cjs.map +1 -0
- package/dist/icons/components/UiListChecks.d.ts +15 -0
- package/dist/icons/components/UiListChecks.d.ts.map +1 -0
- package/dist/icons/components/UiListChecks.js +15 -0
- package/dist/icons/components/UiListChecks.js.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.cjs +10 -0
- package/dist/icons/components/UiLogoAnthropic.cjs.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.d.ts +9 -0
- package/dist/icons/components/UiLogoAnthropic.d.ts.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.js +10 -0
- package/dist/icons/components/UiLogoAnthropic.js.map +1 -0
- package/dist/icons/components/UiLogoClaude.cjs +10 -0
- package/dist/icons/components/UiLogoClaude.cjs.map +1 -0
- package/dist/icons/components/UiLogoClaude.d.ts +9 -0
- package/dist/icons/components/UiLogoClaude.d.ts.map +1 -0
- package/dist/icons/components/UiLogoClaude.js +10 -0
- package/dist/icons/components/UiLogoClaude.js.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.cjs +10 -0
- package/dist/icons/components/UiLogoDeepseek.cjs.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.d.ts +9 -0
- package/dist/icons/components/UiLogoDeepseek.d.ts.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.js +10 -0
- package/dist/icons/components/UiLogoDeepseek.js.map +1 -0
- package/dist/icons/components/UiLogoGemini.cjs +10 -0
- package/dist/icons/components/UiLogoGemini.cjs.map +1 -0
- package/dist/icons/components/UiLogoGemini.d.ts +9 -0
- package/dist/icons/components/UiLogoGemini.d.ts.map +1 -0
- package/dist/icons/components/UiLogoGemini.js +10 -0
- package/dist/icons/components/UiLogoGemini.js.map +1 -0
- package/dist/icons/components/UiLogoGoogle.cjs +10 -0
- package/dist/icons/components/UiLogoGoogle.cjs.map +1 -0
- package/dist/icons/components/UiLogoGoogle.d.ts +9 -0
- package/dist/icons/components/UiLogoGoogle.d.ts.map +1 -0
- package/dist/icons/components/UiLogoGoogle.js +10 -0
- package/dist/icons/components/UiLogoGoogle.js.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.cjs +10 -0
- package/dist/icons/components/UiLogoHuggingface.cjs.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.d.ts +9 -0
- package/dist/icons/components/UiLogoHuggingface.d.ts.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.js +10 -0
- package/dist/icons/components/UiLogoHuggingface.js.map +1 -0
- package/dist/icons/components/UiLogoMeta.cjs +10 -0
- package/dist/icons/components/UiLogoMeta.cjs.map +1 -0
- package/dist/icons/components/UiLogoMeta.d.ts +9 -0
- package/dist/icons/components/UiLogoMeta.d.ts.map +1 -0
- package/dist/icons/components/UiLogoMeta.js +10 -0
- package/dist/icons/components/UiLogoMeta.js.map +1 -0
- package/dist/icons/components/UiLogoMistral.cjs +10 -0
- package/dist/icons/components/UiLogoMistral.cjs.map +1 -0
- package/dist/icons/components/UiLogoMistral.d.ts +9 -0
- package/dist/icons/components/UiLogoMistral.d.ts.map +1 -0
- package/dist/icons/components/UiLogoMistral.js +10 -0
- package/dist/icons/components/UiLogoMistral.js.map +1 -0
- package/dist/icons/components/UiLogoOllama.cjs +10 -0
- package/dist/icons/components/UiLogoOllama.cjs.map +1 -0
- package/dist/icons/components/UiLogoOllama.d.ts +9 -0
- package/dist/icons/components/UiLogoOllama.d.ts.map +1 -0
- package/dist/icons/components/UiLogoOllama.js +10 -0
- package/dist/icons/components/UiLogoOllama.js.map +1 -0
- package/dist/icons/components/UiLogoOpenai.cjs +10 -0
- package/dist/icons/components/UiLogoOpenai.cjs.map +1 -0
- package/dist/icons/components/UiLogoOpenai.d.ts +9 -0
- package/dist/icons/components/UiLogoOpenai.d.ts.map +1 -0
- package/dist/icons/components/UiLogoOpenai.js +10 -0
- package/dist/icons/components/UiLogoOpenai.js.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.cjs +10 -0
- package/dist/icons/components/UiLogoPerplexity.cjs.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.d.ts +9 -0
- package/dist/icons/components/UiLogoPerplexity.d.ts.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.js +10 -0
- package/dist/icons/components/UiLogoPerplexity.js.map +1 -0
- package/dist/icons/components/UiPalette.cjs +15 -0
- package/dist/icons/components/UiPalette.cjs.map +1 -0
- package/dist/icons/components/UiPalette.d.ts +15 -0
- package/dist/icons/components/UiPalette.d.ts.map +1 -0
- package/dist/icons/components/UiPalette.js +15 -0
- package/dist/icons/components/UiPalette.js.map +1 -0
- package/dist/icons/components/UiPauseCircle.cjs +15 -0
- package/dist/icons/components/UiPauseCircle.cjs.map +1 -0
- package/dist/icons/components/UiPauseCircle.d.ts +15 -0
- package/dist/icons/components/UiPauseCircle.d.ts.map +1 -0
- package/dist/icons/components/UiPauseCircle.js +15 -0
- package/dist/icons/components/UiPauseCircle.js.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.cjs +15 -0
- package/dist/icons/components/UiPencilSimpleLine.cjs.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.d.ts +15 -0
- package/dist/icons/components/UiPencilSimpleLine.d.ts.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.js +15 -0
- package/dist/icons/components/UiPencilSimpleLine.js.map +1 -0
- package/dist/icons/components/UiPlugsConnected.cjs +15 -0
- package/dist/icons/components/UiPlugsConnected.cjs.map +1 -0
- package/dist/icons/components/UiPlugsConnected.d.ts +15 -0
- package/dist/icons/components/UiPlugsConnected.d.ts.map +1 -0
- package/dist/icons/components/UiPlugsConnected.js +15 -0
- package/dist/icons/components/UiPlugsConnected.js.map +1 -0
- package/dist/icons/components/UiProhibit.cjs +15 -0
- package/dist/icons/components/UiProhibit.cjs.map +1 -0
- package/dist/icons/components/UiProhibit.d.ts +15 -0
- package/dist/icons/components/UiProhibit.d.ts.map +1 -0
- package/dist/icons/components/UiProhibit.js +15 -0
- package/dist/icons/components/UiProhibit.js.map +1 -0
- package/dist/icons/components/UiRepeat.cjs +15 -0
- package/dist/icons/components/UiRepeat.cjs.map +1 -0
- package/dist/icons/components/UiRepeat.d.ts +15 -0
- package/dist/icons/components/UiRepeat.d.ts.map +1 -0
- package/dist/icons/components/UiRepeat.js +15 -0
- package/dist/icons/components/UiRepeat.js.map +1 -0
- package/dist/icons/components/UiScan.cjs +15 -0
- package/dist/icons/components/UiScan.cjs.map +1 -0
- package/dist/icons/components/UiScan.d.ts +15 -0
- package/dist/icons/components/UiScan.d.ts.map +1 -0
- package/dist/icons/components/UiScan.js +15 -0
- package/dist/icons/components/UiScan.js.map +1 -0
- package/dist/icons/components/UiScroll.cjs +15 -0
- package/dist/icons/components/UiScroll.cjs.map +1 -0
- package/dist/icons/components/UiScroll.d.ts +15 -0
- package/dist/icons/components/UiScroll.d.ts.map +1 -0
- package/dist/icons/components/UiScroll.js +15 -0
- package/dist/icons/components/UiScroll.js.map +1 -0
- package/dist/icons/components/UiShieldSlash.cjs +15 -0
- package/dist/icons/components/UiShieldSlash.cjs.map +1 -0
- package/dist/icons/components/UiShieldSlash.d.ts +15 -0
- package/dist/icons/components/UiShieldSlash.d.ts.map +1 -0
- package/dist/icons/components/UiShieldSlash.js +15 -0
- package/dist/icons/components/UiShieldSlash.js.map +1 -0
- package/dist/icons/components/UiStack.cjs +19 -0
- package/dist/icons/components/UiStack.cjs.map +1 -0
- package/dist/icons/components/UiStack.d.ts +15 -0
- package/dist/icons/components/UiStack.d.ts.map +1 -0
- package/dist/icons/components/UiStack.js +19 -0
- package/dist/icons/components/UiStack.js.map +1 -0
- package/dist/icons/components/UiStrategy.cjs +15 -0
- package/dist/icons/components/UiStrategy.cjs.map +1 -0
- package/dist/icons/components/UiStrategy.d.ts +15 -0
- package/dist/icons/components/UiStrategy.d.ts.map +1 -0
- package/dist/icons/components/UiStrategy.js +15 -0
- package/dist/icons/components/UiStrategy.js.map +1 -0
- package/dist/icons/components/UiThermometer.cjs +15 -0
- package/dist/icons/components/UiThermometer.cjs.map +1 -0
- package/dist/icons/components/UiThermometer.d.ts +15 -0
- package/dist/icons/components/UiThermometer.d.ts.map +1 -0
- package/dist/icons/components/UiThermometer.js +15 -0
- package/dist/icons/components/UiThermometer.js.map +1 -0
- package/dist/icons/components/UiTimer.cjs +15 -0
- package/dist/icons/components/UiTimer.cjs.map +1 -0
- package/dist/icons/components/UiTimer.d.ts +15 -0
- package/dist/icons/components/UiTimer.d.ts.map +1 -0
- package/dist/icons/components/UiTimer.js +15 -0
- package/dist/icons/components/UiTimer.js.map +1 -0
- package/dist/icons/index.d.ts +84 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons.cjs +132 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +132 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +186 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +190 -5
- package/dist/index.js.map +1 -1
- package/dist/layout/Workspace.cjs +191 -0
- package/dist/layout/Workspace.cjs.map +1 -0
- package/dist/layout/Workspace.d.ts +17 -0
- package/dist/layout/Workspace.d.ts.map +1 -0
- package/dist/layout/Workspace.js +191 -0
- package/dist/layout/Workspace.js.map +1 -0
- package/dist/layout/Workspace.model.cjs +142 -0
- package/dist/layout/Workspace.model.cjs.map +1 -0
- package/dist/layout/Workspace.model.d.ts +43 -0
- package/dist/layout/Workspace.model.d.ts.map +1 -0
- package/dist/layout/Workspace.model.js +142 -0
- package/dist/layout/Workspace.model.js.map +1 -0
- package/dist/layout/Workspace.regions.cjs +305 -0
- package/dist/layout/Workspace.regions.cjs.map +1 -0
- package/dist/layout/Workspace.regions.d.ts +17 -0
- package/dist/layout/Workspace.regions.d.ts.map +1 -0
- package/dist/layout/Workspace.regions.js +305 -0
- package/dist/layout/Workspace.regions.js.map +1 -0
- package/dist/lib/tokens.cjs +14 -0
- package/dist/lib/tokens.cjs.map +1 -0
- package/dist/lib/tokens.d.ts +5 -0
- package/dist/lib/tokens.d.ts.map +1 -0
- package/dist/lib/tokens.js +14 -0
- package/dist/lib/tokens.js.map +1 -0
- package/dist/monaco/MonacoEditor.cjs +69 -0
- package/dist/monaco/MonacoEditor.cjs.map +1 -0
- package/dist/monaco/MonacoEditor.d.ts +5 -0
- package/dist/monaco/MonacoEditor.d.ts.map +1 -0
- package/dist/monaco/MonacoEditor.js +52 -0
- package/dist/monaco/MonacoEditor.js.map +1 -0
- package/dist/monaco/MonacoProvider.cjs +22 -0
- package/dist/monaco/MonacoProvider.cjs.map +1 -0
- package/dist/monaco/MonacoProvider.d.ts +3 -0
- package/dist/monaco/MonacoProvider.d.ts.map +1 -0
- package/dist/monaco/MonacoProvider.js +22 -0
- package/dist/monaco/MonacoProvider.js.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.cjs +108 -0
- package/dist/monaco/MonacoSchemaEditor.cjs.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.d.ts +4 -0
- package/dist/monaco/MonacoSchemaEditor.d.ts.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.js +108 -0
- package/dist/monaco/MonacoSchemaEditor.js.map +1 -0
- package/dist/monaco/schema-normalizer.cjs +38 -0
- package/dist/monaco/schema-normalizer.cjs.map +1 -0
- package/dist/monaco/schema-normalizer.d.ts +7 -0
- package/dist/monaco/schema-normalizer.d.ts.map +1 -0
- package/dist/monaco/schema-normalizer.js +38 -0
- package/dist/monaco/schema-normalizer.js.map +1 -0
- package/dist/monaco/schema-registry.cjs +67 -0
- package/dist/monaco/schema-registry.cjs.map +1 -0
- package/dist/monaco/schema-registry.d.ts +3 -0
- package/dist/monaco/schema-registry.d.ts.map +1 -0
- package/dist/monaco/schema-registry.js +67 -0
- package/dist/monaco/schema-registry.js.map +1 -0
- package/dist/monaco/types.d.ts +31 -0
- package/dist/monaco/types.d.ts.map +1 -0
- package/dist/monaco/use-monaco-worker.cjs +10 -0
- package/dist/monaco/use-monaco-worker.cjs.map +1 -0
- package/dist/monaco/use-monaco-worker.d.ts +4 -0
- package/dist/monaco/use-monaco-worker.d.ts.map +1 -0
- package/dist/monaco/use-monaco-worker.js +10 -0
- package/dist/monaco/use-monaco-worker.js.map +1 -0
- package/dist/monaco-schema.cjs +5 -0
- package/dist/monaco-schema.cjs.map +1 -0
- package/dist/monaco-schema.d.ts +3 -0
- package/dist/monaco-schema.d.ts.map +1 -0
- package/dist/monaco-schema.js +5 -0
- package/dist/monaco-schema.js.map +1 -0
- package/dist/monaco.cjs +11 -0
- package/dist/monaco.cjs.map +1 -0
- package/dist/monaco.d.ts +6 -0
- package/dist/monaco.d.ts.map +1 -0
- package/dist/monaco.js +11 -0
- package/dist/monaco.js.map +1 -0
- package/dist/overlay/CellActions.cjs +183 -0
- package/dist/overlay/CellActions.cjs.map +1 -0
- package/dist/overlay/CellActions.d.ts +18 -0
- package/dist/overlay/CellActions.d.ts.map +1 -0
- package/dist/overlay/CellActions.js +183 -0
- package/dist/overlay/CellActions.js.map +1 -0
- package/dist/overlay/DropdownMenu.cjs +50 -59
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts +21 -2
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js +38 -47
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.cjs +210 -0
- package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -0
- package/dist/overlay/DropdownMenuSubmenu.d.ts +12 -0
- package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -0
- package/dist/overlay/DropdownMenuSubmenu.js +210 -0
- package/dist/overlay/DropdownMenuSubmenu.js.map +1 -0
- package/dist/overlay/Modal.cjs +14 -2
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +9 -2
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +14 -2
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/dropdownMenuContext.cjs +16 -0
- package/dist/overlay/dropdownMenuContext.cjs.map +1 -0
- package/dist/overlay/dropdownMenuContext.d.ts +16 -0
- package/dist/overlay/dropdownMenuContext.d.ts.map +1 -0
- package/dist/overlay/dropdownMenuContext.js +16 -0
- package/dist/overlay/dropdownMenuContext.js.map +1 -0
- package/dist/rpc/CommandOutput.cjs +28 -9
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.d.ts +4 -2
- package/dist/rpc/CommandOutput.d.ts.map +1 -1
- package/dist/rpc/CommandOutput.js +28 -9
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +8 -1
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +9 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +8 -1
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationActionBar.cjs +63 -41
- package/dist/rpc/OperationActionBar.cjs.map +1 -1
- package/dist/rpc/OperationActionBar.d.ts +2 -1
- package/dist/rpc/OperationActionBar.d.ts.map +1 -1
- package/dist/rpc/OperationActionBar.js +63 -41
- package/dist/rpc/OperationActionBar.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +111 -80
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +2 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +112 -81
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs +2 -0
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts +3 -2
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js +2 -0
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.cjs +448 -0
- package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.d.ts +28 -0
- package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.js +448 -0
- package/dist/rpc/OperationEntityContextPicker.js.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.cjs +60 -0
- package/dist/rpc/OperationEntityContextPicker.model.cjs.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.d.ts +7 -0
- package/dist/rpc/OperationEntityContextPicker.model.d.ts.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.js +60 -0
- package/dist/rpc/OperationEntityContextPicker.model.js.map +1 -0
- package/dist/rpc/OperationEntityPage.cjs +47 -22
- package/dist/rpc/OperationEntityPage.cjs.map +1 -1
- package/dist/rpc/OperationEntityPage.d.ts +32 -2
- package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
- package/dist/rpc/OperationEntityPage.js +47 -22
- package/dist/rpc/OperationEntityPage.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +4 -2
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +3 -2
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +4 -2
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/SchemaActionForm.cjs +151 -17
- package/dist/rpc/SchemaActionForm.cjs.map +1 -1
- package/dist/rpc/SchemaActionForm.d.ts +7 -1
- package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
- package/dist/rpc/SchemaActionForm.js +152 -18
- package/dist/rpc/SchemaActionForm.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +24 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc.cjs +6 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +5 -3
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +6 -0
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +8 -0
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +8 -0
- package/dist/tailwind-preset.js.map +1 -1
- package/oxlint-plugins/README.md +82 -19
- package/oxlint-plugins/clicky-ui-no-adhoc-overlay.js +5 -50
- package/oxlint-plugins/clicky-ui-no-direct-z-index.js +134 -0
- package/oxlint-plugins/clicky-ui.js +3 -0
- package/package.json +26 -3
- package/dist/data/chat/ContextUsage.cjs +0 -99
- package/dist/data/chat/ContextUsage.cjs.map +0 -1
- package/dist/data/chat/ContextUsage.d.ts +0 -19
- package/dist/data/chat/ContextUsage.d.ts.map +0 -1
- package/dist/data/chat/ContextUsage.js +0 -99
- package/dist/data/chat/ContextUsage.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.cjs","sources":["../../src/rpc/OperationEntityContextPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport { Button } from \"../components/button\";\nimport type { ClickyDocument, ClickyNode, ClickyRow } from \"../data/Clicky\";\nimport type { StaticIconComponent } from \"../data/Icon\";\nimport type { ChatContextItem } from \"../data/ai/context\";\nimport { UiAdd, UiTable } from \"../icons\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../overlay/DropdownMenu\";\nimport { Modal } from \"../overlay/Modal\";\nimport { CommandOutput } from \"./CommandOutput\";\nimport {\n dataTablePaginationFromForm,\n packParameterValues,\n parametersToFormConfig,\n useDebouncedRecord,\n type ParameterValues,\n} from \"./formMetadata\";\nimport {\n filterOperationsBySurface,\n findSurfaceDetailOperation,\n findSurfaceListOperation,\n getClickySurfaces,\n getOperationClickyMeta,\n} from \"./clickyMetadata\";\nimport { getClickyRowId } from \"./rowNavigation\";\nimport { resolveSurfaceIcon } from \"./surfaceIconMap\";\nimport type {\n ClickySurface,\n ExecutionResponse,\n ResolvedOperation,\n} from \"./types\";\nimport { useOperations, type OperationsApiClient } from \"./useOperations\";\nimport {\n clickyRowRecord,\n contextItemFromEntityRow,\n entityContextItemID,\n} from \"./OperationEntityContextPicker.model\";\n\nexport type EntityContextSurfaceFilter = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => boolean;\n\nexport type EntityContextSurfaceText = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => string;\n\nexport type EntityContextSurfaceIcon = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => string | StaticIconComponent | undefined;\n\nexport type EntityContextSurfaceColor = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => string | undefined;\n\nexport type EntityContextGroupIcon = (\n group: string,\n) => string | StaticIconComponent | undefined;\n\nexport type EntityContextGroupColor = (group: string) => string | undefined;\n\nexport type OperationEntityContextPickerProps = {\n client: OperationsApiClient;\n items: ChatContextItem[];\n onAdd: (item: ChatContextItem) => void;\n onAddMany?: (items: ChatContextItem[]) => void;\n surfaceFilter?: EntityContextSurfaceFilter;\n surfaceLabel?: EntityContextSurfaceText;\n surfaceGroup?: EntityContextSurfaceText;\n surfaceIcon?: EntityContextSurfaceIcon;\n surfaceColor?: EntityContextSurfaceColor;\n /** Icon for a top-level provider/group row (the submenu trigger). */\n surfaceGroupIcon?: EntityContextGroupIcon;\n /** Icon colour for a top-level provider/group row. */\n surfaceGroupColor?: EntityContextGroupColor;\n triggerLabel?: string;\n};\n\ntype ContextSurface = {\n surface: ClickySurface;\n listOperation: ResolvedOperation;\n detailOperation?: ResolvedOperation;\n};\n\nexport function OperationEntityContextPicker({\n client,\n items,\n onAdd,\n onAddMany,\n surfaceFilter,\n surfaceLabel,\n surfaceGroup,\n surfaceIcon,\n surfaceColor,\n surfaceGroupIcon,\n surfaceGroupColor,\n triggerLabel = \"Add context\",\n}: OperationEntityContextPickerProps) {\n const {\n operations,\n spec,\n isLoading: operationsLoading,\n } = useOperations(client);\n const [open, setOpen] = useState(false);\n const [surfaceKey, setSurfaceKey] = useState(\"\");\n const [filters, setFilters] = useState<ParameterValues>({});\n const [selectedRows, setSelectedRows] = useState<Record<string, ClickyRow>>(\n {},\n );\n const [attaching, setAttaching] = useState(false);\n const [attachError, setAttachError] = useState(\"\");\n\n const surfaces = useMemo<ContextSurface[]>(() => {\n return getClickySurfaces(spec)\n .flatMap((surface): ContextSurface[] => {\n const surfaceOperations = filterOperationsBySurface(\n operations,\n surface.key,\n );\n const listOperation = findSurfaceListOperation(\n surfaceOperations,\n surface.key,\n );\n if (!listOperation || listOperation.method.toUpperCase() !== \"GET\")\n return [];\n if (surfaceFilter && !surfaceFilter(surface, listOperation)) return [];\n const detailOperation = findSurfaceDetailOperation(\n surfaceOperations,\n surface.key,\n );\n return [\n {\n surface,\n listOperation,\n ...(detailOperation ? { detailOperation } : {}),\n },\n ];\n })\n .sort((left, right) => {\n const leftGroup =\n surfaceGroup?.(left.surface, left.listOperation) ??\n left.surface.parent ??\n \"\";\n const rightGroup =\n surfaceGroup?.(right.surface, right.listOperation) ??\n right.surface.parent ??\n \"\";\n return (\n leftGroup.localeCompare(rightGroup) ||\n left.surface.title.localeCompare(right.surface.title)\n );\n });\n }, [operations, spec, surfaceFilter, surfaceGroup]);\n\n useEffect(() => {\n setFilters({});\n setSelectedRows({});\n setAttachError(\"\");\n }, [surfaceKey]);\n\n const selected = surfaces.find((entry) => entry.surface.key === surfaceKey);\n const parameters = selected?.listOperation.operation.parameters ?? [];\n const debouncedFilters = useDebouncedRecord(filters, 250);\n const packedFilters = useMemo(\n () => packParameterValues(debouncedFilters, parameters),\n [debouncedFilters, parameters],\n );\n\n const lookupQuery = useQuery({\n queryKey: [\n \"entity-context-lookup\",\n selected?.listOperation.path,\n packedFilters,\n ],\n queryFn: async () =>\n (await client.lookupFilters?.(\n selected!.listOperation.path,\n selected!.listOperation.method,\n packedFilters,\n { Accept: \"application/json+clicky\" },\n )) ?? { filters: {} },\n enabled:\n open &&\n !!selected &&\n !!client.lookupFilters &&\n parameters.some((parameter) => parameter.in === \"query\"),\n staleTime: 30_000,\n retry: 0,\n });\n\n const listQuery = useQuery<ExecutionResponse>({\n queryKey: [\n \"entity-context-list\",\n selected?.listOperation.path,\n packedFilters,\n ],\n queryFn: () =>\n client.executeCommand(\n selected!.listOperation.path,\n selected!.listOperation.method,\n packedFilters,\n { Accept: \"application/json+clicky\" },\n ),\n enabled: open && !!selected,\n placeholderData: keepPreviousData,\n staleTime: 30_000,\n retry: 0,\n });\n\n const filterConfig = useMemo(\n () =>\n parametersToFormConfig(parameters, filters, setFilters, {\n includeLocations: [\"query\"],\n lookup: lookupQuery.data,\n }),\n [filters, lookupQuery.data, parameters],\n );\n const pagination = useMemo(\n () => dataTablePaginationFromForm(filterConfig.pagination, listQuery.data),\n [filterConfig.pagination, listQuery.data],\n );\n const existingIDs = useMemo(\n () => new Set(items.map((item) => item.id)),\n [items],\n );\n const markedListResponse = useMemo(\n () => markAttachedRows(listQuery.data, selected?.surface.key, existingIDs),\n [existingIDs, listQuery.data, selected?.surface.key],\n );\n\n const hydrateRow = useCallback(\n async (row: ClickyRow) => {\n if (!selected) throw new Error(\"Select an entity type first.\");\n const recordID = getClickyRowId(row);\n if (!recordID) {\n throw new Error(\"This row does not expose a stable record ID.\");\n }\n const contextID = entityContextItemID(selected.surface.key, recordID);\n if (existingIDs.has(contextID)) {\n throw new Error(\"This record is already attached.\");\n }\n\n let record: unknown = clickyRowRecord(row);\n if (selected.detailOperation) {\n const detailMeta = getOperationClickyMeta(selected.detailOperation);\n const idParam =\n detailMeta?.idParam ??\n selected.detailOperation.operation.parameters?.find(\n (parameter) => parameter.in === \"path\",\n )?.name ??\n \"id\";\n const detailParameterNames = new Set(\n selected.detailOperation.operation.parameters?.map(\n (parameter) => parameter.name,\n ) ?? [],\n );\n const detailParams = Object.fromEntries(\n Object.entries(packedFilters).filter(([key]) =>\n detailParameterNames.has(key),\n ),\n );\n detailParams[idParam] = recordID;\n const response = await client.executeCommand(\n selected.detailOperation.path,\n selected.detailOperation.method,\n detailParams,\n { Accept: \"application/json\" },\n );\n record = response.parsed ?? parseResponseJSON(response) ?? record;\n }\n\n const contextItem = contextItemFromEntityRow(\n selected.surface,\n row,\n record,\n );\n if (!contextItem)\n throw new Error(\"This row does not expose a stable record ID.\");\n return contextItem;\n },\n [client, existingIDs, packedFilters, selected],\n );\n\n const attachSelected = useCallback(async () => {\n const rows = Object.values(selectedRows);\n if (rows.length === 0) return;\n setAttaching(true);\n setAttachError(\"\");\n const results = await Promise.allSettled(rows.map(hydrateRow));\n const added = results.flatMap((result) =>\n result.status === \"fulfilled\" ? [result.value] : [],\n );\n const failures = results.flatMap((result) =>\n result.status === \"rejected\" ? [result.reason] : [],\n );\n if (added.length > 0) {\n if (onAddMany) onAddMany(added);\n else added.forEach(onAdd);\n }\n setAttaching(false);\n if (failures.length > 0) {\n const first = failures[0];\n setAttachError(\n `${failures.length} record${failures.length === 1 ? \"\" : \"s\"} could not be attached: ${first instanceof Error ? first.message : String(first)}`,\n );\n return;\n }\n setSelectedRows({});\n setOpen(false);\n }, [hydrateRow, onAdd, onAddMany, selectedRows]);\n\n const menuItems = useMemo<DropdownMenuItem[]>(() => {\n // `surfaces` is pre-sorted by group then title, so bucketing by group in\n // insertion order yields a stable provider → type tree without re-sorting.\n const groups: Array<{ group: string; leaves: DropdownMenuItem[] }> = [];\n const byGroup = new Map<string, DropdownMenuItem[]>();\n for (const entry of surfaces) {\n const group =\n surfaceGroup?.(entry.surface, entry.listOperation) ??\n entry.surface.parent ??\n \"Other\";\n const label =\n surfaceLabel?.(entry.surface, entry.listOperation) ??\n entry.surface.title;\n const icon =\n surfaceIcon?.(entry.surface, entry.listOperation) ??\n resolveSurfaceIcon(entry.surface.icon) ??\n UiTable;\n const iconColor = surfaceColor?.(entry.surface, entry.listOperation);\n const leaf: DropdownMenuItem = {\n label,\n title: label,\n icon,\n ...(iconColor ? { iconColor } : {}),\n onSelect: () => {\n setSurfaceKey(entry.surface.key);\n setOpen(true);\n },\n };\n let bucket = byGroup.get(group);\n if (!bucket) {\n bucket = [];\n byGroup.set(group, bucket);\n groups.push({ group, leaves: bucket });\n }\n bucket.push(leaf);\n }\n\n // A single group would nest everything under one lone submenu; render its\n // types flat instead.\n if (groups.length <= 1) return groups[0]?.leaves ?? [];\n\n return groups.map(({ group, leaves }): DropdownMenuItem => {\n const groupColor = surfaceGroupColor?.(group);\n // A submenu child already sits under its group header — don't repeat the\n // group name in the child label. The tooltip (title) and the detail dialog\n // keep the full label.\n const prefix = `${group} `;\n const children = leaves.map((leaf) =>\n typeof leaf.label === \"string\" && leaf.label.startsWith(prefix)\n ? { ...leaf, label: leaf.label.slice(prefix.length) }\n : leaf,\n );\n return {\n label: group,\n title: group,\n icon: surfaceGroupIcon?.(group) ?? leaves[0]?.icon ?? UiTable,\n ...(groupColor ? { iconColor: groupColor } : {}),\n onSelect: () => {},\n children,\n };\n });\n }, [\n surfaceColor,\n surfaceGroup,\n surfaceGroupColor,\n surfaceGroupIcon,\n surfaceIcon,\n surfaceLabel,\n surfaces,\n ]);\n\n const selectedCount = Object.keys(selectedRows).length;\n const selectedLabel = selected\n ? (surfaceLabel?.(selected.surface, selected.listOperation) ??\n selected.surface.title)\n : \"records\";\n\n return (\n <>\n <DropdownMenu\n label={triggerLabel}\n icon={UiAdd}\n variant=\"ghost\"\n size=\"sm\"\n align=\"left\"\n menuLabel=\"Context entity types\"\n menuClassName=\"min-w-56\"\n items={\n menuItems.length > 0\n ? menuItems\n : [\n {\n label: operationsLoading\n ? \"Loading entity types…\"\n : \"No entity listings available\",\n disabled: true,\n onSelect: () => {},\n },\n ]\n }\n />\n <Modal\n open={open}\n onClose={() => setOpen(false)}\n title={`Add ${selectedLabel} context`}\n size=\"2xl\"\n expandable\n scrollBody={false}\n footer={\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-xs text-muted-foreground\">\n {selectedCount === 0\n ? \"Select one or more records from the table.\"\n : `${selectedCount} record${selectedCount === 1 ? \"\" : \"s\"} selected`}\n </span>\n <div className=\"flex items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setOpen(false)}\n disabled={attaching}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={() => void attachSelected()}\n disabled={selectedCount === 0 || attaching}\n >\n {attaching\n ? \"Adding…\"\n : selectedCount > 0\n ? `Add ${selectedCount} record${selectedCount === 1 ? \"\" : \"s\"}`\n : \"Add records\"}\n </Button>\n </div>\n </div>\n }\n >\n <div className=\"flex min-h-0 flex-1 flex-col gap-4\">\n {surfaces.length === 0 && !operationsLoading ? (\n <p className=\"text-sm text-muted-foreground\">\n No attachable entity surfaces are available.\n </p>\n ) : null}\n {lookupQuery.error ? (\n <PickerError error={lookupQuery.error} prefix=\"Load filters\" />\n ) : null}\n {listQuery.error ? (\n <PickerError error={listQuery.error} prefix=\"Load records\" />\n ) : null}\n {attachError ? (\n <PickerError error={attachError} prefix=\"Attach record\" />\n ) : null}\n {attaching ? (\n <div role=\"status\" className=\"text-xs text-muted-foreground\">\n Loading full record details and adding context…\n </div>\n ) : null}\n\n {selected ? (\n <CommandOutput\n bare\n className=\"mt-0 flex-1\"\n response={markedListResponse ?? null}\n loading={listQuery.isLoading || listQuery.isFetching}\n loadingMessage=\"Loading records…\"\n emptyMessage=\"No matching records.\"\n ariaLabel=\"Context records\"\n rowSelection={{\n selectedRowIds: Object.keys(selectedRows),\n // Keep selections made on other pages: reconcile the table's\n // next id set against the rows on the current page, falling back\n // to the already-known row for ids from previously-viewed pages.\n onSelectionChange: (nextIds, rows) => {\n const rowByID = new Map(\n rows.flatMap((row) => {\n const id = getClickyRowId(row);\n return id ? [[id, row] as const] : [];\n }),\n );\n setSelectedRows((prev) =>\n Object.fromEntries(\n nextIds.flatMap((id) => {\n const row = rowByID.get(id) ?? prev[id];\n return row ? [[id, row] as const] : [];\n }),\n ),\n );\n },\n getRowId: (row, index) =>\n getClickyRowId(row) ?? `context-row-${index}`,\n isRowSelectable: (row) => {\n const id = getClickyRowId(row);\n return (\n !!id &&\n !existingIDs.has(\n entityContextItemID(selected.surface.key, id),\n )\n );\n },\n toggleOnRowClick: true,\n }}\n {...(filterConfig.search ? { search: filterConfig.search } : {})}\n {...(filterConfig.timeRange\n ? { timeRange: filterConfig.timeRange }\n : {})}\n {...(filterConfig.filters.length\n ? { externalFilters: filterConfig.filters }\n : {})}\n {...(pagination ? { pagination } : {})}\n />\n ) : null}\n\n {items.length ? (\n <p className=\"text-xs text-muted-foreground\">\n {items.length} context {items.length === 1 ? \"record\" : \"records\"}{\" \"}\n attached. Attached rows are disabled.\n </p>\n ) : null}\n </div>\n </Modal>\n </>\n );\n}\n\nfunction parseResponseJSON(response: ExecutionResponse): unknown {\n const text = response.stdout || response.output || \"\";\n if (!text.trim()) return undefined;\n try {\n return JSON.parse(text);\n } catch {\n return undefined;\n }\n}\n\nfunction markAttachedRows(\n response: ExecutionResponse | undefined,\n surfaceKey: string | undefined,\n existingIDs: Set<string>,\n): ExecutionResponse | undefined {\n if (!response || !surfaceKey || existingIDs.size === 0 || !response.parsed)\n return response;\n const parsed = response.parsed as Partial<ClickyDocument> &\n Partial<ClickyNode>;\n const node = parsed.version === 1 && parsed.node ? parsed.node : parsed;\n if (node.kind !== \"table\" || !node.rows?.length) return response;\n const tableNode = node as ClickyNode;\n const attached = tableNode.rows!.map((row) => {\n const id = getClickyRowId(row);\n return !!id && existingIDs.has(entityContextItemID(surfaceKey, id));\n });\n if (!attached.some(Boolean)) return response;\n\n const markerColumn = {\n name: \"__chat_context\",\n label: \"Context\",\n shrink: true,\n };\n const markedNode: ClickyNode = {\n ...tableNode,\n kind: \"table\",\n columns: [...(tableNode.columns ?? []), markerColumn],\n rows: tableNode.rows!.map((row, index) => ({\n ...row,\n cells: {\n ...row.cells,\n __chat_context: attached[index]\n ? { kind: \"badge\", badgeLabel: \"Attached\" }\n : { kind: \"text\", text: \"\", plain: \"\" },\n },\n })),\n };\n return {\n ...response,\n parsed:\n parsed.version === 1\n ? { ...(parsed as ClickyDocument), node: markedNode }\n : markedNode,\n };\n}\n\nfunction PickerError({ error, prefix }: { error: unknown; prefix: string }) {\n const message = error instanceof Error ? error.message : String(error);\n return (\n <div className=\"rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm text-destructive\">\n <span className=\"font-medium\">{prefix}:</span> {message}\n </div>\n );\n}\n"],"names":["useOperations","useState","useMemo","getClickySurfaces","filterOperationsBySurface","findSurfaceListOperation","findSurfaceDetailOperation","useEffect","useDebouncedRecord","packParameterValues","useQuery","keepPreviousData","parametersToFormConfig","dataTablePaginationFromForm","useCallback","getClickyRowId","entityContextItemID","clickyRowRecord","getOperationClickyMeta","contextItemFromEntityRow","resolveSurfaceIcon","UiTable","_a","jsxs","Fragment","jsx","DropdownMenu","UiAdd","Modal","Button","CommandOutput"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { StaticIconComponent } from '../data/Icon';
|
|
2
|
+
import { ChatContextItem } from '../data/ai/context';
|
|
3
|
+
import { ClickySurface, ResolvedOperation } from './types';
|
|
4
|
+
import { OperationsApiClient } from './useOperations';
|
|
5
|
+
export type EntityContextSurfaceFilter = (surface: ClickySurface, listOperation: ResolvedOperation) => boolean;
|
|
6
|
+
export type EntityContextSurfaceText = (surface: ClickySurface, listOperation: ResolvedOperation) => string;
|
|
7
|
+
export type EntityContextSurfaceIcon = (surface: ClickySurface, listOperation: ResolvedOperation) => string | StaticIconComponent | undefined;
|
|
8
|
+
export type EntityContextSurfaceColor = (surface: ClickySurface, listOperation: ResolvedOperation) => string | undefined;
|
|
9
|
+
export type EntityContextGroupIcon = (group: string) => string | StaticIconComponent | undefined;
|
|
10
|
+
export type EntityContextGroupColor = (group: string) => string | undefined;
|
|
11
|
+
export type OperationEntityContextPickerProps = {
|
|
12
|
+
client: OperationsApiClient;
|
|
13
|
+
items: ChatContextItem[];
|
|
14
|
+
onAdd: (item: ChatContextItem) => void;
|
|
15
|
+
onAddMany?: (items: ChatContextItem[]) => void;
|
|
16
|
+
surfaceFilter?: EntityContextSurfaceFilter;
|
|
17
|
+
surfaceLabel?: EntityContextSurfaceText;
|
|
18
|
+
surfaceGroup?: EntityContextSurfaceText;
|
|
19
|
+
surfaceIcon?: EntityContextSurfaceIcon;
|
|
20
|
+
surfaceColor?: EntityContextSurfaceColor;
|
|
21
|
+
/** Icon for a top-level provider/group row (the submenu trigger). */
|
|
22
|
+
surfaceGroupIcon?: EntityContextGroupIcon;
|
|
23
|
+
/** Icon colour for a top-level provider/group row. */
|
|
24
|
+
surfaceGroupColor?: EntityContextGroupColor;
|
|
25
|
+
triggerLabel?: string;
|
|
26
|
+
};
|
|
27
|
+
export declare function OperationEntityContextPicker({ client, items, onAdd, onAddMany, surfaceFilter, surfaceLabel, surfaceGroup, surfaceIcon, surfaceColor, surfaceGroupIcon, surfaceGroupColor, triggerLabel, }: OperationEntityContextPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=OperationEntityContextPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.d.ts","sourceRoot":"","sources":["../../src/rpc/OperationEntityContextPicker.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAqB1D,OAAO,KAAK,EACV,aAAa,EAEb,iBAAiB,EAClB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAiB,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAO1E,MAAM,MAAM,0BAA0B,GAAG,CACvC,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,iBAAiB,KAC7B,OAAO,CAAC;AAEb,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,iBAAiB,KAC7B,MAAM,CAAC;AAEZ,MAAM,MAAM,wBAAwB,GAAG,CACrC,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,iBAAiB,KAC7B,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAE9C,MAAM,MAAM,yBAAyB,GAAG,CACtC,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,iBAAiB,KAC7B,MAAM,GAAG,SAAS,CAAC;AAExB,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,MAAM,KACV,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAE9C,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAE5E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAC/C,aAAa,CAAC,EAAE,0BAA0B,CAAC;IAC3C,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,YAAY,CAAC,EAAE,wBAAwB,CAAC;IACxC,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,YAAY,CAAC,EAAE,yBAAyB,CAAC;IACzC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAQF,wBAAgB,4BAA4B,CAAC,EAC3C,MAAM,EACN,KAAK,EACL,KAAK,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAA4B,GAC7B,EAAE,iCAAiC,2CAsbnC"}
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo, useEffect, useCallback } from "react";
|
|
3
|
+
import { useQuery, keepPreviousData } from "@tanstack/react-query";
|
|
4
|
+
import { Button } from "../components/button.js";
|
|
5
|
+
import { DropdownMenu } from "../overlay/DropdownMenu.js";
|
|
6
|
+
import { Modal } from "../overlay/Modal.js";
|
|
7
|
+
import { CommandOutput } from "./CommandOutput.js";
|
|
8
|
+
import { useDebouncedRecord, packParameterValues, parametersToFormConfig, dataTablePaginationFromForm } from "./formMetadata.js";
|
|
9
|
+
import { getClickySurfaces, filterOperationsBySurface, findSurfaceListOperation, findSurfaceDetailOperation, getOperationClickyMeta } from "./clickyMetadata.js";
|
|
10
|
+
import { getClickyRowId } from "./rowNavigation.js";
|
|
11
|
+
import { resolveSurfaceIcon } from "./surfaceIconMap.js";
|
|
12
|
+
import { useOperations } from "./useOperations.js";
|
|
13
|
+
import { entityContextItemID, clickyRowRecord, contextItemFromEntityRow } from "./OperationEntityContextPicker.model.js";
|
|
14
|
+
import { UiTable } from "../icons/components/UiTable.js";
|
|
15
|
+
import { UiAdd } from "../icons/components/UiAdd.js";
|
|
16
|
+
function OperationEntityContextPicker({
|
|
17
|
+
client,
|
|
18
|
+
items,
|
|
19
|
+
onAdd,
|
|
20
|
+
onAddMany,
|
|
21
|
+
surfaceFilter,
|
|
22
|
+
surfaceLabel,
|
|
23
|
+
surfaceGroup,
|
|
24
|
+
surfaceIcon,
|
|
25
|
+
surfaceColor,
|
|
26
|
+
surfaceGroupIcon,
|
|
27
|
+
surfaceGroupColor,
|
|
28
|
+
triggerLabel = "Add context"
|
|
29
|
+
}) {
|
|
30
|
+
const {
|
|
31
|
+
operations,
|
|
32
|
+
spec,
|
|
33
|
+
isLoading: operationsLoading
|
|
34
|
+
} = useOperations(client);
|
|
35
|
+
const [open, setOpen] = useState(false);
|
|
36
|
+
const [surfaceKey, setSurfaceKey] = useState("");
|
|
37
|
+
const [filters, setFilters] = useState({});
|
|
38
|
+
const [selectedRows, setSelectedRows] = useState(
|
|
39
|
+
{}
|
|
40
|
+
);
|
|
41
|
+
const [attaching, setAttaching] = useState(false);
|
|
42
|
+
const [attachError, setAttachError] = useState("");
|
|
43
|
+
const surfaces = useMemo(() => {
|
|
44
|
+
return getClickySurfaces(spec).flatMap((surface) => {
|
|
45
|
+
const surfaceOperations = filterOperationsBySurface(
|
|
46
|
+
operations,
|
|
47
|
+
surface.key
|
|
48
|
+
);
|
|
49
|
+
const listOperation = findSurfaceListOperation(
|
|
50
|
+
surfaceOperations,
|
|
51
|
+
surface.key
|
|
52
|
+
);
|
|
53
|
+
if (!listOperation || listOperation.method.toUpperCase() !== "GET")
|
|
54
|
+
return [];
|
|
55
|
+
if (surfaceFilter && !surfaceFilter(surface, listOperation)) return [];
|
|
56
|
+
const detailOperation = findSurfaceDetailOperation(
|
|
57
|
+
surfaceOperations,
|
|
58
|
+
surface.key
|
|
59
|
+
);
|
|
60
|
+
return [
|
|
61
|
+
{
|
|
62
|
+
surface,
|
|
63
|
+
listOperation,
|
|
64
|
+
...detailOperation ? { detailOperation } : {}
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
}).sort((left, right) => {
|
|
68
|
+
const leftGroup = (surfaceGroup == null ? void 0 : surfaceGroup(left.surface, left.listOperation)) ?? left.surface.parent ?? "";
|
|
69
|
+
const rightGroup = (surfaceGroup == null ? void 0 : surfaceGroup(right.surface, right.listOperation)) ?? right.surface.parent ?? "";
|
|
70
|
+
return leftGroup.localeCompare(rightGroup) || left.surface.title.localeCompare(right.surface.title);
|
|
71
|
+
});
|
|
72
|
+
}, [operations, spec, surfaceFilter, surfaceGroup]);
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
setFilters({});
|
|
75
|
+
setSelectedRows({});
|
|
76
|
+
setAttachError("");
|
|
77
|
+
}, [surfaceKey]);
|
|
78
|
+
const selected = surfaces.find((entry) => entry.surface.key === surfaceKey);
|
|
79
|
+
const parameters = (selected == null ? void 0 : selected.listOperation.operation.parameters) ?? [];
|
|
80
|
+
const debouncedFilters = useDebouncedRecord(filters, 250);
|
|
81
|
+
const packedFilters = useMemo(
|
|
82
|
+
() => packParameterValues(debouncedFilters, parameters),
|
|
83
|
+
[debouncedFilters, parameters]
|
|
84
|
+
);
|
|
85
|
+
const lookupQuery = useQuery({
|
|
86
|
+
queryKey: [
|
|
87
|
+
"entity-context-lookup",
|
|
88
|
+
selected == null ? void 0 : selected.listOperation.path,
|
|
89
|
+
packedFilters
|
|
90
|
+
],
|
|
91
|
+
queryFn: async () => {
|
|
92
|
+
var _a;
|
|
93
|
+
return await ((_a = client.lookupFilters) == null ? void 0 : _a.call(
|
|
94
|
+
client,
|
|
95
|
+
selected.listOperation.path,
|
|
96
|
+
selected.listOperation.method,
|
|
97
|
+
packedFilters,
|
|
98
|
+
{ Accept: "application/json+clicky" }
|
|
99
|
+
)) ?? { filters: {} };
|
|
100
|
+
},
|
|
101
|
+
enabled: open && !!selected && !!client.lookupFilters && parameters.some((parameter) => parameter.in === "query"),
|
|
102
|
+
staleTime: 3e4,
|
|
103
|
+
retry: 0
|
|
104
|
+
});
|
|
105
|
+
const listQuery = useQuery({
|
|
106
|
+
queryKey: [
|
|
107
|
+
"entity-context-list",
|
|
108
|
+
selected == null ? void 0 : selected.listOperation.path,
|
|
109
|
+
packedFilters
|
|
110
|
+
],
|
|
111
|
+
queryFn: () => client.executeCommand(
|
|
112
|
+
selected.listOperation.path,
|
|
113
|
+
selected.listOperation.method,
|
|
114
|
+
packedFilters,
|
|
115
|
+
{ Accept: "application/json+clicky" }
|
|
116
|
+
),
|
|
117
|
+
enabled: open && !!selected,
|
|
118
|
+
placeholderData: keepPreviousData,
|
|
119
|
+
staleTime: 3e4,
|
|
120
|
+
retry: 0
|
|
121
|
+
});
|
|
122
|
+
const filterConfig = useMemo(
|
|
123
|
+
() => parametersToFormConfig(parameters, filters, setFilters, {
|
|
124
|
+
includeLocations: ["query"],
|
|
125
|
+
lookup: lookupQuery.data
|
|
126
|
+
}),
|
|
127
|
+
[filters, lookupQuery.data, parameters]
|
|
128
|
+
);
|
|
129
|
+
const pagination = useMemo(
|
|
130
|
+
() => dataTablePaginationFromForm(filterConfig.pagination, listQuery.data),
|
|
131
|
+
[filterConfig.pagination, listQuery.data]
|
|
132
|
+
);
|
|
133
|
+
const existingIDs = useMemo(
|
|
134
|
+
() => new Set(items.map((item) => item.id)),
|
|
135
|
+
[items]
|
|
136
|
+
);
|
|
137
|
+
const markedListResponse = useMemo(
|
|
138
|
+
() => markAttachedRows(listQuery.data, selected == null ? void 0 : selected.surface.key, existingIDs),
|
|
139
|
+
[existingIDs, listQuery.data, selected == null ? void 0 : selected.surface.key]
|
|
140
|
+
);
|
|
141
|
+
const hydrateRow = useCallback(
|
|
142
|
+
async (row) => {
|
|
143
|
+
var _a, _b, _c;
|
|
144
|
+
if (!selected) throw new Error("Select an entity type first.");
|
|
145
|
+
const recordID = getClickyRowId(row);
|
|
146
|
+
if (!recordID) {
|
|
147
|
+
throw new Error("This row does not expose a stable record ID.");
|
|
148
|
+
}
|
|
149
|
+
const contextID = entityContextItemID(selected.surface.key, recordID);
|
|
150
|
+
if (existingIDs.has(contextID)) {
|
|
151
|
+
throw new Error("This record is already attached.");
|
|
152
|
+
}
|
|
153
|
+
let record = clickyRowRecord(row);
|
|
154
|
+
if (selected.detailOperation) {
|
|
155
|
+
const detailMeta = getOperationClickyMeta(selected.detailOperation);
|
|
156
|
+
const idParam = (detailMeta == null ? void 0 : detailMeta.idParam) ?? ((_b = (_a = selected.detailOperation.operation.parameters) == null ? void 0 : _a.find(
|
|
157
|
+
(parameter) => parameter.in === "path"
|
|
158
|
+
)) == null ? void 0 : _b.name) ?? "id";
|
|
159
|
+
const detailParameterNames = new Set(
|
|
160
|
+
((_c = selected.detailOperation.operation.parameters) == null ? void 0 : _c.map(
|
|
161
|
+
(parameter) => parameter.name
|
|
162
|
+
)) ?? []
|
|
163
|
+
);
|
|
164
|
+
const detailParams = Object.fromEntries(
|
|
165
|
+
Object.entries(packedFilters).filter(
|
|
166
|
+
([key]) => detailParameterNames.has(key)
|
|
167
|
+
)
|
|
168
|
+
);
|
|
169
|
+
detailParams[idParam] = recordID;
|
|
170
|
+
const response = await client.executeCommand(
|
|
171
|
+
selected.detailOperation.path,
|
|
172
|
+
selected.detailOperation.method,
|
|
173
|
+
detailParams,
|
|
174
|
+
{ Accept: "application/json" }
|
|
175
|
+
);
|
|
176
|
+
record = response.parsed ?? parseResponseJSON(response) ?? record;
|
|
177
|
+
}
|
|
178
|
+
const contextItem = contextItemFromEntityRow(
|
|
179
|
+
selected.surface,
|
|
180
|
+
row,
|
|
181
|
+
record
|
|
182
|
+
);
|
|
183
|
+
if (!contextItem)
|
|
184
|
+
throw new Error("This row does not expose a stable record ID.");
|
|
185
|
+
return contextItem;
|
|
186
|
+
},
|
|
187
|
+
[client, existingIDs, packedFilters, selected]
|
|
188
|
+
);
|
|
189
|
+
const attachSelected = useCallback(async () => {
|
|
190
|
+
const rows = Object.values(selectedRows);
|
|
191
|
+
if (rows.length === 0) return;
|
|
192
|
+
setAttaching(true);
|
|
193
|
+
setAttachError("");
|
|
194
|
+
const results = await Promise.allSettled(rows.map(hydrateRow));
|
|
195
|
+
const added = results.flatMap(
|
|
196
|
+
(result) => result.status === "fulfilled" ? [result.value] : []
|
|
197
|
+
);
|
|
198
|
+
const failures = results.flatMap(
|
|
199
|
+
(result) => result.status === "rejected" ? [result.reason] : []
|
|
200
|
+
);
|
|
201
|
+
if (added.length > 0) {
|
|
202
|
+
if (onAddMany) onAddMany(added);
|
|
203
|
+
else added.forEach(onAdd);
|
|
204
|
+
}
|
|
205
|
+
setAttaching(false);
|
|
206
|
+
if (failures.length > 0) {
|
|
207
|
+
const first = failures[0];
|
|
208
|
+
setAttachError(
|
|
209
|
+
`${failures.length} record${failures.length === 1 ? "" : "s"} could not be attached: ${first instanceof Error ? first.message : String(first)}`
|
|
210
|
+
);
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
setSelectedRows({});
|
|
214
|
+
setOpen(false);
|
|
215
|
+
}, [hydrateRow, onAdd, onAddMany, selectedRows]);
|
|
216
|
+
const menuItems = useMemo(() => {
|
|
217
|
+
var _a;
|
|
218
|
+
const groups = [];
|
|
219
|
+
const byGroup = /* @__PURE__ */ new Map();
|
|
220
|
+
for (const entry of surfaces) {
|
|
221
|
+
const group = (surfaceGroup == null ? void 0 : surfaceGroup(entry.surface, entry.listOperation)) ?? entry.surface.parent ?? "Other";
|
|
222
|
+
const label = (surfaceLabel == null ? void 0 : surfaceLabel(entry.surface, entry.listOperation)) ?? entry.surface.title;
|
|
223
|
+
const icon = (surfaceIcon == null ? void 0 : surfaceIcon(entry.surface, entry.listOperation)) ?? resolveSurfaceIcon(entry.surface.icon) ?? UiTable;
|
|
224
|
+
const iconColor = surfaceColor == null ? void 0 : surfaceColor(entry.surface, entry.listOperation);
|
|
225
|
+
const leaf = {
|
|
226
|
+
label,
|
|
227
|
+
title: label,
|
|
228
|
+
icon,
|
|
229
|
+
...iconColor ? { iconColor } : {},
|
|
230
|
+
onSelect: () => {
|
|
231
|
+
setSurfaceKey(entry.surface.key);
|
|
232
|
+
setOpen(true);
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
let bucket = byGroup.get(group);
|
|
236
|
+
if (!bucket) {
|
|
237
|
+
bucket = [];
|
|
238
|
+
byGroup.set(group, bucket);
|
|
239
|
+
groups.push({ group, leaves: bucket });
|
|
240
|
+
}
|
|
241
|
+
bucket.push(leaf);
|
|
242
|
+
}
|
|
243
|
+
if (groups.length <= 1) return ((_a = groups[0]) == null ? void 0 : _a.leaves) ?? [];
|
|
244
|
+
return groups.map(({ group, leaves }) => {
|
|
245
|
+
var _a2;
|
|
246
|
+
const groupColor = surfaceGroupColor == null ? void 0 : surfaceGroupColor(group);
|
|
247
|
+
const prefix = `${group} `;
|
|
248
|
+
const children = leaves.map(
|
|
249
|
+
(leaf) => typeof leaf.label === "string" && leaf.label.startsWith(prefix) ? { ...leaf, label: leaf.label.slice(prefix.length) } : leaf
|
|
250
|
+
);
|
|
251
|
+
return {
|
|
252
|
+
label: group,
|
|
253
|
+
title: group,
|
|
254
|
+
icon: (surfaceGroupIcon == null ? void 0 : surfaceGroupIcon(group)) ?? ((_a2 = leaves[0]) == null ? void 0 : _a2.icon) ?? UiTable,
|
|
255
|
+
...groupColor ? { iconColor: groupColor } : {},
|
|
256
|
+
onSelect: () => {
|
|
257
|
+
},
|
|
258
|
+
children
|
|
259
|
+
};
|
|
260
|
+
});
|
|
261
|
+
}, [
|
|
262
|
+
surfaceColor,
|
|
263
|
+
surfaceGroup,
|
|
264
|
+
surfaceGroupColor,
|
|
265
|
+
surfaceGroupIcon,
|
|
266
|
+
surfaceIcon,
|
|
267
|
+
surfaceLabel,
|
|
268
|
+
surfaces
|
|
269
|
+
]);
|
|
270
|
+
const selectedCount = Object.keys(selectedRows).length;
|
|
271
|
+
const selectedLabel = selected ? (surfaceLabel == null ? void 0 : surfaceLabel(selected.surface, selected.listOperation)) ?? selected.surface.title : "records";
|
|
272
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
273
|
+
/* @__PURE__ */ jsx(
|
|
274
|
+
DropdownMenu,
|
|
275
|
+
{
|
|
276
|
+
label: triggerLabel,
|
|
277
|
+
icon: UiAdd,
|
|
278
|
+
variant: "ghost",
|
|
279
|
+
size: "sm",
|
|
280
|
+
align: "left",
|
|
281
|
+
menuLabel: "Context entity types",
|
|
282
|
+
menuClassName: "min-w-56",
|
|
283
|
+
items: menuItems.length > 0 ? menuItems : [
|
|
284
|
+
{
|
|
285
|
+
label: operationsLoading ? "Loading entity types…" : "No entity listings available",
|
|
286
|
+
disabled: true,
|
|
287
|
+
onSelect: () => {
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
}
|
|
292
|
+
),
|
|
293
|
+
/* @__PURE__ */ jsx(
|
|
294
|
+
Modal,
|
|
295
|
+
{
|
|
296
|
+
open,
|
|
297
|
+
onClose: () => setOpen(false),
|
|
298
|
+
title: `Add ${selectedLabel} context`,
|
|
299
|
+
size: "2xl",
|
|
300
|
+
expandable: true,
|
|
301
|
+
scrollBody: false,
|
|
302
|
+
footer: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
303
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs text-muted-foreground", children: selectedCount === 0 ? "Select one or more records from the table." : `${selectedCount} record${selectedCount === 1 ? "" : "s"} selected` }),
|
|
304
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
305
|
+
/* @__PURE__ */ jsx(
|
|
306
|
+
Button,
|
|
307
|
+
{
|
|
308
|
+
type: "button",
|
|
309
|
+
variant: "outline",
|
|
310
|
+
onClick: () => setOpen(false),
|
|
311
|
+
disabled: attaching,
|
|
312
|
+
children: "Cancel"
|
|
313
|
+
}
|
|
314
|
+
),
|
|
315
|
+
/* @__PURE__ */ jsx(
|
|
316
|
+
Button,
|
|
317
|
+
{
|
|
318
|
+
type: "button",
|
|
319
|
+
onClick: () => void attachSelected(),
|
|
320
|
+
disabled: selectedCount === 0 || attaching,
|
|
321
|
+
children: attaching ? "Adding…" : selectedCount > 0 ? `Add ${selectedCount} record${selectedCount === 1 ? "" : "s"}` : "Add records"
|
|
322
|
+
}
|
|
323
|
+
)
|
|
324
|
+
] })
|
|
325
|
+
] }),
|
|
326
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-4", children: [
|
|
327
|
+
surfaces.length === 0 && !operationsLoading ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No attachable entity surfaces are available." }) : null,
|
|
328
|
+
lookupQuery.error ? /* @__PURE__ */ jsx(PickerError, { error: lookupQuery.error, prefix: "Load filters" }) : null,
|
|
329
|
+
listQuery.error ? /* @__PURE__ */ jsx(PickerError, { error: listQuery.error, prefix: "Load records" }) : null,
|
|
330
|
+
attachError ? /* @__PURE__ */ jsx(PickerError, { error: attachError, prefix: "Attach record" }) : null,
|
|
331
|
+
attaching ? /* @__PURE__ */ jsx("div", { role: "status", className: "text-xs text-muted-foreground", children: "Loading full record details and adding context…" }) : null,
|
|
332
|
+
selected ? /* @__PURE__ */ jsx(
|
|
333
|
+
CommandOutput,
|
|
334
|
+
{
|
|
335
|
+
bare: true,
|
|
336
|
+
className: "mt-0 flex-1",
|
|
337
|
+
response: markedListResponse ?? null,
|
|
338
|
+
loading: listQuery.isLoading || listQuery.isFetching,
|
|
339
|
+
loadingMessage: "Loading records…",
|
|
340
|
+
emptyMessage: "No matching records.",
|
|
341
|
+
ariaLabel: "Context records",
|
|
342
|
+
rowSelection: {
|
|
343
|
+
selectedRowIds: Object.keys(selectedRows),
|
|
344
|
+
// Keep selections made on other pages: reconcile the table's
|
|
345
|
+
// next id set against the rows on the current page, falling back
|
|
346
|
+
// to the already-known row for ids from previously-viewed pages.
|
|
347
|
+
onSelectionChange: (nextIds, rows) => {
|
|
348
|
+
const rowByID = new Map(
|
|
349
|
+
rows.flatMap((row) => {
|
|
350
|
+
const id = getClickyRowId(row);
|
|
351
|
+
return id ? [[id, row]] : [];
|
|
352
|
+
})
|
|
353
|
+
);
|
|
354
|
+
setSelectedRows(
|
|
355
|
+
(prev) => Object.fromEntries(
|
|
356
|
+
nextIds.flatMap((id) => {
|
|
357
|
+
const row = rowByID.get(id) ?? prev[id];
|
|
358
|
+
return row ? [[id, row]] : [];
|
|
359
|
+
})
|
|
360
|
+
)
|
|
361
|
+
);
|
|
362
|
+
},
|
|
363
|
+
getRowId: (row, index) => getClickyRowId(row) ?? `context-row-${index}`,
|
|
364
|
+
isRowSelectable: (row) => {
|
|
365
|
+
const id = getClickyRowId(row);
|
|
366
|
+
return !!id && !existingIDs.has(
|
|
367
|
+
entityContextItemID(selected.surface.key, id)
|
|
368
|
+
);
|
|
369
|
+
},
|
|
370
|
+
toggleOnRowClick: true
|
|
371
|
+
},
|
|
372
|
+
...filterConfig.search ? { search: filterConfig.search } : {},
|
|
373
|
+
...filterConfig.timeRange ? { timeRange: filterConfig.timeRange } : {},
|
|
374
|
+
...filterConfig.filters.length ? { externalFilters: filterConfig.filters } : {},
|
|
375
|
+
...pagination ? { pagination } : {}
|
|
376
|
+
}
|
|
377
|
+
) : null,
|
|
378
|
+
items.length ? /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
379
|
+
items.length,
|
|
380
|
+
" context ",
|
|
381
|
+
items.length === 1 ? "record" : "records",
|
|
382
|
+
" ",
|
|
383
|
+
"attached. Attached rows are disabled."
|
|
384
|
+
] }) : null
|
|
385
|
+
] })
|
|
386
|
+
}
|
|
387
|
+
)
|
|
388
|
+
] });
|
|
389
|
+
}
|
|
390
|
+
function parseResponseJSON(response) {
|
|
391
|
+
const text = response.stdout || response.output || "";
|
|
392
|
+
if (!text.trim()) return void 0;
|
|
393
|
+
try {
|
|
394
|
+
return JSON.parse(text);
|
|
395
|
+
} catch {
|
|
396
|
+
return void 0;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
function markAttachedRows(response, surfaceKey, existingIDs) {
|
|
400
|
+
var _a;
|
|
401
|
+
if (!response || !surfaceKey || existingIDs.size === 0 || !response.parsed)
|
|
402
|
+
return response;
|
|
403
|
+
const parsed = response.parsed;
|
|
404
|
+
const node = parsed.version === 1 && parsed.node ? parsed.node : parsed;
|
|
405
|
+
if (node.kind !== "table" || !((_a = node.rows) == null ? void 0 : _a.length)) return response;
|
|
406
|
+
const tableNode = node;
|
|
407
|
+
const attached = tableNode.rows.map((row) => {
|
|
408
|
+
const id = getClickyRowId(row);
|
|
409
|
+
return !!id && existingIDs.has(entityContextItemID(surfaceKey, id));
|
|
410
|
+
});
|
|
411
|
+
if (!attached.some(Boolean)) return response;
|
|
412
|
+
const markerColumn = {
|
|
413
|
+
name: "__chat_context",
|
|
414
|
+
label: "Context",
|
|
415
|
+
shrink: true
|
|
416
|
+
};
|
|
417
|
+
const markedNode = {
|
|
418
|
+
...tableNode,
|
|
419
|
+
kind: "table",
|
|
420
|
+
columns: [...tableNode.columns ?? [], markerColumn],
|
|
421
|
+
rows: tableNode.rows.map((row, index) => ({
|
|
422
|
+
...row,
|
|
423
|
+
cells: {
|
|
424
|
+
...row.cells,
|
|
425
|
+
__chat_context: attached[index] ? { kind: "badge", badgeLabel: "Attached" } : { kind: "text", text: "", plain: "" }
|
|
426
|
+
}
|
|
427
|
+
}))
|
|
428
|
+
};
|
|
429
|
+
return {
|
|
430
|
+
...response,
|
|
431
|
+
parsed: parsed.version === 1 ? { ...parsed, node: markedNode } : markedNode
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
function PickerError({ error, prefix }) {
|
|
435
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
436
|
+
return /* @__PURE__ */ jsxs("div", { className: "rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm text-destructive", children: [
|
|
437
|
+
/* @__PURE__ */ jsxs("span", { className: "font-medium", children: [
|
|
438
|
+
prefix,
|
|
439
|
+
":"
|
|
440
|
+
] }),
|
|
441
|
+
" ",
|
|
442
|
+
message
|
|
443
|
+
] });
|
|
444
|
+
}
|
|
445
|
+
export {
|
|
446
|
+
OperationEntityContextPicker
|
|
447
|
+
};
|
|
448
|
+
//# sourceMappingURL=OperationEntityContextPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.js","sources":["../../src/rpc/OperationEntityContextPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport { Button } from \"../components/button\";\nimport type { ClickyDocument, ClickyNode, ClickyRow } from \"../data/Clicky\";\nimport type { StaticIconComponent } from \"../data/Icon\";\nimport type { ChatContextItem } from \"../data/ai/context\";\nimport { UiAdd, UiTable } from \"../icons\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../overlay/DropdownMenu\";\nimport { Modal } from \"../overlay/Modal\";\nimport { CommandOutput } from \"./CommandOutput\";\nimport {\n dataTablePaginationFromForm,\n packParameterValues,\n parametersToFormConfig,\n useDebouncedRecord,\n type ParameterValues,\n} from \"./formMetadata\";\nimport {\n filterOperationsBySurface,\n findSurfaceDetailOperation,\n findSurfaceListOperation,\n getClickySurfaces,\n getOperationClickyMeta,\n} from \"./clickyMetadata\";\nimport { getClickyRowId } from \"./rowNavigation\";\nimport { resolveSurfaceIcon } from \"./surfaceIconMap\";\nimport type {\n ClickySurface,\n ExecutionResponse,\n ResolvedOperation,\n} from \"./types\";\nimport { useOperations, type OperationsApiClient } from \"./useOperations\";\nimport {\n clickyRowRecord,\n contextItemFromEntityRow,\n entityContextItemID,\n} from \"./OperationEntityContextPicker.model\";\n\nexport type EntityContextSurfaceFilter = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => boolean;\n\nexport type EntityContextSurfaceText = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => string;\n\nexport type EntityContextSurfaceIcon = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => string | StaticIconComponent | undefined;\n\nexport type EntityContextSurfaceColor = (\n surface: ClickySurface,\n listOperation: ResolvedOperation,\n) => string | undefined;\n\nexport type EntityContextGroupIcon = (\n group: string,\n) => string | StaticIconComponent | undefined;\n\nexport type EntityContextGroupColor = (group: string) => string | undefined;\n\nexport type OperationEntityContextPickerProps = {\n client: OperationsApiClient;\n items: ChatContextItem[];\n onAdd: (item: ChatContextItem) => void;\n onAddMany?: (items: ChatContextItem[]) => void;\n surfaceFilter?: EntityContextSurfaceFilter;\n surfaceLabel?: EntityContextSurfaceText;\n surfaceGroup?: EntityContextSurfaceText;\n surfaceIcon?: EntityContextSurfaceIcon;\n surfaceColor?: EntityContextSurfaceColor;\n /** Icon for a top-level provider/group row (the submenu trigger). */\n surfaceGroupIcon?: EntityContextGroupIcon;\n /** Icon colour for a top-level provider/group row. */\n surfaceGroupColor?: EntityContextGroupColor;\n triggerLabel?: string;\n};\n\ntype ContextSurface = {\n surface: ClickySurface;\n listOperation: ResolvedOperation;\n detailOperation?: ResolvedOperation;\n};\n\nexport function OperationEntityContextPicker({\n client,\n items,\n onAdd,\n onAddMany,\n surfaceFilter,\n surfaceLabel,\n surfaceGroup,\n surfaceIcon,\n surfaceColor,\n surfaceGroupIcon,\n surfaceGroupColor,\n triggerLabel = \"Add context\",\n}: OperationEntityContextPickerProps) {\n const {\n operations,\n spec,\n isLoading: operationsLoading,\n } = useOperations(client);\n const [open, setOpen] = useState(false);\n const [surfaceKey, setSurfaceKey] = useState(\"\");\n const [filters, setFilters] = useState<ParameterValues>({});\n const [selectedRows, setSelectedRows] = useState<Record<string, ClickyRow>>(\n {},\n );\n const [attaching, setAttaching] = useState(false);\n const [attachError, setAttachError] = useState(\"\");\n\n const surfaces = useMemo<ContextSurface[]>(() => {\n return getClickySurfaces(spec)\n .flatMap((surface): ContextSurface[] => {\n const surfaceOperations = filterOperationsBySurface(\n operations,\n surface.key,\n );\n const listOperation = findSurfaceListOperation(\n surfaceOperations,\n surface.key,\n );\n if (!listOperation || listOperation.method.toUpperCase() !== \"GET\")\n return [];\n if (surfaceFilter && !surfaceFilter(surface, listOperation)) return [];\n const detailOperation = findSurfaceDetailOperation(\n surfaceOperations,\n surface.key,\n );\n return [\n {\n surface,\n listOperation,\n ...(detailOperation ? { detailOperation } : {}),\n },\n ];\n })\n .sort((left, right) => {\n const leftGroup =\n surfaceGroup?.(left.surface, left.listOperation) ??\n left.surface.parent ??\n \"\";\n const rightGroup =\n surfaceGroup?.(right.surface, right.listOperation) ??\n right.surface.parent ??\n \"\";\n return (\n leftGroup.localeCompare(rightGroup) ||\n left.surface.title.localeCompare(right.surface.title)\n );\n });\n }, [operations, spec, surfaceFilter, surfaceGroup]);\n\n useEffect(() => {\n setFilters({});\n setSelectedRows({});\n setAttachError(\"\");\n }, [surfaceKey]);\n\n const selected = surfaces.find((entry) => entry.surface.key === surfaceKey);\n const parameters = selected?.listOperation.operation.parameters ?? [];\n const debouncedFilters = useDebouncedRecord(filters, 250);\n const packedFilters = useMemo(\n () => packParameterValues(debouncedFilters, parameters),\n [debouncedFilters, parameters],\n );\n\n const lookupQuery = useQuery({\n queryKey: [\n \"entity-context-lookup\",\n selected?.listOperation.path,\n packedFilters,\n ],\n queryFn: async () =>\n (await client.lookupFilters?.(\n selected!.listOperation.path,\n selected!.listOperation.method,\n packedFilters,\n { Accept: \"application/json+clicky\" },\n )) ?? { filters: {} },\n enabled:\n open &&\n !!selected &&\n !!client.lookupFilters &&\n parameters.some((parameter) => parameter.in === \"query\"),\n staleTime: 30_000,\n retry: 0,\n });\n\n const listQuery = useQuery<ExecutionResponse>({\n queryKey: [\n \"entity-context-list\",\n selected?.listOperation.path,\n packedFilters,\n ],\n queryFn: () =>\n client.executeCommand(\n selected!.listOperation.path,\n selected!.listOperation.method,\n packedFilters,\n { Accept: \"application/json+clicky\" },\n ),\n enabled: open && !!selected,\n placeholderData: keepPreviousData,\n staleTime: 30_000,\n retry: 0,\n });\n\n const filterConfig = useMemo(\n () =>\n parametersToFormConfig(parameters, filters, setFilters, {\n includeLocations: [\"query\"],\n lookup: lookupQuery.data,\n }),\n [filters, lookupQuery.data, parameters],\n );\n const pagination = useMemo(\n () => dataTablePaginationFromForm(filterConfig.pagination, listQuery.data),\n [filterConfig.pagination, listQuery.data],\n );\n const existingIDs = useMemo(\n () => new Set(items.map((item) => item.id)),\n [items],\n );\n const markedListResponse = useMemo(\n () => markAttachedRows(listQuery.data, selected?.surface.key, existingIDs),\n [existingIDs, listQuery.data, selected?.surface.key],\n );\n\n const hydrateRow = useCallback(\n async (row: ClickyRow) => {\n if (!selected) throw new Error(\"Select an entity type first.\");\n const recordID = getClickyRowId(row);\n if (!recordID) {\n throw new Error(\"This row does not expose a stable record ID.\");\n }\n const contextID = entityContextItemID(selected.surface.key, recordID);\n if (existingIDs.has(contextID)) {\n throw new Error(\"This record is already attached.\");\n }\n\n let record: unknown = clickyRowRecord(row);\n if (selected.detailOperation) {\n const detailMeta = getOperationClickyMeta(selected.detailOperation);\n const idParam =\n detailMeta?.idParam ??\n selected.detailOperation.operation.parameters?.find(\n (parameter) => parameter.in === \"path\",\n )?.name ??\n \"id\";\n const detailParameterNames = new Set(\n selected.detailOperation.operation.parameters?.map(\n (parameter) => parameter.name,\n ) ?? [],\n );\n const detailParams = Object.fromEntries(\n Object.entries(packedFilters).filter(([key]) =>\n detailParameterNames.has(key),\n ),\n );\n detailParams[idParam] = recordID;\n const response = await client.executeCommand(\n selected.detailOperation.path,\n selected.detailOperation.method,\n detailParams,\n { Accept: \"application/json\" },\n );\n record = response.parsed ?? parseResponseJSON(response) ?? record;\n }\n\n const contextItem = contextItemFromEntityRow(\n selected.surface,\n row,\n record,\n );\n if (!contextItem)\n throw new Error(\"This row does not expose a stable record ID.\");\n return contextItem;\n },\n [client, existingIDs, packedFilters, selected],\n );\n\n const attachSelected = useCallback(async () => {\n const rows = Object.values(selectedRows);\n if (rows.length === 0) return;\n setAttaching(true);\n setAttachError(\"\");\n const results = await Promise.allSettled(rows.map(hydrateRow));\n const added = results.flatMap((result) =>\n result.status === \"fulfilled\" ? [result.value] : [],\n );\n const failures = results.flatMap((result) =>\n result.status === \"rejected\" ? [result.reason] : [],\n );\n if (added.length > 0) {\n if (onAddMany) onAddMany(added);\n else added.forEach(onAdd);\n }\n setAttaching(false);\n if (failures.length > 0) {\n const first = failures[0];\n setAttachError(\n `${failures.length} record${failures.length === 1 ? \"\" : \"s\"} could not be attached: ${first instanceof Error ? first.message : String(first)}`,\n );\n return;\n }\n setSelectedRows({});\n setOpen(false);\n }, [hydrateRow, onAdd, onAddMany, selectedRows]);\n\n const menuItems = useMemo<DropdownMenuItem[]>(() => {\n // `surfaces` is pre-sorted by group then title, so bucketing by group in\n // insertion order yields a stable provider → type tree without re-sorting.\n const groups: Array<{ group: string; leaves: DropdownMenuItem[] }> = [];\n const byGroup = new Map<string, DropdownMenuItem[]>();\n for (const entry of surfaces) {\n const group =\n surfaceGroup?.(entry.surface, entry.listOperation) ??\n entry.surface.parent ??\n \"Other\";\n const label =\n surfaceLabel?.(entry.surface, entry.listOperation) ??\n entry.surface.title;\n const icon =\n surfaceIcon?.(entry.surface, entry.listOperation) ??\n resolveSurfaceIcon(entry.surface.icon) ??\n UiTable;\n const iconColor = surfaceColor?.(entry.surface, entry.listOperation);\n const leaf: DropdownMenuItem = {\n label,\n title: label,\n icon,\n ...(iconColor ? { iconColor } : {}),\n onSelect: () => {\n setSurfaceKey(entry.surface.key);\n setOpen(true);\n },\n };\n let bucket = byGroup.get(group);\n if (!bucket) {\n bucket = [];\n byGroup.set(group, bucket);\n groups.push({ group, leaves: bucket });\n }\n bucket.push(leaf);\n }\n\n // A single group would nest everything under one lone submenu; render its\n // types flat instead.\n if (groups.length <= 1) return groups[0]?.leaves ?? [];\n\n return groups.map(({ group, leaves }): DropdownMenuItem => {\n const groupColor = surfaceGroupColor?.(group);\n // A submenu child already sits under its group header — don't repeat the\n // group name in the child label. The tooltip (title) and the detail dialog\n // keep the full label.\n const prefix = `${group} `;\n const children = leaves.map((leaf) =>\n typeof leaf.label === \"string\" && leaf.label.startsWith(prefix)\n ? { ...leaf, label: leaf.label.slice(prefix.length) }\n : leaf,\n );\n return {\n label: group,\n title: group,\n icon: surfaceGroupIcon?.(group) ?? leaves[0]?.icon ?? UiTable,\n ...(groupColor ? { iconColor: groupColor } : {}),\n onSelect: () => {},\n children,\n };\n });\n }, [\n surfaceColor,\n surfaceGroup,\n surfaceGroupColor,\n surfaceGroupIcon,\n surfaceIcon,\n surfaceLabel,\n surfaces,\n ]);\n\n const selectedCount = Object.keys(selectedRows).length;\n const selectedLabel = selected\n ? (surfaceLabel?.(selected.surface, selected.listOperation) ??\n selected.surface.title)\n : \"records\";\n\n return (\n <>\n <DropdownMenu\n label={triggerLabel}\n icon={UiAdd}\n variant=\"ghost\"\n size=\"sm\"\n align=\"left\"\n menuLabel=\"Context entity types\"\n menuClassName=\"min-w-56\"\n items={\n menuItems.length > 0\n ? menuItems\n : [\n {\n label: operationsLoading\n ? \"Loading entity types…\"\n : \"No entity listings available\",\n disabled: true,\n onSelect: () => {},\n },\n ]\n }\n />\n <Modal\n open={open}\n onClose={() => setOpen(false)}\n title={`Add ${selectedLabel} context`}\n size=\"2xl\"\n expandable\n scrollBody={false}\n footer={\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-xs text-muted-foreground\">\n {selectedCount === 0\n ? \"Select one or more records from the table.\"\n : `${selectedCount} record${selectedCount === 1 ? \"\" : \"s\"} selected`}\n </span>\n <div className=\"flex items-center gap-2\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setOpen(false)}\n disabled={attaching}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={() => void attachSelected()}\n disabled={selectedCount === 0 || attaching}\n >\n {attaching\n ? \"Adding…\"\n : selectedCount > 0\n ? `Add ${selectedCount} record${selectedCount === 1 ? \"\" : \"s\"}`\n : \"Add records\"}\n </Button>\n </div>\n </div>\n }\n >\n <div className=\"flex min-h-0 flex-1 flex-col gap-4\">\n {surfaces.length === 0 && !operationsLoading ? (\n <p className=\"text-sm text-muted-foreground\">\n No attachable entity surfaces are available.\n </p>\n ) : null}\n {lookupQuery.error ? (\n <PickerError error={lookupQuery.error} prefix=\"Load filters\" />\n ) : null}\n {listQuery.error ? (\n <PickerError error={listQuery.error} prefix=\"Load records\" />\n ) : null}\n {attachError ? (\n <PickerError error={attachError} prefix=\"Attach record\" />\n ) : null}\n {attaching ? (\n <div role=\"status\" className=\"text-xs text-muted-foreground\">\n Loading full record details and adding context…\n </div>\n ) : null}\n\n {selected ? (\n <CommandOutput\n bare\n className=\"mt-0 flex-1\"\n response={markedListResponse ?? null}\n loading={listQuery.isLoading || listQuery.isFetching}\n loadingMessage=\"Loading records…\"\n emptyMessage=\"No matching records.\"\n ariaLabel=\"Context records\"\n rowSelection={{\n selectedRowIds: Object.keys(selectedRows),\n // Keep selections made on other pages: reconcile the table's\n // next id set against the rows on the current page, falling back\n // to the already-known row for ids from previously-viewed pages.\n onSelectionChange: (nextIds, rows) => {\n const rowByID = new Map(\n rows.flatMap((row) => {\n const id = getClickyRowId(row);\n return id ? [[id, row] as const] : [];\n }),\n );\n setSelectedRows((prev) =>\n Object.fromEntries(\n nextIds.flatMap((id) => {\n const row = rowByID.get(id) ?? prev[id];\n return row ? [[id, row] as const] : [];\n }),\n ),\n );\n },\n getRowId: (row, index) =>\n getClickyRowId(row) ?? `context-row-${index}`,\n isRowSelectable: (row) => {\n const id = getClickyRowId(row);\n return (\n !!id &&\n !existingIDs.has(\n entityContextItemID(selected.surface.key, id),\n )\n );\n },\n toggleOnRowClick: true,\n }}\n {...(filterConfig.search ? { search: filterConfig.search } : {})}\n {...(filterConfig.timeRange\n ? { timeRange: filterConfig.timeRange }\n : {})}\n {...(filterConfig.filters.length\n ? { externalFilters: filterConfig.filters }\n : {})}\n {...(pagination ? { pagination } : {})}\n />\n ) : null}\n\n {items.length ? (\n <p className=\"text-xs text-muted-foreground\">\n {items.length} context {items.length === 1 ? \"record\" : \"records\"}{\" \"}\n attached. Attached rows are disabled.\n </p>\n ) : null}\n </div>\n </Modal>\n </>\n );\n}\n\nfunction parseResponseJSON(response: ExecutionResponse): unknown {\n const text = response.stdout || response.output || \"\";\n if (!text.trim()) return undefined;\n try {\n return JSON.parse(text);\n } catch {\n return undefined;\n }\n}\n\nfunction markAttachedRows(\n response: ExecutionResponse | undefined,\n surfaceKey: string | undefined,\n existingIDs: Set<string>,\n): ExecutionResponse | undefined {\n if (!response || !surfaceKey || existingIDs.size === 0 || !response.parsed)\n return response;\n const parsed = response.parsed as Partial<ClickyDocument> &\n Partial<ClickyNode>;\n const node = parsed.version === 1 && parsed.node ? parsed.node : parsed;\n if (node.kind !== \"table\" || !node.rows?.length) return response;\n const tableNode = node as ClickyNode;\n const attached = tableNode.rows!.map((row) => {\n const id = getClickyRowId(row);\n return !!id && existingIDs.has(entityContextItemID(surfaceKey, id));\n });\n if (!attached.some(Boolean)) return response;\n\n const markerColumn = {\n name: \"__chat_context\",\n label: \"Context\",\n shrink: true,\n };\n const markedNode: ClickyNode = {\n ...tableNode,\n kind: \"table\",\n columns: [...(tableNode.columns ?? []), markerColumn],\n rows: tableNode.rows!.map((row, index) => ({\n ...row,\n cells: {\n ...row.cells,\n __chat_context: attached[index]\n ? { kind: \"badge\", badgeLabel: \"Attached\" }\n : { kind: \"text\", text: \"\", plain: \"\" },\n },\n })),\n };\n return {\n ...response,\n parsed:\n parsed.version === 1\n ? { ...(parsed as ClickyDocument), node: markedNode }\n : markedNode,\n };\n}\n\nfunction PickerError({ error, prefix }: { error: unknown; prefix: string }) {\n const message = error instanceof Error ? error.message : String(error);\n return (\n <div className=\"rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm text-destructive\">\n <span className=\"font-medium\">{prefix}:</span> {message}\n </div>\n );\n}\n"],"names":["_a"],"mappings":"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"}
|