@flanksource/clicky-ui 0.3.10 → 0.3.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +85 -0
- package/README.md +33 -2
- package/dist/ai.cjs +71 -5
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +71 -5
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +17 -13
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +8 -4
- package/dist/clicky.d.ts +1 -1
- package/dist/clicky.d.ts.map +1 -1
- package/dist/comments/CommentCard.cjs +84 -38
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +85 -39
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentComposer.cjs +21 -11
- package/dist/comments/CommentComposer.cjs.map +1 -1
- package/dist/comments/CommentComposer.d.ts.map +1 -1
- package/dist/comments/CommentComposer.js +21 -11
- package/dist/comments/CommentComposer.js.map +1 -1
- package/dist/comments/CommentProvider.cjs +84 -12
- package/dist/comments/CommentProvider.cjs.map +1 -1
- package/dist/comments/CommentProvider.d.ts +4 -2
- package/dist/comments/CommentProvider.d.ts.map +1 -1
- package/dist/comments/CommentProvider.js +86 -14
- package/dist/comments/CommentProvider.js.map +1 -1
- package/dist/comments/CommentSidePanel.cjs +116 -38
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.d.ts +2 -0
- package/dist/comments/CommentSidePanel.d.ts.map +1 -1
- package/dist/comments/CommentSidePanel.js +117 -39
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/CommentThread.cjs +4 -0
- package/dist/comments/CommentThread.cjs.map +1 -1
- package/dist/comments/CommentThread.d.ts +5 -1
- package/dist/comments/CommentThread.d.ts.map +1 -1
- package/dist/comments/CommentThread.js +4 -0
- package/dist/comments/CommentThread.js.map +1 -1
- package/dist/comments/CommentThreadList.cjs +17 -5
- package/dist/comments/CommentThreadList.cjs.map +1 -1
- package/dist/comments/CommentThreadList.d.ts +3 -1
- package/dist/comments/CommentThreadList.d.ts.map +1 -1
- package/dist/comments/CommentThreadList.js +18 -6
- package/dist/comments/CommentThreadList.js.map +1 -1
- package/dist/comments/comment-context.cjs +88 -0
- package/dist/comments/comment-context.cjs.map +1 -1
- package/dist/comments/comment-context.d.ts +26 -0
- package/dist/comments/comment-context.d.ts.map +1 -1
- package/dist/comments/comment-context.js +89 -1
- package/dist/comments/comment-context.js.map +1 -1
- package/dist/comments.cjs +3 -0
- package/dist/comments.cjs.map +1 -1
- package/dist/comments.d.ts +1 -1
- package/dist/comments.d.ts.map +1 -1
- package/dist/comments.js +4 -1
- package/dist/components/Combobox.cjs +145 -34
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +24 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +147 -36
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DatePicker.cjs +1 -1
- package/dist/components/DatePicker.cjs.map +1 -1
- package/dist/components/DatePicker.js +1 -1
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +1 -1
- package/dist/components/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker.js +1 -1
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/FilterBar.cjs +41 -459
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +4 -62
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +13 -430
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +97 -0
- package/dist/components/InputField.cjs.map +1 -0
- package/dist/components/InputField.d.ts +42 -0
- package/dist/components/InputField.d.ts.map +1 -0
- package/dist/components/InputField.js +97 -0
- package/dist/components/InputField.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +90 -15
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +92 -17
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MdxEditorField.cjs.map +1 -1
- package/dist/components/MdxEditorField.d.ts +1 -1
- package/dist/components/MdxEditorField.d.ts.map +1 -1
- package/dist/components/MdxEditorField.js.map +1 -1
- package/dist/components/MdxEditorToolbar.cjs +6 -1
- package/dist/components/MdxEditorToolbar.cjs.map +1 -1
- package/dist/components/MdxEditorToolbar.d.ts.map +1 -1
- package/dist/components/MdxEditorToolbar.js +6 -1
- package/dist/components/MdxEditorToolbar.js.map +1 -1
- package/dist/components/MultiSelect.cjs +0 -1
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +0 -1
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SearchInput.cjs +14 -43
- package/dist/components/SearchInput.cjs.map +1 -1
- package/dist/components/SearchInput.d.ts +6 -5
- package/dist/components/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput.js +15 -44
- package/dist/components/SearchInput.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +155 -67
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +34 -16
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +158 -70
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/SecretKeySelector.model.cjs +32 -0
- package/dist/components/SecretKeySelector.model.cjs.map +1 -0
- package/dist/components/SecretKeySelector.model.d.ts +4 -0
- package/dist/components/SecretKeySelector.model.d.ts.map +1 -0
- package/dist/components/SecretKeySelector.model.js +32 -0
- package/dist/components/SecretKeySelector.model.js.map +1 -0
- package/dist/components/SegmentedControl.cjs +41 -6
- package/dist/components/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl.d.ts +7 -3
- package/dist/components/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl.js +41 -6
- package/dist/components/SegmentedControl.js.map +1 -1
- package/dist/components/filter-bar-context.cjs +10 -0
- package/dist/components/filter-bar-context.cjs.map +1 -0
- package/dist/components/filter-bar-context.d.ts +5 -0
- package/dist/components/filter-bar-context.d.ts.map +1 -0
- package/dist/components/filter-bar-context.js +10 -0
- package/dist/components/filter-bar-context.js.map +1 -0
- package/dist/components/filter-bar-field-utils.cjs +119 -0
- package/dist/components/filter-bar-field-utils.cjs.map +1 -0
- package/dist/components/filter-bar-field-utils.d.ts +21 -0
- package/dist/components/filter-bar-field-utils.d.ts.map +1 -0
- package/dist/components/filter-bar-field-utils.js +119 -0
- package/dist/components/filter-bar-field-utils.js.map +1 -0
- package/dist/components/filter-bar-multi.cjs +193 -0
- package/dist/components/filter-bar-multi.cjs.map +1 -0
- package/dist/components/filter-bar-multi.d.ts +74 -0
- package/dist/components/filter-bar-multi.d.ts.map +1 -0
- package/dist/components/filter-bar-multi.js +193 -0
- package/dist/components/filter-bar-multi.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +81 -10
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +82 -11
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +156 -24
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +9 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +156 -24
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +35 -12
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +37 -14
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +21 -3
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +22 -4
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +123 -13
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +123 -13
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +30 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +19 -0
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +3 -0
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +19 -0
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/loading.cjs +17 -0
- package/dist/components/loading.cjs.map +1 -1
- package/dist/components/loading.d.ts +9 -0
- package/dist/components/loading.d.ts.map +1 -1
- package/dist/components/loading.js +17 -0
- package/dist/components/loading.js.map +1 -1
- package/dist/components/mdx-editor-field-plugins.cjs +28 -4
- package/dist/components/mdx-editor-field-plugins.cjs.map +1 -1
- package/dist/components/mdx-editor-field-plugins.d.ts.map +1 -1
- package/dist/components/mdx-editor-field-plugins.js +28 -4
- package/dist/components/mdx-editor-field-plugins.js.map +1 -1
- package/dist/components/mdx-editor-options.d.ts +23 -1
- package/dist/components/mdx-editor-options.d.ts.map +1 -1
- package/dist/components.cjs +13 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +20 -16
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +14 -2
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +301 -51
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts +21 -3
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +301 -51
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/CodeBlock.cjs +100 -20
- package/dist/data/CodeBlock.cjs.map +1 -1
- package/dist/data/CodeBlock.d.ts +18 -1
- package/dist/data/CodeBlock.d.ts.map +1 -1
- package/dist/data/CodeBlock.js +101 -21
- package/dist/data/CodeBlock.js.map +1 -1
- package/dist/data/CodeDiff.cjs +221 -0
- package/dist/data/CodeDiff.cjs.map +1 -0
- package/dist/data/CodeDiff.d.ts +24 -0
- package/dist/data/CodeDiff.d.ts.map +1 -0
- package/dist/data/CodeDiff.js +221 -0
- package/dist/data/CodeDiff.js.map +1 -0
- package/dist/data/DataTable.cjs +359 -219
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +12 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +353 -213
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FilterPill.cjs +43 -35
- package/dist/data/FilterPill.cjs.map +1 -1
- package/dist/data/FilterPill.d.ts +9 -1
- package/dist/data/FilterPill.d.ts.map +1 -1
- package/dist/data/FilterPill.js +43 -35
- package/dist/data/FilterPill.js.map +1 -1
- package/dist/data/FixtureEditor/FenceForm.cjs +123 -0
- package/dist/data/FixtureEditor/FenceForm.cjs.map +1 -0
- package/dist/data/FixtureEditor/FenceForm.d.ts +14 -0
- package/dist/data/FixtureEditor/FenceForm.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FenceForm.js +123 -0
- package/dist/data/FixtureEditor/FenceForm.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.cjs +236 -0
- package/dist/data/FixtureEditor/FixtureEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.d.ts +3 -0
- package/dist/data/FixtureEditor/FixtureEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureEditor.js +236 -0
- package/dist/data/FixtureEditor/FixtureEditor.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs +128 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts +8 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js +128 -0
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.js.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +148 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts +11 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts.map +1 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +148 -0
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.cjs +35 -0
- package/dist/data/FixtureEditor/RawFenceEditor.cjs.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts +11 -0
- package/dist/data/FixtureEditor/RawFenceEditor.d.ts.map +1 -0
- package/dist/data/FixtureEditor/RawFenceEditor.js +35 -0
- package/dist/data/FixtureEditor/RawFenceEditor.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.cjs +130 -0
- package/dist/data/FixtureEditor/fixture-blocks.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.d.ts +26 -0
- package/dist/data/FixtureEditor/fixture-blocks.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-blocks.js +130 -0
- package/dist/data/FixtureEditor/fixture-blocks.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.cjs +17 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.d.ts +3 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.js +17 -0
- package/dist/data/FixtureEditor/fixture-code-block-model.js.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs +300 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts +32 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.js +300 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -0
- package/dist/data/FixtureEditor/index.d.ts +5 -0
- package/dist/data/FixtureEditor/index.d.ts.map +1 -0
- package/dist/data/FixtureEditor/types.d.ts +44 -0
- package/dist/data/FixtureEditor/types.d.ts.map +1 -0
- package/dist/data/LogDetails.cjs +4 -4
- package/dist/data/LogDetails.cjs.map +1 -1
- package/dist/data/LogDetails.js +4 -4
- package/dist/data/LogDetails.js.map +1 -1
- package/dist/data/Markdown.cjs +29 -1
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +3 -2
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +30 -2
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/Properties.cjs +160 -40
- package/dist/data/Properties.cjs.map +1 -1
- package/dist/data/Properties.d.ts +8 -2
- package/dist/data/Properties.d.ts.map +1 -1
- package/dist/data/Properties.js +160 -40
- package/dist/data/Properties.js.map +1 -1
- package/dist/data/SchemaViewer.cjs +1 -1
- package/dist/data/SchemaViewer.cjs.map +1 -1
- package/dist/data/SchemaViewer.js +2 -2
- package/dist/data/SchemaViewer.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +336 -18
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +13 -4
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +336 -18
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.test-utils.d.ts +12 -0
- package/dist/data/ai/ChatWindow.test-utils.d.ts.map +1 -0
- package/dist/data/ai/PolicyTree.cjs +265 -0
- package/dist/data/ai/PolicyTree.cjs.map +1 -0
- package/dist/data/ai/PolicyTree.d.ts +33 -0
- package/dist/data/ai/PolicyTree.d.ts.map +1 -0
- package/dist/data/ai/PolicyTree.js +265 -0
- package/dist/data/ai/PolicyTree.js.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +251 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +31 -0
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.js +251 -0
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -0
- package/dist/data/ai/PromptPicker/index.d.ts +4 -0
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.cjs +39 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.d.ts +9 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.js +39 -0
- package/dist/data/ai/PromptPicker/prompt-runtime.js.map +1 -0
- package/dist/data/ai/PromptPicker/types.d.ts +25 -0
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +242 -0
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.d.ts +42 -0
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.js +242 -0
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -0
- package/dist/data/ai/RuntimeModePicker.cjs +61 -0
- package/dist/data/ai/RuntimeModePicker.cjs.map +1 -0
- package/dist/data/ai/RuntimeModePicker.d.ts +12 -0
- package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -0
- package/dist/data/ai/RuntimeModePicker.js +61 -0
- package/dist/data/ai/RuntimeModePicker.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +432 -0
- package/dist/data/ai/SessionInspector.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +11 -0
- package/dist/data/ai/SessionInspector.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.js +432 -0
- package/dist/data/ai/SessionInspector.js.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +208 -196
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +39 -3
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.grouping.cjs +44 -0
- package/dist/data/ai/SessionViewer.grouping.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.grouping.d.ts +17 -0
- package/dist/data/ai/SessionViewer.grouping.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.grouping.js +44 -0
- package/dist/data/ai/SessionViewer.grouping.js.map +1 -0
- package/dist/data/ai/SessionViewer.input.cjs +219 -0
- package/dist/data/ai/SessionViewer.input.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.input.d.ts +44 -0
- package/dist/data/ai/SessionViewer.input.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.input.js +219 -0
- package/dist/data/ai/SessionViewer.input.js.map +1 -0
- package/dist/data/ai/SessionViewer.js +209 -197
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +203 -105
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +45 -7
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +203 -105
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +751 -0
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.rows.d.ts +20 -0
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.rows.js +751 -0
- package/dist/data/ai/SessionViewer.rows.js.map +1 -0
- package/dist/data/ai/SessionViewer.unified.d.ts +193 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -0
- package/dist/data/ai/SessionViewerMenu.cjs +57 -68
- package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
- package/dist/data/ai/SessionViewerMenu.d.ts +3 -3
- package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.js +58 -69
- package/dist/data/ai/SessionViewerMenu.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs +25 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js +25 -0
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +6 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +44 -0
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +137 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +137 -0
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.cjs +29 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.js +29 -0
- package/dist/data/ai/SpecRuntimeEditor/Footer.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +481 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +16 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +481 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +421 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +17 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +421 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/PresetCards.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +98 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +10 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +98 -0
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.cjs +23 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts +7 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.js +23 -0
- package/dist/data/ai/SpecRuntimeEditor/Rail.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +77 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +14 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +77 -0
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +65 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +12 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +65 -0
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +227 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +8 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +227 -0
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs +45 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts +7 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.js +45 -0
- package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs +287 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +79 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.js +287 -0
- package/dist/data/ai/SpecRuntimeEditor/fields.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +213 -0
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +41 -0
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/index.js +213 -0
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs +252 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts +36 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.js +252 -0
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs +214 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +35 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.js +214 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs +15 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +13 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.js +15 -0
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.cjs +74 -0
- package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts +19 -0
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/types.js +74 -0
- package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +144 -0
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +28 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.js +144 -0
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs +55 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts +9 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js +55 -0
- package/dist/data/ai/SpecRuntimeEditor/use-scrollspy.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +398 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +169 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js +398 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -0
- package/dist/data/ai/ToolPreferences.cjs +705 -165
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +29 -5
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +707 -167
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.cjs +549 -0
- package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -0
- package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.js +549 -0
- package/dist/data/ai/ToolSchemaBrowser.js.map +1 -0
- package/dist/data/ai/agent-action-icons.cjs +78 -0
- package/dist/data/ai/agent-action-icons.cjs.map +1 -0
- package/dist/data/ai/agent-action-icons.d.ts +22 -0
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -0
- package/dist/data/ai/agent-action-icons.js +78 -0
- package/dist/data/ai/agent-action-icons.js.map +1 -0
- package/dist/data/ai/index.d.ts +21 -6
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.cjs +23 -0
- package/dist/data/ai/model-capabilities.cjs.map +1 -0
- package/dist/data/ai/model-capabilities.d.ts +9 -0
- package/dist/data/ai/model-capabilities.d.ts.map +1 -0
- package/dist/data/ai/model-capabilities.js +23 -0
- package/dist/data/ai/model-capabilities.js.map +1 -0
- package/dist/data/ai/runtime-mode.cjs +133 -0
- package/dist/data/ai/runtime-mode.cjs.map +1 -0
- package/dist/data/ai/runtime-mode.d.ts +31 -0
- package/dist/data/ai/runtime-mode.d.ts.map +1 -0
- package/dist/data/ai/runtime-mode.js +133 -0
- package/dist/data/ai/runtime-mode.js.map +1 -0
- package/dist/data/ai/session-categories.cjs +34 -0
- package/dist/data/ai/session-categories.cjs.map +1 -1
- package/dist/data/ai/session-categories.d.ts +2 -0
- package/dist/data/ai/session-categories.d.ts.map +1 -1
- package/dist/data/ai/session-categories.js +34 -0
- package/dist/data/ai/session-categories.js.map +1 -1
- package/dist/data/ai/session-cost.cjs +13 -0
- package/dist/data/ai/session-cost.cjs.map +1 -0
- package/dist/data/ai/session-cost.d.ts +8 -0
- package/dist/data/ai/session-cost.d.ts.map +1 -0
- package/dist/data/ai/session-cost.js +13 -0
- package/dist/data/ai/session-cost.js.map +1 -0
- package/dist/data/ai/tool-name.d.ts +10 -0
- package/dist/data/ai/tool-name.d.ts.map +1 -0
- package/dist/data/ai/use-session-scroll.cjs +96 -0
- package/dist/data/ai/use-session-scroll.cjs.map +1 -0
- package/dist/data/ai/use-session-scroll.d.ts +43 -0
- package/dist/data/ai/use-session-scroll.d.ts.map +1 -0
- package/dist/data/ai/use-session-scroll.js +96 -0
- package/dist/data/ai/use-session-scroll.js.map +1 -0
- package/dist/data/cells/TagList.cjs +4 -2
- package/dist/data/cells/TagList.cjs.map +1 -1
- package/dist/data/cells/TagList.d.ts +2 -1
- package/dist/data/cells/TagList.d.ts.map +1 -1
- package/dist/data/cells/TagList.js +4 -2
- package/dist/data/cells/TagList.js.map +1 -1
- package/dist/data/chat/Chat.cjs +49 -15
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +16 -2
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +49 -15
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +164 -0
- package/dist/data/chat/ContextMeter.cjs.map +1 -0
- package/dist/data/chat/ContextMeter.d.ts +50 -0
- package/dist/data/chat/ContextMeter.d.ts.map +1 -0
- package/dist/data/chat/ContextMeter.js +164 -0
- package/dist/data/chat/ContextMeter.js.map +1 -0
- package/dist/data/chat/ModelSelector.cjs +139 -10
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts +44 -3
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +141 -12
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +83 -69
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts +3 -3
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +83 -69
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/effort-icons.cjs +43 -0
- package/dist/data/chat/effort-icons.cjs.map +1 -0
- package/dist/data/chat/effort-icons.d.ts +10 -0
- package/dist/data/chat/effort-icons.d.ts.map +1 -0
- package/dist/data/chat/effort-icons.js +43 -0
- package/dist/data/chat/effort-icons.js.map +1 -0
- package/dist/data/chat/index.d.ts +3 -3
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.cjs +25 -6
- package/dist/data/chat/provider-icons.cjs.map +1 -1
- package/dist/data/chat/provider-icons.d.ts +3 -5
- package/dist/data/chat/provider-icons.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.js +25 -6
- package/dist/data/chat/provider-icons.js.map +1 -1
- package/dist/data/chat/types.cjs +42 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +83 -19
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +42 -0
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/code-block-actions.cjs +101 -0
- package/dist/data/code-block-actions.cjs.map +1 -0
- package/dist/data/code-block-actions.d.ts +20 -0
- package/dist/data/code-block-actions.d.ts.map +1 -0
- package/dist/data/code-block-actions.js +101 -0
- package/dist/data/code-block-actions.js.map +1 -0
- package/dist/data/code-diff.cjs +106 -0
- package/dist/data/code-diff.cjs.map +1 -0
- package/dist/data/code-diff.d.ts +20 -0
- package/dist/data/code-diff.d.ts.map +1 -0
- package/dist/data/code-diff.js +106 -0
- package/dist/data/code-diff.js.map +1 -0
- package/dist/data/code-highlight.cjs +30 -0
- package/dist/data/code-highlight.cjs.map +1 -1
- package/dist/data/code-highlight.d.ts +8 -0
- package/dist/data/code-highlight.d.ts.map +1 -1
- package/dist/data/code-highlight.js +30 -0
- package/dist/data/code-highlight.js.map +1 -1
- package/dist/data/git/GitChangeList.cjs +410 -0
- package/dist/data/git/GitChangeList.cjs.map +1 -0
- package/dist/data/git/GitChangeList.d.ts +69 -0
- package/dist/data/git/GitChangeList.d.ts.map +1 -0
- package/dist/data/git/GitChangeList.js +410 -0
- package/dist/data/git/GitChangeList.js.map +1 -0
- package/dist/data/git/git-dates.cjs +37 -0
- package/dist/data/git/git-dates.cjs.map +1 -0
- package/dist/data/git/git-dates.d.ts +4 -0
- package/dist/data/git/git-dates.d.ts.map +1 -0
- package/dist/data/git/git-dates.js +37 -0
- package/dist/data/git/git-dates.js.map +1 -0
- package/dist/data/git/index.d.ts +3 -0
- package/dist/data/git/index.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.cjs +323 -0
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.cjs +99 -0
- package/dist/data/query-browser/QueryBrowser.completion.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.d.ts +34 -0
- package/dist/data/query-browser/QueryBrowser.completion.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.completion.js +99 -0
- package/dist/data/query-browser/QueryBrowser.completion.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.d.ts +42 -0
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.js +323 -0
- package/dist/data/query-browser/QueryBrowser.js.map +1 -0
- package/dist/data/query-browser/index.d.ts +3 -0
- package/dist/data/query-browser/index.d.ts.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.cjs.map +1 -1
- package/dist/data/version-info.js +3 -3
- package/dist/data/version-info.js.map +1 -1
- package/dist/data.cjs +164 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +7 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +166 -2
- package/dist/data.js.map +1 -1
- package/dist/icons/components/UiArrowFatUp.cjs +15 -0
- package/dist/icons/components/UiArrowFatUp.cjs.map +1 -0
- package/dist/icons/components/UiArrowFatUp.d.ts +15 -0
- package/dist/icons/components/UiArrowFatUp.d.ts.map +1 -0
- package/dist/icons/components/UiArrowFatUp.js +15 -0
- package/dist/icons/components/UiArrowFatUp.js.map +1 -0
- package/dist/icons/components/UiAsterisk.cjs +15 -0
- package/dist/icons/components/UiAsterisk.cjs.map +1 -0
- package/dist/icons/components/UiAsterisk.d.ts +15 -0
- package/dist/icons/components/UiAsterisk.d.ts.map +1 -0
- package/dist/icons/components/UiAsterisk.js +15 -0
- package/dist/icons/components/UiAsterisk.js.map +1 -0
- package/dist/icons/components/UiAtom.cjs +15 -0
- package/dist/icons/components/UiAtom.cjs.map +1 -0
- package/dist/icons/components/UiAtom.d.ts +15 -0
- package/dist/icons/components/UiAtom.d.ts.map +1 -0
- package/dist/icons/components/UiAtom.js +15 -0
- package/dist/icons/components/UiAtom.js.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.cjs +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.cjs.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.d.ts +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryChargingVertical.js +15 -0
- package/dist/icons/components/UiBatteryChargingVertical.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.js +15 -0
- package/dist/icons/components/UiBatteryVerticalEmpty.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalFull.js +15 -0
- package/dist/icons/components/UiBatteryVerticalFull.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalHigh.js +15 -0
- package/dist/icons/components/UiBatteryVerticalHigh.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalLow.js +15 -0
- package/dist/icons/components/UiBatteryVerticalLow.js.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.cjs +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.cjs.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.d.ts +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.d.ts.map +1 -0
- package/dist/icons/components/UiBatteryVerticalMedium.js +15 -0
- package/dist/icons/components/UiBatteryVerticalMedium.js.map +1 -0
- package/dist/icons/components/UiChatDots.cjs +15 -0
- package/dist/icons/components/UiChatDots.cjs.map +1 -0
- package/dist/icons/components/UiChatDots.d.ts +15 -0
- package/dist/icons/components/UiChatDots.d.ts.map +1 -0
- package/dist/icons/components/UiChatDots.js +15 -0
- package/dist/icons/components/UiChatDots.js.map +1 -0
- package/dist/icons/components/UiCoins.cjs +15 -0
- package/dist/icons/components/UiCoins.cjs.map +1 -0
- package/dist/icons/components/UiCoins.d.ts +15 -0
- package/dist/icons/components/UiCoins.d.ts.map +1 -0
- package/dist/icons/components/UiCoins.js +15 -0
- package/dist/icons/components/UiCoins.js.map +1 -0
- package/dist/icons/components/UiCompass.cjs +15 -0
- package/dist/icons/components/UiCompass.cjs.map +1 -0
- package/dist/icons/components/UiCompass.d.ts +15 -0
- package/dist/icons/components/UiCompass.d.ts.map +1 -0
- package/dist/icons/components/UiCompass.js +15 -0
- package/dist/icons/components/UiCompass.js.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.cjs +15 -0
- package/dist/icons/components/UiCurrencyDollar.cjs.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.d.ts +15 -0
- package/dist/icons/components/UiCurrencyDollar.d.ts.map +1 -0
- package/dist/icons/components/UiCurrencyDollar.js +15 -0
- package/dist/icons/components/UiCurrencyDollar.js.map +1 -0
- package/dist/icons/components/UiCursorClick.cjs +15 -0
- package/dist/icons/components/UiCursorClick.cjs.map +1 -0
- package/dist/icons/components/UiCursorClick.d.ts +15 -0
- package/dist/icons/components/UiCursorClick.d.ts.map +1 -0
- package/dist/icons/components/UiCursorClick.js +15 -0
- package/dist/icons/components/UiCursorClick.js.map +1 -0
- package/dist/icons/components/UiCursorText.cjs +15 -0
- package/dist/icons/components/UiCursorText.cjs.map +1 -0
- package/dist/icons/components/UiCursorText.d.ts +15 -0
- package/dist/icons/components/UiCursorText.d.ts.map +1 -0
- package/dist/icons/components/UiCursorText.js +15 -0
- package/dist/icons/components/UiCursorText.js.map +1 -0
- package/dist/icons/components/UiEllipsisBold.cjs +10 -0
- package/dist/icons/components/UiEllipsisBold.cjs.map +1 -0
- package/dist/icons/components/UiEllipsisBold.d.ts +9 -0
- package/dist/icons/components/UiEllipsisBold.d.ts.map +1 -0
- package/dist/icons/components/UiEllipsisBold.js +10 -0
- package/dist/icons/components/UiEllipsisBold.js.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.cjs +15 -0
- package/dist/icons/components/UiFastForwardCircle.cjs.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.d.ts +15 -0
- package/dist/icons/components/UiFastForwardCircle.d.ts.map +1 -0
- package/dist/icons/components/UiFastForwardCircle.js +15 -0
- package/dist/icons/components/UiFastForwardCircle.js.map +1 -0
- package/dist/icons/components/UiFilePlus.cjs +15 -0
- package/dist/icons/components/UiFilePlus.cjs.map +1 -0
- package/dist/icons/components/UiFilePlus.d.ts +15 -0
- package/dist/icons/components/UiFilePlus.d.ts.map +1 -0
- package/dist/icons/components/UiFilePlus.js +15 -0
- package/dist/icons/components/UiFilePlus.js.map +1 -0
- package/dist/icons/components/UiGavel.cjs +15 -0
- package/dist/icons/components/UiGavel.cjs.map +1 -0
- package/dist/icons/components/UiGavel.d.ts +15 -0
- package/dist/icons/components/UiGavel.d.ts.map +1 -0
- package/dist/icons/components/UiGavel.js +15 -0
- package/dist/icons/components/UiGavel.js.map +1 -0
- package/dist/icons/components/UiGearSix.cjs +15 -0
- package/dist/icons/components/UiGearSix.cjs.map +1 -0
- package/dist/icons/components/UiGearSix.d.ts +15 -0
- package/dist/icons/components/UiGearSix.d.ts.map +1 -0
- package/dist/icons/components/UiGearSix.js +15 -0
- package/dist/icons/components/UiGearSix.js.map +1 -0
- package/dist/icons/components/UiGitCommit.cjs +15 -0
- package/dist/icons/components/UiGitCommit.cjs.map +1 -0
- package/dist/icons/components/UiGitCommit.d.ts +15 -0
- package/dist/icons/components/UiGitCommit.d.ts.map +1 -0
- package/dist/icons/components/UiGitCommit.js +15 -0
- package/dist/icons/components/UiGitCommit.js.map +1 -0
- package/dist/icons/components/UiHandPalm.cjs +15 -0
- package/dist/icons/components/UiHandPalm.cjs.map +1 -0
- package/dist/icons/components/UiHandPalm.d.ts +15 -0
- package/dist/icons/components/UiHandPalm.d.ts.map +1 -0
- package/dist/icons/components/UiHandPalm.js +15 -0
- package/dist/icons/components/UiHandPalm.js.map +1 -0
- package/dist/icons/components/UiKeyboard.cjs +15 -0
- package/dist/icons/components/UiKeyboard.cjs.map +1 -0
- package/dist/icons/components/UiKeyboard.d.ts +15 -0
- package/dist/icons/components/UiKeyboard.d.ts.map +1 -0
- package/dist/icons/components/UiKeyboard.js +15 -0
- package/dist/icons/components/UiKeyboard.js.map +1 -0
- package/dist/icons/components/UiListChecks.cjs +15 -0
- package/dist/icons/components/UiListChecks.cjs.map +1 -0
- package/dist/icons/components/UiListChecks.d.ts +15 -0
- package/dist/icons/components/UiListChecks.d.ts.map +1 -0
- package/dist/icons/components/UiListChecks.js +15 -0
- package/dist/icons/components/UiListChecks.js.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.cjs +10 -0
- package/dist/icons/components/UiLogoAnthropic.cjs.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.d.ts +9 -0
- package/dist/icons/components/UiLogoAnthropic.d.ts.map +1 -0
- package/dist/icons/components/UiLogoAnthropic.js +10 -0
- package/dist/icons/components/UiLogoAnthropic.js.map +1 -0
- package/dist/icons/components/UiLogoClaude.cjs +10 -0
- package/dist/icons/components/UiLogoClaude.cjs.map +1 -0
- package/dist/icons/components/UiLogoClaude.d.ts +9 -0
- package/dist/icons/components/UiLogoClaude.d.ts.map +1 -0
- package/dist/icons/components/UiLogoClaude.js +10 -0
- package/dist/icons/components/UiLogoClaude.js.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.cjs +10 -0
- package/dist/icons/components/UiLogoDeepseek.cjs.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.d.ts +9 -0
- package/dist/icons/components/UiLogoDeepseek.d.ts.map +1 -0
- package/dist/icons/components/UiLogoDeepseek.js +10 -0
- package/dist/icons/components/UiLogoDeepseek.js.map +1 -0
- package/dist/icons/components/UiLogoGemini.cjs +10 -0
- package/dist/icons/components/UiLogoGemini.cjs.map +1 -0
- package/dist/icons/components/UiLogoGemini.d.ts +9 -0
- package/dist/icons/components/UiLogoGemini.d.ts.map +1 -0
- package/dist/icons/components/UiLogoGemini.js +10 -0
- package/dist/icons/components/UiLogoGemini.js.map +1 -0
- package/dist/icons/components/UiLogoGoogle.cjs +10 -0
- package/dist/icons/components/UiLogoGoogle.cjs.map +1 -0
- package/dist/icons/components/UiLogoGoogle.d.ts +9 -0
- package/dist/icons/components/UiLogoGoogle.d.ts.map +1 -0
- package/dist/icons/components/UiLogoGoogle.js +10 -0
- package/dist/icons/components/UiLogoGoogle.js.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.cjs +10 -0
- package/dist/icons/components/UiLogoHuggingface.cjs.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.d.ts +9 -0
- package/dist/icons/components/UiLogoHuggingface.d.ts.map +1 -0
- package/dist/icons/components/UiLogoHuggingface.js +10 -0
- package/dist/icons/components/UiLogoHuggingface.js.map +1 -0
- package/dist/icons/components/UiLogoMeta.cjs +10 -0
- package/dist/icons/components/UiLogoMeta.cjs.map +1 -0
- package/dist/icons/components/UiLogoMeta.d.ts +9 -0
- package/dist/icons/components/UiLogoMeta.d.ts.map +1 -0
- package/dist/icons/components/UiLogoMeta.js +10 -0
- package/dist/icons/components/UiLogoMeta.js.map +1 -0
- package/dist/icons/components/UiLogoMistral.cjs +10 -0
- package/dist/icons/components/UiLogoMistral.cjs.map +1 -0
- package/dist/icons/components/UiLogoMistral.d.ts +9 -0
- package/dist/icons/components/UiLogoMistral.d.ts.map +1 -0
- package/dist/icons/components/UiLogoMistral.js +10 -0
- package/dist/icons/components/UiLogoMistral.js.map +1 -0
- package/dist/icons/components/UiLogoOllama.cjs +10 -0
- package/dist/icons/components/UiLogoOllama.cjs.map +1 -0
- package/dist/icons/components/UiLogoOllama.d.ts +9 -0
- package/dist/icons/components/UiLogoOllama.d.ts.map +1 -0
- package/dist/icons/components/UiLogoOllama.js +10 -0
- package/dist/icons/components/UiLogoOllama.js.map +1 -0
- package/dist/icons/components/UiLogoOpenai.cjs +10 -0
- package/dist/icons/components/UiLogoOpenai.cjs.map +1 -0
- package/dist/icons/components/UiLogoOpenai.d.ts +9 -0
- package/dist/icons/components/UiLogoOpenai.d.ts.map +1 -0
- package/dist/icons/components/UiLogoOpenai.js +10 -0
- package/dist/icons/components/UiLogoOpenai.js.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.cjs +10 -0
- package/dist/icons/components/UiLogoPerplexity.cjs.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.d.ts +9 -0
- package/dist/icons/components/UiLogoPerplexity.d.ts.map +1 -0
- package/dist/icons/components/UiLogoPerplexity.js +10 -0
- package/dist/icons/components/UiLogoPerplexity.js.map +1 -0
- package/dist/icons/components/UiPalette.cjs +15 -0
- package/dist/icons/components/UiPalette.cjs.map +1 -0
- package/dist/icons/components/UiPalette.d.ts +15 -0
- package/dist/icons/components/UiPalette.d.ts.map +1 -0
- package/dist/icons/components/UiPalette.js +15 -0
- package/dist/icons/components/UiPalette.js.map +1 -0
- package/dist/icons/components/UiPauseCircle.cjs +15 -0
- package/dist/icons/components/UiPauseCircle.cjs.map +1 -0
- package/dist/icons/components/UiPauseCircle.d.ts +15 -0
- package/dist/icons/components/UiPauseCircle.d.ts.map +1 -0
- package/dist/icons/components/UiPauseCircle.js +15 -0
- package/dist/icons/components/UiPauseCircle.js.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.cjs +15 -0
- package/dist/icons/components/UiPencilSimpleLine.cjs.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.d.ts +15 -0
- package/dist/icons/components/UiPencilSimpleLine.d.ts.map +1 -0
- package/dist/icons/components/UiPencilSimpleLine.js +15 -0
- package/dist/icons/components/UiPencilSimpleLine.js.map +1 -0
- package/dist/icons/components/UiPlugsConnected.cjs +15 -0
- package/dist/icons/components/UiPlugsConnected.cjs.map +1 -0
- package/dist/icons/components/UiPlugsConnected.d.ts +15 -0
- package/dist/icons/components/UiPlugsConnected.d.ts.map +1 -0
- package/dist/icons/components/UiPlugsConnected.js +15 -0
- package/dist/icons/components/UiPlugsConnected.js.map +1 -0
- package/dist/icons/components/UiProhibit.cjs +15 -0
- package/dist/icons/components/UiProhibit.cjs.map +1 -0
- package/dist/icons/components/UiProhibit.d.ts +15 -0
- package/dist/icons/components/UiProhibit.d.ts.map +1 -0
- package/dist/icons/components/UiProhibit.js +15 -0
- package/dist/icons/components/UiProhibit.js.map +1 -0
- package/dist/icons/components/UiRepeat.cjs +15 -0
- package/dist/icons/components/UiRepeat.cjs.map +1 -0
- package/dist/icons/components/UiRepeat.d.ts +15 -0
- package/dist/icons/components/UiRepeat.d.ts.map +1 -0
- package/dist/icons/components/UiRepeat.js +15 -0
- package/dist/icons/components/UiRepeat.js.map +1 -0
- package/dist/icons/components/UiScan.cjs +15 -0
- package/dist/icons/components/UiScan.cjs.map +1 -0
- package/dist/icons/components/UiScan.d.ts +15 -0
- package/dist/icons/components/UiScan.d.ts.map +1 -0
- package/dist/icons/components/UiScan.js +15 -0
- package/dist/icons/components/UiScan.js.map +1 -0
- package/dist/icons/components/UiScroll.cjs +15 -0
- package/dist/icons/components/UiScroll.cjs.map +1 -0
- package/dist/icons/components/UiScroll.d.ts +15 -0
- package/dist/icons/components/UiScroll.d.ts.map +1 -0
- package/dist/icons/components/UiScroll.js +15 -0
- package/dist/icons/components/UiScroll.js.map +1 -0
- package/dist/icons/components/UiShieldSlash.cjs +15 -0
- package/dist/icons/components/UiShieldSlash.cjs.map +1 -0
- package/dist/icons/components/UiShieldSlash.d.ts +15 -0
- package/dist/icons/components/UiShieldSlash.d.ts.map +1 -0
- package/dist/icons/components/UiShieldSlash.js +15 -0
- package/dist/icons/components/UiShieldSlash.js.map +1 -0
- package/dist/icons/components/UiStack.cjs +19 -0
- package/dist/icons/components/UiStack.cjs.map +1 -0
- package/dist/icons/components/UiStack.d.ts +15 -0
- package/dist/icons/components/UiStack.d.ts.map +1 -0
- package/dist/icons/components/UiStack.js +19 -0
- package/dist/icons/components/UiStack.js.map +1 -0
- package/dist/icons/components/UiStrategy.cjs +15 -0
- package/dist/icons/components/UiStrategy.cjs.map +1 -0
- package/dist/icons/components/UiStrategy.d.ts +15 -0
- package/dist/icons/components/UiStrategy.d.ts.map +1 -0
- package/dist/icons/components/UiStrategy.js +15 -0
- package/dist/icons/components/UiStrategy.js.map +1 -0
- package/dist/icons/components/UiThermometer.cjs +15 -0
- package/dist/icons/components/UiThermometer.cjs.map +1 -0
- package/dist/icons/components/UiThermometer.d.ts +15 -0
- package/dist/icons/components/UiThermometer.d.ts.map +1 -0
- package/dist/icons/components/UiThermometer.js +15 -0
- package/dist/icons/components/UiThermometer.js.map +1 -0
- package/dist/icons/components/UiTimer.cjs +15 -0
- package/dist/icons/components/UiTimer.cjs.map +1 -0
- package/dist/icons/components/UiTimer.d.ts +15 -0
- package/dist/icons/components/UiTimer.d.ts.map +1 -0
- package/dist/icons/components/UiTimer.js +15 -0
- package/dist/icons/components/UiTimer.js.map +1 -0
- package/dist/icons/index.d.ts +84 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons.cjs +132 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +132 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +186 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +190 -5
- package/dist/index.js.map +1 -1
- package/dist/layout/Workspace.cjs +191 -0
- package/dist/layout/Workspace.cjs.map +1 -0
- package/dist/layout/Workspace.d.ts +17 -0
- package/dist/layout/Workspace.d.ts.map +1 -0
- package/dist/layout/Workspace.js +191 -0
- package/dist/layout/Workspace.js.map +1 -0
- package/dist/layout/Workspace.model.cjs +142 -0
- package/dist/layout/Workspace.model.cjs.map +1 -0
- package/dist/layout/Workspace.model.d.ts +43 -0
- package/dist/layout/Workspace.model.d.ts.map +1 -0
- package/dist/layout/Workspace.model.js +142 -0
- package/dist/layout/Workspace.model.js.map +1 -0
- package/dist/layout/Workspace.regions.cjs +305 -0
- package/dist/layout/Workspace.regions.cjs.map +1 -0
- package/dist/layout/Workspace.regions.d.ts +17 -0
- package/dist/layout/Workspace.regions.d.ts.map +1 -0
- package/dist/layout/Workspace.regions.js +305 -0
- package/dist/layout/Workspace.regions.js.map +1 -0
- package/dist/lib/tokens.cjs +14 -0
- package/dist/lib/tokens.cjs.map +1 -0
- package/dist/lib/tokens.d.ts +5 -0
- package/dist/lib/tokens.d.ts.map +1 -0
- package/dist/lib/tokens.js +14 -0
- package/dist/lib/tokens.js.map +1 -0
- package/dist/monaco/MonacoEditor.cjs +69 -0
- package/dist/monaco/MonacoEditor.cjs.map +1 -0
- package/dist/monaco/MonacoEditor.d.ts +5 -0
- package/dist/monaco/MonacoEditor.d.ts.map +1 -0
- package/dist/monaco/MonacoEditor.js +52 -0
- package/dist/monaco/MonacoEditor.js.map +1 -0
- package/dist/monaco/MonacoProvider.cjs +22 -0
- package/dist/monaco/MonacoProvider.cjs.map +1 -0
- package/dist/monaco/MonacoProvider.d.ts +3 -0
- package/dist/monaco/MonacoProvider.d.ts.map +1 -0
- package/dist/monaco/MonacoProvider.js +22 -0
- package/dist/monaco/MonacoProvider.js.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.cjs +108 -0
- package/dist/monaco/MonacoSchemaEditor.cjs.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.d.ts +4 -0
- package/dist/monaco/MonacoSchemaEditor.d.ts.map +1 -0
- package/dist/monaco/MonacoSchemaEditor.js +108 -0
- package/dist/monaco/MonacoSchemaEditor.js.map +1 -0
- package/dist/monaco/schema-normalizer.cjs +38 -0
- package/dist/monaco/schema-normalizer.cjs.map +1 -0
- package/dist/monaco/schema-normalizer.d.ts +7 -0
- package/dist/monaco/schema-normalizer.d.ts.map +1 -0
- package/dist/monaco/schema-normalizer.js +38 -0
- package/dist/monaco/schema-normalizer.js.map +1 -0
- package/dist/monaco/schema-registry.cjs +67 -0
- package/dist/monaco/schema-registry.cjs.map +1 -0
- package/dist/monaco/schema-registry.d.ts +3 -0
- package/dist/monaco/schema-registry.d.ts.map +1 -0
- package/dist/monaco/schema-registry.js +67 -0
- package/dist/monaco/schema-registry.js.map +1 -0
- package/dist/monaco/types.d.ts +31 -0
- package/dist/monaco/types.d.ts.map +1 -0
- package/dist/monaco/use-monaco-worker.cjs +10 -0
- package/dist/monaco/use-monaco-worker.cjs.map +1 -0
- package/dist/monaco/use-monaco-worker.d.ts +4 -0
- package/dist/monaco/use-monaco-worker.d.ts.map +1 -0
- package/dist/monaco/use-monaco-worker.js +10 -0
- package/dist/monaco/use-monaco-worker.js.map +1 -0
- package/dist/monaco-schema.cjs +5 -0
- package/dist/monaco-schema.cjs.map +1 -0
- package/dist/monaco-schema.d.ts +3 -0
- package/dist/monaco-schema.d.ts.map +1 -0
- package/dist/monaco-schema.js +5 -0
- package/dist/monaco-schema.js.map +1 -0
- package/dist/monaco.cjs +11 -0
- package/dist/monaco.cjs.map +1 -0
- package/dist/monaco.d.ts +6 -0
- package/dist/monaco.d.ts.map +1 -0
- package/dist/monaco.js +11 -0
- package/dist/monaco.js.map +1 -0
- package/dist/overlay/CellActions.cjs +183 -0
- package/dist/overlay/CellActions.cjs.map +1 -0
- package/dist/overlay/CellActions.d.ts +18 -0
- package/dist/overlay/CellActions.d.ts.map +1 -0
- package/dist/overlay/CellActions.js +183 -0
- package/dist/overlay/CellActions.js.map +1 -0
- package/dist/overlay/DropdownMenu.cjs +50 -59
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts +21 -2
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js +38 -47
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.cjs +210 -0
- package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -0
- package/dist/overlay/DropdownMenuSubmenu.d.ts +12 -0
- package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -0
- package/dist/overlay/DropdownMenuSubmenu.js +210 -0
- package/dist/overlay/DropdownMenuSubmenu.js.map +1 -0
- package/dist/overlay/Modal.cjs +14 -2
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +9 -2
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +14 -2
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/dropdownMenuContext.cjs +16 -0
- package/dist/overlay/dropdownMenuContext.cjs.map +1 -0
- package/dist/overlay/dropdownMenuContext.d.ts +16 -0
- package/dist/overlay/dropdownMenuContext.d.ts.map +1 -0
- package/dist/overlay/dropdownMenuContext.js +16 -0
- package/dist/overlay/dropdownMenuContext.js.map +1 -0
- package/dist/rpc/CommandOutput.cjs +28 -9
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.d.ts +4 -2
- package/dist/rpc/CommandOutput.d.ts.map +1 -1
- package/dist/rpc/CommandOutput.js +28 -9
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +8 -1
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +9 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +8 -1
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationActionBar.cjs +63 -41
- package/dist/rpc/OperationActionBar.cjs.map +1 -1
- package/dist/rpc/OperationActionBar.d.ts +2 -1
- package/dist/rpc/OperationActionBar.d.ts.map +1 -1
- package/dist/rpc/OperationActionBar.js +63 -41
- package/dist/rpc/OperationActionBar.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +111 -80
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +2 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +112 -81
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs +2 -0
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts +3 -2
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js +2 -0
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.cjs +448 -0
- package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.d.ts +28 -0
- package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.js +448 -0
- package/dist/rpc/OperationEntityContextPicker.js.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.cjs +60 -0
- package/dist/rpc/OperationEntityContextPicker.model.cjs.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.d.ts +7 -0
- package/dist/rpc/OperationEntityContextPicker.model.d.ts.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.model.js +60 -0
- package/dist/rpc/OperationEntityContextPicker.model.js.map +1 -0
- package/dist/rpc/OperationEntityPage.cjs +47 -22
- package/dist/rpc/OperationEntityPage.cjs.map +1 -1
- package/dist/rpc/OperationEntityPage.d.ts +32 -2
- package/dist/rpc/OperationEntityPage.d.ts.map +1 -1
- package/dist/rpc/OperationEntityPage.js +47 -22
- package/dist/rpc/OperationEntityPage.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +4 -2
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +3 -2
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +4 -2
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/SchemaActionForm.cjs +151 -17
- package/dist/rpc/SchemaActionForm.cjs.map +1 -1
- package/dist/rpc/SchemaActionForm.d.ts +7 -1
- package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
- package/dist/rpc/SchemaActionForm.js +152 -18
- package/dist/rpc/SchemaActionForm.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +24 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc.cjs +6 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +5 -3
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +6 -0
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +8 -0
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +8 -0
- package/dist/tailwind-preset.js.map +1 -1
- package/oxlint-plugins/README.md +82 -19
- package/oxlint-plugins/clicky-ui-no-adhoc-overlay.js +5 -50
- package/oxlint-plugins/clicky-ui-no-direct-z-index.js +134 -0
- package/oxlint-plugins/clicky-ui.js +3 -0
- package/package.json +26 -3
- package/dist/data/chat/ContextUsage.cjs +0 -99
- package/dist/data/chat/ContextUsage.cjs.map +0 -1
- package/dist/data/chat/ContextUsage.d.ts +0 -19
- package/dist/data/chat/ContextUsage.d.ts.map +0 -1
- package/dist/data/chat/ContextUsage.js +0 -99
- package/dist/data/chat/ContextUsage.js.map +0 -1
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { UiRobotAi } from "../../icons/components/UiRobotAi.js";
|
|
2
|
+
import { UiTerminal } from "../../icons/components/UiTerminal.js";
|
|
3
|
+
import { UiColumns } from "../../icons/components/UiColumns.js";
|
|
4
|
+
import { UiCloud } from "../../icons/components/UiCloud.js";
|
|
5
|
+
const SPEC_RUNTIME_FAMILIES = [
|
|
6
|
+
{
|
|
7
|
+
id: "claude",
|
|
8
|
+
label: "Claude",
|
|
9
|
+
provider: "claude-agent",
|
|
10
|
+
modes: [
|
|
11
|
+
{ id: "agent", label: "Agent", backend: "claude-agent", icon: UiRobotAi, title: "Claude Agent SDK" },
|
|
12
|
+
{ id: "cli", label: "CLI", backend: "claude-cli", icon: UiTerminal, title: "Claude Code CLI" },
|
|
13
|
+
{ id: "cmux", label: "cmux", backend: "claude-cmux", icon: UiColumns, title: "Claude multiplexer" }
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: "codex",
|
|
18
|
+
label: "Codex",
|
|
19
|
+
provider: "codex-cli",
|
|
20
|
+
modes: [
|
|
21
|
+
{ id: "agent", label: "Agent", backend: "codex-agent", icon: UiRobotAi, title: "Codex agent" },
|
|
22
|
+
{ id: "cli", label: "CLI", backend: "codex-cli", icon: UiTerminal, title: "Codex CLI" },
|
|
23
|
+
{ id: "cmux", label: "cmux", backend: "codex-cmux", icon: UiColumns, title: "Codex multiplexer" }
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "openai",
|
|
28
|
+
label: "OpenAI",
|
|
29
|
+
provider: "openai",
|
|
30
|
+
modes: [{ id: "api", label: "API", backend: "openai", icon: UiCloud, title: "OpenAI API" }]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: "anthropic",
|
|
34
|
+
label: "Anthropic",
|
|
35
|
+
provider: "anthropic",
|
|
36
|
+
modes: [{ id: "api", label: "API", backend: "anthropic", icon: UiCloud, title: "Anthropic API" }]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "gemini",
|
|
40
|
+
label: "Gemini",
|
|
41
|
+
provider: "googleai",
|
|
42
|
+
modes: [
|
|
43
|
+
{ id: "api", label: "API", backend: "gemini", icon: UiCloud, title: "Gemini API" },
|
|
44
|
+
{ id: "cli", label: "CLI", backend: "gemini-cli", icon: UiTerminal, title: "Gemini CLI" }
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "deepseek",
|
|
49
|
+
label: "DeepSeek",
|
|
50
|
+
provider: "deepseek",
|
|
51
|
+
modes: [{ id: "api", label: "API", backend: "deepseek", icon: UiCloud, title: "DeepSeek API" }]
|
|
52
|
+
}
|
|
53
|
+
];
|
|
54
|
+
function familyById(families, id) {
|
|
55
|
+
const match = families.find((family) => family.id === id);
|
|
56
|
+
if (match) return match;
|
|
57
|
+
const first = families[0];
|
|
58
|
+
if (!first) throw new Error("SpecRuntimeFamily catalog must not be empty");
|
|
59
|
+
return first;
|
|
60
|
+
}
|
|
61
|
+
function firstMode(family) {
|
|
62
|
+
const mode = family.modes[0];
|
|
63
|
+
if (!mode) {
|
|
64
|
+
throw new Error(`SpecRuntimeFamily "${family.id}" must have at least one mode`);
|
|
65
|
+
}
|
|
66
|
+
return mode;
|
|
67
|
+
}
|
|
68
|
+
function backendForFamilyMode(families, familyId, modeId) {
|
|
69
|
+
const family = familyById(families, familyId);
|
|
70
|
+
const mode = family.modes.find((candidate) => candidate.id === modeId) ?? firstMode(family);
|
|
71
|
+
return mode.backend;
|
|
72
|
+
}
|
|
73
|
+
function selectionForBackend(families, backend) {
|
|
74
|
+
const target = (backend ?? "").toLowerCase();
|
|
75
|
+
for (const family of families) {
|
|
76
|
+
for (const mode of family.modes) {
|
|
77
|
+
if (mode.backend.toLowerCase() === target) {
|
|
78
|
+
return { family: family.id, mode: mode.id };
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const first = familyById(families, "");
|
|
83
|
+
return { family: first.id, mode: firstMode(first).id };
|
|
84
|
+
}
|
|
85
|
+
function familyForBackend(families, backend) {
|
|
86
|
+
const target = (backend ?? "").toLowerCase();
|
|
87
|
+
return families.find(
|
|
88
|
+
(family) => family.modes.some((mode) => mode.backend.toLowerCase() === target)
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
function labelForBackend(backend, families = SPEC_RUNTIME_FAMILIES) {
|
|
92
|
+
const target = (backend ?? "").toLowerCase();
|
|
93
|
+
for (const family of families) {
|
|
94
|
+
for (const mode of family.modes) {
|
|
95
|
+
if (mode.backend.toLowerCase() === target) {
|
|
96
|
+
return `${family.label} ${mode.label}`;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return "Prompt default";
|
|
101
|
+
}
|
|
102
|
+
function modelsForFamily(models, family, backend) {
|
|
103
|
+
if (!family) return models;
|
|
104
|
+
return models.filter(
|
|
105
|
+
(model) => model.provider === family.provider && modelMatchesBackend(model, backend)
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
function modelBelongsToFamily(modelId, models, family, backend) {
|
|
109
|
+
if (!modelId) return true;
|
|
110
|
+
const selected = models.find((model) => model.id === modelId);
|
|
111
|
+
if (!selected) return false;
|
|
112
|
+
const providerMatches = !family || selected.provider === family.provider;
|
|
113
|
+
return providerMatches && modelMatchesBackend(selected, backend);
|
|
114
|
+
}
|
|
115
|
+
function modelMatchesBackend(model, backend) {
|
|
116
|
+
var _a;
|
|
117
|
+
if (!backend) return true;
|
|
118
|
+
const backends = (_a = model.backends) == null ? void 0 : _a.filter(Boolean);
|
|
119
|
+
if (!backends || backends.length === 0) return true;
|
|
120
|
+
return backends.includes(backend);
|
|
121
|
+
}
|
|
122
|
+
export {
|
|
123
|
+
SPEC_RUNTIME_FAMILIES,
|
|
124
|
+
backendForFamilyMode,
|
|
125
|
+
familyById,
|
|
126
|
+
familyForBackend,
|
|
127
|
+
firstMode,
|
|
128
|
+
labelForBackend,
|
|
129
|
+
modelBelongsToFamily,
|
|
130
|
+
modelsForFamily,
|
|
131
|
+
selectionForBackend
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=runtime-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-mode.js","sources":["../../../src/data/ai/runtime-mode.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport { UiCloud, UiColumns, UiRobotAi, UiTerminal } from \"../../icons\";\nimport type { ChatModel } from \"../chat/types\";\n\n// The runtime \"mode\" of a backend is factored into two UI axes — a provider\n// **family** (Claude, OpenAI, …) and a **mode** within it (Agent, CLI, cmux,\n// API) — that together resolve to a single `spec.backend` string. This is the\n// only place that mapping lives; both the inline PromptRunEditor and the modal\n// SpecRuntimeEditor drive their Mode pickers from it.\n\nexport type SpecRuntimeModeOption = {\n /** UI mode id within a family (e.g. \"agent\", \"cli\", \"cmux\", \"api\"). */\n id: string;\n label: string;\n /** The concrete `spec.backend` this (family, mode) resolves to. */\n backend: string;\n icon?: StaticIconComponent | undefined;\n title?: string | undefined;\n};\n\nexport type SpecRuntimeFamily = {\n id: string;\n label: string;\n /** The model-catalog provider (`ChatModel.provider`) whose models this family runs. */\n provider: string;\n modes: SpecRuntimeModeOption[];\n};\n\n// Default catalog covering the captain/gavel backend set. Hosts may pass their\n// own via the `families` prop when their catalog differs.\nexport const SPEC_RUNTIME_FAMILIES: SpecRuntimeFamily[] = [\n {\n id: \"claude\",\n label: \"Claude\",\n provider: \"claude-agent\",\n modes: [\n { id: \"agent\", label: \"Agent\", backend: \"claude-agent\", icon: UiRobotAi, title: \"Claude Agent SDK\" },\n { id: \"cli\", label: \"CLI\", backend: \"claude-cli\", icon: UiTerminal, title: \"Claude Code CLI\" },\n { id: \"cmux\", label: \"cmux\", backend: \"claude-cmux\", icon: UiColumns, title: \"Claude multiplexer\" },\n ],\n },\n {\n id: \"codex\",\n label: \"Codex\",\n provider: \"codex-cli\",\n modes: [\n { id: \"agent\", label: \"Agent\", backend: \"codex-agent\", icon: UiRobotAi, title: \"Codex agent\" },\n { id: \"cli\", label: \"CLI\", backend: \"codex-cli\", icon: UiTerminal, title: \"Codex CLI\" },\n { id: \"cmux\", label: \"cmux\", backend: \"codex-cmux\", icon: UiColumns, title: \"Codex multiplexer\" },\n ],\n },\n {\n id: \"openai\",\n label: \"OpenAI\",\n provider: \"openai\",\n modes: [{ id: \"api\", label: \"API\", backend: \"openai\", icon: UiCloud, title: \"OpenAI API\" }],\n },\n {\n id: \"anthropic\",\n label: \"Anthropic\",\n provider: \"anthropic\",\n modes: [{ id: \"api\", label: \"API\", backend: \"anthropic\", icon: UiCloud, title: \"Anthropic API\" }],\n },\n {\n id: \"gemini\",\n label: \"Gemini\",\n provider: \"googleai\",\n modes: [\n { id: \"api\", label: \"API\", backend: \"gemini\", icon: UiCloud, title: \"Gemini API\" },\n { id: \"cli\", label: \"CLI\", backend: \"gemini-cli\", icon: UiTerminal, title: \"Gemini CLI\" },\n ],\n },\n {\n id: \"deepseek\",\n label: \"DeepSeek\",\n provider: \"deepseek\",\n modes: [{ id: \"api\", label: \"API\", backend: \"deepseek\", icon: UiCloud, title: \"DeepSeek API\" }],\n },\n];\n\nexport function familyById(\n families: SpecRuntimeFamily[],\n id: string,\n): SpecRuntimeFamily {\n const match = families.find((family) => family.id === id);\n if (match) return match;\n const first = families[0];\n if (!first) throw new Error(\"SpecRuntimeFamily catalog must not be empty\");\n return first;\n}\n\nexport function firstMode(family: SpecRuntimeFamily): SpecRuntimeModeOption {\n const mode = family.modes[0];\n if (!mode) {\n throw new Error(`SpecRuntimeFamily \"${family.id}\" must have at least one mode`);\n }\n return mode;\n}\n\nexport function backendForFamilyMode(\n families: SpecRuntimeFamily[],\n familyId: string,\n modeId: string,\n): string {\n const family = familyById(families, familyId);\n const mode = family.modes.find((candidate) => candidate.id === modeId) ?? firstMode(family);\n return mode.backend;\n}\n\nexport function selectionForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined,\n): { family: string; mode: string } {\n const target = (backend ?? \"\").toLowerCase();\n for (const family of families) {\n for (const mode of family.modes) {\n if (mode.backend.toLowerCase() === target) {\n return { family: family.id, mode: mode.id };\n }\n }\n }\n const first = familyById(families, \"\");\n return { family: first.id, mode: firstMode(first).id };\n}\n\nexport function familyForBackend(\n families: SpecRuntimeFamily[],\n backend: string | undefined,\n): SpecRuntimeFamily | undefined {\n const target = (backend ?? \"\").toLowerCase();\n return families.find((family) =>\n family.modes.some((mode) => mode.backend.toLowerCase() === target),\n );\n}\n\n// \"claude-agent\" -> \"Claude Agent\"; unknown/empty -> \"Prompt default\".\nexport function labelForBackend(\n backend: string | undefined,\n families: SpecRuntimeFamily[] = SPEC_RUNTIME_FAMILIES,\n): string {\n const target = (backend ?? \"\").toLowerCase();\n for (const family of families) {\n for (const mode of family.modes) {\n if (mode.backend.toLowerCase() === target) {\n return `${family.label} ${mode.label}`;\n }\n }\n }\n return \"Prompt default\";\n}\n\nexport function modelsForFamily(\n models: ChatModel[],\n family: SpecRuntimeFamily | undefined,\n backend?: string | undefined,\n): ChatModel[] {\n if (!family) return models;\n return models.filter(\n (model) => model.provider === family.provider && modelMatchesBackend(model, backend),\n );\n}\n\nexport function modelBelongsToFamily(\n modelId: string | undefined,\n models: ChatModel[],\n family: SpecRuntimeFamily | undefined,\n backend?: string | undefined,\n): boolean {\n if (!modelId) return true;\n const selected = models.find((model) => model.id === modelId);\n if (!selected) return false;\n const providerMatches = !family || selected.provider === family.provider;\n return providerMatches && modelMatchesBackend(selected, backend);\n}\n\nfunction modelMatchesBackend(\n model: ChatModel,\n backend: string | undefined,\n): boolean {\n if (!backend) return true;\n const backends = model.backends?.filter(Boolean);\n if (!backends || backends.length === 0) return true;\n return backends.includes(backend);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const SessionViewer_model = require("./SessionViewer.model.cjs");
|
|
4
|
+
const UiWrench = require("../../icons/components/UiWrench.cjs");
|
|
5
|
+
const UiEye = require("../../icons/components/UiEye.cjs");
|
|
6
|
+
const UiQuestion = require("../../icons/components/UiQuestion.cjs");
|
|
7
|
+
const UiPencilSimpleLine = require("../../icons/components/UiPencilSimpleLine.cjs");
|
|
8
|
+
const UiStrategy = require("../../icons/components/UiStrategy.cjs");
|
|
9
|
+
const UiPlayCircle = require("../../icons/components/UiPlayCircle.cjs");
|
|
10
|
+
const UiBoxes = require("../../icons/components/UiBoxes.cjs");
|
|
11
|
+
const UiBox = require("../../icons/components/UiBox.cjs");
|
|
12
|
+
const UiGitBranch = require("../../icons/components/UiGitBranch.cjs");
|
|
13
|
+
const UiTrash = require("../../icons/components/UiTrash.cjs");
|
|
14
|
+
const UiShield = require("../../icons/components/UiShield.cjs");
|
|
15
|
+
const UiSearch = require("../../icons/components/UiSearch.cjs");
|
|
16
|
+
const UiCloudDownload = require("../../icons/components/UiCloudDownload.cjs");
|
|
17
|
+
const UiBeaker = require("../../icons/components/UiBeaker.cjs");
|
|
18
|
+
const UiPackage = require("../../icons/components/UiPackage.cjs");
|
|
4
19
|
const CATEGORY_LABELS = {
|
|
5
20
|
build: "Build",
|
|
6
21
|
test: "Test",
|
|
@@ -18,6 +33,23 @@ const CATEGORY_LABELS = {
|
|
|
18
33
|
read: "Read",
|
|
19
34
|
other: "Other"
|
|
20
35
|
};
|
|
36
|
+
const CATEGORY_ICONS = {
|
|
37
|
+
build: UiPackage.UiPackage,
|
|
38
|
+
test: UiBeaker.UiBeaker,
|
|
39
|
+
install: UiCloudDownload.UiCloudDownload,
|
|
40
|
+
explore: UiSearch.UiSearch,
|
|
41
|
+
lint: UiShield.UiShieldCheck,
|
|
42
|
+
cleanup: UiTrash.UiTrash,
|
|
43
|
+
git: UiGitBranch.UiGitBranch,
|
|
44
|
+
docker: UiBox.UiBox,
|
|
45
|
+
k8s: UiBoxes.UiBoxes,
|
|
46
|
+
run: UiPlayCircle.UiPlayCircle,
|
|
47
|
+
plan: UiStrategy.UiStrategy,
|
|
48
|
+
edit: UiPencilSimpleLine.UiPencilSimpleLine,
|
|
49
|
+
clarify: UiQuestion.UiQuestion,
|
|
50
|
+
read: UiEye.UiEye,
|
|
51
|
+
other: UiWrench.UiWrench
|
|
52
|
+
};
|
|
21
53
|
const CATEGORY_PRIORITY = {
|
|
22
54
|
install: 100,
|
|
23
55
|
edit: 90,
|
|
@@ -183,6 +215,7 @@ function eventCategory(event) {
|
|
|
183
215
|
return classifyToolCategory(event.tool ?? "", event.toolInput);
|
|
184
216
|
}
|
|
185
217
|
function isEventVisible(event, v) {
|
|
218
|
+
if (event.pending) return true;
|
|
186
219
|
if (event.kind === "thinking") return v.showThinking;
|
|
187
220
|
if (event.kind !== "tool") return true;
|
|
188
221
|
const tool = event.tool ?? "";
|
|
@@ -210,6 +243,7 @@ function collectSessionFilters(events) {
|
|
|
210
243
|
sources: [...sources].sort()
|
|
211
244
|
};
|
|
212
245
|
}
|
|
246
|
+
exports.CATEGORY_ICONS = CATEGORY_ICONS;
|
|
213
247
|
exports.CATEGORY_LABELS = CATEGORY_LABELS;
|
|
214
248
|
exports.classifyCommand = classifyCommand;
|
|
215
249
|
exports.classifyToolCategory = classifyToolCategory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-categories.cjs","sources":["../../../src/data/ai/session-categories.ts"],"sourcesContent":["import { getSessionAction, type SessionEvent } from \"./SessionViewer.model\";\n\n// ── Captain category taxonomy ───────────────────────────────────────────────\n// A faithful TypeScript port of captain's `pkg/bash` category classifier\n// (`category.go` + `category_config.yaml`) so the SessionViewer's filter mirrors\n// what `captain history --category` / `--tool` expose. A tool maps to a category\n// either directly (Read → explore, Edit → edit, …) or, for Bash, by classifying\n// the command string.\n\nexport type SessionCategory =\n | \"build\"\n | \"test\"\n | \"install\"\n | \"explore\"\n | \"lint\"\n | \"cleanup\"\n | \"git\"\n | \"docker\"\n | \"k8s\"\n | \"run\"\n | \"plan\"\n | \"edit\"\n | \"clarify\"\n | \"read\"\n | \"other\";\n\nexport const CATEGORY_LABELS: Record<SessionCategory, string> = {\n build: \"Build\",\n test: \"Test\",\n install: \"Install\",\n explore: \"Explore\",\n lint: \"Lint\",\n cleanup: \"Cleanup\",\n git: \"Git\",\n docker: \"Docker\",\n k8s: \"Kubernetes\",\n run: \"Run\",\n plan: \"Plan\",\n edit: \"Edit\",\n clarify: \"Clarify\",\n read: \"Read\",\n other: \"Other\",\n};\n\nconst CATEGORY_PRIORITY: Record<SessionCategory, number> = {\n install: 100,\n edit: 90,\n run: 80,\n test: 70,\n build: 60,\n cleanup: 50,\n docker: 40,\n k8s: 40,\n git: 30,\n explore: 20,\n lint: 20,\n plan: 20,\n read: 15,\n clarify: 10,\n other: 0,\n};\n\ninterface CategoryRule {\n tools?: string[];\n commands?: string[];\n patterns?: string[];\n}\n\n// Mirrors pkg/bash/category_config.yaml. Order is irrelevant — ties resolve by\n// match specificity, then priority, then category name (see chooseBetterMatch).\nconst CATEGORY_CONFIG: Array<[SessionCategory, CategoryRule]> = [\n [\n \"build\",\n {\n commands: [\"go build\", \"make build\", \"make all\", \"cargo build\", \"npm run build\", \"yarn build\", \"task build\", \"gradle build\", \"mvn compile\", \"mvn package\", \"dotnet build\", \"pnpm build\", \"bun build\", \"mage\", \"bazel build\", \"nx build\", \"turbo build\", \"javac\"],\n patterns: [\".*gradle.*(build|compile|bootJar|jar).*\", \".*mvn.*(compile|package)\", \"^go build\", \"^make\\\\s*$\", \"^make\\\\s+(build|all)\\\\b\", \"^cargo build\", \"^task build\"],\n },\n ],\n [\n \"test\",\n {\n commands: [\"go test\", \"pytest\", \"npm test\", \"yarn test\", \"task test\", \"make test\", \"cargo test\", \"mvn test\", \"gradle test\", \"vitest\", \"jest\", \"bun test\", \"dotnet test\", \"ginkgo\", \"gotestsum\", \"zig test\"],\n patterns: [\".*gradle.*test\", \".*mvn.*test\", \"^go test\", \"^pytest\", \"^npm (run )?test\", \"^make\\\\s+test\", \"^vitest\", \"^jest\", \"^bun test\", \"^ginkgo\", \"^gotestsum\"],\n },\n ],\n [\n \"install\",\n {\n commands: [\"npm install\", \"npm i\", \"yarn install\", \"yarn add\", \"go mod tidy\", \"go mod download\", \"go get\", \"pip install\", \"pip3 install\", \"cargo add\", \"brew install\", \"apt install\", \"apt-get install\", \"pnpm install\", \"pnpm add\", \"bun install\", \"bun add\", \"poetry install\", \"poetry add\", \"uv pip install\", \"pdm install\", \"pdm add\"],\n patterns: [\"^npm (install|i)\\\\b\", \"^yarn (install|add)\\\\b\", \"^pip3? install\", \"^go (mod tidy|mod download|get)\", \"^pnpm (install|add)\\\\b\", \"^bun (install|add)\\\\b\", \"^poetry (install|add)\\\\b\", \"^uv pip install\", \"^pdm (install|add)\\\\b\"],\n },\n ],\n [\n \"explore\",\n {\n tools: [\"Read\", \"Grep\", \"Glob\", \"LSP\", \"WebFetch\", \"WebSearch\"],\n commands: [\"ls\", \"md5\", \"echo\", \"find\", \"grep\", \"rg\", \"ag\", \"cat\", \"head\", \"tail\", \"less\", \"more\", \"tree\", \"wc\", \"file\", \"stat\", \"du\", \"df\", \"pwd\", \"which\", \"whereis\", \"type\", \"fd\", \"bat\", \"exa\", \"eza\", \"fzf\", \"jq\", \"yq\", \"ripgrep\", \"sd\", \"diff\", \"go list\", \"git status\", \"git diff\", \"git log\", \"ps\", \"printenv\", \"sed\"],\n patterns: [\"^ls\\\\b\", \"^find\\\\b\", \"^grep\\\\b\", \"^rg\\\\b\", \"^cat\\\\b\", \"^head\\\\b\", \"^tail\\\\b\", \"^tree\\\\b\", \"^fd\\\\b\", \"^bat\\\\b\", \"^exa\\\\b\", \"^eza\\\\b\", \"^jq\\\\b\", \"^yq\\\\b\", \"^diff\\\\b\", \"^go list\\\\b\", \"^git\\\\s+(status|diff|log)\\\\b\"],\n },\n ],\n [\n \"lint\",\n {\n commands: [\"golangci-lint\", \"eslint\", \"gofmt\", \"go fmt\", \"prettier\", \"black\", \"flake8\", \"pylint\", \"rubocop\", \"shellcheck\", \"task fmt\", \"make fmt\", \"make lint\", \"biome\", \"ruff\", \"mypy\", \"staticcheck\", \"buf lint\", \"deno lint\", \"oxlint\"],\n patterns: [\"lint\", \"^go fmt\", \"^gofmt\", \"^prettier\", \"^black\\\\b\", \"^biome\\\\b\", \"^ruff\\\\b\", \"^mypy\\\\b\", \"^staticcheck\\\\b\"],\n },\n ],\n [\n \"cleanup\",\n {\n commands: [\"rm\", \"rmdir\", \"git clean\", \"make clean\", \"cargo clean\", \"go clean\", \"npm cache clean\", \"docker prune\", \"docker system prune\"],\n patterns: [\"^rm\\\\b\", \"^rmdir\\\\b\", \"clean\\\\b\", \"prune\\\\b\"],\n },\n ],\n [\n \"git\",\n {\n commands: [\"git show\", \"git branch\", \"git checkout\", \"git switch\", \"git commit\", \"git push\", \"git pull\", \"git fetch\", \"git merge\", \"git rebase\", \"git stash\", \"git add\", \"git reset\", \"git clone\", \"git remote\", \"git tag\"],\n patterns: [\"^git\\\\b\"],\n },\n ],\n [\n \"docker\",\n {\n commands: [\"docker run\", \"docker build\", \"docker push\", \"docker pull\", \"docker ps\", \"docker images\", \"docker logs\", \"docker exec\", \"docker stop\", \"docker start\", \"docker rm\", \"docker rmi\", \"docker-compose\", \"podman\"],\n patterns: [\"^docker\\\\b\", \"^docker-compose\\\\b\", \"^podman\\\\b\"],\n },\n ],\n [\n \"k8s\",\n {\n commands: [\"kubectl\", \"helm\", \"k9s\", \"kubectx\", \"kubens\", \"kustomize\", \"minikube\", \"kind\"],\n patterns: [\"^kubectl\\\\b\", \"^helm\\\\b\", \"^k9s\\\\b\", \"^kubectx\\\\b\", \"^kubens\\\\b\", \"^kustomize\\\\b\", \"^minikube\\\\b\", \"^kind\\\\b\"],\n },\n ],\n [\n \"run\",\n {\n tools: [\"KillShell\"],\n commands: [\"go run\", \"python\", \"python3\", \"node\", \"bun run\", \"deno run\", \"ruby\", \"perl\", \"php\", \"java\"],\n patterns: [\".*gradle.*run.*\", \"^go run\\\\b\", \"^python3?\\\\b\", \"^node\\\\b\", \"^bun run\\\\b\", \"^deno run\\\\b\", \"^ruby\\\\b\", \"^perl\\\\b\", \"^php\\\\b\", \"^java\\\\s+-jar\\\\b\", \"^\\\\./[\\\\w.-]+\\\\.(sh|bash|py|rb|pl)$\", \"^bash\\\\s+\\\\S+\\\\.sh\"],\n },\n ],\n [\n \"plan\",\n {\n tools: [\"Task\", \"TodoWrite\", \"EnterPlanMode\"],\n commands: [\"task\", \"make help\", \"task explore\", \"task plan\", \"task todos\", \"task todo\"],\n patterns: [\"^task\\\\s*$\", \"^task\\\\s+--list\", \"^make\\\\s+help\"],\n },\n ],\n [\n \"edit\",\n {\n tools: [\"Edit\", \"Write\", \"NotebookEdit\"],\n commands: [\"mkdir\"],\n patterns: [\"sed.* -i\"],\n },\n ],\n [\"clarify\", { tools: [\"AskUserQuestion\", \"ExitPlanMode\", \"TaskOutput\"] }],\n];\n\nconst COMPILED: Array<[SessionCategory, RegExp[]]> = CATEGORY_CONFIG.map(([cat, rule]) => [\n cat,\n (rule.patterns ?? []).map((p) => new RegExp(p)),\n]);\n\ninterface CategoryMatch {\n category: SessionCategory;\n specificity: number;\n matched: boolean;\n}\n\n// Port of betterCategoryMatch: prefer higher match specificity, then higher\n// category priority, then the lexicographically smaller name.\nfunction chooseBetterMatch(current: CategoryMatch, candidate: CategoryMatch): CategoryMatch {\n if (!candidate.matched || candidate.category === \"other\") return current;\n if (!current.matched || current.category === \"other\") return candidate;\n if (candidate.specificity > current.specificity) return candidate;\n if (candidate.specificity < current.specificity) return current;\n const cp = CATEGORY_PRIORITY[candidate.category];\n const kp = CATEGORY_PRIORITY[current.category];\n if (cp > kp) return candidate;\n if (cp < kp) return current;\n return candidate.category < current.category ? candidate : current;\n}\n\n/** Classify a raw shell command, mirroring captain's `Classify`. */\nexport function classifyCommand(command: string): SessionCategory {\n const cmd = command.trim();\n if (!cmd) return \"other\";\n let best: CategoryMatch = { category: \"other\", specificity: 0, matched: false };\n for (const [cat, rule] of CATEGORY_CONFIG) {\n for (const prefix of rule.commands ?? []) {\n if (cmd === prefix || cmd.startsWith(`${prefix} `)) {\n best = chooseBetterMatch(best, { category: cat, specificity: prefix.length, matched: true });\n }\n }\n }\n for (const [cat, regexps] of COMPILED) {\n for (const re of regexps) {\n if (re.test(cmd)) {\n best = chooseBetterMatch(best, { category: cat, specificity: re.source.length, matched: true });\n }\n }\n }\n return best.category;\n}\n\nfunction classifyTool(tool: string): SessionCategory {\n for (const [cat, rule] of CATEGORY_CONFIG) {\n if (rule.tools?.includes(tool)) return cat;\n }\n return \"other\";\n}\n\nfunction inputString(input: Record<string, unknown> | undefined, key: string): string {\n return typeof input?.[key] === \"string\" ? (input[key] as string) : \"\";\n}\n\n/** Category for a tool invocation, mirroring captain's classifyToolUse: a\n * `.claude/plans/` path is plan; a Bash command falls through to command\n * classification when the tool itself is uncategorized. */\nexport function classifyToolCategory(tool: string, input?: Record<string, unknown>): SessionCategory {\n const filePath =\n inputString(input, \"file_path\") || inputString(input, \"notebook_path\") || inputString(input, \"path\");\n if (filePath.includes(\"/.claude/plans/\")) return \"plan\";\n const cat = classifyTool(tool);\n if (cat === \"other\" && tool === \"Bash\") return classifyCommand(inputString(input, \"command\"));\n return cat;\n}\n\n/** The category of a normalized event, or null for non-tool events. */\nexport function eventCategory(event: SessionEvent): SessionCategory | null {\n if (event.kind !== \"tool\") return null;\n return classifyToolCategory(event.tool ?? \"\", event.toolInput);\n}\n\nexport interface SessionFilters {\n /** Distinct categories present, ordered by descending impact priority. */\n categories: SessionCategory[];\n /** Distinct tools present, with display labels, ordered by label. */\n tools: Array<{ key: string; label: string }>;\n /** Distinct sources present (e.g. \"claude\", \"codex\"). */\n sources: string[];\n}\n\nexport interface SessionVisibility {\n hiddenCategories: ReadonlySet<SessionCategory>;\n hiddenTools: ReadonlySet<string>;\n hiddenSources: ReadonlySet<string>;\n /** When false, reasoning (\"thinking\") events are hidden. */\n showThinking: boolean;\n}\n\n/** Whether an event survives the active filters. Tool events are gated by their\n * tool, category and source; reasoning by `showThinking`; everything else\n * (user/assistant/error) is always shown. */\nexport function isEventVisible(event: SessionEvent, v: SessionVisibility): boolean {\n if (event.kind === \"thinking\") return v.showThinking;\n if (event.kind !== \"tool\") return true;\n const tool = event.tool ?? \"\";\n if (v.hiddenTools.has(tool)) return false;\n if (v.hiddenCategories.has(classifyToolCategory(tool, event.toolInput))) return false;\n if (event.source && v.hiddenSources.has(event.source)) return false;\n return true;\n}\n\n/** Collect the filter facets (category / tool / source) present in a session. */\nexport function collectSessionFilters(events: SessionEvent[]): SessionFilters {\n const categories = new Set<SessionCategory>();\n const tools = new Map<string, string>();\n const sources = new Set<string>();\n for (const event of events) {\n if (event.kind !== \"tool\") continue;\n const tool = event.tool ?? \"\";\n categories.add(classifyToolCategory(tool, event.toolInput));\n if (!tools.has(tool)) tools.set(tool, getSessionAction(tool).label);\n if (event.source) sources.add(event.source);\n }\n return {\n categories: [...categories].sort(\n (a, b) => CATEGORY_PRIORITY[b] - CATEGORY_PRIORITY[a] || a.localeCompare(b),\n ),\n tools: [...tools].map(([key, label]) => ({ key, label })).sort((a, b) => a.label.localeCompare(b.label)),\n sources: [...sources].sort(),\n };\n}\n"],"names":["getSessionAction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-categories.cjs","sources":["../../../src/data/ai/session-categories.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport {\n UiBeaker,\n UiBox,\n UiBoxes,\n UiCloudDownload,\n UiEye,\n UiGitBranch,\n UiPackage,\n UiPencilSimpleLine,\n UiPlayCircle,\n UiQuestion,\n UiSearch,\n UiShieldCheck,\n UiStrategy,\n UiTrash,\n UiWrench,\n} from \"../../icons\";\nimport { getSessionAction, type SessionEvent } from \"./SessionViewer.model\";\n\n// ── Captain category taxonomy ───────────────────────────────────────────────\n// A faithful TypeScript port of captain's `pkg/bash` category classifier\n// (`category.go` + `category_config.yaml`) so the SessionViewer's filter mirrors\n// what `captain history --category` / `--tool` expose. A tool maps to a category\n// either directly (Read → explore, Edit → edit, …) or, for Bash, by classifying\n// the command string.\n\nexport type SessionCategory =\n | \"build\"\n | \"test\"\n | \"install\"\n | \"explore\"\n | \"lint\"\n | \"cleanup\"\n | \"git\"\n | \"docker\"\n | \"k8s\"\n | \"run\"\n | \"plan\"\n | \"edit\"\n | \"clarify\"\n | \"read\"\n | \"other\";\n\nexport const CATEGORY_LABELS: Record<SessionCategory, string> = {\n build: \"Build\",\n test: \"Test\",\n install: \"Install\",\n explore: \"Explore\",\n lint: \"Lint\",\n cleanup: \"Cleanup\",\n git: \"Git\",\n docker: \"Docker\",\n k8s: \"Kubernetes\",\n run: \"Run\",\n plan: \"Plan\",\n edit: \"Edit\",\n clarify: \"Clarify\",\n read: \"Read\",\n other: \"Other\",\n};\n\n// Per-category glyph, following the \"Agent Action Icons\" workflow palette — run\n// plays, plan strategizes, verify-adjacent categories (test/lint) carry their\n// own marks so the filter menu reads at a glance.\nexport const CATEGORY_ICONS: Record<SessionCategory, StaticIconComponent> = {\n build: UiPackage,\n test: UiBeaker,\n install: UiCloudDownload,\n explore: UiSearch,\n lint: UiShieldCheck,\n cleanup: UiTrash,\n git: UiGitBranch,\n docker: UiBox,\n k8s: UiBoxes,\n run: UiPlayCircle,\n plan: UiStrategy,\n edit: UiPencilSimpleLine,\n clarify: UiQuestion,\n read: UiEye,\n other: UiWrench,\n};\n\nconst CATEGORY_PRIORITY: Record<SessionCategory, number> = {\n install: 100,\n edit: 90,\n run: 80,\n test: 70,\n build: 60,\n cleanup: 50,\n docker: 40,\n k8s: 40,\n git: 30,\n explore: 20,\n lint: 20,\n plan: 20,\n read: 15,\n clarify: 10,\n other: 0,\n};\n\ninterface CategoryRule {\n tools?: string[];\n commands?: string[];\n patterns?: string[];\n}\n\n// Mirrors pkg/bash/category_config.yaml. Order is irrelevant — ties resolve by\n// match specificity, then priority, then category name (see chooseBetterMatch).\nconst CATEGORY_CONFIG: Array<[SessionCategory, CategoryRule]> = [\n [\n \"build\",\n {\n commands: [\"go build\", \"make build\", \"make all\", \"cargo build\", \"npm run build\", \"yarn build\", \"task build\", \"gradle build\", \"mvn compile\", \"mvn package\", \"dotnet build\", \"pnpm build\", \"bun build\", \"mage\", \"bazel build\", \"nx build\", \"turbo build\", \"javac\"],\n patterns: [\".*gradle.*(build|compile|bootJar|jar).*\", \".*mvn.*(compile|package)\", \"^go build\", \"^make\\\\s*$\", \"^make\\\\s+(build|all)\\\\b\", \"^cargo build\", \"^task build\"],\n },\n ],\n [\n \"test\",\n {\n commands: [\"go test\", \"pytest\", \"npm test\", \"yarn test\", \"task test\", \"make test\", \"cargo test\", \"mvn test\", \"gradle test\", \"vitest\", \"jest\", \"bun test\", \"dotnet test\", \"ginkgo\", \"gotestsum\", \"zig test\"],\n patterns: [\".*gradle.*test\", \".*mvn.*test\", \"^go test\", \"^pytest\", \"^npm (run )?test\", \"^make\\\\s+test\", \"^vitest\", \"^jest\", \"^bun test\", \"^ginkgo\", \"^gotestsum\"],\n },\n ],\n [\n \"install\",\n {\n commands: [\"npm install\", \"npm i\", \"yarn install\", \"yarn add\", \"go mod tidy\", \"go mod download\", \"go get\", \"pip install\", \"pip3 install\", \"cargo add\", \"brew install\", \"apt install\", \"apt-get install\", \"pnpm install\", \"pnpm add\", \"bun install\", \"bun add\", \"poetry install\", \"poetry add\", \"uv pip install\", \"pdm install\", \"pdm add\"],\n patterns: [\"^npm (install|i)\\\\b\", \"^yarn (install|add)\\\\b\", \"^pip3? install\", \"^go (mod tidy|mod download|get)\", \"^pnpm (install|add)\\\\b\", \"^bun (install|add)\\\\b\", \"^poetry (install|add)\\\\b\", \"^uv pip install\", \"^pdm (install|add)\\\\b\"],\n },\n ],\n [\n \"explore\",\n {\n tools: [\"Read\", \"Grep\", \"Glob\", \"LSP\", \"WebFetch\", \"WebSearch\"],\n commands: [\"ls\", \"md5\", \"echo\", \"find\", \"grep\", \"rg\", \"ag\", \"cat\", \"head\", \"tail\", \"less\", \"more\", \"tree\", \"wc\", \"file\", \"stat\", \"du\", \"df\", \"pwd\", \"which\", \"whereis\", \"type\", \"fd\", \"bat\", \"exa\", \"eza\", \"fzf\", \"jq\", \"yq\", \"ripgrep\", \"sd\", \"diff\", \"go list\", \"git status\", \"git diff\", \"git log\", \"ps\", \"printenv\", \"sed\"],\n patterns: [\"^ls\\\\b\", \"^find\\\\b\", \"^grep\\\\b\", \"^rg\\\\b\", \"^cat\\\\b\", \"^head\\\\b\", \"^tail\\\\b\", \"^tree\\\\b\", \"^fd\\\\b\", \"^bat\\\\b\", \"^exa\\\\b\", \"^eza\\\\b\", \"^jq\\\\b\", \"^yq\\\\b\", \"^diff\\\\b\", \"^go list\\\\b\", \"^git\\\\s+(status|diff|log)\\\\b\"],\n },\n ],\n [\n \"lint\",\n {\n commands: [\"golangci-lint\", \"eslint\", \"gofmt\", \"go fmt\", \"prettier\", \"black\", \"flake8\", \"pylint\", \"rubocop\", \"shellcheck\", \"task fmt\", \"make fmt\", \"make lint\", \"biome\", \"ruff\", \"mypy\", \"staticcheck\", \"buf lint\", \"deno lint\", \"oxlint\"],\n patterns: [\"lint\", \"^go fmt\", \"^gofmt\", \"^prettier\", \"^black\\\\b\", \"^biome\\\\b\", \"^ruff\\\\b\", \"^mypy\\\\b\", \"^staticcheck\\\\b\"],\n },\n ],\n [\n \"cleanup\",\n {\n commands: [\"rm\", \"rmdir\", \"git clean\", \"make clean\", \"cargo clean\", \"go clean\", \"npm cache clean\", \"docker prune\", \"docker system prune\"],\n patterns: [\"^rm\\\\b\", \"^rmdir\\\\b\", \"clean\\\\b\", \"prune\\\\b\"],\n },\n ],\n [\n \"git\",\n {\n commands: [\"git show\", \"git branch\", \"git checkout\", \"git switch\", \"git commit\", \"git push\", \"git pull\", \"git fetch\", \"git merge\", \"git rebase\", \"git stash\", \"git add\", \"git reset\", \"git clone\", \"git remote\", \"git tag\"],\n patterns: [\"^git\\\\b\"],\n },\n ],\n [\n \"docker\",\n {\n commands: [\"docker run\", \"docker build\", \"docker push\", \"docker pull\", \"docker ps\", \"docker images\", \"docker logs\", \"docker exec\", \"docker stop\", \"docker start\", \"docker rm\", \"docker rmi\", \"docker-compose\", \"podman\"],\n patterns: [\"^docker\\\\b\", \"^docker-compose\\\\b\", \"^podman\\\\b\"],\n },\n ],\n [\n \"k8s\",\n {\n commands: [\"kubectl\", \"helm\", \"k9s\", \"kubectx\", \"kubens\", \"kustomize\", \"minikube\", \"kind\"],\n patterns: [\"^kubectl\\\\b\", \"^helm\\\\b\", \"^k9s\\\\b\", \"^kubectx\\\\b\", \"^kubens\\\\b\", \"^kustomize\\\\b\", \"^minikube\\\\b\", \"^kind\\\\b\"],\n },\n ],\n [\n \"run\",\n {\n tools: [\"KillShell\"],\n commands: [\"go run\", \"python\", \"python3\", \"node\", \"bun run\", \"deno run\", \"ruby\", \"perl\", \"php\", \"java\"],\n patterns: [\".*gradle.*run.*\", \"^go run\\\\b\", \"^python3?\\\\b\", \"^node\\\\b\", \"^bun run\\\\b\", \"^deno run\\\\b\", \"^ruby\\\\b\", \"^perl\\\\b\", \"^php\\\\b\", \"^java\\\\s+-jar\\\\b\", \"^\\\\./[\\\\w.-]+\\\\.(sh|bash|py|rb|pl)$\", \"^bash\\\\s+\\\\S+\\\\.sh\"],\n },\n ],\n [\n \"plan\",\n {\n tools: [\"Task\", \"TodoWrite\", \"EnterPlanMode\"],\n commands: [\"task\", \"make help\", \"task explore\", \"task plan\", \"task todos\", \"task todo\"],\n patterns: [\"^task\\\\s*$\", \"^task\\\\s+--list\", \"^make\\\\s+help\"],\n },\n ],\n [\n \"edit\",\n {\n tools: [\"Edit\", \"Write\", \"NotebookEdit\"],\n commands: [\"mkdir\"],\n patterns: [\"sed.* -i\"],\n },\n ],\n [\"clarify\", { tools: [\"AskUserQuestion\", \"ExitPlanMode\", \"TaskOutput\"] }],\n];\n\nconst COMPILED: Array<[SessionCategory, RegExp[]]> = CATEGORY_CONFIG.map(([cat, rule]) => [\n cat,\n (rule.patterns ?? []).map((p) => new RegExp(p)),\n]);\n\ninterface CategoryMatch {\n category: SessionCategory;\n specificity: number;\n matched: boolean;\n}\n\n// Port of betterCategoryMatch: prefer higher match specificity, then higher\n// category priority, then the lexicographically smaller name.\nfunction chooseBetterMatch(current: CategoryMatch, candidate: CategoryMatch): CategoryMatch {\n if (!candidate.matched || candidate.category === \"other\") return current;\n if (!current.matched || current.category === \"other\") return candidate;\n if (candidate.specificity > current.specificity) return candidate;\n if (candidate.specificity < current.specificity) return current;\n const cp = CATEGORY_PRIORITY[candidate.category];\n const kp = CATEGORY_PRIORITY[current.category];\n if (cp > kp) return candidate;\n if (cp < kp) return current;\n return candidate.category < current.category ? candidate : current;\n}\n\n/** Classify a raw shell command, mirroring captain's `Classify`. */\nexport function classifyCommand(command: string): SessionCategory {\n const cmd = command.trim();\n if (!cmd) return \"other\";\n let best: CategoryMatch = { category: \"other\", specificity: 0, matched: false };\n for (const [cat, rule] of CATEGORY_CONFIG) {\n for (const prefix of rule.commands ?? []) {\n if (cmd === prefix || cmd.startsWith(`${prefix} `)) {\n best = chooseBetterMatch(best, { category: cat, specificity: prefix.length, matched: true });\n }\n }\n }\n for (const [cat, regexps] of COMPILED) {\n for (const re of regexps) {\n if (re.test(cmd)) {\n best = chooseBetterMatch(best, { category: cat, specificity: re.source.length, matched: true });\n }\n }\n }\n return best.category;\n}\n\nfunction classifyTool(tool: string): SessionCategory {\n for (const [cat, rule] of CATEGORY_CONFIG) {\n if (rule.tools?.includes(tool)) return cat;\n }\n return \"other\";\n}\n\nfunction inputString(input: Record<string, unknown> | undefined, key: string): string {\n return typeof input?.[key] === \"string\" ? (input[key] as string) : \"\";\n}\n\n/** Category for a tool invocation, mirroring captain's classifyToolUse: a\n * `.claude/plans/` path is plan; a Bash command falls through to command\n * classification when the tool itself is uncategorized. */\nexport function classifyToolCategory(tool: string, input?: Record<string, unknown>): SessionCategory {\n const filePath =\n inputString(input, \"file_path\") || inputString(input, \"notebook_path\") || inputString(input, \"path\");\n if (filePath.includes(\"/.claude/plans/\")) return \"plan\";\n const cat = classifyTool(tool);\n if (cat === \"other\" && tool === \"Bash\") return classifyCommand(inputString(input, \"command\"));\n return cat;\n}\n\n/** The category of a normalized event, or null for non-tool events. */\nexport function eventCategory(event: SessionEvent): SessionCategory | null {\n if (event.kind !== \"tool\") return null;\n return classifyToolCategory(event.tool ?? \"\", event.toolInput);\n}\n\nexport interface SessionFilters {\n /** Distinct categories present, ordered by descending impact priority. */\n categories: SessionCategory[];\n /** Distinct tools present, with display labels, ordered by label. */\n tools: Array<{ key: string; label: string }>;\n /** Distinct sources present (e.g. \"claude\", \"codex\"). */\n sources: string[];\n}\n\nexport interface SessionVisibility {\n hiddenCategories: ReadonlySet<SessionCategory>;\n hiddenTools: ReadonlySet<string>;\n hiddenSources: ReadonlySet<string>;\n /** When false, reasoning (\"thinking\") events are hidden. */\n showThinking: boolean;\n}\n\n/** Whether an event survives the active filters. Tool events are gated by their\n * tool, category and source; reasoning by `showThinking`; everything else\n * (user/assistant/error) is always shown. */\nexport function isEventVisible(event: SessionEvent, v: SessionVisibility): boolean {\n if (event.pending) return true;\n if (event.kind === \"thinking\") return v.showThinking;\n if (event.kind !== \"tool\") return true;\n const tool = event.tool ?? \"\";\n if (v.hiddenTools.has(tool)) return false;\n if (v.hiddenCategories.has(classifyToolCategory(tool, event.toolInput))) return false;\n if (event.source && v.hiddenSources.has(event.source)) return false;\n return true;\n}\n\n/** Collect the filter facets (category / tool / source) present in a session. */\nexport function collectSessionFilters(events: SessionEvent[]): SessionFilters {\n const categories = new Set<SessionCategory>();\n const tools = new Map<string, string>();\n const sources = new Set<string>();\n for (const event of events) {\n if (event.kind !== \"tool\") continue;\n const tool = event.tool ?? \"\";\n categories.add(classifyToolCategory(tool, event.toolInput));\n if (!tools.has(tool)) tools.set(tool, getSessionAction(tool).label);\n if (event.source) sources.add(event.source);\n }\n return {\n categories: [...categories].sort(\n (a, b) => CATEGORY_PRIORITY[b] - CATEGORY_PRIORITY[a] || a.localeCompare(b),\n ),\n tools: [...tools].map(([key, label]) => ({ key, label })).sort((a, b) => a.label.localeCompare(b.label)),\n sources: [...sources].sort(),\n };\n}\n"],"names":["UiPackage","UiBeaker","UiCloudDownload","UiSearch","UiShieldCheck","UiTrash","UiGitBranch","UiBox","UiBoxes","UiPlayCircle","UiStrategy","UiPencilSimpleLine","UiQuestion","UiEye","UiWrench","getSessionAction"],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { StaticIconComponent } from '../Icon';
|
|
1
2
|
import { SessionEvent } from './SessionViewer.model';
|
|
2
3
|
export type SessionCategory = "build" | "test" | "install" | "explore" | "lint" | "cleanup" | "git" | "docker" | "k8s" | "run" | "plan" | "edit" | "clarify" | "read" | "other";
|
|
3
4
|
export declare const CATEGORY_LABELS: Record<SessionCategory, string>;
|
|
5
|
+
export declare const CATEGORY_ICONS: Record<SessionCategory, StaticIconComponent>;
|
|
4
6
|
/** Classify a raw shell command, mirroring captain's `Classify`. */
|
|
5
7
|
export declare function classifyCommand(command: string): SessionCategory;
|
|
6
8
|
/** Category for a tool invocation, mirroring captain's classifyToolUse: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-categories.d.ts","sourceRoot":"","sources":["../../../src/data/ai/session-categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS5E,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,KAAK,GACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,CAAC;AAEZ,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAgB3D,CAAC;AAiJF,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAmBhE;AAaD;;4DAE4D;AAC5D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAOnG;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAGzE;AAED,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,qEAAqE;IACrE,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC/C,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;8CAE8C;AAC9C,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"session-categories.d.ts","sourceRoot":"","sources":["../../../src/data/ai/session-categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAkBnD,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS5E,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,MAAM,GACN,SAAS,GACT,SAAS,GACT,MAAM,GACN,SAAS,GACT,KAAK,GACL,QAAQ,GACR,KAAK,GACL,KAAK,GACL,MAAM,GACN,MAAM,GACN,SAAS,GACT,MAAM,GACN,OAAO,CAAC;AAEZ,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAgB3D,CAAC;AAKF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAgBvE,CAAC;AAiJF,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAmBhE;AAaD;;4DAE4D;AAC5D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAOnG;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,GAAG,IAAI,CAGzE;AAED,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,qEAAqE;IACrE,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAC/C,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;8CAE8C;AAC9C,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CASjF;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,cAAc,CAkB5E"}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import { getSessionAction } from "./SessionViewer.model.js";
|
|
2
|
+
import { UiWrench } from "../../icons/components/UiWrench.js";
|
|
3
|
+
import { UiEye } from "../../icons/components/UiEye.js";
|
|
4
|
+
import { UiQuestion } from "../../icons/components/UiQuestion.js";
|
|
5
|
+
import { UiPencilSimpleLine } from "../../icons/components/UiPencilSimpleLine.js";
|
|
6
|
+
import { UiStrategy } from "../../icons/components/UiStrategy.js";
|
|
7
|
+
import { UiPlayCircle } from "../../icons/components/UiPlayCircle.js";
|
|
8
|
+
import { UiBoxes } from "../../icons/components/UiBoxes.js";
|
|
9
|
+
import { UiBox } from "../../icons/components/UiBox.js";
|
|
10
|
+
import { UiGitBranch } from "../../icons/components/UiGitBranch.js";
|
|
11
|
+
import { UiTrash } from "../../icons/components/UiTrash.js";
|
|
12
|
+
import { UiShieldCheck } from "../../icons/components/UiShield.js";
|
|
13
|
+
import { UiSearch } from "../../icons/components/UiSearch.js";
|
|
14
|
+
import { UiCloudDownload } from "../../icons/components/UiCloudDownload.js";
|
|
15
|
+
import { UiBeaker } from "../../icons/components/UiBeaker.js";
|
|
16
|
+
import { UiPackage } from "../../icons/components/UiPackage.js";
|
|
2
17
|
const CATEGORY_LABELS = {
|
|
3
18
|
build: "Build",
|
|
4
19
|
test: "Test",
|
|
@@ -16,6 +31,23 @@ const CATEGORY_LABELS = {
|
|
|
16
31
|
read: "Read",
|
|
17
32
|
other: "Other"
|
|
18
33
|
};
|
|
34
|
+
const CATEGORY_ICONS = {
|
|
35
|
+
build: UiPackage,
|
|
36
|
+
test: UiBeaker,
|
|
37
|
+
install: UiCloudDownload,
|
|
38
|
+
explore: UiSearch,
|
|
39
|
+
lint: UiShieldCheck,
|
|
40
|
+
cleanup: UiTrash,
|
|
41
|
+
git: UiGitBranch,
|
|
42
|
+
docker: UiBox,
|
|
43
|
+
k8s: UiBoxes,
|
|
44
|
+
run: UiPlayCircle,
|
|
45
|
+
plan: UiStrategy,
|
|
46
|
+
edit: UiPencilSimpleLine,
|
|
47
|
+
clarify: UiQuestion,
|
|
48
|
+
read: UiEye,
|
|
49
|
+
other: UiWrench
|
|
50
|
+
};
|
|
19
51
|
const CATEGORY_PRIORITY = {
|
|
20
52
|
install: 100,
|
|
21
53
|
edit: 90,
|
|
@@ -181,6 +213,7 @@ function eventCategory(event) {
|
|
|
181
213
|
return classifyToolCategory(event.tool ?? "", event.toolInput);
|
|
182
214
|
}
|
|
183
215
|
function isEventVisible(event, v) {
|
|
216
|
+
if (event.pending) return true;
|
|
184
217
|
if (event.kind === "thinking") return v.showThinking;
|
|
185
218
|
if (event.kind !== "tool") return true;
|
|
186
219
|
const tool = event.tool ?? "";
|
|
@@ -209,6 +242,7 @@ function collectSessionFilters(events) {
|
|
|
209
242
|
};
|
|
210
243
|
}
|
|
211
244
|
export {
|
|
245
|
+
CATEGORY_ICONS,
|
|
212
246
|
CATEGORY_LABELS,
|
|
213
247
|
classifyCommand,
|
|
214
248
|
classifyToolCategory,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-categories.js","sources":["../../../src/data/ai/session-categories.ts"],"sourcesContent":["import { getSessionAction, type SessionEvent } from \"./SessionViewer.model\";\n\n// ── Captain category taxonomy ───────────────────────────────────────────────\n// A faithful TypeScript port of captain's `pkg/bash` category classifier\n// (`category.go` + `category_config.yaml`) so the SessionViewer's filter mirrors\n// what `captain history --category` / `--tool` expose. A tool maps to a category\n// either directly (Read → explore, Edit → edit, …) or, for Bash, by classifying\n// the command string.\n\nexport type SessionCategory =\n | \"build\"\n | \"test\"\n | \"install\"\n | \"explore\"\n | \"lint\"\n | \"cleanup\"\n | \"git\"\n | \"docker\"\n | \"k8s\"\n | \"run\"\n | \"plan\"\n | \"edit\"\n | \"clarify\"\n | \"read\"\n | \"other\";\n\nexport const CATEGORY_LABELS: Record<SessionCategory, string> = {\n build: \"Build\",\n test: \"Test\",\n install: \"Install\",\n explore: \"Explore\",\n lint: \"Lint\",\n cleanup: \"Cleanup\",\n git: \"Git\",\n docker: \"Docker\",\n k8s: \"Kubernetes\",\n run: \"Run\",\n plan: \"Plan\",\n edit: \"Edit\",\n clarify: \"Clarify\",\n read: \"Read\",\n other: \"Other\",\n};\n\nconst CATEGORY_PRIORITY: Record<SessionCategory, number> = {\n install: 100,\n edit: 90,\n run: 80,\n test: 70,\n build: 60,\n cleanup: 50,\n docker: 40,\n k8s: 40,\n git: 30,\n explore: 20,\n lint: 20,\n plan: 20,\n read: 15,\n clarify: 10,\n other: 0,\n};\n\ninterface CategoryRule {\n tools?: string[];\n commands?: string[];\n patterns?: string[];\n}\n\n// Mirrors pkg/bash/category_config.yaml. Order is irrelevant — ties resolve by\n// match specificity, then priority, then category name (see chooseBetterMatch).\nconst CATEGORY_CONFIG: Array<[SessionCategory, CategoryRule]> = [\n [\n \"build\",\n {\n commands: [\"go build\", \"make build\", \"make all\", \"cargo build\", \"npm run build\", \"yarn build\", \"task build\", \"gradle build\", \"mvn compile\", \"mvn package\", \"dotnet build\", \"pnpm build\", \"bun build\", \"mage\", \"bazel build\", \"nx build\", \"turbo build\", \"javac\"],\n patterns: [\".*gradle.*(build|compile|bootJar|jar).*\", \".*mvn.*(compile|package)\", \"^go build\", \"^make\\\\s*$\", \"^make\\\\s+(build|all)\\\\b\", \"^cargo build\", \"^task build\"],\n },\n ],\n [\n \"test\",\n {\n commands: [\"go test\", \"pytest\", \"npm test\", \"yarn test\", \"task test\", \"make test\", \"cargo test\", \"mvn test\", \"gradle test\", \"vitest\", \"jest\", \"bun test\", \"dotnet test\", \"ginkgo\", \"gotestsum\", \"zig test\"],\n patterns: [\".*gradle.*test\", \".*mvn.*test\", \"^go test\", \"^pytest\", \"^npm (run )?test\", \"^make\\\\s+test\", \"^vitest\", \"^jest\", \"^bun test\", \"^ginkgo\", \"^gotestsum\"],\n },\n ],\n [\n \"install\",\n {\n commands: [\"npm install\", \"npm i\", \"yarn install\", \"yarn add\", \"go mod tidy\", \"go mod download\", \"go get\", \"pip install\", \"pip3 install\", \"cargo add\", \"brew install\", \"apt install\", \"apt-get install\", \"pnpm install\", \"pnpm add\", \"bun install\", \"bun add\", \"poetry install\", \"poetry add\", \"uv pip install\", \"pdm install\", \"pdm add\"],\n patterns: [\"^npm (install|i)\\\\b\", \"^yarn (install|add)\\\\b\", \"^pip3? install\", \"^go (mod tidy|mod download|get)\", \"^pnpm (install|add)\\\\b\", \"^bun (install|add)\\\\b\", \"^poetry (install|add)\\\\b\", \"^uv pip install\", \"^pdm (install|add)\\\\b\"],\n },\n ],\n [\n \"explore\",\n {\n tools: [\"Read\", \"Grep\", \"Glob\", \"LSP\", \"WebFetch\", \"WebSearch\"],\n commands: [\"ls\", \"md5\", \"echo\", \"find\", \"grep\", \"rg\", \"ag\", \"cat\", \"head\", \"tail\", \"less\", \"more\", \"tree\", \"wc\", \"file\", \"stat\", \"du\", \"df\", \"pwd\", \"which\", \"whereis\", \"type\", \"fd\", \"bat\", \"exa\", \"eza\", \"fzf\", \"jq\", \"yq\", \"ripgrep\", \"sd\", \"diff\", \"go list\", \"git status\", \"git diff\", \"git log\", \"ps\", \"printenv\", \"sed\"],\n patterns: [\"^ls\\\\b\", \"^find\\\\b\", \"^grep\\\\b\", \"^rg\\\\b\", \"^cat\\\\b\", \"^head\\\\b\", \"^tail\\\\b\", \"^tree\\\\b\", \"^fd\\\\b\", \"^bat\\\\b\", \"^exa\\\\b\", \"^eza\\\\b\", \"^jq\\\\b\", \"^yq\\\\b\", \"^diff\\\\b\", \"^go list\\\\b\", \"^git\\\\s+(status|diff|log)\\\\b\"],\n },\n ],\n [\n \"lint\",\n {\n commands: [\"golangci-lint\", \"eslint\", \"gofmt\", \"go fmt\", \"prettier\", \"black\", \"flake8\", \"pylint\", \"rubocop\", \"shellcheck\", \"task fmt\", \"make fmt\", \"make lint\", \"biome\", \"ruff\", \"mypy\", \"staticcheck\", \"buf lint\", \"deno lint\", \"oxlint\"],\n patterns: [\"lint\", \"^go fmt\", \"^gofmt\", \"^prettier\", \"^black\\\\b\", \"^biome\\\\b\", \"^ruff\\\\b\", \"^mypy\\\\b\", \"^staticcheck\\\\b\"],\n },\n ],\n [\n \"cleanup\",\n {\n commands: [\"rm\", \"rmdir\", \"git clean\", \"make clean\", \"cargo clean\", \"go clean\", \"npm cache clean\", \"docker prune\", \"docker system prune\"],\n patterns: [\"^rm\\\\b\", \"^rmdir\\\\b\", \"clean\\\\b\", \"prune\\\\b\"],\n },\n ],\n [\n \"git\",\n {\n commands: [\"git show\", \"git branch\", \"git checkout\", \"git switch\", \"git commit\", \"git push\", \"git pull\", \"git fetch\", \"git merge\", \"git rebase\", \"git stash\", \"git add\", \"git reset\", \"git clone\", \"git remote\", \"git tag\"],\n patterns: [\"^git\\\\b\"],\n },\n ],\n [\n \"docker\",\n {\n commands: [\"docker run\", \"docker build\", \"docker push\", \"docker pull\", \"docker ps\", \"docker images\", \"docker logs\", \"docker exec\", \"docker stop\", \"docker start\", \"docker rm\", \"docker rmi\", \"docker-compose\", \"podman\"],\n patterns: [\"^docker\\\\b\", \"^docker-compose\\\\b\", \"^podman\\\\b\"],\n },\n ],\n [\n \"k8s\",\n {\n commands: [\"kubectl\", \"helm\", \"k9s\", \"kubectx\", \"kubens\", \"kustomize\", \"minikube\", \"kind\"],\n patterns: [\"^kubectl\\\\b\", \"^helm\\\\b\", \"^k9s\\\\b\", \"^kubectx\\\\b\", \"^kubens\\\\b\", \"^kustomize\\\\b\", \"^minikube\\\\b\", \"^kind\\\\b\"],\n },\n ],\n [\n \"run\",\n {\n tools: [\"KillShell\"],\n commands: [\"go run\", \"python\", \"python3\", \"node\", \"bun run\", \"deno run\", \"ruby\", \"perl\", \"php\", \"java\"],\n patterns: [\".*gradle.*run.*\", \"^go run\\\\b\", \"^python3?\\\\b\", \"^node\\\\b\", \"^bun run\\\\b\", \"^deno run\\\\b\", \"^ruby\\\\b\", \"^perl\\\\b\", \"^php\\\\b\", \"^java\\\\s+-jar\\\\b\", \"^\\\\./[\\\\w.-]+\\\\.(sh|bash|py|rb|pl)$\", \"^bash\\\\s+\\\\S+\\\\.sh\"],\n },\n ],\n [\n \"plan\",\n {\n tools: [\"Task\", \"TodoWrite\", \"EnterPlanMode\"],\n commands: [\"task\", \"make help\", \"task explore\", \"task plan\", \"task todos\", \"task todo\"],\n patterns: [\"^task\\\\s*$\", \"^task\\\\s+--list\", \"^make\\\\s+help\"],\n },\n ],\n [\n \"edit\",\n {\n tools: [\"Edit\", \"Write\", \"NotebookEdit\"],\n commands: [\"mkdir\"],\n patterns: [\"sed.* -i\"],\n },\n ],\n [\"clarify\", { tools: [\"AskUserQuestion\", \"ExitPlanMode\", \"TaskOutput\"] }],\n];\n\nconst COMPILED: Array<[SessionCategory, RegExp[]]> = CATEGORY_CONFIG.map(([cat, rule]) => [\n cat,\n (rule.patterns ?? []).map((p) => new RegExp(p)),\n]);\n\ninterface CategoryMatch {\n category: SessionCategory;\n specificity: number;\n matched: boolean;\n}\n\n// Port of betterCategoryMatch: prefer higher match specificity, then higher\n// category priority, then the lexicographically smaller name.\nfunction chooseBetterMatch(current: CategoryMatch, candidate: CategoryMatch): CategoryMatch {\n if (!candidate.matched || candidate.category === \"other\") return current;\n if (!current.matched || current.category === \"other\") return candidate;\n if (candidate.specificity > current.specificity) return candidate;\n if (candidate.specificity < current.specificity) return current;\n const cp = CATEGORY_PRIORITY[candidate.category];\n const kp = CATEGORY_PRIORITY[current.category];\n if (cp > kp) return candidate;\n if (cp < kp) return current;\n return candidate.category < current.category ? candidate : current;\n}\n\n/** Classify a raw shell command, mirroring captain's `Classify`. */\nexport function classifyCommand(command: string): SessionCategory {\n const cmd = command.trim();\n if (!cmd) return \"other\";\n let best: CategoryMatch = { category: \"other\", specificity: 0, matched: false };\n for (const [cat, rule] of CATEGORY_CONFIG) {\n for (const prefix of rule.commands ?? []) {\n if (cmd === prefix || cmd.startsWith(`${prefix} `)) {\n best = chooseBetterMatch(best, { category: cat, specificity: prefix.length, matched: true });\n }\n }\n }\n for (const [cat, regexps] of COMPILED) {\n for (const re of regexps) {\n if (re.test(cmd)) {\n best = chooseBetterMatch(best, { category: cat, specificity: re.source.length, matched: true });\n }\n }\n }\n return best.category;\n}\n\nfunction classifyTool(tool: string): SessionCategory {\n for (const [cat, rule] of CATEGORY_CONFIG) {\n if (rule.tools?.includes(tool)) return cat;\n }\n return \"other\";\n}\n\nfunction inputString(input: Record<string, unknown> | undefined, key: string): string {\n return typeof input?.[key] === \"string\" ? (input[key] as string) : \"\";\n}\n\n/** Category for a tool invocation, mirroring captain's classifyToolUse: a\n * `.claude/plans/` path is plan; a Bash command falls through to command\n * classification when the tool itself is uncategorized. */\nexport function classifyToolCategory(tool: string, input?: Record<string, unknown>): SessionCategory {\n const filePath =\n inputString(input, \"file_path\") || inputString(input, \"notebook_path\") || inputString(input, \"path\");\n if (filePath.includes(\"/.claude/plans/\")) return \"plan\";\n const cat = classifyTool(tool);\n if (cat === \"other\" && tool === \"Bash\") return classifyCommand(inputString(input, \"command\"));\n return cat;\n}\n\n/** The category of a normalized event, or null for non-tool events. */\nexport function eventCategory(event: SessionEvent): SessionCategory | null {\n if (event.kind !== \"tool\") return null;\n return classifyToolCategory(event.tool ?? \"\", event.toolInput);\n}\n\nexport interface SessionFilters {\n /** Distinct categories present, ordered by descending impact priority. */\n categories: SessionCategory[];\n /** Distinct tools present, with display labels, ordered by label. */\n tools: Array<{ key: string; label: string }>;\n /** Distinct sources present (e.g. \"claude\", \"codex\"). */\n sources: string[];\n}\n\nexport interface SessionVisibility {\n hiddenCategories: ReadonlySet<SessionCategory>;\n hiddenTools: ReadonlySet<string>;\n hiddenSources: ReadonlySet<string>;\n /** When false, reasoning (\"thinking\") events are hidden. */\n showThinking: boolean;\n}\n\n/** Whether an event survives the active filters. Tool events are gated by their\n * tool, category and source; reasoning by `showThinking`; everything else\n * (user/assistant/error) is always shown. */\nexport function isEventVisible(event: SessionEvent, v: SessionVisibility): boolean {\n if (event.kind === \"thinking\") return v.showThinking;\n if (event.kind !== \"tool\") return true;\n const tool = event.tool ?? \"\";\n if (v.hiddenTools.has(tool)) return false;\n if (v.hiddenCategories.has(classifyToolCategory(tool, event.toolInput))) return false;\n if (event.source && v.hiddenSources.has(event.source)) return false;\n return true;\n}\n\n/** Collect the filter facets (category / tool / source) present in a session. */\nexport function collectSessionFilters(events: SessionEvent[]): SessionFilters {\n const categories = new Set<SessionCategory>();\n const tools = new Map<string, string>();\n const sources = new Set<string>();\n for (const event of events) {\n if (event.kind !== \"tool\") continue;\n const tool = event.tool ?? \"\";\n categories.add(classifyToolCategory(tool, event.toolInput));\n if (!tools.has(tool)) tools.set(tool, getSessionAction(tool).label);\n if (event.source) sources.add(event.source);\n }\n return {\n categories: [...categories].sort(\n (a, b) => CATEGORY_PRIORITY[b] - CATEGORY_PRIORITY[a] || a.localeCompare(b),\n ),\n tools: [...tools].map(([key, label]) => ({ key, label })).sort((a, b) => a.label.localeCompare(b.label)),\n sources: [...sources].sort(),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-categories.js","sources":["../../../src/data/ai/session-categories.ts"],"sourcesContent":["import type { StaticIconComponent } from \"../Icon\";\nimport {\n UiBeaker,\n UiBox,\n UiBoxes,\n UiCloudDownload,\n UiEye,\n UiGitBranch,\n UiPackage,\n UiPencilSimpleLine,\n UiPlayCircle,\n UiQuestion,\n UiSearch,\n UiShieldCheck,\n UiStrategy,\n UiTrash,\n UiWrench,\n} from \"../../icons\";\nimport { getSessionAction, type SessionEvent } from \"./SessionViewer.model\";\n\n// ── Captain category taxonomy ───────────────────────────────────────────────\n// A faithful TypeScript port of captain's `pkg/bash` category classifier\n// (`category.go` + `category_config.yaml`) so the SessionViewer's filter mirrors\n// what `captain history --category` / `--tool` expose. A tool maps to a category\n// either directly (Read → explore, Edit → edit, …) or, for Bash, by classifying\n// the command string.\n\nexport type SessionCategory =\n | \"build\"\n | \"test\"\n | \"install\"\n | \"explore\"\n | \"lint\"\n | \"cleanup\"\n | \"git\"\n | \"docker\"\n | \"k8s\"\n | \"run\"\n | \"plan\"\n | \"edit\"\n | \"clarify\"\n | \"read\"\n | \"other\";\n\nexport const CATEGORY_LABELS: Record<SessionCategory, string> = {\n build: \"Build\",\n test: \"Test\",\n install: \"Install\",\n explore: \"Explore\",\n lint: \"Lint\",\n cleanup: \"Cleanup\",\n git: \"Git\",\n docker: \"Docker\",\n k8s: \"Kubernetes\",\n run: \"Run\",\n plan: \"Plan\",\n edit: \"Edit\",\n clarify: \"Clarify\",\n read: \"Read\",\n other: \"Other\",\n};\n\n// Per-category glyph, following the \"Agent Action Icons\" workflow palette — run\n// plays, plan strategizes, verify-adjacent categories (test/lint) carry their\n// own marks so the filter menu reads at a glance.\nexport const CATEGORY_ICONS: Record<SessionCategory, StaticIconComponent> = {\n build: UiPackage,\n test: UiBeaker,\n install: UiCloudDownload,\n explore: UiSearch,\n lint: UiShieldCheck,\n cleanup: UiTrash,\n git: UiGitBranch,\n docker: UiBox,\n k8s: UiBoxes,\n run: UiPlayCircle,\n plan: UiStrategy,\n edit: UiPencilSimpleLine,\n clarify: UiQuestion,\n read: UiEye,\n other: UiWrench,\n};\n\nconst CATEGORY_PRIORITY: Record<SessionCategory, number> = {\n install: 100,\n edit: 90,\n run: 80,\n test: 70,\n build: 60,\n cleanup: 50,\n docker: 40,\n k8s: 40,\n git: 30,\n explore: 20,\n lint: 20,\n plan: 20,\n read: 15,\n clarify: 10,\n other: 0,\n};\n\ninterface CategoryRule {\n tools?: string[];\n commands?: string[];\n patterns?: string[];\n}\n\n// Mirrors pkg/bash/category_config.yaml. Order is irrelevant — ties resolve by\n// match specificity, then priority, then category name (see chooseBetterMatch).\nconst CATEGORY_CONFIG: Array<[SessionCategory, CategoryRule]> = [\n [\n \"build\",\n {\n commands: [\"go build\", \"make build\", \"make all\", \"cargo build\", \"npm run build\", \"yarn build\", \"task build\", \"gradle build\", \"mvn compile\", \"mvn package\", \"dotnet build\", \"pnpm build\", \"bun build\", \"mage\", \"bazel build\", \"nx build\", \"turbo build\", \"javac\"],\n patterns: [\".*gradle.*(build|compile|bootJar|jar).*\", \".*mvn.*(compile|package)\", \"^go build\", \"^make\\\\s*$\", \"^make\\\\s+(build|all)\\\\b\", \"^cargo build\", \"^task build\"],\n },\n ],\n [\n \"test\",\n {\n commands: [\"go test\", \"pytest\", \"npm test\", \"yarn test\", \"task test\", \"make test\", \"cargo test\", \"mvn test\", \"gradle test\", \"vitest\", \"jest\", \"bun test\", \"dotnet test\", \"ginkgo\", \"gotestsum\", \"zig test\"],\n patterns: [\".*gradle.*test\", \".*mvn.*test\", \"^go test\", \"^pytest\", \"^npm (run )?test\", \"^make\\\\s+test\", \"^vitest\", \"^jest\", \"^bun test\", \"^ginkgo\", \"^gotestsum\"],\n },\n ],\n [\n \"install\",\n {\n commands: [\"npm install\", \"npm i\", \"yarn install\", \"yarn add\", \"go mod tidy\", \"go mod download\", \"go get\", \"pip install\", \"pip3 install\", \"cargo add\", \"brew install\", \"apt install\", \"apt-get install\", \"pnpm install\", \"pnpm add\", \"bun install\", \"bun add\", \"poetry install\", \"poetry add\", \"uv pip install\", \"pdm install\", \"pdm add\"],\n patterns: [\"^npm (install|i)\\\\b\", \"^yarn (install|add)\\\\b\", \"^pip3? install\", \"^go (mod tidy|mod download|get)\", \"^pnpm (install|add)\\\\b\", \"^bun (install|add)\\\\b\", \"^poetry (install|add)\\\\b\", \"^uv pip install\", \"^pdm (install|add)\\\\b\"],\n },\n ],\n [\n \"explore\",\n {\n tools: [\"Read\", \"Grep\", \"Glob\", \"LSP\", \"WebFetch\", \"WebSearch\"],\n commands: [\"ls\", \"md5\", \"echo\", \"find\", \"grep\", \"rg\", \"ag\", \"cat\", \"head\", \"tail\", \"less\", \"more\", \"tree\", \"wc\", \"file\", \"stat\", \"du\", \"df\", \"pwd\", \"which\", \"whereis\", \"type\", \"fd\", \"bat\", \"exa\", \"eza\", \"fzf\", \"jq\", \"yq\", \"ripgrep\", \"sd\", \"diff\", \"go list\", \"git status\", \"git diff\", \"git log\", \"ps\", \"printenv\", \"sed\"],\n patterns: [\"^ls\\\\b\", \"^find\\\\b\", \"^grep\\\\b\", \"^rg\\\\b\", \"^cat\\\\b\", \"^head\\\\b\", \"^tail\\\\b\", \"^tree\\\\b\", \"^fd\\\\b\", \"^bat\\\\b\", \"^exa\\\\b\", \"^eza\\\\b\", \"^jq\\\\b\", \"^yq\\\\b\", \"^diff\\\\b\", \"^go list\\\\b\", \"^git\\\\s+(status|diff|log)\\\\b\"],\n },\n ],\n [\n \"lint\",\n {\n commands: [\"golangci-lint\", \"eslint\", \"gofmt\", \"go fmt\", \"prettier\", \"black\", \"flake8\", \"pylint\", \"rubocop\", \"shellcheck\", \"task fmt\", \"make fmt\", \"make lint\", \"biome\", \"ruff\", \"mypy\", \"staticcheck\", \"buf lint\", \"deno lint\", \"oxlint\"],\n patterns: [\"lint\", \"^go fmt\", \"^gofmt\", \"^prettier\", \"^black\\\\b\", \"^biome\\\\b\", \"^ruff\\\\b\", \"^mypy\\\\b\", \"^staticcheck\\\\b\"],\n },\n ],\n [\n \"cleanup\",\n {\n commands: [\"rm\", \"rmdir\", \"git clean\", \"make clean\", \"cargo clean\", \"go clean\", \"npm cache clean\", \"docker prune\", \"docker system prune\"],\n patterns: [\"^rm\\\\b\", \"^rmdir\\\\b\", \"clean\\\\b\", \"prune\\\\b\"],\n },\n ],\n [\n \"git\",\n {\n commands: [\"git show\", \"git branch\", \"git checkout\", \"git switch\", \"git commit\", \"git push\", \"git pull\", \"git fetch\", \"git merge\", \"git rebase\", \"git stash\", \"git add\", \"git reset\", \"git clone\", \"git remote\", \"git tag\"],\n patterns: [\"^git\\\\b\"],\n },\n ],\n [\n \"docker\",\n {\n commands: [\"docker run\", \"docker build\", \"docker push\", \"docker pull\", \"docker ps\", \"docker images\", \"docker logs\", \"docker exec\", \"docker stop\", \"docker start\", \"docker rm\", \"docker rmi\", \"docker-compose\", \"podman\"],\n patterns: [\"^docker\\\\b\", \"^docker-compose\\\\b\", \"^podman\\\\b\"],\n },\n ],\n [\n \"k8s\",\n {\n commands: [\"kubectl\", \"helm\", \"k9s\", \"kubectx\", \"kubens\", \"kustomize\", \"minikube\", \"kind\"],\n patterns: [\"^kubectl\\\\b\", \"^helm\\\\b\", \"^k9s\\\\b\", \"^kubectx\\\\b\", \"^kubens\\\\b\", \"^kustomize\\\\b\", \"^minikube\\\\b\", \"^kind\\\\b\"],\n },\n ],\n [\n \"run\",\n {\n tools: [\"KillShell\"],\n commands: [\"go run\", \"python\", \"python3\", \"node\", \"bun run\", \"deno run\", \"ruby\", \"perl\", \"php\", \"java\"],\n patterns: [\".*gradle.*run.*\", \"^go run\\\\b\", \"^python3?\\\\b\", \"^node\\\\b\", \"^bun run\\\\b\", \"^deno run\\\\b\", \"^ruby\\\\b\", \"^perl\\\\b\", \"^php\\\\b\", \"^java\\\\s+-jar\\\\b\", \"^\\\\./[\\\\w.-]+\\\\.(sh|bash|py|rb|pl)$\", \"^bash\\\\s+\\\\S+\\\\.sh\"],\n },\n ],\n [\n \"plan\",\n {\n tools: [\"Task\", \"TodoWrite\", \"EnterPlanMode\"],\n commands: [\"task\", \"make help\", \"task explore\", \"task plan\", \"task todos\", \"task todo\"],\n patterns: [\"^task\\\\s*$\", \"^task\\\\s+--list\", \"^make\\\\s+help\"],\n },\n ],\n [\n \"edit\",\n {\n tools: [\"Edit\", \"Write\", \"NotebookEdit\"],\n commands: [\"mkdir\"],\n patterns: [\"sed.* -i\"],\n },\n ],\n [\"clarify\", { tools: [\"AskUserQuestion\", \"ExitPlanMode\", \"TaskOutput\"] }],\n];\n\nconst COMPILED: Array<[SessionCategory, RegExp[]]> = CATEGORY_CONFIG.map(([cat, rule]) => [\n cat,\n (rule.patterns ?? []).map((p) => new RegExp(p)),\n]);\n\ninterface CategoryMatch {\n category: SessionCategory;\n specificity: number;\n matched: boolean;\n}\n\n// Port of betterCategoryMatch: prefer higher match specificity, then higher\n// category priority, then the lexicographically smaller name.\nfunction chooseBetterMatch(current: CategoryMatch, candidate: CategoryMatch): CategoryMatch {\n if (!candidate.matched || candidate.category === \"other\") return current;\n if (!current.matched || current.category === \"other\") return candidate;\n if (candidate.specificity > current.specificity) return candidate;\n if (candidate.specificity < current.specificity) return current;\n const cp = CATEGORY_PRIORITY[candidate.category];\n const kp = CATEGORY_PRIORITY[current.category];\n if (cp > kp) return candidate;\n if (cp < kp) return current;\n return candidate.category < current.category ? candidate : current;\n}\n\n/** Classify a raw shell command, mirroring captain's `Classify`. */\nexport function classifyCommand(command: string): SessionCategory {\n const cmd = command.trim();\n if (!cmd) return \"other\";\n let best: CategoryMatch = { category: \"other\", specificity: 0, matched: false };\n for (const [cat, rule] of CATEGORY_CONFIG) {\n for (const prefix of rule.commands ?? []) {\n if (cmd === prefix || cmd.startsWith(`${prefix} `)) {\n best = chooseBetterMatch(best, { category: cat, specificity: prefix.length, matched: true });\n }\n }\n }\n for (const [cat, regexps] of COMPILED) {\n for (const re of regexps) {\n if (re.test(cmd)) {\n best = chooseBetterMatch(best, { category: cat, specificity: re.source.length, matched: true });\n }\n }\n }\n return best.category;\n}\n\nfunction classifyTool(tool: string): SessionCategory {\n for (const [cat, rule] of CATEGORY_CONFIG) {\n if (rule.tools?.includes(tool)) return cat;\n }\n return \"other\";\n}\n\nfunction inputString(input: Record<string, unknown> | undefined, key: string): string {\n return typeof input?.[key] === \"string\" ? (input[key] as string) : \"\";\n}\n\n/** Category for a tool invocation, mirroring captain's classifyToolUse: a\n * `.claude/plans/` path is plan; a Bash command falls through to command\n * classification when the tool itself is uncategorized. */\nexport function classifyToolCategory(tool: string, input?: Record<string, unknown>): SessionCategory {\n const filePath =\n inputString(input, \"file_path\") || inputString(input, \"notebook_path\") || inputString(input, \"path\");\n if (filePath.includes(\"/.claude/plans/\")) return \"plan\";\n const cat = classifyTool(tool);\n if (cat === \"other\" && tool === \"Bash\") return classifyCommand(inputString(input, \"command\"));\n return cat;\n}\n\n/** The category of a normalized event, or null for non-tool events. */\nexport function eventCategory(event: SessionEvent): SessionCategory | null {\n if (event.kind !== \"tool\") return null;\n return classifyToolCategory(event.tool ?? \"\", event.toolInput);\n}\n\nexport interface SessionFilters {\n /** Distinct categories present, ordered by descending impact priority. */\n categories: SessionCategory[];\n /** Distinct tools present, with display labels, ordered by label. */\n tools: Array<{ key: string; label: string }>;\n /** Distinct sources present (e.g. \"claude\", \"codex\"). */\n sources: string[];\n}\n\nexport interface SessionVisibility {\n hiddenCategories: ReadonlySet<SessionCategory>;\n hiddenTools: ReadonlySet<string>;\n hiddenSources: ReadonlySet<string>;\n /** When false, reasoning (\"thinking\") events are hidden. */\n showThinking: boolean;\n}\n\n/** Whether an event survives the active filters. Tool events are gated by their\n * tool, category and source; reasoning by `showThinking`; everything else\n * (user/assistant/error) is always shown. */\nexport function isEventVisible(event: SessionEvent, v: SessionVisibility): boolean {\n if (event.pending) return true;\n if (event.kind === \"thinking\") return v.showThinking;\n if (event.kind !== \"tool\") return true;\n const tool = event.tool ?? \"\";\n if (v.hiddenTools.has(tool)) return false;\n if (v.hiddenCategories.has(classifyToolCategory(tool, event.toolInput))) return false;\n if (event.source && v.hiddenSources.has(event.source)) return false;\n return true;\n}\n\n/** Collect the filter facets (category / tool / source) present in a session. */\nexport function collectSessionFilters(events: SessionEvent[]): SessionFilters {\n const categories = new Set<SessionCategory>();\n const tools = new Map<string, string>();\n const sources = new Set<string>();\n for (const event of events) {\n if (event.kind !== \"tool\") continue;\n const tool = event.tool ?? \"\";\n categories.add(classifyToolCategory(tool, event.toolInput));\n if (!tools.has(tool)) tools.set(tool, getSessionAction(tool).label);\n if (event.source) sources.add(event.source);\n }\n return {\n categories: [...categories].sort(\n (a, b) => CATEGORY_PRIORITY[b] - CATEGORY_PRIORITY[a] || a.localeCompare(b),\n ),\n tools: [...tools].map(([key, label]) => ({ key, label })).sort((a, b) => a.label.localeCompare(b.label)),\n sources: [...sources].sort(),\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function tokenTotal(usage) {
|
|
4
|
+
if (!usage) return 0;
|
|
5
|
+
return usage.totalTokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0) + (usage.reasoningTokens ?? 0) + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0);
|
|
6
|
+
}
|
|
7
|
+
function costTotal(cost) {
|
|
8
|
+
if (!cost) return 0;
|
|
9
|
+
return (cost.inputCost ?? 0) + (cost.outputCost ?? 0) + (cost.reasoningCost ?? 0) + (cost.cacheReadCost ?? 0) + (cost.cacheWriteCost ?? 0);
|
|
10
|
+
}
|
|
11
|
+
exports.costTotal = costTotal;
|
|
12
|
+
exports.tokenTotal = tokenTotal;
|
|
13
|
+
//# sourceMappingURL=session-cost.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-cost.cjs","sources":["../../../src/data/ai/session-cost.ts"],"sourcesContent":["import type { SessionCost, SessionUsage } from \"./SessionViewer.unified\";\n\n// Pure token/cost math shared by the session surfaces (the context meter's\n// hover popover and the SessionInspector Costs tab) so both read identically.\n// The string formatters live in lib/tokens so the chat-layer meter can share\n// them without importing this ai-layer module.\nexport { compactTokens, formatCost } from \"../../lib/tokens\";\n\n/** Total tokens for a usage/cost record — the explicit total, else the sum of\n * input + output + reasoning + cache read/write. */\nexport function tokenTotal(usage?: SessionUsage | SessionCost): number {\n if (!usage) return 0;\n return (\n usage.totalTokens ??\n (usage.inputTokens ?? 0) +\n (usage.outputTokens ?? 0) +\n (usage.reasoningTokens ?? 0) +\n (usage.cacheReadTokens ?? 0) +\n (usage.cacheWriteTokens ?? 0)\n );\n}\n\n/** Total cost — the sum of the per-bucket costs (input/output/reasoning/cache). */\nexport function costTotal(cost?: SessionCost): number {\n if (!cost) return 0;\n return (\n (cost.inputCost ?? 0) +\n (cost.outputCost ?? 0) +\n (cost.reasoningCost ?? 0) +\n (cost.cacheReadCost ?? 0) +\n (cost.cacheWriteCost ?? 0)\n );\n}\n\n"],"names":[],"mappings":";;AAUO,SAAS,WAAW,OAA4C;AACrE,MAAI,CAAC,MAAO,QAAO;AACnB,SACE,MAAM,gBACL,MAAM,eAAe,MACnB,MAAM,gBAAgB,MACtB,MAAM,mBAAmB,MACzB,MAAM,mBAAmB,MACzB,MAAM,oBAAoB;AAEjC;AAGO,SAAS,UAAU,MAA4B;AACpD,MAAI,CAAC,KAAM,QAAO;AAClB,UACG,KAAK,aAAa,MAClB,KAAK,cAAc,MACnB,KAAK,iBAAiB,MACtB,KAAK,iBAAiB,MACtB,KAAK,kBAAkB;AAE5B;;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SessionCost, SessionUsage } from './SessionViewer.unified';
|
|
2
|
+
export { compactTokens, formatCost } from '../../lib/tokens';
|
|
3
|
+
/** Total tokens for a usage/cost record — the explicit total, else the sum of
|
|
4
|
+
* input + output + reasoning + cache read/write. */
|
|
5
|
+
export declare function tokenTotal(usage?: SessionUsage | SessionCost): number;
|
|
6
|
+
/** Total cost — the sum of the per-bucket costs (input/output/reasoning/cache). */
|
|
7
|
+
export declare function costTotal(cost?: SessionCost): number;
|
|
8
|
+
//# sourceMappingURL=session-cost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-cost.d.ts","sourceRoot":"","sources":["../../../src/data/ai/session-cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAMzE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE7D;qDACqD;AACrD,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,YAAY,GAAG,WAAW,GAAG,MAAM,CAUrE;AAED,mFAAmF;AACnF,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CASpD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function tokenTotal(usage) {
|
|
2
|
+
if (!usage) return 0;
|
|
3
|
+
return usage.totalTokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0) + (usage.reasoningTokens ?? 0) + (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0);
|
|
4
|
+
}
|
|
5
|
+
function costTotal(cost) {
|
|
6
|
+
if (!cost) return 0;
|
|
7
|
+
return (cost.inputCost ?? 0) + (cost.outputCost ?? 0) + (cost.reasoningCost ?? 0) + (cost.cacheReadCost ?? 0) + (cost.cacheWriteCost ?? 0);
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
costTotal,
|
|
11
|
+
tokenTotal
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=session-cost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-cost.js","sources":["../../../src/data/ai/session-cost.ts"],"sourcesContent":["import type { SessionCost, SessionUsage } from \"./SessionViewer.unified\";\n\n// Pure token/cost math shared by the session surfaces (the context meter's\n// hover popover and the SessionInspector Costs tab) so both read identically.\n// The string formatters live in lib/tokens so the chat-layer meter can share\n// them without importing this ai-layer module.\nexport { compactTokens, formatCost } from \"../../lib/tokens\";\n\n/** Total tokens for a usage/cost record — the explicit total, else the sum of\n * input + output + reasoning + cache read/write. */\nexport function tokenTotal(usage?: SessionUsage | SessionCost): number {\n if (!usage) return 0;\n return (\n usage.totalTokens ??\n (usage.inputTokens ?? 0) +\n (usage.outputTokens ?? 0) +\n (usage.reasoningTokens ?? 0) +\n (usage.cacheReadTokens ?? 0) +\n (usage.cacheWriteTokens ?? 0)\n );\n}\n\n/** Total cost — the sum of the per-bucket costs (input/output/reasoning/cache). */\nexport function costTotal(cost?: SessionCost): number {\n if (!cost) return 0;\n return (\n (cost.inputCost ?? 0) +\n (cost.outputCost ?? 0) +\n (cost.reasoningCost ?? 0) +\n (cost.cacheReadCost ?? 0) +\n (cost.cacheWriteCost ?? 0)\n );\n}\n\n"],"names":[],"mappings":"AAUO,SAAS,WAAW,OAA4C;AACrE,MAAI,CAAC,MAAO,QAAO;AACnB,SACE,MAAM,gBACL,MAAM,eAAe,MACnB,MAAM,gBAAgB,MACtB,MAAM,mBAAmB,MACzB,MAAM,mBAAmB,MACzB,MAAM,oBAAoB;AAEjC;AAGO,SAAS,UAAU,MAA4B;AACpD,MAAI,CAAC,KAAM,QAAO;AAClB,UACG,KAAK,aAAa,MAClB,KAAK,cAAc,MACnB,KAAK,iBAAiB,MACtB,KAAK,iBAAiB,MACtB,KAAK,kBAAkB;AAE5B;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ToolMeta } from '../chat/types';
|
|
2
|
+
/** The humanized parent path of a tool — e.g. `xero_transactions_split` →
|
|
3
|
+
* "Xero Transactions". Used to disambiguate short action labels ("Split",
|
|
4
|
+
* "Void") in a flat tool list.
|
|
5
|
+
*
|
|
6
|
+
* Returns undefined when the name has no parent segment, or when the label
|
|
7
|
+
* already carries the immediate parent word (so we never render a redundant
|
|
8
|
+
* prefix like "Accounts" in front of "List Xero accounts"). */
|
|
9
|
+
export declare function toolParentLabel(tool: ToolMeta): string | undefined;
|
|
10
|
+
//# sourceMappingURL=tool-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-name.d.ts","sourceRoot":"","sources":["../../../src/data/ai/tool-name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAe9C;;;;;;gEAMgE;AAChE,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAUlE"}
|