@flanksource/clicky-ui 0.3.15 → 0.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +10 -0
- package/dist/ai.cjs +33 -4
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +31 -2
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +6 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +7 -1
- package/dist/chat.js.map +1 -1
- package/dist/components/Combobox.cjs +92 -170
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +2 -111
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +95 -173
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxActions.cjs +70 -0
- package/dist/components/ComboboxActions.cjs.map +1 -0
- package/dist/components/ComboboxActions.d.ts +8 -0
- package/dist/components/ComboboxActions.d.ts.map +1 -0
- package/dist/components/ComboboxActions.js +70 -0
- package/dist/components/ComboboxActions.js.map +1 -0
- package/dist/components/ComboboxMenu.cjs +160 -0
- package/dist/components/ComboboxMenu.cjs.map +1 -0
- package/dist/components/ComboboxMenu.d.ts +22 -0
- package/dist/components/ComboboxMenu.d.ts.map +1 -0
- package/dist/components/ComboboxMenu.js +160 -0
- package/dist/components/ComboboxMenu.js.map +1 -0
- package/dist/components/EndpointSelector.cjs +407 -0
- package/dist/components/EndpointSelector.cjs.map +1 -0
- package/dist/components/EndpointSelector.d.ts +3 -0
- package/dist/components/EndpointSelector.d.ts.map +1 -0
- package/dist/components/EndpointSelector.js +407 -0
- package/dist/components/EndpointSelector.js.map +1 -0
- package/dist/components/EndpointSelector.model.d.ts +52 -0
- package/dist/components/EndpointSelector.model.d.ts.map +1 -0
- package/dist/components/FilterBar.cjs +12 -0
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +4 -0
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +12 -0
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +11 -12
- package/dist/components/InputField.cjs.map +1 -1
- package/dist/components/InputField.d.ts +7 -0
- package/dist/components/InputField.d.ts.map +1 -1
- package/dist/components/InputField.js +12 -13
- package/dist/components/InputField.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +22 -16
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +22 -16
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MultiSelect.cjs +3 -3
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +3 -3
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +150 -77
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +151 -78
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/WorkloadPicker.cjs +2 -1
- package/dist/components/WorkloadPicker.cjs.map +1 -1
- package/dist/components/WorkloadPicker.d.ts +6 -1
- package/dist/components/WorkloadPicker.d.ts.map +1 -1
- package/dist/components/WorkloadPicker.js +2 -1
- package/dist/components/WorkloadPicker.js.map +1 -1
- package/dist/components/combobox-types.d.ts +107 -0
- package/dist/components/combobox-types.d.ts.map +1 -0
- package/dist/components/combobox-utils.cjs +21 -0
- package/dist/components/combobox-utils.cjs.map +1 -0
- package/dist/components/combobox-utils.d.ts +15 -0
- package/dist/components/combobox-utils.d.ts.map +1 -0
- package/dist/components/combobox-utils.js +21 -0
- package/dist/components/combobox-utils.js.map +1 -0
- package/dist/components/endpoint-port.cjs +12 -0
- package/dist/components/endpoint-port.cjs.map +1 -0
- package/dist/components/endpoint-port.d.ts +4 -0
- package/dist/components/endpoint-port.d.ts.map +1 -0
- package/dist/components/endpoint-port.js +12 -0
- package/dist/components/endpoint-port.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +12 -23
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +12 -23
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-discriminator.cjs +6 -2
- package/dist/components/json-schema-form-discriminator.cjs.map +1 -1
- package/dist/components/json-schema-form-discriminator.d.ts.map +1 -1
- package/dist/components/json-schema-form-discriminator.js +6 -2
- package/dist/components/json-schema-form-discriminator.js.map +1 -1
- package/dist/components/json-schema-form-error-display.cjs +50 -0
- package/dist/components/json-schema-form-error-display.cjs.map +1 -0
- package/dist/components/json-schema-form-error-display.d.ts +12 -0
- package/dist/components/json-schema-form-error-display.d.ts.map +1 -0
- package/dist/components/json-schema-form-error-display.js +50 -0
- package/dist/components/json-schema-form-error-display.js.map +1 -0
- package/dist/components/json-schema-form-error-types.d.ts +26 -0
- package/dist/components/json-schema-form-error-types.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.cjs +169 -0
- package/dist/components/json-schema-form-errors.cjs.map +1 -0
- package/dist/components/json-schema-form-errors.d.ts +14 -0
- package/dist/components/json-schema-form-errors.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.js +169 -0
- package/dist/components/json-schema-form-errors.js.map +1 -0
- package/dist/components/json-schema-form-object.cjs +12 -2
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +12 -2
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-refs.cjs +84 -19
- package/dist/components/json-schema-form-refs.cjs.map +1 -1
- package/dist/components/json-schema-form-refs.d.ts.map +1 -1
- package/dist/components/json-schema-form-refs.js +84 -19
- package/dist/components/json-schema-form-refs.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +33 -10
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +34 -11
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +16 -4
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +17 -5
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +4 -3
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components.cjs +13 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +8 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +15 -2
- package/dist/components.js.map +1 -1
- package/dist/data/DataTable.cjs +205 -14
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +41 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.cjs +21 -0
- package/dist/data/DataTable.grouping.cjs.map +1 -0
- package/dist/data/DataTable.grouping.d.ts +26 -0
- package/dist/data/DataTable.grouping.d.ts.map +1 -0
- package/dist/data/DataTable.grouping.js +21 -0
- package/dist/data/DataTable.grouping.js.map +1 -0
- package/dist/data/DataTable.js +205 -14
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/Markdown.cjs +45 -1
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +3 -2
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +45 -1
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/MarkdownEditor.cjs +4 -3
- package/dist/data/MarkdownEditor.cjs.map +1 -1
- package/dist/data/MarkdownEditor.d.ts +6 -2
- package/dist/data/MarkdownEditor.d.ts.map +1 -1
- package/dist/data/MarkdownEditor.js +4 -3
- package/dist/data/MarkdownEditor.js.map +1 -1
- package/dist/data/ServerTimingBadge.cjs +64 -0
- package/dist/data/ServerTimingBadge.cjs.map +1 -0
- package/dist/data/ServerTimingBadge.d.ts +9 -0
- package/dist/data/ServerTimingBadge.d.ts.map +1 -0
- package/dist/data/ServerTimingBadge.js +64 -0
- package/dist/data/ServerTimingBadge.js.map +1 -0
- package/dist/data/StatStrip.cjs +99 -0
- package/dist/data/StatStrip.cjs.map +1 -0
- package/dist/data/StatStrip.d.ts +41 -0
- package/dist/data/StatStrip.d.ts.map +1 -0
- package/dist/data/StatStrip.js +99 -0
- package/dist/data/StatStrip.js.map +1 -0
- package/dist/data/TaskManager.cjs +20 -1
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts +3 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +20 -1
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +49 -0
- package/dist/data/TaskManagerButton.cjs.map +1 -0
- package/dist/data/TaskManagerButton.d.ts +8 -0
- package/dist/data/TaskManagerButton.d.ts.map +1 -0
- package/dist/data/TaskManagerButton.js +49 -0
- package/dist/data/TaskManagerButton.js.map +1 -0
- package/dist/data/TaskProcessDetails.cjs +113 -0
- package/dist/data/TaskProcessDetails.cjs.map +1 -0
- package/dist/data/TaskProcessDetails.d.ts +6 -0
- package/dist/data/TaskProcessDetails.d.ts.map +1 -0
- package/dist/data/TaskProcessDetails.js +113 -0
- package/dist/data/TaskProcessDetails.js.map +1 -0
- package/dist/data/TaskProgress.cjs +106 -19
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +4 -2
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +107 -20
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +43 -0
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/Tree.cjs +91 -82
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.d.ts +3 -1
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +91 -82
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/TreeNode.cjs +3 -0
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts +2 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +3 -0
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +18 -141
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +2 -40
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +15 -138
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.models.cjs +11 -0
- package/dist/data/ai/ChatWindow.models.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.models.d.ts +3 -0
- package/dist/data/ai/ChatWindow.models.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.models.js +11 -0
- package/dist/data/ai/ChatWindow.models.js.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.cjs +57 -0
- package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts +13 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.js +57 -0
- package/dist/data/ai/ChatWindow.preferences.js.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.cjs +14 -0
- package/dist/data/ai/ChatWindow.thread-status.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.d.ts +5 -0
- package/dist/data/ai/ChatWindow.thread-status.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.thread-status.js +14 -0
- package/dist/data/ai/ChatWindow.thread-status.js.map +1 -0
- package/dist/data/ai/ChatWindow.thread.cjs +68 -0
- package/dist/data/ai/ChatWindow.thread.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.thread.d.ts +16 -0
- package/dist/data/ai/ChatWindow.thread.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.thread.js +68 -0
- package/dist/data/ai/ChatWindow.thread.js.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +3 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -0
- package/dist/data/ai/ChatWindow.types.d.ts +41 -0
- package/dist/data/ai/ChatWindow.types.d.ts.map +1 -0
- package/dist/data/ai/ContextBadges.cjs +76 -46
- package/dist/data/ai/ContextBadges.cjs.map +1 -1
- package/dist/data/ai/ContextBadges.d.ts.map +1 -1
- package/dist/data/ai/ContextBadges.js +77 -47
- package/dist/data/ai/ContextBadges.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +151 -32
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +7 -4
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js +152 -33
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +11 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js.map +1 -0
- package/dist/data/ai/PromptPicker/index.d.ts +2 -1
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.cjs +7 -0
- package/dist/data/ai/PromptPicker/types.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/types.d.ts +18 -2
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.js +7 -0
- package/dist/data/ai/PromptPicker/types.js.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +171 -91
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +9 -9
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +175 -95
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs +47 -0
- package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -0
- package/dist/data/ai/PromptRunEditor/model.d.ts +17 -0
- package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/model.js +47 -0
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -0
- package/dist/data/ai/RuntimeBar.cjs +408 -0
- package/dist/data/ai/RuntimeBar.cjs.map +1 -0
- package/dist/data/ai/RuntimeBar.d.ts +20 -0
- package/dist/data/ai/RuntimeBar.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBar.js +408 -0
- package/dist/data/ai/RuntimeBar.js.map +1 -0
- package/dist/data/ai/RuntimeBar.model.cjs +14 -0
- package/dist/data/ai/RuntimeBar.model.cjs.map +1 -0
- package/dist/data/ai/RuntimeBar.model.d.ts +10 -0
- package/dist/data/ai/RuntimeBar.model.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBar.model.js +14 -0
- package/dist/data/ai/RuntimeBar.model.js.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.cjs +359 -0
- package/dist/data/ai/RuntimeBarCombo.cjs.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.d.ts +22 -0
- package/dist/data/ai/RuntimeBarCombo.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBarCombo.js +359 -0
- package/dist/data/ai/RuntimeBarCombo.js.map +1 -0
- package/dist/data/ai/SessionChatComposer.cjs +56 -0
- package/dist/data/ai/SessionChatComposer.cjs.map +1 -0
- package/dist/data/ai/SessionChatComposer.d.ts +24 -0
- package/dist/data/ai/SessionChatComposer.d.ts.map +1 -0
- package/dist/data/ai/SessionChatComposer.js +56 -0
- package/dist/data/ai/SessionChatComposer.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +222 -382
- package/dist/data/ai/SessionInspector.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts +55 -0
- package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.cjs +377 -0
- package/dist/data/ai/SessionInspector.collection.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.collection.d.ts +15 -0
- package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.js +377 -0
- package/dist/data/ai/SessionInspector.collection.js.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +9 -4
- package/dist/data/ai/SessionInspector.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.files.cjs +162 -0
- package/dist/data/ai/SessionInspector.files.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.files.d.ts +5 -0
- package/dist/data/ai/SessionInspector.files.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.files.js +162 -0
- package/dist/data/ai/SessionInspector.files.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +15 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts +9 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.js +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -0
- package/dist/data/ai/SessionInspector.js +224 -384
- package/dist/data/ai/SessionInspector.js.map +1 -1
- package/dist/data/ai/SessionInspector.model.cjs +125 -0
- package/dist/data/ai/SessionInspector.model.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.model.d.ts +14 -0
- package/dist/data/ai/SessionInspector.model.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.model.js +125 -0
- package/dist/data/ai/SessionInspector.model.js.map +1 -0
- package/dist/data/ai/SessionInspector.panels.cjs +265 -0
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panels.d.ts +10 -0
- package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panels.js +265 -0
- package/dist/data/ai/SessionInspector.panels.js.map +1 -0
- package/dist/data/ai/SessionInspector.plan.cjs +77 -0
- package/dist/data/ai/SessionInspector.plan.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.plan.d.ts +6 -0
- package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.plan.js +77 -0
- package/dist/data/ai/SessionInspector.plan.js.map +1 -0
- package/dist/data/ai/SessionInspector.summary.cjs +182 -0
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.summary.d.ts +8 -0
- package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.summary.js +182 -0
- package/dist/data/ai/SessionInspector.summary.js.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.cjs +94 -0
- package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts +7 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.js +94 -0
- package/dist/data/ai/SessionInspector.transcript.js.map +1 -0
- package/dist/data/ai/SessionInspector.turns.d.ts +11 -0
- package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +86 -121
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +8 -1
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -0
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.header.cjs +118 -0
- package/dist/data/ai/SessionViewer.header.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.header.d.ts +11 -0
- package/dist/data/ai/SessionViewer.header.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.header.js +118 -0
- package/dist/data/ai/SessionViewer.header.js.map +1 -0
- package/dist/data/ai/SessionViewer.js +87 -122
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +111 -39
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +6 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +111 -39
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.row-metadata.cjs +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts +14 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.js +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.js.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.cjs +15 -0
- package/dist/data/ai/SessionViewer.row-time.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts +3 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.js +15 -0
- package/dist/data/ai/SessionViewer.row-time.js.map +1 -0
- package/dist/data/ai/SessionViewer.rows.cjs +37 -424
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +5 -2
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +31 -418
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.cjs +65 -0
- package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts +20 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.js +65 -0
- package/dist/data/ai/SessionViewer.tool-details.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs +404 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts +12 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.js +404 -0
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -0
- package/dist/data/ai/SessionViewer.unified.d.ts +11 -2
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -26
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +47 -29
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +45 -153
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +51 -159
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +5 -2
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +31 -4
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/ThreadPicker.cjs.map +1 -1
- package/dist/data/ai/ThreadPicker.d.ts +2 -0
- package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
- package/dist/data/ai/ThreadPicker.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +2 -1
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +2 -1
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/agent-action-icons.cjs +7 -10
- package/dist/data/ai/agent-action-icons.cjs.map +1 -1
- package/dist/data/ai/agent-action-icons.d.ts +1 -2
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
- package/dist/data/ai/agent-action-icons.js +8 -11
- package/dist/data/ai/agent-action-icons.js.map +1 -1
- package/dist/data/ai/context.cjs.map +1 -1
- package/dist/data/ai/context.d.ts +4 -0
- package/dist/data/ai/context.d.ts.map +1 -1
- package/dist/data/ai/context.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.cjs +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.js +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/claude.cjs +252 -0
- package/dist/data/ai/examples/sessions/claude.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude.js +252 -0
- package/dist/data/ai/examples/sessions/claude.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.js +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex.cjs +236 -0
- package/dist/data/ai/examples/sessions/codex.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex.js +236 -0
- package/dist/data/ai/examples/sessions/codex.js.map +1 -0
- package/dist/data/ai/examples/sessions/index.cjs +21 -0
- package/dist/data/ai/examples/sessions/index.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/index.d.ts +10 -0
- package/dist/data/ai/examples/sessions/index.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/index.js +21 -0
- package/dist/data/ai/examples/sessions/index.js.map +1 -0
- package/dist/data/ai/index.d.ts +9 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.cjs +12 -1
- package/dist/data/ai/model-capabilities.cjs.map +1 -1
- package/dist/data/ai/model-capabilities.d.ts +2 -6
- package/dist/data/ai/model-capabilities.d.ts.map +1 -1
- package/dist/data/ai/model-capabilities.js +12 -1
- package/dist/data/ai/model-capabilities.js.map +1 -1
- package/dist/data/ai/runtime-mode.cjs +72 -1
- package/dist/data/ai/runtime-mode.cjs.map +1 -1
- package/dist/data/ai/runtime-mode.d.ts +28 -0
- package/dist/data/ai/runtime-mode.d.ts.map +1 -1
- package/dist/data/ai/runtime-mode.js +73 -2
- package/dist/data/ai/runtime-mode.js.map +1 -1
- package/dist/data/cells/EntityCell.cjs +64 -0
- package/dist/data/cells/EntityCell.cjs.map +1 -0
- package/dist/data/cells/EntityCell.d.ts +27 -0
- package/dist/data/cells/EntityCell.d.ts.map +1 -0
- package/dist/data/cells/EntityCell.js +64 -0
- package/dist/data/cells/EntityCell.js.map +1 -0
- package/dist/data/chat/Attachment.cjs +53 -13
- package/dist/data/chat/Attachment.cjs.map +1 -1
- package/dist/data/chat/Attachment.d.ts +9 -3
- package/dist/data/chat/Attachment.d.ts.map +1 -1
- package/dist/data/chat/Attachment.js +54 -14
- package/dist/data/chat/Attachment.js.map +1 -1
- package/dist/data/chat/Chat.cjs +113 -36
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +11 -4
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +111 -34
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +240 -66
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +11 -3
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +241 -67
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/Conversation.cjs +55 -3
- package/dist/data/chat/Conversation.cjs.map +1 -1
- package/dist/data/chat/Conversation.d.ts +5 -1
- package/dist/data/chat/Conversation.d.ts.map +1 -1
- package/dist/data/chat/Conversation.js +55 -3
- package/dist/data/chat/Conversation.js.map +1 -1
- package/dist/data/chat/ModelSelector.cjs +8 -10
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +9 -11
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/PromptInput.cjs +56 -5
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +10 -1
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +57 -6
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/chat/approval.cjs +21 -0
- package/dist/data/chat/approval.cjs.map +1 -0
- package/dist/data/chat/approval.d.ts +11 -0
- package/dist/data/chat/approval.d.ts.map +1 -0
- package/dist/data/chat/approval.js +21 -0
- package/dist/data/chat/approval.js.map +1 -0
- package/dist/data/chat/attachment-upload.cjs +33 -0
- package/dist/data/chat/attachment-upload.cjs.map +1 -0
- package/dist/data/chat/attachment-upload.d.ts +21 -0
- package/dist/data/chat/attachment-upload.d.ts.map +1 -0
- package/dist/data/chat/attachment-upload.js +33 -0
- package/dist/data/chat/attachment-upload.js.map +1 -0
- package/dist/data/chat/effort-icons.cjs +36 -6
- package/dist/data/chat/effort-icons.cjs.map +1 -1
- package/dist/data/chat/effort-icons.d.ts +6 -3
- package/dist/data/chat/effort-icons.d.ts.map +1 -1
- package/dist/data/chat/effort-icons.js +37 -7
- package/dist/data/chat/effort-icons.js.map +1 -1
- package/dist/data/chat/index.d.ts +3 -1
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/models.cjs +8 -0
- package/dist/data/chat/models.cjs.map +1 -0
- package/dist/data/chat/models.d.ts +11 -0
- package/dist/data/chat/models.d.ts.map +1 -0
- package/dist/data/chat/models.js +8 -0
- package/dist/data/chat/models.js.map +1 -0
- package/dist/data/chat/provider-icons.cjs +49 -16
- package/dist/data/chat/provider-icons.cjs.map +1 -1
- package/dist/data/chat/provider-icons.d.ts +2 -0
- package/dist/data/chat/provider-icons.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.js +50 -17
- package/dist/data/chat/provider-icons.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +21 -0
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/examples/markdown-preview-mock.cjs +45 -0
- package/dist/data/examples/markdown-preview-mock.cjs.map +1 -0
- package/dist/data/examples/markdown-preview-mock.d.ts +23 -0
- package/dist/data/examples/markdown-preview-mock.d.ts.map +1 -0
- package/dist/data/examples/markdown-preview-mock.js +45 -0
- package/dist/data/examples/markdown-preview-mock.js.map +1 -0
- package/dist/data/examples/markdown-syntax.cjs +36 -0
- package/dist/data/examples/markdown-syntax.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.d.ts +12 -0
- package/dist/data/examples/markdown-syntax.d.ts.map +1 -0
- package/dist/data/examples/markdown-syntax.js +36 -0
- package/dist/data/examples/markdown-syntax.js.map +1 -0
- package/dist/data/examples/markdown-syntax.md.cjs +4 -0
- package/dist/data/examples/markdown-syntax.md.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.md.js +5 -0
- package/dist/data/examples/markdown-syntax.md.js.map +1 -0
- package/dist/data/server-timing.cjs +120 -0
- package/dist/data/server-timing.cjs.map +1 -0
- package/dist/data/server-timing.d.ts +11 -0
- package/dist/data/server-timing.d.ts.map +1 -0
- package/dist/data/server-timing.js +120 -0
- package/dist/data/server-timing.js.map +1 -0
- package/dist/data/task-process-details.cjs +48 -0
- package/dist/data/task-process-details.cjs.map +1 -0
- package/dist/data/task-process-details.d.ts +5 -0
- package/dist/data/task-process-details.d.ts.map +1 -0
- package/dist/data/task-process-details.js +48 -0
- package/dist/data/task-process-details.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +37 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +9 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +37 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-hotkey.cjs +98 -0
- package/dist/hooks/use-hotkey.cjs.map +1 -0
- package/dist/hooks/use-hotkey.d.ts +42 -0
- package/dist/hooks/use-hotkey.d.ts.map +1 -0
- package/dist/hooks/use-hotkey.js +98 -0
- package/dist/hooks/use-hotkey.js.map +1 -0
- package/dist/hooks/use-task-run.cjs +23 -1
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +23 -1
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/hooks.cjs +4 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +4 -0
- package/dist/hooks.js.map +1 -1
- package/dist/icons/components/UiBank.cjs +15 -0
- package/dist/icons/components/UiBank.cjs.map +1 -0
- package/dist/icons/components/UiBank.d.ts +15 -0
- package/dist/icons/components/UiBank.d.ts.map +1 -0
- package/dist/icons/components/UiBank.js +15 -0
- package/dist/icons/components/UiBank.js.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.cjs +15 -0
- package/dist/icons/components/UiChartOfAccounts.cjs.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts +15 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.js +15 -0
- package/dist/icons/components/UiChartOfAccounts.js.map +1 -0
- package/dist/icons/components/UiCloudUpload.cjs +15 -0
- package/dist/icons/components/UiCloudUpload.cjs.map +1 -0
- package/dist/icons/components/UiCloudUpload.d.ts +15 -0
- package/dist/icons/components/UiCloudUpload.d.ts.map +1 -0
- package/dist/icons/components/UiCloudUpload.js +15 -0
- package/dist/icons/components/UiCloudUpload.js.map +1 -0
- package/dist/icons/components/UiLedger.cjs +15 -0
- package/dist/icons/components/UiLedger.cjs.map +1 -0
- package/dist/icons/components/UiLedger.d.ts +15 -0
- package/dist/icons/components/UiLedger.d.ts.map +1 -0
- package/dist/icons/components/UiLedger.js +15 -0
- package/dist/icons/components/UiLedger.js.map +1 -0
- package/dist/icons/components/UiReceipt.cjs +15 -0
- package/dist/icons/components/UiReceipt.cjs.map +1 -0
- package/dist/icons/components/UiReceipt.d.ts +15 -0
- package/dist/icons/components/UiReceipt.d.ts.map +1 -0
- package/dist/icons/components/UiReceipt.js +15 -0
- package/dist/icons/components/UiReceipt.js.map +1 -0
- package/dist/icons/index.d.ts +10 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons.cjs +15 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +15 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +54 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +56 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +270 -238
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +9 -0
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.debug.cjs +53 -0
- package/dist/layout/AppShell.debug.cjs.map +1 -0
- package/dist/layout/AppShell.debug.d.ts +6 -0
- package/dist/layout/AppShell.debug.d.ts.map +1 -0
- package/dist/layout/AppShell.debug.js +53 -0
- package/dist/layout/AppShell.debug.js.map +1 -0
- package/dist/layout/AppShell.js +269 -237
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppShell.nav.cjs +90 -0
- package/dist/layout/AppShell.nav.cjs.map +1 -0
- package/dist/layout/AppShell.nav.d.ts +7 -0
- package/dist/layout/AppShell.nav.d.ts.map +1 -0
- package/dist/layout/AppShell.nav.js +90 -0
- package/dist/layout/AppShell.nav.js.map +1 -0
- package/dist/layout/AppSidebar.cjs +35 -5
- package/dist/layout/AppSidebar.cjs.map +1 -1
- package/dist/layout/AppSidebar.d.ts +4 -1
- package/dist/layout/AppSidebar.d.ts.map +1 -1
- package/dist/layout/AppSidebar.js +35 -5
- package/dist/layout/AppSidebar.js.map +1 -1
- package/dist/layout/Panel.cjs +25 -41
- package/dist/layout/Panel.cjs.map +1 -1
- package/dist/layout/Panel.d.ts +2 -1
- package/dist/layout/Panel.d.ts.map +1 -1
- package/dist/layout/Panel.js +26 -42
- package/dist/layout/Panel.js.map +1 -1
- package/dist/layout/PanelFrame.cjs +56 -0
- package/dist/layout/PanelFrame.cjs.map +1 -0
- package/dist/layout/PanelFrame.d.ts +15 -0
- package/dist/layout/PanelFrame.d.ts.map +1 -0
- package/dist/layout/PanelFrame.js +56 -0
- package/dist/layout/PanelFrame.js.map +1 -0
- package/dist/layout/Section.cjs +51 -41
- package/dist/layout/Section.cjs.map +1 -1
- package/dist/layout/Section.d.ts +3 -2
- package/dist/layout/Section.d.ts.map +1 -1
- package/dist/layout/Section.js +51 -41
- package/dist/layout/Section.js.map +1 -1
- package/dist/layout/content-width.cjs +8 -0
- package/dist/layout/content-width.cjs.map +1 -0
- package/dist/layout/content-width.d.ts +3 -0
- package/dist/layout/content-width.d.ts.map +1 -0
- package/dist/layout/content-width.js +8 -0
- package/dist/layout/content-width.js.map +1 -0
- package/dist/overlay/CommandPalette.cjs +207 -0
- package/dist/overlay/CommandPalette.cjs.map +1 -0
- package/dist/overlay/CommandPalette.d.ts +71 -0
- package/dist/overlay/CommandPalette.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.js +207 -0
- package/dist/overlay/CommandPalette.js.map +1 -0
- package/dist/overlay/CommandPalette.model.cjs +70 -0
- package/dist/overlay/CommandPalette.model.cjs.map +1 -0
- package/dist/overlay/CommandPalette.model.d.ts +71 -0
- package/dist/overlay/CommandPalette.model.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.model.js +70 -0
- package/dist/overlay/CommandPalette.model.js.map +1 -0
- package/dist/overlay/CommandPaletteList.cjs +88 -0
- package/dist/overlay/CommandPaletteList.cjs.map +1 -0
- package/dist/overlay/CommandPaletteList.d.ts +23 -0
- package/dist/overlay/CommandPaletteList.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteList.js +88 -0
- package/dist/overlay/CommandPaletteList.js.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.cjs +36 -0
- package/dist/overlay/CommandPaletteTrigger.cjs.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts +22 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.js +36 -0
- package/dist/overlay/CommandPaletteTrigger.js.map +1 -0
- package/dist/overlay/HoverCard.cjs.map +1 -1
- package/dist/overlay/HoverCard.d.ts +2 -2
- package/dist/overlay/HoverCard.d.ts.map +1 -1
- package/dist/overlay/HoverCard.js.map +1 -1
- package/dist/overlay/Modal.cjs +12 -5
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +12 -5
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/modalStack.js +1 -1
- package/dist/overlay/zIndex.cjs +2 -0
- package/dist/overlay/zIndex.cjs.map +1 -1
- package/dist/overlay/zIndex.js +2 -0
- package/dist/overlay/zIndex.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +6 -0
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +6 -0
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +45 -71
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +12 -2
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +46 -72
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +42 -0
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +2 -1
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +42 -0
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/clickyMetadata.cjs +2 -1
- package/dist/rpc/clickyMetadata.cjs.map +1 -1
- package/dist/rpc/clickyMetadata.d.ts.map +1 -1
- package/dist/rpc/clickyMetadata.js +2 -1
- package/dist/rpc/clickyMetadata.js.map +1 -1
- package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +25 -2
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts +2 -1
- package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +1 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +15 -0
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +15 -0
- package/dist/tailwind-preset.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextBadges.js","sources":["../../../src/data/ai/ContextBadges.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport { UiClose } from \"../../icons\";\nimport type { ChatContextItem, ContextTypeConfig, ContextTypeStyle } from \"./context\";\n\nconst DEFAULT_STYLE: ContextTypeStyle = {\n className: \"text-muted-foreground bg-muted\",\n};\n\nfunction styleFor(type: string, config?: ContextTypeConfig): ContextTypeStyle {\n return config?.[type] ?? DEFAULT_STYLE;\n}\n\nfunction detail(item: ChatContextItem): string {\n const fields = item.fields;\n if (!fields) return \"\";\n return Object.entries(fields)\n .filter(([, v]) => v != null && v !== \"\")\n .map(([, v]) => v)\n .join(\" \");\n}\n\nexport type ContextBadgesProps = {\n items: ChatContextItem[];\n /** Removes the badge with the given id. When omitted the badges are read-only. */\n onRemove?: (id: string) => void;\n /** Maps each item `type` to an icon/colour; falls back to a neutral style. */\n typeConfig?: ContextTypeConfig;\n className?: string;\n};\n\n/** A wrapping row of context chips. Interactive (each removable) when `onRemove`\n * is supplied, otherwise static. The financial type→colour map lives entirely\n * in the caller-supplied `typeConfig`, so this is domain-agnostic. */\nexport function ContextBadges({ items, onRemove, typeConfig, className }: ContextBadgesProps) {\n if (items.length === 0) return null;\n const readonly = !onRemove;\n return (\n <div\n className={cn(\n readonly ? \"flex flex-wrap gap-1\" : \"flex flex-wrap gap-1.5 px-2 py-1.5\",\n className,\n )}\n >\n {items.map((item) => {\n const style = styleFor(item.type, typeConfig);\n const d = detail(item);\n return (\n <span\n key={item.id}\n data-testid={`context-badge-${item.type}`}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-lg border\",\n readonly ? \"px-1.5 py-0.5 text-[10px]\" : \"px-2 py-1 text-xs\",\n style.className,\n )}\n >\n {style.icon && (\n <Icon\n {...(typeof style.icon === \"string\" ? { name: style.icon } : { icon: style.icon })}\n className=\"size-3.5 shrink-0\"\n />\n )}\n <span className=\"font-medium truncate max-w-[180px]\">{item.label}</span>\n {d && <span className=\"opacity-70 truncate max-w-[100px]\">{d}</span>}\n {onRemove && (\n <button\n type=\"button\"\n data-testid=\"context-badge-remove\"\n aria-label={`Remove ${item.label}`}\n onClick={() => onRemove(item.id)}\n className=\"ml-0.5 opacity-60 hover:opacity-100\"\n >\n <Icon icon={UiClose} className=\"size-3\" />\n </button>\n )}\n </span>\n );\n })}\n </div>\n );\n}\n\n/** Convenience alias for static context chips (no remove control). */\nexport function ContextBadgesReadonly(props: Omit<ContextBadgesProps, \"onRemove\">) {\n return <ContextBadges {...props} />;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ContextBadges.js","sources":["../../../src/data/ai/ContextBadges.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../Icon\";\nimport { Markdown } from \"../Markdown\";\nimport { Modal } from \"../../overlay/Modal\";\nimport { UiClose, UiEye } from \"../../icons\";\nimport type { ChatContextItem, ContextTypeConfig, ContextTypeStyle } from \"./context\";\n\nconst DEFAULT_STYLE: ContextTypeStyle = {\n className: \"text-muted-foreground bg-muted\",\n};\n\nfunction styleFor(type: string, config?: ContextTypeConfig): ContextTypeStyle {\n return config?.[type] ?? DEFAULT_STYLE;\n}\n\nfunction detail(item: ChatContextItem): string {\n const fields = item.fields;\n if (!fields) return \"\";\n return Object.entries(fields)\n .filter(([, v]) => v != null && v !== \"\")\n .map(([, v]) => v)\n .join(\" \");\n}\n\nexport type ContextBadgesProps = {\n items: ChatContextItem[];\n /** Removes the badge with the given id. When omitted the badges are read-only. */\n onRemove?: (id: string) => void;\n /** Maps each item `type` to an icon/colour; falls back to a neutral style. */\n typeConfig?: ContextTypeConfig;\n className?: string;\n};\n\n/** A wrapping row of context chips. Interactive (each removable) when `onRemove`\n * is supplied, otherwise static. The financial type→colour map lives entirely\n * in the caller-supplied `typeConfig`, so this is domain-agnostic. */\nexport function ContextBadges({ items, onRemove, typeConfig, className }: ContextBadgesProps) {\n const [expandedId, setExpandedId] = useState<string | null>(null);\n if (items.length === 0) return null;\n const readonly = !onRemove;\n const expanded = items.find((item) => item.id === expandedId) ?? null;\n return (\n <>\n <div\n className={cn(\n readonly ? \"flex flex-wrap gap-1\" : \"flex flex-wrap gap-1.5 px-2 py-1.5\",\n className,\n )}\n >\n {items.map((item) => {\n const style = styleFor(item.type, typeConfig);\n const d = detail(item);\n return (\n <span\n key={item.id}\n data-testid={`context-badge-${item.type}`}\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-lg border\",\n readonly ? \"px-1.5 py-0.5 text-[10px]\" : \"px-2 py-1 text-xs\",\n style.className,\n )}\n >\n {style.icon && (\n <Icon\n {...(typeof style.icon === \"string\" ? { name: style.icon } : { icon: style.icon })}\n className=\"size-3.5 shrink-0\"\n />\n )}\n <span className=\"font-medium truncate max-w-[180px]\">{item.label}</span>\n {d && <span className=\"opacity-70 truncate max-w-[100px]\">{d}</span>}\n {item.preview && (\n <button\n type=\"button\"\n data-testid=\"context-badge-expand\"\n aria-label={`Expand ${item.label}`}\n onClick={() => setExpandedId(item.id)}\n className=\"ml-0.5 opacity-60 hover:opacity-100\"\n >\n <Icon icon={UiEye} className=\"size-3\" />\n </button>\n )}\n {onRemove && (\n <button\n type=\"button\"\n data-testid=\"context-badge-remove\"\n aria-label={`Remove ${item.label}`}\n onClick={() => onRemove(item.id)}\n className=\"ml-0.5 opacity-60 hover:opacity-100\"\n >\n <Icon icon={UiClose} className=\"size-3\" />\n </button>\n )}\n </span>\n );\n })}\n </div>\n <Modal\n open={!!expanded}\n onClose={() => setExpandedId(null)}\n title={expanded?.label}\n {...(expanded && detail(expanded) ? { subtitle: detail(expanded) } : {})}\n size=\"xl\"\n >\n {expanded?.preview ? <Markdown text={expanded.preview} /> : null}\n </Modal>\n </>\n );\n}\n\n/** Convenience alias for static context chips (no remove control). */\nexport function ContextBadgesReadonly(props: Omit<ContextBadgesProps, \"onRemove\">) {\n return <ContextBadges {...props} />;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,10 @@ const utils = require("../../../lib/utils.cjs");
|
|
|
8
8
|
const Modal = require("../../../overlay/Modal.cjs");
|
|
9
9
|
const providerIcons = require("../../chat/provider-icons.cjs");
|
|
10
10
|
const index = require("../SpecRuntimeEditor/index.cjs");
|
|
11
|
+
const runtimeMode = require("../runtime-mode.cjs");
|
|
11
12
|
const promptRuntime = require("./prompt-runtime.cjs");
|
|
13
|
+
const PromptSourceRepair = require("./PromptSourceRepair.cjs");
|
|
14
|
+
const types = require("./types.cjs");
|
|
12
15
|
const UiRobotAi = require("../../../icons/components/UiRobotAi.cjs");
|
|
13
16
|
const DEFAULT_SECTIONS = [
|
|
14
17
|
"model",
|
|
@@ -22,7 +25,79 @@ const SOURCE_OPTIONS = [
|
|
|
22
25
|
{ id: "inline", label: "Inline" },
|
|
23
26
|
{ id: "file", label: "File" }
|
|
24
27
|
];
|
|
28
|
+
const DEFAULT_SOURCES = [
|
|
29
|
+
"inline",
|
|
30
|
+
"file"
|
|
31
|
+
];
|
|
25
32
|
const DefaultModelIcon = ({ className }) => /* @__PURE__ */ jsxRuntime.jsx(UiRobotAi.UiRobotAi, { className });
|
|
33
|
+
function runtimeModeMatchesShortcut(mode, shortcut) {
|
|
34
|
+
return mode.id === shortcut || mode.backend.endsWith(`-${shortcut}`);
|
|
35
|
+
}
|
|
36
|
+
function resolveModelShortcut(detail, models, families) {
|
|
37
|
+
var _a;
|
|
38
|
+
if (!types.isValidPromptSpecDetail(detail)) return detail;
|
|
39
|
+
const value = detail.spec.model;
|
|
40
|
+
if (typeof value !== "string") return detail;
|
|
41
|
+
const parts = value.split(":").map((part) => part.trim());
|
|
42
|
+
if (parts.length < 2 || parts.length > 3) return detail;
|
|
43
|
+
const [prefix, alias, effort] = parts;
|
|
44
|
+
if (!prefix) return detail;
|
|
45
|
+
const mode = prefix === "sdk" ? "agent" : prefix;
|
|
46
|
+
const runtimeFamilies = families ?? runtimeMode.SPEC_RUNTIME_FAMILIES;
|
|
47
|
+
if (!runtimeFamilies.some(
|
|
48
|
+
(family) => family.modes.some((item) => runtimeModeMatchesShortcut(item, mode))
|
|
49
|
+
)) {
|
|
50
|
+
return detail;
|
|
51
|
+
}
|
|
52
|
+
if (!alias || !(models == null ? void 0 : models.length)) {
|
|
53
|
+
throw new Error(`shortcut ${value} needs a model catalog`);
|
|
54
|
+
}
|
|
55
|
+
const model = modelForShortcut(value, alias, models);
|
|
56
|
+
const backend = backendForShortcut(value, mode, model, runtimeFamilies);
|
|
57
|
+
if (effort && ((_a = model.supportedEfforts) == null ? void 0 : _a.length) && !model.supportedEfforts.includes(effort)) {
|
|
58
|
+
throw new Error(`shortcut ${value} does not support effort ${effort}`);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
...detail,
|
|
62
|
+
spec: {
|
|
63
|
+
...detail.spec,
|
|
64
|
+
model: model.id,
|
|
65
|
+
backend,
|
|
66
|
+
...effort ? { effort } : {}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function modelForShortcut(value, alias, models) {
|
|
71
|
+
const normalizedAlias = alias.toLowerCase();
|
|
72
|
+
const exact = models.filter(
|
|
73
|
+
(model) => [model.id, model.label].some(
|
|
74
|
+
(candidate) => candidate.toLowerCase() === normalizedAlias
|
|
75
|
+
)
|
|
76
|
+
);
|
|
77
|
+
const matches = exact.length ? exact : models.filter(
|
|
78
|
+
(model) => model.id.toLowerCase().split(/[\s/_.-]+/).filter(Boolean).at(-1) === normalizedAlias
|
|
79
|
+
);
|
|
80
|
+
if (matches.length === 1) return matches[0];
|
|
81
|
+
throw new Error(
|
|
82
|
+
`model shortcut ${JSON.stringify(value)} matched ${matches.length} catalog models`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
function backendForShortcut(value, mode, model, families) {
|
|
86
|
+
const backends = new Set(
|
|
87
|
+
families.flatMap(
|
|
88
|
+
(family) => family.modes.filter(
|
|
89
|
+
(item) => {
|
|
90
|
+
var _a, _b;
|
|
91
|
+
return runtimeModeMatchesShortcut(item, mode) && (((_a = model.backends) == null ? void 0 : _a.includes(item.backend)) || !((_b = model.backends) == null ? void 0 : _b.length) && family.provider === model.provider);
|
|
92
|
+
}
|
|
93
|
+
).map((item) => item.backend)
|
|
94
|
+
)
|
|
95
|
+
);
|
|
96
|
+
if (backends.size === 1) return [...backends][0];
|
|
97
|
+
throw new Error(
|
|
98
|
+
`model shortcut ${JSON.stringify(value)} matched ${backends.size} runtime backends`
|
|
99
|
+
);
|
|
100
|
+
}
|
|
26
101
|
function PromptPickerField({
|
|
27
102
|
value: _value,
|
|
28
103
|
onChange,
|
|
@@ -33,6 +108,7 @@ function PromptPickerField({
|
|
|
33
108
|
models,
|
|
34
109
|
families,
|
|
35
110
|
sections,
|
|
111
|
+
sources = DEFAULT_SOURCES,
|
|
36
112
|
className,
|
|
37
113
|
disabled
|
|
38
114
|
}) {
|
|
@@ -41,23 +117,27 @@ function PromptPickerField({
|
|
|
41
117
|
const [editing, setEditing] = react.useState(false);
|
|
42
118
|
const load = react.useCallback(() => {
|
|
43
119
|
setError("");
|
|
44
|
-
void loadDetail().then(setDetail).catch((err) => {
|
|
120
|
+
void loadDetail().then((next) => setDetail(resolveModelShortcut(next, models, families))).catch((err) => {
|
|
45
121
|
setError(err instanceof Error ? err.message : "failed to load prompt");
|
|
46
122
|
});
|
|
47
|
-
}, [loadDetail]);
|
|
123
|
+
}, [families, loadDetail, models]);
|
|
48
124
|
react.useEffect(() => {
|
|
49
125
|
load();
|
|
50
126
|
}, [load]);
|
|
51
127
|
const model = react.useMemo(() => modelDisplay(detail, models), [detail, models]);
|
|
52
128
|
const prompt = promptRuntime.promptPreviewText(detail);
|
|
53
129
|
const rowTitle = [title, description, prompt].filter(Boolean).join("\n");
|
|
54
|
-
const
|
|
130
|
+
const parseError = (detail == null ? void 0 : detail.parseError) ?? "";
|
|
131
|
+
const shownError = error || parseError;
|
|
132
|
+
const isDisabled = disabled || !detail;
|
|
55
133
|
const onSaved = (next) => {
|
|
56
134
|
setDetail(next);
|
|
57
135
|
if (next.source === "default") {
|
|
58
136
|
onChange(void 0);
|
|
59
137
|
} else {
|
|
60
|
-
onChange(
|
|
138
|
+
onChange(
|
|
139
|
+
next.source === "file" ? { file: next.path ?? "" } : { inline: next.raw }
|
|
140
|
+
);
|
|
61
141
|
}
|
|
62
142
|
setEditing(false);
|
|
63
143
|
};
|
|
@@ -71,21 +151,21 @@ function PromptPickerField({
|
|
|
71
151
|
"flex h-9 w-full min-w-0 max-w-full items-center gap-2 overflow-hidden rounded-md border border-border bg-background px-2 text-left text-sm transition-colors",
|
|
72
152
|
"hover:bg-muted/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
73
153
|
"disabled:cursor-not-allowed disabled:opacity-60",
|
|
74
|
-
|
|
154
|
+
shownError && "border-destructive/40 text-destructive"
|
|
75
155
|
),
|
|
76
|
-
title:
|
|
156
|
+
title: shownError || rowTitle,
|
|
77
157
|
"aria-label": `Edit prompt ${title}`,
|
|
78
158
|
disabled: isDisabled,
|
|
79
159
|
onClick: () => setEditing(true),
|
|
80
160
|
children: [
|
|
81
161
|
/* @__PURE__ */ jsxRuntime.jsx(Glyph, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
82
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 max-w-[40%] flex-none truncate font-medium text-foreground", children:
|
|
162
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 max-w-[40%] flex-none truncate font-medium text-foreground", children: shownError ? "Prompt error" : model.label }),
|
|
83
163
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-4 w-px shrink-0 bg-border", "aria-hidden": "true" }),
|
|
84
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 basis-0 flex-1 truncate text-muted-foreground", children:
|
|
164
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 basis-0 flex-1 truncate text-muted-foreground", children: shownError || (detail ? prompt : "Loading prompt...") })
|
|
85
165
|
]
|
|
86
166
|
}
|
|
87
167
|
),
|
|
88
|
-
editing && detail && /* @__PURE__ */ jsxRuntime.jsx(
|
|
168
|
+
editing && detail && (types.isValidPromptSpecDetail(detail) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
89
169
|
SpecEditorDialog,
|
|
90
170
|
{
|
|
91
171
|
open: editing,
|
|
@@ -96,9 +176,20 @@ function PromptPickerField({
|
|
|
96
176
|
onSaved,
|
|
97
177
|
models,
|
|
98
178
|
families,
|
|
99
|
-
sections
|
|
179
|
+
sections,
|
|
180
|
+
sources
|
|
100
181
|
}
|
|
101
|
-
)
|
|
182
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
183
|
+
PromptSourceRepair.PromptSourceRepair,
|
|
184
|
+
{
|
|
185
|
+
open: editing,
|
|
186
|
+
title,
|
|
187
|
+
detail,
|
|
188
|
+
saveDetail,
|
|
189
|
+
onClose: () => setEditing(false),
|
|
190
|
+
onSaved
|
|
191
|
+
}
|
|
192
|
+
))
|
|
102
193
|
] });
|
|
103
194
|
}
|
|
104
195
|
function SpecEditorDialog({
|
|
@@ -110,26 +201,30 @@ function SpecEditorDialog({
|
|
|
110
201
|
onSaved,
|
|
111
202
|
models,
|
|
112
203
|
families,
|
|
113
|
-
sections = DEFAULT_SECTIONS
|
|
204
|
+
sections = DEFAULT_SECTIONS,
|
|
205
|
+
sources = DEFAULT_SOURCES
|
|
114
206
|
}) {
|
|
115
207
|
const [value, setValue] = react.useState(
|
|
116
208
|
() => promptRuntime.specToPromptRuntimeValue(detail.spec, detail.body)
|
|
117
209
|
);
|
|
118
|
-
const
|
|
119
|
-
|
|
210
|
+
const selectedSource = detail.source === "file" ? "file" : "inline";
|
|
211
|
+
const initialSource = sources.includes(selectedSource) ? selectedSource : sources[0];
|
|
212
|
+
const sourceOptions = SOURCE_OPTIONS.filter(
|
|
213
|
+
(option) => sources.includes(option.id)
|
|
120
214
|
);
|
|
215
|
+
const [source, setSource] = react.useState(initialSource);
|
|
121
216
|
const [path, setPath] = react.useState(detail.path ?? "");
|
|
122
217
|
const [error, setError] = react.useState("");
|
|
123
218
|
const [saving, setSaving] = react.useState(false);
|
|
124
219
|
react.useEffect(() => {
|
|
125
220
|
if (!open) return;
|
|
126
221
|
setValue(promptRuntime.specToPromptRuntimeValue(detail.spec, detail.body));
|
|
127
|
-
setSource(
|
|
222
|
+
setSource(initialSource);
|
|
128
223
|
setPath(detail.path ?? "");
|
|
129
224
|
setError("");
|
|
130
|
-
}, [detail, open]);
|
|
225
|
+
}, [detail, initialSource, open]);
|
|
131
226
|
if (!open) return null;
|
|
132
|
-
const dirty = JSON.stringify(value) !== JSON.stringify(promptRuntime.specToPromptRuntimeValue(detail.spec, detail.body)) || source !==
|
|
227
|
+
const dirty = JSON.stringify(value) !== JSON.stringify(promptRuntime.specToPromptRuntimeValue(detail.spec, detail.body)) || source !== initialSource || path !== (detail.path ?? "");
|
|
133
228
|
async function save() {
|
|
134
229
|
setSaving(true);
|
|
135
230
|
setError("");
|
|
@@ -171,9 +266,28 @@ function SpecEditorDialog({
|
|
|
171
266
|
size: "2xl",
|
|
172
267
|
className: "h-[92vh]",
|
|
173
268
|
footer: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between gap-3", children: [
|
|
174
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: error ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-pre-wrap text-sm text-destructive", children: error }) : detail.source !== "default" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
269
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0", children: error ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-pre-wrap text-sm text-destructive", children: error }) : detail.source !== "default" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
270
|
+
button.Button,
|
|
271
|
+
{
|
|
272
|
+
type: "button",
|
|
273
|
+
variant: "ghost",
|
|
274
|
+
size: "sm",
|
|
275
|
+
onClick: resetDefault,
|
|
276
|
+
disabled: saving,
|
|
277
|
+
children: "Reset to default"
|
|
278
|
+
}
|
|
279
|
+
) : null }),
|
|
175
280
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 gap-2", children: [
|
|
176
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
281
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
282
|
+
button.Button,
|
|
283
|
+
{
|
|
284
|
+
type: "button",
|
|
285
|
+
variant: "ghost",
|
|
286
|
+
onClick: onClose,
|
|
287
|
+
disabled: saving,
|
|
288
|
+
children: "Cancel"
|
|
289
|
+
}
|
|
290
|
+
),
|
|
177
291
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
178
292
|
button.Button,
|
|
179
293
|
{
|
|
@@ -187,17 +301,19 @@ function SpecEditorDialog({
|
|
|
187
301
|
] }),
|
|
188
302
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
189
303
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
190
|
-
/* @__PURE__ */ jsxRuntime.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
304
|
+
sourceOptions.length > 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
305
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Save to" }),
|
|
306
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
307
|
+
SegmentedControl.SegmentedControl,
|
|
308
|
+
{
|
|
309
|
+
size: "sm",
|
|
310
|
+
value: source,
|
|
311
|
+
options: sourceOptions,
|
|
312
|
+
onChange: setSource,
|
|
313
|
+
"aria-label": "Save location"
|
|
314
|
+
}
|
|
315
|
+
)
|
|
316
|
+
] }),
|
|
201
317
|
source === "file" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
202
318
|
"input",
|
|
203
319
|
{
|
|
@@ -229,7 +345,9 @@ function modelDisplay(detail, models) {
|
|
|
229
345
|
var _a;
|
|
230
346
|
const modelValue = (_a = detail == null ? void 0 : detail.spec) == null ? void 0 : _a.model;
|
|
231
347
|
const modelID = typeof modelValue === "string" && modelValue.trim() ? modelValue.trim() : "";
|
|
232
|
-
const matched = models == null ? void 0 : models.find(
|
|
348
|
+
const matched = models == null ? void 0 : models.find(
|
|
349
|
+
(model) => model.id === modelID || model.label === modelID
|
|
350
|
+
);
|
|
233
351
|
const provider = (matched == null ? void 0 : matched.provider) ?? inferProvider(modelID);
|
|
234
352
|
return {
|
|
235
353
|
label: (matched == null ? void 0 : matched.label) ?? (modelID || "Default model"),
|
|
@@ -239,7 +357,8 @@ function modelDisplay(detail, models) {
|
|
|
239
357
|
function inferProvider(modelID) {
|
|
240
358
|
const model = modelID.toLowerCase();
|
|
241
359
|
if (!model) return void 0;
|
|
242
|
-
if (model.includes("claude") || model.includes("anthropic"))
|
|
360
|
+
if (model.includes("claude") || model.includes("anthropic"))
|
|
361
|
+
return "anthropic";
|
|
243
362
|
if (model.includes("gemini") || model.includes("google")) return "gemini";
|
|
244
363
|
if (model.includes("openai") || model.includes("gpt") || model.includes("codex") || /^o\d/.test(model)) {
|
|
245
364
|
return "openai";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptPicker.cjs","sources":["../../../../src/data/ai/PromptPicker/PromptPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Button } from \"../../../components/button\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiRobotAi } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { providerIcon, type ProviderGlyph } from \"../../chat/provider-icons\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { SpecRuntimeEditor } from \"../SpecRuntimeEditor\";\nimport type { SpecSectionId } from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nimport type { SpecRuntimeFamily } from \"../runtime-mode\";\nimport {\n promptPreviewText,\n promptRuntimeValueToPayload,\n specToPromptRuntimeValue,\n} from \"./prompt-runtime\";\nimport type {\n PromptPickerValue,\n PromptSpecDetail,\n PromptSpecSavePayload,\n} from \"./types\";\n\nexport type PromptPickerFieldProps = {\n value?: PromptPickerValue | undefined;\n onChange: (value: PromptPickerValue | undefined) => void;\n title: string;\n description?: string | undefined;\n loadDetail: () => Promise<PromptSpecDetail>;\n saveDetail: (payload: PromptSpecSavePayload) => Promise<PromptSpecDetail>;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n sections?: readonly SpecSectionId[] | undefined;\n className?: string | undefined;\n disabled?: boolean | undefined;\n};\n\nexport type SpecEditorDialogProps = {\n open: boolean;\n title: string;\n detail: PromptSpecDetail;\n saveDetail: (payload: PromptSpecSavePayload) => Promise<PromptSpecDetail>;\n onClose: () => void;\n onSaved: (detail: PromptSpecDetail) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n sections?: readonly SpecSectionId[] | undefined;\n};\n\nconst DEFAULT_SECTIONS: readonly SpecSectionId[] = [\n \"model\",\n \"prompt\",\n \"workspace\",\n \"permissions\",\n \"environment\",\n \"cli\",\n];\n\nconst SOURCE_OPTIONS: Array<{ id: \"inline\" | \"file\"; label: string }> = [\n { id: \"inline\", label: \"Inline\" },\n { id: \"file\", label: \"File\" },\n];\n\nconst DefaultModelIcon: ProviderGlyph = ({ className }) => (\n <UiRobotAi className={className} />\n);\n\nexport function PromptPickerField({\n value: _value,\n onChange,\n title,\n description,\n loadDetail,\n saveDetail,\n models,\n families,\n sections,\n className,\n disabled,\n}: PromptPickerFieldProps) {\n const [detail, setDetail] = useState<PromptSpecDetail | null>(null);\n const [error, setError] = useState(\"\");\n const [editing, setEditing] = useState(false);\n\n const load = useCallback(() => {\n setError(\"\");\n void loadDetail()\n .then(setDetail)\n .catch((err: unknown) => {\n setError(err instanceof Error ? err.message : \"failed to load prompt\");\n });\n }, [loadDetail]);\n\n useEffect(() => {\n load();\n }, [load]);\n\n const model = useMemo(() => modelDisplay(detail, models), [detail, models]);\n const prompt = promptPreviewText(detail);\n const rowTitle = [title, description, prompt].filter(Boolean).join(\"\\n\");\n const isDisabled = disabled || !detail || Boolean(error);\n\n const onSaved = (next: PromptSpecDetail) => {\n setDetail(next);\n if (next.source === \"default\") {\n onChange(undefined);\n } else {\n onChange(next.source === \"file\" ? { file: next.path ?? \"\" } : { inline: next.raw });\n }\n setEditing(false);\n };\n\n const Glyph = model.icon;\n\n return (\n <div className={cn(\"w-full min-w-0 max-w-full overflow-hidden\", className)}>\n <button\n type=\"button\"\n className={cn(\n \"flex h-9 w-full min-w-0 max-w-full items-center gap-2 overflow-hidden rounded-md border border-border bg-background px-2 text-left text-sm transition-colors\",\n \"hover:bg-muted/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-60\",\n error && \"border-destructive/40 text-destructive\",\n )}\n title={error || rowTitle}\n aria-label={`Edit prompt ${title}`}\n disabled={isDisabled}\n onClick={() => setEditing(true)}\n >\n <Glyph className=\"size-4 shrink-0 text-muted-foreground\" />\n <span className=\"min-w-0 max-w-[40%] flex-none truncate font-medium text-foreground\">\n {error ? \"Prompt error\" : model.label}\n </span>\n <span className=\"h-4 w-px shrink-0 bg-border\" aria-hidden=\"true\" />\n <span className=\"min-w-0 basis-0 flex-1 truncate text-muted-foreground\">\n {error || (detail ? prompt : \"Loading prompt...\")}\n </span>\n </button>\n\n {editing && detail && (\n <SpecEditorDialog\n open={editing}\n title={title}\n detail={detail}\n saveDetail={saveDetail}\n onClose={() => setEditing(false)}\n onSaved={onSaved}\n models={models}\n families={families}\n sections={sections}\n />\n )}\n </div>\n );\n}\n\nexport function SpecEditorDialog({\n open,\n title,\n detail,\n saveDetail,\n onClose,\n onSaved,\n models,\n families,\n sections = DEFAULT_SECTIONS,\n}: SpecEditorDialogProps) {\n const [value, setValue] = useState<AISpecRuntimeValue>(() =>\n specToPromptRuntimeValue(detail.spec, detail.body),\n );\n const [source, setSource] = useState<\"inline\" | \"file\">(\n detail.source === \"file\" ? \"file\" : \"inline\",\n );\n const [path, setPath] = useState(detail.path ?? \"\");\n const [error, setError] = useState(\"\");\n const [saving, setSaving] = useState(false);\n\n useEffect(() => {\n if (!open) return;\n setValue(specToPromptRuntimeValue(detail.spec, detail.body));\n setSource(detail.source === \"file\" ? \"file\" : \"inline\");\n setPath(detail.path ?? \"\");\n setError(\"\");\n }, [detail, open]);\n\n if (!open) return null;\n\n const dirty =\n JSON.stringify(value) !== JSON.stringify(specToPromptRuntimeValue(detail.spec, detail.body)) ||\n source !== (detail.source === \"file\" ? \"file\" : \"inline\") ||\n path !== (detail.path ?? \"\");\n\n async function save() {\n setSaving(true);\n setError(\"\");\n const { spec, body } = promptRuntimeValueToPayload(value);\n try {\n const next = await saveDetail({\n source,\n path: source === \"file\" ? path : undefined,\n spec,\n body,\n baseRaw: detail.raw,\n });\n onSaved(next);\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : \"save failed\");\n } finally {\n setSaving(false);\n }\n }\n\n async function resetDefault() {\n setSaving(true);\n setError(\"\");\n try {\n const next = await saveDetail({ source: \"default\", baseRaw: detail.raw });\n onSaved(next);\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : \"reset failed\");\n } finally {\n setSaving(false);\n }\n }\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n confirmClose={dirty}\n title={`Edit prompt · ${title}`}\n size=\"2xl\"\n className=\"h-[92vh]\"\n footer={\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n {error ? (\n <span className=\"whitespace-pre-wrap text-sm text-destructive\">{error}</span>\n ) : detail.source !== \"default\" ? (\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={resetDefault} disabled={saving}>\n Reset to default\n </Button>\n ) : null}\n </div>\n <div className=\"flex shrink-0 gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onClose} disabled={saving}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={save}\n disabled={saving || (source === \"file\" && path.trim() === \"\")}\n >\n {saving ? \"Saving...\" : \"Save\"}\n </Button>\n </div>\n </div>\n }\n >\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-medium text-muted-foreground\">Save to</span>\n <SegmentedControl\n size=\"sm\"\n value={source}\n options={SOURCE_OPTIONS}\n onChange={setSource}\n aria-label=\"Save location\"\n />\n {source === \"file\" && (\n <input\n type=\"text\"\n className=\"flex-1 rounded-md border border-border bg-background p-1.5 font-mono text-xs\"\n value={path}\n placeholder=\"./prompts/my-prompt.prompt\"\n spellCheck={false}\n onChange={(event) => setPath(event.currentTarget.value)}\n />\n )}\n </div>\n\n <SpecRuntimeEditor\n value={value}\n onChange={setValue}\n models={models}\n families={families}\n sections={sections}\n showHeader={false}\n />\n </div>\n </Modal>\n );\n}\n\nfunction modelDisplay(\n detail: PromptSpecDetail | null,\n models: ChatModel[] | undefined,\n): { label: string; icon: ProviderGlyph } {\n const modelValue = detail?.spec?.model;\n const modelID = typeof modelValue === \"string\" && modelValue.trim() ? modelValue.trim() : \"\";\n const matched = models?.find((model) => model.id === modelID || model.label === modelID);\n const provider = matched?.provider ?? inferProvider(modelID);\n return {\n label: matched?.label ?? (modelID || \"Default model\"),\n icon: providerIcon(provider) ?? DefaultModelIcon,\n };\n}\n\nfunction inferProvider(modelID: string): string | undefined {\n const model = modelID.toLowerCase();\n if (!model) return undefined;\n if (model.includes(\"claude\") || model.includes(\"anthropic\")) return \"anthropic\";\n if (model.includes(\"gemini\") || model.includes(\"google\")) return \"gemini\";\n if (\n model.includes(\"openai\") ||\n model.includes(\"gpt\") ||\n model.includes(\"codex\") ||\n /^o\\d/.test(model)\n ) {\n return \"openai\";\n }\n return undefined;\n}\n"],"names":["jsx","UiRobotAi","useState","useCallback","useEffect","useMemo","promptPreviewText","cn","jsxs","specToPromptRuntimeValue","promptRuntimeValueToPayload","Modal","Button","SegmentedControl","SpecRuntimeEditor","providerIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PromptPicker.cjs","sources":["../../../../src/data/ai/PromptPicker/PromptPicker.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { Button } from \"../../../components/button\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiRobotAi } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { providerIcon, type ProviderGlyph } from \"../../chat/provider-icons\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { SpecRuntimeEditor } from \"../SpecRuntimeEditor\";\nimport type { SpecSectionId } from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nimport { SPEC_RUNTIME_FAMILIES, type SpecRuntimeFamily } from \"../runtime-mode\";\nimport {\n promptPreviewText,\n promptRuntimeValueToPayload,\n specToPromptRuntimeValue,\n} from \"./prompt-runtime\";\nimport { PromptSourceRepair } from \"./PromptSourceRepair\";\nimport {\n isValidPromptSpecDetail,\n type PromptPickerValue,\n type PromptSpecDetail,\n type PromptSpecSavePayload,\n type ValidPromptSpecDetail,\n} from \"./types\";\n\nexport type PromptPickerFieldProps = {\n value?: PromptPickerValue | undefined;\n onChange: (value: PromptPickerValue | undefined) => void;\n title: string;\n description?: string | undefined;\n loadDetail: () => Promise<PromptSpecDetail>;\n saveDetail: (payload: PromptSpecSavePayload) => Promise<PromptSpecDetail>;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n sections?: readonly SpecSectionId[] | undefined;\n sources?: readonly [PromptSource, ...PromptSource[]] | undefined;\n className?: string | undefined;\n disabled?: boolean | undefined;\n};\n\nexport type SpecEditorDialogProps = {\n open: boolean;\n title: string;\n detail: ValidPromptSpecDetail;\n saveDetail: (payload: PromptSpecSavePayload) => Promise<PromptSpecDetail>;\n onClose: () => void;\n onSaved: (detail: PromptSpecDetail) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n sections?: readonly SpecSectionId[] | undefined;\n sources?: readonly [PromptSource, ...PromptSource[]] | undefined;\n};\n\nexport type PromptSource = \"inline\" | \"file\";\n\nconst DEFAULT_SECTIONS: readonly SpecSectionId[] = [\n \"model\",\n \"prompt\",\n \"workspace\",\n \"permissions\",\n \"environment\",\n \"cli\",\n];\n\nconst SOURCE_OPTIONS: Array<{ id: PromptSource; label: string }> = [\n { id: \"inline\", label: \"Inline\" },\n { id: \"file\", label: \"File\" },\n];\nconst DEFAULT_SOURCES: readonly [PromptSource, ...PromptSource[]] = [\n \"inline\",\n \"file\",\n];\n\nconst DefaultModelIcon: ProviderGlyph = ({ className }) => (\n <UiRobotAi className={className} />\n);\n\nfunction runtimeModeMatchesShortcut(\n mode: { id: string; backend: string },\n shortcut: string\n): boolean {\n return mode.id === shortcut || mode.backend.endsWith(`-${shortcut}`);\n}\n\nfunction resolveModelShortcut(\n detail: PromptSpecDetail,\n models: ChatModel[] | undefined,\n families: SpecRuntimeFamily[] | undefined\n): PromptSpecDetail {\n if (!isValidPromptSpecDetail(detail)) return detail;\n const value = detail.spec.model;\n if (typeof value !== \"string\") return detail;\n\n const parts = value.split(\":\").map((part) => part.trim());\n if (parts.length < 2 || parts.length > 3) return detail;\n const [prefix, alias, effort] = parts;\n if (!prefix) return detail;\n const mode = prefix === \"sdk\" ? \"agent\" : prefix;\n const runtimeFamilies = families ?? SPEC_RUNTIME_FAMILIES;\n if (\n !runtimeFamilies.some((family) =>\n family.modes.some((item) => runtimeModeMatchesShortcut(item, mode))\n )\n ) {\n return detail;\n }\n if (!alias || !models?.length) {\n throw new Error(`shortcut ${value} needs a model catalog`);\n }\n\n const model = modelForShortcut(value, alias, models);\n const backend = backendForShortcut(value, mode, model, runtimeFamilies);\n if (\n effort &&\n model.supportedEfforts?.length &&\n !model.supportedEfforts.includes(effort)\n ) {\n throw new Error(`shortcut ${value} does not support effort ${effort}`);\n }\n\n return {\n ...detail,\n spec: {\n ...detail.spec,\n model: model.id,\n backend,\n ...(effort ? { effort } : {}),\n },\n };\n}\n\nfunction modelForShortcut(\n value: string,\n alias: string,\n models: ChatModel[]\n): ChatModel {\n const normalizedAlias = alias.toLowerCase();\n const exact = models.filter((model) =>\n [model.id, model.label].some(\n (candidate) => candidate.toLowerCase() === normalizedAlias\n )\n );\n const matches = exact.length\n ? exact\n : models.filter(\n (model) =>\n model.id\n .toLowerCase()\n .split(/[\\s/_.-]+/)\n .filter(Boolean)\n .at(-1) === normalizedAlias\n );\n if (matches.length === 1) return matches[0]!;\n throw new Error(\n `model shortcut ${JSON.stringify(value)} matched ${\n matches.length\n } catalog models`\n );\n}\n\nfunction backendForShortcut(\n value: string,\n mode: string,\n model: ChatModel,\n families: SpecRuntimeFamily[]\n): string {\n const backends = new Set(\n families.flatMap((family) =>\n family.modes\n .filter(\n (item) =>\n runtimeModeMatchesShortcut(item, mode) &&\n (model.backends?.includes(item.backend) ||\n (!model.backends?.length && family.provider === model.provider))\n )\n .map((item) => item.backend)\n )\n );\n if (backends.size === 1) return [...backends][0]!;\n throw new Error(\n `model shortcut ${JSON.stringify(value)} matched ${\n backends.size\n } runtime backends`\n );\n}\n\nexport function PromptPickerField({\n value: _value,\n onChange,\n title,\n description,\n loadDetail,\n saveDetail,\n models,\n families,\n sections,\n sources = DEFAULT_SOURCES,\n className,\n disabled,\n}: PromptPickerFieldProps) {\n const [detail, setDetail] = useState<PromptSpecDetail | null>(null);\n const [error, setError] = useState(\"\");\n const [editing, setEditing] = useState(false);\n\n const load = useCallback(() => {\n setError(\"\");\n void loadDetail()\n .then((next) => setDetail(resolveModelShortcut(next, models, families)))\n .catch((err: unknown) => {\n setError(err instanceof Error ? err.message : \"failed to load prompt\");\n });\n }, [families, loadDetail, models]);\n\n useEffect(() => {\n load();\n }, [load]);\n\n const model = useMemo(() => modelDisplay(detail, models), [detail, models]);\n const prompt = promptPreviewText(detail);\n const rowTitle = [title, description, prompt].filter(Boolean).join(\"\\n\");\n // A parse error is rendered data, not a load failure: it keeps the row\n // actionable so the raw source can be repaired. Only a genuine load failure\n // (no detail) disables the row.\n const parseError = detail?.parseError ?? \"\";\n const shownError = error || parseError;\n const isDisabled = disabled || !detail;\n\n const onSaved = (next: PromptSpecDetail) => {\n setDetail(next);\n if (next.source === \"default\") {\n onChange(undefined);\n } else {\n onChange(\n next.source === \"file\"\n ? { file: next.path ?? \"\" }\n : { inline: next.raw }\n );\n }\n setEditing(false);\n };\n\n const Glyph = model.icon;\n\n return (\n <div className={cn(\"w-full min-w-0 max-w-full overflow-hidden\", className)}>\n <button\n type=\"button\"\n className={cn(\n \"flex h-9 w-full min-w-0 max-w-full items-center gap-2 overflow-hidden rounded-md border border-border bg-background px-2 text-left text-sm transition-colors\",\n \"hover:bg-muted/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-60\",\n shownError && \"border-destructive/40 text-destructive\"\n )}\n title={shownError || rowTitle}\n aria-label={`Edit prompt ${title}`}\n disabled={isDisabled}\n onClick={() => setEditing(true)}\n >\n <Glyph className=\"size-4 shrink-0 text-muted-foreground\" />\n <span className=\"min-w-0 max-w-[40%] flex-none truncate font-medium text-foreground\">\n {shownError ? \"Prompt error\" : model.label}\n </span>\n <span className=\"h-4 w-px shrink-0 bg-border\" aria-hidden=\"true\" />\n <span className=\"min-w-0 basis-0 flex-1 truncate text-muted-foreground\">\n {shownError || (detail ? prompt : \"Loading prompt...\")}\n </span>\n </button>\n\n {editing &&\n detail &&\n (isValidPromptSpecDetail(detail) ? (\n <SpecEditorDialog\n open={editing}\n title={title}\n detail={detail}\n saveDetail={saveDetail}\n onClose={() => setEditing(false)}\n onSaved={onSaved}\n models={models}\n families={families}\n sections={sections}\n sources={sources}\n />\n ) : (\n <PromptSourceRepair\n open={editing}\n title={title}\n detail={detail}\n saveDetail={saveDetail}\n onClose={() => setEditing(false)}\n onSaved={onSaved}\n />\n ))}\n </div>\n );\n}\n\nexport function SpecEditorDialog({\n open,\n title,\n detail,\n saveDetail,\n onClose,\n onSaved,\n models,\n families,\n sections = DEFAULT_SECTIONS,\n sources = DEFAULT_SOURCES,\n}: SpecEditorDialogProps) {\n const [value, setValue] = useState<AISpecRuntimeValue>(() =>\n specToPromptRuntimeValue(detail.spec, detail.body)\n );\n const selectedSource = detail.source === \"file\" ? \"file\" : \"inline\";\n const initialSource = sources.includes(selectedSource)\n ? selectedSource\n : sources[0];\n const sourceOptions = SOURCE_OPTIONS.filter((option) =>\n sources.includes(option.id)\n );\n const [source, setSource] = useState<PromptSource>(initialSource);\n const [path, setPath] = useState(detail.path ?? \"\");\n const [error, setError] = useState(\"\");\n const [saving, setSaving] = useState(false);\n\n useEffect(() => {\n if (!open) return;\n setValue(specToPromptRuntimeValue(detail.spec, detail.body));\n setSource(initialSource);\n setPath(detail.path ?? \"\");\n setError(\"\");\n }, [detail, initialSource, open]);\n\n if (!open) return null;\n\n const dirty =\n JSON.stringify(value) !==\n JSON.stringify(specToPromptRuntimeValue(detail.spec, detail.body)) ||\n source !== initialSource ||\n path !== (detail.path ?? \"\");\n\n async function save() {\n setSaving(true);\n setError(\"\");\n const { spec, body } = promptRuntimeValueToPayload(value);\n try {\n const next = await saveDetail({\n source,\n path: source === \"file\" ? path : undefined,\n spec,\n body,\n baseRaw: detail.raw,\n });\n onSaved(next);\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : \"save failed\");\n } finally {\n setSaving(false);\n }\n }\n\n async function resetDefault() {\n setSaving(true);\n setError(\"\");\n try {\n const next = await saveDetail({ source: \"default\", baseRaw: detail.raw });\n onSaved(next);\n } catch (err: unknown) {\n setError(err instanceof Error ? err.message : \"reset failed\");\n } finally {\n setSaving(false);\n }\n }\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n confirmClose={dirty}\n title={`Edit prompt · ${title}`}\n size=\"2xl\"\n className=\"h-[92vh]\"\n footer={\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n {error ? (\n <span className=\"whitespace-pre-wrap text-sm text-destructive\">\n {error}\n </span>\n ) : detail.source !== \"default\" ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={resetDefault}\n disabled={saving}\n >\n Reset to default\n </Button>\n ) : null}\n </div>\n <div className=\"flex shrink-0 gap-2\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onClose}\n disabled={saving}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n onClick={save}\n disabled={saving || (source === \"file\" && path.trim() === \"\")}\n >\n {saving ? \"Saving...\" : \"Save\"}\n </Button>\n </div>\n </div>\n }\n >\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-2\">\n {sourceOptions.length > 1 && (\n <>\n <span className=\"text-xs font-medium text-muted-foreground\">\n Save to\n </span>\n <SegmentedControl\n size=\"sm\"\n value={source}\n options={sourceOptions}\n onChange={setSource}\n aria-label=\"Save location\"\n />\n </>\n )}\n {source === \"file\" && (\n <input\n type=\"text\"\n className=\"flex-1 rounded-md border border-border bg-background p-1.5 font-mono text-xs\"\n value={path}\n placeholder=\"./prompts/my-prompt.prompt\"\n spellCheck={false}\n onChange={(event) => setPath(event.currentTarget.value)}\n />\n )}\n </div>\n\n <SpecRuntimeEditor\n value={value}\n onChange={setValue}\n models={models}\n families={families}\n sections={sections}\n showHeader={false}\n />\n </div>\n </Modal>\n );\n}\n\nfunction modelDisplay(\n detail: PromptSpecDetail | null,\n models: ChatModel[] | undefined\n): { label: string; icon: ProviderGlyph } {\n const modelValue = detail?.spec?.model;\n const modelID =\n typeof modelValue === \"string\" && modelValue.trim()\n ? modelValue.trim()\n : \"\";\n const matched = models?.find(\n (model) => model.id === modelID || model.label === modelID\n );\n const provider = matched?.provider ?? inferProvider(modelID);\n return {\n label: matched?.label ?? (modelID || \"Default model\"),\n icon: providerIcon(provider) ?? DefaultModelIcon,\n };\n}\n\nfunction inferProvider(modelID: string): string | undefined {\n const model = modelID.toLowerCase();\n if (!model) return undefined;\n if (model.includes(\"claude\") || model.includes(\"anthropic\"))\n return \"anthropic\";\n if (model.includes(\"gemini\") || model.includes(\"google\")) return \"gemini\";\n if (\n model.includes(\"openai\") ||\n model.includes(\"gpt\") ||\n model.includes(\"codex\") ||\n /^o\\d/.test(model)\n ) {\n return \"openai\";\n }\n return undefined;\n}\n"],"names":["jsx","UiRobotAi","isValidPromptSpecDetail","SPEC_RUNTIME_FAMILIES","useState","useCallback","useEffect","useMemo","promptPreviewText","cn","jsxs","PromptSourceRepair","specToPromptRuntimeValue","promptRuntimeValueToPayload","Modal","Button","Fragment","SegmentedControl","SpecRuntimeEditor","providerIcon"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChatModel } from '../../chat/types';
|
|
2
2
|
import { SpecSectionId } from '../SpecRuntimeEditor/types';
|
|
3
3
|
import { SpecRuntimeFamily } from '../runtime-mode';
|
|
4
|
-
import { PromptPickerValue, PromptSpecDetail, PromptSpecSavePayload } from './types';
|
|
4
|
+
import { PromptPickerValue, PromptSpecDetail, PromptSpecSavePayload, ValidPromptSpecDetail } from './types';
|
|
5
5
|
export type PromptPickerFieldProps = {
|
|
6
6
|
value?: PromptPickerValue | undefined;
|
|
7
7
|
onChange: (value: PromptPickerValue | undefined) => void;
|
|
@@ -12,20 +12,23 @@ export type PromptPickerFieldProps = {
|
|
|
12
12
|
models?: ChatModel[] | undefined;
|
|
13
13
|
families?: SpecRuntimeFamily[] | undefined;
|
|
14
14
|
sections?: readonly SpecSectionId[] | undefined;
|
|
15
|
+
sources?: readonly [PromptSource, ...PromptSource[]] | undefined;
|
|
15
16
|
className?: string | undefined;
|
|
16
17
|
disabled?: boolean | undefined;
|
|
17
18
|
};
|
|
18
19
|
export type SpecEditorDialogProps = {
|
|
19
20
|
open: boolean;
|
|
20
21
|
title: string;
|
|
21
|
-
detail:
|
|
22
|
+
detail: ValidPromptSpecDetail;
|
|
22
23
|
saveDetail: (payload: PromptSpecSavePayload) => Promise<PromptSpecDetail>;
|
|
23
24
|
onClose: () => void;
|
|
24
25
|
onSaved: (detail: PromptSpecDetail) => void;
|
|
25
26
|
models?: ChatModel[] | undefined;
|
|
26
27
|
families?: SpecRuntimeFamily[] | undefined;
|
|
27
28
|
sections?: readonly SpecSectionId[] | undefined;
|
|
29
|
+
sources?: readonly [PromptSource, ...PromptSource[]] | undefined;
|
|
28
30
|
};
|
|
29
|
-
export
|
|
30
|
-
export declare function
|
|
31
|
+
export type PromptSource = "inline" | "file";
|
|
32
|
+
export declare function PromptPickerField({ value: _value, onChange, title, description, loadDetail, saveDetail, models, families, sections, sources, className, disabled, }: PromptPickerFieldProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function SpecEditorDialog({ open, title, detail, saveDetail, onClose, onSaved, models, families, sections, sources, }: SpecEditorDialogProps): import("react/jsx-runtime").JSX.Element | null;
|
|
31
34
|
//# sourceMappingURL=PromptPicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PromptPicker.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptPicker/PromptPicker.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PromptPicker.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptPicker/PromptPicker.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAOhF,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,KAAK,IAAI,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C,UAAU,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;IAChD,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;IACjE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,qBAAqB,CAAC;IAC9B,UAAU,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,CAAC;IAChD,OAAO,CAAC,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;CAClE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAqI7C,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EACR,KAAK,EACL,WAAW,EACX,UAAU,EACV,UAAU,EACV,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,OAAyB,EACzB,SAAS,EACT,QAAQ,GACT,EAAE,sBAAsB,2CAgGxB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,KAAK,EACL,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,QAA2B,EAC3B,OAAyB,GAC1B,EAAE,qBAAqB,kDAuJvB"}
|