@flanksource/clicky-ui 0.3.27 → 0.3.28
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 +14 -0
- package/dist/ai.cjs +52 -6
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +53 -7
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.cjs +24 -39
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts +9 -2
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +24 -39
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentProvider.cjs +4 -3
- package/dist/comments/CommentProvider.cjs.map +1 -1
- package/dist/comments/CommentProvider.d.ts +6 -1
- package/dist/comments/CommentProvider.d.ts.map +1 -1
- package/dist/comments/CommentProvider.js +4 -3
- package/dist/comments/CommentProvider.js.map +1 -1
- package/dist/comments/CommentSidePanel.cjs +65 -52
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.d.ts.map +1 -1
- package/dist/comments/CommentSidePanel.js +67 -54
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/CommentThread.cjs +2 -2
- package/dist/comments/CommentThread.cjs.map +1 -1
- package/dist/comments/CommentThread.d.ts +3 -3
- package/dist/comments/CommentThread.d.ts.map +1 -1
- package/dist/comments/CommentThread.js +2 -2
- package/dist/comments/CommentThread.js.map +1 -1
- package/dist/comments/CommentThreadList.cjs +85 -37
- package/dist/comments/CommentThreadList.cjs.map +1 -1
- package/dist/comments/CommentThreadList.d.ts +3 -3
- package/dist/comments/CommentThreadList.d.ts.map +1 -1
- package/dist/comments/CommentThreadList.js +86 -38
- package/dist/comments/CommentThreadList.js.map +1 -1
- package/dist/comments/comment-utils.cjs +26 -0
- package/dist/comments/comment-utils.cjs.map +1 -1
- package/dist/comments/comment-utils.d.ts +11 -0
- package/dist/comments/comment-utils.d.ts.map +1 -1
- package/dist/comments/comment-utils.js +26 -0
- package/dist/comments/comment-utils.js.map +1 -1
- package/dist/comments.cjs +2 -0
- package/dist/comments.cjs.map +1 -1
- package/dist/comments.js +3 -1
- package/dist/components/AccordionList.cjs +3 -0
- package/dist/components/AccordionList.cjs.map +1 -1
- package/dist/components/AccordionList.d.ts +3 -1
- package/dist/components/AccordionList.d.ts.map +1 -1
- package/dist/components/AccordionList.js +3 -0
- package/dist/components/AccordionList.js.map +1 -1
- package/dist/components/CopyButton.cjs +35 -0
- package/dist/components/CopyButton.cjs.map +1 -0
- package/dist/components/CopyButton.d.ts +20 -0
- package/dist/components/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton.js +35 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/FilterBar.cjs +29 -6
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +10 -1
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +29 -6
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/ListMenu.cjs +4 -1
- package/dist/components/ListMenu.cjs.map +1 -1
- package/dist/components/ListMenu.d.ts +5 -1
- package/dist/components/ListMenu.d.ts.map +1 -1
- package/dist/components/ListMenu.js +4 -1
- package/dist/components/ListMenu.js.map +1 -1
- package/dist/components/SegmentedControl.cjs +4 -2
- package/dist/components/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl.d.ts +4 -0
- package/dist/components/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl.js +4 -2
- package/dist/components/SegmentedControl.js.map +1 -1
- package/dist/components/clipboard.cjs +60 -0
- package/dist/components/clipboard.cjs.map +1 -0
- package/dist/components/clipboard.d.ts +13 -0
- package/dist/components/clipboard.d.ts.map +1 -0
- package/dist/components/clipboard.js +60 -0
- package/dist/components/clipboard.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +15 -1
- 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 +15 -1
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-list-array.cjs +113 -0
- package/dist/components/json-schema-form-list-array.cjs.map +1 -0
- package/dist/components/json-schema-form-list-array.d.ts +7 -0
- package/dist/components/json-schema-form-list-array.d.ts.map +1 -0
- package/dist/components/json-schema-form-list-array.js +113 -0
- package/dist/components/json-schema-form-list-array.js.map +1 -0
- package/dist/components/json-schema-form-resolve.cjs +1 -1
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +1 -1
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +1 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components.cjs +5 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +2 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +5 -0
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +4 -1
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.js +4 -1
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/DataTable.cjs +202 -40
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +163 -3
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +202 -40
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs +8 -10
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.js +8 -10
- package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -1
- package/dist/data/SelectionActionBar.cjs +242 -0
- package/dist/data/SelectionActionBar.cjs.map +1 -0
- package/dist/data/SelectionActionBar.d.ts +28 -0
- package/dist/data/SelectionActionBar.d.ts.map +1 -0
- package/dist/data/SelectionActionBar.js +242 -0
- package/dist/data/SelectionActionBar.js.map +1 -0
- package/dist/data/TaskManager.cjs +34 -12
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +34 -12
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +11 -7
- package/dist/data/TaskManagerButton.cjs.map +1 -1
- package/dist/data/TaskManagerButton.d.ts.map +1 -1
- package/dist/data/TaskManagerButton.js +11 -7
- package/dist/data/TaskManagerButton.js.map +1 -1
- package/dist/data/TaskProgress.cjs +55 -11
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +53 -9
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +2 -4
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +2 -4
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.cjs +1 -2
- package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.js +1 -2
- package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs +262 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts +16 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.js +262 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs +77 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts +8 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.js +77 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPage.cjs +332 -0
- package/dist/data/ai/PromptCatalog/PromptPage.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPage.d.ts +17 -0
- package/dist/data/ai/PromptCatalog/PromptPage.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPage.js +332 -0
- package/dist/data/ai/PromptCatalog/PromptPage.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts +16 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.js +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +10 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.js +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs +90 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts +8 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.js +90 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs +168 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +17 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js +168 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs +36 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts +7 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.js +36 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.js.map +1 -0
- package/dist/data/ai/PromptCatalog/index.d.ts +9 -0
- package/dist/data/ai/PromptCatalog/index.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs +137 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts +28 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.js +137 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.js.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.cjs +114 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +45 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.js +114 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.js.map +1 -0
- package/dist/data/ai/PromptCatalog/types.d.ts +70 -0
- package/dist/data/ai/PromptCatalog/types.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +9 -12
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js +9 -12
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
- package/dist/data/ai/PromptPicker/index.d.ts +1 -1
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/types.d.ts +9 -0
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +2 -2
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +3 -3
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs +0 -1
- package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.js +0 -1
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
- package/dist/data/ai/RuntimeModePicker.cjs +15 -6
- package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
- package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
- package/dist/data/ai/RuntimeModePicker.js +17 -8
- package/dist/data/ai/RuntimeModePicker.js.map +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.collection.cjs +3 -3
- package/dist/data/ai/SessionInspector.collection.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.collection.js +3 -3
- package/dist/data/ai/SessionInspector.collection.js.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
- package/dist/data/ai/SessionInspector.model.cjs +3 -3
- package/dist/data/ai/SessionInspector.model.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.model.d.ts +1 -1
- package/dist/data/ai/SessionInspector.model.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.model.js +3 -3
- package/dist/data/ai/SessionInspector.model.js.map +1 -1
- package/dist/data/ai/SessionInspector.panels.cjs +1 -1
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.panels.js +1 -1
- package/dist/data/ai/SessionInspector.panels.js.map +1 -1
- package/dist/data/ai/SessionInspector.summary.cjs +3 -3
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.summary.js +3 -3
- package/dist/data/ai/SessionInspector.summary.js.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +3 -2
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +18 -30
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +19 -31
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +71 -86
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +72 -87
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs +99 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts +13 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js +99 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +34 -23
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +6 -2
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +35 -24
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs +114 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts +10 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js +114 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs +160 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts +9 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js +160 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +27 -241
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +5 -6
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +25 -239
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +21 -8
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +4 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +22 -9
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs +207 -164
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +4 -3
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js +210 -167
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +15 -15
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +15 -15
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +120 -42
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +4 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +123 -45
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +136 -48
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +13 -3
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +137 -49
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +93 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts +6 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +93 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs +35 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts +5 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js +35 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs +2 -9
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +1 -2
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/presets.js +2 -9
- package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.cjs +2 -7
- package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts +0 -1
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.js +3 -8
- package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +43 -33
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +7 -13
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +43 -33
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +33 -49
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +52 -29
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +33 -48
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs +276 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts +58 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js +276 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js.map +1 -0
- package/dist/data/ai/ThreadPicker.cjs +55 -42
- package/dist/data/ai/ThreadPicker.cjs.map +1 -1
- package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
- package/dist/data/ai/ThreadPicker.js +56 -43
- package/dist/data/ai/ThreadPicker.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +9 -1
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +9 -1
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.cjs +41 -487
- package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -2
- package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.detail.cjs +238 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.d.ts +8 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.js +238 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +57 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +9 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js +57 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.js +42 -488
- package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.cjs +130 -0
- package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts +35 -0
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.model.js +130 -0
- package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +57 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +7 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +57 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +389 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +23 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js +389 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -0
- package/dist/data/ai/agent-action-icons.cjs +14 -6
- package/dist/data/ai/agent-action-icons.cjs.map +1 -1
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
- package/dist/data/ai/agent-action-icons.js +14 -6
- package/dist/data/ai/agent-action-icons.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.cjs +17 -9
- package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.js +17 -9
- package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude.cjs +7 -4
- package/dist/data/ai/examples/sessions/claude.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/claude.js +7 -4
- package/dist/data/ai/examples/sessions/claude.js.map +1 -1
- package/dist/data/ai/examples/sessions/codex-complete.cjs +17 -10
- package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/codex-complete.js +17 -10
- package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -1
- package/dist/data/ai/examples/sessions/codex.cjs +7 -4
- package/dist/data/ai/examples/sessions/codex.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/codex.js +7 -4
- package/dist/data/ai/examples/sessions/codex.js.map +1 -1
- package/dist/data/ai/index.d.ts +6 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-profile.cjs +93 -0
- package/dist/data/ai/runtime-profile.cjs.map +1 -0
- package/dist/data/ai/runtime-profile.d.ts +73 -0
- package/dist/data/ai/runtime-profile.d.ts.map +1 -0
- package/dist/data/ai/runtime-profile.js +93 -0
- package/dist/data/ai/runtime-profile.js.map +1 -0
- package/dist/data/ai/sandbox-kind-meta.cjs +38 -4
- package/dist/data/ai/sandbox-kind-meta.cjs.map +1 -1
- package/dist/data/ai/sandbox-kind-meta.d.ts +3 -0
- package/dist/data/ai/sandbox-kind-meta.d.ts.map +1 -1
- package/dist/data/ai/sandbox-kind-meta.js +38 -4
- package/dist/data/ai/sandbox-kind-meta.js.map +1 -1
- package/dist/data/chat/Chat.cjs +13 -3
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.cjs +3 -3
- package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
- package/dist/data/chat/Chat.fixtures.js +3 -3
- package/dist/data/chat/Chat.fixtures.js.map +1 -1
- package/dist/data/chat/Chat.js +14 -4
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/Chat.runtime.cjs +4 -9
- package/dist/data/chat/Chat.runtime.cjs.map +1 -1
- package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
- package/dist/data/chat/Chat.runtime.js +4 -9
- package/dist/data/chat/Chat.runtime.js.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.cjs +5 -5
- package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.js +5 -5
- package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +3 -3
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +3 -3
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +3 -3
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/approval.cjs.map +1 -1
- package/dist/data/chat/approval.d.ts +21 -1
- package/dist/data/chat/approval.d.ts.map +1 -1
- package/dist/data/chat/approval.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +5 -0
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +5 -0
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +7 -5
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/chat/usage-snapshot.cjs +21 -1
- package/dist/data/chat/usage-snapshot.cjs.map +1 -1
- package/dist/data/chat/usage-snapshot.d.ts +2 -0
- package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
- package/dist/data/chat/usage-snapshot.js +22 -2
- package/dist/data/chat/usage-snapshot.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +29 -16
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts +10 -2
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +31 -18
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.cjs +10 -20
- package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.d.ts +2 -2
- package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.js +11 -21
- package/dist/data/runtime/RuntimeBar.model.js.map +1 -1
- package/dist/data/runtime/RuntimeBarCombo.cjs +11 -6
- package/dist/data/runtime/RuntimeBarCombo.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarCombo.d.ts +3 -1
- package/dist/data/runtime/RuntimeBarCombo.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarCombo.js +11 -6
- package/dist/data/runtime/RuntimeBarCombo.js.map +1 -1
- package/dist/data/runtime/RuntimeBarSegments.cjs +7 -5
- package/dist/data/runtime/RuntimeBarSegments.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarSegments.d.ts +4 -2
- package/dist/data/runtime/RuntimeBarSegments.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarSegments.js +7 -5
- package/dist/data/runtime/RuntimeBarSegments.js.map +1 -1
- package/dist/data/runtime/model-capabilities.cjs +0 -3
- package/dist/data/runtime/model-capabilities.cjs.map +1 -1
- package/dist/data/runtime/model-capabilities.d.ts +0 -1
- package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
- package/dist/data/runtime/model-capabilities.js +0 -3
- package/dist/data/runtime/model-capabilities.js.map +1 -1
- package/dist/data/runtime/provider-status.cjs +1 -1
- package/dist/data/runtime/provider-status.cjs.map +1 -1
- package/dist/data/runtime/provider-status.js +1 -1
- package/dist/data/runtime/provider-status.js.map +1 -1
- package/dist/data/runtime/runtime-field-support.cjs +63 -0
- package/dist/data/runtime/runtime-field-support.cjs.map +1 -0
- package/dist/data/runtime/runtime-field-support.d.ts +13 -0
- package/dist/data/runtime/runtime-field-support.d.ts.map +1 -0
- package/dist/data/runtime/runtime-field-support.js +63 -0
- package/dist/data/runtime/runtime-field-support.js.map +1 -0
- package/dist/data/runtime/runtime-mode.cjs +158 -116
- package/dist/data/runtime/runtime-mode.cjs.map +1 -1
- package/dist/data/runtime/runtime-mode.d.ts +57 -19
- package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
- package/dist/data/runtime/runtime-mode.js +158 -116
- package/dist/data/runtime/runtime-mode.js.map +1 -1
- package/dist/data/selectionActionSplit.cjs +33 -0
- package/dist/data/selectionActionSplit.cjs.map +1 -0
- package/dist/data/selectionActionSplit.d.ts +36 -0
- package/dist/data/selectionActionSplit.d.ts.map +1 -0
- package/dist/data/selectionActionSplit.js +33 -0
- package/dist/data/selectionActionSplit.js.map +1 -0
- package/dist/data/task-copy.cjs +76 -0
- package/dist/data/task-copy.cjs.map +1 -0
- package/dist/data/task-copy.d.ts +12 -0
- package/dist/data/task-copy.d.ts.map +1 -0
- package/dist/data/task-copy.js +76 -0
- package/dist/data/task-copy.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +34 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +4 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +34 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-task-run.cjs +24 -17
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts +3 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +25 -18
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/icons/components/UiCalendarCheck.cjs +15 -0
- package/dist/icons/components/UiCalendarCheck.cjs.map +1 -0
- package/dist/icons/components/UiCalendarCheck.d.ts +15 -0
- package/dist/icons/components/UiCalendarCheck.d.ts.map +1 -0
- package/dist/icons/components/UiCalendarCheck.js +15 -0
- package/dist/icons/components/UiCalendarCheck.js.map +1 -0
- package/dist/icons/components/UiChartLineUp.cjs +15 -0
- package/dist/icons/components/UiChartLineUp.cjs.map +1 -0
- package/dist/icons/components/UiChartLineUp.d.ts +15 -0
- package/dist/icons/components/UiChartLineUp.d.ts.map +1 -0
- package/dist/icons/components/UiChartLineUp.js +15 -0
- package/dist/icons/components/UiChartLineUp.js.map +1 -0
- package/dist/icons/components/UiClockCountdown.cjs +15 -0
- package/dist/icons/components/UiClockCountdown.cjs.map +1 -0
- package/dist/icons/components/UiClockCountdown.d.ts +15 -0
- package/dist/icons/components/UiClockCountdown.d.ts.map +1 -0
- package/dist/icons/components/UiClockCountdown.js +15 -0
- package/dist/icons/components/UiClockCountdown.js.map +1 -0
- package/dist/icons/components/UiFactory.cjs +15 -0
- package/dist/icons/components/UiFactory.cjs.map +1 -0
- package/dist/icons/components/UiFactory.d.ts +15 -0
- package/dist/icons/components/UiFactory.d.ts.map +1 -0
- package/dist/icons/components/UiFactory.js +15 -0
- package/dist/icons/components/UiFactory.js.map +1 -0
- package/dist/icons/components/UiHandCoins.cjs +15 -0
- package/dist/icons/components/UiHandCoins.cjs.map +1 -0
- package/dist/icons/components/UiHandCoins.d.ts +15 -0
- package/dist/icons/components/UiHandCoins.d.ts.map +1 -0
- package/dist/icons/components/UiHandCoins.js +15 -0
- package/dist/icons/components/UiHandCoins.js.map +1 -0
- package/dist/icons/components/UiInvoice.cjs +15 -0
- package/dist/icons/components/UiInvoice.cjs.map +1 -0
- package/dist/icons/components/UiInvoice.d.ts +15 -0
- package/dist/icons/components/UiInvoice.d.ts.map +1 -0
- package/dist/icons/components/UiInvoice.js +15 -0
- package/dist/icons/components/UiInvoice.js.map +1 -0
- package/dist/icons/components/UiTax.cjs +15 -0
- package/dist/icons/components/UiTax.cjs.map +1 -0
- package/dist/icons/components/UiTax.d.ts +15 -0
- package/dist/icons/components/UiTax.d.ts.map +1 -0
- package/dist/icons/components/UiTax.js +15 -0
- package/dist/icons/components/UiTax.js.map +1 -0
- package/dist/icons/index.d.ts +14 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/registry.cjs +14 -0
- package/dist/icons/registry.cjs.map +1 -1
- package/dist/icons/registry.d.ts.map +1 -1
- package/dist/icons/registry.js +14 -0
- package/dist/icons/registry.js.map +1 -1
- package/dist/icons.cjs +21 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +21 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +43 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +44 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +17 -3
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.js +17 -3
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/overlay/DropdownMenu.cjs +46 -35
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.js +46 -35
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +26 -11
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.d.ts +4 -1
- package/dist/rpc/FilterForm.d.ts.map +1 -1
- package/dist/rpc/FilterForm.js +26 -11
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/FilterFormFields.cjs +3 -2
- package/dist/rpc/FilterFormFields.cjs.map +1 -1
- package/dist/rpc/FilterFormFields.d.ts +2 -1
- package/dist/rpc/FilterFormFields.d.ts.map +1 -1
- package/dist/rpc/FilterFormFields.js +3 -2
- package/dist/rpc/FilterFormFields.js.map +1 -1
- package/dist/rpc/OperationActionBar.cjs +67 -15
- package/dist/rpc/OperationActionBar.cjs.map +1 -1
- package/dist/rpc/OperationActionBar.d.ts +11 -3
- package/dist/rpc/OperationActionBar.d.ts.map +1 -1
- package/dist/rpc/OperationActionBar.js +68 -16
- package/dist/rpc/OperationActionBar.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +69 -76
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +3 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +69 -76
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCatalogActions.cjs +69 -0
- package/dist/rpc/OperationCatalogActions.cjs.map +1 -0
- package/dist/rpc/OperationCatalogActions.d.ts +17 -0
- package/dist/rpc/OperationCatalogActions.d.ts.map +1 -0
- package/dist/rpc/OperationCatalogActions.js +69 -0
- package/dist/rpc/OperationCatalogActions.js.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.cjs +129 -116
- package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.d.ts +18 -1
- package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.js +130 -117
- package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +7 -4
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +4 -2
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +7 -4
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/operationCatalogUrl.cjs +28 -0
- package/dist/rpc/operationCatalogUrl.cjs.map +1 -0
- package/dist/rpc/operationCatalogUrl.d.ts +3 -0
- package/dist/rpc/operationCatalogUrl.d.ts.map +1 -0
- package/dist/rpc/operationCatalogUrl.js +28 -0
- package/dist/rpc/operationCatalogUrl.js.map +1 -0
- package/dist/rpc/rowNavigation.cjs +4 -3
- package/dist/rpc/rowNavigation.cjs.map +1 -1
- package/dist/rpc/rowNavigation.d.ts +1 -1
- package/dist/rpc/rowNavigation.d.ts.map +1 -1
- package/dist/rpc/rowNavigation.js +4 -3
- package/dist/rpc/rowNavigation.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +2 -2
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc.cjs +2 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +2 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -0
- package/dist/rpc.js.map +1 -1
- package/dist/runtime-profile.cjs +7 -0
- package/dist/runtime-profile.cjs.map +1 -0
- package/dist/runtime-profile.d.ts +2 -0
- package/dist/runtime-profile.d.ts.map +1 -0
- package/dist/runtime-profile.js +7 -0
- package/dist/runtime-profile.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +6 -1
|
@@ -1 +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 packLookupParameterValues,\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 const packedLookupFilters = useMemo(\n () => packLookupParameterValues(debouncedFilters, parameters),\n [debouncedFilters, parameters],\n );\n\n const lookupQuery = useQuery({\n queryKey: [\n \"entity-context-lookup\",\n selected?.listOperation.path,\n packedLookupFilters,\n ],\n queryFn: async () =>\n (await client.lookupFilters?.(\n selected!.listOperation.path,\n selected!.listOperation.method,\n packedLookupFilters,\n { Accept: \"application/json+clicky\" },\n )) ?? { filters: {} },\n enabled:\n open &&\n !!selected &&\n !!client.lookupFilters &&\n parameters.some((parameter) => parameter.in === \"query\"),\n placeholderData: keepPreviousData,\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 // Shapes come from the spec so a control keeps its identity while the lookup\n // that fills it is in flight; see parametersToFormConfig.\n const filterShapes = spec?.components?.[\"x-clicky-filters\"];\n const filterConfig = useMemo(\n () =>\n parametersToFormConfig(parameters, filters, setFilters, {\n includeLocations: [\"query\"],\n lookup: lookupQuery.data,\n components: filterShapes,\n }),\n [filters, filterShapes, 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 {...(filterConfig.sort\n ? {\n sort: filterConfig.sort.value,\n onSortChange: filterConfig.sort.onChange,\n }\n : {})}\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","packLookupParameterValues","useQuery","_a","keepPreviousData","parametersToFormConfig","dataTablePaginationFromForm","useCallback","getClickyRowId","entityContextItemID","clickyRowRecord","getOperationClickyMeta","contextItemFromEntityRow","resolveSurfaceIcon","UiTable","jsxs","Fragment","jsx","DropdownMenu","UiAdd","Modal","Button","CommandOutput"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.cjs","sources":["../../src/rpc/OperationEntityContextPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState, type ReactNode } 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 packLookupParameterValues,\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\n// EntityContextSurfaceRenderContext is handed to a host-supplied surfaceRenderer\n// so it can replace the picker dialog for selected surfaces, the way\n// ResultRenderer replaces a result surface. The generic dialog lists whatever\n// the entity's list operation returns, which is the right default and the wrong\n// answer for a surface the host already browses with a purpose-built UI — a\n// document tree, a map, a calendar. `defaultView` is the standard dialog;\n// return it unchanged to keep it.\n//\n// The whole dialog is replaced rather than only its body: a replacement that\n// owns selection has to own the confirm button too, or the footer would count\n// rows the host is no longer tracking.\nexport type EntityContextSurfaceRenderContext = {\n surface: ClickySurface;\n listOperation: ResolvedOperation;\n detailOperation?: ResolvedOperation;\n /** Already-attached items, so a replacement can disable them. */\n items: ChatContextItem[];\n onAdd: (item: ChatContextItem) => void;\n onAddMany: (items: ChatContextItem[]) => void;\n /** True while this surface is the one chosen from the dropdown. */\n open: boolean;\n close: () => void;\n defaultView: ReactNode;\n};\n\nexport type EntityContextSurfaceRenderer = (\n ctx: EntityContextSurfaceRenderContext,\n) => ReactNode;\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 /** Replaces the picker dialog for surfaces the host browses its own way. */\n surfaceRenderer?: EntityContextSurfaceRenderer;\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 surfaceRenderer,\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 const packedLookupFilters = useMemo(\n () => packLookupParameterValues(debouncedFilters, parameters),\n [debouncedFilters, parameters],\n );\n\n const lookupQuery = useQuery({\n queryKey: [\n \"entity-context-lookup\",\n selected?.listOperation.path,\n packedLookupFilters,\n ],\n queryFn: async () =>\n (await client.lookupFilters?.(\n selected!.listOperation.path,\n selected!.listOperation.method,\n packedLookupFilters,\n { Accept: \"application/json+clicky\" },\n )) ?? { filters: {} },\n enabled:\n open &&\n !!selected &&\n !!client.lookupFilters &&\n parameters.some((parameter) => parameter.in === \"query\"),\n placeholderData: keepPreviousData,\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 // Shapes come from the spec so a control keeps its identity while the lookup\n // that fills it is in flight; see parametersToFormConfig.\n const filterShapes = spec?.components?.[\"x-clicky-filters\"];\n const filterConfig = useMemo(\n () =>\n parametersToFormConfig(parameters, filters, setFilters, {\n includeLocations: [\"query\"],\n lookup: lookupQuery.data,\n components: filterShapes,\n }),\n [filters, filterShapes, 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 const trigger = (\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 );\n\n const defaultDialog = (\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 {...(filterConfig.sort\n ? {\n sort: filterConfig.sort.value,\n onSortChange: filterConfig.sort.onChange,\n }\n : {})}\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 return (\n <>\n {trigger}\n {selected && surfaceRenderer\n ? surfaceRenderer({\n surface: selected.surface,\n listOperation: selected.listOperation,\n ...(selected.detailOperation\n ? { detailOperation: selected.detailOperation }\n : {}),\n items,\n onAdd,\n onAddMany: (added) =>\n onAddMany ? onAddMany(added) : added.forEach(onAdd),\n open,\n close: () => setOpen(false),\n defaultView: defaultDialog,\n })\n : defaultDialog}\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","packLookupParameterValues","useQuery","_a","keepPreviousData","parametersToFormConfig","dataTablePaginationFromForm","useCallback","getClickyRowId","entityContextItemID","clickyRowRecord","getOperationClickyMeta","contextItemFromEntityRow","resolveSurfaceIcon","UiTable","jsx","DropdownMenu","UiAdd","Modal","jsxs","Button","CommandOutput","Fragment"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { StaticIconComponent } from '../data/Icon';
|
|
2
3
|
import { ChatContextItem } from '../data/ai/context';
|
|
3
4
|
import { ClickySurface, ResolvedOperation } from './types';
|
|
@@ -8,6 +9,20 @@ export type EntityContextSurfaceIcon = (surface: ClickySurface, listOperation: R
|
|
|
8
9
|
export type EntityContextSurfaceColor = (surface: ClickySurface, listOperation: ResolvedOperation) => string | undefined;
|
|
9
10
|
export type EntityContextGroupIcon = (group: string) => string | StaticIconComponent | undefined;
|
|
10
11
|
export type EntityContextGroupColor = (group: string) => string | undefined;
|
|
12
|
+
export type EntityContextSurfaceRenderContext = {
|
|
13
|
+
surface: ClickySurface;
|
|
14
|
+
listOperation: ResolvedOperation;
|
|
15
|
+
detailOperation?: ResolvedOperation;
|
|
16
|
+
/** Already-attached items, so a replacement can disable them. */
|
|
17
|
+
items: ChatContextItem[];
|
|
18
|
+
onAdd: (item: ChatContextItem) => void;
|
|
19
|
+
onAddMany: (items: ChatContextItem[]) => void;
|
|
20
|
+
/** True while this surface is the one chosen from the dropdown. */
|
|
21
|
+
open: boolean;
|
|
22
|
+
close: () => void;
|
|
23
|
+
defaultView: ReactNode;
|
|
24
|
+
};
|
|
25
|
+
export type EntityContextSurfaceRenderer = (ctx: EntityContextSurfaceRenderContext) => ReactNode;
|
|
11
26
|
export type OperationEntityContextPickerProps = {
|
|
12
27
|
client: OperationsApiClient;
|
|
13
28
|
items: ChatContextItem[];
|
|
@@ -22,7 +37,9 @@ export type OperationEntityContextPickerProps = {
|
|
|
22
37
|
surfaceGroupIcon?: EntityContextGroupIcon;
|
|
23
38
|
/** Icon colour for a top-level provider/group row. */
|
|
24
39
|
surfaceGroupColor?: EntityContextGroupColor;
|
|
40
|
+
/** Replaces the picker dialog for surfaces the host browses its own way. */
|
|
41
|
+
surfaceRenderer?: EntityContextSurfaceRenderer;
|
|
25
42
|
triggerLabel?: string;
|
|
26
43
|
};
|
|
27
|
-
export declare function OperationEntityContextPicker({ client, items, onAdd, onAddMany, surfaceFilter, surfaceLabel, surfaceGroup, surfaceIcon, surfaceColor, surfaceGroupIcon, surfaceGroupColor, triggerLabel, }: OperationEntityContextPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export declare function OperationEntityContextPicker({ client, items, onAdd, onAddMany, surfaceFilter, surfaceLabel, surfaceGroup, surfaceIcon, surfaceColor, surfaceGroupIcon, surfaceGroupColor, surfaceRenderer, triggerLabel, }: OperationEntityContextPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
28
45
|
//# sourceMappingURL=OperationEntityContextPicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationEntityContextPicker.d.ts","sourceRoot":"","sources":["../../src/rpc/OperationEntityContextPicker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OperationEntityContextPicker.d.ts","sourceRoot":"","sources":["../../src/rpc/OperationEntityContextPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAsB1D,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;AAa5E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,EAAE,iBAAiB,CAAC;IACjC,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,iEAAiE;IACjE,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IAC9C,mEAAmE;IACnE,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,CACzC,GAAG,EAAE,iCAAiC,KACnC,SAAS,CAAC;AAEf,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,4EAA4E;IAC5E,eAAe,CAAC,EAAE,4BAA4B,CAAC;IAC/C,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,eAAe,EACf,YAA4B,GAC7B,EAAE,iCAAiC,2CA4dnC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsxs, Fragment
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useMemo, useEffect, useCallback } from "react";
|
|
3
3
|
import { useQuery, keepPreviousData } from "@tanstack/react-query";
|
|
4
4
|
import { Button } from "../components/button.js";
|
|
@@ -25,6 +25,7 @@ function OperationEntityContextPicker({
|
|
|
25
25
|
surfaceColor,
|
|
26
26
|
surfaceGroupIcon,
|
|
27
27
|
surfaceGroupColor,
|
|
28
|
+
surfaceRenderer,
|
|
28
29
|
triggerLabel = "Add context"
|
|
29
30
|
}) {
|
|
30
31
|
var _a;
|
|
@@ -277,126 +278,138 @@ function OperationEntityContextPicker({
|
|
|
277
278
|
]);
|
|
278
279
|
const selectedCount = Object.keys(selectedRows).length;
|
|
279
280
|
const selectedLabel = selected ? (surfaceLabel == null ? void 0 : surfaceLabel(selected.surface, selected.listOperation)) ?? selected.surface.title : "records";
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
onSelect: () => {
|
|
296
|
-
}
|
|
281
|
+
const trigger = /* @__PURE__ */ jsx(
|
|
282
|
+
DropdownMenu,
|
|
283
|
+
{
|
|
284
|
+
label: triggerLabel,
|
|
285
|
+
icon: UiAdd,
|
|
286
|
+
variant: "ghost",
|
|
287
|
+
size: "sm",
|
|
288
|
+
align: "left",
|
|
289
|
+
menuLabel: "Context entity types",
|
|
290
|
+
menuClassName: "min-w-56",
|
|
291
|
+
items: menuItems.length > 0 ? menuItems : [
|
|
292
|
+
{
|
|
293
|
+
label: operationsLoading ? "Loading entity types…" : "No entity listings available",
|
|
294
|
+
disabled: true,
|
|
295
|
+
onSelect: () => {
|
|
297
296
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
type: "button",
|
|
317
|
-
variant: "outline",
|
|
318
|
-
onClick: () => setOpen(false),
|
|
319
|
-
disabled: attaching,
|
|
320
|
-
children: "Cancel"
|
|
321
|
-
}
|
|
322
|
-
),
|
|
323
|
-
/* @__PURE__ */ jsx(
|
|
324
|
-
Button,
|
|
325
|
-
{
|
|
326
|
-
type: "button",
|
|
327
|
-
onClick: () => void attachSelected(),
|
|
328
|
-
disabled: selectedCount === 0 || attaching,
|
|
329
|
-
children: attaching ? "Adding…" : selectedCount > 0 ? `Add ${selectedCount} record${selectedCount === 1 ? "" : "s"}` : "Add records"
|
|
330
|
-
}
|
|
331
|
-
)
|
|
332
|
-
] })
|
|
333
|
-
] }),
|
|
334
|
-
children: /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-4", children: [
|
|
335
|
-
surfaces.length === 0 && !operationsLoading ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No attachable entity surfaces are available." }) : null,
|
|
336
|
-
lookupQuery.error ? /* @__PURE__ */ jsx(PickerError, { error: lookupQuery.error, prefix: "Load filters" }) : null,
|
|
337
|
-
listQuery.error ? /* @__PURE__ */ jsx(PickerError, { error: listQuery.error, prefix: "Load records" }) : null,
|
|
338
|
-
attachError ? /* @__PURE__ */ jsx(PickerError, { error: attachError, prefix: "Attach record" }) : null,
|
|
339
|
-
attaching ? /* @__PURE__ */ jsx("div", { role: "status", className: "text-xs text-muted-foreground", children: "Loading full record details and adding context…" }) : null,
|
|
340
|
-
selected ? /* @__PURE__ */ jsx(
|
|
341
|
-
CommandOutput,
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
}
|
|
300
|
+
);
|
|
301
|
+
const defaultDialog = /* @__PURE__ */ jsx(
|
|
302
|
+
Modal,
|
|
303
|
+
{
|
|
304
|
+
open,
|
|
305
|
+
onClose: () => setOpen(false),
|
|
306
|
+
title: `Add ${selectedLabel} context`,
|
|
307
|
+
size: "2xl",
|
|
308
|
+
expandable: true,
|
|
309
|
+
scrollBody: false,
|
|
310
|
+
footer: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
311
|
+
/* @__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` }),
|
|
312
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
313
|
+
/* @__PURE__ */ jsx(
|
|
314
|
+
Button,
|
|
342
315
|
{
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
emptyMessage: "No matching records.",
|
|
349
|
-
ariaLabel: "Context records",
|
|
350
|
-
rowSelection: {
|
|
351
|
-
selectedRowIds: Object.keys(selectedRows),
|
|
352
|
-
// Keep selections made on other pages: reconcile the table's
|
|
353
|
-
// next id set against the rows on the current page, falling back
|
|
354
|
-
// to the already-known row for ids from previously-viewed pages.
|
|
355
|
-
onSelectionChange: (nextIds, rows) => {
|
|
356
|
-
const rowByID = new Map(
|
|
357
|
-
rows.flatMap((row) => {
|
|
358
|
-
const id = getClickyRowId(row);
|
|
359
|
-
return id ? [[id, row]] : [];
|
|
360
|
-
})
|
|
361
|
-
);
|
|
362
|
-
setSelectedRows(
|
|
363
|
-
(prev) => Object.fromEntries(
|
|
364
|
-
nextIds.flatMap((id) => {
|
|
365
|
-
const row = rowByID.get(id) ?? prev[id];
|
|
366
|
-
return row ? [[id, row]] : [];
|
|
367
|
-
})
|
|
368
|
-
)
|
|
369
|
-
);
|
|
370
|
-
},
|
|
371
|
-
getRowId: (row, index) => getClickyRowId(row) ?? `context-row-${index}`,
|
|
372
|
-
isRowSelectable: (row) => {
|
|
373
|
-
const id = getClickyRowId(row);
|
|
374
|
-
return !!id && !existingIDs.has(
|
|
375
|
-
entityContextItemID(selected.surface.key, id)
|
|
376
|
-
);
|
|
377
|
-
},
|
|
378
|
-
toggleOnRowClick: true
|
|
379
|
-
},
|
|
380
|
-
...filterConfig.search ? { search: filterConfig.search } : {},
|
|
381
|
-
...filterConfig.timeRange ? { timeRange: filterConfig.timeRange } : {},
|
|
382
|
-
...filterConfig.filters.length ? { externalFilters: filterConfig.filters } : {},
|
|
383
|
-
...pagination ? { pagination } : {},
|
|
384
|
-
...filterConfig.sort ? {
|
|
385
|
-
sort: filterConfig.sort.value,
|
|
386
|
-
onSortChange: filterConfig.sort.onChange
|
|
387
|
-
} : {}
|
|
316
|
+
type: "button",
|
|
317
|
+
variant: "outline",
|
|
318
|
+
onClick: () => setOpen(false),
|
|
319
|
+
disabled: attaching,
|
|
320
|
+
children: "Cancel"
|
|
388
321
|
}
|
|
389
|
-
)
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
322
|
+
),
|
|
323
|
+
/* @__PURE__ */ jsx(
|
|
324
|
+
Button,
|
|
325
|
+
{
|
|
326
|
+
type: "button",
|
|
327
|
+
onClick: () => void attachSelected(),
|
|
328
|
+
disabled: selectedCount === 0 || attaching,
|
|
329
|
+
children: attaching ? "Adding…" : selectedCount > 0 ? `Add ${selectedCount} record${selectedCount === 1 ? "" : "s"}` : "Add records"
|
|
330
|
+
}
|
|
331
|
+
)
|
|
397
332
|
] })
|
|
398
|
-
}
|
|
399
|
-
|
|
333
|
+
] }),
|
|
334
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-4", children: [
|
|
335
|
+
surfaces.length === 0 && !operationsLoading ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: "No attachable entity surfaces are available." }) : null,
|
|
336
|
+
lookupQuery.error ? /* @__PURE__ */ jsx(PickerError, { error: lookupQuery.error, prefix: "Load filters" }) : null,
|
|
337
|
+
listQuery.error ? /* @__PURE__ */ jsx(PickerError, { error: listQuery.error, prefix: "Load records" }) : null,
|
|
338
|
+
attachError ? /* @__PURE__ */ jsx(PickerError, { error: attachError, prefix: "Attach record" }) : null,
|
|
339
|
+
attaching ? /* @__PURE__ */ jsx("div", { role: "status", className: "text-xs text-muted-foreground", children: "Loading full record details and adding context…" }) : null,
|
|
340
|
+
selected ? /* @__PURE__ */ jsx(
|
|
341
|
+
CommandOutput,
|
|
342
|
+
{
|
|
343
|
+
bare: true,
|
|
344
|
+
className: "mt-0 flex-1",
|
|
345
|
+
response: markedListResponse ?? null,
|
|
346
|
+
loading: listQuery.isLoading || listQuery.isFetching,
|
|
347
|
+
loadingMessage: "Loading records…",
|
|
348
|
+
emptyMessage: "No matching records.",
|
|
349
|
+
ariaLabel: "Context records",
|
|
350
|
+
rowSelection: {
|
|
351
|
+
selectedRowIds: Object.keys(selectedRows),
|
|
352
|
+
// Keep selections made on other pages: reconcile the table's
|
|
353
|
+
// next id set against the rows on the current page, falling back
|
|
354
|
+
// to the already-known row for ids from previously-viewed pages.
|
|
355
|
+
onSelectionChange: (nextIds, rows) => {
|
|
356
|
+
const rowByID = new Map(
|
|
357
|
+
rows.flatMap((row) => {
|
|
358
|
+
const id = getClickyRowId(row);
|
|
359
|
+
return id ? [[id, row]] : [];
|
|
360
|
+
})
|
|
361
|
+
);
|
|
362
|
+
setSelectedRows(
|
|
363
|
+
(prev) => Object.fromEntries(
|
|
364
|
+
nextIds.flatMap((id) => {
|
|
365
|
+
const row = rowByID.get(id) ?? prev[id];
|
|
366
|
+
return row ? [[id, row]] : [];
|
|
367
|
+
})
|
|
368
|
+
)
|
|
369
|
+
);
|
|
370
|
+
},
|
|
371
|
+
getRowId: (row, index) => getClickyRowId(row) ?? `context-row-${index}`,
|
|
372
|
+
isRowSelectable: (row) => {
|
|
373
|
+
const id = getClickyRowId(row);
|
|
374
|
+
return !!id && !existingIDs.has(
|
|
375
|
+
entityContextItemID(selected.surface.key, id)
|
|
376
|
+
);
|
|
377
|
+
},
|
|
378
|
+
toggleOnRowClick: true
|
|
379
|
+
},
|
|
380
|
+
...filterConfig.search ? { search: filterConfig.search } : {},
|
|
381
|
+
...filterConfig.timeRange ? { timeRange: filterConfig.timeRange } : {},
|
|
382
|
+
...filterConfig.filters.length ? { externalFilters: filterConfig.filters } : {},
|
|
383
|
+
...pagination ? { pagination } : {},
|
|
384
|
+
...filterConfig.sort ? {
|
|
385
|
+
sort: filterConfig.sort.value,
|
|
386
|
+
onSortChange: filterConfig.sort.onChange
|
|
387
|
+
} : {}
|
|
388
|
+
}
|
|
389
|
+
) : null,
|
|
390
|
+
items.length ? /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground", children: [
|
|
391
|
+
items.length,
|
|
392
|
+
" context ",
|
|
393
|
+
items.length === 1 ? "record" : "records",
|
|
394
|
+
" ",
|
|
395
|
+
"attached. Attached rows are disabled."
|
|
396
|
+
] }) : null
|
|
397
|
+
] })
|
|
398
|
+
}
|
|
399
|
+
);
|
|
400
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
401
|
+
trigger,
|
|
402
|
+
selected && surfaceRenderer ? surfaceRenderer({
|
|
403
|
+
surface: selected.surface,
|
|
404
|
+
listOperation: selected.listOperation,
|
|
405
|
+
...selected.detailOperation ? { detailOperation: selected.detailOperation } : {},
|
|
406
|
+
items,
|
|
407
|
+
onAdd,
|
|
408
|
+
onAddMany: (added) => onAddMany ? onAddMany(added) : added.forEach(onAdd),
|
|
409
|
+
open,
|
|
410
|
+
close: () => setOpen(false),
|
|
411
|
+
defaultView: defaultDialog
|
|
412
|
+
}) : defaultDialog
|
|
400
413
|
] });
|
|
401
414
|
}
|
|
402
415
|
function parseResponseJSON(response) {
|