@flanksource/clicky-ui 0.3.41 → 0.3.42
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/dist/ai.cjs +4 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +4 -0
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.cjs +3 -1
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +4 -2
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentCardParts.cjs +16 -0
- package/dist/comments/CommentCardParts.cjs.map +1 -1
- package/dist/comments/CommentCardParts.d.ts +4 -1
- package/dist/comments/CommentCardParts.d.ts.map +1 -1
- package/dist/comments/CommentCardParts.js +16 -0
- package/dist/comments/CommentCardParts.js.map +1 -1
- package/dist/comments/comment-types.cjs.map +1 -1
- package/dist/comments/comment-types.d.ts +4 -0
- package/dist/comments/comment-types.d.ts.map +1 -1
- package/dist/comments/comment-types.js.map +1 -1
- package/dist/components/Combobox.cjs +54 -8
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +56 -10
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxMenu.cjs +139 -113
- package/dist/components/ComboboxMenu.cjs.map +1 -1
- package/dist/components/ComboboxMenu.d.ts +3 -1
- package/dist/components/ComboboxMenu.d.ts.map +1 -1
- package/dist/components/ComboboxMenu.js +139 -113
- package/dist/components/ComboboxMenu.js.map +1 -1
- package/dist/components/ComboboxMenuTrigger.cjs +87 -0
- package/dist/components/ComboboxMenuTrigger.cjs.map +1 -0
- package/dist/components/ComboboxMenuTrigger.d.ts +23 -0
- package/dist/components/ComboboxMenuTrigger.d.ts.map +1 -0
- package/dist/components/ComboboxMenuTrigger.js +87 -0
- package/dist/components/ComboboxMenuTrigger.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +30 -7
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +30 -7
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/SegmentedControl.cjs +20 -3
- package/dist/components/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl.d.ts +11 -0
- package/dist/components/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl.js +21 -4
- package/dist/components/SegmentedControl.js.map +1 -1
- package/dist/components/combobox-types.d.ts +8 -0
- package/dist/components/combobox-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-debug-badge.cjs +108 -0
- package/dist/components/json-schema-form-debug-badge.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-badge.d.ts +10 -0
- package/dist/components/json-schema-form-debug-badge.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-badge.js +108 -0
- package/dist/components/json-schema-form-debug-badge.js.map +1 -0
- package/dist/components/json-schema-form-debug-glyph-map.cjs +129 -0
- package/dist/components/json-schema-form-debug-glyph-map.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-glyph-map.d.ts +20 -0
- package/dist/components/json-schema-form-debug-glyph-map.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-glyph-map.js +129 -0
- package/dist/components/json-schema-form-debug-glyph-map.js.map +1 -0
- package/dist/components/json-schema-form-debug-glyph.cjs +13 -0
- package/dist/components/json-schema-form-debug-glyph.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-glyph.d.ts +6 -0
- package/dist/components/json-schema-form-debug-glyph.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-glyph.js +13 -0
- package/dist/components/json-schema-form-debug-glyph.js.map +1 -0
- package/dist/components/json-schema-form-debug-groups.cjs +56 -0
- package/dist/components/json-schema-form-debug-groups.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-groups.d.ts +8 -0
- package/dist/components/json-schema-form-debug-groups.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-groups.js +56 -0
- package/dist/components/json-schema-form-debug-groups.js.map +1 -0
- package/dist/components/json-schema-form-debug-keywords.cjs +159 -0
- package/dist/components/json-schema-form-debug-keywords.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-keywords.d.ts +6 -0
- package/dist/components/json-schema-form-debug-keywords.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-keywords.js +159 -0
- package/dist/components/json-schema-form-debug-keywords.js.map +1 -0
- package/dist/components/json-schema-form-debug-listeners.cjs +102 -0
- package/dist/components/json-schema-form-debug-listeners.cjs.map +1 -0
- package/dist/components/json-schema-form-debug-listeners.d.ts +6 -0
- package/dist/components/json-schema-form-debug-listeners.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug-listeners.js +102 -0
- package/dist/components/json-schema-form-debug-listeners.js.map +1 -0
- package/dist/components/json-schema-form-debug.cjs +31 -0
- package/dist/components/json-schema-form-debug.cjs.map +1 -0
- package/dist/components/json-schema-form-debug.d.ts +11 -0
- package/dist/components/json-schema-form-debug.d.ts.map +1 -0
- package/dist/components/json-schema-form-debug.js +31 -0
- package/dist/components/json-schema-form-debug.js.map +1 -0
- package/dist/components/json-schema-form-enum-choice.cjs +114 -0
- package/dist/components/json-schema-form-enum-choice.cjs.map +1 -0
- package/dist/components/json-schema-form-enum-choice.d.ts +14 -0
- package/dist/components/json-schema-form-enum-choice.d.ts.map +1 -0
- package/dist/components/json-schema-form-enum-choice.js +114 -0
- package/dist/components/json-schema-form-enum-choice.js.map +1 -0
- package/dist/components/json-schema-form-fields.cjs +3 -93
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +1 -91
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-listeners.cjs +7 -1
- package/dist/components/json-schema-form-listeners.cjs.map +1 -1
- package/dist/components/json-schema-form-listeners.d.ts.map +1 -1
- package/dist/components/json-schema-form-listeners.js +7 -1
- package/dist/components/json-schema-form-listeners.js.map +1 -1
- package/dist/components/json-schema-form-preferences.cjs +1 -0
- package/dist/components/json-schema-form-preferences.cjs.map +1 -1
- package/dist/components/json-schema-form-preferences.d.ts +1 -0
- package/dist/components/json-schema-form-preferences.d.ts.map +1 -1
- package/dist/components/json-schema-form-preferences.js +1 -0
- package/dist/components/json-schema-form-preferences.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +21 -5
- 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 +21 -5
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-runtime-types.d.ts +1 -0
- package/dist/components/json-schema-form-runtime-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-tone.cjs +12 -0
- package/dist/components/json-schema-form-tone.cjs.map +1 -1
- package/dist/components/json-schema-form-tone.js +12 -0
- package/dist/components/json-schema-form-tone.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +1 -0
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/data/GraphDiagram.cjs +125 -138
- package/dist/data/GraphDiagram.cjs.map +1 -1
- package/dist/data/GraphDiagram.d.ts +30 -23
- package/dist/data/GraphDiagram.d.ts.map +1 -1
- package/dist/data/GraphDiagram.js +128 -141
- package/dist/data/GraphDiagram.js.map +1 -1
- package/dist/data/GraphDiagramEdges.cjs +208 -0
- package/dist/data/GraphDiagramEdges.cjs.map +1 -0
- package/dist/data/GraphDiagramEdges.d.ts +40 -0
- package/dist/data/GraphDiagramEdges.d.ts.map +1 -0
- package/dist/data/GraphDiagramEdges.js +208 -0
- package/dist/data/GraphDiagramEdges.js.map +1 -0
- package/dist/data/GraphDiagramNodes.cjs +142 -0
- package/dist/data/GraphDiagramNodes.cjs.map +1 -0
- package/dist/data/GraphDiagramNodes.d.ts +22 -0
- package/dist/data/GraphDiagramNodes.d.ts.map +1 -0
- package/dist/data/GraphDiagramNodes.js +142 -0
- package/dist/data/GraphDiagramNodes.js.map +1 -0
- package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs +8 -3
- package/dist/data/ai/PromptRunEditor/RuntimeRows.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/RuntimeRows.js +8 -3
- package/dist/data/ai/PromptRunEditor/RuntimeRows.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +37 -43
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +3 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +38 -44
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs +16 -5
- package/dist/data/ai/PromptRunEditor/runtimeActions.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.js +17 -6
- package/dist/data/ai/PromptRunEditor/runtimeActions.js.map +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.cjs +12 -0
- package/dist/data/ai/SessionInspector.approvals-model.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.d.ts +11 -2
- package/dist/data/ai/SessionInspector.approvals-model.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.js +12 -0
- package/dist/data/ai/SessionInspector.approvals-model.js.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.cjs +25 -1
- package/dist/data/ai/SessionInspector.approvals.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.approvals.js +26 -2
- package/dist/data/ai/SessionInspector.approvals.js.map +1 -1
- package/dist/data/ai/SessionInspector.summary.cjs +9 -3
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.summary.js +9 -3
- package/dist/data/ai/SessionInspector.summary.js.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.cjs +4 -0
- package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.transcript.js +4 -0
- package/dist/data/ai/SessionInspector.transcript.js.map +1 -1
- package/dist/data/ai/SessionViewer.approval-body.cjs +146 -0
- package/dist/data/ai/SessionViewer.approval-body.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.approval-body.d.ts +11 -0
- package/dist/data/ai/SessionViewer.approval-body.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.approval-body.js +146 -0
- package/dist/data/ai/SessionViewer.approval-body.js.map +1 -0
- package/dist/data/ai/SessionViewer.approval-forms.cjs +150 -0
- package/dist/data/ai/SessionViewer.approval-forms.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.approval-forms.d.ts +23 -0
- package/dist/data/ai/SessionViewer.approval-forms.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.approval-forms.js +150 -0
- package/dist/data/ai/SessionViewer.approval-forms.js.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +57 -20
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +13 -3
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.decision-controls.cjs +313 -0
- package/dist/data/ai/SessionViewer.decision-controls.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.decision-controls.d.ts +43 -0
- package/dist/data/ai/SessionViewer.decision-controls.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.decision-controls.js +313 -0
- package/dist/data/ai/SessionViewer.decision-controls.js.map +1 -0
- package/dist/data/ai/SessionViewer.decision.cjs +21 -0
- package/dist/data/ai/SessionViewer.decision.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.decision.d.ts +12 -0
- package/dist/data/ai/SessionViewer.decision.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.decision.js +21 -0
- package/dist/data/ai/SessionViewer.decision.js.map +1 -0
- package/dist/data/ai/SessionViewer.input.cjs +14 -0
- package/dist/data/ai/SessionViewer.input.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.input.d.ts +5 -0
- package/dist/data/ai/SessionViewer.input.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.input.js +14 -0
- package/dist/data/ai/SessionViewer.input.js.map +1 -1
- package/dist/data/ai/SessionViewer.js +58 -21
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +4 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +6 -3
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +2 -1
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +6 -3
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.cjs +29 -237
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.tool-row.js +27 -235
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +4 -0
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.cjs +8 -2
- package/dist/data/ai/SessionViewerMenu.cjs.map +1 -1
- package/dist/data/ai/SessionViewerMenu.d.ts +4 -1
- package/dist/data/ai/SessionViewerMenu.d.ts.map +1 -1
- package/dist/data/ai/SessionViewerMenu.js +8 -2
- package/dist/data/ai/SessionViewerMenu.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +28 -17
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +10 -2
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +29 -18
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +9 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +9 -2
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +9 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +1 -1
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +8 -2
- 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 +14 -6
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -0
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +14 -6
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/approval-request.cjs +75 -0
- package/dist/data/ai/approval-request.cjs.map +1 -0
- package/dist/data/ai/approval-request.d.ts +155 -0
- package/dist/data/ai/approval-request.d.ts.map +1 -0
- package/dist/data/ai/approval-request.js +75 -0
- package/dist/data/ai/approval-request.js.map +1 -0
- package/dist/data/ai/index.d.ts +3 -0
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs +125 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.cjs.map +1 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts +11 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js +125 -0
- package/dist/data/ai/runtime-preset-menu/SavePresetDialog.js.map +1 -0
- package/dist/data/ai/runtime-preset-menu/index.d.ts +3 -0
- package/dist/data/ai/runtime-preset-menu/index.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/model.cjs +73 -0
- package/dist/data/ai/runtime-preset-menu/model.cjs.map +1 -0
- package/dist/data/ai/runtime-preset-menu/model.d.ts +13 -0
- package/dist/data/ai/runtime-preset-menu/model.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/model.js +73 -0
- package/dist/data/ai/runtime-preset-menu/model.js.map +1 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs +149 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.cjs.map +1 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts +15 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.d.ts.map +1 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js +149 -0
- package/dist/data/ai/runtime-preset-menu/use-runtime-preset-menu.js.map +1 -0
- package/dist/data/ai/runtime-spec-fields.cjs +166 -0
- package/dist/data/ai/runtime-spec-fields.cjs.map +1 -0
- package/dist/data/ai/runtime-spec-fields.d.ts +13 -0
- package/dist/data/ai/runtime-spec-fields.d.ts.map +1 -0
- package/dist/data/ai/runtime-spec-fields.js +166 -0
- package/dist/data/ai/runtime-spec-fields.js.map +1 -0
- package/dist/data/ai/session-categories.cjs +4 -0
- package/dist/data/ai/session-categories.cjs.map +1 -1
- package/dist/data/ai/session-categories.d.ts +1 -0
- package/dist/data/ai/session-categories.d.ts.map +1 -1
- package/dist/data/ai/session-categories.js +4 -0
- package/dist/data/ai/session-categories.js.map +1 -1
- package/dist/data/ai/use-session-scroll.cjs +49 -21
- package/dist/data/ai/use-session-scroll.cjs.map +1 -1
- package/dist/data/ai/use-session-scroll.d.ts +2 -0
- package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
- package/dist/data/ai/use-session-scroll.js +49 -21
- package/dist/data/ai/use-session-scroll.js.map +1 -1
- package/dist/data/chat/Chat.runtime.cjs +1 -1
- package/dist/data/chat/Chat.runtime.cjs.map +1 -1
- package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
- package/dist/data/chat/Chat.runtime.js +1 -1
- package/dist/data/chat/Chat.runtime.js.map +1 -1
- package/dist/data/graph-columns-layout.cjs +216 -0
- package/dist/data/graph-columns-layout.cjs.map +1 -0
- package/dist/data/graph-columns-layout.d.ts +56 -0
- package/dist/data/graph-columns-layout.d.ts.map +1 -0
- package/dist/data/graph-columns-layout.js +216 -0
- package/dist/data/graph-columns-layout.js.map +1 -0
- package/dist/data/graph-diagram-model.cjs +73 -0
- package/dist/data/graph-diagram-model.cjs.map +1 -0
- package/dist/data/graph-diagram-model.d.ts +90 -0
- package/dist/data/graph-diagram-model.d.ts.map +1 -0
- package/dist/data/graph-diagram-model.js +73 -0
- package/dist/data/graph-diagram-model.js.map +1 -0
- package/dist/data/graph-edge-routing.cjs +235 -0
- package/dist/data/graph-edge-routing.cjs.map +1 -0
- package/dist/data/graph-edge-routing.d.ts +73 -0
- package/dist/data/graph-edge-routing.d.ts.map +1 -0
- package/dist/data/graph-edge-routing.js +235 -0
- package/dist/data/graph-edge-routing.js.map +1 -0
- package/dist/data/graph-layout.cjs +0 -82
- package/dist/data/graph-layout.cjs.map +1 -1
- package/dist/data/graph-layout.d.ts +1 -28
- package/dist/data/graph-layout.d.ts.map +1 -1
- package/dist/data/graph-layout.js +1 -83
- package/dist/data/graph-layout.js.map +1 -1
- package/dist/data/har/HarPanel.cjs +129 -33
- package/dist/data/har/HarPanel.cjs.map +1 -1
- package/dist/data/har/HarPanel.d.ts +13 -1
- package/dist/data/har/HarPanel.d.ts.map +1 -1
- package/dist/data/har/HarPanel.js +130 -34
- package/dist/data/har/HarPanel.js.map +1 -1
- package/dist/data/har/fixtures.d.ts +12 -0
- package/dist/data/har/fixtures.d.ts.map +1 -1
- package/dist/data/har/types.d.ts +12 -0
- package/dist/data/har/types.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +67 -84
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts +4 -5
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.fields.cjs +170 -0
- package/dist/data/runtime/RuntimeBar.fields.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBar.fields.d.ts +16 -0
- package/dist/data/runtime/RuntimeBar.fields.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.fields.js +170 -0
- package/dist/data/runtime/RuntimeBar.fields.js.map +1 -0
- package/dist/data/runtime/RuntimeBar.js +70 -87
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.selection.cjs +56 -0
- package/dist/data/runtime/RuntimeBar.selection.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBar.selection.d.ts +20 -0
- package/dist/data/runtime/RuntimeBar.selection.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.selection.js +56 -0
- package/dist/data/runtime/RuntimeBar.selection.js.map +1 -0
- package/dist/data/runtime/RuntimeBarActions.cjs +10 -6
- package/dist/data/runtime/RuntimeBarActions.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts +8 -1
- package/dist/data/runtime/RuntimeBarActions.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarActions.js +10 -6
- package/dist/data/runtime/RuntimeBarActions.js.map +1 -1
- package/dist/data/runtime/RuntimeBarIdentity.cjs +166 -0
- package/dist/data/runtime/RuntimeBarIdentity.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBarIdentity.d.ts +25 -0
- package/dist/data/runtime/RuntimeBarIdentity.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBarIdentity.js +166 -0
- package/dist/data/runtime/RuntimeBarIdentity.js.map +1 -0
- package/dist/data/runtime/RuntimeBarLayout.cjs +95 -0
- package/dist/data/runtime/RuntimeBarLayout.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBarLayout.d.ts +9 -0
- package/dist/data/runtime/RuntimeBarLayout.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBarLayout.js +95 -0
- package/dist/data/runtime/RuntimeBarLayout.js.map +1 -0
- package/dist/data/runtime/RuntimeBarSegment.cjs +25 -14
- package/dist/data/runtime/RuntimeBarSegment.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.d.ts +4 -0
- package/dist/data/runtime/RuntimeBarSegment.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarSegment.js +25 -14
- package/dist/data/runtime/RuntimeBarSegment.js.map +1 -1
- package/dist/data/runtime/RuntimeLimitInput.cjs +41 -0
- package/dist/data/runtime/RuntimeLimitInput.cjs.map +1 -0
- package/dist/data/runtime/RuntimeLimitInput.d.ts +9 -0
- package/dist/data/runtime/RuntimeLimitInput.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeLimitInput.js +41 -0
- package/dist/data/runtime/RuntimeLimitInput.js.map +1 -0
- package/dist/data/runtime/use-runtime-bar-overflow.cjs +70 -0
- package/dist/data/runtime/use-runtime-bar-overflow.cjs.map +1 -0
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts +13 -0
- package/dist/data/runtime/use-runtime-bar-overflow.d.ts.map +1 -0
- package/dist/data/runtime/use-runtime-bar-overflow.js +70 -0
- package/dist/data/runtime/use-runtime-bar-overflow.js.map +1 -0
- package/dist/data/use-edge-focus.cjs +20 -0
- package/dist/data/use-edge-focus.cjs.map +1 -0
- package/dist/data/use-edge-focus.d.ts +23 -0
- package/dist/data/use-edge-focus.d.ts.map +1 -0
- package/dist/data/use-edge-focus.js +20 -0
- package/dist/data/use-edge-focus.js.map +1 -0
- package/dist/data/use-pan-zoom.cjs +159 -0
- package/dist/data/use-pan-zoom.cjs.map +1 -0
- package/dist/data/use-pan-zoom.d.ts +79 -0
- package/dist/data/use-pan-zoom.d.ts.map +1 -0
- package/dist/data/use-pan-zoom.js +159 -0
- package/dist/data/use-pan-zoom.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +5 -1
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +4 -3
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +6 -2
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +5 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/overlay/DropdownMenu.cjs +1 -0
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts +4 -0
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js +1 -0
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.cjs +31 -15
- package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.js +31 -15
- package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +3 -1
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +3 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +3 -1
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/useOperationPages.cjs +6 -1
- package/dist/rpc/useOperationPages.cjs.map +1 -1
- package/dist/rpc/useOperationPages.d.ts +3 -1
- package/dist/rpc/useOperationPages.d.ts.map +1 -1
- package/dist/rpc/useOperationPages.js +6 -1
- package/dist/rpc/useOperationPages.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/schemas/json-schema-form.schema.json +5 -0
- package/dist/data/runtime/RuntimeBarCombo.cjs +0 -423
- package/dist/data/runtime/RuntimeBarCombo.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBarCombo.d.ts +0 -33
- package/dist/data/runtime/RuntimeBarCombo.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBarCombo.js +0 -423
- package/dist/data/runtime/RuntimeBarCombo.js.map +0 -1
- package/dist/data/runtime/RuntimeBarLimits.cjs +0 -262
- package/dist/data/runtime/RuntimeBarLimits.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBarLimits.d.ts +0 -17
- package/dist/data/runtime/RuntimeBarLimits.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBarLimits.js +0 -262
- package/dist/data/runtime/RuntimeBarLimits.js.map +0 -1
- package/dist/data/runtime/RuntimeBarSegments.cjs +0 -346
- package/dist/data/runtime/RuntimeBarSegments.cjs.map +0 -1
- package/dist/data/runtime/RuntimeBarSegments.d.ts +0 -37
- package/dist/data/runtime/RuntimeBarSegments.d.ts.map +0 -1
- package/dist/data/runtime/RuntimeBarSegments.js +0 -346
- package/dist/data/runtime/RuntimeBarSegments.js.map +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { jsx
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import { DEFAULT_REASONING_EFFORTS } from "../chat/effort-icons.js";
|
|
4
|
-
import { cn } from "../../lib/utils.js";
|
|
5
4
|
import { withBudgetLimit } from "./RuntimeBar.limits.js";
|
|
6
|
-
import { runtimeModelForValue
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
5
|
+
import { runtimeModelForValue } from "./RuntimeBar.model.js";
|
|
6
|
+
import { RuntimeBarLayout } from "./RuntimeBarLayout.js";
|
|
7
|
+
import { effortField, budgetField, timeoutField } from "./RuntimeBar.fields.js";
|
|
8
|
+
import { runtimeModes, modelGroupsForMode, withRuntimeMode } from "./RuntimeBar.selection.js";
|
|
9
9
|
import { RuntimeBarVariantContext } from "./RuntimeBar.context.js";
|
|
10
10
|
import { isSelectableModel } from "./availability.js";
|
|
11
11
|
import { effortOptionsForModel, reconcileModelCapabilities } from "./model-capabilities.js";
|
|
12
|
-
import { selectionForRuntime, SPEC_RUNTIME_FAMILIES, familyById
|
|
12
|
+
import { selectionForRuntime, SPEC_RUNTIME_FAMILIES, familyById } from "./runtime-mode.js";
|
|
13
13
|
import { runtimeModeFromModel } from "../../lib/runtime-family.js";
|
|
14
14
|
function RuntimeBar({
|
|
15
15
|
value,
|
|
@@ -29,24 +29,32 @@ function RuntimeBar({
|
|
|
29
29
|
ariaLabel = "Runtime",
|
|
30
30
|
className
|
|
31
31
|
}) {
|
|
32
|
-
var _a, _b;
|
|
32
|
+
var _a, _b, _c, _d;
|
|
33
33
|
const [preference, setPreference] = useState({ model: effectiveModel, family: void 0 });
|
|
34
34
|
if (preference.model !== effectiveModel) {
|
|
35
35
|
setPreference({ model: effectiveModel, family: void 0 });
|
|
36
36
|
}
|
|
37
37
|
const preferredFamily = preference.model === effectiveModel ? preference.family : void 0;
|
|
38
|
-
const specMode =
|
|
38
|
+
const specMode = ((_a = value.mode) == null ? void 0 : _a.trim()) || runtimeModeFromModel(value.model) || (effectiveMode == null ? void 0 : effectiveMode.trim());
|
|
39
39
|
const selection = selectionForRuntime(
|
|
40
40
|
families,
|
|
41
41
|
specMode,
|
|
42
|
-
value.model || (preferredFamily ? void 0 : effectiveModel),
|
|
42
|
+
value.id || value.model || (preferredFamily ? void 0 : effectiveModel),
|
|
43
43
|
models,
|
|
44
44
|
preferredFamily
|
|
45
45
|
);
|
|
46
46
|
const family = familyById(families, selection.family);
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
|
|
47
|
+
const modes = runtimeModes(families);
|
|
48
|
+
const mode = modes.find((entry) => entry.id === selection.mode);
|
|
49
|
+
if (!mode)
|
|
50
|
+
throw new Error(
|
|
51
|
+
`No available runtime mode for ${JSON.stringify(selection.mode)}`
|
|
52
|
+
);
|
|
53
|
+
const groups = modelGroupsForMode({ models, families, mode: mode.id });
|
|
54
|
+
const resolvedModel = runtimeModelForValue(
|
|
55
|
+
groups.flatMap((group) => group.models),
|
|
56
|
+
value
|
|
57
|
+
);
|
|
50
58
|
const selectedModelUnavailable = Boolean(
|
|
51
59
|
!resolvedModel && (value.id || value.model) && runtimeModelForValue(models, value, (entry) => !isSelectableModel(entry))
|
|
52
60
|
);
|
|
@@ -61,14 +69,13 @@ function RuntimeBar({
|
|
|
61
69
|
)) == null ? void 0 : _b.label) ?? effectiveModel;
|
|
62
70
|
const applyMode = (familyId, modeId) => {
|
|
63
71
|
setPreference({ model: effectiveModel, family: familyId });
|
|
64
|
-
const next =
|
|
72
|
+
const next = withRuntimeMode({
|
|
65
73
|
value,
|
|
66
74
|
models,
|
|
67
75
|
families,
|
|
68
|
-
|
|
69
|
-
modeId,
|
|
76
|
+
mode: modeId,
|
|
70
77
|
reasoningEfforts
|
|
71
|
-
);
|
|
78
|
+
});
|
|
72
79
|
if (next !== value) onChange(next);
|
|
73
80
|
};
|
|
74
81
|
const applyCustomModel = (model) => {
|
|
@@ -89,80 +96,56 @@ function RuntimeBar({
|
|
|
89
96
|
onChange(withoutCatalogModel(value));
|
|
90
97
|
};
|
|
91
98
|
const applyEffort = (effort) => onChange(withOptionalRuntimeValue(value, "effort", effort));
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
showTimeout,
|
|
118
|
-
showCost,
|
|
119
|
-
ariaLabel,
|
|
120
|
-
className: "max-w-full",
|
|
121
|
-
onFamilyChange: (familyId) => applyMode(familyId, selection.mode),
|
|
122
|
-
onModeChange: (modeId) => applyMode(family.id, modeId),
|
|
123
|
-
onModelSelect: applyModel,
|
|
124
|
-
onModelClear: clearModel,
|
|
125
|
-
onCustomModel: applyCustomModel,
|
|
126
|
-
onEffortChange: applyEffort,
|
|
127
|
-
onTimeoutChange: (timeout) => onChange(withBudgetLimit(value, "timeout", timeout)),
|
|
128
|
-
onCostChange: (cost) => onChange(withBudgetLimit(value, "cost", cost))
|
|
129
|
-
}
|
|
130
|
-
),
|
|
131
|
-
actions
|
|
132
|
-
]
|
|
133
|
-
}
|
|
134
|
-
) });
|
|
135
|
-
}
|
|
136
|
-
return /* @__PURE__ */ jsx(RuntimeBarVariantContext.Provider, { value: "segmented", children: /* @__PURE__ */ jsx(
|
|
137
|
-
RuntimeBarSegments,
|
|
99
|
+
const fields = [
|
|
100
|
+
...showEffort && supportedEfforts.length > 0 ? [
|
|
101
|
+
effortField({
|
|
102
|
+
value: value.effort,
|
|
103
|
+
offered: reasoningEfforts,
|
|
104
|
+
supported: supportedEfforts,
|
|
105
|
+
onChange: applyEffort
|
|
106
|
+
})
|
|
107
|
+
] : [],
|
|
108
|
+
...(actions == null ? void 0 : actions.fields) ?? [],
|
|
109
|
+
...showCost ? [
|
|
110
|
+
budgetField({
|
|
111
|
+
value: (_c = value.budget) == null ? void 0 : _c.cost,
|
|
112
|
+
onChange: (cost) => onChange(withBudgetLimit(value, "cost", cost))
|
|
113
|
+
})
|
|
114
|
+
] : [],
|
|
115
|
+
...showTimeout ? [
|
|
116
|
+
timeoutField({
|
|
117
|
+
value: (_d = value.budget) == null ? void 0 : _d.timeout,
|
|
118
|
+
onChange: (timeout) => onChange(withBudgetLimit(value, "timeout", timeout))
|
|
119
|
+
})
|
|
120
|
+
] : []
|
|
121
|
+
];
|
|
122
|
+
return /* @__PURE__ */ jsx(RuntimeBarVariantContext.Provider, { value: variant, children: /* @__PURE__ */ jsx(
|
|
123
|
+
RuntimeBarLayout,
|
|
138
124
|
{
|
|
139
|
-
value,
|
|
140
|
-
models,
|
|
141
|
-
modelOptions,
|
|
142
|
-
resolvedModel,
|
|
143
|
-
selectedModelUnavailable,
|
|
144
|
-
inheritedModelLabel,
|
|
145
|
-
families,
|
|
146
|
-
family,
|
|
147
|
-
mode,
|
|
148
|
-
selectedMode: selection.mode,
|
|
149
|
-
reasoningEfforts,
|
|
150
|
-
supportedEfforts,
|
|
151
|
-
locked,
|
|
152
|
-
showModel,
|
|
153
|
-
showEffort,
|
|
154
|
-
showTimeout,
|
|
155
|
-
showCost,
|
|
156
|
-
actions,
|
|
157
125
|
ariaLabel,
|
|
158
126
|
className,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
127
|
+
actions: { ...actions, fields },
|
|
128
|
+
identity: {
|
|
129
|
+
family,
|
|
130
|
+
mode,
|
|
131
|
+
modes,
|
|
132
|
+
groups,
|
|
133
|
+
selectedModel: resolvedModel,
|
|
134
|
+
model: value.model,
|
|
135
|
+
unavailable: selectedModelUnavailable,
|
|
136
|
+
inheritedModelLabel,
|
|
137
|
+
locked,
|
|
138
|
+
showModel,
|
|
139
|
+
variant,
|
|
140
|
+
onModeChange: (modeId) => applyMode(family.id, modeId),
|
|
141
|
+
onCustomModel: applyCustomModel,
|
|
142
|
+
onModelSelect: applyModel,
|
|
143
|
+
onModelClear: clearModel,
|
|
144
|
+
onFamilySelect: (familyId) => {
|
|
145
|
+
setPreference({ model: effectiveModel, family: familyId });
|
|
146
|
+
onChange(withoutCatalogModel(value));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
166
149
|
}
|
|
167
150
|
) });
|
|
168
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeBar.js","sources":["../../../src/data/runtime/RuntimeBar.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../chat/effort-icons\";\nimport { cn } from \"../../lib/utils\";\nimport type { ChatModel, ChatModelRuntime } from \"../chat/types\";\nimport { withBudgetLimit, type RuntimeBarBudget } from \"./RuntimeBar.limits\";\nimport { applyRuntimeMode, runtimeModelForValue } from \"./RuntimeBar.model\";\nimport { RuntimeBarCombo } from \"./RuntimeBarCombo\";\nimport { RuntimeBarSegments } from \"./RuntimeBarSegments\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\nimport { isSelectableModel } from \"./availability\";\nimport {\n effortOptionsForModel,\n reconcileModelCapabilities,\n} from \"./model-capabilities\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n familyById,\n firstMode,\n modelsForFamily,\n selectionForRuntime,\n runtimeModeFromModel,\n type SpecRuntimeFamily,\n} from \"./runtime-mode\";\n\nexport type RuntimeBarValue = ChatModelRuntime & {\n cliArgs?: Record<string, unknown>;\n /** Run limits edited by the opt-in timeout and max cost controls. */\n budget?: RuntimeBarBudget;\n};\n\nexport type RuntimeBarProps<T extends RuntimeBarValue = RuntimeBarValue> = {\n value: T;\n onChange: (value: T) => void;\n /** `segmented` uses field triggers; `combo` uses one direct-edit menu. */\n variant?: \"combo\" | \"segmented\";\n /** Model catalog. Only the selected family's models are listed; a family the\n * catalog does not describe is served by the segment's free-text entry. */\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n /** Resolved mode shown when the editable value inherits it from another layer. */\n effectiveMode?: string | undefined;\n /** Resolved model used to identify the inherited provider family without persisting it. */\n effectiveModel?: string | undefined;\n /** Effort tiers offered when the catalog does not describe the model. */\n reasoningEfforts?: string[] | undefined;\n /** Locks model identity (family, mode, and model) while leaving effort editable. */\n locked?: boolean | undefined;\n /** Whether the selected runtime exposes a model argument. */\n showModel?: boolean | undefined;\n /** Whether the selected runtime exposes reasoning effort. */\n showEffort?: boolean | undefined;\n /** Opt-in control for `budget.timeout`. */\n showTimeout?: boolean | undefined;\n /** Opt-in control for `budget.cost`. */\n showCost?: boolean | undefined;\n /** Host-level settings belonging to the surrounding spec rather than this runtime row. */\n actions?: ReactNode | undefined;\n ariaLabel?: string | undefined;\n className?: string | undefined;\n};\n\n/** Self-describing runtime controls with segmented and combo presentations. */\nexport function RuntimeBar<T extends RuntimeBarValue>({\n value,\n onChange,\n variant = \"segmented\",\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n effectiveMode,\n effectiveModel,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n locked = false,\n showModel = true,\n showEffort = true,\n showTimeout = false,\n showCost = false,\n actions,\n ariaLabel = \"Runtime\",\n className,\n}: RuntimeBarProps<T>) {\n const [preference, setPreference] = useState<{\n model: string | undefined;\n family: string | undefined;\n }>({ model: effectiveModel, family: undefined });\n if (preference.model !== effectiveModel) {\n setPreference({ model: effectiveModel, family: undefined });\n }\n const preferredFamily = preference.model === effectiveModel ? preference.family : undefined;\n const specMode =\n runtimeModeFromModel(value.model) ||\n value.mode?.trim() ||\n effectiveMode?.trim();\n const selection = selectionForRuntime(\n families,\n specMode,\n value.model || (preferredFamily ? undefined : effectiveModel),\n models,\n preferredFamily,\n );\n const family = familyById(families, selection.family);\n const mode =\n family.modes.find((entry) => entry.id === selection.mode) ??\n firstMode(family);\n const modelOptions = modelsForFamily(models, family, specMode);\n const resolvedModel = runtimeModelForValue(models, value, isSelectableModel);\n const selectedModelUnavailable = Boolean(\n !resolvedModel &&\n (value.id || value.model) &&\n runtimeModelForValue(models, value, (entry) => !isSelectableModel(entry)),\n );\n const supportedEfforts = effortOptionsForModel(\n resolvedModel,\n reasoningEfforts,\n );\n // The name an Unspecified model would resolve to, so the picker can say what\n // it inherits instead of leaving the operator guessing.\n const inheritedModelLabel =\n value.model || value.id\n ? undefined\n : (runtimeModelForValue(\n models,\n effectiveModel !== undefined ? { model: effectiveModel } : {},\n isSelectableModel,\n )?.label ?? effectiveModel);\n\n const applyMode = (familyId: string, modeId: string) => {\n setPreference({ model: effectiveModel, family: familyId });\n const next = applyRuntimeMode(\n value,\n models,\n families,\n familyId,\n modeId,\n reasoningEfforts,\n );\n if (next !== value) onChange(next);\n };\n\n const applyCustomModel = (model: string) => {\n onChange(\n withOptionalRuntimeValue(withoutCatalogModel(value), \"model\", model),\n );\n };\n // A family's model catalog can serve several modes. Selecting a row must not\n // silently move the user away from the mode they chose.\n const applyModel = (model: ChatModel) => {\n const next = reconcileModelCapabilities(\n withoutCatalogModel(value),\n model,\n reasoningEfforts,\n { mode: mode.id },\n );\n onChange(next);\n };\n const clearModel = () => {\n onChange(withoutCatalogModel(value));\n };\n const applyEffort = (effort: string) =>\n onChange(withOptionalRuntimeValue(value, \"effort\", effort));\n\n if (variant === \"combo\") {\n return (\n <RuntimeBarVariantContext.Provider value=\"combo\">\n <div\n role=\"group\"\n aria-label={ariaLabel}\n data-runtime-bar-variant=\"combo\"\n className={cn(\"inline-flex max-w-full flex-wrap items-stretch gap-1\", className)}\n >\n <RuntimeBarCombo\n value={value}\n families={families}\n family={family}\n mode={mode}\n selectedMode={selection.mode}\n models={modelOptions}\n selectedModel={resolvedModel}\n selectedModelUnavailable={selectedModelUnavailable}\n inheritedModelLabel={inheritedModelLabel}\n supportedEfforts={supportedEfforts}\n locked={locked}\n showModel={showModel}\n showEffort={showEffort}\n showTimeout={showTimeout}\n showCost={showCost}\n ariaLabel={ariaLabel}\n className=\"max-w-full\"\n onFamilyChange={(familyId) => applyMode(familyId, selection.mode)}\n onModeChange={(modeId) => applyMode(family.id, modeId)}\n onModelSelect={applyModel}\n onModelClear={clearModel}\n onCustomModel={applyCustomModel}\n onEffortChange={applyEffort}\n onTimeoutChange={(timeout) => onChange(withBudgetLimit(value, \"timeout\", timeout))}\n onCostChange={(cost) => onChange(withBudgetLimit(value, \"cost\", cost))}\n />\n {actions}\n </div>\n </RuntimeBarVariantContext.Provider>\n );\n }\n\n return (\n <RuntimeBarVariantContext.Provider value=\"segmented\">\n <RuntimeBarSegments\n value={value}\n models={models}\n modelOptions={modelOptions}\n resolvedModel={resolvedModel}\n selectedModelUnavailable={selectedModelUnavailable}\n inheritedModelLabel={inheritedModelLabel}\n families={families}\n family={family}\n mode={mode}\n selectedMode={selection.mode}\n reasoningEfforts={reasoningEfforts}\n supportedEfforts={supportedEfforts}\n locked={locked}\n showModel={showModel}\n showEffort={showEffort}\n showTimeout={showTimeout}\n showCost={showCost}\n actions={actions}\n ariaLabel={ariaLabel}\n className={className}\n onModeChange={applyMode}\n onCustomModel={applyCustomModel}\n onModelSelect={applyModel}\n onModelClear={clearModel}\n onEffortChange={applyEffort}\n onTimeoutChange={(timeout) => onChange(withBudgetLimit(value, \"timeout\", timeout))}\n onCostChange={(cost) => onChange(withBudgetLimit(value, \"cost\", cost))}\n />\n </RuntimeBarVariantContext.Provider>\n );\n}\n\nfunction withoutCatalogModel<T extends RuntimeBarValue>(value: T): T {\n return withOptionalRuntimeValue(\n withOptionalRuntimeValue(value, \"model\", undefined),\n \"id\",\n undefined,\n );\n}\n\nfunction withOptionalRuntimeValue<T extends RuntimeBarValue>(\n value: T,\n key: keyof RuntimeBarValue,\n next: unknown,\n): T {\n const updated = { ...value } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete updated[key];\n } else {\n updated[key] = next;\n }\n return updated as T;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RuntimeBar.js","sources":["../../../src/data/runtime/RuntimeBar.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../chat/effort-icons\";\nimport type { ChatModel, ChatModelRuntime } from \"../chat/types\";\nimport { withBudgetLimit, type RuntimeBarBudget } from \"./RuntimeBar.limits\";\nimport { runtimeModelForValue } from \"./RuntimeBar.model\";\nimport { RuntimeBarLayout } from \"./RuntimeBarLayout\";\nimport type { RuntimeBarActionsProps } from \"./RuntimeBarActions\";\nimport { timeoutField, budgetField, effortField } from \"./RuntimeBar.fields\";\nimport {\n modelGroupsForMode,\n runtimeModes,\n withRuntimeMode,\n} from \"./RuntimeBar.selection\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\nimport { isSelectableModel } from \"./availability\";\nimport {\n effortOptionsForModel,\n reconcileModelCapabilities,\n} from \"./model-capabilities\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n familyById,\n selectionForRuntime,\n runtimeModeFromModel,\n type SpecRuntimeFamily,\n} from \"./runtime-mode\";\n\nexport type RuntimeBarValue = ChatModelRuntime & {\n cliArgs?: Record<string, unknown>;\n /** Run limits edited by the opt-in timeout and max cost controls. */\n budget?: RuntimeBarBudget;\n};\n\nexport type RuntimeBarProps<T extends RuntimeBarValue = RuntimeBarValue> = {\n value: T;\n onChange: (value: T) => void;\n /** Fused field triggers or individually bordered controls. */\n variant?: \"combo\" | \"segmented\";\n /** Model catalog grouped by family and filtered by the selected mode. */\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n /** Resolved mode shown when the editable value inherits it from another layer. */\n effectiveMode?: string | undefined;\n /** Resolved model used to identify the inherited provider family without persisting it. */\n effectiveModel?: string | undefined;\n /** Effort tiers offered when the catalog does not describe the model. */\n reasoningEfforts?: string[] | undefined;\n /** Locks model identity (family, mode, and model) while leaving effort editable. */\n locked?: boolean | undefined;\n /** Whether the selected runtime exposes a model argument. */\n showModel?: boolean | undefined;\n /** Whether the selected runtime exposes reasoning effort. */\n showEffort?: boolean | undefined;\n /** Opt-in control for `budget.timeout`. */\n showTimeout?: boolean | undefined;\n /** Opt-in control for `budget.cost`. */\n showCost?: boolean | undefined;\n /** Host-level settings belonging to the surrounding spec rather than this runtime row. */\n actions?:\n | Pick<RuntimeBarActionsProps, \"fields\" | \"menu\" | \"menuLabel\">\n | undefined;\n ariaLabel?: string | undefined;\n className?: string | undefined;\n};\n\n/** Self-describing runtime controls with segmented and combo presentations. */\nexport function RuntimeBar<T extends RuntimeBarValue>({\n value,\n onChange,\n variant = \"segmented\",\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n effectiveMode,\n effectiveModel,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n locked = false,\n showModel = true,\n showEffort = true,\n showTimeout = false,\n showCost = false,\n actions,\n ariaLabel = \"Runtime\",\n className,\n}: RuntimeBarProps<T>) {\n const [preference, setPreference] = useState<{\n model: string | undefined;\n family: string | undefined;\n }>({ model: effectiveModel, family: undefined });\n if (preference.model !== effectiveModel) {\n setPreference({ model: effectiveModel, family: undefined });\n }\n const preferredFamily =\n preference.model === effectiveModel ? preference.family : undefined;\n const specMode =\n value.mode?.trim() ||\n runtimeModeFromModel(value.model) ||\n effectiveMode?.trim();\n const selection = selectionForRuntime(\n families,\n specMode,\n value.id || value.model || (preferredFamily ? undefined : effectiveModel),\n models,\n preferredFamily,\n );\n const family = familyById(families, selection.family);\n const modes = runtimeModes(families);\n const mode = modes.find((entry) => entry.id === selection.mode);\n if (!mode)\n throw new Error(\n `No available runtime mode for ${JSON.stringify(selection.mode)}`,\n );\n const groups = modelGroupsForMode({ models, families, mode: mode.id });\n const resolvedModel = runtimeModelForValue(\n groups.flatMap((group) => group.models),\n value,\n );\n const selectedModelUnavailable = Boolean(\n !resolvedModel &&\n (value.id || value.model) &&\n runtimeModelForValue(models, value, (entry) => !isSelectableModel(entry)),\n );\n const supportedEfforts = effortOptionsForModel(\n resolvedModel,\n reasoningEfforts,\n );\n // The name an Unspecified model would resolve to, so the picker can say what\n // it inherits instead of leaving the operator guessing.\n const inheritedModelLabel =\n value.model || value.id\n ? undefined\n : (runtimeModelForValue(\n models,\n effectiveModel !== undefined ? { model: effectiveModel } : {},\n isSelectableModel,\n )?.label ?? effectiveModel);\n\n const applyMode = (familyId: string, modeId: string) => {\n setPreference({ model: effectiveModel, family: familyId });\n const next = withRuntimeMode({\n value,\n models,\n families,\n mode: modeId,\n reasoningEfforts,\n });\n if (next !== value) onChange(next);\n };\n\n const applyCustomModel = (model: string) => {\n onChange(\n withOptionalRuntimeValue(withoutCatalogModel(value), \"model\", model),\n );\n };\n // A family's model catalog can serve several modes. Selecting a row must not\n // silently move the user away from the mode they chose.\n const applyModel = (model: ChatModel) => {\n const next = reconcileModelCapabilities(\n withoutCatalogModel(value),\n model,\n reasoningEfforts,\n { mode: mode.id },\n );\n onChange(next);\n };\n const clearModel = () => {\n onChange(withoutCatalogModel(value));\n };\n const applyEffort = (effort: string) =>\n onChange(withOptionalRuntimeValue(value, \"effort\", effort));\n\n const fields = [\n ...(showEffort && supportedEfforts.length > 0\n ? [\n effortField({\n value: value.effort,\n offered: reasoningEfforts,\n supported: supportedEfforts,\n onChange: applyEffort,\n }),\n ]\n : []),\n ...(actions?.fields ?? []),\n ...(showCost\n ? [\n budgetField({\n value: value.budget?.cost,\n onChange: (cost) => onChange(withBudgetLimit(value, \"cost\", cost)),\n }),\n ]\n : []),\n ...(showTimeout\n ? [\n timeoutField({\n value: value.budget?.timeout,\n onChange: (timeout) =>\n onChange(withBudgetLimit(value, \"timeout\", timeout)),\n }),\n ]\n : []),\n ];\n return (\n <RuntimeBarVariantContext.Provider value={variant}>\n <RuntimeBarLayout\n ariaLabel={ariaLabel}\n className={className}\n actions={{ ...actions, fields }}\n identity={{\n family,\n mode,\n modes,\n groups,\n selectedModel: resolvedModel,\n model: value.model,\n unavailable: selectedModelUnavailable,\n inheritedModelLabel,\n locked,\n showModel,\n variant,\n onModeChange: (modeId) => applyMode(family.id, modeId),\n onCustomModel: applyCustomModel,\n onModelSelect: applyModel,\n onModelClear: clearModel,\n onFamilySelect: (familyId) => {\n setPreference({ model: effectiveModel, family: familyId });\n onChange(withoutCatalogModel(value));\n },\n }}\n />\n </RuntimeBarVariantContext.Provider>\n );\n}\n\nfunction withoutCatalogModel<T extends RuntimeBarValue>(value: T): T {\n return withOptionalRuntimeValue(\n withOptionalRuntimeValue(value, \"model\", undefined),\n \"id\",\n undefined,\n );\n}\n\nfunction withOptionalRuntimeValue<T extends RuntimeBarValue>(\n value: T,\n key: keyof RuntimeBarValue,\n next: unknown,\n): T {\n const updated = { ...value } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete updated[key];\n } else {\n updated[key] = next;\n }\n return updated as T;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const availability = require("./availability.cjs");
|
|
4
|
+
const modelCapabilities = require("./model-capabilities.cjs");
|
|
5
|
+
const RuntimeBar_model = require("./RuntimeBar.model.cjs");
|
|
6
|
+
const runtimeMode = require("./runtime-mode.cjs");
|
|
7
|
+
const runtimeFamily = require("../../lib/runtime-family.cjs");
|
|
8
|
+
function runtimeModes(families) {
|
|
9
|
+
return [
|
|
10
|
+
...new Map(
|
|
11
|
+
families.flatMap((family) => family.modes).filter((mode) => !availability.isUnavailable(mode.availability)).map((mode) => [mode.id, mode])
|
|
12
|
+
).values()
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
function modelGroupsForMode({
|
|
16
|
+
models,
|
|
17
|
+
families,
|
|
18
|
+
mode
|
|
19
|
+
}) {
|
|
20
|
+
return families.filter(
|
|
21
|
+
(family) => family.modes.some(
|
|
22
|
+
(entry) => entry.id === mode && !availability.isUnavailable(entry.availability)
|
|
23
|
+
)
|
|
24
|
+
).map((family) => ({
|
|
25
|
+
family,
|
|
26
|
+
models: runtimeMode.modelsForFamily(models, family, mode).filter((model) => {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
const modelMode = ((_a = model.runtime) == null ? void 0 : _a.mode) ?? runtimeFamily.runtimeModeFromModel(((_b = model.runtime) == null ? void 0 : _b.model) ?? model.id);
|
|
29
|
+
return modelMode === void 0 || modelMode === mode;
|
|
30
|
+
})
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
function withRuntimeMode({
|
|
34
|
+
value,
|
|
35
|
+
models,
|
|
36
|
+
families,
|
|
37
|
+
mode,
|
|
38
|
+
reasoningEfforts
|
|
39
|
+
}) {
|
|
40
|
+
if (!runtimeModes(families).some((entry) => entry.id === mode)) {
|
|
41
|
+
throw new Error(`Runtime mode ${JSON.stringify(mode)} is unavailable`);
|
|
42
|
+
}
|
|
43
|
+
const eligible = modelGroupsForMode({ models, families, mode }).flatMap(
|
|
44
|
+
(group) => group.models
|
|
45
|
+
);
|
|
46
|
+
const model = RuntimeBar_model.runtimeModelForValue(eligible, { ...value, mode });
|
|
47
|
+
const next = { ...value, mode };
|
|
48
|
+
delete next.id;
|
|
49
|
+
delete next.model;
|
|
50
|
+
delete next.cliArgs;
|
|
51
|
+
return model ? modelCapabilities.reconcileModelCapabilities(next, model, reasoningEfforts, { mode }) : next;
|
|
52
|
+
}
|
|
53
|
+
exports.modelGroupsForMode = modelGroupsForMode;
|
|
54
|
+
exports.runtimeModes = runtimeModes;
|
|
55
|
+
exports.withRuntimeMode = withRuntimeMode;
|
|
56
|
+
//# sourceMappingURL=RuntimeBar.selection.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBar.selection.cjs","sources":["../../../src/data/runtime/RuntimeBar.selection.ts"],"sourcesContent":["import type { ChatModel } from \"../chat/types\";\nimport type { RuntimeBarValue } from \"./RuntimeBar\";\nimport { isUnavailable } from \"./availability\";\nimport { reconcileModelCapabilities } from \"./model-capabilities\";\nimport { runtimeModelForValue } from \"./RuntimeBar.model\";\nimport {\n modelsForFamily,\n runtimeModeFromModel,\n type SpecRuntimeFamily,\n} from \"./runtime-mode\";\n\nexport function runtimeModes(families: SpecRuntimeFamily[]) {\n return [\n ...new Map(\n families\n .flatMap((family) => family.modes)\n .filter((mode) => !isUnavailable(mode.availability))\n .map((mode) => [mode.id, mode]),\n ).values(),\n ];\n}\n\nexport function modelGroupsForMode({\n models,\n families,\n mode,\n}: {\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n mode: string;\n}) {\n return families\n .filter((family) =>\n family.modes.some(\n (entry) => entry.id === mode && !isUnavailable(entry.availability),\n ),\n )\n .map((family) => ({\n family,\n models: modelsForFamily(models, family, mode).filter((model) => {\n const modelMode =\n model.runtime?.mode ??\n runtimeModeFromModel(model.runtime?.model ?? model.id);\n return modelMode === undefined || modelMode === mode;\n }),\n }));\n}\n\nexport function withRuntimeMode<T extends RuntimeBarValue>({\n value,\n models,\n families,\n mode,\n reasoningEfforts,\n}: {\n value: T;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n mode: string;\n reasoningEfforts: readonly string[];\n}): T {\n if (!runtimeModes(families).some((entry) => entry.id === mode)) {\n throw new Error(`Runtime mode ${JSON.stringify(mode)} is unavailable`);\n }\n const eligible = modelGroupsForMode({ models, families, mode }).flatMap(\n (group) => group.models,\n );\n const model = runtimeModelForValue(eligible, { ...value, mode });\n const next = { ...value, mode };\n delete next.id;\n delete next.model;\n delete next.cliArgs;\n return model\n ? reconcileModelCapabilities(next, model, reasoningEfforts, { mode })\n : next;\n}\n"],"names":["isUnavailable","modelsForFamily","runtimeModeFromModel","runtimeModelForValue","reconcileModelCapabilities"],"mappings":";;;;;;;AAWO,SAAS,aAAa,UAA+B;AAC1D,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,MACL,SACG,QAAQ,CAAC,WAAW,OAAO,KAAK,EAChC,OAAO,CAAC,SAAS,CAACA,aAAAA,cAAc,KAAK,YAAY,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC;AAAA,IAAA,EAChC,OAAA;AAAA,EAAO;AAEb;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SAAO,SACJ;AAAA,IAAO,CAAC,WACP,OAAO,MAAM;AAAA,MACX,CAAC,UAAU,MAAM,OAAO,QAAQ,CAACA,aAAAA,cAAc,MAAM,YAAY;AAAA,IAAA;AAAA,EACnE,EAED,IAAI,CAAC,YAAY;AAAA,IAChB;AAAA,IACA,QAAQC,YAAAA,gBAAgB,QAAQ,QAAQ,IAAI,EAAE,OAAO,CAAC,UAAU;;AAC9D,YAAM,cACJ,WAAM,YAAN,mBAAe,SACfC,cAAAA,uBAAqB,WAAM,YAAN,mBAAe,UAAS,MAAM,EAAE;AACvD,aAAO,cAAc,UAAa,cAAc;AAAA,IAClD,CAAC;AAAA,EAAA,EACD;AACN;AAEO,SAAS,gBAA2C;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMM;AACJ,MAAI,CAAC,aAAa,QAAQ,EAAE,KAAK,CAAC,UAAU,MAAM,OAAO,IAAI,GAAG;AAC9D,UAAM,IAAI,MAAM,gBAAgB,KAAK,UAAU,IAAI,CAAC,iBAAiB;AAAA,EACvE;AACA,QAAM,WAAW,mBAAmB,EAAE,QAAQ,UAAU,KAAA,CAAM,EAAE;AAAA,IAC9D,CAAC,UAAU,MAAM;AAAA,EAAA;AAEnB,QAAM,QAAQC,iBAAAA,qBAAqB,UAAU,EAAE,GAAG,OAAO,MAAM;AAC/D,QAAM,OAAO,EAAE,GAAG,OAAO,KAAA;AACzB,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,SAAO,QACHC,kBAAAA,2BAA2B,MAAM,OAAO,kBAAkB,EAAE,KAAA,CAAM,IAClE;AACN;;;;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ChatModel } from '../chat/types.js';
|
|
2
|
+
import { RuntimeBarValue } from './RuntimeBar.js';
|
|
3
|
+
import { SpecRuntimeFamily } from './runtime-mode.js';
|
|
4
|
+
export declare function runtimeModes(families: SpecRuntimeFamily[]): import('./runtime-mode.js').SpecRuntimeModeOption[];
|
|
5
|
+
export declare function modelGroupsForMode({ models, families, mode, }: {
|
|
6
|
+
models: ChatModel[];
|
|
7
|
+
families: SpecRuntimeFamily[];
|
|
8
|
+
mode: string;
|
|
9
|
+
}): {
|
|
10
|
+
family: SpecRuntimeFamily;
|
|
11
|
+
models: ChatModel[];
|
|
12
|
+
}[];
|
|
13
|
+
export declare function withRuntimeMode<T extends RuntimeBarValue>({ value, models, families, mode, reasoningEfforts, }: {
|
|
14
|
+
value: T;
|
|
15
|
+
models: ChatModel[];
|
|
16
|
+
families: SpecRuntimeFamily[];
|
|
17
|
+
mode: string;
|
|
18
|
+
reasoningEfforts: readonly string[];
|
|
19
|
+
}): T;
|
|
20
|
+
//# sourceMappingURL=RuntimeBar.selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBar.selection.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBar.selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,EAAE,oDASzD;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,QAAQ,EACR,IAAI,GACL,EAAE;IACD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;;;IAgBA;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,eAAe,EAAE,EACzD,KAAK,EACL,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,gBAAgB,GACjB,EAAE;IACD,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC,GAAG,CAAC,CAeJ"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { isUnavailable } from "./availability.js";
|
|
2
|
+
import { reconcileModelCapabilities } from "./model-capabilities.js";
|
|
3
|
+
import { runtimeModelForValue } from "./RuntimeBar.model.js";
|
|
4
|
+
import { modelsForFamily } from "./runtime-mode.js";
|
|
5
|
+
import { runtimeModeFromModel } from "../../lib/runtime-family.js";
|
|
6
|
+
function runtimeModes(families) {
|
|
7
|
+
return [
|
|
8
|
+
...new Map(
|
|
9
|
+
families.flatMap((family) => family.modes).filter((mode) => !isUnavailable(mode.availability)).map((mode) => [mode.id, mode])
|
|
10
|
+
).values()
|
|
11
|
+
];
|
|
12
|
+
}
|
|
13
|
+
function modelGroupsForMode({
|
|
14
|
+
models,
|
|
15
|
+
families,
|
|
16
|
+
mode
|
|
17
|
+
}) {
|
|
18
|
+
return families.filter(
|
|
19
|
+
(family) => family.modes.some(
|
|
20
|
+
(entry) => entry.id === mode && !isUnavailable(entry.availability)
|
|
21
|
+
)
|
|
22
|
+
).map((family) => ({
|
|
23
|
+
family,
|
|
24
|
+
models: modelsForFamily(models, family, mode).filter((model) => {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
const modelMode = ((_a = model.runtime) == null ? void 0 : _a.mode) ?? runtimeModeFromModel(((_b = model.runtime) == null ? void 0 : _b.model) ?? model.id);
|
|
27
|
+
return modelMode === void 0 || modelMode === mode;
|
|
28
|
+
})
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
31
|
+
function withRuntimeMode({
|
|
32
|
+
value,
|
|
33
|
+
models,
|
|
34
|
+
families,
|
|
35
|
+
mode,
|
|
36
|
+
reasoningEfforts
|
|
37
|
+
}) {
|
|
38
|
+
if (!runtimeModes(families).some((entry) => entry.id === mode)) {
|
|
39
|
+
throw new Error(`Runtime mode ${JSON.stringify(mode)} is unavailable`);
|
|
40
|
+
}
|
|
41
|
+
const eligible = modelGroupsForMode({ models, families, mode }).flatMap(
|
|
42
|
+
(group) => group.models
|
|
43
|
+
);
|
|
44
|
+
const model = runtimeModelForValue(eligible, { ...value, mode });
|
|
45
|
+
const next = { ...value, mode };
|
|
46
|
+
delete next.id;
|
|
47
|
+
delete next.model;
|
|
48
|
+
delete next.cliArgs;
|
|
49
|
+
return model ? reconcileModelCapabilities(next, model, reasoningEfforts, { mode }) : next;
|
|
50
|
+
}
|
|
51
|
+
export {
|
|
52
|
+
modelGroupsForMode,
|
|
53
|
+
runtimeModes,
|
|
54
|
+
withRuntimeMode
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=RuntimeBar.selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuntimeBar.selection.js","sources":["../../../src/data/runtime/RuntimeBar.selection.ts"],"sourcesContent":["import type { ChatModel } from \"../chat/types\";\nimport type { RuntimeBarValue } from \"./RuntimeBar\";\nimport { isUnavailable } from \"./availability\";\nimport { reconcileModelCapabilities } from \"./model-capabilities\";\nimport { runtimeModelForValue } from \"./RuntimeBar.model\";\nimport {\n modelsForFamily,\n runtimeModeFromModel,\n type SpecRuntimeFamily,\n} from \"./runtime-mode\";\n\nexport function runtimeModes(families: SpecRuntimeFamily[]) {\n return [\n ...new Map(\n families\n .flatMap((family) => family.modes)\n .filter((mode) => !isUnavailable(mode.availability))\n .map((mode) => [mode.id, mode]),\n ).values(),\n ];\n}\n\nexport function modelGroupsForMode({\n models,\n families,\n mode,\n}: {\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n mode: string;\n}) {\n return families\n .filter((family) =>\n family.modes.some(\n (entry) => entry.id === mode && !isUnavailable(entry.availability),\n ),\n )\n .map((family) => ({\n family,\n models: modelsForFamily(models, family, mode).filter((model) => {\n const modelMode =\n model.runtime?.mode ??\n runtimeModeFromModel(model.runtime?.model ?? model.id);\n return modelMode === undefined || modelMode === mode;\n }),\n }));\n}\n\nexport function withRuntimeMode<T extends RuntimeBarValue>({\n value,\n models,\n families,\n mode,\n reasoningEfforts,\n}: {\n value: T;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n mode: string;\n reasoningEfforts: readonly string[];\n}): T {\n if (!runtimeModes(families).some((entry) => entry.id === mode)) {\n throw new Error(`Runtime mode ${JSON.stringify(mode)} is unavailable`);\n }\n const eligible = modelGroupsForMode({ models, families, mode }).flatMap(\n (group) => group.models,\n );\n const model = runtimeModelForValue(eligible, { ...value, mode });\n const next = { ...value, mode };\n delete next.id;\n delete next.model;\n delete next.cliArgs;\n return model\n ? reconcileModelCapabilities(next, model, reasoningEfforts, { mode })\n : next;\n}\n"],"names":[],"mappings":";;;;;AAWO,SAAS,aAAa,UAA+B;AAC1D,SAAO;AAAA,IACL,GAAG,IAAI;AAAA,MACL,SACG,QAAQ,CAAC,WAAW,OAAO,KAAK,EAChC,OAAO,CAAC,SAAS,CAAC,cAAc,KAAK,YAAY,CAAC,EAClD,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC;AAAA,IAAA,EAChC,OAAA;AAAA,EAAO;AAEb;AAEO,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SAAO,SACJ;AAAA,IAAO,CAAC,WACP,OAAO,MAAM;AAAA,MACX,CAAC,UAAU,MAAM,OAAO,QAAQ,CAAC,cAAc,MAAM,YAAY;AAAA,IAAA;AAAA,EACnE,EAED,IAAI,CAAC,YAAY;AAAA,IAChB;AAAA,IACA,QAAQ,gBAAgB,QAAQ,QAAQ,IAAI,EAAE,OAAO,CAAC,UAAU;;AAC9D,YAAM,cACJ,WAAM,YAAN,mBAAe,SACf,uBAAqB,WAAM,YAAN,mBAAe,UAAS,MAAM,EAAE;AACvD,aAAO,cAAc,UAAa,cAAc;AAAA,IAClD,CAAC;AAAA,EAAA,EACD;AACN;AAEO,SAAS,gBAA2C;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMM;AACJ,MAAI,CAAC,aAAa,QAAQ,EAAE,KAAK,CAAC,UAAU,MAAM,OAAO,IAAI,GAAG;AAC9D,UAAM,IAAI,MAAM,gBAAgB,KAAK,UAAU,IAAI,CAAC,iBAAiB;AAAA,EACvE;AACA,QAAM,WAAW,mBAAmB,EAAE,QAAQ,UAAU,KAAA,CAAM,EAAE;AAAA,IAC9D,CAAC,UAAU,MAAM;AAAA,EAAA;AAEnB,QAAM,QAAQ,qBAAqB,UAAU,EAAE,GAAG,OAAO,MAAM;AAC/D,QAAM,OAAO,EAAE,GAAG,OAAO,KAAA;AACzB,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,SAAO,QACH,2BAA2B,MAAM,OAAO,kBAAkB,EAAE,KAAA,CAAM,IAClE;AACN;"}
|
|
@@ -13,19 +13,22 @@ function RuntimeBarActions({
|
|
|
13
13
|
inline = true,
|
|
14
14
|
menuLabel = "Runtime options",
|
|
15
15
|
standalone = false,
|
|
16
|
-
className
|
|
16
|
+
className,
|
|
17
|
+
visibleCount = fields.length
|
|
17
18
|
}) {
|
|
18
19
|
const variant = react.useContext(RuntimeBar_context.RuntimeBarVariantContext);
|
|
19
20
|
const useStandalone = standalone || variant === "combo";
|
|
20
|
-
const inlineFields = inline ? fields : [];
|
|
21
|
+
const inlineFields = inline ? fields.filter((field) => field.isSet).slice(0, visibleCount) : [];
|
|
21
22
|
const menuItems = [
|
|
22
|
-
...
|
|
23
|
+
...fields.map((field) => ({
|
|
23
24
|
label: field.label,
|
|
24
25
|
...field.icon ? { icon: field.icon } : {},
|
|
26
|
+
...field.iconClassName ? { iconClassName: field.iconClassName } : {},
|
|
25
27
|
// Ignored: an item with `children` is a submenu trigger, not a leaf.
|
|
26
28
|
onSelect: () => {
|
|
27
29
|
},
|
|
28
|
-
children: field.items
|
|
30
|
+
children: field.items,
|
|
31
|
+
...field.header ? { header: field.header } : {}
|
|
29
32
|
})),
|
|
30
33
|
...menu
|
|
31
34
|
];
|
|
@@ -35,8 +38,8 @@ function RuntimeBarActions({
|
|
|
35
38
|
{
|
|
36
39
|
"data-runtime-bar-section": "actions",
|
|
37
40
|
className: utils.cn(
|
|
38
|
-
"flex h-control-h
|
|
39
|
-
useStandalone ? "w-fit overflow-hidden rounded-md border border-input bg-background" : "
|
|
41
|
+
"flex h-control-h shrink-0 items-stretch",
|
|
42
|
+
useStandalone ? variant === "combo" ? "gap-1" : "w-fit overflow-hidden rounded-md border border-input bg-background" : "border-l border-border",
|
|
40
43
|
className
|
|
41
44
|
),
|
|
42
45
|
children: [
|
|
@@ -46,6 +49,7 @@ function RuntimeBarActions({
|
|
|
46
49
|
menuLabel: field.label,
|
|
47
50
|
title: field.title,
|
|
48
51
|
items: field.items,
|
|
52
|
+
...field.header ? { header: field.header } : {},
|
|
49
53
|
children: field.caption
|
|
50
54
|
},
|
|
51
55
|
field.id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeBarActions.cjs","sources":["../../../src/data/runtime/RuntimeBarActions.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport type { DropdownMenuItem } from \"../../overlay/DropdownMenu\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { RuntimeSegment } from \"./RuntimeBarSegment\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\n/**\n * A run setting offered by the runtime bar. Its choices are `DropdownMenuItem`s\n * so the inline and collapsed renderings are the SAME list: inline it is a\n * segment's menu, collapsed it is a flyout submenu of the ⋮ menu. Anything that\n * cannot be a menu item (a multi-select, reorder buttons) belongs in a modal\n * reached from an item, not in this list.\n */\nexport type RuntimeBarAction = {\n id: string;\n /** Menu entry label when collapsed; also the inline segment's menu label. */\n label: string;\n icon?: StaticIconComponent | undefined;\n /** Tooltip on the inline segment, e.g. \"Permission posture — Plan\". */\n title: string;\n /** Inline segment caption: key + glyph + current value. */\n caption: ReactNode;\n /** Choices, identical inline and collapsed. */\n items: DropdownMenuItem[];\n};\n\nexport type RuntimeBarActionsProps = {\n fields?: RuntimeBarAction[] | undefined;\n /** Always-collapsed entries listed after the fields, e.g. Advanced. */\n menu?: DropdownMenuItem[] | undefined;\n /** False collapses every field into the ⋮ menu. */\n inline?: boolean | undefined;\n menuLabel?: string | undefined;\n /** Renders its own bar chrome instead of fusing onto the bar's border. */\n standalone?: boolean | undefined;\n className?: string | undefined;\n};\n\n/**\n * The runtime bar's host-level settings plus a ⋮ menu. It fuses onto the\n * segmented bar border and becomes a separate control group in combo layouts.\n */\nexport function RuntimeBarActions({\n fields = [],\n menu = [],\n inline = true,\n menuLabel = \"Runtime options\",\n standalone = false,\n className,\n}: RuntimeBarActionsProps) {\n const variant = useContext(RuntimeBarVariantContext);\n const useStandalone = standalone || variant === \"combo\";\n const inlineFields = inline
|
|
1
|
+
{"version":3,"file":"RuntimeBarActions.cjs","sources":["../../../src/data/runtime/RuntimeBarActions.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport type { DropdownMenuItem } from \"../../overlay/DropdownMenu\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { RuntimeSegment } from \"./RuntimeBarSegment\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\n/**\n * A run setting offered by the runtime bar. Its choices are `DropdownMenuItem`s\n * so the inline and collapsed renderings are the SAME list: inline it is a\n * segment's menu, collapsed it is a flyout submenu of the ⋮ menu. Anything that\n * cannot be a menu item (a multi-select, reorder buttons) belongs in a modal\n * reached from an item, not in this list.\n */\nexport type RuntimeBarAction = {\n id: string;\n /** Menu entry label when collapsed; also the inline segment's menu label. */\n label: string;\n icon?: StaticIconComponent | undefined;\n iconClassName?: string | undefined;\n /** Tooltip on the inline segment, e.g. \"Permission posture — Plan\". */\n title: string;\n /** Inline segment caption: key + glyph + current value. */\n caption: ReactNode;\n /** Only supplied settings are candidates for inline display. */\n isSet: boolean;\n /** Custom editor shared by the inline dropdown and overflow submenu. */\n header?: ReactNode;\n /** Choices, identical inline and collapsed. */\n items: DropdownMenuItem[];\n};\n\nexport type RuntimeBarActionsProps = {\n fields?: RuntimeBarAction[] | undefined;\n /** Always-collapsed entries listed after the fields, e.g. Advanced. */\n menu?: DropdownMenuItem[] | undefined;\n /** False collapses every field into the ⋮ menu. */\n inline?: boolean | undefined;\n menuLabel?: string | undefined;\n /** Renders its own bar chrome instead of fusing onto the bar's border. */\n standalone?: boolean | undefined;\n className?: string | undefined;\n /** Number of supplied fields that fit beside the runtime identity. */\n visibleCount?: number | undefined;\n};\n\n/**\n * The runtime bar's host-level settings plus a ⋮ menu. It fuses onto the\n * segmented bar border and becomes a separate control group in combo layouts.\n */\nexport function RuntimeBarActions({\n fields = [],\n menu = [],\n inline = true,\n menuLabel = \"Runtime options\",\n standalone = false,\n className,\n visibleCount = fields.length,\n}: RuntimeBarActionsProps) {\n const variant = useContext(RuntimeBarVariantContext);\n const useStandalone = standalone || variant === \"combo\";\n const inlineFields = inline\n ? fields.filter((field) => field.isSet).slice(0, visibleCount)\n : [];\n const menuItems: DropdownMenuItem[] = [\n ...fields.map((field) => ({\n label: field.label,\n ...(field.icon ? { icon: field.icon } : {}),\n ...(field.iconClassName ? { iconClassName: field.iconClassName } : {}),\n // Ignored: an item with `children` is a submenu trigger, not a leaf.\n onSelect: () => {},\n children: field.items,\n ...(field.header ? { header: field.header } : {}),\n })),\n ...menu,\n ];\n if (inlineFields.length === 0 && menuItems.length === 0) return null;\n\n return (\n <div\n data-runtime-bar-section=\"actions\"\n className={cn(\n \"flex h-control-h shrink-0 items-stretch\",\n useStandalone\n ? variant === \"combo\"\n ? \"gap-1\"\n : \"w-fit overflow-hidden rounded-md border border-input bg-background\"\n : \"border-l border-border\",\n className,\n )}\n >\n {inlineFields.map((field) => (\n <RuntimeSegment\n key={field.id}\n menuLabel={field.label}\n title={field.title}\n items={field.items}\n {...(field.header ? { header: field.header } : {})}\n >\n {field.caption}\n </RuntimeSegment>\n ))}\n {menuItems.length > 0 && (\n <RuntimeSegment\n menuLabel={menuLabel}\n title={menuLabel}\n items={menuItems}\n hideChevron\n >\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </RuntimeSegment>\n )}\n </div>\n );\n}\n"],"names":["useContext","RuntimeBarVariantContext","jsxs","cn","jsx","RuntimeSegment","Icon","UiDotsVertical"],"mappings":";;;;;;;;;AAmDO,SAAS,kBAAkB;AAAA,EAChC,SAAS,CAAA;AAAA,EACT,OAAO,CAAA;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AAAA,EACA,eAAe,OAAO;AACxB,GAA2B;AACzB,QAAM,UAAUA,MAAAA,WAAWC,2CAAwB;AACnD,QAAM,gBAAgB,cAAc,YAAY;AAChD,QAAM,eAAe,SACjB,OAAO,OAAO,CAAC,UAAU,MAAM,KAAK,EAAE,MAAM,GAAG,YAAY,IAC3D,CAAA;AACJ,QAAM,YAAgC;AAAA,IACpC,GAAG,OAAO,IAAI,CAAC,WAAW;AAAA,MACxB,OAAO,MAAM;AAAA,MACb,GAAI,MAAM,OAAO,EAAE,MAAM,MAAM,KAAA,IAAS,CAAA;AAAA,MACxC,GAAI,MAAM,gBAAgB,EAAE,eAAe,MAAM,cAAA,IAAkB,CAAA;AAAA;AAAA,MAEnE,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,UAAU,MAAM;AAAA,MAChB,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAA,IAAW,CAAA;AAAA,IAAC,EAC/C;AAAA,IACF,GAAG;AAAA,EAAA;AAEL,MAAI,aAAa,WAAW,KAAK,UAAU,WAAW,EAAG,QAAO;AAEhE,SACEC,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,4BAAyB;AAAA,MACzB,WAAWC,MAAAA;AAAAA,QACT;AAAA,QACA,gBACI,YAAY,UACV,UACA,uEACF;AAAA,QACJ;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,aAAa,IAAI,CAAC,UACjBC,2BAAAA;AAAAA,UAACC,kBAAAA;AAAAA,UAAA;AAAA,YAEC,WAAW,MAAM;AAAA,YACjB,OAAO,MAAM;AAAA,YACb,OAAO,MAAM;AAAA,YACZ,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAA,IAAW,CAAA;AAAA,YAE9C,UAAA,MAAM;AAAA,UAAA;AAAA,UANF,MAAM;AAAA,QAAA,CAQd;AAAA,QACA,UAAU,SAAS,KAClBD,2BAAAA;AAAAA,UAACC,kBAAAA;AAAAA,UAAA;AAAA,YACC;AAAA,YACA,OAAO;AAAA,YACP,OAAO;AAAA,YACP,aAAW;AAAA,YAEX,UAAAD,2BAAAA;AAAAA,cAACE,KAAAA;AAAAA,cAAA;AAAA,gBACC,MAAMC,eAAAA;AAAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
|
|
@@ -13,10 +13,15 @@ export type RuntimeBarAction = {
|
|
|
13
13
|
/** Menu entry label when collapsed; also the inline segment's menu label. */
|
|
14
14
|
label: string;
|
|
15
15
|
icon?: StaticIconComponent | undefined;
|
|
16
|
+
iconClassName?: string | undefined;
|
|
16
17
|
/** Tooltip on the inline segment, e.g. "Permission posture — Plan". */
|
|
17
18
|
title: string;
|
|
18
19
|
/** Inline segment caption: key + glyph + current value. */
|
|
19
20
|
caption: ReactNode;
|
|
21
|
+
/** Only supplied settings are candidates for inline display. */
|
|
22
|
+
isSet: boolean;
|
|
23
|
+
/** Custom editor shared by the inline dropdown and overflow submenu. */
|
|
24
|
+
header?: ReactNode;
|
|
20
25
|
/** Choices, identical inline and collapsed. */
|
|
21
26
|
items: DropdownMenuItem[];
|
|
22
27
|
};
|
|
@@ -30,10 +35,12 @@ export type RuntimeBarActionsProps = {
|
|
|
30
35
|
/** Renders its own bar chrome instead of fusing onto the bar's border. */
|
|
31
36
|
standalone?: boolean | undefined;
|
|
32
37
|
className?: string | undefined;
|
|
38
|
+
/** Number of supplied fields that fit beside the runtime identity. */
|
|
39
|
+
visibleCount?: number | undefined;
|
|
33
40
|
};
|
|
34
41
|
/**
|
|
35
42
|
* The runtime bar's host-level settings plus a ⋮ menu. It fuses onto the
|
|
36
43
|
* segmented bar border and becomes a separate control group in combo layouts.
|
|
37
44
|
*/
|
|
38
|
-
export declare function RuntimeBarActions({ fields, menu, inline, menuLabel, standalone, className, }: RuntimeBarActionsProps): import("react").JSX.Element | null;
|
|
45
|
+
export declare function RuntimeBarActions({ fields, menu, inline, menuLabel, standalone, className, visibleCount, }: RuntimeBarActionsProps): import("react").JSX.Element | null;
|
|
39
46
|
//# sourceMappingURL=RuntimeBarActions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeBarActions.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAQ,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIzD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACvC,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,SAAS,CAAC;IACnB,+CAA+C;IAC/C,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACxC,uEAAuE;IACvE,IAAI,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACtC,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"RuntimeBarActions.d.ts","sourceRoot":"","sources":["../../../src/data/runtime/RuntimeBarActions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAQ,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIzD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,OAAO,EAAE,SAAS,CAAC;IACnB,gEAAgE;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,+CAA+C;IAC/C,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACxC,uEAAuE;IACvE,IAAI,CAAC,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACtC,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAW,EACX,IAAS,EACT,MAAa,EACb,SAA6B,EAC7B,UAAkB,EAClB,SAAS,EACT,YAA4B,GAC7B,EAAE,sBAAsB,sCA2DxB"}
|
|
@@ -11,19 +11,22 @@ function RuntimeBarActions({
|
|
|
11
11
|
inline = true,
|
|
12
12
|
menuLabel = "Runtime options",
|
|
13
13
|
standalone = false,
|
|
14
|
-
className
|
|
14
|
+
className,
|
|
15
|
+
visibleCount = fields.length
|
|
15
16
|
}) {
|
|
16
17
|
const variant = useContext(RuntimeBarVariantContext);
|
|
17
18
|
const useStandalone = standalone || variant === "combo";
|
|
18
|
-
const inlineFields = inline ? fields : [];
|
|
19
|
+
const inlineFields = inline ? fields.filter((field) => field.isSet).slice(0, visibleCount) : [];
|
|
19
20
|
const menuItems = [
|
|
20
|
-
...
|
|
21
|
+
...fields.map((field) => ({
|
|
21
22
|
label: field.label,
|
|
22
23
|
...field.icon ? { icon: field.icon } : {},
|
|
24
|
+
...field.iconClassName ? { iconClassName: field.iconClassName } : {},
|
|
23
25
|
// Ignored: an item with `children` is a submenu trigger, not a leaf.
|
|
24
26
|
onSelect: () => {
|
|
25
27
|
},
|
|
26
|
-
children: field.items
|
|
28
|
+
children: field.items,
|
|
29
|
+
...field.header ? { header: field.header } : {}
|
|
27
30
|
})),
|
|
28
31
|
...menu
|
|
29
32
|
];
|
|
@@ -33,8 +36,8 @@ function RuntimeBarActions({
|
|
|
33
36
|
{
|
|
34
37
|
"data-runtime-bar-section": "actions",
|
|
35
38
|
className: cn(
|
|
36
|
-
"flex h-control-h
|
|
37
|
-
useStandalone ? "w-fit overflow-hidden rounded-md border border-input bg-background" : "
|
|
39
|
+
"flex h-control-h shrink-0 items-stretch",
|
|
40
|
+
useStandalone ? variant === "combo" ? "gap-1" : "w-fit overflow-hidden rounded-md border border-input bg-background" : "border-l border-border",
|
|
38
41
|
className
|
|
39
42
|
),
|
|
40
43
|
children: [
|
|
@@ -44,6 +47,7 @@ function RuntimeBarActions({
|
|
|
44
47
|
menuLabel: field.label,
|
|
45
48
|
title: field.title,
|
|
46
49
|
items: field.items,
|
|
50
|
+
...field.header ? { header: field.header } : {},
|
|
47
51
|
children: field.caption
|
|
48
52
|
},
|
|
49
53
|
field.id
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeBarActions.js","sources":["../../../src/data/runtime/RuntimeBarActions.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport type { DropdownMenuItem } from \"../../overlay/DropdownMenu\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { RuntimeSegment } from \"./RuntimeBarSegment\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\n/**\n * A run setting offered by the runtime bar. Its choices are `DropdownMenuItem`s\n * so the inline and collapsed renderings are the SAME list: inline it is a\n * segment's menu, collapsed it is a flyout submenu of the ⋮ menu. Anything that\n * cannot be a menu item (a multi-select, reorder buttons) belongs in a modal\n * reached from an item, not in this list.\n */\nexport type RuntimeBarAction = {\n id: string;\n /** Menu entry label when collapsed; also the inline segment's menu label. */\n label: string;\n icon?: StaticIconComponent | undefined;\n /** Tooltip on the inline segment, e.g. \"Permission posture — Plan\". */\n title: string;\n /** Inline segment caption: key + glyph + current value. */\n caption: ReactNode;\n /** Choices, identical inline and collapsed. */\n items: DropdownMenuItem[];\n};\n\nexport type RuntimeBarActionsProps = {\n fields?: RuntimeBarAction[] | undefined;\n /** Always-collapsed entries listed after the fields, e.g. Advanced. */\n menu?: DropdownMenuItem[] | undefined;\n /** False collapses every field into the ⋮ menu. */\n inline?: boolean | undefined;\n menuLabel?: string | undefined;\n /** Renders its own bar chrome instead of fusing onto the bar's border. */\n standalone?: boolean | undefined;\n className?: string | undefined;\n};\n\n/**\n * The runtime bar's host-level settings plus a ⋮ menu. It fuses onto the\n * segmented bar border and becomes a separate control group in combo layouts.\n */\nexport function RuntimeBarActions({\n fields = [],\n menu = [],\n inline = true,\n menuLabel = \"Runtime options\",\n standalone = false,\n className,\n}: RuntimeBarActionsProps) {\n const variant = useContext(RuntimeBarVariantContext);\n const useStandalone = standalone || variant === \"combo\";\n const inlineFields = inline
|
|
1
|
+
{"version":3,"file":"RuntimeBarActions.js","sources":["../../../src/data/runtime/RuntimeBarActions.tsx"],"sourcesContent":["import { useContext, type ReactNode } from \"react\";\nimport { UiDotsVertical } from \"../../icons\";\nimport { cn } from \"../../lib/utils\";\nimport type { DropdownMenuItem } from \"../../overlay/DropdownMenu\";\nimport { Icon, type StaticIconComponent } from \"../Icon\";\nimport { RuntimeSegment } from \"./RuntimeBarSegment\";\nimport { RuntimeBarVariantContext } from \"./RuntimeBar.context\";\n\n/**\n * A run setting offered by the runtime bar. Its choices are `DropdownMenuItem`s\n * so the inline and collapsed renderings are the SAME list: inline it is a\n * segment's menu, collapsed it is a flyout submenu of the ⋮ menu. Anything that\n * cannot be a menu item (a multi-select, reorder buttons) belongs in a modal\n * reached from an item, not in this list.\n */\nexport type RuntimeBarAction = {\n id: string;\n /** Menu entry label when collapsed; also the inline segment's menu label. */\n label: string;\n icon?: StaticIconComponent | undefined;\n iconClassName?: string | undefined;\n /** Tooltip on the inline segment, e.g. \"Permission posture — Plan\". */\n title: string;\n /** Inline segment caption: key + glyph + current value. */\n caption: ReactNode;\n /** Only supplied settings are candidates for inline display. */\n isSet: boolean;\n /** Custom editor shared by the inline dropdown and overflow submenu. */\n header?: ReactNode;\n /** Choices, identical inline and collapsed. */\n items: DropdownMenuItem[];\n};\n\nexport type RuntimeBarActionsProps = {\n fields?: RuntimeBarAction[] | undefined;\n /** Always-collapsed entries listed after the fields, e.g. Advanced. */\n menu?: DropdownMenuItem[] | undefined;\n /** False collapses every field into the ⋮ menu. */\n inline?: boolean | undefined;\n menuLabel?: string | undefined;\n /** Renders its own bar chrome instead of fusing onto the bar's border. */\n standalone?: boolean | undefined;\n className?: string | undefined;\n /** Number of supplied fields that fit beside the runtime identity. */\n visibleCount?: number | undefined;\n};\n\n/**\n * The runtime bar's host-level settings plus a ⋮ menu. It fuses onto the\n * segmented bar border and becomes a separate control group in combo layouts.\n */\nexport function RuntimeBarActions({\n fields = [],\n menu = [],\n inline = true,\n menuLabel = \"Runtime options\",\n standalone = false,\n className,\n visibleCount = fields.length,\n}: RuntimeBarActionsProps) {\n const variant = useContext(RuntimeBarVariantContext);\n const useStandalone = standalone || variant === \"combo\";\n const inlineFields = inline\n ? fields.filter((field) => field.isSet).slice(0, visibleCount)\n : [];\n const menuItems: DropdownMenuItem[] = [\n ...fields.map((field) => ({\n label: field.label,\n ...(field.icon ? { icon: field.icon } : {}),\n ...(field.iconClassName ? { iconClassName: field.iconClassName } : {}),\n // Ignored: an item with `children` is a submenu trigger, not a leaf.\n onSelect: () => {},\n children: field.items,\n ...(field.header ? { header: field.header } : {}),\n })),\n ...menu,\n ];\n if (inlineFields.length === 0 && menuItems.length === 0) return null;\n\n return (\n <div\n data-runtime-bar-section=\"actions\"\n className={cn(\n \"flex h-control-h shrink-0 items-stretch\",\n useStandalone\n ? variant === \"combo\"\n ? \"gap-1\"\n : \"w-fit overflow-hidden rounded-md border border-input bg-background\"\n : \"border-l border-border\",\n className,\n )}\n >\n {inlineFields.map((field) => (\n <RuntimeSegment\n key={field.id}\n menuLabel={field.label}\n title={field.title}\n items={field.items}\n {...(field.header ? { header: field.header } : {})}\n >\n {field.caption}\n </RuntimeSegment>\n ))}\n {menuItems.length > 0 && (\n <RuntimeSegment\n menuLabel={menuLabel}\n title={menuLabel}\n items={menuItems}\n hideChevron\n >\n <Icon\n icon={UiDotsVertical}\n className=\"size-4 shrink-0 text-muted-foreground\"\n />\n </RuntimeSegment>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAmDO,SAAS,kBAAkB;AAAA,EAChC,SAAS,CAAA;AAAA,EACT,OAAO,CAAA;AAAA,EACP,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,aAAa;AAAA,EACb;AAAA,EACA,eAAe,OAAO;AACxB,GAA2B;AACzB,QAAM,UAAU,WAAW,wBAAwB;AACnD,QAAM,gBAAgB,cAAc,YAAY;AAChD,QAAM,eAAe,SACjB,OAAO,OAAO,CAAC,UAAU,MAAM,KAAK,EAAE,MAAM,GAAG,YAAY,IAC3D,CAAA;AACJ,QAAM,YAAgC;AAAA,IACpC,GAAG,OAAO,IAAI,CAAC,WAAW;AAAA,MACxB,OAAO,MAAM;AAAA,MACb,GAAI,MAAM,OAAO,EAAE,MAAM,MAAM,KAAA,IAAS,CAAA;AAAA,MACxC,GAAI,MAAM,gBAAgB,EAAE,eAAe,MAAM,cAAA,IAAkB,CAAA;AAAA;AAAA,MAEnE,UAAU,MAAM;AAAA,MAAC;AAAA,MACjB,UAAU,MAAM;AAAA,MAChB,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAA,IAAW,CAAA;AAAA,IAAC,EAC/C;AAAA,IACF,GAAG;AAAA,EAAA;AAEL,MAAI,aAAa,WAAW,KAAK,UAAU,WAAW,EAAG,QAAO;AAEhE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,4BAAyB;AAAA,MACzB,WAAW;AAAA,QACT;AAAA,QACA,gBACI,YAAY,UACV,UACA,uEACF;AAAA,QACJ;AAAA,MAAA;AAAA,MAGD,UAAA;AAAA,QAAA,aAAa,IAAI,CAAC,UACjB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAW,MAAM;AAAA,YACjB,OAAO,MAAM;AAAA,YACb,OAAO,MAAM;AAAA,YACZ,GAAI,MAAM,SAAS,EAAE,QAAQ,MAAM,OAAA,IAAW,CAAA;AAAA,YAE9C,UAAA,MAAM;AAAA,UAAA;AAAA,UANF,MAAM;AAAA,QAAA,CAQd;AAAA,QACA,UAAU,SAAS,KAClB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,OAAO;AAAA,YACP,OAAO;AAAA,YACP,aAAW;AAAA,YAEX,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|