@flanksource/clicky-ui 0.3.29 → 0.3.31
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 +48 -3
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +46 -1
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.cjs +110 -262
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts +3 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +105 -257
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentCardParts.cjs +95 -0
- package/dist/comments/CommentCardParts.cjs.map +1 -0
- package/dist/comments/CommentCardParts.d.ts +17 -0
- package/dist/comments/CommentCardParts.d.ts.map +1 -0
- package/dist/comments/CommentCardParts.js +95 -0
- package/dist/comments/CommentCardParts.js.map +1 -0
- package/dist/comments/CommentSidePanel.cjs +14 -7
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.d.ts +3 -1
- package/dist/comments/CommentSidePanel.d.ts.map +1 -1
- package/dist/comments/CommentSidePanel.js +14 -7
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/CommentThread.cjs +2 -0
- package/dist/comments/CommentThread.cjs.map +1 -1
- package/dist/comments/CommentThread.d.ts +2 -1
- package/dist/comments/CommentThread.d.ts.map +1 -1
- package/dist/comments/CommentThread.js +2 -0
- package/dist/comments/CommentThread.js.map +1 -1
- package/dist/comments/CommentThreadList.cjs +50 -34
- package/dist/comments/CommentThreadList.cjs.map +1 -1
- package/dist/comments/CommentThreadList.d.ts +3 -1
- package/dist/comments/CommentThreadList.d.ts.map +1 -1
- package/dist/comments/CommentThreadList.js +50 -34
- package/dist/comments/CommentThreadList.js.map +1 -1
- package/dist/components/ComboboxMenu.cjs +4 -1
- package/dist/components/ComboboxMenu.cjs.map +1 -1
- package/dist/components/ComboboxMenu.d.ts.map +1 -1
- package/dist/components/ComboboxMenu.js +5 -2
- package/dist/components/ComboboxMenu.js.map +1 -1
- package/dist/components/ComboboxTags.cjs +5 -1
- package/dist/components/ComboboxTags.cjs.map +1 -1
- package/dist/components/ComboboxTags.d.ts.map +1 -1
- package/dist/components/ComboboxTags.js +6 -2
- package/dist/components/ComboboxTags.js.map +1 -1
- package/dist/components/ConnectionLoggingPolicy.cjs +24 -35
- package/dist/components/ConnectionLoggingPolicy.cjs.map +1 -1
- package/dist/components/ConnectionLoggingPolicy.d.ts.map +1 -1
- package/dist/components/ConnectionLoggingPolicy.js +24 -35
- package/dist/components/ConnectionLoggingPolicy.js.map +1 -1
- package/dist/components/DateField.d.ts +1 -1
- package/dist/components/DatePicker.d.ts +1 -1
- package/dist/components/DateTimePicker.d.ts +1 -1
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts +7 -0
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/filter-bar-multi.cjs +10 -1
- package/dist/components/filter-bar-multi.cjs.map +1 -1
- package/dist/components/filter-bar-multi.d.ts.map +1 -1
- package/dist/components/filter-bar-multi.js +11 -2
- package/dist/components/filter-bar-multi.js.map +1 -1
- package/dist/components/mdx-editor-callout-model.d.ts +1 -1
- package/dist/data/MarkdownEditor.model.d.ts +1 -1
- package/dist/data/ai/ChatWindow.catalogs.cjs +11 -5
- package/dist/data/ai/ChatWindow.catalogs.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.catalogs.d.ts +2 -1
- package/dist/data/ai/ChatWindow.catalogs.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.catalogs.js +11 -5
- package/dist/data/ai/ChatWindow.catalogs.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +1 -0
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +1 -0
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/VariablesField.cjs +79 -0
- package/dist/data/ai/PromptRunEditor/VariablesField.cjs.map +1 -0
- package/dist/data/ai/PromptRunEditor/VariablesField.d.ts +8 -0
- package/dist/data/ai/PromptRunEditor/VariablesField.d.ts.map +1 -0
- package/dist/data/ai/PromptRunEditor/VariablesField.js +79 -0
- package/dist/data/ai/PromptRunEditor/VariablesField.js.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +61 -69
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +11 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +61 -69
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.d.ts +2 -0
- package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +23 -8
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +8 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +23 -8
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +9 -1
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +9 -1
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +4 -3
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +2 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs +2 -2
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs +24 -2
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js +25 -3
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +4 -3
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +2 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +4 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +4 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +4 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/index.d.ts +3 -2
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-profile.cjs.map +1 -1
- package/dist/data/ai/runtime-profile.d.ts +9 -7
- package/dist/data/ai/runtime-profile.d.ts.map +1 -1
- package/dist/data/ai/runtime-profile.js.map +1 -1
- package/dist/data/ai/runtime-profiles/OrderedPresetSelect.cjs +111 -0
- package/dist/data/ai/runtime-profiles/OrderedPresetSelect.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/OrderedPresetSelect.d.ts +7 -0
- package/dist/data/ai/runtime-profiles/OrderedPresetSelect.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/OrderedPresetSelect.js +111 -0
- package/dist/data/ai/runtime-profiles/OrderedPresetSelect.js.map +1 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs +313 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts +8 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js +313 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.js.map +1 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.cjs +98 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.d.ts +11 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.js +98 -0
- package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.js.map +1 -0
- package/dist/data/ai/runtime-profiles/PresetSpecEditor.cjs +35 -0
- package/dist/data/ai/runtime-profiles/PresetSpecEditor.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/PresetSpecEditor.d.ts +11 -0
- package/dist/data/ai/runtime-profiles/PresetSpecEditor.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/PresetSpecEditor.js +35 -0
- package/dist/data/ai/runtime-profiles/PresetSpecEditor.js.map +1 -0
- package/dist/data/ai/runtime-profiles/PresetWorkspace.cjs +179 -0
- package/dist/data/ai/runtime-profiles/PresetWorkspace.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/PresetWorkspace.d.ts +22 -0
- package/dist/data/ai/runtime-profiles/PresetWorkspace.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/PresetWorkspace.js +179 -0
- package/dist/data/ai/runtime-profiles/PresetWorkspace.js.map +1 -0
- package/dist/data/ai/runtime-profiles/ProfileSpecEditor.cjs +57 -0
- package/dist/data/ai/runtime-profiles/ProfileSpecEditor.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/ProfileSpecEditor.d.ts +18 -0
- package/dist/data/ai/runtime-profiles/ProfileSpecEditor.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/ProfileSpecEditor.js +57 -0
- package/dist/data/ai/runtime-profiles/ProfileSpecEditor.js.map +1 -0
- package/dist/data/ai/runtime-profiles/ProfileWorkspace.cjs +135 -0
- package/dist/data/ai/runtime-profiles/ProfileWorkspace.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/ProfileWorkspace.d.ts +23 -0
- package/dist/data/ai/runtime-profiles/ProfileWorkspace.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/ProfileWorkspace.js +135 -0
- package/dist/data/ai/runtime-profiles/ProfileWorkspace.js.map +1 -0
- package/dist/data/ai/runtime-profiles/ResolutionInspector.cjs +85 -0
- package/dist/data/ai/runtime-profiles/ResolutionInspector.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/ResolutionInspector.d.ts +7 -0
- package/dist/data/ai/runtime-profiles/ResolutionInspector.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/ResolutionInspector.js +85 -0
- package/dist/data/ai/runtime-profiles/ResolutionInspector.js.map +1 -0
- package/dist/data/ai/runtime-profiles/ResolutionTrace.cjs +42 -0
- package/dist/data/ai/runtime-profiles/ResolutionTrace.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/ResolutionTrace.d.ts +6 -0
- package/dist/data/ai/runtime-profiles/ResolutionTrace.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/ResolutionTrace.js +42 -0
- package/dist/data/ai/runtime-profiles/ResolutionTrace.js.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeLibraryList.cjs +93 -0
- package/dist/data/ai/runtime-profiles/RuntimeLibraryList.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeLibraryList.d.ts +18 -0
- package/dist/data/ai/runtime-profiles/RuntimeLibraryList.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeLibraryList.js +93 -0
- package/dist/data/ai/runtime-profiles/RuntimeLibraryList.js.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.cjs +44 -0
- package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.d.ts +6 -0
- package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.js +44 -0
- package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.js.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.cjs +198 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.d.ts +12 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.js +198 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.js.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.cjs +97 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.d.ts +26 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.js +97 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.js.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.cjs +143 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.d.ts +25 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.js +143 -0
- package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.js.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeStatusNotice.cjs +41 -0
- package/dist/data/ai/runtime-profiles/RuntimeStatusNotice.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeStatusNotice.d.ts +8 -0
- package/dist/data/ai/runtime-profiles/RuntimeStatusNotice.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/RuntimeStatusNotice.js +41 -0
- package/dist/data/ai/runtime-profiles/RuntimeStatusNotice.js.map +1 -0
- package/dist/data/ai/runtime-profiles/index.d.ts +20 -0
- package/dist/data/ai/runtime-profiles/index.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/types.d.ts +50 -0
- package/dist/data/ai/runtime-profiles/types.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/use-permission-catalog.cjs +37 -0
- package/dist/data/ai/runtime-profiles/use-permission-catalog.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/use-permission-catalog.d.ts +5 -0
- package/dist/data/ai/runtime-profiles/use-permission-catalog.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/use-permission-catalog.js +37 -0
- package/dist/data/ai/runtime-profiles/use-permission-catalog.js.map +1 -0
- package/dist/data/ai/runtime-profiles/use-resolution.cjs +43 -0
- package/dist/data/ai/runtime-profiles/use-resolution.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/use-resolution.d.ts +4 -0
- package/dist/data/ai/runtime-profiles/use-resolution.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/use-resolution.js +43 -0
- package/dist/data/ai/runtime-profiles/use-resolution.js.map +1 -0
- package/dist/data/ai/runtime-profiles/use-runtime-families.cjs +38 -0
- package/dist/data/ai/runtime-profiles/use-runtime-families.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/use-runtime-families.d.ts +3 -0
- package/dist/data/ai/runtime-profiles/use-runtime-families.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/use-runtime-families.js +38 -0
- package/dist/data/ai/runtime-profiles/use-runtime-families.js.map +1 -0
- package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.cjs +107 -0
- package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.cjs.map +1 -0
- package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.d.ts +35 -0
- package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.d.ts.map +1 -0
- package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.js +107 -0
- package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.js.map +1 -0
- package/dist/data/ai/use-session-scroll.cjs.map +1 -1
- package/dist/data/ai/use-session-scroll.d.ts +2 -2
- package/dist/data/ai/use-session-scroll.d.ts.map +1 -1
- package/dist/data/ai/use-session-scroll.js.map +1 -1
- package/dist/data/badge-variants.d.ts +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +3 -2
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +3 -2
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/runtime-field-support.cjs +3 -3
- package/dist/data/runtime/runtime-field-support.cjs.map +1 -1
- package/dist/data/runtime/runtime-field-support.js +1 -1
- package/dist/data/runtime/runtime-mode.cjs +14 -47
- package/dist/data/runtime/runtime-mode.cjs.map +1 -1
- package/dist/data/runtime/runtime-mode.d.ts +5 -7
- package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
- package/dist/data/runtime/runtime-mode.js +7 -39
- package/dist/data/runtime/runtime-mode.js.map +1 -1
- package/dist/data/test-runner/TestRunner.cjs +6 -4
- package/dist/data/test-runner/TestRunner.cjs.map +1 -1
- package/dist/data/test-runner/TestRunner.d.ts +10 -1
- package/dist/data/test-runner/TestRunner.d.ts.map +1 -1
- package/dist/data/test-runner/TestRunner.js +6 -4
- package/dist/data/test-runner/TestRunner.js.map +1 -1
- package/dist/data/verification/VerificationResults.cjs +99 -0
- package/dist/data/verification/VerificationResults.cjs.map +1 -0
- package/dist/data/verification/VerificationResults.d.ts +27 -0
- package/dist/data/verification/VerificationResults.d.ts.map +1 -0
- package/dist/data/verification/VerificationResults.js +99 -0
- package/dist/data/verification/VerificationResults.js.map +1 -0
- package/dist/data/verification/adapterViews.cjs +116 -0
- package/dist/data/verification/adapterViews.cjs.map +1 -0
- package/dist/data/verification/adapterViews.d.ts +13 -0
- package/dist/data/verification/adapterViews.d.ts.map +1 -0
- package/dist/data/verification/adapterViews.js +116 -0
- package/dist/data/verification/adapterViews.js.map +1 -0
- package/dist/data/verification/adapters.cjs +26 -0
- package/dist/data/verification/adapters.cjs.map +1 -0
- package/dist/data/verification/adapters.d.ts +6 -0
- package/dist/data/verification/adapters.d.ts.map +1 -0
- package/dist/data/verification/adapters.js +26 -0
- package/dist/data/verification/adapters.js.map +1 -0
- package/dist/data/verification/index.d.ts +5 -0
- package/dist/data/verification/index.d.ts.map +1 -0
- package/dist/data/verification/verify-report.cjs +58 -0
- package/dist/data/verification/verify-report.cjs.map +1 -0
- package/dist/data/verification/verify-report.d.ts +96 -0
- package/dist/data/verification/verify-report.d.ts.map +1 -0
- package/dist/data/verification/verify-report.js +58 -0
- package/dist/data/verification/verify-report.js.map +1 -0
- package/dist/data/verification/verifyReportTests.cjs +83 -0
- package/dist/data/verification/verifyReportTests.cjs.map +1 -0
- package/dist/data/verification/verifyReportTests.d.ts +13 -0
- package/dist/data/verification/verifyReportTests.d.ts.map +1 -0
- package/dist/data/verification/verifyReportTests.js +83 -0
- package/dist/data/verification/verifyReportTests.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +10 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +1 -0
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +10 -0
- package/dist/data.js.map +1 -1
- package/dist/index.cjs +62 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/permission-strategies.cjs +155 -0
- package/dist/lib/permission-strategies.cjs.map +1 -0
- package/dist/lib/permission-strategies.d.ts +35 -0
- package/dist/lib/permission-strategies.d.ts.map +1 -0
- package/dist/lib/permission-strategies.js +155 -0
- package/dist/lib/permission-strategies.js.map +1 -0
- package/dist/lib/runtime-family.cjs +51 -0
- package/dist/lib/runtime-family.cjs.map +1 -0
- package/dist/lib/runtime-family.d.ts +25 -0
- package/dist/lib/runtime-family.d.ts.map +1 -0
- package/dist/lib/runtime-family.js +51 -0
- package/dist/lib/runtime-family.js.map +1 -0
- package/dist/lib/runtime-profile-model.cjs +129 -0
- package/dist/lib/runtime-profile-model.cjs.map +1 -0
- package/dist/lib/runtime-profile-model.d.ts +30 -0
- package/dist/lib/runtime-profile-model.d.ts.map +1 -0
- package/dist/lib/runtime-profile-model.js +129 -0
- package/dist/lib/runtime-profile-model.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utils.cjs +52 -0
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +5 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +53 -1
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/ModelSection.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAelD,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"ModelSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/ModelSection.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAelD,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAcpC,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,aAAa,EACb,cAAc,GACf,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC,+BAsFA;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,MAAW,EACX,QAAQ,EACR,QAAqC,GACtC,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC5C,+BA+BA"}
|
|
@@ -8,7 +8,8 @@ import { cn } from "../../../lib/utils.js";
|
|
|
8
8
|
import { ProviderStatusPanel } from "../../runtime/ProviderStatusPanel.js";
|
|
9
9
|
import { RuntimeBar } from "../../runtime/RuntimeBar.js";
|
|
10
10
|
import { SUPPORT_ALL_RUNTIME_FIELDS, runtimeFieldSupport } from "../../runtime/runtime-field-support.js";
|
|
11
|
-
import { SPEC_RUNTIME_FAMILIES,
|
|
11
|
+
import { SPEC_RUNTIME_FAMILIES, firstMode, runtimeModelError, runtimeModeError } from "../../runtime/runtime-mode.js";
|
|
12
|
+
import { familyForModel, runtimeModeFromModel, modeOptionFor } from "../../../lib/runtime-family.js";
|
|
12
13
|
import { NumberField, SpecField, SpecInput, CheckboxField } from "./fields.js";
|
|
13
14
|
import { withBudgetValue, withOptionalRoot, withRoot } from "./update.js";
|
|
14
15
|
import { UiCurrencyDollar } from "../../../icons/components/UiCurrencyDollar.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/ModelSection.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n effortLevelColor,\n effortLevelIcon,\n effortLevelLabel,\n} from \"../../chat/effort-icons\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { providerIcon, providerIconColor } from \"../../chat/provider-icons\";\nimport { Icon } from \"../../Icon\";\nimport { IconButton } from \"../../../components\";\nimport { cn } from \"../../../lib/utils\";\nimport {\n UiAdd,\n UiCoins,\n UiCurrencyDollar,\n UiFingerprint,\n UiRepeat,\n UiSparkles,\n UiTimer,\n UiTrash,\n} from \"../../../icons\";\nimport type {\n AISpecRuntimeModelFallback,\n AISpecRuntimeValue,\n} from \"../SpecRuntimeEditor.model\";\nimport { ProviderStatusPanel } from \"../../runtime/ProviderStatusPanel\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n SUPPORT_ALL_RUNTIME_FIELDS,\n runtimeFieldSupport,\n type RuntimeFieldSupport,\n} from \"../../runtime/runtime-field-support\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n familyForModel,\n firstMode,\n modeOptionFor,\n runtimeModeError,\n runtimeModeFromModel,\n runtimeModelError,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport { CheckboxField, NumberField, SpecField, SpecInput } from \"./fields\";\nimport { withBudgetValue, withOptionalRoot, withRoot } from \"./update\";\n\ntype FallbackDraftPatch = {\n model?: string | undefined;\n id?: string | undefined;\n mode?: string | undefined;\n temperature?: number | undefined;\n effort?: string | undefined;\n noCache?: boolean | undefined;\n};\n\nexport function ModelSection({\n value,\n onChange,\n models,\n families,\n effectiveMode,\n effectiveModel,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models: ChatModel[];\n families?: SpecRuntimeFamily[] | undefined;\n effectiveMode?: string | undefined;\n effectiveModel?: string | undefined;\n}) {\n const runtimeFamilies = families?.length ? families : SPEC_RUNTIME_FAMILIES;\n const selectedFamily = familyForModel(\n runtimeFamilies,\n models,\n value.model || effectiveModel,\n );\n const specMode =\n runtimeModeFromModel(value.model) ||\n value.mode?.trim() ||\n effectiveMode?.trim() ||\n firstMode(runtimeFamilies[0] ?? SPEC_RUNTIME_FAMILIES[0]!).id;\n const supports =\n (runtimeModelError(value.model || effectiveModel) ??\n runtimeModeError(runtimeFamilies, specMode, selectedFamily?.id))\n ? SUPPORT_ALL_RUNTIME_FIELDS\n : runtimeFieldSupport(runtimeFamilies, specMode, selectedFamily?.id);\n // The bar owns family, mode, model and effort — including the free-text model\n // entry for families the catalog does not describe.\n return (\n <div className=\"grid gap-density-2\">\n <RuntimeBar\n value={value}\n onChange={onChange}\n models={models}\n effectiveMode={effectiveMode}\n effectiveModel={effectiveModel}\n showModel={supports(\"model\")}\n showEffort={supports(\"effort\")}\n families={runtimeFamilies}\n />\n <div className=\"grid grid-cols-2 gap-density-2 md:grid-cols-4\">\n {supports(\"budget.cost\") && (\n <NumberField\n label=\"Max cost (USD)\"\n value={value.budget?.cost}\n onChange={(cost) => onChange(withBudgetValue(value, \"cost\", cost))}\n icon={UiCurrencyDollar}\n min={0}\n step={0.01}\n />\n )}\n <NumberField\n label=\"Max tokens\"\n value={value.budget?.maxTokens}\n onChange={(maxTokens) =>\n onChange(withBudgetValue(value, \"maxTokens\", maxTokens))\n }\n icon={UiCoins}\n min={0}\n step={1}\n integer\n />\n {supports(\"budget.maxTurns\") && (\n <NumberField\n label=\"Max turns\"\n value={value.budget?.maxTurns}\n onChange={(maxTurns) =>\n onChange(withBudgetValue(value, \"maxTurns\", maxTurns))\n }\n icon={UiRepeat}\n min={0}\n max={100}\n step={1}\n integer\n />\n )}\n <SpecField label=\"Timeout\">\n <SpecInput\n value={value.budget?.timeout}\n onChange={(timeout) =>\n onChange(withBudgetValue(value, \"timeout\", timeout))\n }\n placeholder=\"30m\"\n icon={UiTimer}\n mono\n />\n </SpecField>\n </div>\n <ProviderStatusPanel\n models={models}\n families={runtimeFamilies}\n defaultCollapsed\n />\n </div>\n );\n}\n\nexport function ModelAdvanced({\n value,\n onChange,\n models = [],\n families,\n supports = SUPPORT_ALL_RUNTIME_FIELDS,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n supports?: RuntimeFieldSupport | undefined;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n <FallbackModelsEditor\n value={value}\n onChange={onChange}\n models={models}\n {...(families ? { families } : {})}\n />\n {supports(\"sessionId\") && (\n <SpecField label=\"Session ID\">\n <SpecInput\n value={value.sessionId}\n onChange={(sessionId) =>\n onChange(withOptionalRoot(value, \"sessionId\", sessionId))\n }\n placeholder=\"session UUID\"\n icon={UiFingerprint}\n mono\n />\n </SpecField>\n )}\n {supports(\"noCache\") && (\n <CheckboxField\n label=\"Disable prompt caching\"\n checked={value.noCache}\n onChange={(noCache) => onChange(withRoot(value, { noCache }))}\n />\n )}\n </div>\n );\n}\n\nfunction FallbackModelsEditor({\n value,\n onChange,\n models,\n families = SPEC_RUNTIME_FAMILIES,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models: ChatModel[];\n families?: SpecRuntimeFamily[] | undefined;\n}) {\n const fallbacks = value.fallbacks ?? [];\n const [expandedIndex, setExpandedIndex] = useState<number | null>(null);\n\n const setFallbacks = (nextFallbacks: AISpecRuntimeModelFallback[]) => {\n onChange(withRoot(value, { fallbacks: nextFallbacks }));\n };\n\n const removeFallback = (index: number) => {\n setFallbacks(fallbacks.filter((_, rowIndex) => rowIndex !== index));\n setExpandedIndex((current) => {\n if (current == null) return null;\n if (current === index) return null;\n return current > index ? current - 1 : current;\n });\n };\n\n const addFallback = () => {\n const nextFallbacks = [...fallbacks, newFallbackDraft(value, families)];\n setFallbacks(nextFallbacks);\n setExpandedIndex(nextFallbacks.length - 1);\n };\n\n const updateFallback = (index: number, nextFallback: FallbackDraftPatch) => {\n setFallbacks(\n fallbacks.map((fallback, rowIndex) =>\n rowIndex === index ? compactEditableFallback(nextFallback) : fallback,\n ),\n );\n };\n\n const toggleFallback = (index: number) => {\n setExpandedIndex((current) => (current === index ? null : index));\n };\n\n return (\n <div className=\"space-y-density-2\">\n <div className=\"flex items-center justify-between gap-density-2\">\n <div className=\"inline-flex min-w-0 items-center gap-1.5 text-xs font-medium text-muted-foreground\">\n <Icon icon={UiRepeat} className=\"size-3.5 shrink-0\" />\n <span>Fallback models</span>\n </div>\n <button\n type=\"button\"\n onClick={addFallback}\n className=\"inline-flex items-center gap-1 rounded-md border border-border bg-background px-density-2 py-density-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={UiAdd} className=\"size-3.5\" />\n Add\n </button>\n </div>\n {fallbacks.length > 0 && (\n <div className=\"overflow-hidden rounded-md border border-border\">\n <div className=\"divide-y divide-border\">\n {fallbacks.map((fallback, index) => (\n <FallbackModelRow\n key={`${fallback.model ?? \"fallback\"}-${index}`}\n fallback={fallback}\n models={models}\n families={families}\n expanded={expandedIndex === index}\n editorId={`spec-runtime-fallback-${index}-picker`}\n onToggle={() => toggleFallback(index)}\n onChange={(nextFallback) => updateFallback(index, nextFallback)}\n onRemove={() => removeFallback(index)}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction FallbackModelRow({\n fallback,\n models,\n families,\n expanded,\n editorId,\n onToggle,\n onChange,\n onRemove,\n}: {\n fallback: AISpecRuntimeModelFallback;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n expanded: boolean;\n editorId: string;\n onToggle: () => void;\n onChange: (value: AISpecRuntimeModelFallback) => void;\n onRemove: () => void;\n}) {\n const meta = fallbackModelMeta(fallback, models);\n const Glyph = meta.provider ? providerIcon(meta.provider) : undefined;\n const label = meta.label || \"Select model\";\n // The collapsed row is the bar in miniature: brand mark, runtime mode, model,\n // effort — each carrying the same tone it has inside the expanded editor.\n const mode = modeOptionFor(families, fallback.mode);\n const effortGlyph = fallback.effort\n ? effortLevelIcon(fallback.effort)\n : undefined;\n return (\n <div>\n <div className=\"grid min-h-9 grid-cols-[minmax(0,1fr)_auto] items-center gap-density-1 px-density-1 py-density-1\">\n <button\n type=\"button\"\n aria-expanded={expanded}\n aria-controls={editorId}\n aria-label={`Edit fallback ${label}`}\n onClick={onToggle}\n className=\"grid min-w-0 grid-cols-[auto_auto_minmax(0,1fr)_auto] items-center gap-density-2 rounded-md px-density-1 py-density-1 text-left hover:bg-muted\"\n >\n {Glyph ? (\n <Glyph\n className={cn(\n \"size-4 shrink-0\",\n meta.provider ? providerIconColor(meta.provider) : undefined,\n )}\n />\n ) : (\n <Icon\n icon={UiSparkles}\n className=\"size-4 shrink-0 text-muted-foreground/70\"\n />\n )}\n {mode?.icon ? (\n <Icon\n icon={mode.icon}\n className=\"size-4 shrink-0 text-muted-foreground\"\n title={mode.title ?? mode.label}\n />\n ) : (\n // Held open so rows with and without a known mode still align.\n <span aria-hidden=\"true\" className=\"size-4\" />\n )}\n <span\n className=\"min-w-0 truncate font-mono text-xs text-foreground\"\n title={label}\n >\n {label}\n </span>\n {fallback.effort ? (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-semibold uppercase leading-none text-muted-foreground\">\n {effortGlyph && (\n <Icon\n icon={effortGlyph}\n className={cn(\"size-3\", effortLevelColor(fallback.effort))}\n />\n )}\n {effortLevelLabel(fallback.effort)}\n </span>\n ) : (\n <span aria-hidden=\"true\" />\n )}\n </button>\n <IconButton\n icon={UiTrash}\n label={`Remove ${label}`}\n onClick={onRemove}\n className=\"size-6\"\n iconClassName=\"size-4\"\n />\n </div>\n {expanded && (\n <div className=\"border-t border-border p-density-2\">\n <FallbackModelPicker\n id={editorId}\n value={fallback}\n onChange={onChange}\n models={models}\n families={families}\n />\n </div>\n )}\n </div>\n );\n}\n\nfunction FallbackModelPicker({\n id,\n value,\n onChange,\n models,\n families,\n}: {\n id: string;\n value: AISpecRuntimeModelFallback;\n onChange: (value: AISpecRuntimeModelFallback) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n}) {\n return (\n <div\n id={id}\n role=\"group\"\n aria-label=\"Fallback model picker\"\n className=\"rounded-md border border-dashed border-border bg-muted/20 p-density-2\"\n >\n <RuntimeBar\n value={value}\n onChange={(next) => onChange(compactEditableFallback(next))}\n models={models}\n families={families}\n ariaLabel=\"Fallback runtime\"\n />\n </div>\n );\n}\n\nfunction newFallbackDraft(\n value: AISpecRuntimeValue,\n families: SpecRuntimeFamily[],\n): AISpecRuntimeModelFallback {\n const fallback: AISpecRuntimeModelFallback = {};\n const mode = value.mode || defaultFallbackMode(families);\n if (mode) fallback.mode = mode;\n if (value.effort) fallback.effort = value.effort;\n if (value.temperature != null && Number.isFinite(value.temperature)) {\n fallback.temperature = value.temperature;\n }\n return fallback;\n}\n\nfunction defaultFallbackMode(families: SpecRuntimeFamily[]): string {\n const family = families[0] ?? SPEC_RUNTIME_FAMILIES[0];\n return family ? firstMode(family).id : \"\";\n}\n\nfunction compactEditableFallback(\n value: FallbackDraftPatch,\n): AISpecRuntimeModelFallback {\n const next: AISpecRuntimeModelFallback = {};\n const model = cleanString(value.model);\n if (model) next.model = model;\n const id = cleanString(value.id);\n if (id) next.id = id;\n const mode = cleanString(value.mode);\n if (mode) next.mode = mode;\n if (value.temperature != null && Number.isFinite(value.temperature)) {\n next.temperature = value.temperature;\n }\n const effort = cleanString(value.effort);\n if (effort) next.effort = effort;\n if (value.noCache) next.noCache = true;\n return next;\n}\n\nfunction fallbackModelMeta(\n fallback: AISpecRuntimeModelFallback,\n models: ChatModel[],\n): { label: string; provider?: string | undefined } {\n const modelId = fallback.model ?? \"\";\n const match = models.find(\n (model) => model.id === modelId || model.label === modelId,\n );\n if (match) return { label: match.label, provider: match.provider };\n return {\n label: modelId || fallback.id || \"\",\n provider: inferProvider(fallback),\n };\n}\n\nfunction inferProvider(\n fallback: AISpecRuntimeModelFallback,\n): string | undefined {\n const text = `${fallback.mode ?? \"\"} ${fallback.model ?? \"\"}`.toLowerCase();\n if (text.includes(\"anthropic\") || text.includes(\"claude\")) return \"anthropic\";\n if (text.includes(\"google\") || text.includes(\"gemini\")) return \"googleai\";\n if (\n text.includes(\"openai\") ||\n text.includes(\"gpt\") ||\n text.includes(\"codex\")\n ) {\n return \"openai\";\n }\n return undefined;\n}\n\nfunction cleanString(value: string | undefined): string {\n return value?.trim() ?? \"\";\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAsDO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;;AACD,QAAM,mBAAkB,qCAAU,UAAS,WAAW;AACtD,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA,MAAM,SAAS;AAAA,EAAA;AAEjB,QAAM,WACJ,qBAAqB,MAAM,KAAK,OAChC,WAAM,SAAN,mBAAY,YACZ,+CAAe,WACf,UAAU,gBAAgB,CAAC,KAAK,sBAAsB,CAAC,CAAE,EAAE;AAC7D,QAAM,WACH,kBAAkB,MAAM,SAAS,cAAc,KAChD,iBAAiB,iBAAiB,UAAU,iDAAgB,EAAE,IAC1D,6BACA,oBAAoB,iBAAiB,UAAU,iDAAgB,EAAE;AAGvE,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAS,OAAO;AAAA,QAC3B,YAAY,SAAS,QAAQ;AAAA,QAC7B,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEZ,qBAAC,OAAA,EAAI,WAAU,iDACZ,UAAA;AAAA,MAAA,SAAS,aAAa,KACrB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,SAAS,SAAS,gBAAgB,OAAO,QAAQ,IAAI,CAAC;AAAA,UACjE,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,MAGV;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,cACT,SAAS,gBAAgB,OAAO,aAAa,SAAS,CAAC;AAAA,UAEzD,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA;AAAA,MAER,SAAS,iBAAiB,KACzB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,aACT,SAAS,gBAAgB,OAAO,YAAY,QAAQ,CAAC;AAAA,UAEvD,MAAM;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA;AAAA,MAGX,oBAAC,WAAA,EAAU,OAAM,WACf,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,YACT,SAAS,gBAAgB,OAAO,WAAW,OAAO,CAAC;AAAA,UAErD,aAAY;AAAA,UACZ,MAAM;AAAA,UACN,MAAI;AAAA,QAAA;AAAA,MAAA,EACN,CACF;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,UAAU;AAAA,QACV,kBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EAClB,GACF;AAEJ;AAEO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AAAA,EACT;AAAA,EACA,WAAW;AACb,GAMG;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACC,GAAI,WAAW,EAAE,aAAa,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,IAEjC,SAAS,WAAW,KACnB,oBAAC,WAAA,EAAU,OAAM,cACf,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO,MAAM;AAAA,QACb,UAAU,CAAC,cACT,SAAS,iBAAiB,OAAO,aAAa,SAAS,CAAC;AAAA,QAE1D,aAAY;AAAA,QACZ,MAAM;AAAA,QACN,MAAI;AAAA,MAAA;AAAA,IAAA,GAER;AAAA,IAED,SAAS,SAAS,KACjB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,SAAS,MAAM;AAAA,QACf,UAAU,CAAC,YAAY,SAAS,SAAS,OAAO,EAAE,SAAS,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9D,GAEJ;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAKG;AACD,QAAM,YAAY,MAAM,aAAa,CAAA;AACrC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AAEtE,QAAM,eAAe,CAAC,kBAAgD;AACpE,aAAS,SAAS,OAAO,EAAE,WAAW,cAAA,CAAe,CAAC;AAAA,EACxD;AAEA,QAAM,iBAAiB,CAAC,UAAkB;AACxC,iBAAa,UAAU,OAAO,CAAC,GAAG,aAAa,aAAa,KAAK,CAAC;AAClE,qBAAiB,CAAC,YAAY;AAC5B,UAAI,WAAW,KAAM,QAAO;AAC5B,UAAI,YAAY,MAAO,QAAO;AAC9B,aAAO,UAAU,QAAQ,UAAU,IAAI;AAAA,IACzC,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM,gBAAgB,CAAC,GAAG,WAAW,iBAAiB,OAAO,QAAQ,CAAC;AACtE,iBAAa,aAAa;AAC1B,qBAAiB,cAAc,SAAS,CAAC;AAAA,EAC3C;AAEA,QAAM,iBAAiB,CAAC,OAAe,iBAAqC;AAC1E;AAAA,MACE,UAAU;AAAA,QAAI,CAAC,UAAU,aACvB,aAAa,QAAQ,wBAAwB,YAAY,IAAI;AAAA,MAAA;AAAA,IAC/D;AAAA,EAEJ;AAEA,QAAM,iBAAiB,CAAC,UAAkB;AACxC,qBAAiB,CAAC,YAAa,YAAY,QAAQ,OAAO,KAAM;AAAA,EAClE;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,sFACb,UAAA;AAAA,QAAA,oBAAC,MAAA,EAAK,MAAM,UAAU,WAAU,qBAAoB;AAAA,QACpD,oBAAC,UAAK,UAAA,kBAAA,CAAe;AAAA,MAAA,GACvB;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,YAAW;AAAA,YAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAE5C,GACF;AAAA,IACC,UAAU,SAAS,KAClB,oBAAC,SAAI,WAAU,mDACb,UAAA,oBAAC,OAAA,EAAI,WAAU,0BACZ,UAAA,UAAU,IAAI,CAAC,UAAU,UACxB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,kBAAkB;AAAA,QAC5B,UAAU,yBAAyB,KAAK;AAAA,QACxC,UAAU,MAAM,eAAe,KAAK;AAAA,QACpC,UAAU,CAAC,iBAAiB,eAAe,OAAO,YAAY;AAAA,QAC9D,UAAU,MAAM,eAAe,KAAK;AAAA,MAAA;AAAA,MAR/B,GAAG,SAAS,SAAS,UAAU,IAAI,KAAK;AAAA,IAAA,CAUhD,GACH,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AACD,QAAM,OAAO,kBAAkB,UAAU,MAAM;AAC/C,QAAM,QAAQ,KAAK,WAAW,aAAa,KAAK,QAAQ,IAAI;AAC5D,QAAM,QAAQ,KAAK,SAAS;AAG5B,QAAM,OAAO,cAAc,UAAU,SAAS,IAAI;AAClD,QAAM,cAAc,SAAS,SACzB,gBAAgB,SAAS,MAAM,IAC/B;AACJ,8BACG,OAAA,EACC,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,oGACb,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,iBAAe;AAAA,UACf,iBAAe;AAAA,UACf,cAAY,iBAAiB,KAAK;AAAA,UAClC,SAAS;AAAA,UACT,WAAU;AAAA,UAET,UAAA;AAAA,YAAA,QACC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,KAAK,WAAW,kBAAkB,KAAK,QAAQ,IAAI;AAAA,gBAAA;AAAA,cACrD;AAAA,YAAA,IAGF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,aAGb,6BAAM,QACL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBACV,OAAO,KAAK,SAAS,KAAK;AAAA,cAAA;AAAA,YAAA;AAAA;AAAA,cAI5B,oBAAC,QAAA,EAAK,eAAY,QAAO,WAAU,SAAA,CAAS;AAAA;AAAA,YAE9C;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO;AAAA,gBAEN,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,SAAS,SACR,qBAAC,QAAA,EAAK,WAAU,2IACb,UAAA;AAAA,cAAA,eACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAM;AAAA,kBACN,WAAW,GAAG,UAAU,iBAAiB,SAAS,MAAM,CAAC;AAAA,gBAAA;AAAA,cAAA;AAAA,cAG5D,iBAAiB,SAAS,MAAM;AAAA,YAAA,EAAA,CACnC,IAEA,oBAAC,QAAA,EAAK,eAAY,OAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAG7B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAO,UAAU,KAAK;AAAA,UACtB,SAAS;AAAA,UACT,WAAU;AAAA,UACV,eAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB,GACF;AAAA,IACC,YACC,oBAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA,EACF,CACF;AAAA,EAAA,GAEJ;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA,UAAU,CAAC,SAAS,SAAS,wBAAwB,IAAI,CAAC;AAAA,UAC1D;AAAA,UACA;AAAA,UACA,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ;AAAA,EAAA;AAGN;AAEA,SAAS,iBACP,OACA,UAC4B;AAC5B,QAAM,WAAuC,CAAA;AAC7C,QAAM,OAAO,MAAM,QAAQ,oBAAoB,QAAQ;AACvD,MAAI,eAAe,OAAO;AAC1B,MAAI,MAAM,OAAQ,UAAS,SAAS,MAAM;AAC1C,MAAI,MAAM,eAAe,QAAQ,OAAO,SAAS,MAAM,WAAW,GAAG;AACnE,aAAS,cAAc,MAAM;AAAA,EAC/B;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,UAAuC;AAClE,QAAM,SAAS,SAAS,CAAC,KAAK,sBAAsB,CAAC;AACrD,SAAO,SAAS,UAAU,MAAM,EAAE,KAAK;AACzC;AAEA,SAAS,wBACP,OAC4B;AAC5B,QAAM,OAAmC,CAAA;AACzC,QAAM,QAAQ,YAAY,MAAM,KAAK;AACrC,MAAI,YAAY,QAAQ;AACxB,QAAM,KAAK,YAAY,MAAM,EAAE;AAC/B,MAAI,SAAS,KAAK;AAClB,QAAM,OAAO,YAAY,MAAM,IAAI;AACnC,MAAI,WAAW,OAAO;AACtB,MAAI,MAAM,eAAe,QAAQ,OAAO,SAAS,MAAM,WAAW,GAAG;AACnE,SAAK,cAAc,MAAM;AAAA,EAC3B;AACA,QAAM,SAAS,YAAY,MAAM,MAAM;AACvC,MAAI,aAAa,SAAS;AAC1B,MAAI,MAAM,QAAS,MAAK,UAAU;AAClC,SAAO;AACT;AAEA,SAAS,kBACP,UACA,QACkD;AAClD,QAAM,UAAU,SAAS,SAAS;AAClC,QAAM,QAAQ,OAAO;AAAA,IACnB,CAAC,UAAU,MAAM,OAAO,WAAW,MAAM,UAAU;AAAA,EAAA;AAErD,MAAI,cAAc,EAAE,OAAO,MAAM,OAAO,UAAU,MAAM,SAAA;AACxD,SAAO;AAAA,IACL,OAAO,WAAW,SAAS,MAAM;AAAA,IACjC,UAAU,cAAc,QAAQ;AAAA,EAAA;AAEpC;AAEA,SAAS,cACP,UACoB;AACpB,QAAM,OAAO,GAAG,SAAS,QAAQ,EAAE,IAAI,SAAS,SAAS,EAAE,GAAG,YAAA;AAC9D,MAAI,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,QAAQ,EAAG,QAAO;AAClE,MAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ,EAAG,QAAO;AAC/D,MACE,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,OAAO,GACrB;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAmC;AACtD,UAAO,+BAAO,WAAU;AAC1B;"}
|
|
1
|
+
{"version":3,"file":"ModelSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/ModelSection.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n effortLevelColor,\n effortLevelIcon,\n effortLevelLabel,\n} from \"../../chat/effort-icons\";\nimport type { ChatModel } from \"../../chat/types\";\nimport { providerIcon, providerIconColor } from \"../../chat/provider-icons\";\nimport { Icon } from \"../../Icon\";\nimport { IconButton } from \"../../../components\";\nimport { cn } from \"../../../lib/utils\";\nimport {\n UiAdd,\n UiCoins,\n UiCurrencyDollar,\n UiFingerprint,\n UiRepeat,\n UiSparkles,\n UiTimer,\n UiTrash,\n} from \"../../../icons\";\nimport type {\n AISpecRuntimeModelFallback,\n AISpecRuntimeValue,\n} from \"../SpecRuntimeEditor.model\";\nimport { ProviderStatusPanel } from \"../../runtime/ProviderStatusPanel\";\nimport { RuntimeBar } from \"../../runtime/RuntimeBar\";\nimport {\n SUPPORT_ALL_RUNTIME_FIELDS,\n runtimeFieldSupport,\n type RuntimeFieldSupport,\n} from \"../../runtime/runtime-field-support\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n firstMode,\n modeOptionFor,\n runtimeModeError,\n runtimeModeFromModel,\n runtimeModelError,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport { familyForModel } from \"../../../lib/runtime-family\";\nimport { CheckboxField, NumberField, SpecField, SpecInput } from \"./fields\";\nimport { withBudgetValue, withOptionalRoot, withRoot } from \"./update\";\n\ntype FallbackDraftPatch = {\n model?: string | undefined;\n id?: string | undefined;\n mode?: string | undefined;\n temperature?: number | undefined;\n effort?: string | undefined;\n noCache?: boolean | undefined;\n};\n\nexport function ModelSection({\n value,\n onChange,\n models,\n families,\n effectiveMode,\n effectiveModel,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models: ChatModel[];\n families?: SpecRuntimeFamily[] | undefined;\n effectiveMode?: string | undefined;\n effectiveModel?: string | undefined;\n}) {\n const runtimeFamilies = families?.length ? families : SPEC_RUNTIME_FAMILIES;\n const selectedFamily = familyForModel(\n runtimeFamilies,\n models,\n value.model || effectiveModel,\n );\n const specMode =\n runtimeModeFromModel(value.model) ||\n value.mode?.trim() ||\n effectiveMode?.trim() ||\n firstMode(runtimeFamilies[0] ?? SPEC_RUNTIME_FAMILIES[0]!).id;\n const supports =\n (runtimeModelError(value.model || effectiveModel) ??\n runtimeModeError(runtimeFamilies, specMode, selectedFamily?.id))\n ? SUPPORT_ALL_RUNTIME_FIELDS\n : runtimeFieldSupport(runtimeFamilies, specMode, selectedFamily?.id);\n // The bar owns family, mode, model and effort — including the free-text model\n // entry for families the catalog does not describe.\n return (\n <div className=\"grid gap-density-2\">\n <RuntimeBar\n value={value}\n onChange={onChange}\n models={models}\n effectiveMode={effectiveMode}\n effectiveModel={effectiveModel}\n showModel={supports(\"model\")}\n showEffort={supports(\"effort\")}\n families={runtimeFamilies}\n />\n <div className=\"grid grid-cols-2 gap-density-2 md:grid-cols-4\">\n {supports(\"budget.cost\") && (\n <NumberField\n label=\"Max cost (USD)\"\n value={value.budget?.cost}\n onChange={(cost) => onChange(withBudgetValue(value, \"cost\", cost))}\n icon={UiCurrencyDollar}\n min={0}\n step={0.01}\n />\n )}\n <NumberField\n label=\"Max tokens\"\n value={value.budget?.maxTokens}\n onChange={(maxTokens) =>\n onChange(withBudgetValue(value, \"maxTokens\", maxTokens))\n }\n icon={UiCoins}\n min={0}\n step={1}\n integer\n />\n {supports(\"budget.maxTurns\") && (\n <NumberField\n label=\"Max turns\"\n value={value.budget?.maxTurns}\n onChange={(maxTurns) =>\n onChange(withBudgetValue(value, \"maxTurns\", maxTurns))\n }\n icon={UiRepeat}\n min={0}\n max={100}\n step={1}\n integer\n />\n )}\n <SpecField label=\"Timeout\">\n <SpecInput\n value={value.budget?.timeout}\n onChange={(timeout) =>\n onChange(withBudgetValue(value, \"timeout\", timeout))\n }\n placeholder=\"30m\"\n icon={UiTimer}\n mono\n />\n </SpecField>\n </div>\n <ProviderStatusPanel\n models={models}\n families={runtimeFamilies}\n defaultCollapsed\n />\n </div>\n );\n}\n\nexport function ModelAdvanced({\n value,\n onChange,\n models = [],\n families,\n supports = SUPPORT_ALL_RUNTIME_FIELDS,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n supports?: RuntimeFieldSupport | undefined;\n}) {\n return (\n <div className=\"grid gap-density-2\">\n <FallbackModelsEditor\n value={value}\n onChange={onChange}\n models={models}\n {...(families ? { families } : {})}\n />\n {supports(\"sessionId\") && (\n <SpecField label=\"Session ID\">\n <SpecInput\n value={value.sessionId}\n onChange={(sessionId) =>\n onChange(withOptionalRoot(value, \"sessionId\", sessionId))\n }\n placeholder=\"session UUID\"\n icon={UiFingerprint}\n mono\n />\n </SpecField>\n )}\n {supports(\"noCache\") && (\n <CheckboxField\n label=\"Disable prompt caching\"\n checked={value.noCache}\n onChange={(noCache) => onChange(withRoot(value, { noCache }))}\n />\n )}\n </div>\n );\n}\n\nfunction FallbackModelsEditor({\n value,\n onChange,\n models,\n families = SPEC_RUNTIME_FAMILIES,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models: ChatModel[];\n families?: SpecRuntimeFamily[] | undefined;\n}) {\n const fallbacks = value.fallbacks ?? [];\n const [expandedIndex, setExpandedIndex] = useState<number | null>(null);\n\n const setFallbacks = (nextFallbacks: AISpecRuntimeModelFallback[]) => {\n onChange(withRoot(value, { fallbacks: nextFallbacks }));\n };\n\n const removeFallback = (index: number) => {\n setFallbacks(fallbacks.filter((_, rowIndex) => rowIndex !== index));\n setExpandedIndex((current) => {\n if (current == null) return null;\n if (current === index) return null;\n return current > index ? current - 1 : current;\n });\n };\n\n const addFallback = () => {\n const nextFallbacks = [...fallbacks, newFallbackDraft(value, families)];\n setFallbacks(nextFallbacks);\n setExpandedIndex(nextFallbacks.length - 1);\n };\n\n const updateFallback = (index: number, nextFallback: FallbackDraftPatch) => {\n setFallbacks(\n fallbacks.map((fallback, rowIndex) =>\n rowIndex === index ? compactEditableFallback(nextFallback) : fallback,\n ),\n );\n };\n\n const toggleFallback = (index: number) => {\n setExpandedIndex((current) => (current === index ? null : index));\n };\n\n return (\n <div className=\"space-y-density-2\">\n <div className=\"flex items-center justify-between gap-density-2\">\n <div className=\"inline-flex min-w-0 items-center gap-1.5 text-xs font-medium text-muted-foreground\">\n <Icon icon={UiRepeat} className=\"size-3.5 shrink-0\" />\n <span>Fallback models</span>\n </div>\n <button\n type=\"button\"\n onClick={addFallback}\n className=\"inline-flex items-center gap-1 rounded-md border border-border bg-background px-density-2 py-density-1 text-xs font-medium text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Icon icon={UiAdd} className=\"size-3.5\" />\n Add\n </button>\n </div>\n {fallbacks.length > 0 && (\n <div className=\"overflow-hidden rounded-md border border-border\">\n <div className=\"divide-y divide-border\">\n {fallbacks.map((fallback, index) => (\n <FallbackModelRow\n key={`${fallback.model ?? \"fallback\"}-${index}`}\n fallback={fallback}\n models={models}\n families={families}\n expanded={expandedIndex === index}\n editorId={`spec-runtime-fallback-${index}-picker`}\n onToggle={() => toggleFallback(index)}\n onChange={(nextFallback) => updateFallback(index, nextFallback)}\n onRemove={() => removeFallback(index)}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nfunction FallbackModelRow({\n fallback,\n models,\n families,\n expanded,\n editorId,\n onToggle,\n onChange,\n onRemove,\n}: {\n fallback: AISpecRuntimeModelFallback;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n expanded: boolean;\n editorId: string;\n onToggle: () => void;\n onChange: (value: AISpecRuntimeModelFallback) => void;\n onRemove: () => void;\n}) {\n const meta = fallbackModelMeta(fallback, models);\n const Glyph = meta.provider ? providerIcon(meta.provider) : undefined;\n const label = meta.label || \"Select model\";\n // The collapsed row is the bar in miniature: brand mark, runtime mode, model,\n // effort — each carrying the same tone it has inside the expanded editor.\n const mode = modeOptionFor(families, fallback.mode);\n const effortGlyph = fallback.effort\n ? effortLevelIcon(fallback.effort)\n : undefined;\n return (\n <div>\n <div className=\"grid min-h-9 grid-cols-[minmax(0,1fr)_auto] items-center gap-density-1 px-density-1 py-density-1\">\n <button\n type=\"button\"\n aria-expanded={expanded}\n aria-controls={editorId}\n aria-label={`Edit fallback ${label}`}\n onClick={onToggle}\n className=\"grid min-w-0 grid-cols-[auto_auto_minmax(0,1fr)_auto] items-center gap-density-2 rounded-md px-density-1 py-density-1 text-left hover:bg-muted\"\n >\n {Glyph ? (\n <Glyph\n className={cn(\n \"size-4 shrink-0\",\n meta.provider ? providerIconColor(meta.provider) : undefined,\n )}\n />\n ) : (\n <Icon\n icon={UiSparkles}\n className=\"size-4 shrink-0 text-muted-foreground/70\"\n />\n )}\n {mode?.icon ? (\n <Icon\n icon={mode.icon}\n className=\"size-4 shrink-0 text-muted-foreground\"\n title={mode.title ?? mode.label}\n />\n ) : (\n // Held open so rows with and without a known mode still align.\n <span aria-hidden=\"true\" className=\"size-4\" />\n )}\n <span\n className=\"min-w-0 truncate font-mono text-xs text-foreground\"\n title={label}\n >\n {label}\n </span>\n {fallback.effort ? (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-semibold uppercase leading-none text-muted-foreground\">\n {effortGlyph && (\n <Icon\n icon={effortGlyph}\n className={cn(\"size-3\", effortLevelColor(fallback.effort))}\n />\n )}\n {effortLevelLabel(fallback.effort)}\n </span>\n ) : (\n <span aria-hidden=\"true\" />\n )}\n </button>\n <IconButton\n icon={UiTrash}\n label={`Remove ${label}`}\n onClick={onRemove}\n className=\"size-6\"\n iconClassName=\"size-4\"\n />\n </div>\n {expanded && (\n <div className=\"border-t border-border p-density-2\">\n <FallbackModelPicker\n id={editorId}\n value={fallback}\n onChange={onChange}\n models={models}\n families={families}\n />\n </div>\n )}\n </div>\n );\n}\n\nfunction FallbackModelPicker({\n id,\n value,\n onChange,\n models,\n families,\n}: {\n id: string;\n value: AISpecRuntimeModelFallback;\n onChange: (value: AISpecRuntimeModelFallback) => void;\n models: ChatModel[];\n families: SpecRuntimeFamily[];\n}) {\n return (\n <div\n id={id}\n role=\"group\"\n aria-label=\"Fallback model picker\"\n className=\"rounded-md border border-dashed border-border bg-muted/20 p-density-2\"\n >\n <RuntimeBar\n value={value}\n onChange={(next) => onChange(compactEditableFallback(next))}\n models={models}\n families={families}\n ariaLabel=\"Fallback runtime\"\n />\n </div>\n );\n}\n\nfunction newFallbackDraft(\n value: AISpecRuntimeValue,\n families: SpecRuntimeFamily[],\n): AISpecRuntimeModelFallback {\n const fallback: AISpecRuntimeModelFallback = {};\n const mode = value.mode || defaultFallbackMode(families);\n if (mode) fallback.mode = mode;\n if (value.effort) fallback.effort = value.effort;\n if (value.temperature != null && Number.isFinite(value.temperature)) {\n fallback.temperature = value.temperature;\n }\n return fallback;\n}\n\nfunction defaultFallbackMode(families: SpecRuntimeFamily[]): string {\n const family = families[0] ?? SPEC_RUNTIME_FAMILIES[0];\n return family ? firstMode(family).id : \"\";\n}\n\nfunction compactEditableFallback(\n value: FallbackDraftPatch,\n): AISpecRuntimeModelFallback {\n const next: AISpecRuntimeModelFallback = {};\n const model = cleanString(value.model);\n if (model) next.model = model;\n const id = cleanString(value.id);\n if (id) next.id = id;\n const mode = cleanString(value.mode);\n if (mode) next.mode = mode;\n if (value.temperature != null && Number.isFinite(value.temperature)) {\n next.temperature = value.temperature;\n }\n const effort = cleanString(value.effort);\n if (effort) next.effort = effort;\n if (value.noCache) next.noCache = true;\n return next;\n}\n\nfunction fallbackModelMeta(\n fallback: AISpecRuntimeModelFallback,\n models: ChatModel[],\n): { label: string; provider?: string | undefined } {\n const modelId = fallback.model ?? \"\";\n const match = models.find(\n (model) => model.id === modelId || model.label === modelId,\n );\n if (match) return { label: match.label, provider: match.provider };\n return {\n label: modelId || fallback.id || \"\",\n provider: inferProvider(fallback),\n };\n}\n\nfunction inferProvider(\n fallback: AISpecRuntimeModelFallback,\n): string | undefined {\n const text = `${fallback.mode ?? \"\"} ${fallback.model ?? \"\"}`.toLowerCase();\n if (text.includes(\"anthropic\") || text.includes(\"claude\")) return \"anthropic\";\n if (text.includes(\"google\") || text.includes(\"gemini\")) return \"googleai\";\n if (\n text.includes(\"openai\") ||\n text.includes(\"gpt\") ||\n text.includes(\"codex\")\n ) {\n return \"openai\";\n }\n return undefined;\n}\n\nfunction cleanString(value: string | undefined): string {\n return value?.trim() ?? \"\";\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAsDO,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;;AACD,QAAM,mBAAkB,qCAAU,UAAS,WAAW;AACtD,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA,MAAM,SAAS;AAAA,EAAA;AAEjB,QAAM,WACJ,qBAAqB,MAAM,KAAK,OAChC,WAAM,SAAN,mBAAY,YACZ,+CAAe,WACf,UAAU,gBAAgB,CAAC,KAAK,sBAAsB,CAAC,CAAE,EAAE;AAC7D,QAAM,WACH,kBAAkB,MAAM,SAAS,cAAc,KAChD,iBAAiB,iBAAiB,UAAU,iDAAgB,EAAE,IAC1D,6BACA,oBAAoB,iBAAiB,UAAU,iDAAgB,EAAE;AAGvE,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW,SAAS,OAAO;AAAA,QAC3B,YAAY,SAAS,QAAQ;AAAA,QAC7B,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAEZ,qBAAC,OAAA,EAAI,WAAU,iDACZ,UAAA;AAAA,MAAA,SAAS,aAAa,KACrB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,SAAS,SAAS,gBAAgB,OAAO,QAAQ,IAAI,CAAC;AAAA,UACjE,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,MAGV;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,cACT,SAAS,gBAAgB,OAAO,aAAa,SAAS,CAAC;AAAA,UAEzD,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA;AAAA,MAER,SAAS,iBAAiB,KACzB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,aACT,SAAS,gBAAgB,OAAO,YAAY,QAAQ,CAAC;AAAA,UAEvD,MAAM;AAAA,UACN,KAAK;AAAA,UACL,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA;AAAA,MAGX,oBAAC,WAAA,EAAU,OAAM,WACf,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,QAAO,WAAM,WAAN,mBAAc;AAAA,UACrB,UAAU,CAAC,YACT,SAAS,gBAAgB,OAAO,WAAW,OAAO,CAAC;AAAA,UAErD,aAAY;AAAA,UACZ,MAAM;AAAA,UACN,MAAI;AAAA,QAAA;AAAA,MAAA,EACN,CACF;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,UAAU;AAAA,QACV,kBAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EAClB,GACF;AAEJ;AAEO,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AAAA,EACT;AAAA,EACA,WAAW;AACb,GAMG;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACC,GAAI,WAAW,EAAE,aAAa,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,IAEjC,SAAS,WAAW,KACnB,oBAAC,WAAA,EAAU,OAAM,cACf,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAO,MAAM;AAAA,QACb,UAAU,CAAC,cACT,SAAS,iBAAiB,OAAO,aAAa,SAAS,CAAC;AAAA,QAE1D,aAAY;AAAA,QACZ,MAAM;AAAA,QACN,MAAI;AAAA,MAAA;AAAA,IAAA,GAER;AAAA,IAED,SAAS,SAAS,KACjB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,SAAS,MAAM;AAAA,QACf,UAAU,CAAC,YAAY,SAAS,SAAS,OAAO,EAAE,SAAS,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9D,GAEJ;AAEJ;AAEA,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAKG;AACD,QAAM,YAAY,MAAM,aAAa,CAAA;AACrC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AAEtE,QAAM,eAAe,CAAC,kBAAgD;AACpE,aAAS,SAAS,OAAO,EAAE,WAAW,cAAA,CAAe,CAAC;AAAA,EACxD;AAEA,QAAM,iBAAiB,CAAC,UAAkB;AACxC,iBAAa,UAAU,OAAO,CAAC,GAAG,aAAa,aAAa,KAAK,CAAC;AAClE,qBAAiB,CAAC,YAAY;AAC5B,UAAI,WAAW,KAAM,QAAO;AAC5B,UAAI,YAAY,MAAO,QAAO;AAC9B,aAAO,UAAU,QAAQ,UAAU,IAAI;AAAA,IACzC,CAAC;AAAA,EACH;AAEA,QAAM,cAAc,MAAM;AACxB,UAAM,gBAAgB,CAAC,GAAG,WAAW,iBAAiB,OAAO,QAAQ,CAAC;AACtE,iBAAa,aAAa;AAC1B,qBAAiB,cAAc,SAAS,CAAC;AAAA,EAC3C;AAEA,QAAM,iBAAiB,CAAC,OAAe,iBAAqC;AAC1E;AAAA,MACE,UAAU;AAAA,QAAI,CAAC,UAAU,aACvB,aAAa,QAAQ,wBAAwB,YAAY,IAAI;AAAA,MAAA;AAAA,IAC/D;AAAA,EAEJ;AAEA,QAAM,iBAAiB,CAAC,UAAkB;AACxC,qBAAiB,CAAC,YAAa,YAAY,QAAQ,OAAO,KAAM;AAAA,EAClE;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,sFACb,UAAA;AAAA,QAAA,oBAAC,MAAA,EAAK,MAAM,UAAU,WAAU,qBAAoB;AAAA,QACpD,oBAAC,UAAK,UAAA,kBAAA,CAAe;AAAA,MAAA,GACvB;AAAA,MACA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,SAAS;AAAA,UACT,WAAU;AAAA,UAEV,UAAA;AAAA,YAAA,oBAAC,MAAA,EAAK,MAAM,OAAO,WAAU,YAAW;AAAA,YAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAE5C,GACF;AAAA,IACC,UAAU,SAAS,KAClB,oBAAC,SAAI,WAAU,mDACb,UAAA,oBAAC,OAAA,EAAI,WAAU,0BACZ,UAAA,UAAU,IAAI,CAAC,UAAU,UACxB;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,kBAAkB;AAAA,QAC5B,UAAU,yBAAyB,KAAK;AAAA,QACxC,UAAU,MAAM,eAAe,KAAK;AAAA,QACpC,UAAU,CAAC,iBAAiB,eAAe,OAAO,YAAY;AAAA,QAC9D,UAAU,MAAM,eAAe,KAAK;AAAA,MAAA;AAAA,MAR/B,GAAG,SAAS,SAAS,UAAU,IAAI,KAAK;AAAA,IAAA,CAUhD,GACH,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;AAEA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GASG;AACD,QAAM,OAAO,kBAAkB,UAAU,MAAM;AAC/C,QAAM,QAAQ,KAAK,WAAW,aAAa,KAAK,QAAQ,IAAI;AAC5D,QAAM,QAAQ,KAAK,SAAS;AAG5B,QAAM,OAAO,cAAc,UAAU,SAAS,IAAI;AAClD,QAAM,cAAc,SAAS,SACzB,gBAAgB,SAAS,MAAM,IAC/B;AACJ,8BACG,OAAA,EACC,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,oGACb,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,iBAAe;AAAA,UACf,iBAAe;AAAA,UACf,cAAY,iBAAiB,KAAK;AAAA,UAClC,SAAS;AAAA,UACT,WAAU;AAAA,UAET,UAAA;AAAA,YAAA,QACC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAW;AAAA,kBACT;AAAA,kBACA,KAAK,WAAW,kBAAkB,KAAK,QAAQ,IAAI;AAAA,gBAAA;AAAA,cACrD;AAAA,YAAA,IAGF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM;AAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,aAGb,6BAAM,QACL;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,KAAK;AAAA,gBACX,WAAU;AAAA,gBACV,OAAO,KAAK,SAAS,KAAK;AAAA,cAAA;AAAA,YAAA;AAAA;AAAA,cAI5B,oBAAC,QAAA,EAAK,eAAY,QAAO,WAAU,SAAA,CAAS;AAAA;AAAA,YAE9C;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO;AAAA,gBAEN,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAEF,SAAS,SACR,qBAAC,QAAA,EAAK,WAAU,2IACb,UAAA;AAAA,cAAA,eACC;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAM;AAAA,kBACN,WAAW,GAAG,UAAU,iBAAiB,SAAS,MAAM,CAAC;AAAA,gBAAA;AAAA,cAAA;AAAA,cAG5D,iBAAiB,SAAS,MAAM;AAAA,YAAA,EAAA,CACnC,IAEA,oBAAC,QAAA,EAAK,eAAY,OAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAG7B;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAM;AAAA,UACN,OAAO,UAAU,KAAK;AAAA,UACtB,SAAS;AAAA,UACT,WAAU;AAAA,UACV,eAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB,GACF;AAAA,IACC,YACC,oBAAC,OAAA,EAAI,WAAU,sCACb,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,IAAI;AAAA,QACJ,OAAO;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,MAAA;AAAA,IAAA,EACF,CACF;AAAA,EAAA,GAEJ;AAEJ;AAEA,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,MAAK;AAAA,MACL,cAAW;AAAA,MACX,WAAU;AAAA,MAEV,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC;AAAA,UACA,UAAU,CAAC,SAAS,SAAS,wBAAwB,IAAI,CAAC;AAAA,UAC1D;AAAA,UACA;AAAA,UACA,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ;AAAA,EAAA;AAGN;AAEA,SAAS,iBACP,OACA,UAC4B;AAC5B,QAAM,WAAuC,CAAA;AAC7C,QAAM,OAAO,MAAM,QAAQ,oBAAoB,QAAQ;AACvD,MAAI,eAAe,OAAO;AAC1B,MAAI,MAAM,OAAQ,UAAS,SAAS,MAAM;AAC1C,MAAI,MAAM,eAAe,QAAQ,OAAO,SAAS,MAAM,WAAW,GAAG;AACnE,aAAS,cAAc,MAAM;AAAA,EAC/B;AACA,SAAO;AACT;AAEA,SAAS,oBAAoB,UAAuC;AAClE,QAAM,SAAS,SAAS,CAAC,KAAK,sBAAsB,CAAC;AACrD,SAAO,SAAS,UAAU,MAAM,EAAE,KAAK;AACzC;AAEA,SAAS,wBACP,OAC4B;AAC5B,QAAM,OAAmC,CAAA;AACzC,QAAM,QAAQ,YAAY,MAAM,KAAK;AACrC,MAAI,YAAY,QAAQ;AACxB,QAAM,KAAK,YAAY,MAAM,EAAE;AAC/B,MAAI,SAAS,KAAK;AAClB,QAAM,OAAO,YAAY,MAAM,IAAI;AACnC,MAAI,WAAW,OAAO;AACtB,MAAI,MAAM,eAAe,QAAQ,OAAO,SAAS,MAAM,WAAW,GAAG;AACnE,SAAK,cAAc,MAAM;AAAA,EAC3B;AACA,QAAM,SAAS,YAAY,MAAM,MAAM;AACvC,MAAI,aAAa,SAAS;AAC1B,MAAI,MAAM,QAAS,MAAK,UAAU;AAClC,SAAO;AACT;AAEA,SAAS,kBACP,UACA,QACkD;AAClD,QAAM,UAAU,SAAS,SAAS;AAClC,QAAM,QAAQ,OAAO;AAAA,IACnB,CAAC,UAAU,MAAM,OAAO,WAAW,MAAM,UAAU;AAAA,EAAA;AAErD,MAAI,cAAc,EAAE,OAAO,MAAM,OAAO,UAAU,MAAM,SAAA;AACxD,SAAO;AAAA,IACL,OAAO,WAAW,SAAS,MAAM;AAAA,IACjC,UAAU,cAAc,QAAQ;AAAA,EAAA;AAEpC;AAEA,SAAS,cACP,UACoB;AACpB,QAAM,OAAO,GAAG,SAAS,QAAQ,EAAE,IAAI,SAAS,SAAS,EAAE,GAAG,YAAA;AAC9D,MAAI,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,QAAQ,EAAG,QAAO;AAClE,MAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ,EAAG,QAAO;AAC/D,MACE,KAAK,SAAS,QAAQ,KACtB,KAAK,SAAS,KAAK,KACnB,KAAK,SAAS,OAAO,GACrB;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,SAAS,YAAY,OAAmC;AACtD,UAAO,+BAAO,WAAU;AAC1B;"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const runtimeMode = require("../../runtime/runtime-mode.cjs");
|
|
5
4
|
const SegmentedControl = require("../../../components/SegmentedControl.cjs");
|
|
6
5
|
const sessionTones = require("../session-tones.cjs");
|
|
7
6
|
const fields = require("./fields.cjs");
|
|
8
7
|
const permissionModeVisuals = require("./permission-mode-visuals.cjs");
|
|
9
8
|
const update = require("./update.cjs");
|
|
9
|
+
const runtimeFamily = require("../../../lib/runtime-family.cjs");
|
|
10
10
|
const SpecRuntimeEditor_sandboxModel = require("../SpecRuntimeEditor.sandbox-model.cjs");
|
|
11
11
|
function PermissionModeField({
|
|
12
12
|
value,
|
|
@@ -21,7 +21,7 @@ function PermissionModeField({
|
|
|
21
21
|
if (!specMode) {
|
|
22
22
|
return current ? /* @__PURE__ */ jsxRuntime.jsx(PermissionPostureError, { children: "Permission posture requires a runtime mode." }) : null;
|
|
23
23
|
}
|
|
24
|
-
const runtime =
|
|
24
|
+
const runtime = runtimeFamily.modeOptionFor(families, specMode);
|
|
25
25
|
const family = familyForMode(families, specMode);
|
|
26
26
|
const capabilities = runtime == null ? void 0 : runtime.permissions;
|
|
27
27
|
const publishedModes = SpecRuntimeEditor_sandboxModel.SPEC_PERMISSION_MODES.filter(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionModeField.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/PermissionModeField.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n SPEC_PERMISSION_MODES,\n type AISpecRuntimeValue,\n type SpecPermissionMode,\n} from \"../SpecRuntimeEditor.model\";\nimport {\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { sessionTone } from \"../session-tones\";\nimport { SpecField } from \"./fields\";\nimport {\n collapsePermissionModeAliases,\n permissionModeVisual,\n} from \"./permission-mode-visuals\";\nimport { sandboxRef, withSandboxApproval } from \"./update\";\n\nexport function PermissionModeField({\n value,\n onChange,\n families,\n availableModes,\n effectiveMode,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n families: SpecRuntimeFamily[];\n availableModes: SpecPermissionMode[];\n effectiveMode?: string | undefined;\n}) {\n const specMode = value.mode?.trim() || effectiveMode?.trim();\n const current = sandboxRef(value).approval;\n if (!specMode) {\n return current ? (\n <PermissionPostureError>\n Permission posture requires a runtime mode.\n </PermissionPostureError>\n ) : null;\n }\n const runtime = modeOptionFor(families, specMode);\n const family = familyForMode(families, specMode);\n const capabilities = runtime?.permissions;\n const publishedModes = SPEC_PERMISSION_MODES.filter((mode) =>\n availableModes.includes(mode),\n );\n const support = Object.fromEntries(\n publishedModes.map((mode) => [\n mode,\n capabilities?.modes[mode] ?? { kind: \"native\" as const },\n ]),\n );\n const visibleModes = collapsePermissionModeAliases(\n family?.id,\n publishedModes,\n current,\n support,\n );\n const invalid = current && !publishedModes.includes(current);\n if (visibleModes.length === 0 && !invalid) return null;\n const selected = current || \"default\";\n const selectedSupport = support[selected];\n const runtimeLabel = runtime\n ? `${family?.label ?? specMode} ${runtime.label}`\n : specMode;\n return (\n <div className=\"grid gap-density-2\">\n {invalid && (\n <PermissionPostureError>\n {permissionModeVisual(family?.id, current).label} is not available for{\" \"}\n {runtimeLabel}. Select a published posture before saving.\n </PermissionPostureError>\n )}\n {visibleModes.length > 0 && (\n <SpecField\n label=\"Permission posture\"\n hint={selectedSupport?.effects?.note || selectedSupport?.kind}\n composite\n >\n <SegmentedControl\n aria-label=\"Permission posture\"\n value={selected}\n onChange={(mode: SpecPermissionMode) =>\n onChange(withSandboxApproval(value, mode))\n }\n size=\"sm\"\n wrap\n className=\"w-full\"\n options={visibleModes.map((mode) => {\n const cell = support[mode];\n if (!cell) {\n throw new Error(\n `permission posture ${JSON.stringify(mode)} disappeared from runtime capabilities`,\n );\n }\n const visual = permissionModeVisual(family?.id, mode);\n const tone = sessionTone(visual.tone);\n return {\n id: mode,\n label: visual.label,\n icon: visual.icon,\n iconClassName: tone.text,\n activeClassName: `${tone.disc} ${tone.border}`,\n title: cell.effects?.note || permissionSupportLabel(cell.kind),\n };\n })}\n />\n </SpecField>\n )}\n </div>\n );\n}\n\nfunction familyForMode(families: SpecRuntimeFamily[], specMode: string) {\n return families.find((family) =>\n family.modes.some((mode) => mode.id === specMode),\n );\n}\n\nfunction PermissionPostureError({ children }: { children: ReactNode }) {\n return (\n <p\n role=\"alert\"\n className=\"rounded-md border border-destructive/30 bg-destructive/5 px-density-2 py-density-1 text-xs text-destructive\"\n >\n {children}\n </p>\n );\n}\n\nfunction permissionSupportLabel(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1).replace(\"-\", \" \");\n}\n"],"names":["sandboxRef","jsx","modeOptionFor","SPEC_PERMISSION_MODES","collapsePermissionModeAliases","jsxs","permissionModeVisual","SpecField","SegmentedControl","withSandboxApproval","sessionTone","_a"],"mappings":";;;;;;;;;;AAmBO,SAAS,oBAAoB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;;AACD,QAAM,aAAW,WAAM,SAAN,mBAAY,YAAU,+CAAe;AACtD,QAAM,UAAUA,OAAAA,WAAW,KAAK,EAAE;AAClC,MAAI,CAAC,UAAU;AACb,WAAO,UACLC,2BAAAA,IAAC,wBAAA,EAAuB,UAAA,8CAAA,CAExB,IACE;AAAA,EACN;AACA,QAAM,UAAUC,
|
|
1
|
+
{"version":3,"file":"PermissionModeField.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/PermissionModeField.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport {\n SPEC_PERMISSION_MODES,\n type AISpecRuntimeValue,\n type SpecPermissionMode,\n} from \"../SpecRuntimeEditor.model\";\nimport {\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { sessionTone } from \"../session-tones\";\nimport { SpecField } from \"./fields\";\nimport {\n collapsePermissionModeAliases,\n permissionModeVisual,\n} from \"./permission-mode-visuals\";\nimport { sandboxRef, withSandboxApproval } from \"./update\";\n\nexport function PermissionModeField({\n value,\n onChange,\n families,\n availableModes,\n effectiveMode,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n families: SpecRuntimeFamily[];\n availableModes: SpecPermissionMode[];\n effectiveMode?: string | undefined;\n}) {\n const specMode = value.mode?.trim() || effectiveMode?.trim();\n const current = sandboxRef(value).approval;\n if (!specMode) {\n return current ? (\n <PermissionPostureError>\n Permission posture requires a runtime mode.\n </PermissionPostureError>\n ) : null;\n }\n const runtime = modeOptionFor(families, specMode);\n const family = familyForMode(families, specMode);\n const capabilities = runtime?.permissions;\n const publishedModes = SPEC_PERMISSION_MODES.filter((mode) =>\n availableModes.includes(mode),\n );\n const support = Object.fromEntries(\n publishedModes.map((mode) => [\n mode,\n capabilities?.modes[mode] ?? { kind: \"native\" as const },\n ]),\n );\n const visibleModes = collapsePermissionModeAliases(\n family?.id,\n publishedModes,\n current,\n support,\n );\n const invalid = current && !publishedModes.includes(current);\n if (visibleModes.length === 0 && !invalid) return null;\n const selected = current || \"default\";\n const selectedSupport = support[selected];\n const runtimeLabel = runtime\n ? `${family?.label ?? specMode} ${runtime.label}`\n : specMode;\n return (\n <div className=\"grid gap-density-2\">\n {invalid && (\n <PermissionPostureError>\n {permissionModeVisual(family?.id, current).label} is not available for{\" \"}\n {runtimeLabel}. Select a published posture before saving.\n </PermissionPostureError>\n )}\n {visibleModes.length > 0 && (\n <SpecField\n label=\"Permission posture\"\n hint={selectedSupport?.effects?.note || selectedSupport?.kind}\n composite\n >\n <SegmentedControl\n aria-label=\"Permission posture\"\n value={selected}\n onChange={(mode: SpecPermissionMode) =>\n onChange(withSandboxApproval(value, mode))\n }\n size=\"sm\"\n wrap\n className=\"w-full\"\n options={visibleModes.map((mode) => {\n const cell = support[mode];\n if (!cell) {\n throw new Error(\n `permission posture ${JSON.stringify(mode)} disappeared from runtime capabilities`,\n );\n }\n const visual = permissionModeVisual(family?.id, mode);\n const tone = sessionTone(visual.tone);\n return {\n id: mode,\n label: visual.label,\n icon: visual.icon,\n iconClassName: tone.text,\n activeClassName: `${tone.disc} ${tone.border}`,\n title: cell.effects?.note || permissionSupportLabel(cell.kind),\n };\n })}\n />\n </SpecField>\n )}\n </div>\n );\n}\n\nfunction familyForMode(families: SpecRuntimeFamily[], specMode: string) {\n return families.find((family) =>\n family.modes.some((mode) => mode.id === specMode),\n );\n}\n\nfunction PermissionPostureError({ children }: { children: ReactNode }) {\n return (\n <p\n role=\"alert\"\n className=\"rounded-md border border-destructive/30 bg-destructive/5 px-density-2 py-density-1 text-xs text-destructive\"\n >\n {children}\n </p>\n );\n}\n\nfunction permissionSupportLabel(value: string) {\n return value.charAt(0).toUpperCase() + value.slice(1).replace(\"-\", \" \");\n}\n"],"names":["sandboxRef","jsx","modeOptionFor","SPEC_PERMISSION_MODES","collapsePermissionModeAliases","jsxs","permissionModeVisual","SpecField","SegmentedControl","withSandboxApproval","sessionTone","_a"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { modeOptionFor } from "../../runtime/runtime-mode.js";
|
|
3
2
|
import { SegmentedControl } from "../../../components/SegmentedControl.js";
|
|
4
3
|
import { sessionTone } from "../session-tones.js";
|
|
5
4
|
import { SpecField } from "./fields.js";
|
|
6
5
|
import { collapsePermissionModeAliases, permissionModeVisual } from "./permission-mode-visuals.js";
|
|
7
6
|
import { sandboxRef, withSandboxApproval } from "./update.js";
|
|
7
|
+
import { modeOptionFor } from "../../../lib/runtime-family.js";
|
|
8
8
|
import { SPEC_PERMISSION_MODES } from "../SpecRuntimeEditor.sandbox-model.js";
|
|
9
9
|
function PermissionModeField({
|
|
10
10
|
value,
|
|
@@ -7,6 +7,8 @@ const fields = require("./fields.cjs");
|
|
|
7
7
|
const update = require("./update.cjs");
|
|
8
8
|
const FixtureEditor = require("../../FixtureEditor/FixtureEditor.cjs");
|
|
9
9
|
const UiRepeat = require("../../../icons/components/UiRepeat.cjs");
|
|
10
|
+
const UiTerminal = require("../../../icons/components/UiTerminal.cjs");
|
|
11
|
+
const UiChatDots = require("../../../icons/components/UiChatDots.cjs");
|
|
10
12
|
const SCOPE_OPTIONS = SpecRuntimeEditor_model.SPEC_VERIFY_SCOPES.map((scope) => ({
|
|
11
13
|
id: scope,
|
|
12
14
|
label: scope === "all" ? "All files" : "Changed files"
|
|
@@ -18,7 +20,7 @@ function VerifySection({
|
|
|
18
20
|
families,
|
|
19
21
|
secretSelector
|
|
20
22
|
}) {
|
|
21
|
-
var _a, _b, _c, _d, _e, _f;
|
|
23
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
22
24
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-density-3", children: [
|
|
23
25
|
/* @__PURE__ */ jsxRuntime.jsx(fields.SpecField, { label: "Verify fixture", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24
26
|
FixtureEditor.FixtureEditor,
|
|
@@ -58,7 +60,27 @@ function VerifySection({
|
|
|
58
60
|
integer: true
|
|
59
61
|
}
|
|
60
62
|
) })
|
|
61
|
-
] })
|
|
63
|
+
] }),
|
|
64
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
65
|
+
fields.ListField,
|
|
66
|
+
{
|
|
67
|
+
label: "Commands",
|
|
68
|
+
value: (_h = (_g = value.workflow) == null ? void 0 : _g.verify) == null ? void 0 : _h.commands,
|
|
69
|
+
onChange: (commands) => onChange(update.withVerify(value, { commands })),
|
|
70
|
+
placeholder: "pnpm test",
|
|
71
|
+
icon: UiTerminal.UiTerminal
|
|
72
|
+
}
|
|
73
|
+
),
|
|
74
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
75
|
+
fields.ListField,
|
|
76
|
+
{
|
|
77
|
+
label: "Prompts",
|
|
78
|
+
value: (_j = (_i = value.workflow) == null ? void 0 : _i.verify) == null ? void 0 : _j.prompts,
|
|
79
|
+
onChange: (prompts) => onChange(update.withVerify(value, { prompts })),
|
|
80
|
+
placeholder: "review.prompt",
|
|
81
|
+
icon: UiChatDots.UiChatDots
|
|
82
|
+
}
|
|
83
|
+
)
|
|
62
84
|
] });
|
|
63
85
|
}
|
|
64
86
|
exports.VerifySection = VerifySection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifySection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiRepeat } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n </div>\n );\n}\n"],"names":["SPEC_VERIFY_SCOPES","jsxs","jsx","SpecField","FixtureEditor","withVerify","SegmentedControl","NumberField","UiRepeat"],"mappings":"
|
|
1
|
+
{"version":3,"file":"VerifySection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiChatDots, UiRepeat, UiTerminal } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { ListField, NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n <ListField\n label=\"Commands\"\n value={value.workflow?.verify?.commands}\n onChange={(commands) => onChange(withVerify(value, { commands }))}\n placeholder=\"pnpm test\"\n icon={UiTerminal}\n />\n <ListField\n label=\"Prompts\"\n value={value.workflow?.verify?.prompts}\n onChange={(prompts) => onChange(withVerify(value, { prompts }))}\n placeholder=\"review.prompt\"\n icon={UiChatDots}\n />\n </div>\n );\n}\n"],"names":["SPEC_VERIFY_SCOPES","jsxs","jsx","SpecField","FixtureEditor","withVerify","SegmentedControl","NumberField","UiRepeat","ListField","UiTerminal","UiChatDots"],"mappings":";;;;;;;;;;;AAcA,MAAM,gBACJA,wBAAAA,mBAAmB,IAAI,CAAC,WAAW;AAAA,EACjC,IAAI;AAAA,EACJ,OAAO,UAAU,QAAQ,cAAc;AACzC,EAAE;AAEG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;;AACD,SACEC,2BAAAA,KAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAAC,2BAAAA,IAACC,OAAAA,WAAA,EAAU,OAAM,kBACf,UAAAD,2BAAAA;AAAAA,MAACE,cAAAA;AAAAA,MAAA;AAAA,QACC,SAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,YAAW;AAAA,QAC1C,UAAU,CAAC,YAAY,SAASC,OAAAA,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,MAAK;AAAA,QACL,aAAY;AAAA,QACZ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACAJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAAC,2BAAAA,IAACC,OAAAA,WAAA,EAAU,OAAM,SACf,UAAAD,2BAAAA;AAAAA,QAACI,iBAAAA;AAAAA,QAAA;AAAA,UACC,cAAW;AAAA,UACX,MAAK;AAAA,UACL,SAAQ,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,UAAS;AAAA,UACzC,UAAU,CAAC,UAAU,SAASD,OAAAA,WAAW,OAAO,EAAE,MAAA,CAAO,CAAC;AAAA,UAC1D,SAAS;AAAA,QAAA;AAAA,MAAA,GAEb;AAAA,MACAH,2BAAAA,IAAC,OAAA,EAAI,WAAU,QACb,UAAAA,2BAAAA;AAAAA,QAACK,OAAAA;AAAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,UAC/B,UAAU,CAAC,kBACT,SAASF,OAAAA,WAAW,OAAO,EAAE,eAAe,iBAAiB,EAAA,CAAG,CAAC;AAAA,UAEnE,MAAMG,SAAAA;AAAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA,EACT,CACF;AAAA,IAAA,GACF;AAAA,IACAN,2BAAAA;AAAAA,MAACO,OAAAA;AAAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,aAAa,SAASJ,OAAAA,WAAW,OAAO,EAAE,SAAA,CAAU,CAAC;AAAA,QAChE,aAAY;AAAA,QACZ,MAAMK,WAAAA;AAAAA,MAAA;AAAA,IAAA;AAAA,IAERR,2BAAAA;AAAAA,MAACO,OAAAA;AAAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,YAAY,SAASJ,OAAAA,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,aAAY;AAAA,QACZ,MAAMM,WAAAA;AAAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifySection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAS/D,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,cAAc,GACf,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAC9D,+
|
|
1
|
+
{"version":3,"file":"VerifySection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAS/D,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,cAAc,GACf,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3C,cAAc,CAAC,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAC9D,+BAyDA"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { SegmentedControl } from "../../../components/SegmentedControl.js";
|
|
3
3
|
import { SPEC_VERIFY_SCOPES } from "../SpecRuntimeEditor.model.js";
|
|
4
|
-
import { SpecField, NumberField } from "./fields.js";
|
|
4
|
+
import { SpecField, NumberField, ListField } from "./fields.js";
|
|
5
5
|
import { withVerify } from "./update.js";
|
|
6
6
|
import { FixtureEditor } from "../../FixtureEditor/FixtureEditor.js";
|
|
7
7
|
import { UiRepeat } from "../../../icons/components/UiRepeat.js";
|
|
8
|
+
import { UiTerminal } from "../../../icons/components/UiTerminal.js";
|
|
9
|
+
import { UiChatDots } from "../../../icons/components/UiChatDots.js";
|
|
8
10
|
const SCOPE_OPTIONS = SPEC_VERIFY_SCOPES.map((scope) => ({
|
|
9
11
|
id: scope,
|
|
10
12
|
label: scope === "all" ? "All files" : "Changed files"
|
|
@@ -16,7 +18,7 @@ function VerifySection({
|
|
|
16
18
|
families,
|
|
17
19
|
secretSelector
|
|
18
20
|
}) {
|
|
19
|
-
var _a, _b, _c, _d, _e, _f;
|
|
21
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
20
22
|
return /* @__PURE__ */ jsxs("div", { className: "grid gap-density-3", children: [
|
|
21
23
|
/* @__PURE__ */ jsx(SpecField, { label: "Verify fixture", children: /* @__PURE__ */ jsx(
|
|
22
24
|
FixtureEditor,
|
|
@@ -56,7 +58,27 @@ function VerifySection({
|
|
|
56
58
|
integer: true
|
|
57
59
|
}
|
|
58
60
|
) })
|
|
59
|
-
] })
|
|
61
|
+
] }),
|
|
62
|
+
/* @__PURE__ */ jsx(
|
|
63
|
+
ListField,
|
|
64
|
+
{
|
|
65
|
+
label: "Commands",
|
|
66
|
+
value: (_h = (_g = value.workflow) == null ? void 0 : _g.verify) == null ? void 0 : _h.commands,
|
|
67
|
+
onChange: (commands) => onChange(withVerify(value, { commands })),
|
|
68
|
+
placeholder: "pnpm test",
|
|
69
|
+
icon: UiTerminal
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ jsx(
|
|
73
|
+
ListField,
|
|
74
|
+
{
|
|
75
|
+
label: "Prompts",
|
|
76
|
+
value: (_j = (_i = value.workflow) == null ? void 0 : _i.verify) == null ? void 0 : _j.prompts,
|
|
77
|
+
onChange: (prompts) => onChange(withVerify(value, { prompts })),
|
|
78
|
+
placeholder: "review.prompt",
|
|
79
|
+
icon: UiChatDots
|
|
80
|
+
}
|
|
81
|
+
)
|
|
60
82
|
] });
|
|
61
83
|
}
|
|
62
84
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifySection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiRepeat } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VerifySection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/VerifySection.tsx"],"sourcesContent":["import { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport { UiChatDots, UiRepeat, UiTerminal } from \"../../../icons\";\nimport { FixtureEditor } from \"../../FixtureEditor\";\nimport type { ChatModel } from \"../../chat/types\";\nimport type { SpecRuntimeFamily } from \"../../runtime/runtime-mode\";\nimport {\n SPEC_VERIFY_SCOPES,\n type AISpecRuntimeValue,\n type SpecVerifyScope,\n} from \"../SpecRuntimeEditor.model\";\nimport { ListField, NumberField, SpecField } from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport { withVerify } from \"./update\";\n\nconst SCOPE_OPTIONS: Array<{ id: SpecVerifyScope; label: string }> =\n SPEC_VERIFY_SCOPES.map((scope) => ({\n id: scope,\n label: scope === \"all\" ? \"All files\" : \"Changed files\",\n }));\n\nexport function VerifySection({\n value,\n onChange,\n models,\n families,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n families?: SpecRuntimeFamily[] | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n return (\n <div className=\"grid gap-density-3\">\n <SpecField label=\"Verify fixture\">\n <FixtureEditor\n value={value.workflow?.verify?.fixture ?? \"\"}\n onChange={(fixture) => onChange(withVerify(value, { fixture }))}\n size=\"sm\"\n placeholder=\"Write the verify fixture markdown...\"\n frontmatterEditor={{\n mode: \"verification\",\n models,\n families,\n secretSelector,\n }}\n />\n </SpecField>\n <div className=\"flex flex-wrap items-end gap-density-3\">\n <SpecField label=\"Scope\">\n <SegmentedControl\n aria-label=\"Verification scope\"\n size=\"sm\"\n value={(value.workflow?.verify?.scope || \"all\") as SpecVerifyScope}\n onChange={(scope) => onChange(withVerify(value, { scope }))}\n options={SCOPE_OPTIONS}\n />\n </SpecField>\n <div className=\"w-32\">\n <NumberField\n label=\"Max iterations\"\n value={value.workflow?.verify?.maxIterations}\n onChange={(maxIterations) =>\n onChange(withVerify(value, { maxIterations: maxIterations ?? 0 }))\n }\n icon={UiRepeat}\n min={0}\n step={1}\n integer\n />\n </div>\n </div>\n <ListField\n label=\"Commands\"\n value={value.workflow?.verify?.commands}\n onChange={(commands) => onChange(withVerify(value, { commands }))}\n placeholder=\"pnpm test\"\n icon={UiTerminal}\n />\n <ListField\n label=\"Prompts\"\n value={value.workflow?.verify?.prompts}\n onChange={(prompts) => onChange(withVerify(value, { prompts }))}\n placeholder=\"review.prompt\"\n icon={UiChatDots}\n />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAcA,MAAM,gBACJ,mBAAmB,IAAI,CAAC,WAAW;AAAA,EACjC,IAAI;AAAA,EACJ,OAAO,UAAU,QAAQ,cAAc;AACzC,EAAE;AAEG,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;;AACD,SACE,qBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,IAAA,oBAAC,WAAA,EAAU,OAAM,kBACf,UAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,YAAW;AAAA,QAC1C,UAAU,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,MAAK;AAAA,QACL,aAAY;AAAA,QACZ,mBAAmB;AAAA,UACjB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,IACA,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAA,oBAAC,WAAA,EAAU,OAAM,SACf,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,cAAW;AAAA,UACX,MAAK;AAAA,UACL,SAAQ,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB,UAAS;AAAA,UACzC,UAAU,CAAC,UAAU,SAAS,WAAW,OAAO,EAAE,MAAA,CAAO,CAAC;AAAA,UAC1D,SAAS;AAAA,QAAA;AAAA,MAAA,GAEb;AAAA,MACA,oBAAC,OAAA,EAAI,WAAU,QACb,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,UAC/B,UAAU,CAAC,kBACT,SAAS,WAAW,OAAO,EAAE,eAAe,iBAAiB,EAAA,CAAG,CAAC;AAAA,UAEnE,MAAM;AAAA,UACN,KAAK;AAAA,UACL,MAAM;AAAA,UACN,SAAO;AAAA,QAAA;AAAA,MAAA,EACT,CACF;AAAA,IAAA,GACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,aAAa,SAAS,WAAW,OAAO,EAAE,SAAA,CAAU,CAAC;AAAA,QAChE,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAER;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,OAAM;AAAA,QACN,QAAO,iBAAM,aAAN,mBAAgB,WAAhB,mBAAwB;AAAA,QAC/B,UAAU,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE,QAAA,CAAS,CAAC;AAAA,QAC9D,aAAY;AAAA,QACZ,MAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACR,GACF;AAEJ;"}
|
|
@@ -20,6 +20,7 @@ const permissionsModel = require("./permissions-model.cjs");
|
|
|
20
20
|
const summaries = require("./summaries.cjs");
|
|
21
21
|
const types = require("./types.cjs");
|
|
22
22
|
const runtimeMode = require("../../runtime/runtime-mode.cjs");
|
|
23
|
+
const runtimeFamily = require("../../../lib/runtime-family.cjs");
|
|
23
24
|
const runtimeFieldSupport = require("../../runtime/runtime-field-support.cjs");
|
|
24
25
|
const useScrollspy = require("./use-scrollspy.cjs");
|
|
25
26
|
const ADVANCED_HINTS = {
|
|
@@ -64,14 +65,14 @@ function SpecRuntimeEditor({
|
|
|
64
65
|
[permissionCatalog, tools]
|
|
65
66
|
);
|
|
66
67
|
const runtimeFamilies = (families == null ? void 0 : families.length) ? families : runtimeMode.SPEC_RUNTIME_FAMILIES;
|
|
67
|
-
const selectedFamily =
|
|
68
|
+
const selectedFamily = runtimeFamily.familyForModel(
|
|
68
69
|
runtimeFamilies,
|
|
69
70
|
models,
|
|
70
71
|
value.model || effectiveModel
|
|
71
72
|
);
|
|
72
|
-
const specMode =
|
|
73
|
+
const specMode = runtimeFamily.runtimeModeFromModel(value.model) || ((_a = value.mode) == null ? void 0 : _a.trim()) || (effectiveMode == null ? void 0 : effectiveMode.trim()) || runtimeMode.firstMode(runtimeFamilies[0] ?? runtimeMode.SPEC_RUNTIME_FAMILIES[0]).id;
|
|
73
74
|
const runtimeError = runtimeMode.runtimeModelError(value.model || effectiveModel) ?? runtimeMode.runtimeModeError(runtimeFamilies, specMode, selectedFamily == null ? void 0 : selectedFamily.id);
|
|
74
|
-
const selectedRuntime = runtimeError ? void 0 :
|
|
75
|
+
const selectedRuntime = runtimeError ? void 0 : runtimeFamily.modeOptionFor(runtimeFamilies, specMode, selectedFamily == null ? void 0 : selectedFamily.id);
|
|
75
76
|
const supports = selectedRuntime ? runtimeFieldSupport.runtimeFieldSupport(runtimeFamilies, specMode, selectedFamily == null ? void 0 : selectedFamily.id) : runtimeFieldSupport.SUPPORT_ALL_RUNTIME_FIELDS;
|
|
76
77
|
const runtimeSchema = selectedRuntime == null ? void 0 : selectedRuntime.schema;
|
|
77
78
|
const hasSandboxSection = runtimeSchema != null && runtimeFieldSupport.runtimeSchemaPropertyAtPath(runtimeSchema, "sandbox.mode") != null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/index.tsx"],"sourcesContent":["import { useId, useMemo, type ReactNode } from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type {\n AISpecRuntimePermissionCatalog,\n AISpecRuntimeValue,\n} from \"../SpecRuntimeEditor.model\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport { CLIArgsSection, type SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nimport { CommitSection } from \"./CommitSection\";\nimport { EnvironmentAdvanced, EnvironmentSection } from \"./EnvironmentSection\";\nimport { Footer } from \"./Footer\";\nimport { ModelContextAdvanced } from \"./ModelContextAdvanced\";\nimport { ModelAdvanced, ModelSection } from \"./ModelSection\";\nimport { PermissionsAdvanced, PermissionsSection } from \"./PermissionsSection\";\nimport { PromptAdvanced, PromptSection } from \"./PromptSection\";\nimport { Rail } from \"./Rail\";\nimport { SandboxSection } from \"./SandboxSection\";\nimport { SectionCard } from \"./SectionCard\";\nimport { VerifySection } from \"./VerifySection\";\nimport { WorkspaceSection } from \"./WorkspaceSection\";\nimport {\n buildPermissionCatalog,\n specPermissionEntries,\n withAddedPermission,\n withPermissionEntries,\n} from \"./permissions-model\";\nimport { summarizeTarget } from \"./summaries\";\nimport {\n SPEC_RUNTIME_SECTIONS,\n type SpecRuntimeSandboxCatalog,\n type SpecRuntimeSecretSelectorConfig,\n type SpecSectionId,\n} from \"./types\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n familyForModel,\n firstMode,\n runtimeModeError,\n runtimeModeFromModel,\n runtimeModelError,\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport {\n runtimeFieldSection,\n runtimeFieldSupport,\n runtimeSchemaPropertyAtPath,\n SUPPORT_ALL_RUNTIME_FIELDS,\n} from \"../../runtime/runtime-field-support\";\nimport { useScrollSpy } from \"./use-scrollspy\";\n\nexport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nexport type {\n SpecRuntimeSandboxAgent,\n SpecRuntimeSandboxBackend,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSandboxKind,\n SpecRuntimeSecretSelectorConfig,\n} from \"./types\";\nexport type { SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nexport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n type SpecRuntimeModeOption,\n} from \"../../runtime/runtime-mode\";\n\nexport type SpecRuntimeEditorProps = {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n /** Provider families for the two-axis Family → Mode picker in the model section. */\n families?: SpecRuntimeFamily[] | undefined;\n /** Resolved mode used to validate posture when this editable layer inherits it. */\n effectiveMode?: string | undefined;\n /** Resolved model used to identify the inherited provider family. */\n effectiveModel?: string | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n /** Schema for the runtime's extra CLI args; enables the CLI flags section. */\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Sandbox adapter catalog; enables the Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n /** Optional ordered section selection for embedded editors that only need part of the runtime spec. */\n sections?: readonly SpecSectionId[] | undefined;\n /** Presents prompt.user as a complete .prompt document body. */\n promptVariant?: \"runtime\" | \"document\" | undefined;\n /** Disables value controls while preserving section navigation and disclosures. */\n readOnly?: boolean | undefined;\n className?: string | undefined;\n title?: ReactNode | undefined;\n eyebrow?: ReactNode | undefined;\n /** Hide the editor rail when a host modal already supplies the context. */\n showHeader?: boolean | undefined;\n /** Content rendered before the first section inside the editor column. */\n beforeSections?: ReactNode | undefined;\n /** Sections that should start collapsed in embedded contexts. */\n defaultCollapsedSections?: readonly SpecSectionId[] | undefined;\n /** Restrict task-owned fields when editing a reusable preset fragment. */\n variant?: \"run\" | \"preset\" | undefined;\n /** Renders the sticky footer's save action when set. */\n onSave?: (() => void) | undefined;\n /** Renders the sticky footer's cancel action when set. */\n onCancel?: (() => void) | undefined;\n saveLabel?: string | undefined;\n footerStatus?: ReactNode | undefined;\n};\n\nconst ADVANCED_HINTS: Partial<Record<SpecSectionId, string>> = {\n model: \"fallbacks, session, caching, memory, skills\",\n prompt: \"schema\",\n permissions: \"tools, MCP, plugins\",\n environment: \"dotenv files\",\n};\n\n// Full-page runtime spec editor (design \"Runtime Spec Editor v2\"): a live\n// summary rail with scrollspy nav, preset quick-starts, and stacked numbered\n// sections. Container-responsive so it works embedded in a modal or standalone.\nexport function SpecRuntimeEditor({\n value,\n onChange,\n models = [],\n families,\n effectiveMode,\n effectiveModel,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n sandboxCatalog,\n sandboxCreate,\n sections: sectionFilter,\n promptVariant = \"runtime\",\n readOnly = false,\n className,\n title = \"Runtime Spec\",\n eyebrow = \"Agent configuration\",\n showHeader = true,\n beforeSections,\n defaultCollapsedSections,\n variant = \"run\",\n onSave,\n onCancel,\n saveLabel = \"Save & run\",\n footerStatus = \"Ready to run\",\n}: SpecRuntimeEditorProps) {\n const idPrefix = useId();\n const commitChange: (next: AISpecRuntimeValue) => void = readOnly\n ? () => undefined\n : onChange;\n const catalog = useMemo(\n () => buildPermissionCatalog(permissionCatalog, tools),\n [permissionCatalog, tools],\n );\n const runtimeFamilies = families?.length ? families : SPEC_RUNTIME_FAMILIES;\n const selectedFamily = familyForModel(\n runtimeFamilies,\n models,\n value.model || effectiveModel,\n );\n const specMode =\n runtimeModeFromModel(value.model) ||\n value.mode?.trim() ||\n effectiveMode?.trim() ||\n firstMode(runtimeFamilies[0] ?? SPEC_RUNTIME_FAMILIES[0]!).id;\n const runtimeError =\n runtimeModelError(value.model || effectiveModel) ??\n runtimeModeError(runtimeFamilies, specMode, selectedFamily?.id);\n const selectedRuntime = runtimeError\n ? undefined\n : modeOptionFor(runtimeFamilies, specMode, selectedFamily?.id);\n const supports = selectedRuntime\n ? runtimeFieldSupport(runtimeFamilies, specMode, selectedFamily?.id)\n : SUPPORT_ALL_RUNTIME_FIELDS;\n const runtimeSchema = selectedRuntime?.schema;\n const hasSandboxSection =\n runtimeSchema != null &&\n runtimeSchemaPropertyAtPath(runtimeSchema, \"sandbox.mode\") != null;\n const entries = useMemo(\n () => specPermissionEntries(value, catalog),\n [value, catalog],\n );\n const skillsSection = selectedRuntime\n ? (runtimeFieldSection(\n runtimeFamilies,\n specMode,\n \"permissions.skills\",\n selectedFamily?.id,\n ) ?? \"model\")\n : \"model\";\n const modelSkillEntries = entries.filter(\n (entry) =>\n entry.domain === \"skills\" &&\n skillsSection === \"model\" &&\n supports(\"permissions.skills\"),\n );\n const permissionEntries = entries.filter(\n (entry) =>\n (entry.domain !== \"skills\" || skillsSection === \"permissions\") &&\n supports(`permissions.${entry.domain}`),\n );\n const hasPermissionSection =\n (skillsSection === \"permissions\" && supports(\"permissions.skills\")) ||\n ([\"tools\", \"mcp\", \"plugins\"] as const).some((domain) =>\n supports(`permissions.${domain}`),\n );\n\n const requestedSections = useMemo(\n () =>\n sectionFilter\n ? sectionFilter.map((id) => {\n const section = SPEC_RUNTIME_SECTIONS.find(\n (candidate) => candidate.id === id,\n );\n if (!section)\n throw new Error(\n `unknown runtime editor section ${JSON.stringify(id)}`,\n );\n return section;\n })\n : SPEC_RUNTIME_SECTIONS,\n [sectionFilter],\n );\n // Sandbox modes come from the selected runtime schema. The adapter catalog is\n // optional metadata for configured Docker and Git Agent backends.\n const sections = requestedSections.filter(\n (section) =>\n (section.id !== \"cli\" || (cliOptions && supports(\"cliArgs\"))) &&\n (section.id !== \"sandbox\" || hasSandboxSection) &&\n (section.id !== \"permissions\" || hasPermissionSection),\n );\n const collapsedSections = useMemo(\n () => new Set(defaultCollapsedSections ?? []),\n [defaultCollapsedSections],\n );\n const domId = (id: SpecSectionId) => `${idPrefix}-${id}`;\n const { sectionRef } = useScrollSpy(\n sections.map((section) => domId(section.id)),\n );\n\n const applyEntries = (\n applied: Parameters<typeof withPermissionEntries>[1],\n mode: Parameters<typeof withPermissionEntries>[2],\n ) => commitChange(withPermissionEntries(value, applied, mode));\n const addEntry = (\n domain: Parameters<typeof withAddedPermission>[1],\n id: string,\n ) => {\n const next = withAddedPermission(value, domain, id);\n if (next) commitChange(next);\n };\n\n const sectionBody = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <ModelSection\n value={value}\n onChange={commitChange}\n models={models}\n effectiveMode={effectiveMode}\n effectiveModel={effectiveModel}\n families={runtimeFamilies}\n />\n );\n case \"prompt\":\n return (\n <PromptSection\n value={value}\n onChange={commitChange}\n supports={supports}\n variant={promptVariant}\n />\n );\n case \"workspace\":\n return (\n <WorkspaceSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n variant={variant}\n supports={supports}\n />\n );\n case \"sandbox\":\n return runtimeSchema ? (\n <SandboxSection\n value={value}\n onChange={commitChange}\n schema={runtimeSchema}\n {...(sandboxCatalog ? { catalog: sandboxCatalog } : {})}\n families={runtimeFamilies}\n {...(sandboxCreate ? { createConfig: sandboxCreate } : {})}\n />\n ) : null;\n case \"permissions\":\n return supports(\"permissions\") ? (\n <PermissionsSection\n value={value}\n onChange={commitChange}\n entries={permissionEntries}\n />\n ) : null;\n case \"environment\":\n return (\n <EnvironmentSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n />\n );\n case \"verify\":\n return (\n <VerifySection\n value={value}\n onChange={commitChange}\n models={models}\n families={runtimeFamilies}\n {...(secretSelector ? { secretSelector } : {})}\n />\n );\n case \"commit\":\n return <CommitSection value={value} onChange={commitChange} />;\n case \"cli\":\n return cliOptions ? (\n <CLIArgsSection\n value={value}\n onChange={commitChange}\n cliOptions={cliOptions}\n />\n ) : null;\n }\n };\n\n const sectionAdvanced = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <div className=\"grid gap-density-3\">\n <ModelAdvanced\n value={value}\n onChange={commitChange}\n models={models}\n supports={supports}\n families={runtimeFamilies}\n />\n <ModelContextAdvanced\n value={value}\n onChange={commitChange}\n entries={modelSkillEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n showSkills={skillsSection === \"model\"}\n supports={supports}\n />\n </div>\n );\n case \"prompt\":\n return supports(\"prompt.schema\") ? (\n <PromptAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n case \"permissions\":\n return (\n <PermissionsAdvanced\n entries={permissionEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n includeSkills={skillsSection === \"permissions\"}\n supports={supports}\n />\n );\n case \"environment\":\n return variant === \"run\" ? (\n <EnvironmentAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n default:\n return undefined;\n }\n };\n\n const valueControls = (content: ReactNode) =>\n readOnly && content ? (\n <fieldset disabled className=\"m-0 min-w-0 border-0 p-0\">\n {content}\n </fieldset>\n ) : (\n content\n );\n\n return (\n <div className={cn(\"@container\", className)}>\n <div className=\"mx-auto max-w-[820px] px-density-4 py-density-4\">\n {showHeader && (\n <Rail\n eyebrow={eyebrow}\n title={title}\n target={summarizeTarget(value)}\n />\n )}\n {runtimeError ? (\n <div\n role=\"alert\"\n className=\"mb-density-3 rounded-md border border-destructive/40 bg-destructive/10 px-density-3 py-density-2 text-sm text-destructive\"\n >\n {runtimeError} Select a valid mode below or switch to Raw to\n repair the prompt source.\n </div>\n ) : null}\n {beforeSections}\n {sections.map((section, index) => (\n <SectionCard\n key={section.id}\n meta={\n section.id === \"prompt\" && promptVariant === \"document\"\n ? {\n ...section,\n hint: \"The .prompt document body and its explicit system fields.\",\n }\n : section\n }\n number={String(index + 1).padStart(2, \"0\")}\n domId={domId(section.id)}\n sectionRef={sectionRef(domId(section.id))}\n advanced={valueControls(sectionAdvanced(section.id))}\n advancedHint={ADVANCED_HINTS[section.id]}\n defaultCollapsed={collapsedSections.has(section.id)}\n >\n {valueControls(sectionBody(section.id))}\n </SectionCard>\n ))}\n </div>\n {(onSave || onCancel) && (\n <Footer\n status={footerStatus}\n saveLabel={saveLabel}\n onSave={onSave}\n onCancel={onCancel}\n />\n )}\n </div>\n );\n}\n"],"names":["useId","useMemo","buildPermissionCatalog","SPEC_RUNTIME_FAMILIES","familyForModel","runtimeModeFromModel","firstMode","runtimeModelError","runtimeModeError","modeOptionFor","runtimeFieldSupport","SUPPORT_ALL_RUNTIME_FIELDS","runtimeSchemaPropertyAtPath","specPermissionEntries","runtimeFieldSection","SPEC_RUNTIME_SECTIONS","useScrollSpy","withPermissionEntries","withAddedPermission","jsx","ModelSection","PromptSection","WorkspaceSection","SandboxSection","PermissionsSection","EnvironmentSection","VerifySection","CommitSection","CLIArgsSection","jsxs","ModelAdvanced","ModelContextAdvanced","PromptAdvanced","PermissionsAdvanced","EnvironmentAdvanced","cn","Rail","summarizeTarget","SectionCard","Footer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/index.tsx"],"sourcesContent":["import { useId, useMemo, type ReactNode } from \"react\";\nimport { cn } from \"../../../lib/utils\";\nimport type { ChatModel, ToolMeta } from \"../../chat/types\";\nimport type {\n AISpecRuntimePermissionCatalog,\n AISpecRuntimeValue,\n} from \"../SpecRuntimeEditor.model\";\nimport type { SpecRuntimeSandboxCreateConfig } from \"../SandboxCreateWizard.model\";\nimport { CLIArgsSection, type SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nimport { CommitSection } from \"./CommitSection\";\nimport { EnvironmentAdvanced, EnvironmentSection } from \"./EnvironmentSection\";\nimport { Footer } from \"./Footer\";\nimport { ModelContextAdvanced } from \"./ModelContextAdvanced\";\nimport { ModelAdvanced, ModelSection } from \"./ModelSection\";\nimport { PermissionsAdvanced, PermissionsSection } from \"./PermissionsSection\";\nimport { PromptAdvanced, PromptSection } from \"./PromptSection\";\nimport { Rail } from \"./Rail\";\nimport { SandboxSection } from \"./SandboxSection\";\nimport { SectionCard } from \"./SectionCard\";\nimport { VerifySection } from \"./VerifySection\";\nimport { WorkspaceSection } from \"./WorkspaceSection\";\nimport {\n buildPermissionCatalog,\n specPermissionEntries,\n withAddedPermission,\n withPermissionEntries,\n} from \"./permissions-model\";\nimport { summarizeTarget } from \"./summaries\";\nimport {\n SPEC_RUNTIME_SECTIONS,\n type SpecRuntimeSandboxCatalog,\n type SpecRuntimeSecretSelectorConfig,\n type SpecSectionId,\n} from \"./types\";\nimport {\n SPEC_RUNTIME_FAMILIES,\n firstMode,\n runtimeModeError,\n runtimeModeFromModel,\n runtimeModelError,\n modeOptionFor,\n type SpecRuntimeFamily,\n} from \"../../runtime/runtime-mode\";\nimport { familyForModel } from \"../../../lib/runtime-family\";\nimport {\n runtimeFieldSection,\n runtimeFieldSupport,\n runtimeSchemaPropertyAtPath,\n SUPPORT_ALL_RUNTIME_FIELDS,\n} from \"../../runtime/runtime-field-support\";\nimport { useScrollSpy } from \"./use-scrollspy\";\n\nexport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nexport type {\n SpecRuntimeSandboxAgent,\n SpecRuntimeSandboxBackend,\n SpecRuntimeSandboxCatalog,\n SpecRuntimeSandboxKind,\n SpecRuntimeSecretSelectorConfig,\n} from \"./types\";\nexport type { SpecRuntimeCLIOptions } from \"./CLIArgsSection\";\nexport {\n SPEC_RUNTIME_FAMILIES,\n type SpecRuntimeFamily,\n type SpecRuntimeModeOption,\n} from \"../../runtime/runtime-mode\";\n\nexport type SpecRuntimeEditorProps = {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n models?: ChatModel[] | undefined;\n /** Provider families for the two-axis Family → Mode picker in the model section. */\n families?: SpecRuntimeFamily[] | undefined;\n /** Resolved mode used to validate posture when this editable layer inherits it. */\n effectiveMode?: string | undefined;\n /** Resolved model used to identify the inherited provider family. */\n effectiveModel?: string | undefined;\n tools?: ToolMeta[] | undefined;\n permissionCatalog?: AISpecRuntimePermissionCatalog | undefined;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n /** Schema for the runtime's extra CLI args; enables the CLI flags section. */\n cliOptions?: SpecRuntimeCLIOptions | undefined;\n /** Sandbox adapter catalog; enables the Sandbox section. */\n sandboxCatalog?: SpecRuntimeSandboxCatalog | undefined;\n /** Host-owned sandbox creation and credential-reference adapter. */\n sandboxCreate?: SpecRuntimeSandboxCreateConfig | undefined;\n /** Optional ordered section selection for embedded editors that only need part of the runtime spec. */\n sections?: readonly SpecSectionId[] | undefined;\n /** Presents prompt.user as a complete .prompt document body. */\n promptVariant?: \"runtime\" | \"document\" | undefined;\n /** Disables value controls while preserving section navigation and disclosures. */\n readOnly?: boolean | undefined;\n className?: string | undefined;\n title?: ReactNode | undefined;\n eyebrow?: ReactNode | undefined;\n /** Hide the editor rail when a host modal already supplies the context. */\n showHeader?: boolean | undefined;\n /** Content rendered before the first section inside the editor column. */\n beforeSections?: ReactNode | undefined;\n /** Sections that should start collapsed in embedded contexts. */\n defaultCollapsedSections?: readonly SpecSectionId[] | undefined;\n /** Restrict task-owned fields when editing a reusable preset fragment. */\n variant?: \"run\" | \"preset\" | undefined;\n /** Renders the sticky footer's save action when set. */\n onSave?: (() => void) | undefined;\n /** Renders the sticky footer's cancel action when set. */\n onCancel?: (() => void) | undefined;\n saveLabel?: string | undefined;\n footerStatus?: ReactNode | undefined;\n};\n\nconst ADVANCED_HINTS: Partial<Record<SpecSectionId, string>> = {\n model: \"fallbacks, session, caching, memory, skills\",\n prompt: \"schema\",\n permissions: \"tools, MCP, plugins\",\n environment: \"dotenv files\",\n};\n\n// Full-page runtime spec editor (design \"Runtime Spec Editor v2\"): a live\n// summary rail with scrollspy nav, preset quick-starts, and stacked numbered\n// sections. Container-responsive so it works embedded in a modal or standalone.\nexport function SpecRuntimeEditor({\n value,\n onChange,\n models = [],\n families,\n effectiveMode,\n effectiveModel,\n tools = [],\n permissionCatalog,\n secretSelector,\n cliOptions,\n sandboxCatalog,\n sandboxCreate,\n sections: sectionFilter,\n promptVariant = \"runtime\",\n readOnly = false,\n className,\n title = \"Runtime Spec\",\n eyebrow = \"Agent configuration\",\n showHeader = true,\n beforeSections,\n defaultCollapsedSections,\n variant = \"run\",\n onSave,\n onCancel,\n saveLabel = \"Save & run\",\n footerStatus = \"Ready to run\",\n}: SpecRuntimeEditorProps) {\n const idPrefix = useId();\n const commitChange: (next: AISpecRuntimeValue) => void = readOnly\n ? () => undefined\n : onChange;\n const catalog = useMemo(\n () => buildPermissionCatalog(permissionCatalog, tools),\n [permissionCatalog, tools],\n );\n const runtimeFamilies = families?.length ? families : SPEC_RUNTIME_FAMILIES;\n const selectedFamily = familyForModel(\n runtimeFamilies,\n models,\n value.model || effectiveModel,\n );\n const specMode =\n runtimeModeFromModel(value.model) ||\n value.mode?.trim() ||\n effectiveMode?.trim() ||\n firstMode(runtimeFamilies[0] ?? SPEC_RUNTIME_FAMILIES[0]!).id;\n const runtimeError =\n runtimeModelError(value.model || effectiveModel) ??\n runtimeModeError(runtimeFamilies, specMode, selectedFamily?.id);\n const selectedRuntime = runtimeError\n ? undefined\n : modeOptionFor(runtimeFamilies, specMode, selectedFamily?.id);\n const supports = selectedRuntime\n ? runtimeFieldSupport(runtimeFamilies, specMode, selectedFamily?.id)\n : SUPPORT_ALL_RUNTIME_FIELDS;\n const runtimeSchema = selectedRuntime?.schema;\n const hasSandboxSection =\n runtimeSchema != null &&\n runtimeSchemaPropertyAtPath(runtimeSchema, \"sandbox.mode\") != null;\n const entries = useMemo(\n () => specPermissionEntries(value, catalog),\n [value, catalog],\n );\n const skillsSection = selectedRuntime\n ? (runtimeFieldSection(\n runtimeFamilies,\n specMode,\n \"permissions.skills\",\n selectedFamily?.id,\n ) ?? \"model\")\n : \"model\";\n const modelSkillEntries = entries.filter(\n (entry) =>\n entry.domain === \"skills\" &&\n skillsSection === \"model\" &&\n supports(\"permissions.skills\"),\n );\n const permissionEntries = entries.filter(\n (entry) =>\n (entry.domain !== \"skills\" || skillsSection === \"permissions\") &&\n supports(`permissions.${entry.domain}`),\n );\n const hasPermissionSection =\n (skillsSection === \"permissions\" && supports(\"permissions.skills\")) ||\n ([\"tools\", \"mcp\", \"plugins\"] as const).some((domain) =>\n supports(`permissions.${domain}`),\n );\n\n const requestedSections = useMemo(\n () =>\n sectionFilter\n ? sectionFilter.map((id) => {\n const section = SPEC_RUNTIME_SECTIONS.find(\n (candidate) => candidate.id === id,\n );\n if (!section)\n throw new Error(\n `unknown runtime editor section ${JSON.stringify(id)}`,\n );\n return section;\n })\n : SPEC_RUNTIME_SECTIONS,\n [sectionFilter],\n );\n // Sandbox modes come from the selected runtime schema. The adapter catalog is\n // optional metadata for configured Docker and Git Agent backends.\n const sections = requestedSections.filter(\n (section) =>\n (section.id !== \"cli\" || (cliOptions && supports(\"cliArgs\"))) &&\n (section.id !== \"sandbox\" || hasSandboxSection) &&\n (section.id !== \"permissions\" || hasPermissionSection),\n );\n const collapsedSections = useMemo(\n () => new Set(defaultCollapsedSections ?? []),\n [defaultCollapsedSections],\n );\n const domId = (id: SpecSectionId) => `${idPrefix}-${id}`;\n const { sectionRef } = useScrollSpy(\n sections.map((section) => domId(section.id)),\n );\n\n const applyEntries = (\n applied: Parameters<typeof withPermissionEntries>[1],\n mode: Parameters<typeof withPermissionEntries>[2],\n ) => commitChange(withPermissionEntries(value, applied, mode));\n const addEntry = (\n domain: Parameters<typeof withAddedPermission>[1],\n id: string,\n ) => {\n const next = withAddedPermission(value, domain, id);\n if (next) commitChange(next);\n };\n\n const sectionBody = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <ModelSection\n value={value}\n onChange={commitChange}\n models={models}\n effectiveMode={effectiveMode}\n effectiveModel={effectiveModel}\n families={runtimeFamilies}\n />\n );\n case \"prompt\":\n return (\n <PromptSection\n value={value}\n onChange={commitChange}\n supports={supports}\n variant={promptVariant}\n />\n );\n case \"workspace\":\n return (\n <WorkspaceSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n variant={variant}\n supports={supports}\n />\n );\n case \"sandbox\":\n return runtimeSchema ? (\n <SandboxSection\n value={value}\n onChange={commitChange}\n schema={runtimeSchema}\n {...(sandboxCatalog ? { catalog: sandboxCatalog } : {})}\n families={runtimeFamilies}\n {...(sandboxCreate ? { createConfig: sandboxCreate } : {})}\n />\n ) : null;\n case \"permissions\":\n return supports(\"permissions\") ? (\n <PermissionsSection\n value={value}\n onChange={commitChange}\n entries={permissionEntries}\n />\n ) : null;\n case \"environment\":\n return (\n <EnvironmentSection\n value={value}\n onChange={commitChange}\n secretSelector={secretSelector}\n />\n );\n case \"verify\":\n return (\n <VerifySection\n value={value}\n onChange={commitChange}\n models={models}\n families={runtimeFamilies}\n {...(secretSelector ? { secretSelector } : {})}\n />\n );\n case \"commit\":\n return <CommitSection value={value} onChange={commitChange} />;\n case \"cli\":\n return cliOptions ? (\n <CLIArgsSection\n value={value}\n onChange={commitChange}\n cliOptions={cliOptions}\n />\n ) : null;\n }\n };\n\n const sectionAdvanced = (id: SpecSectionId): ReactNode => {\n switch (id) {\n case \"model\":\n return (\n <div className=\"grid gap-density-3\">\n <ModelAdvanced\n value={value}\n onChange={commitChange}\n models={models}\n supports={supports}\n families={runtimeFamilies}\n />\n <ModelContextAdvanced\n value={value}\n onChange={commitChange}\n entries={modelSkillEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n showSkills={skillsSection === \"model\"}\n supports={supports}\n />\n </div>\n );\n case \"prompt\":\n return supports(\"prompt.schema\") ? (\n <PromptAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n case \"permissions\":\n return (\n <PermissionsAdvanced\n entries={permissionEntries}\n onApplyEntries={applyEntries}\n onAddEntry={addEntry}\n includeSkills={skillsSection === \"permissions\"}\n supports={supports}\n />\n );\n case \"environment\":\n return variant === \"run\" ? (\n <EnvironmentAdvanced value={value} onChange={commitChange} />\n ) : undefined;\n default:\n return undefined;\n }\n };\n\n const valueControls = (content: ReactNode) =>\n readOnly && content ? (\n <fieldset disabled className=\"m-0 min-w-0 border-0 p-0\">\n {content}\n </fieldset>\n ) : (\n content\n );\n\n return (\n <div className={cn(\"@container\", className)}>\n <div className=\"mx-auto max-w-[820px] px-density-4 py-density-4\">\n {showHeader && (\n <Rail\n eyebrow={eyebrow}\n title={title}\n target={summarizeTarget(value)}\n />\n )}\n {runtimeError ? (\n <div\n role=\"alert\"\n className=\"mb-density-3 rounded-md border border-destructive/40 bg-destructive/10 px-density-3 py-density-2 text-sm text-destructive\"\n >\n {runtimeError} Select a valid mode below or switch to Raw to repair\n the prompt source.\n </div>\n ) : null}\n {beforeSections}\n {sections.map((section, index) => (\n <SectionCard\n key={section.id}\n meta={\n section.id === \"prompt\" && promptVariant === \"document\"\n ? {\n ...section,\n hint: \"The .prompt document body and its explicit system fields.\",\n }\n : section\n }\n number={String(index + 1).padStart(2, \"0\")}\n domId={domId(section.id)}\n sectionRef={sectionRef(domId(section.id))}\n advanced={valueControls(sectionAdvanced(section.id))}\n advancedHint={ADVANCED_HINTS[section.id]}\n defaultCollapsed={collapsedSections.has(section.id)}\n >\n {valueControls(sectionBody(section.id))}\n </SectionCard>\n ))}\n </div>\n {(onSave || onCancel) && (\n <Footer\n status={footerStatus}\n saveLabel={saveLabel}\n onSave={onSave}\n onCancel={onCancel}\n />\n )}\n </div>\n );\n}\n"],"names":["useId","useMemo","buildPermissionCatalog","SPEC_RUNTIME_FAMILIES","familyForModel","runtimeModeFromModel","firstMode","runtimeModelError","runtimeModeError","modeOptionFor","runtimeFieldSupport","SUPPORT_ALL_RUNTIME_FIELDS","runtimeSchemaPropertyAtPath","specPermissionEntries","runtimeFieldSection","SPEC_RUNTIME_SECTIONS","useScrollSpy","withPermissionEntries","withAddedPermission","jsx","ModelSection","PromptSection","WorkspaceSection","SandboxSection","PermissionsSection","EnvironmentSection","VerifySection","CommitSection","CLIArgsSection","jsxs","ModelAdvanced","ModelContextAdvanced","PromptAdvanced","PermissionsAdvanced","EnvironmentAdvanced","cn","Rail","summarizeTarget","SectionCard","Footer"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EACV,8BAA8B,EAC9B,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAoB9E,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACpC,KAAK,aAAa,EACnB,MAAM,SAAS,CAAC;AACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,8 @@ import { WorkspaceSection } from "./WorkspaceSection.js";
|
|
|
17
17
|
import { buildPermissionCatalog, specPermissionEntries, withAddedPermission, withPermissionEntries } from "./permissions-model.js";
|
|
18
18
|
import { summarizeTarget } from "./summaries.js";
|
|
19
19
|
import { SPEC_RUNTIME_SECTIONS } from "./types.js";
|
|
20
|
-
import { SPEC_RUNTIME_FAMILIES,
|
|
20
|
+
import { SPEC_RUNTIME_FAMILIES, firstMode, runtimeModelError, runtimeModeError } from "../../runtime/runtime-mode.js";
|
|
21
|
+
import { familyForModel, runtimeModeFromModel, modeOptionFor } from "../../../lib/runtime-family.js";
|
|
21
22
|
import { runtimeFieldSupport, SUPPORT_ALL_RUNTIME_FIELDS, runtimeSchemaPropertyAtPath, runtimeFieldSection } from "../../runtime/runtime-field-support.js";
|
|
22
23
|
import { useScrollSpy } from "./use-scrollspy.js";
|
|
23
24
|
const ADVANCED_HINTS = {
|