@flanksource/clicky-ui 0.3.26 → 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 -6
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.js +8 -6
- 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 +4 -5
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +5 -6
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs +1 -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 +1 -1
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
- package/dist/data/ai/RuntimeModePicker.cjs +25 -14
- 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 +26 -15
- 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 +37 -21
- 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 +38 -22
- 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 -45
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +54 -29
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +33 -44
- 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 +17 -5
- 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 +18 -6
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/Chat.runtime.cjs +15 -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 +16 -10
- 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 +49 -51
- 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 +51 -53
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.cjs +55 -0
- package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.d.ts +11 -3
- package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.js +55 -0
- 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 +6 -6
- package/dist/data/runtime/model-capabilities.cjs.map +1 -1
- package/dist/data/runtime/model-capabilities.d.ts +5 -1
- package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
- package/dist/data/runtime/model-capabilities.js +6 -6
- 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 +170 -111
- package/dist/data/runtime/runtime-mode.cjs.map +1 -1
- package/dist/data/runtime/runtime-mode.d.ts +58 -14
- package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
- package/dist/data/runtime/runtime-mode.js +170 -111
- 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":"PermissionsSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/PermissionsSection.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PermissionsSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/PermissionsSection.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAiB7B,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAC;AAU7C,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC,2CAQA;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,cAAc,EACd,UAAU,EACV,aAAqB,EACrB,QAAqC,GACtC,EAAE;IACD,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,cAAc,EAAE,CACd,OAAO,EAAE,mBAAmB,EAAE,EAC9B,IAAI,EAAE,kBAAkB,KACrB,IAAI,CAAC;IACV,UAAU,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC5C,kDAmBA"}
|
|
@@ -2,43 +2,22 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState, useEffect, useMemo } from "react";
|
|
3
3
|
import { SegmentedControl } from "../../../components/SegmentedControl.js";
|
|
4
4
|
import { Icon } from "../../Icon.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { activeSpecPreset, savedPresetMatches, SPEC_RUNTIME_PRESETS, SPEC_PERMISSION_PRESET_STORAGE_KEY, applySpecPreset, applyPermissionPresetSnapshot, buildPermissionPresetSnapshot } from "./presets.js";
|
|
11
|
-
import { withPermissions, withMemory } from "./update.js";
|
|
5
|
+
import { SpecInput } from "./fields.js";
|
|
6
|
+
import { PermissionPolicyList } from "./PermissionPolicyList.js";
|
|
7
|
+
import { activeSpecPreset, savedPresetMatches, SPEC_RUNTIME_PRESETS, applySpecPreset, applyPermissionPresetSnapshot, buildPermissionPresetSnapshot } from "./presets.js";
|
|
8
|
+
import { readSavedPermissionPresets, permissionPresetSlug, writeSavedPermissionPresets } from "./permission-preset-storage.js";
|
|
9
|
+
import { SUPPORT_ALL_RUNTIME_FIELDS } from "../../runtime/runtime-field-support.js";
|
|
12
10
|
import { UiLock } from "../../../icons/components/UiLock.js";
|
|
13
11
|
import { UiListDashes } from "../../../icons/components/UiListDashes.js";
|
|
14
12
|
import { UiEdit } from "../../../icons/components/UiEdit.js";
|
|
15
13
|
import { UiShield } from "../../../icons/components/UiShield.js";
|
|
16
14
|
import { UiAdd } from "../../../icons/components/UiAdd.js";
|
|
17
|
-
import { UiFile } from "../../../icons/components/UiFile.js";
|
|
18
|
-
import { UiTerminal } from "../../../icons/components/UiTerminal.js";
|
|
19
|
-
import { UiGlobe } from "../../../icons/components/UiGlobe.js";
|
|
20
|
-
import { UiPlugsConnected } from "../../../icons/components/UiPlugsConnected.js";
|
|
21
|
-
import { UiPuzzle } from "../../../icons/components/UiPuzzle.js";
|
|
22
|
-
import { UiMagicWand } from "../../../icons/components/UiMagicWand.js";
|
|
23
|
-
import { UiHardDrive } from "../../../icons/components/UiHardDrive.js";
|
|
24
|
-
import { UiGavel } from "../../../icons/components/UiGavel.js";
|
|
25
|
-
import { UiKanban } from "../../../icons/components/UiKanban.js";
|
|
26
|
-
import { UiFileText } from "../../../icons/components/UiFileText.js";
|
|
27
|
-
import { UiFilePlus } from "../../../icons/components/UiFilePlus.js";
|
|
28
15
|
const CUSTOM_PRESET_ID = "__custom";
|
|
29
16
|
const PRESET_ICONS = {
|
|
30
17
|
edit: UiEdit,
|
|
31
18
|
plan: UiListDashes,
|
|
32
19
|
readonly: UiLock
|
|
33
20
|
};
|
|
34
|
-
const POLICY_OPTIONS = {
|
|
35
|
-
auto: { id: "auto", label: "Auto", tone: "info" },
|
|
36
|
-
ask: { id: "ask", label: "Ask", tone: "warning" },
|
|
37
|
-
allow: { id: "allow", label: "Allow", tone: "success" },
|
|
38
|
-
deny: { id: "deny", label: "Deny", tone: "danger" },
|
|
39
|
-
enabled: { id: "enabled", label: "Enabled", tone: "success" },
|
|
40
|
-
disabled: { id: "disabled", label: "Disabled", tone: "neutral" }
|
|
41
|
-
};
|
|
42
21
|
function PermissionsSection({
|
|
43
22
|
value,
|
|
44
23
|
onChange,
|
|
@@ -54,81 +33,27 @@ function PermissionsSection({
|
|
|
54
33
|
);
|
|
55
34
|
}
|
|
56
35
|
function PermissionsAdvanced({
|
|
57
|
-
value,
|
|
58
|
-
onChange,
|
|
59
36
|
entries,
|
|
60
37
|
onApplyEntries,
|
|
61
|
-
onAddEntry
|
|
38
|
+
onAddEntry,
|
|
39
|
+
includeSkills = false,
|
|
40
|
+
supports = SUPPORT_ALL_RUNTIME_FIELDS
|
|
62
41
|
}) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
) }),
|
|
80
|
-
/* @__PURE__ */ jsxs("div", { className: "grid gap-density-2 sm:grid-cols-2 md:grid-cols-3", children: [
|
|
81
|
-
/* @__PURE__ */ jsx(
|
|
82
|
-
CheckboxField,
|
|
83
|
-
{
|
|
84
|
-
label: "Skip project",
|
|
85
|
-
checked: (_c = value.memory) == null ? void 0 : _c.skipProject,
|
|
86
|
-
onChange: (skipProject) => onChange(withMemory(value, { skipProject }))
|
|
87
|
-
}
|
|
88
|
-
),
|
|
89
|
-
/* @__PURE__ */ jsx(
|
|
90
|
-
CheckboxField,
|
|
91
|
-
{
|
|
92
|
-
label: "Skip user",
|
|
93
|
-
checked: (_d = value.memory) == null ? void 0 : _d.skipUser,
|
|
94
|
-
onChange: (skipUser) => onChange(withMemory(value, { skipUser }))
|
|
95
|
-
}
|
|
96
|
-
),
|
|
97
|
-
/* @__PURE__ */ jsx(
|
|
98
|
-
CheckboxField,
|
|
99
|
-
{
|
|
100
|
-
label: "Skip hooks",
|
|
101
|
-
checked: (_e = value.memory) == null ? void 0 : _e.skipHooks,
|
|
102
|
-
onChange: (skipHooks) => onChange(withMemory(value, { skipHooks }))
|
|
103
|
-
}
|
|
104
|
-
),
|
|
105
|
-
/* @__PURE__ */ jsx(
|
|
106
|
-
CheckboxField,
|
|
107
|
-
{
|
|
108
|
-
label: "Skip memory",
|
|
109
|
-
checked: (_f = value.memory) == null ? void 0 : _f.skipMemory,
|
|
110
|
-
onChange: (skipMemory) => onChange(withMemory(value, { skipMemory }))
|
|
111
|
-
}
|
|
112
|
-
),
|
|
113
|
-
/* @__PURE__ */ jsx(
|
|
114
|
-
CheckboxField,
|
|
115
|
-
{
|
|
116
|
-
label: "Bare",
|
|
117
|
-
checked: (_g = value.memory) == null ? void 0 : _g.bare,
|
|
118
|
-
onChange: (bare) => onChange(withMemory(value, { bare }))
|
|
119
|
-
}
|
|
120
|
-
)
|
|
121
|
-
] }),
|
|
122
|
-
/* @__PURE__ */ jsx(
|
|
123
|
-
PermissionPolicyList,
|
|
124
|
-
{
|
|
125
|
-
entries,
|
|
126
|
-
emptyLabel: "No tools, MCP servers, plugins, or skills configured",
|
|
127
|
-
onApply: onApplyEntries,
|
|
128
|
-
onAdd: onAddEntry
|
|
129
|
-
}
|
|
130
|
-
)
|
|
131
|
-
] });
|
|
42
|
+
const domains = ["tools", "mcp", "plugins"];
|
|
43
|
+
if (includeSkills) domains.push("skills");
|
|
44
|
+
const supportedDomains = domains.filter(
|
|
45
|
+
(domain) => supports(`permissions.${domain}`)
|
|
46
|
+
);
|
|
47
|
+
return supportedDomains.length > 0 ? /* @__PURE__ */ jsx(
|
|
48
|
+
PermissionPolicyList,
|
|
49
|
+
{
|
|
50
|
+
entries,
|
|
51
|
+
supportedDomains,
|
|
52
|
+
emptyLabel: includeSkills ? "No tools, MCP servers, plugins, or skills configured" : "No tools, MCP servers, or plugins configured",
|
|
53
|
+
onApply: onApplyEntries,
|
|
54
|
+
onAdd: onAddEntry
|
|
55
|
+
}
|
|
56
|
+
) : null;
|
|
132
57
|
}
|
|
133
58
|
function PermissionPresetSelector({
|
|
134
59
|
value,
|
|
@@ -187,7 +112,7 @@ function PermissionPresetSelector({
|
|
|
187
112
|
const next = [
|
|
188
113
|
...savedPresets.filter((preset) => preset.label !== label),
|
|
189
114
|
{
|
|
190
|
-
id: `local:${
|
|
115
|
+
id: `local:${permissionPresetSlug(label)}:${Date.now().toString(36)}`,
|
|
191
116
|
label,
|
|
192
117
|
snapshot,
|
|
193
118
|
updatedAt: now
|
|
@@ -248,7 +173,7 @@ function PermissionPresetSelector({
|
|
|
248
173
|
className: "inline-flex h-control-h items-center justify-center gap-1 rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
249
174
|
children: [
|
|
250
175
|
/* @__PURE__ */ jsx(Icon, { icon: UiAdd, className: "size-3.5" }),
|
|
251
|
-
"Save"
|
|
176
|
+
"Save preset"
|
|
252
177
|
]
|
|
253
178
|
}
|
|
254
179
|
),
|
|
@@ -275,148 +200,9 @@ function PermissionPresetSelector({
|
|
|
275
200
|
] })
|
|
276
201
|
] });
|
|
277
202
|
}
|
|
278
|
-
function PermissionPolicyList({
|
|
279
|
-
entries,
|
|
280
|
-
emptyLabel,
|
|
281
|
-
onApply,
|
|
282
|
-
onAdd
|
|
283
|
-
}) {
|
|
284
|
-
const [addDomain, setAddDomain] = useState("tools");
|
|
285
|
-
const [addValue, setAddValue] = useState("");
|
|
286
|
-
const policyEntries = useMemo(
|
|
287
|
-
() => entries.map(permissionPolicyEntry),
|
|
288
|
-
[entries]
|
|
289
|
-
);
|
|
290
|
-
const submitAdd = () => {
|
|
291
|
-
onAdd(addDomain, addValue);
|
|
292
|
-
setAddValue("");
|
|
293
|
-
};
|
|
294
|
-
return /* @__PURE__ */ jsx(
|
|
295
|
-
PolicyTree,
|
|
296
|
-
{
|
|
297
|
-
entries: policyEntries,
|
|
298
|
-
emptyLabel,
|
|
299
|
-
onEntryModeChange: (entry, mode) => onApply([entry.data], mode),
|
|
300
|
-
onGroupModeChange: (groupEntries, mode) => onApply(
|
|
301
|
-
groupEntries.map((entry) => entry.data),
|
|
302
|
-
mode
|
|
303
|
-
),
|
|
304
|
-
groupIcon: permissionGroupIcon,
|
|
305
|
-
footer: /* @__PURE__ */ jsxs("div", { className: "grid gap-density-2 sm:grid-cols-[8rem_minmax(0,1fr)_auto]", children: [
|
|
306
|
-
/* @__PURE__ */ jsx(
|
|
307
|
-
SpecSelect,
|
|
308
|
-
{
|
|
309
|
-
ariaLabel: "Permission kind",
|
|
310
|
-
value: addDomain,
|
|
311
|
-
onChange: (domain) => setAddDomain(domain),
|
|
312
|
-
options: [
|
|
313
|
-
{ value: "tools", label: "Tool" },
|
|
314
|
-
{ value: "mcp", label: "MCP" },
|
|
315
|
-
{ value: "plugins", label: "Plugin" },
|
|
316
|
-
{ value: "skills", label: "Skill" }
|
|
317
|
-
]
|
|
318
|
-
}
|
|
319
|
-
),
|
|
320
|
-
/* @__PURE__ */ jsx(
|
|
321
|
-
SpecInput,
|
|
322
|
-
{
|
|
323
|
-
value: addValue,
|
|
324
|
-
onChange: setAddValue,
|
|
325
|
-
placeholder: permissionAddPlaceholder(addDomain),
|
|
326
|
-
ariaLabel: "Permission identifier"
|
|
327
|
-
}
|
|
328
|
-
),
|
|
329
|
-
/* @__PURE__ */ jsxs(
|
|
330
|
-
"button",
|
|
331
|
-
{
|
|
332
|
-
type: "button",
|
|
333
|
-
onClick: submitAdd,
|
|
334
|
-
className: "inline-flex h-control-h items-center justify-center gap-1 rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground",
|
|
335
|
-
children: [
|
|
336
|
-
/* @__PURE__ */ jsx(Icon, { icon: UiAdd, className: "size-3.5" }),
|
|
337
|
-
"Add"
|
|
338
|
-
]
|
|
339
|
-
}
|
|
340
|
-
)
|
|
341
|
-
] })
|
|
342
|
-
}
|
|
343
|
-
);
|
|
344
|
-
}
|
|
345
|
-
function permissionPolicyEntry(entry) {
|
|
346
|
-
const out = {
|
|
347
|
-
id: `${entry.domain}:${entry.id}`,
|
|
348
|
-
label: entry.label,
|
|
349
|
-
group: entry.group,
|
|
350
|
-
mode: entry.mode,
|
|
351
|
-
options: entryModeOptions(entry).map((mode) => POLICY_OPTIONS[mode]),
|
|
352
|
-
data: entry,
|
|
353
|
-
icon: permissionEntryIcon(entry)
|
|
354
|
-
};
|
|
355
|
-
if (entry.description) out.description = entry.description;
|
|
356
|
-
if (entry.source) out.source = entry.source;
|
|
357
|
-
if (entry.sourcePath) out.sourcePath = entry.sourcePath;
|
|
358
|
-
return out;
|
|
359
|
-
}
|
|
360
|
-
function permissionEntryIcon(entry) {
|
|
361
|
-
if (entry.domain === "mcp") {
|
|
362
|
-
const id2 = entry.id.toLowerCase();
|
|
363
|
-
if (id2.includes("filesystem") || id2.includes("file")) return UiHardDrive;
|
|
364
|
-
if (id2.includes("gavel")) return UiGavel;
|
|
365
|
-
if (id2 === "ado" || id2.includes("kanban")) return UiKanban;
|
|
366
|
-
return UiPlugsConnected;
|
|
367
|
-
}
|
|
368
|
-
if (entry.domain === "plugins") return UiPuzzle;
|
|
369
|
-
if (entry.domain === "skills") return UiMagicWand;
|
|
370
|
-
const id = entry.id.toLowerCase();
|
|
371
|
-
if (id === "read" || id.includes("read")) return UiFileText;
|
|
372
|
-
if (id === "edit" || id.includes("edit")) return UiEdit;
|
|
373
|
-
if (id === "write" || id.includes("write")) return UiFilePlus;
|
|
374
|
-
if (id.includes("bash") || id.includes("shell")) return UiTerminal;
|
|
375
|
-
if (id.includes("web")) return UiGlobe;
|
|
376
|
-
return UiFile;
|
|
377
|
-
}
|
|
378
|
-
function permissionGroupIcon(group, entries) {
|
|
379
|
-
const normalized = group.toLowerCase();
|
|
380
|
-
if (normalized.includes("file")) return UiFile;
|
|
381
|
-
if (normalized.includes("shell")) return UiTerminal;
|
|
382
|
-
if (normalized.includes("web")) return UiGlobe;
|
|
383
|
-
if (normalized.includes("mcp")) return UiPlugsConnected;
|
|
384
|
-
if (normalized.includes("plugin")) return UiPuzzle;
|
|
385
|
-
if (normalized.includes("skill")) return UiMagicWand;
|
|
386
|
-
const first = entries[0];
|
|
387
|
-
return first ? permissionEntryIcon(first.data) : UiShield;
|
|
388
|
-
}
|
|
389
|
-
function readSavedPermissionPresets() {
|
|
390
|
-
if (typeof window === "undefined") return [];
|
|
391
|
-
try {
|
|
392
|
-
const raw = window.localStorage.getItem(SPEC_PERMISSION_PRESET_STORAGE_KEY);
|
|
393
|
-
if (!raw) return [];
|
|
394
|
-
const parsed = JSON.parse(raw);
|
|
395
|
-
if (!Array.isArray(parsed)) return [];
|
|
396
|
-
return parsed.filter(isSavedPermissionPreset);
|
|
397
|
-
} catch {
|
|
398
|
-
return [];
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
function writeSavedPermissionPresets(presets) {
|
|
402
|
-
if (typeof window === "undefined") return;
|
|
403
|
-
window.localStorage.setItem(
|
|
404
|
-
SPEC_PERMISSION_PRESET_STORAGE_KEY,
|
|
405
|
-
JSON.stringify(presets)
|
|
406
|
-
);
|
|
407
|
-
}
|
|
408
|
-
function isSavedPermissionPreset(value) {
|
|
409
|
-
if (!value || typeof value !== "object") return false;
|
|
410
|
-
const item = value;
|
|
411
|
-
return typeof item.id === "string" && typeof item.label === "string" && typeof item.updatedAt === "string" && !!item.snapshot && typeof item.snapshot === "object" && !!item.snapshot.permissions;
|
|
412
|
-
}
|
|
413
203
|
function isBuiltInPresetId(id) {
|
|
414
204
|
return id === "edit" || id === "plan" || id === "readonly";
|
|
415
205
|
}
|
|
416
|
-
function slugify(value) {
|
|
417
|
-
const slug = value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
418
|
-
return slug || "preset";
|
|
419
|
-
}
|
|
420
206
|
export {
|
|
421
207
|
PermissionsAdvanced,
|
|
422
208
|
PermissionsSection
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionsSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/PermissionsSection.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { SegmentedControl, type SegmentedOption } from \"../../../components\";\nimport { Icon, type StaticIconComponent } from \"../../Icon\";\nimport {\n UiAdd,\n UiEdit,\n UiFile,\n UiFilePlus,\n UiFileText,\n UiGavel,\n UiGlobe,\n UiHardDrive,\n UiKanban,\n UiListDashes,\n UiLock,\n UiMagicWand,\n UiPlugsConnected,\n UiPuzzle,\n UiShield,\n UiTerminal,\n} from \"../../../icons\";\nimport {\n SPEC_PERMISSION_MODES,\n type AISpecRuntimeValue,\n type SpecPermissionMode,\n} from \"../SpecRuntimeEditor.model\";\nimport { PERMISSION_MODE_ICONS } from \"../agent-action-icons\";\nimport {\n PolicyTree,\n type PolicyOption,\n type PolicyTreeEntry,\n} from \"../PolicyTree\";\nimport { CheckboxField, SpecField, SpecInput, SpecSelect } from \"./fields\";\nimport {\n entryModeOptions,\n permissionAddPlaceholder,\n type PermissionDomain,\n type PermissionListEntry,\n type PermissionListMode,\n} from \"./permissions-model\";\nimport {\n SPEC_PERMISSION_PRESET_STORAGE_KEY,\n SPEC_RUNTIME_PRESETS,\n activeSpecPreset,\n applyPermissionPresetSnapshot,\n applySpecPreset,\n buildPermissionPresetSnapshot,\n savedPresetMatches,\n type SavedPermissionPreset,\n type SpecRuntimePresetId,\n} from \"./presets\";\nimport { withMemory, withPermissions } from \"./update\";\n\nconst CUSTOM_PRESET_ID = \"__custom\";\n\nconst PRESET_ICONS: Record<SpecRuntimePresetId, StaticIconComponent> = {\n edit: UiEdit,\n plan: UiListDashes,\n readonly: UiLock,\n};\n\nconst POLICY_OPTIONS: Record<\n PermissionListMode,\n PolicyOption<PermissionListMode>\n> = {\n auto: { id: \"auto\", label: \"Auto\", tone: \"info\" },\n ask: { id: \"ask\", label: \"Ask\", tone: \"warning\" },\n allow: { id: \"allow\", label: \"Allow\", tone: \"success\" },\n deny: { id: \"deny\", label: \"Deny\", tone: \"danger\" },\n enabled: { id: \"enabled\", label: \"Enabled\", tone: \"success\" },\n disabled: { id: \"disabled\", label: \"Disabled\", tone: \"neutral\" },\n};\n\nexport function PermissionsSection({\n value,\n onChange,\n entries,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n entries: PermissionListEntry[];\n onApplyEntries: (\n entries: PermissionListEntry[],\n mode: PermissionListMode,\n ) => void;\n onAddEntry: (domain: PermissionDomain, id: string) => void;\n}) {\n return (\n <PermissionPresetSelector\n value={value}\n entries={entries}\n onChange={onChange}\n />\n );\n}\n\nexport function PermissionsAdvanced({\n value,\n onChange,\n entries,\n onApplyEntries,\n onAddEntry,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n entries: PermissionListEntry[];\n onApplyEntries: (\n entries: PermissionListEntry[],\n mode: PermissionListMode,\n ) => void;\n onAddEntry: (domain: PermissionDomain, id: string) => void;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Mode\" composite>\n <SpecSelect\n ariaLabel=\"Permission mode\"\n icon={\n PERMISSION_MODE_ICONS[value.permissions?.mode || \"default\"].icon\n }\n value={value.permissions?.mode || \"default\"}\n onChange={(mode) =>\n onChange(\n withPermissions(value, { mode: mode as SpecPermissionMode }),\n )\n }\n options={SPEC_PERMISSION_MODES.map((mode) => ({\n value: mode,\n label: mode,\n }))}\n />\n </SpecField>\n <div className=\"grid gap-density-2 sm:grid-cols-2 md:grid-cols-3\">\n <CheckboxField\n label=\"Skip project\"\n checked={value.memory?.skipProject}\n onChange={(skipProject) =>\n onChange(withMemory(value, { skipProject }))\n }\n />\n <CheckboxField\n label=\"Skip user\"\n checked={value.memory?.skipUser}\n onChange={(skipUser) => onChange(withMemory(value, { skipUser }))}\n />\n <CheckboxField\n label=\"Skip hooks\"\n checked={value.memory?.skipHooks}\n onChange={(skipHooks) => onChange(withMemory(value, { skipHooks }))}\n />\n <CheckboxField\n label=\"Skip memory\"\n checked={value.memory?.skipMemory}\n onChange={(skipMemory) => onChange(withMemory(value, { skipMemory }))}\n />\n <CheckboxField\n label=\"Bare\"\n checked={value.memory?.bare}\n onChange={(bare) => onChange(withMemory(value, { bare }))}\n />\n </div>\n <PermissionPolicyList\n entries={entries}\n emptyLabel=\"No tools, MCP servers, plugins, or skills configured\"\n onApply={onApplyEntries}\n onAdd={onAddEntry}\n />\n </div>\n );\n}\n\nfunction PermissionPresetSelector({\n value,\n entries,\n onChange,\n}: {\n value: AISpecRuntimeValue;\n entries: PermissionListEntry[];\n onChange: (value: AISpecRuntimeValue) => void;\n}) {\n const [savedPresets, setSavedPresets] = useState<SavedPermissionPreset[]>([]);\n const [presetName, setPresetName] = useState(\"\");\n\n useEffect(() => {\n setSavedPresets(readSavedPermissionPresets());\n }, []);\n\n const activeBuiltIn = activeSpecPreset(value, entries);\n const activeSaved = savedPresets.find((preset) =>\n savedPresetMatches(value, entries, preset),\n );\n const activeId = activeBuiltIn ?? activeSaved?.id ?? CUSTOM_PRESET_ID;\n\n const options = useMemo(() => {\n const builtIns: SegmentedOption<string>[] = SPEC_RUNTIME_PRESETS.map(\n (preset) => ({\n id: preset.id,\n label: preset.label,\n description: preset.description,\n icon: PRESET_ICONS[preset.id],\n }),\n );\n const saved: SegmentedOption<string>[] = savedPresets.map((preset) => ({\n id: preset.id,\n label: preset.label,\n description: \"Saved\",\n icon: UiShield,\n }));\n const custom: SegmentedOption<string>[] =\n activeId === CUSTOM_PRESET_ID\n ? [\n {\n id: CUSTOM_PRESET_ID,\n label: \"Custom\",\n description: \"Manual tree\",\n icon: UiShield,\n },\n ]\n : [];\n return [...builtIns, ...saved, ...custom];\n }, [activeId, savedPresets]);\n\n const applyPreset = (id: string) => {\n if (id === CUSTOM_PRESET_ID) return;\n if (isBuiltInPresetId(id)) {\n onChange(applySpecPreset(value, id, entries));\n return;\n }\n const saved = savedPresets.find((preset) => preset.id === id);\n if (saved) onChange(applyPermissionPresetSnapshot(value, saved.snapshot));\n };\n\n const savePreset = () => {\n const label = presetName.trim();\n if (!label) return;\n const snapshot = buildPermissionPresetSnapshot(value, entries);\n const now = new Date().toISOString();\n const next: SavedPermissionPreset[] = [\n ...savedPresets.filter((preset) => preset.label !== label),\n {\n id: `local:${slugify(label)}:${Date.now().toString(36)}`,\n label,\n snapshot,\n updatedAt: now,\n },\n ];\n writeSavedPermissionPresets(next);\n setSavedPresets(next);\n setPresetName(\"\");\n };\n\n const updateActiveSaved = () => {\n if (!activeSaved) return;\n const next = savedPresets.map((preset) =>\n preset.id === activeSaved.id\n ? {\n ...preset,\n snapshot: buildPermissionPresetSnapshot(value, entries),\n updatedAt: new Date().toISOString(),\n }\n : preset,\n );\n writeSavedPermissionPresets(next);\n setSavedPresets(next);\n };\n\n const deleteActiveSaved = () => {\n if (!activeSaved) return;\n const next = savedPresets.filter((preset) => preset.id !== activeSaved.id);\n writeSavedPermissionPresets(next);\n setSavedPresets(next);\n };\n\n return (\n <div className=\"grid gap-density-3\">\n <SegmentedControl\n aria-label=\"Permission preset\"\n value={activeId}\n options={options}\n onChange={applyPreset}\n size=\"lg\"\n wrap\n className=\"w-full\"\n />\n <div className=\"grid gap-density-2 sm:grid-cols-[minmax(0,1fr)_auto_auto]\">\n <SpecInput\n value={presetName}\n onChange={setPresetName}\n placeholder=\"Preset name\"\n ariaLabel=\"Permission preset name\"\n icon={UiShield}\n />\n <button\n type=\"button\"\n onClick={savePreset}\n disabled={!presetName.trim()}\n className=\"inline-flex h-control-h items-center justify-center gap-1 rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <Icon icon={UiAdd} className=\"size-3.5\" />\n Save\n </button>\n {activeSaved && (\n <span className=\"inline-flex gap-density-2\">\n <button\n type=\"button\"\n onClick={updateActiveSaved}\n className=\"inline-flex h-control-h items-center justify-center rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n Update\n </button>\n <button\n type=\"button\"\n onClick={deleteActiveSaved}\n className=\"inline-flex h-control-h items-center justify-center rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n Delete\n </button>\n </span>\n )}\n </div>\n </div>\n );\n}\n\nfunction PermissionPolicyList({\n entries,\n emptyLabel,\n onApply,\n onAdd,\n}: {\n entries: PermissionListEntry[];\n emptyLabel: string;\n onApply: (entries: PermissionListEntry[], mode: PermissionListMode) => void;\n onAdd: (domain: PermissionDomain, id: string) => void;\n}) {\n const [addDomain, setAddDomain] = useState<PermissionDomain>(\"tools\");\n const [addValue, setAddValue] = useState(\"\");\n const policyEntries = useMemo(\n () => entries.map(permissionPolicyEntry),\n [entries],\n );\n const submitAdd = () => {\n onAdd(addDomain, addValue);\n setAddValue(\"\");\n };\n\n return (\n <PolicyTree\n entries={policyEntries}\n emptyLabel={emptyLabel}\n onEntryModeChange={(entry, mode) => onApply([entry.data], mode)}\n onGroupModeChange={(groupEntries, mode) =>\n onApply(\n groupEntries.map((entry) => entry.data),\n mode,\n )\n }\n groupIcon={permissionGroupIcon}\n footer={\n <div className=\"grid gap-density-2 sm:grid-cols-[8rem_minmax(0,1fr)_auto]\">\n <SpecSelect\n ariaLabel=\"Permission kind\"\n value={addDomain}\n onChange={(domain) => setAddDomain(domain as PermissionDomain)}\n options={[\n { value: \"tools\", label: \"Tool\" },\n { value: \"mcp\", label: \"MCP\" },\n { value: \"plugins\", label: \"Plugin\" },\n { value: \"skills\", label: \"Skill\" },\n ]}\n />\n <SpecInput\n value={addValue}\n onChange={setAddValue}\n placeholder={permissionAddPlaceholder(addDomain)}\n ariaLabel=\"Permission identifier\"\n />\n <button\n type=\"button\"\n onClick={submitAdd}\n className=\"inline-flex h-control-h items-center justify-center gap-1 rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={UiAdd} className=\"size-3.5\" />\n Add\n </button>\n </div>\n }\n />\n );\n}\n\nfunction permissionPolicyEntry(\n entry: PermissionListEntry,\n): PolicyTreeEntry<PermissionListMode, PermissionListEntry> {\n const out: PolicyTreeEntry<PermissionListMode, PermissionListEntry> = {\n id: `${entry.domain}:${entry.id}`,\n label: entry.label,\n group: entry.group,\n mode: entry.mode,\n options: entryModeOptions(entry).map((mode) => POLICY_OPTIONS[mode]),\n data: entry,\n icon: permissionEntryIcon(entry),\n };\n if (entry.description) out.description = entry.description;\n if (entry.source) out.source = entry.source;\n if (entry.sourcePath) out.sourcePath = entry.sourcePath;\n return out;\n}\n\nfunction permissionEntryIcon(entry: PermissionListEntry): StaticIconComponent {\n if (entry.domain === \"mcp\") {\n const id = entry.id.toLowerCase();\n if (id.includes(\"filesystem\") || id.includes(\"file\")) return UiHardDrive;\n if (id.includes(\"gavel\")) return UiGavel;\n if (id === \"ado\" || id.includes(\"kanban\")) return UiKanban;\n return UiPlugsConnected;\n }\n if (entry.domain === \"plugins\") return UiPuzzle;\n if (entry.domain === \"skills\") return UiMagicWand;\n\n const id = entry.id.toLowerCase();\n if (id === \"read\" || id.includes(\"read\")) return UiFileText;\n if (id === \"edit\" || id.includes(\"edit\")) return UiEdit;\n if (id === \"write\" || id.includes(\"write\")) return UiFilePlus;\n if (id.includes(\"bash\") || id.includes(\"shell\")) return UiTerminal;\n if (id.includes(\"web\")) return UiGlobe;\n return UiFile;\n}\n\nfunction permissionGroupIcon(\n group: string,\n entries: PolicyTreeEntry<PermissionListMode, PermissionListEntry>[],\n): StaticIconComponent {\n const normalized = group.toLowerCase();\n if (normalized.includes(\"file\")) return UiFile;\n if (normalized.includes(\"shell\")) return UiTerminal;\n if (normalized.includes(\"web\")) return UiGlobe;\n if (normalized.includes(\"mcp\")) return UiPlugsConnected;\n if (normalized.includes(\"plugin\")) return UiPuzzle;\n if (normalized.includes(\"skill\")) return UiMagicWand;\n const first = entries[0];\n return first ? permissionEntryIcon(first.data) : UiShield;\n}\n\nfunction readSavedPermissionPresets(): SavedPermissionPreset[] {\n if (typeof window === \"undefined\") return [];\n try {\n const raw = window.localStorage.getItem(SPEC_PERMISSION_PRESET_STORAGE_KEY);\n if (!raw) return [];\n const parsed = JSON.parse(raw);\n if (!Array.isArray(parsed)) return [];\n return parsed.filter(isSavedPermissionPreset);\n } catch {\n return [];\n }\n}\n\nfunction writeSavedPermissionPresets(presets: SavedPermissionPreset[]) {\n if (typeof window === \"undefined\") return;\n window.localStorage.setItem(\n SPEC_PERMISSION_PRESET_STORAGE_KEY,\n JSON.stringify(presets),\n );\n}\n\nfunction isSavedPermissionPreset(\n value: unknown,\n): value is SavedPermissionPreset {\n if (!value || typeof value !== \"object\") return false;\n const item = value as Partial<SavedPermissionPreset>;\n return (\n typeof item.id === \"string\" &&\n typeof item.label === \"string\" &&\n typeof item.updatedAt === \"string\" &&\n !!item.snapshot &&\n typeof item.snapshot === \"object\" &&\n !!item.snapshot.permissions\n );\n}\n\nfunction isBuiltInPresetId(id: string): id is SpecRuntimePresetId {\n return id === \"edit\" || id === \"plan\" || id === \"readonly\";\n}\n\nfunction slugify(value: string) {\n const slug = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n return slug || \"preset\";\n}\n"],"names":["id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PermissionsSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/PermissionsSection.tsx"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { SegmentedControl, type SegmentedOption } from \"../../../components\";\nimport { Icon, type StaticIconComponent } from \"../../Icon\";\nimport { UiAdd, UiEdit, UiListDashes, UiLock, UiShield } from \"../../../icons\";\nimport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nimport { SpecInput } from \"./fields\";\nimport {\n type PermissionDomain,\n type PermissionListEntry,\n type PermissionListMode,\n} from \"./permissions-model\";\nimport { PermissionPolicyList } from \"./PermissionPolicyList\";\nimport {\n SPEC_RUNTIME_PRESETS,\n activeSpecPreset,\n applyPermissionPresetSnapshot,\n applySpecPreset,\n buildPermissionPresetSnapshot,\n savedPresetMatches,\n type SavedPermissionPreset,\n type SpecRuntimePresetId,\n} from \"./presets\";\nimport {\n permissionPresetSlug,\n readSavedPermissionPresets,\n writeSavedPermissionPresets,\n} from \"./permission-preset-storage\";\nimport {\n SUPPORT_ALL_RUNTIME_FIELDS,\n type RuntimeFieldSupport,\n} from \"../../runtime/runtime-field-support\";\n\nconst CUSTOM_PRESET_ID = \"__custom\";\n\nconst PRESET_ICONS: Record<SpecRuntimePresetId, StaticIconComponent> = {\n edit: UiEdit,\n plan: UiListDashes,\n readonly: UiLock,\n};\n\nexport function PermissionsSection({\n value,\n onChange,\n entries,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n entries: PermissionListEntry[];\n}) {\n return (\n <PermissionPresetSelector\n value={value}\n entries={entries}\n onChange={onChange}\n />\n );\n}\n\nexport function PermissionsAdvanced({\n entries,\n onApplyEntries,\n onAddEntry,\n includeSkills = false,\n supports = SUPPORT_ALL_RUNTIME_FIELDS,\n}: {\n entries: PermissionListEntry[];\n onApplyEntries: (\n entries: PermissionListEntry[],\n mode: PermissionListMode,\n ) => void;\n onAddEntry: (domain: PermissionDomain, id: string) => void;\n includeSkills?: boolean | undefined;\n supports?: RuntimeFieldSupport | undefined;\n}) {\n const domains: PermissionDomain[] = [\"tools\", \"mcp\", \"plugins\"];\n if (includeSkills) domains.push(\"skills\");\n const supportedDomains = domains.filter((domain) =>\n supports(`permissions.${domain}`),\n );\n return supportedDomains.length > 0 ? (\n <PermissionPolicyList\n entries={entries}\n supportedDomains={supportedDomains}\n emptyLabel={\n includeSkills\n ? \"No tools, MCP servers, plugins, or skills configured\"\n : \"No tools, MCP servers, or plugins configured\"\n }\n onApply={onApplyEntries}\n onAdd={onAddEntry}\n />\n ) : null;\n}\n\nfunction PermissionPresetSelector({\n value,\n entries,\n onChange,\n}: {\n value: AISpecRuntimeValue;\n entries: PermissionListEntry[];\n onChange: (value: AISpecRuntimeValue) => void;\n}) {\n const [savedPresets, setSavedPresets] = useState<SavedPermissionPreset[]>([]);\n const [presetName, setPresetName] = useState(\"\");\n\n useEffect(() => {\n setSavedPresets(readSavedPermissionPresets());\n }, []);\n\n const activeBuiltIn = activeSpecPreset(value, entries);\n const activeSaved = savedPresets.find((preset) =>\n savedPresetMatches(value, entries, preset),\n );\n const activeId = activeBuiltIn ?? activeSaved?.id ?? CUSTOM_PRESET_ID;\n\n const options = useMemo(() => {\n const builtIns: SegmentedOption<string>[] = SPEC_RUNTIME_PRESETS.map(\n (preset) => ({\n id: preset.id,\n label: preset.label,\n description: preset.description,\n icon: PRESET_ICONS[preset.id],\n }),\n );\n const saved: SegmentedOption<string>[] = savedPresets.map((preset) => ({\n id: preset.id,\n label: preset.label,\n description: \"Saved\",\n icon: UiShield,\n }));\n const custom: SegmentedOption<string>[] =\n activeId === CUSTOM_PRESET_ID\n ? [\n {\n id: CUSTOM_PRESET_ID,\n label: \"Custom\",\n description: \"Manual tree\",\n icon: UiShield,\n },\n ]\n : [];\n return [...builtIns, ...saved, ...custom];\n }, [activeId, savedPresets]);\n\n const applyPreset = (id: string) => {\n if (id === CUSTOM_PRESET_ID) return;\n if (isBuiltInPresetId(id)) {\n onChange(applySpecPreset(value, id, entries));\n return;\n }\n const saved = savedPresets.find((preset) => preset.id === id);\n if (saved) onChange(applyPermissionPresetSnapshot(value, saved.snapshot));\n };\n\n const savePreset = () => {\n const label = presetName.trim();\n if (!label) return;\n const snapshot = buildPermissionPresetSnapshot(value, entries);\n const now = new Date().toISOString();\n const next: SavedPermissionPreset[] = [\n ...savedPresets.filter((preset) => preset.label !== label),\n {\n id: `local:${permissionPresetSlug(label)}:${Date.now().toString(36)}`,\n label,\n snapshot,\n updatedAt: now,\n },\n ];\n writeSavedPermissionPresets(next);\n setSavedPresets(next);\n setPresetName(\"\");\n };\n\n const updateActiveSaved = () => {\n if (!activeSaved) return;\n const next = savedPresets.map((preset) =>\n preset.id === activeSaved.id\n ? {\n ...preset,\n snapshot: buildPermissionPresetSnapshot(value, entries),\n updatedAt: new Date().toISOString(),\n }\n : preset,\n );\n writeSavedPermissionPresets(next);\n setSavedPresets(next);\n };\n\n const deleteActiveSaved = () => {\n if (!activeSaved) return;\n const next = savedPresets.filter((preset) => preset.id !== activeSaved.id);\n writeSavedPermissionPresets(next);\n setSavedPresets(next);\n };\n\n return (\n <div className=\"grid gap-density-3\">\n <SegmentedControl\n aria-label=\"Permission preset\"\n value={activeId}\n options={options}\n onChange={applyPreset}\n size=\"lg\"\n wrap\n className=\"w-full\"\n />\n <div className=\"grid gap-density-2 sm:grid-cols-[minmax(0,1fr)_auto_auto]\">\n <SpecInput\n value={presetName}\n onChange={setPresetName}\n placeholder=\"Preset name\"\n ariaLabel=\"Permission preset name\"\n icon={UiShield}\n />\n <button\n type=\"button\"\n onClick={savePreset}\n disabled={!presetName.trim()}\n className=\"inline-flex h-control-h items-center justify-center gap-1 rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50\"\n >\n <Icon icon={UiAdd} className=\"size-3.5\" />\n Save preset\n </button>\n {activeSaved && (\n <span className=\"inline-flex gap-density-2\">\n <button\n type=\"button\"\n onClick={updateActiveSaved}\n className=\"inline-flex h-control-h items-center justify-center rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n Update\n </button>\n <button\n type=\"button\"\n onClick={deleteActiveSaved}\n className=\"inline-flex h-control-h items-center justify-center rounded-md border border-border bg-background px-density-3 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n Delete\n </button>\n </span>\n )}\n </div>\n </div>\n );\n}\n\nfunction isBuiltInPresetId(id: string): id is SpecRuntimePresetId {\n return id === \"edit\" || id === \"plan\" || id === \"readonly\";\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ const SegmentedControl = require("../../../components/SegmentedControl.cjs");
|
|
|
5
5
|
const SpecRuntimeEditor_model = require("../SpecRuntimeEditor.model.cjs");
|
|
6
6
|
const fields = require("./fields.cjs");
|
|
7
7
|
const update = require("./update.cjs");
|
|
8
|
+
const runtimeFieldSupport = require("../../runtime/runtime-field-support.cjs");
|
|
8
9
|
const UiUser = require("../../../icons/components/UiUser.cjs");
|
|
9
10
|
const UiGearSix = require("../../../icons/components/UiGearSix.cjs");
|
|
10
11
|
const UiAdd = require("../../../icons/components/UiAdd.cjs");
|
|
@@ -18,35 +19,47 @@ const SCHEMA_STRICTNESS_OPTIONS = [
|
|
|
18
19
|
];
|
|
19
20
|
function PromptSection({
|
|
20
21
|
value,
|
|
21
|
-
onChange
|
|
22
|
+
onChange,
|
|
23
|
+
supports = runtimeFieldSupport.SUPPORT_ALL_RUNTIME_FIELDS,
|
|
24
|
+
variant = "runtime"
|
|
22
25
|
}) {
|
|
23
|
-
var _a, _b, _c;
|
|
26
|
+
var _a, _b, _c, _d;
|
|
24
27
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-density-2", children: [
|
|
25
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28
|
+
variant === "document" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
+
fields.TextareaField,
|
|
30
|
+
{
|
|
31
|
+
label: "Prompt document body",
|
|
32
|
+
value: (_a = value.prompt) == null ? void 0 : _a.user,
|
|
33
|
+
onChange: (user) => onChange(update.withPrompt(value, { user })),
|
|
34
|
+
placeholder: "Write the .prompt template body",
|
|
35
|
+
minHeight: 220,
|
|
36
|
+
icon: UiUser.UiUser
|
|
37
|
+
}
|
|
38
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
26
39
|
fields.ExpandField,
|
|
27
40
|
{
|
|
28
41
|
label: "User override",
|
|
29
|
-
value: (
|
|
42
|
+
value: (_b = value.prompt) == null ? void 0 : _b.user,
|
|
30
43
|
onChange: (user) => onChange(update.withPrompt(value, { user })),
|
|
31
44
|
placeholder: "Override the rendered user prompt",
|
|
32
45
|
icon: UiUser.UiUser
|
|
33
46
|
}
|
|
34
47
|
),
|
|
35
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
supports("prompt.system") && /* @__PURE__ */ jsxRuntime.jsx(
|
|
36
49
|
fields.ExpandField,
|
|
37
50
|
{
|
|
38
51
|
label: "System",
|
|
39
|
-
value: (
|
|
52
|
+
value: (_c = value.prompt) == null ? void 0 : _c.system,
|
|
40
53
|
onChange: (system) => onChange(update.withPrompt(value, { system })),
|
|
41
54
|
placeholder: "Replace the system prompt",
|
|
42
55
|
icon: UiGearSix.UiGearSix
|
|
43
56
|
}
|
|
44
57
|
),
|
|
45
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
58
|
+
supports("prompt.appendSystem") && /* @__PURE__ */ jsxRuntime.jsx(
|
|
46
59
|
fields.ExpandField,
|
|
47
60
|
{
|
|
48
61
|
label: "Append system",
|
|
49
|
-
value: (
|
|
62
|
+
value: (_d = value.prompt) == null ? void 0 : _d.appendSystem,
|
|
50
63
|
onChange: (appendSystem) => onChange(update.withPrompt(value, { appendSystem })),
|
|
51
64
|
placeholder: "Appended to the default system prompt",
|
|
52
65
|
icon: UiAdd.UiAdd
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptSection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/PromptSection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiAdd, UiFileJson, UiGearSix, UiUser } from \"../../../icons\";\nimport {\n SPEC_SCHEMA_STRICTNESS,\n type AISpecRuntimeValue,\n type SpecSchemaStrictness,\n} from \"../SpecRuntimeEditor.model\";\nimport { ExpandField, SpecField, TextareaField } from \"./fields\";\nimport { withPrompt } from \"./update\";\n\nconst SCHEMA_STRICTNESS_OPTIONS: Array<{\n id: SpecSchemaStrictness | \"\";\n label: string;\n}> = [\n { id: \"\", label: \"None\" },\n ...SPEC_SCHEMA_STRICTNESS.map((mode) => ({\n id: mode,\n label: mode.charAt(0).toUpperCase() + mode.slice(1),\n })),\n];\n\nexport function PromptSection({\n value,\n onChange,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n <ExpandField\n
|
|
1
|
+
{"version":3,"file":"PromptSection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/PromptSection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiAdd, UiFileJson, UiGearSix, UiUser } from \"../../../icons\";\nimport {\n SPEC_SCHEMA_STRICTNESS,\n type AISpecRuntimeValue,\n type SpecSchemaStrictness,\n} from \"../SpecRuntimeEditor.model\";\nimport { ExpandField, SpecField, TextareaField } from \"./fields\";\nimport { withPrompt } from \"./update\";\nimport {\n SUPPORT_ALL_RUNTIME_FIELDS,\n type RuntimeFieldSupport,\n} from \"../../runtime/runtime-field-support\";\n\nconst SCHEMA_STRICTNESS_OPTIONS: Array<{\n id: SpecSchemaStrictness | \"\";\n label: string;\n}> = [\n { id: \"\", label: \"None\" },\n ...SPEC_SCHEMA_STRICTNESS.map((mode) => ({\n id: mode,\n label: mode.charAt(0).toUpperCase() + mode.slice(1),\n })),\n];\n\nexport function PromptSection({\n value,\n onChange,\n supports = SUPPORT_ALL_RUNTIME_FIELDS,\n variant = \"runtime\",\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n supports?: RuntimeFieldSupport | undefined;\n variant?: \"runtime\" | \"document\" | undefined;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n {variant === \"document\" ? (\n <TextareaField\n label=\"Prompt document body\"\n value={value.prompt?.user}\n onChange={(user) => onChange(withPrompt(value, { user }))}\n placeholder=\"Write the .prompt template body\"\n minHeight={220}\n icon={UiUser}\n />\n ) : (\n <ExpandField\n label=\"User override\"\n value={value.prompt?.user}\n onChange={(user) => onChange(withPrompt(value, { user }))}\n placeholder=\"Override the rendered user prompt\"\n icon={UiUser}\n />\n )}\n {supports(\"prompt.system\") && (\n <ExpandField\n label=\"System\"\n value={value.prompt?.system}\n onChange={(system) => onChange(withPrompt(value, { system }))}\n placeholder=\"Replace the system prompt\"\n icon={UiGearSix}\n />\n )}\n {supports(\"prompt.appendSystem\") && (\n <ExpandField\n label=\"Append system\"\n value={value.prompt?.appendSystem}\n onChange={(appendSystem) =>\n onChange(withPrompt(value, { appendSystem }))\n }\n placeholder=\"Appended to the default system prompt\"\n icon={UiAdd}\n />\n )}\n </div>\n );\n}\n\nexport function PromptAdvanced({\n value,\n onChange,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n <SpecField label=\"Schema strictness\">\n <SegmentedControl<SpecSchemaStrictness | \"\">\n aria-label=\"Schema strictness\"\n size=\"sm\"\n wrap\n value={value.prompt?.schemaStrictness ?? \"\"}\n options={SCHEMA_STRICTNESS_OPTIONS}\n onChange={(schemaStrictness) =>\n onChange(withPrompt(value, { schemaStrictness }))\n }\n />\n </SpecField>\n <TextareaField\n label=\"Prompt schema JSON\"\n value={schemaText(value.prompt?.schemaJSON)}\n onChange={(schemaJSON) => onChange(withPrompt(value, { schemaJSON }))}\n minHeight={176}\n icon={UiFileJson}\n />\n </div>\n );\n}\n\nfunction schemaText(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return \"\";\n }\n}\n"],"names":["SPEC_SCHEMA_STRICTNESS","SUPPORT_ALL_RUNTIME_FIELDS","jsxs","jsx","TextareaField","withPrompt","UiUser","ExpandField","UiGearSix","UiAdd","SpecField","SegmentedControl","UiFileJson"],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { AISpecRuntimeValue } from '../SpecRuntimeEditor.model';
|
|
2
|
-
|
|
2
|
+
import { RuntimeFieldSupport } from '../../runtime/runtime-field-support';
|
|
3
|
+
export declare function PromptSection({ value, onChange, supports, variant, }: {
|
|
3
4
|
value: AISpecRuntimeValue;
|
|
4
5
|
onChange: (value: AISpecRuntimeValue) => void;
|
|
6
|
+
supports?: RuntimeFieldSupport | undefined;
|
|
7
|
+
variant?: "runtime" | "document" | undefined;
|
|
5
8
|
}): import("react/jsx-runtime").JSX.Element;
|
|
6
9
|
export declare function PromptAdvanced({ value, onChange, }: {
|
|
7
10
|
value: AISpecRuntimeValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/PromptSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"PromptSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/PromptSection.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAC;AAa7C,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,QAAqC,EACrC,OAAmB,GACpB,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;CAC9C,2CA2CA;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C,2CAwBA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { SegmentedControl } from "../../../components/SegmentedControl.js";
|
|
3
3
|
import { SPEC_SCHEMA_STRICTNESS } from "../SpecRuntimeEditor.model.js";
|
|
4
|
-
import { ExpandField, SpecField
|
|
4
|
+
import { TextareaField, ExpandField, SpecField } from "./fields.js";
|
|
5
5
|
import { withPrompt } from "./update.js";
|
|
6
|
+
import { SUPPORT_ALL_RUNTIME_FIELDS } from "../../runtime/runtime-field-support.js";
|
|
6
7
|
import { UiUser } from "../../../icons/components/UiUser.js";
|
|
7
8
|
import { UiGearSix } from "../../../icons/components/UiGearSix.js";
|
|
8
9
|
import { UiAdd } from "../../../icons/components/UiAdd.js";
|
|
@@ -16,35 +17,47 @@ const SCHEMA_STRICTNESS_OPTIONS = [
|
|
|
16
17
|
];
|
|
17
18
|
function PromptSection({
|
|
18
19
|
value,
|
|
19
|
-
onChange
|
|
20
|
+
onChange,
|
|
21
|
+
supports = SUPPORT_ALL_RUNTIME_FIELDS,
|
|
22
|
+
variant = "runtime"
|
|
20
23
|
}) {
|
|
21
|
-
var _a, _b, _c;
|
|
24
|
+
var _a, _b, _c, _d;
|
|
22
25
|
return /* @__PURE__ */ jsxs("div", { className: "grid gap-density-2", children: [
|
|
23
|
-
/* @__PURE__ */ jsx(
|
|
26
|
+
variant === "document" ? /* @__PURE__ */ jsx(
|
|
27
|
+
TextareaField,
|
|
28
|
+
{
|
|
29
|
+
label: "Prompt document body",
|
|
30
|
+
value: (_a = value.prompt) == null ? void 0 : _a.user,
|
|
31
|
+
onChange: (user) => onChange(withPrompt(value, { user })),
|
|
32
|
+
placeholder: "Write the .prompt template body",
|
|
33
|
+
minHeight: 220,
|
|
34
|
+
icon: UiUser
|
|
35
|
+
}
|
|
36
|
+
) : /* @__PURE__ */ jsx(
|
|
24
37
|
ExpandField,
|
|
25
38
|
{
|
|
26
39
|
label: "User override",
|
|
27
|
-
value: (
|
|
40
|
+
value: (_b = value.prompt) == null ? void 0 : _b.user,
|
|
28
41
|
onChange: (user) => onChange(withPrompt(value, { user })),
|
|
29
42
|
placeholder: "Override the rendered user prompt",
|
|
30
43
|
icon: UiUser
|
|
31
44
|
}
|
|
32
45
|
),
|
|
33
|
-
/* @__PURE__ */ jsx(
|
|
46
|
+
supports("prompt.system") && /* @__PURE__ */ jsx(
|
|
34
47
|
ExpandField,
|
|
35
48
|
{
|
|
36
49
|
label: "System",
|
|
37
|
-
value: (
|
|
50
|
+
value: (_c = value.prompt) == null ? void 0 : _c.system,
|
|
38
51
|
onChange: (system) => onChange(withPrompt(value, { system })),
|
|
39
52
|
placeholder: "Replace the system prompt",
|
|
40
53
|
icon: UiGearSix
|
|
41
54
|
}
|
|
42
55
|
),
|
|
43
|
-
/* @__PURE__ */ jsx(
|
|
56
|
+
supports("prompt.appendSystem") && /* @__PURE__ */ jsx(
|
|
44
57
|
ExpandField,
|
|
45
58
|
{
|
|
46
59
|
label: "Append system",
|
|
47
|
-
value: (
|
|
60
|
+
value: (_d = value.prompt) == null ? void 0 : _d.appendSystem,
|
|
48
61
|
onChange: (appendSystem) => onChange(withPrompt(value, { appendSystem })),
|
|
49
62
|
placeholder: "Appended to the default system prompt",
|
|
50
63
|
icon: UiAdd
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/PromptSection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiAdd, UiFileJson, UiGearSix, UiUser } from \"../../../icons\";\nimport {\n SPEC_SCHEMA_STRICTNESS,\n type AISpecRuntimeValue,\n type SpecSchemaStrictness,\n} from \"../SpecRuntimeEditor.model\";\nimport { ExpandField, SpecField, TextareaField } from \"./fields\";\nimport { withPrompt } from \"./update\";\n\nconst SCHEMA_STRICTNESS_OPTIONS: Array<{\n id: SpecSchemaStrictness | \"\";\n label: string;\n}> = [\n { id: \"\", label: \"None\" },\n ...SPEC_SCHEMA_STRICTNESS.map((mode) => ({\n id: mode,\n label: mode.charAt(0).toUpperCase() + mode.slice(1),\n })),\n];\n\nexport function PromptSection({\n value,\n onChange,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n <ExpandField\n
|
|
1
|
+
{"version":3,"file":"PromptSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/PromptSection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiAdd, UiFileJson, UiGearSix, UiUser } from \"../../../icons\";\nimport {\n SPEC_SCHEMA_STRICTNESS,\n type AISpecRuntimeValue,\n type SpecSchemaStrictness,\n} from \"../SpecRuntimeEditor.model\";\nimport { ExpandField, SpecField, TextareaField } from \"./fields\";\nimport { withPrompt } from \"./update\";\nimport {\n SUPPORT_ALL_RUNTIME_FIELDS,\n type RuntimeFieldSupport,\n} from \"../../runtime/runtime-field-support\";\n\nconst SCHEMA_STRICTNESS_OPTIONS: Array<{\n id: SpecSchemaStrictness | \"\";\n label: string;\n}> = [\n { id: \"\", label: \"None\" },\n ...SPEC_SCHEMA_STRICTNESS.map((mode) => ({\n id: mode,\n label: mode.charAt(0).toUpperCase() + mode.slice(1),\n })),\n];\n\nexport function PromptSection({\n value,\n onChange,\n supports = SUPPORT_ALL_RUNTIME_FIELDS,\n variant = \"runtime\",\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n supports?: RuntimeFieldSupport | undefined;\n variant?: \"runtime\" | \"document\" | undefined;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n {variant === \"document\" ? (\n <TextareaField\n label=\"Prompt document body\"\n value={value.prompt?.user}\n onChange={(user) => onChange(withPrompt(value, { user }))}\n placeholder=\"Write the .prompt template body\"\n minHeight={220}\n icon={UiUser}\n />\n ) : (\n <ExpandField\n label=\"User override\"\n value={value.prompt?.user}\n onChange={(user) => onChange(withPrompt(value, { user }))}\n placeholder=\"Override the rendered user prompt\"\n icon={UiUser}\n />\n )}\n {supports(\"prompt.system\") && (\n <ExpandField\n label=\"System\"\n value={value.prompt?.system}\n onChange={(system) => onChange(withPrompt(value, { system }))}\n placeholder=\"Replace the system prompt\"\n icon={UiGearSix}\n />\n )}\n {supports(\"prompt.appendSystem\") && (\n <ExpandField\n label=\"Append system\"\n value={value.prompt?.appendSystem}\n onChange={(appendSystem) =>\n onChange(withPrompt(value, { appendSystem }))\n }\n placeholder=\"Appended to the default system prompt\"\n icon={UiAdd}\n />\n )}\n </div>\n );\n}\n\nexport function PromptAdvanced({\n value,\n onChange,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n <SpecField label=\"Schema strictness\">\n <SegmentedControl<SpecSchemaStrictness | \"\">\n aria-label=\"Schema strictness\"\n size=\"sm\"\n wrap\n value={value.prompt?.schemaStrictness ?? \"\"}\n options={SCHEMA_STRICTNESS_OPTIONS}\n onChange={(schemaStrictness) =>\n onChange(withPrompt(value, { schemaStrictness }))\n }\n />\n </SpecField>\n <TextareaField\n label=\"Prompt schema JSON\"\n value={schemaText(value.prompt?.schemaJSON)}\n onChange={(schemaJSON) => onChange(withPrompt(value, { schemaJSON }))}\n minHeight={176}\n icon={UiFileJson}\n />\n </div>\n );\n}\n\nfunction schemaText(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return \"\";\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAcA,MAAM,4BAGD;AAAA,EACH,EAAE,IAAI,IAAI,OAAO,OAAA;AAAA,EACjB,GAAG,uBAAuB,IAAI,CAAC,UAAU;AAAA,IACvC,IAAI;AAAA,IACJ,OAAO,KAAK,OAAO,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC;AAAA,EAAA,EAClD;AACJ;AAEO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,UAAU;AACZ,GAKG;;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,sBACZ,UAAA;AAAA,IAAA,YAAY,aACX;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,WAAM,WAAN,mBAAc;AAAA,QACrB,UAAU,CAAC,SAAS,SAAS,WAAW,OAAO,EAAE,KAAA,CAAM,CAAC;AAAA,QACxD,aAAY;AAAA,QACZ,WAAW;AAAA,QACX,MAAM;AAAA,MAAA;AAAA,IAAA,IAGR;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,WAAM,WAAN,mBAAc;AAAA,QACrB,UAAU,CAAC,SAAS,SAAS,WAAW,OAAO,EAAE,KAAA,CAAM,CAAC;AAAA,QACxD,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAGT,SAAS,eAAe,KACvB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,WAAM,WAAN,mBAAc;AAAA,QACrB,UAAU,CAAC,WAAW,SAAS,WAAW,OAAO,EAAE,OAAA,CAAQ,CAAC;AAAA,QAC5D,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAGT,SAAS,qBAAqB,KAC7B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,WAAM,WAAN,mBAAc;AAAA,QACrB,UAAU,CAAC,iBACT,SAAS,WAAW,OAAO,EAAE,aAAA,CAAc,CAAC;AAAA,QAE9C,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GAEJ;AAEJ;AAEO,SAAS,eAAe;AAAA,EAC7B;AAAA,EACA;AACF,GAGG;;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA,oBAAC,WAAA,EAAU,OAAM,qBACf,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,cAAW;AAAA,QACX,MAAK;AAAA,QACL,MAAI;AAAA,QACJ,SAAO,WAAM,WAAN,mBAAc,qBAAoB;AAAA,QACzC,SAAS;AAAA,QACT,UAAU,CAAC,qBACT,SAAS,WAAW,OAAO,EAAE,kBAAkB,CAAC;AAAA,MAAA;AAAA,IAAA,GAGtD;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,OAAO,YAAW,WAAM,WAAN,mBAAc,UAAU;AAAA,QAC1C,UAAU,CAAC,eAAe,SAAS,WAAW,OAAO,EAAE,WAAA,CAAY,CAAC;AAAA,QACpE,WAAW;AAAA,QACX,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAEJ;AAEA,SAAS,WAAW,OAAwB;AAC1C,MAAI,SAAS,KAAM,QAAO;AAC1B,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI;AACF,WAAO,KAAK,UAAU,OAAO,MAAM,CAAC;AAAA,EACtC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;"}
|