@flanksource/clicky-ui 0.3.41 → 0.3.43
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/profiles/fields/profileFieldFilterEditor.cjs +5 -2
- package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.js +5 -2
- package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.cjs +2 -0
- package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.d.ts.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.js +2 -0
- package/dist/profiles/fields/profileFieldIcons.js.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.cjs +1 -0
- package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.d.ts +3 -0
- package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.js +1 -0
- package/dist/profiles/wizard/profileWizardModel.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
|
@@ -44,7 +44,7 @@ function RuntimeRows({
|
|
|
44
44
|
showTimeout: true,
|
|
45
45
|
showCost: true,
|
|
46
46
|
ariaLabel: "Runtime 1 controls",
|
|
47
|
-
...actions ? { actions
|
|
47
|
+
...actions ? { actions } : {}
|
|
48
48
|
}
|
|
49
49
|
)
|
|
50
50
|
}
|
|
@@ -67,7 +67,9 @@ function RuntimeRows({
|
|
|
67
67
|
onChange: (next) => onChange(
|
|
68
68
|
model.withRuntimeRows(
|
|
69
69
|
value,
|
|
70
|
-
rows.map(
|
|
70
|
+
rows.map(
|
|
71
|
+
(item, itemIndex) => itemIndex === index ? next : item
|
|
72
|
+
)
|
|
71
73
|
)
|
|
72
74
|
),
|
|
73
75
|
ariaLabel: `Runtime ${index + 1} controls`
|
|
@@ -103,7 +105,10 @@ function RuntimeRows({
|
|
|
103
105
|
onClick: () => {
|
|
104
106
|
var _a;
|
|
105
107
|
return onChange(
|
|
106
|
-
model.withRuntimeRows(value, [
|
|
108
|
+
model.withRuntimeRows(value, [
|
|
109
|
+
...rows,
|
|
110
|
+
((_a = rows[0]) == null ? void 0 : _a.mode) ? { mode: rows[0].mode } : {}
|
|
111
|
+
])
|
|
107
112
|
);
|
|
108
113
|
},
|
|
109
114
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeRows.cjs","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions
|
|
1
|
+
{"version":3,"file":"RuntimeRows.cjs","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions ? { actions } : {})}\n />\n </div>\n );\n }\n\n const rows = runtimeRows(value);\n return (\n <div ref={ref} className=\"grid grid-cols-1 gap-density-2\">\n {rows.map((runtime, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={`Runtime ${index + 1}`}\n className=\"flex min-w-0 items-center gap-density-2\"\n >\n <RuntimeBar\n {...shared}\n value={runtime}\n onChange={(next) =>\n onChange(\n withRuntimeRows(\n value,\n rows.map((item, itemIndex) =>\n itemIndex === index ? next : item,\n ),\n ),\n )\n }\n ariaLabel={`Runtime ${index + 1} controls`}\n />\n {rows.length > 2 && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={`Remove runtime ${index + 1}`}\n onClick={() =>\n onChange(\n withRuntimeRows(\n value,\n rows.filter((_, itemIndex) => itemIndex !== index),\n ),\n )\n }\n >\n <Icon icon={UiTrash} className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n {/* Spec-level, so it sits beside the rows rather than repeating in each. */}\n {actions && <RuntimeBarActions {...actions} inline={wider} standalone />}\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-fit\"\n aria-label=\"Add runtime\"\n onClick={() =>\n onChange(\n withRuntimeRows(value, [\n ...rows,\n rows[0]?.mode ? { mode: rows[0].mode } : {},\n ]),\n )\n }\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n Add runtime\n </Button>\n </div>\n );\n}\n"],"names":["useContainerWiderThan","modelModeOf","jsx","RuntimeBar","singleRuntimeOf","withSingleRuntime","runtimeRows","jsxs","withRuntimeRows","Button","Icon","UiTrash","RuntimeBarActions","UiAdd"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeRows.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAUjB,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,GACR,EAAE;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5D,0EAA0E;IAC1E,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC9C,+
|
|
1
|
+
{"version":3,"file":"RuntimeRows.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,SAAS,CAAC;AAUjB,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,GACR,EAAE;IACD,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;IAC5D,0EAA0E;IAC1E,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC9C,+BAgGA"}
|
|
@@ -42,7 +42,7 @@ function RuntimeRows({
|
|
|
42
42
|
showTimeout: true,
|
|
43
43
|
showCost: true,
|
|
44
44
|
ariaLabel: "Runtime 1 controls",
|
|
45
|
-
...actions ? { actions
|
|
45
|
+
...actions ? { actions } : {}
|
|
46
46
|
}
|
|
47
47
|
)
|
|
48
48
|
}
|
|
@@ -65,7 +65,9 @@ function RuntimeRows({
|
|
|
65
65
|
onChange: (next) => onChange(
|
|
66
66
|
withRuntimeRows(
|
|
67
67
|
value,
|
|
68
|
-
rows.map(
|
|
68
|
+
rows.map(
|
|
69
|
+
(item, itemIndex) => itemIndex === index ? next : item
|
|
70
|
+
)
|
|
69
71
|
)
|
|
70
72
|
),
|
|
71
73
|
ariaLabel: `Runtime ${index + 1} controls`
|
|
@@ -101,7 +103,10 @@ function RuntimeRows({
|
|
|
101
103
|
onClick: () => {
|
|
102
104
|
var _a;
|
|
103
105
|
return onChange(
|
|
104
|
-
withRuntimeRows(value, [
|
|
106
|
+
withRuntimeRows(value, [
|
|
107
|
+
...rows,
|
|
108
|
+
((_a = rows[0]) == null ? void 0 : _a.mode) ? { mode: rows[0].mode } : {}
|
|
109
|
+
])
|
|
105
110
|
);
|
|
106
111
|
},
|
|
107
112
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuntimeRows.js","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions
|
|
1
|
+
{"version":3,"file":"RuntimeRows.js","sources":["../../../../src/data/ai/PromptRunEditor/RuntimeRows.tsx"],"sourcesContent":["import { Button } from \"../../../components/button\";\nimport { useContainerWiderThan } from \"../../../hooks/use-container-width\";\nimport { UiAdd, UiTrash } from \"../../../icons\";\nimport { Icon } from \"../../Icon\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n RuntimeBarActions,\n type RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport type { AISpecRuntimeSpec } from \"../SpecRuntimeEditor.model\";\nimport {\n modelModeOf,\n runtimeRows,\n singleRuntimeOf,\n withRuntimeRows,\n withSingleRuntime,\n type AIPromptRunValue,\n} from \"./model\";\n\n// Below this the bar's identity and settings sections already fill a row, so\n// inline action fields would force a third. Measured on the row wrapper, which\n// fills the column independently of what the bar renders. Tune in the browser\n// at captain's narrow left column and gavel's 2xl dialog.\nconst RUNTIME_ACTIONS_INLINE_MIN_PX = 560;\n\n// Single model: one bar that also owns the run's timeout and max cost.\n// Multi-model: one bar per comparison runtime; limits stay shared in the spec.\nexport function RuntimeRows({\n value,\n onChange,\n models,\n families,\n reasoningEfforts,\n effectiveRuntime,\n actions,\n}: {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n reasoningEfforts: string[];\n effectiveRuntime: Pick<AISpecRuntimeSpec, \"model\" | \"mode\">;\n /** Spec-level run settings; rendered once regardless of the row count. */\n actions?: RuntimeBarActionsProps | undefined;\n}) {\n const { ref, wider } = useContainerWiderThan(RUNTIME_ACTIONS_INLINE_MIN_PX);\n const shared = {\n models,\n families,\n reasoningEfforts,\n effectiveModel: effectiveRuntime.model,\n effectiveMode: effectiveRuntime.mode,\n };\n\n if (modelModeOf(value) === \"single\") {\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label=\"Runtime 1\"\n className=\"flex min-w-0 items-center\"\n >\n <RuntimeBar\n {...shared}\n value={singleRuntimeOf(value)}\n onChange={(next) => onChange(withSingleRuntime(value, next))}\n showTimeout\n showCost\n ariaLabel=\"Runtime 1 controls\"\n {...(actions ? { actions } : {})}\n />\n </div>\n );\n }\n\n const rows = runtimeRows(value);\n return (\n <div ref={ref} className=\"grid grid-cols-1 gap-density-2\">\n {rows.map((runtime, index) => (\n <div\n key={index}\n role=\"group\"\n aria-label={`Runtime ${index + 1}`}\n className=\"flex min-w-0 items-center gap-density-2\"\n >\n <RuntimeBar\n {...shared}\n value={runtime}\n onChange={(next) =>\n onChange(\n withRuntimeRows(\n value,\n rows.map((item, itemIndex) =>\n itemIndex === index ? next : item,\n ),\n ),\n )\n }\n ariaLabel={`Runtime ${index + 1} controls`}\n />\n {rows.length > 2 && (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n aria-label={`Remove runtime ${index + 1}`}\n onClick={() =>\n onChange(\n withRuntimeRows(\n value,\n rows.filter((_, itemIndex) => itemIndex !== index),\n ),\n )\n }\n >\n <Icon icon={UiTrash} className=\"size-4\" />\n </Button>\n )}\n </div>\n ))}\n {/* Spec-level, so it sits beside the rows rather than repeating in each. */}\n {actions && <RuntimeBarActions {...actions} inline={wider} standalone />}\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-fit\"\n aria-label=\"Add runtime\"\n onClick={() =>\n onChange(\n withRuntimeRows(value, [\n ...rows,\n rows[0]?.mode ? { mode: rows[0].mode } : {},\n ]),\n )\n }\n >\n <Icon icon={UiAdd} className=\"size-4\" />\n Add runtime\n </Button>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAyBA,MAAM,gCAAgC;AAI/B,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AACD,QAAM,EAAE,KAAK,UAAU,sBAAsB,6BAA6B;AAC1E,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB,iBAAiB;AAAA,IACjC,eAAe,iBAAiB;AAAA,EAAA;AAGlC,MAAI,YAAY,KAAK,MAAM,UAAU;AACnC,WACE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,cAAW;AAAA,QACX,WAAU;AAAA,QAEV,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACE,GAAG;AAAA,YACJ,OAAO,gBAAgB,KAAK;AAAA,YAC5B,UAAU,CAAC,SAAS,SAAS,kBAAkB,OAAO,IAAI,CAAC;AAAA,YAC3D,aAAW;AAAA,YACX,UAAQ;AAAA,YACR,WAAU;AAAA,YACT,GAAI,UAAU,EAAE,YAAY,CAAA;AAAA,UAAC;AAAA,QAAA;AAAA,MAChC;AAAA,IAAA;AAAA,EAGN;AAEA,QAAM,OAAO,YAAY,KAAK;AAC9B,SACE,qBAAC,OAAA,EAAI,KAAU,WAAU,kCACtB,UAAA;AAAA,IAAA,KAAK,IAAI,CAAC,SAAS,UAClB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,cAAY,WAAW,QAAQ,CAAC;AAAA,QAChC,WAAU;AAAA,QAEV,UAAA;AAAA,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAG;AAAA,cACJ,OAAO;AAAA,cACP,UAAU,CAAC,SACT;AAAA,gBACE;AAAA,kBACE;AAAA,kBACA,KAAK;AAAA,oBAAI,CAAC,MAAM,cACd,cAAc,QAAQ,OAAO;AAAA,kBAAA;AAAA,gBAC/B;AAAA,cACF;AAAA,cAGJ,WAAW,WAAW,QAAQ,CAAC;AAAA,YAAA;AAAA,UAAA;AAAA,UAEhC,KAAK,SAAS,KACb;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAQ;AAAA,cACR,cAAY,kBAAkB,QAAQ,CAAC;AAAA,cACvC,SAAS,MACP;AAAA,gBACE;AAAA,kBACE;AAAA,kBACA,KAAK,OAAO,CAAC,GAAG,cAAc,cAAc,KAAK;AAAA,gBAAA;AAAA,cACnD;AAAA,cAIJ,UAAA,oBAAC,MAAA,EAAK,MAAM,SAAS,WAAU,SAAA,CAAS;AAAA,YAAA;AAAA,UAAA;AAAA,QAC1C;AAAA,MAAA;AAAA,MAnCG;AAAA,IAAA,CAsCR;AAAA,IAEA,+BAAY,mBAAA,EAAmB,GAAG,SAAS,QAAQ,OAAO,YAAU,MAAC;AAAA,IACtE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,WAAU;AAAA,QACV,cAAW;AAAA,QACX,SAAS,MAAA;;AACP;AAAA,YACE,gBAAgB,OAAO;AAAA,cACrB,GAAG;AAAA,gBACH,UAAK,CAAC,MAAN,mBAAS,QAAO,EAAE,MAAM,KAAK,CAAC,EAAE,SAAS,CAAA;AAAA,YAAC,CAC3C;AAAA,UAAA;AAAA;AAAA,QAIL,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,UAAS;AAAA,UAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAE1C,GACF;AAEJ;"}
|
|
@@ -9,12 +9,12 @@ const effortIcons = require("../../chat/effort-icons.cjs");
|
|
|
9
9
|
const runtimeMode = require("../../runtime/runtime-mode.cjs");
|
|
10
10
|
const index = require("../SpecRuntimeEditor/index.cjs");
|
|
11
11
|
const runtimeProfileModel = require("../../../lib/runtime-profile-model.cjs");
|
|
12
|
-
const
|
|
12
|
+
const runtimeSpecFields = require("../runtime-spec-fields.cjs");
|
|
13
13
|
const model = require("./model.cjs");
|
|
14
14
|
const PromptBlocks = require("./PromptBlocks.cjs");
|
|
15
15
|
const RecentRuntimes = require("./RecentRuntimes.cjs");
|
|
16
|
-
const runtimeActions = require("./runtimeActions.cjs");
|
|
17
16
|
const RuntimeRows = require("./RuntimeRows.cjs");
|
|
17
|
+
const useRuntimePresetMenu = require("../runtime-preset-menu/use-runtime-preset-menu.cjs");
|
|
18
18
|
const UiGearSix = require("../../../icons/components/UiGearSix.cjs");
|
|
19
19
|
const MODEL_MODES = [
|
|
20
20
|
{ id: "single", label: "Single model" },
|
|
@@ -55,6 +55,7 @@ function PromptRunEditor({
|
|
|
55
55
|
specSections,
|
|
56
56
|
specTabs,
|
|
57
57
|
presets,
|
|
58
|
+
onCreatePreset,
|
|
58
59
|
resolution
|
|
59
60
|
}) {
|
|
60
61
|
if (specTabs && specSections) {
|
|
@@ -63,7 +64,6 @@ function PromptRunEditor({
|
|
|
63
64
|
);
|
|
64
65
|
}
|
|
65
66
|
const [specOpen, setSpecOpen] = react.useState(false);
|
|
66
|
-
const [presetsOpen, setPresetsOpen] = react.useState(false);
|
|
67
67
|
const spec = value.spec ?? {};
|
|
68
68
|
const modelMode = model.modelModeOf(value);
|
|
69
69
|
const presetCatalog = presets ?? [];
|
|
@@ -74,31 +74,42 @@ function PromptRunEditor({
|
|
|
74
74
|
},
|
|
75
75
|
presetCatalog
|
|
76
76
|
);
|
|
77
|
+
const presetMenu = useRuntimePresetMenu.useRuntimePresetMenu({
|
|
78
|
+
value: { spec, presets: value.presets ?? [] },
|
|
79
|
+
presets: presetCatalog,
|
|
80
|
+
onCreatePreset,
|
|
81
|
+
onChange: (next) => {
|
|
82
|
+
var _a;
|
|
83
|
+
const updated = { ...value, spec: next.spec, presets: next.presets };
|
|
84
|
+
onChange(
|
|
85
|
+
((_a = value.runtimes) == null ? void 0 : _a.length) && next.spec !== spec ? model.withRuntimeRows(updated, [
|
|
86
|
+
model.runtimeModelFromSpec(next.spec),
|
|
87
|
+
...model.runtimeRows(value).slice(1)
|
|
88
|
+
]) : updated
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
77
92
|
const barActions = {
|
|
78
|
-
fields: [
|
|
93
|
+
fields: specTabs ? [] : runtimeSpecFields.runtimeSpecFields({
|
|
94
|
+
value: spec,
|
|
95
|
+
families,
|
|
96
|
+
models,
|
|
97
|
+
effectiveMode: runRuntime.mode,
|
|
98
|
+
effectiveModel: runRuntime.model,
|
|
99
|
+
onChange: (next) => onChange({ ...value, spec: next })
|
|
100
|
+
}).filter((field) => {
|
|
101
|
+
const section = field.id === "permissions.mode" ? "permissions" : field.id === "workflow.commits" ? "commit" : "workspace";
|
|
102
|
+
return !specSections || specSections.includes(section);
|
|
103
|
+
}),
|
|
104
|
+
menu: [
|
|
105
|
+
...presets !== void 0 || onCreatePreset ? presetMenu.menu : [],
|
|
79
106
|
...specTabs ? [] : [
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
})
|
|
86
|
-
],
|
|
87
|
-
...presets === void 0 ? [] : [
|
|
88
|
-
runtimeActions.presetsField({
|
|
89
|
-
presets: presetCatalog,
|
|
90
|
-
value: value.presets ?? [],
|
|
91
|
-
onChange: (next) => onChange({ ...value, presets: next }),
|
|
92
|
-
onReorder: () => setPresetsOpen(true)
|
|
93
|
-
})
|
|
107
|
+
{
|
|
108
|
+
label: advancedLabel,
|
|
109
|
+
icon: UiGearSix.UiGearSix,
|
|
110
|
+
onSelect: () => setSpecOpen(true)
|
|
111
|
+
}
|
|
94
112
|
]
|
|
95
|
-
].filter((field) => field !== void 0),
|
|
96
|
-
menu: specTabs ? [] : [
|
|
97
|
-
{
|
|
98
|
-
label: advancedLabel,
|
|
99
|
-
icon: UiGearSix.UiGearSix,
|
|
100
|
-
onSelect: () => setSpecOpen(true)
|
|
101
|
-
}
|
|
102
113
|
]
|
|
103
114
|
};
|
|
104
115
|
const specEditorProps = {
|
|
@@ -187,24 +198,7 @@ function PromptRunEditor({
|
|
|
187
198
|
}
|
|
188
199
|
) : promptBlocks,
|
|
189
200
|
footer,
|
|
190
|
-
|
|
191
|
-
Modal.Modal,
|
|
192
|
-
{
|
|
193
|
-
open: presetsOpen,
|
|
194
|
-
onClose: () => setPresetsOpen(false),
|
|
195
|
-
title: "Presets",
|
|
196
|
-
size: "lg",
|
|
197
|
-
closeOnEsc: true,
|
|
198
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
199
|
-
OrderedPresetSelect.OrderedPresetSelect,
|
|
200
|
-
{
|
|
201
|
-
presets: presetCatalog,
|
|
202
|
-
value: value.presets ?? [],
|
|
203
|
-
onChange: (next) => onChange({ ...value, presets: next })
|
|
204
|
-
}
|
|
205
|
-
)
|
|
206
|
-
}
|
|
207
|
-
),
|
|
201
|
+
presetMenu.dialogs,
|
|
208
202
|
!specTabs && /* @__PURE__ */ jsxRuntime.jsx(
|
|
209
203
|
Modal.Modal,
|
|
210
204
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type {\n RuntimeBarAction,\n RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { OrderedPresetSelect } from \"../runtime-profiles/OrderedPresetSelect\";\nimport {\n modelModeOf,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { permissionField, presetsField } from \"./runtimeActions\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const [presetsOpen, setPresetsOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n // Spec-level run settings shown on the runtime bar. The permission field is\n // dropped under `specTabs` because the inline Permissions tab already owns it,\n // and a value with two editors in one layout is a value that drifts.\n const barActions: RuntimeBarActionsProps = {\n fields: [\n ...(specTabs\n ? []\n : [\n permissionField({\n spec,\n families,\n effectiveMode: runRuntime.mode,\n onChange: (next) => onChange({ ...value, spec: next }),\n }),\n ]),\n ...(presets === undefined\n ? []\n : [\n presetsField({\n presets: presetCatalog,\n value: value.presets ?? [],\n onChange: (next) => onChange({ ...value, presets: next }),\n onReorder: () => setPresetsOpen(true),\n }),\n ]),\n ].filter((field): field is RuntimeBarAction => field !== undefined),\n menu: specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presets !== undefined && (\n <Modal\n open={presetsOpen}\n onClose={() => setPresetsOpen(false)}\n title=\"Presets\"\n size=\"lg\"\n closeOnEsc\n >\n <OrderedPresetSelect\n presets={presetCatalog}\n value={value.presets ?? []}\n onChange={(next) => onChange({ ...value, presets: next })}\n />\n </Modal>\n )}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":["SPEC_RUNTIME_FAMILIES","DEFAULT_REASONING_EFFORTS","useState","modelModeOf","authoredRuntimeSpec","permissionField","presetsField","UiGearSix","jsx","PromptBlocks","cn","SegmentedControl","withModelMode","jsxs","Block","RuntimeRows","RecentRuntimes","withRecentRuntime","SpecRuntimeEditor","Modal","OrderedPresetSelect","labelForMode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type { RuntimeBarActionsProps } from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { runtimeSpecFields } from \"../runtime-spec-fields\";\nimport { useRuntimePresetMenu } from \"../runtime-preset-menu\";\nimport {\n modelModeOf,\n runtimeModelFromSpec,\n runtimeRows,\n withRuntimeRows,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n /** Persist a preset captured from the runtime bar. */\n onCreatePreset?:\n | ((draft: RuntimePreset) => Promise<RuntimePreset>)\n | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n onCreatePreset,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n const presetMenu = useRuntimePresetMenu({\n value: { spec, presets: value.presets ?? [] },\n presets: presetCatalog,\n onCreatePreset,\n onChange: (next) => {\n const updated = { ...value, spec: next.spec, presets: next.presets };\n onChange(\n value.runtimes?.length && next.spec !== spec\n ? withRuntimeRows(updated, [\n runtimeModelFromSpec(next.spec),\n ...runtimeRows(value).slice(1),\n ])\n : updated,\n );\n },\n });\n const barActions: RuntimeBarActionsProps = {\n fields: specTabs\n ? []\n : runtimeSpecFields({\n value: spec,\n families,\n models,\n effectiveMode: runRuntime.mode,\n effectiveModel: runRuntime.model,\n onChange: (next) => onChange({ ...value, spec: next }),\n }).filter((field) => {\n const section =\n field.id === \"permissions.mode\"\n ? \"permissions\"\n : field.id === \"workflow.commits\"\n ? \"commit\"\n : \"workspace\";\n return !specSections || specSections.includes(section);\n }),\n menu: [\n ...(presets !== undefined || onCreatePreset ? presetMenu.menu : []),\n ...(specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ]),\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presetMenu.dialogs}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":["SPEC_RUNTIME_FAMILIES","DEFAULT_REASONING_EFFORTS","useState","modelModeOf","authoredRuntimeSpec","useRuntimePresetMenu","withRuntimeRows","runtimeModelFromSpec","runtimeRows","runtimeSpecFields","UiGearSix","jsx","PromptBlocks","cn","SegmentedControl","withModelMode","jsxs","Block","RuntimeRows","RecentRuntimes","withRecentRuntime","SpecRuntimeEditor","Modal","labelForMode"],"mappings":"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"}
|
|
@@ -62,11 +62,13 @@ export type PromptRunEditorProps = {
|
|
|
62
62
|
profiles?: RuntimeProfile[] | undefined;
|
|
63
63
|
/** Available presets for direct ordered run selection. */
|
|
64
64
|
presets?: RuntimePreset[] | undefined;
|
|
65
|
+
/** Persist a preset captured from the runtime bar. */
|
|
66
|
+
onCreatePreset?: ((draft: RuntimePreset) => Promise<RuntimePreset>) | undefined;
|
|
65
67
|
onSaveProfile?: ((profile: RuntimeProfile) => Promise<RuntimeProfile>) | undefined;
|
|
66
68
|
onCreateProfile?: ((profile: RuntimeProfile) => Promise<RuntimeProfile>) | undefined;
|
|
67
69
|
onResolveProfile?: ((request: RuntimeProfileResolveRequest) => Promise<ResolvedRuntimeProfile>) | undefined;
|
|
68
70
|
/** The last render's resolved spec and layer trace. */
|
|
69
71
|
resolution?: ResolvedRuntimeSpec | undefined;
|
|
70
72
|
};
|
|
71
|
-
export declare function PromptRunEditor({ value, onChange, models, families, tools, permissionCatalog, secretSelector, cliOptions, fixtureSchemas, sandboxCatalog, sandboxCreate, reasoningEfforts, recentRuntimes, variablesSchema, onVariablesValidityChange, promptEditor, promptLabel, promptPlaceholder, enableAttachments, attachmentUpload, attachmentLimits, children, header, footer, className, advancedLabel, specModalTitle, specSections, specTabs, presets, resolution, }: PromptRunEditorProps): import("react").JSX.Element;
|
|
73
|
+
export declare function PromptRunEditor({ value, onChange, models, families, tools, permissionCatalog, secretSelector, cliOptions, fixtureSchemas, sandboxCatalog, sandboxCreate, reasoningEfforts, recentRuntimes, variablesSchema, onVariablesValidityChange, promptEditor, promptLabel, promptPlaceholder, enableAttachments, attachmentUpload, attachmentLimits, children, header, footer, className, advancedLabel, specModalTitle, specSections, specTabs, presets, onCreatePreset, resolution, }: PromptRunEditorProps): import("react").JSX.Element;
|
|
72
74
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKrE,OAAO,KAAK,EACV,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,12 @@ import { DEFAULT_REASONING_EFFORTS } from "../../chat/effort-icons.js";
|
|
|
7
7
|
import { SPEC_RUNTIME_FAMILIES, labelForMode } from "../../runtime/runtime-mode.js";
|
|
8
8
|
import { SpecRuntimeEditor } from "../SpecRuntimeEditor/index.js";
|
|
9
9
|
import { authoredRuntimeSpec } from "../../../lib/runtime-profile-model.js";
|
|
10
|
-
import {
|
|
11
|
-
import { modelModeOf, withModelMode, withRecentRuntime } from "./model.js";
|
|
10
|
+
import { runtimeSpecFields } from "../runtime-spec-fields.js";
|
|
11
|
+
import { modelModeOf, withModelMode, withRecentRuntime, withRuntimeRows, runtimeModelFromSpec, runtimeRows } from "./model.js";
|
|
12
12
|
import { Block, PromptBlocks } from "./PromptBlocks.js";
|
|
13
13
|
import { RecentRuntimes } from "./RecentRuntimes.js";
|
|
14
|
-
import { permissionField, presetsField } from "./runtimeActions.js";
|
|
15
14
|
import { RuntimeRows } from "./RuntimeRows.js";
|
|
15
|
+
import { useRuntimePresetMenu } from "../runtime-preset-menu/use-runtime-preset-menu.js";
|
|
16
16
|
import { UiGearSix } from "../../../icons/components/UiGearSix.js";
|
|
17
17
|
const MODEL_MODES = [
|
|
18
18
|
{ id: "single", label: "Single model" },
|
|
@@ -53,6 +53,7 @@ function PromptRunEditor({
|
|
|
53
53
|
specSections,
|
|
54
54
|
specTabs,
|
|
55
55
|
presets,
|
|
56
|
+
onCreatePreset,
|
|
56
57
|
resolution
|
|
57
58
|
}) {
|
|
58
59
|
if (specTabs && specSections) {
|
|
@@ -61,7 +62,6 @@ function PromptRunEditor({
|
|
|
61
62
|
);
|
|
62
63
|
}
|
|
63
64
|
const [specOpen, setSpecOpen] = useState(false);
|
|
64
|
-
const [presetsOpen, setPresetsOpen] = useState(false);
|
|
65
65
|
const spec = value.spec ?? {};
|
|
66
66
|
const modelMode = modelModeOf(value);
|
|
67
67
|
const presetCatalog = presets ?? [];
|
|
@@ -72,31 +72,42 @@ function PromptRunEditor({
|
|
|
72
72
|
},
|
|
73
73
|
presetCatalog
|
|
74
74
|
);
|
|
75
|
+
const presetMenu = useRuntimePresetMenu({
|
|
76
|
+
value: { spec, presets: value.presets ?? [] },
|
|
77
|
+
presets: presetCatalog,
|
|
78
|
+
onCreatePreset,
|
|
79
|
+
onChange: (next) => {
|
|
80
|
+
var _a;
|
|
81
|
+
const updated = { ...value, spec: next.spec, presets: next.presets };
|
|
82
|
+
onChange(
|
|
83
|
+
((_a = value.runtimes) == null ? void 0 : _a.length) && next.spec !== spec ? withRuntimeRows(updated, [
|
|
84
|
+
runtimeModelFromSpec(next.spec),
|
|
85
|
+
...runtimeRows(value).slice(1)
|
|
86
|
+
]) : updated
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
75
90
|
const barActions = {
|
|
76
|
-
fields: [
|
|
91
|
+
fields: specTabs ? [] : runtimeSpecFields({
|
|
92
|
+
value: spec,
|
|
93
|
+
families,
|
|
94
|
+
models,
|
|
95
|
+
effectiveMode: runRuntime.mode,
|
|
96
|
+
effectiveModel: runRuntime.model,
|
|
97
|
+
onChange: (next) => onChange({ ...value, spec: next })
|
|
98
|
+
}).filter((field) => {
|
|
99
|
+
const section = field.id === "permissions.mode" ? "permissions" : field.id === "workflow.commits" ? "commit" : "workspace";
|
|
100
|
+
return !specSections || specSections.includes(section);
|
|
101
|
+
}),
|
|
102
|
+
menu: [
|
|
103
|
+
...presets !== void 0 || onCreatePreset ? presetMenu.menu : [],
|
|
77
104
|
...specTabs ? [] : [
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
})
|
|
84
|
-
],
|
|
85
|
-
...presets === void 0 ? [] : [
|
|
86
|
-
presetsField({
|
|
87
|
-
presets: presetCatalog,
|
|
88
|
-
value: value.presets ?? [],
|
|
89
|
-
onChange: (next) => onChange({ ...value, presets: next }),
|
|
90
|
-
onReorder: () => setPresetsOpen(true)
|
|
91
|
-
})
|
|
105
|
+
{
|
|
106
|
+
label: advancedLabel,
|
|
107
|
+
icon: UiGearSix,
|
|
108
|
+
onSelect: () => setSpecOpen(true)
|
|
109
|
+
}
|
|
92
110
|
]
|
|
93
|
-
].filter((field) => field !== void 0),
|
|
94
|
-
menu: specTabs ? [] : [
|
|
95
|
-
{
|
|
96
|
-
label: advancedLabel,
|
|
97
|
-
icon: UiGearSix,
|
|
98
|
-
onSelect: () => setSpecOpen(true)
|
|
99
|
-
}
|
|
100
111
|
]
|
|
101
112
|
};
|
|
102
113
|
const specEditorProps = {
|
|
@@ -185,24 +196,7 @@ function PromptRunEditor({
|
|
|
185
196
|
}
|
|
186
197
|
) : promptBlocks,
|
|
187
198
|
footer,
|
|
188
|
-
|
|
189
|
-
Modal,
|
|
190
|
-
{
|
|
191
|
-
open: presetsOpen,
|
|
192
|
-
onClose: () => setPresetsOpen(false),
|
|
193
|
-
title: "Presets",
|
|
194
|
-
size: "lg",
|
|
195
|
-
closeOnEsc: true,
|
|
196
|
-
children: /* @__PURE__ */ jsx(
|
|
197
|
-
OrderedPresetSelect,
|
|
198
|
-
{
|
|
199
|
-
presets: presetCatalog,
|
|
200
|
-
value: value.presets ?? [],
|
|
201
|
-
onChange: (next) => onChange({ ...value, presets: next })
|
|
202
|
-
}
|
|
203
|
-
)
|
|
204
|
-
}
|
|
205
|
-
),
|
|
199
|
+
presetMenu.dialogs,
|
|
206
200
|
!specTabs && /* @__PURE__ */ jsx(
|
|
207
201
|
Modal,
|
|
208
202
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type {\n RuntimeBarAction,\n RuntimeBarActionsProps,\n} from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { OrderedPresetSelect } from \"../runtime-profiles/OrderedPresetSelect\";\nimport {\n modelModeOf,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { permissionField, presetsField } from \"./runtimeActions\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const [presetsOpen, setPresetsOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n // Spec-level run settings shown on the runtime bar. The permission field is\n // dropped under `specTabs` because the inline Permissions tab already owns it,\n // and a value with two editors in one layout is a value that drifts.\n const barActions: RuntimeBarActionsProps = {\n fields: [\n ...(specTabs\n ? []\n : [\n permissionField({\n spec,\n families,\n effectiveMode: runRuntime.mode,\n onChange: (next) => onChange({ ...value, spec: next }),\n }),\n ]),\n ...(presets === undefined\n ? []\n : [\n presetsField({\n presets: presetCatalog,\n value: value.presets ?? [],\n onChange: (next) => onChange({ ...value, presets: next }),\n onReorder: () => setPresetsOpen(true),\n }),\n ]),\n ].filter((field): field is RuntimeBarAction => field !== undefined),\n menu: specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presets !== undefined && (\n <Modal\n open={presetsOpen}\n onClose={() => setPresetsOpen(false)}\n title=\"Presets\"\n size=\"lg\"\n closeOnEsc\n >\n <OrderedPresetSelect\n presets={presetCatalog}\n value={value.presets ?? []}\n onChange={(next) => onChange({ ...value, presets: next })}\n />\n </Modal>\n )}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/data/ai/PromptRunEditor/index.tsx"],"sourcesContent":["import { useState, type ReactNode } from \"react\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport type { FixtureFenceSchemas } from \"../../FixtureEditor/types\";\nimport { UiGearSix } from \"../../../icons\";\nimport { cn } from \"../../../lib/utils\";\nimport { Modal } from \"../../../overlay/Modal\";\nimport { DEFAULT_REASONING_EFFORTS } from \"../../chat/effort-icons\";\nimport type {\n AttachmentLimits,\n AttachmentUploadAdapter,\n} from \"../../chat/attachment-upload\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type { RuntimeBarActionsProps } from \"../../runtime/RuntimeBarActions\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n labelForMode,\n} from \"../../runtime/runtime-mode\";\nimport {\n SpecRuntimeEditor,\n type SpecRuntimeEditorProps,\n} from \"../SpecRuntimeEditor\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport type { SpecRuntimeCLIOptions } from \"../SpecRuntimeEditor/CLIArgsSection\";\nimport type {\n SpecRuntimeHostField,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSecretSelectorConfig,\n SpecRuntimeTab,\n SpecSectionId,\n} from \"../SpecRuntimeEditor/types\";\nimport type { AISpecRuntimePermissionCatalog } from \"../SpecRuntimeEditor.model\";\nimport type {\n ResolvedRuntimeProfile,\n ResolvedRuntimeSpec,\n RuntimePreset,\n RuntimeProfile,\n RuntimeProfileResolveRequest,\n} from \"../runtime-profile\";\nimport { authoredRuntimeSpec } from \"../../../lib/runtime-profile-model\";\nimport { runtimeSpecFields } from \"../runtime-spec-fields\";\nimport { useRuntimePresetMenu } from \"../runtime-preset-menu\";\nimport {\n modelModeOf,\n runtimeModelFromSpec,\n runtimeRows,\n withRuntimeRows,\n withModelMode,\n withRecentRuntime,\n type AIPromptRunValue,\n type AISpecRuntimeModel,\n type PromptRunModelMode,\n} from \"./model\";\nimport { Block, PromptBlocks } from \"./PromptBlocks\";\nimport { RecentRuntimes } from \"./RecentRuntimes\";\nimport { RuntimeRows } from \"./RuntimeRows\";\n\nexport type PromptRunEditorProps = {\n value: AIPromptRunValue;\n onChange: (value: AIPromptRunValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Runner schemas keyed by fixture kind or fence info, used by the verification editor. */\n fixtureSchemas?: FixtureFenceSchemas | undefined;\n /** Sandbox adapter catalog; enables the spec editor's Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n reasoningEfforts?: string[] | undefined;\n /**\n * Runtimes the operator ran recently, newest first, listed under the runtime\n * bar (see `recordRecentRuntimes`). A chip replaces the single runtime or adds\n * a multi-model row.\n */\n recentRuntimes?: readonly AISpecRuntimeModel[] | undefined;\n\n /** Schema-driven variables form; omit to render a raw-JSON editor. */\n variablesSchema?: JsonSchemaObject | undefined;\n /** Fires false while raw-JSON variables fail to parse; always true with a schema. */\n onVariablesValidityChange?: ((valid: boolean) => void) | undefined;\n\n /** Host-supplied editor for the `prompt.user` override; defaults to a textarea. */\n promptEditor?: ReactNode | undefined;\n promptLabel?: string | undefined;\n promptPlaceholder?: string | undefined;\n enableAttachments?: boolean | undefined;\n attachmentUpload?: AttachmentUploadAdapter | undefined;\n attachmentLimits?: AttachmentLimits | undefined;\n\n /** Extra fields injected inside the Runtime block, below the runtime rows. */\n children?: ReactNode | undefined;\n header?: ReactNode | undefined;\n footer?: ReactNode | undefined;\n className?: string | undefined;\n\n /** Label of the runtime bar's ⋮ entry that opens the full spec modal. */\n advancedLabel?: string | undefined;\n specModalTitle?: string | undefined;\n /** Restrict which SpecRuntimeEditor sections the \"Advanced\" modal shows. */\n specSections?: readonly SpecSectionId[] | undefined;\n /**\n * Replaces the \"Advanced\" modal with inline tabs of spec sections (see\n * `SPEC_RUNTIME_TABS`), led by a tab holding Variables and the prompt.\n */\n specTabs?: readonly SpecRuntimeTab[] | undefined;\n\n /** @deprecated Profiles are no longer exposed by the prompt editor. */\n profiles?: RuntimeProfile[] | undefined;\n /** Available presets for direct ordered run selection. */\n presets?: RuntimePreset[] | undefined;\n /** Persist a preset captured from the runtime bar. */\n onCreatePreset?:\n | ((draft: RuntimePreset) => Promise<RuntimePreset>)\n | undefined;\n onSaveProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onCreateProfile?:\n | ((profile: RuntimeProfile) => Promise<RuntimeProfile>)\n | undefined;\n onResolveProfile?:\n | ((\n request: RuntimeProfileResolveRequest,\n ) => Promise<ResolvedRuntimeProfile>)\n | undefined;\n /** The last render's resolved spec and layer trace. */\n resolution?: ResolvedRuntimeSpec | undefined;\n};\n\nconst MODEL_MODES: { id: PromptRunModelMode; label: string }[] = [\n { id: \"single\", label: \"Single model\" },\n { id: \"multi\", label: \"Multi-model\" },\n];\n\n// The single-model bar owns the run's timeout and max cost; the model tab only\n// repeats limits that no bar shows.\nconst HOST_FIELDS: Record<PromptRunModelMode, SpecRuntimeHostField[]> = {\n single: [\"runtime\", \"budget.timeout\", \"budget.cost\"],\n multi: [\"runtime\"],\n};\n\n// The inline \"prompt + variables + runtime\" composer shared by captain's prompt\n// workbench and gavel's todo run dialog. It edits Captain's complete prompt-run\n// request without making hosts project that contract into editor-specific state.\n// Hosts should mount it with a `key` per prompt/todo so internal draft state\n// (raw-JSON text, modal open, active tab) resets on selection change.\nexport function PromptRunEditor({\n value,\n onChange,\n models = [],\n families = SPEC_RUNTIME_FAMILIES,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n fixtureSchemas,\n sandboxCatalog,\n sandboxCreate,\n reasoningEfforts = DEFAULT_REASONING_EFFORTS,\n recentRuntimes = [],\n variablesSchema,\n onVariablesValidityChange,\n promptEditor,\n promptLabel = \"User prompt\",\n promptPlaceholder = \"Override the rendered user prompt\",\n enableAttachments = false,\n attachmentUpload,\n attachmentLimits,\n children,\n header,\n footer,\n className,\n advancedLabel = \"Advanced\",\n specModalTitle = \"Runtime spec\",\n specSections,\n specTabs,\n presets,\n onCreatePreset,\n resolution,\n}: PromptRunEditorProps) {\n if (specTabs && specSections) {\n throw new Error(\n \"PromptRunEditor: pass either specSections or specTabs, not both\",\n );\n }\n const [specOpen, setSpecOpen] = useState(false);\n const spec = value.spec ?? {};\n const modelMode = modelModeOf(value);\n const presetCatalog = presets ?? [];\n const runRuntime =\n resolution?.spec ??\n authoredRuntimeSpec(\n {\n id: \"selection\",\n name: \"Selection\",\n spec,\n presets: value.presets ?? [],\n },\n presetCatalog,\n );\n\n const presetMenu = useRuntimePresetMenu({\n value: { spec, presets: value.presets ?? [] },\n presets: presetCatalog,\n onCreatePreset,\n onChange: (next) => {\n const updated = { ...value, spec: next.spec, presets: next.presets };\n onChange(\n value.runtimes?.length && next.spec !== spec\n ? withRuntimeRows(updated, [\n runtimeModelFromSpec(next.spec),\n ...runtimeRows(value).slice(1),\n ])\n : updated,\n );\n },\n });\n const barActions: RuntimeBarActionsProps = {\n fields: specTabs\n ? []\n : runtimeSpecFields({\n value: spec,\n families,\n models,\n effectiveMode: runRuntime.mode,\n effectiveModel: runRuntime.model,\n onChange: (next) => onChange({ ...value, spec: next }),\n }).filter((field) => {\n const section =\n field.id === \"permissions.mode\"\n ? \"permissions\"\n : field.id === \"workflow.commits\"\n ? \"commit\"\n : \"workspace\";\n return !specSections || specSections.includes(section);\n }),\n menu: [\n ...(presets !== undefined || onCreatePreset ? presetMenu.menu : []),\n ...(specTabs\n ? []\n : [\n {\n label: advancedLabel,\n icon: UiGearSix,\n onSelect: () => setSpecOpen(true),\n },\n ]),\n ],\n };\n\n const specEditorProps: SpecRuntimeEditorProps = {\n value: spec,\n onChange: (next) => onChange({ ...value, spec: next }),\n models,\n families,\n tools,\n effectiveModel: runRuntime.model,\n effectiveMode: runRuntime.mode,\n ...(permissionCatalog ? { permissionCatalog } : {}),\n ...(secretSelector ? { secretSelector } : {}),\n ...(cliOptions ? { cliOptions } : {}),\n ...(fixtureSchemas ? { fixtureSchemas } : {}),\n ...(sandboxCatalog ? { sandboxCatalog } : {}),\n ...(sandboxCreate ? { sandboxCreate } : {}),\n };\n const promptBlocks = (\n <PromptBlocks\n value={value}\n onChange={onChange}\n models={models}\n variablesSchema={variablesSchema}\n onVariablesValidityChange={onVariablesValidityChange}\n promptEditor={promptEditor}\n promptLabel={promptLabel}\n promptPlaceholder={promptPlaceholder}\n enableAttachments={enableAttachments}\n attachmentUpload={attachmentUpload}\n attachmentLimits={attachmentLimits}\n />\n );\n\n return (\n <div className={cn(\"grid grid-cols-1 gap-density-4\", className)}>\n <SegmentedControl\n aria-label=\"Model mode\"\n size=\"sm\"\n value={modelMode}\n options={MODEL_MODES}\n onChange={(mode) => onChange(withModelMode(value, mode))}\n className=\"w-fit\"\n />\n {header}\n\n <Block title=\"Runtime\">\n <RuntimeRows\n value={value}\n onChange={onChange}\n models={models}\n families={families}\n reasoningEfforts={reasoningEfforts}\n effectiveRuntime={runRuntime}\n actions={barActions}\n />\n <RecentRuntimes\n runtimes={recentRuntimes}\n models={models}\n families={families}\n onSelect={(runtime) => onChange(withRecentRuntime(value, runtime))}\n />\n {children}\n </Block>\n\n {specTabs ? (\n <SpecRuntimeEditor\n {...specEditorProps}\n tabs={[\n {\n id: \"prompt\",\n label: promptLabel,\n content: (\n <div className=\"grid grid-cols-1 gap-density-4\">\n {promptBlocks}\n </div>\n ),\n },\n ...specTabs,\n ]}\n showHeader={false}\n hostFields={HOST_FIELDS[modelMode]}\n promptVariant=\"system\"\n />\n ) : (\n promptBlocks\n )}\n\n {footer}\n\n {presetMenu.dialogs}\n\n {!specTabs && (\n <Modal\n open={specOpen}\n onClose={() => setSpecOpen(false)}\n title={specModalTitle}\n size=\"full\"\n closeOnEsc\n className=\"h-[95vh]\"\n >\n <SpecRuntimeEditor\n {...specEditorProps}\n {...(specSections ? { sections: specSections } : {})}\n onSave={() => setSpecOpen(false)}\n onCancel={() => setSpecOpen(false)}\n saveLabel=\"Done\"\n footerStatus={labelForMode(spec.mode, families)}\n />\n </Modal>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|