@flanksource/clicky-ui 0.3.15 → 0.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE.md +10 -0
- package/dist/ai.cjs +33 -4
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +31 -2
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +6 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +7 -1
- package/dist/chat.js.map +1 -1
- package/dist/components/Combobox.cjs +92 -170
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +2 -111
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +95 -173
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxActions.cjs +70 -0
- package/dist/components/ComboboxActions.cjs.map +1 -0
- package/dist/components/ComboboxActions.d.ts +8 -0
- package/dist/components/ComboboxActions.d.ts.map +1 -0
- package/dist/components/ComboboxActions.js +70 -0
- package/dist/components/ComboboxActions.js.map +1 -0
- package/dist/components/ComboboxMenu.cjs +160 -0
- package/dist/components/ComboboxMenu.cjs.map +1 -0
- package/dist/components/ComboboxMenu.d.ts +22 -0
- package/dist/components/ComboboxMenu.d.ts.map +1 -0
- package/dist/components/ComboboxMenu.js +160 -0
- package/dist/components/ComboboxMenu.js.map +1 -0
- package/dist/components/EndpointSelector.cjs +407 -0
- package/dist/components/EndpointSelector.cjs.map +1 -0
- package/dist/components/EndpointSelector.d.ts +3 -0
- package/dist/components/EndpointSelector.d.ts.map +1 -0
- package/dist/components/EndpointSelector.js +407 -0
- package/dist/components/EndpointSelector.js.map +1 -0
- package/dist/components/EndpointSelector.model.d.ts +52 -0
- package/dist/components/EndpointSelector.model.d.ts.map +1 -0
- package/dist/components/FilterBar.cjs +12 -0
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +4 -0
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +12 -0
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/InputField.cjs +11 -12
- package/dist/components/InputField.cjs.map +1 -1
- package/dist/components/InputField.d.ts +7 -0
- package/dist/components/InputField.d.ts.map +1 -1
- package/dist/components/InputField.js +12 -13
- package/dist/components/InputField.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +22 -16
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +22 -16
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/MultiSelect.cjs +3 -3
- package/dist/components/MultiSelect.cjs.map +1 -1
- package/dist/components/MultiSelect.d.ts.map +1 -1
- package/dist/components/MultiSelect.js +3 -3
- package/dist/components/MultiSelect.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +150 -77
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +151 -78
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/WorkloadPicker.cjs +2 -1
- package/dist/components/WorkloadPicker.cjs.map +1 -1
- package/dist/components/WorkloadPicker.d.ts +6 -1
- package/dist/components/WorkloadPicker.d.ts.map +1 -1
- package/dist/components/WorkloadPicker.js +2 -1
- package/dist/components/WorkloadPicker.js.map +1 -1
- package/dist/components/combobox-types.d.ts +107 -0
- package/dist/components/combobox-types.d.ts.map +1 -0
- package/dist/components/combobox-utils.cjs +21 -0
- package/dist/components/combobox-utils.cjs.map +1 -0
- package/dist/components/combobox-utils.d.ts +15 -0
- package/dist/components/combobox-utils.d.ts.map +1 -0
- package/dist/components/combobox-utils.js +21 -0
- package/dist/components/combobox-utils.js.map +1 -0
- package/dist/components/endpoint-port.cjs +12 -0
- package/dist/components/endpoint-port.cjs.map +1 -0
- package/dist/components/endpoint-port.d.ts +4 -0
- package/dist/components/endpoint-port.d.ts.map +1 -0
- package/dist/components/endpoint-port.js +12 -0
- package/dist/components/endpoint-port.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +12 -23
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +12 -23
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-discriminator.cjs +6 -2
- package/dist/components/json-schema-form-discriminator.cjs.map +1 -1
- package/dist/components/json-schema-form-discriminator.d.ts.map +1 -1
- package/dist/components/json-schema-form-discriminator.js +6 -2
- package/dist/components/json-schema-form-discriminator.js.map +1 -1
- package/dist/components/json-schema-form-error-display.cjs +50 -0
- package/dist/components/json-schema-form-error-display.cjs.map +1 -0
- package/dist/components/json-schema-form-error-display.d.ts +12 -0
- package/dist/components/json-schema-form-error-display.d.ts.map +1 -0
- package/dist/components/json-schema-form-error-display.js +50 -0
- package/dist/components/json-schema-form-error-display.js.map +1 -0
- package/dist/components/json-schema-form-error-types.d.ts +26 -0
- package/dist/components/json-schema-form-error-types.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.cjs +169 -0
- package/dist/components/json-schema-form-errors.cjs.map +1 -0
- package/dist/components/json-schema-form-errors.d.ts +14 -0
- package/dist/components/json-schema-form-errors.d.ts.map +1 -0
- package/dist/components/json-schema-form-errors.js +169 -0
- package/dist/components/json-schema-form-errors.js.map +1 -0
- package/dist/components/json-schema-form-object.cjs +12 -2
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +12 -2
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-refs.cjs +84 -19
- package/dist/components/json-schema-form-refs.cjs.map +1 -1
- package/dist/components/json-schema-form-refs.d.ts.map +1 -1
- package/dist/components/json-schema-form-refs.js +84 -19
- package/dist/components/json-schema-form-refs.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +33 -10
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +34 -11
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +16 -4
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +17 -5
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +4 -3
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components.cjs +13 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +8 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +15 -2
- package/dist/components.js.map +1 -1
- package/dist/data/DataTable.cjs +177 -6
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +39 -0
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.grouping.cjs +21 -0
- package/dist/data/DataTable.grouping.cjs.map +1 -0
- package/dist/data/DataTable.grouping.d.ts +26 -0
- package/dist/data/DataTable.grouping.d.ts.map +1 -0
- package/dist/data/DataTable.grouping.js +21 -0
- package/dist/data/DataTable.grouping.js.map +1 -0
- package/dist/data/DataTable.js +177 -6
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/Markdown.cjs +45 -1
- package/dist/data/Markdown.cjs.map +1 -1
- package/dist/data/Markdown.d.ts +3 -2
- package/dist/data/Markdown.d.ts.map +1 -1
- package/dist/data/Markdown.js +45 -1
- package/dist/data/Markdown.js.map +1 -1
- package/dist/data/MarkdownEditor.cjs +4 -3
- package/dist/data/MarkdownEditor.cjs.map +1 -1
- package/dist/data/MarkdownEditor.d.ts +6 -2
- package/dist/data/MarkdownEditor.d.ts.map +1 -1
- package/dist/data/MarkdownEditor.js +4 -3
- package/dist/data/MarkdownEditor.js.map +1 -1
- package/dist/data/StatStrip.cjs +99 -0
- package/dist/data/StatStrip.cjs.map +1 -0
- package/dist/data/StatStrip.d.ts +41 -0
- package/dist/data/StatStrip.d.ts.map +1 -0
- package/dist/data/StatStrip.js +99 -0
- package/dist/data/StatStrip.js.map +1 -0
- package/dist/data/TaskManager.cjs +20 -1
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts +3 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +20 -1
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +49 -0
- package/dist/data/TaskManagerButton.cjs.map +1 -0
- package/dist/data/TaskManagerButton.d.ts +8 -0
- package/dist/data/TaskManagerButton.d.ts.map +1 -0
- package/dist/data/TaskManagerButton.js +49 -0
- package/dist/data/TaskManagerButton.js.map +1 -0
- package/dist/data/TaskProcessDetails.cjs +113 -0
- package/dist/data/TaskProcessDetails.cjs.map +1 -0
- package/dist/data/TaskProcessDetails.d.ts +6 -0
- package/dist/data/TaskProcessDetails.d.ts.map +1 -0
- package/dist/data/TaskProcessDetails.js +113 -0
- package/dist/data/TaskProcessDetails.js.map +1 -0
- package/dist/data/TaskProgress.cjs +106 -19
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +4 -2
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +107 -20
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +43 -0
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/Tree.cjs +91 -82
- package/dist/data/Tree.cjs.map +1 -1
- package/dist/data/Tree.d.ts +3 -1
- package/dist/data/Tree.d.ts.map +1 -1
- package/dist/data/Tree.js +91 -82
- package/dist/data/Tree.js.map +1 -1
- package/dist/data/TreeNode.cjs +3 -0
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts +2 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +3 -0
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +9 -140
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +2 -40
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +6 -137
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.models.cjs +11 -0
- package/dist/data/ai/ChatWindow.models.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.models.d.ts +3 -0
- package/dist/data/ai/ChatWindow.models.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.models.js +11 -0
- package/dist/data/ai/ChatWindow.models.js.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.cjs +57 -0
- package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts +13 -0
- package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.preferences.js +57 -0
- package/dist/data/ai/ChatWindow.preferences.js.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +3 -0
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js +99 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -0
- package/dist/data/ai/ChatWindow.types.d.ts +41 -0
- package/dist/data/ai/ChatWindow.types.d.ts.map +1 -0
- package/dist/data/ai/ContextBadges.cjs +76 -46
- package/dist/data/ai/ContextBadges.cjs.map +1 -1
- package/dist/data/ai/ContextBadges.d.ts.map +1 -1
- package/dist/data/ai/ContextBadges.js +77 -47
- package/dist/data/ai/ContextBadges.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +151 -32
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +7 -4
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js +152 -33
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +11 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js +133 -0
- package/dist/data/ai/PromptPicker/PromptSourceRepair.js.map +1 -0
- package/dist/data/ai/PromptPicker/index.d.ts +2 -1
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.cjs +7 -0
- package/dist/data/ai/PromptPicker/types.cjs.map +1 -0
- package/dist/data/ai/PromptPicker/types.d.ts +18 -2
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.js +7 -0
- package/dist/data/ai/PromptPicker/types.js.map +1 -0
- package/dist/data/ai/PromptRunEditor/index.cjs +82 -14
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +5 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +83 -15
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/RuntimeBar.cjs +336 -0
- package/dist/data/ai/RuntimeBar.cjs.map +1 -0
- package/dist/data/ai/RuntimeBar.d.ts +27 -0
- package/dist/data/ai/RuntimeBar.d.ts.map +1 -0
- package/dist/data/ai/RuntimeBar.js +336 -0
- package/dist/data/ai/RuntimeBar.js.map +1 -0
- package/dist/data/ai/SessionChatComposer.cjs +56 -0
- package/dist/data/ai/SessionChatComposer.cjs.map +1 -0
- package/dist/data/ai/SessionChatComposer.d.ts +24 -0
- package/dist/data/ai/SessionChatComposer.d.ts.map +1 -0
- package/dist/data/ai/SessionChatComposer.js +56 -0
- package/dist/data/ai/SessionChatComposer.js.map +1 -0
- package/dist/data/ai/SessionInspector.cjs +222 -382
- package/dist/data/ai/SessionInspector.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts +55 -0
- package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.cjs +377 -0
- package/dist/data/ai/SessionInspector.collection.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.collection.d.ts +15 -0
- package/dist/data/ai/SessionInspector.collection.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.collection.js +377 -0
- package/dist/data/ai/SessionInspector.collection.js.map +1 -0
- package/dist/data/ai/SessionInspector.d.ts +9 -4
- package/dist/data/ai/SessionInspector.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.files.cjs +162 -0
- package/dist/data/ai/SessionInspector.files.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.files.d.ts +5 -0
- package/dist/data/ai/SessionInspector.files.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.files.js +162 -0
- package/dist/data/ai/SessionInspector.files.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +15 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js +148 -0
- package/dist/data/ai/SessionInspector.hierarchy-state.js.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts +9 -0
- package/dist/data/ai/SessionInspector.hierarchy.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.hierarchy.js +256 -0
- package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -0
- package/dist/data/ai/SessionInspector.js +224 -384
- package/dist/data/ai/SessionInspector.js.map +1 -1
- package/dist/data/ai/SessionInspector.model.cjs +125 -0
- package/dist/data/ai/SessionInspector.model.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.model.d.ts +14 -0
- package/dist/data/ai/SessionInspector.model.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.model.js +125 -0
- package/dist/data/ai/SessionInspector.model.js.map +1 -0
- package/dist/data/ai/SessionInspector.panels.cjs +265 -0
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.panels.d.ts +10 -0
- package/dist/data/ai/SessionInspector.panels.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.panels.js +265 -0
- package/dist/data/ai/SessionInspector.panels.js.map +1 -0
- package/dist/data/ai/SessionInspector.plan.cjs +77 -0
- package/dist/data/ai/SessionInspector.plan.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.plan.d.ts +6 -0
- package/dist/data/ai/SessionInspector.plan.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.plan.js +77 -0
- package/dist/data/ai/SessionInspector.plan.js.map +1 -0
- package/dist/data/ai/SessionInspector.summary.cjs +182 -0
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.summary.d.ts +8 -0
- package/dist/data/ai/SessionInspector.summary.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.summary.js +182 -0
- package/dist/data/ai/SessionInspector.summary.js.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.cjs +94 -0
- package/dist/data/ai/SessionInspector.transcript.cjs.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts +7 -0
- package/dist/data/ai/SessionInspector.transcript.d.ts.map +1 -0
- package/dist/data/ai/SessionInspector.transcript.js +94 -0
- package/dist/data/ai/SessionInspector.transcript.js.map +1 -0
- package/dist/data/ai/SessionInspector.turns.d.ts +11 -0
- package/dist/data/ai/SessionInspector.turns.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.cjs +86 -121
- package/dist/data/ai/SessionViewer.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.d.ts +8 -1
- package/dist/data/ai/SessionViewer.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -0
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.header.cjs +110 -0
- package/dist/data/ai/SessionViewer.header.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.header.d.ts +11 -0
- package/dist/data/ai/SessionViewer.header.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.header.js +110 -0
- package/dist/data/ai/SessionViewer.header.js.map +1 -0
- package/dist/data/ai/SessionViewer.js +87 -122
- package/dist/data/ai/SessionViewer.js.map +1 -1
- package/dist/data/ai/SessionViewer.model.cjs +109 -39
- package/dist/data/ai/SessionViewer.model.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.model.d.ts +2 -0
- package/dist/data/ai/SessionViewer.model.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.model.js +109 -39
- package/dist/data/ai/SessionViewer.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.row-metadata.cjs +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts +14 -0
- package/dist/data/ai/SessionViewer.row-metadata.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-metadata.js +132 -0
- package/dist/data/ai/SessionViewer.row-metadata.js.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.cjs +15 -0
- package/dist/data/ai/SessionViewer.row-time.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts +3 -0
- package/dist/data/ai/SessionViewer.row-time.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.row-time.js +15 -0
- package/dist/data/ai/SessionViewer.row-time.js.map +1 -0
- package/dist/data/ai/SessionViewer.rows.cjs +37 -424
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +5 -2
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +31 -418
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SessionViewer.tool-details.cjs +65 -0
- package/dist/data/ai/SessionViewer.tool-details.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts +20 -0
- package/dist/data/ai/SessionViewer.tool-details.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-details.js +65 -0
- package/dist/data/ai/SessionViewer.tool-details.js.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs +404 -0
- package/dist/data/ai/SessionViewer.tool-row.cjs.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts +12 -0
- package/dist/data/ai/SessionViewer.tool-row.d.ts.map +1 -0
- package/dist/data/ai/SessionViewer.tool-row.js +404 -0
- package/dist/data/ai/SessionViewer.tool-row.js.map +1 -0
- package/dist/data/ai/SessionViewer.unified.d.ts +10 -2
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +44 -26
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js +47 -29
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +45 -153
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +51 -159
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +0 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +0 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +5 -2
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +19 -6
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +31 -4
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +67 -10
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +2 -1
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +2 -1
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/agent-action-icons.cjs +7 -10
- package/dist/data/ai/agent-action-icons.cjs.map +1 -1
- package/dist/data/ai/agent-action-icons.d.ts +1 -2
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
- package/dist/data/ai/agent-action-icons.js +8 -11
- package/dist/data/ai/agent-action-icons.js.map +1 -1
- package/dist/data/ai/context.cjs.map +1 -1
- package/dist/data/ai/context.d.ts +4 -0
- package/dist/data/ai/context.d.ts.map +1 -1
- package/dist/data/ai/context.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.cjs +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude-complete.js +513 -0
- package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/claude.cjs +252 -0
- package/dist/data/ai/examples/sessions/claude.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/claude.d.ts +3 -0
- package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/claude.js +252 -0
- package/dist/data/ai/examples/sessions/claude.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex-complete.js +394 -0
- package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -0
- package/dist/data/ai/examples/sessions/codex.cjs +236 -0
- package/dist/data/ai/examples/sessions/codex.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/codex.d.ts +3 -0
- package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/codex.js +236 -0
- package/dist/data/ai/examples/sessions/codex.js.map +1 -0
- package/dist/data/ai/examples/sessions/index.cjs +21 -0
- package/dist/data/ai/examples/sessions/index.cjs.map +1 -0
- package/dist/data/ai/examples/sessions/index.d.ts +10 -0
- package/dist/data/ai/examples/sessions/index.d.ts.map +1 -0
- package/dist/data/ai/examples/sessions/index.js +21 -0
- package/dist/data/ai/examples/sessions/index.js.map +1 -0
- package/dist/data/ai/index.d.ts +8 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-mode.cjs +62 -0
- package/dist/data/ai/runtime-mode.cjs.map +1 -1
- package/dist/data/ai/runtime-mode.d.ts +27 -0
- package/dist/data/ai/runtime-mode.d.ts.map +1 -1
- package/dist/data/ai/runtime-mode.js +62 -0
- package/dist/data/ai/runtime-mode.js.map +1 -1
- package/dist/data/cells/EntityCell.cjs +64 -0
- package/dist/data/cells/EntityCell.cjs.map +1 -0
- package/dist/data/cells/EntityCell.d.ts +27 -0
- package/dist/data/cells/EntityCell.d.ts.map +1 -0
- package/dist/data/cells/EntityCell.js +64 -0
- package/dist/data/cells/EntityCell.js.map +1 -0
- package/dist/data/chat/Attachment.cjs +53 -13
- package/dist/data/chat/Attachment.cjs.map +1 -1
- package/dist/data/chat/Attachment.d.ts +9 -3
- package/dist/data/chat/Attachment.d.ts.map +1 -1
- package/dist/data/chat/Attachment.js +54 -14
- package/dist/data/chat/Attachment.js.map +1 -1
- package/dist/data/chat/Chat.cjs +25 -17
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +8 -4
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +22 -14
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +142 -39
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +4 -1
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +143 -40
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/Conversation.cjs +55 -3
- package/dist/data/chat/Conversation.cjs.map +1 -1
- package/dist/data/chat/Conversation.d.ts +5 -1
- package/dist/data/chat/Conversation.d.ts.map +1 -1
- package/dist/data/chat/Conversation.js +55 -3
- package/dist/data/chat/Conversation.js.map +1 -1
- package/dist/data/chat/ModelSelector.cjs +8 -10
- package/dist/data/chat/ModelSelector.cjs.map +1 -1
- package/dist/data/chat/ModelSelector.d.ts.map +1 -1
- package/dist/data/chat/ModelSelector.js +9 -11
- package/dist/data/chat/ModelSelector.js.map +1 -1
- package/dist/data/chat/PromptInput.cjs +56 -5
- package/dist/data/chat/PromptInput.cjs.map +1 -1
- package/dist/data/chat/PromptInput.d.ts +10 -1
- package/dist/data/chat/PromptInput.d.ts.map +1 -1
- package/dist/data/chat/PromptInput.js +57 -6
- package/dist/data/chat/PromptInput.js.map +1 -1
- package/dist/data/chat/attachment-upload.cjs +33 -0
- package/dist/data/chat/attachment-upload.cjs.map +1 -0
- package/dist/data/chat/attachment-upload.d.ts +21 -0
- package/dist/data/chat/attachment-upload.d.ts.map +1 -0
- package/dist/data/chat/attachment-upload.js +33 -0
- package/dist/data/chat/attachment-upload.js.map +1 -0
- package/dist/data/chat/effort-icons.cjs +36 -6
- package/dist/data/chat/effort-icons.cjs.map +1 -1
- package/dist/data/chat/effort-icons.d.ts +6 -3
- package/dist/data/chat/effort-icons.d.ts.map +1 -1
- package/dist/data/chat/effort-icons.js +37 -7
- package/dist/data/chat/effort-icons.js.map +1 -1
- package/dist/data/chat/index.d.ts +3 -1
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/models.cjs +8 -0
- package/dist/data/chat/models.cjs.map +1 -0
- package/dist/data/chat/models.d.ts +11 -0
- package/dist/data/chat/models.d.ts.map +1 -0
- package/dist/data/chat/models.js +8 -0
- package/dist/data/chat/models.js.map +1 -0
- package/dist/data/chat/provider-icons.cjs +49 -16
- package/dist/data/chat/provider-icons.cjs.map +1 -1
- package/dist/data/chat/provider-icons.d.ts +2 -0
- package/dist/data/chat/provider-icons.d.ts.map +1 -1
- package/dist/data/chat/provider-icons.js +50 -17
- package/dist/data/chat/provider-icons.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +9 -0
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/examples/markdown-preview-mock.cjs +45 -0
- package/dist/data/examples/markdown-preview-mock.cjs.map +1 -0
- package/dist/data/examples/markdown-preview-mock.d.ts +23 -0
- package/dist/data/examples/markdown-preview-mock.d.ts.map +1 -0
- package/dist/data/examples/markdown-preview-mock.js +45 -0
- package/dist/data/examples/markdown-preview-mock.js.map +1 -0
- package/dist/data/examples/markdown-syntax.cjs +36 -0
- package/dist/data/examples/markdown-syntax.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.d.ts +12 -0
- package/dist/data/examples/markdown-syntax.d.ts.map +1 -0
- package/dist/data/examples/markdown-syntax.js +36 -0
- package/dist/data/examples/markdown-syntax.js.map +1 -0
- package/dist/data/examples/markdown-syntax.md.cjs +4 -0
- package/dist/data/examples/markdown-syntax.md.cjs.map +1 -0
- package/dist/data/examples/markdown-syntax.md.js +5 -0
- package/dist/data/examples/markdown-syntax.md.js.map +1 -0
- package/dist/data/task-process-details.cjs +48 -0
- package/dist/data/task-process-details.cjs.map +1 -0
- package/dist/data/task-process-details.d.ts +5 -0
- package/dist/data/task-process-details.d.ts.map +1 -0
- package/dist/data/task-process-details.js +48 -0
- package/dist/data/task-process-details.js.map +1 -0
- package/dist/data/version-info.cjs +2 -2
- package/dist/data/version-info.js +2 -2
- package/dist/data.cjs +30 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +7 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +30 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-hotkey.cjs +98 -0
- package/dist/hooks/use-hotkey.cjs.map +1 -0
- package/dist/hooks/use-hotkey.d.ts +42 -0
- package/dist/hooks/use-hotkey.d.ts.map +1 -0
- package/dist/hooks/use-hotkey.js +98 -0
- package/dist/hooks/use-hotkey.js.map +1 -0
- package/dist/hooks/use-task-run.cjs +23 -1
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +23 -1
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/hooks.cjs +4 -0
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +4 -0
- package/dist/hooks.js.map +1 -1
- package/dist/icons/components/UiBank.cjs +15 -0
- package/dist/icons/components/UiBank.cjs.map +1 -0
- package/dist/icons/components/UiBank.d.ts +15 -0
- package/dist/icons/components/UiBank.d.ts.map +1 -0
- package/dist/icons/components/UiBank.js +15 -0
- package/dist/icons/components/UiBank.js.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.cjs +15 -0
- package/dist/icons/components/UiChartOfAccounts.cjs.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts +15 -0
- package/dist/icons/components/UiChartOfAccounts.d.ts.map +1 -0
- package/dist/icons/components/UiChartOfAccounts.js +15 -0
- package/dist/icons/components/UiChartOfAccounts.js.map +1 -0
- package/dist/icons/components/UiCloudUpload.cjs +15 -0
- package/dist/icons/components/UiCloudUpload.cjs.map +1 -0
- package/dist/icons/components/UiCloudUpload.d.ts +15 -0
- package/dist/icons/components/UiCloudUpload.d.ts.map +1 -0
- package/dist/icons/components/UiCloudUpload.js +15 -0
- package/dist/icons/components/UiCloudUpload.js.map +1 -0
- package/dist/icons/components/UiLedger.cjs +15 -0
- package/dist/icons/components/UiLedger.cjs.map +1 -0
- package/dist/icons/components/UiLedger.d.ts +15 -0
- package/dist/icons/components/UiLedger.d.ts.map +1 -0
- package/dist/icons/components/UiLedger.js +15 -0
- package/dist/icons/components/UiLedger.js.map +1 -0
- package/dist/icons/components/UiReceipt.cjs +15 -0
- package/dist/icons/components/UiReceipt.cjs.map +1 -0
- package/dist/icons/components/UiReceipt.d.ts +15 -0
- package/dist/icons/components/UiReceipt.d.ts.map +1 -0
- package/dist/icons/components/UiReceipt.js +15 -0
- package/dist/icons/components/UiReceipt.js.map +1 -0
- package/dist/icons/index.d.ts +10 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons.cjs +15 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +15 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +47 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +49 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +270 -238
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +9 -0
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.debug.cjs +53 -0
- package/dist/layout/AppShell.debug.cjs.map +1 -0
- package/dist/layout/AppShell.debug.d.ts +6 -0
- package/dist/layout/AppShell.debug.d.ts.map +1 -0
- package/dist/layout/AppShell.debug.js +53 -0
- package/dist/layout/AppShell.debug.js.map +1 -0
- package/dist/layout/AppShell.js +269 -237
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppShell.nav.cjs +90 -0
- package/dist/layout/AppShell.nav.cjs.map +1 -0
- package/dist/layout/AppShell.nav.d.ts +7 -0
- package/dist/layout/AppShell.nav.d.ts.map +1 -0
- package/dist/layout/AppShell.nav.js +90 -0
- package/dist/layout/AppShell.nav.js.map +1 -0
- package/dist/layout/AppSidebar.cjs +35 -5
- package/dist/layout/AppSidebar.cjs.map +1 -1
- package/dist/layout/AppSidebar.d.ts +4 -1
- package/dist/layout/AppSidebar.d.ts.map +1 -1
- package/dist/layout/AppSidebar.js +35 -5
- package/dist/layout/AppSidebar.js.map +1 -1
- package/dist/layout/Panel.cjs +25 -41
- package/dist/layout/Panel.cjs.map +1 -1
- package/dist/layout/Panel.d.ts +2 -1
- package/dist/layout/Panel.d.ts.map +1 -1
- package/dist/layout/Panel.js +26 -42
- package/dist/layout/Panel.js.map +1 -1
- package/dist/layout/PanelFrame.cjs +56 -0
- package/dist/layout/PanelFrame.cjs.map +1 -0
- package/dist/layout/PanelFrame.d.ts +15 -0
- package/dist/layout/PanelFrame.d.ts.map +1 -0
- package/dist/layout/PanelFrame.js +56 -0
- package/dist/layout/PanelFrame.js.map +1 -0
- package/dist/layout/Section.cjs +51 -41
- package/dist/layout/Section.cjs.map +1 -1
- package/dist/layout/Section.d.ts +3 -2
- package/dist/layout/Section.d.ts.map +1 -1
- package/dist/layout/Section.js +51 -41
- package/dist/layout/Section.js.map +1 -1
- package/dist/layout/content-width.cjs +8 -0
- package/dist/layout/content-width.cjs.map +1 -0
- package/dist/layout/content-width.d.ts +3 -0
- package/dist/layout/content-width.d.ts.map +1 -0
- package/dist/layout/content-width.js +8 -0
- package/dist/layout/content-width.js.map +1 -0
- package/dist/overlay/CommandPalette.cjs +207 -0
- package/dist/overlay/CommandPalette.cjs.map +1 -0
- package/dist/overlay/CommandPalette.d.ts +71 -0
- package/dist/overlay/CommandPalette.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.js +207 -0
- package/dist/overlay/CommandPalette.js.map +1 -0
- package/dist/overlay/CommandPalette.model.cjs +70 -0
- package/dist/overlay/CommandPalette.model.cjs.map +1 -0
- package/dist/overlay/CommandPalette.model.d.ts +71 -0
- package/dist/overlay/CommandPalette.model.d.ts.map +1 -0
- package/dist/overlay/CommandPalette.model.js +70 -0
- package/dist/overlay/CommandPalette.model.js.map +1 -0
- package/dist/overlay/CommandPaletteList.cjs +88 -0
- package/dist/overlay/CommandPaletteList.cjs.map +1 -0
- package/dist/overlay/CommandPaletteList.d.ts +23 -0
- package/dist/overlay/CommandPaletteList.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteList.js +88 -0
- package/dist/overlay/CommandPaletteList.js.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.cjs +36 -0
- package/dist/overlay/CommandPaletteTrigger.cjs.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts +22 -0
- package/dist/overlay/CommandPaletteTrigger.d.ts.map +1 -0
- package/dist/overlay/CommandPaletteTrigger.js +36 -0
- package/dist/overlay/CommandPaletteTrigger.js.map +1 -0
- package/dist/overlay/Modal.cjs +12 -5
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +12 -5
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/modalStack.js +1 -1
- package/dist/overlay/zIndex.cjs +2 -0
- package/dist/overlay/zIndex.cjs.map +1 -1
- package/dist/overlay/zIndex.js +2 -0
- package/dist/overlay/zIndex.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +6 -0
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +6 -0
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +49 -52
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +17 -2
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +49 -52
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/clickyMetadata.cjs +2 -1
- package/dist/rpc/clickyMetadata.cjs.map +1 -1
- package/dist/rpc/clickyMetadata.d.ts.map +1 -1
- package/dist/rpc/clickyMetadata.js +2 -1
- package/dist/rpc/clickyMetadata.js.map +1 -1
- package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +25 -2
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts.map +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts +2 -1
- package/dist/rpc/rpc-story.fixtures.d.ts.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +1 -0
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind-preset.cjs +11 -0
- package/dist/tailwind-preset.cjs.map +1 -1
- package/dist/tailwind-preset.d.ts.map +1 -1
- package/dist/tailwind-preset.js +11 -0
- package/dist/tailwind-preset.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/WorkspaceSection.tsx"],"sourcesContent":["import { SecretKeySelector } from \"../../../components/SecretKeySelector\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport {\n UiClock,\n UiFolder,\n UiFolderGit,\n UiGitBranch,\n UiLink,\n UiPlug,\n UiStack,\n UiTag,\n} from \"../../../icons\";\nimport {\n SPEC_STASH_MODES,\n SPEC_WORKTREE_MODES,\n type AISpecRuntimeValue,\n type SpecCheckoutMode,\n type SpecStashMode,\n type SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\nimport { secretValueFromString, stringFromSecretValue } from \"./env-model\";\nimport {\n CheckboxField,\n Disclosure,\n NumberField,\n SpecField,\n SpecInput,\n} from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport {\n checkoutMode,\n stashMode,\n withCheckout,\n withCheckoutMode,\n withDirty,\n withSetup,\n withStashMode,\n withWorktree,\n withWorktreeMode,\n worktreeMode,\n} from \"./update\";\n\nconst CHECKOUT_OPTIONS: Array<{ id: SpecCheckoutMode; label: string }> = [\n { id: \"none\", label: \"None\" },\n { id: \"remote\", label: \"Remote\" },\n { id: \"local\", label: \"Local\" },\n];\nconst WORKTREE_OPTIONS: Array<{ id: SpecWorktreeMode; label: string }> =\n SPEC_WORKTREE_MODES.map((mode) => ({\n id: mode,\n label: mode === \"none\" ? \"None\" : mode === \"new\" ? \"New\" : \"Existing\",\n }));\nconst STASH_OPTIONS: Array<{ id: SpecStashMode; label: string }> =\n SPEC_STASH_MODES.map((mode) => ({\n id: mode,\n label:\n mode === \"none\" ? \"None\" : mode.charAt(0).toUpperCase() + mode.slice(1),\n }));\n\nexport function WorkspaceSection({\n value,\n onChange,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n const checkout = checkoutMode(value);\n const worktree = worktreeMode(value);\n return (\n <div className=\"grid gap-density-3\">\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Directory\">\n <SpecInput\n value={value.setup?.cwd}\n onChange={(cwd) => onChange(withSetup(value, { cwd }))}\n placeholder=\".\"\n icon={UiFolder}\n mono\n />\n </SpecField>\n <SpecField label=\"Base dir\">\n <SpecInput\n value={value.setup?.baseDir}\n onChange={(baseDir) => onChange(withSetup(value, { baseDir }))}\n placeholder=\".captain/workspaces\"\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Git checkout\">\n <SegmentedControl\n aria-label=\"Checkout source\"\n size=\"sm\"\n value={checkout}\n onChange={(mode) => onChange(withCheckoutMode(value, mode))}\n options={CHECKOUT_OPTIONS}\n />\n </SpecField>\n {checkout !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-[minmax(0,1fr)_9rem_6rem]\">\n {checkout === \"local\" ? (\n <SpecField label=\"Local path\">\n <SpecInput\n value={value.setup?.checkout?.path}\n onChange={(path) => onChange(withCheckout(value, { path }))}\n placeholder=\"/repo\"\n icon={UiFolderGit}\n mono\n />\n </SpecField>\n ) : (\n <SpecField label=\"Git URL\">\n <SpecInput\n value={value.setup?.checkout?.url}\n onChange={(url) => onChange(withCheckout(value, { url }))}\n placeholder=\"https://github.com/org/repo.git\"\n icon={UiLink}\n mono\n />\n </SpecField>\n )}\n <SpecField label=\"Ref\">\n <SpecInput\n value={value.setup?.checkout?.ref}\n onChange={(ref) => onChange(withCheckout(value, { ref }))}\n placeholder=\"main\"\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n <NumberField\n label=\"Depth\"\n value={value.setup?.checkout?.depth}\n onChange={(depth) =>\n onChange(withCheckout(value, { depth: depth ?? 0 }))\n }\n icon={UiStack}\n min={0}\n step={1}\n integer\n />\n </div>\n {checkout !== \"local\" && (\n <Disclosure label=\"Advanced\" hint=\"connection\">\n <SpecField label=\"Connection\">\n {secretSelector ? (\n <SecretKeySelector\n value={secretValueFromString(\n value.setup?.checkout?.connection,\n )}\n onChange={(next) =>\n onChange(\n withCheckout(value, {\n connection: stringFromSecretValue(next),\n }),\n )\n }\n loadResources={secretSelector.loadResources}\n loadKeyPreview={secretSelector.loadKeyPreview}\n {...(secretSelector.allowLiteral !== undefined\n ? { allowLiteral: secretSelector.allowLiteral }\n : {})}\n {...(secretSelector.strict !== undefined\n ? { strict: secretSelector.strict }\n : {})}\n className=\"min-w-0 flex-wrap\"\n />\n ) : (\n <SpecInput\n value={value.setup?.checkout?.connection}\n onChange={(connection) =>\n onChange(withCheckout(value, { connection }))\n }\n placeholder=\"github\"\n icon={UiPlug}\n mono\n />\n )}\n </SpecField>\n </Disclosure>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Worktree\">\n <SegmentedControl\n aria-label=\"Worktree mode\"\n size=\"sm\"\n value={worktree}\n onChange={(mode) => onChange(withWorktreeMode(value, mode))}\n options={WORKTREE_OPTIONS}\n />\n </SpecField>\n {worktree !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-3\">\n {worktree === \"new\" && (\n <>\n <SpecField label=\"Worktree prefix\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.prefix}\n onChange={(prefix) =>\n onChange(withWorktree(value, { prefix }))\n }\n placeholder=\"ai\"\n icon={UiTag}\n mono\n />\n </SpecField>\n <SpecField label=\"Worktree base\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.base}\n onChange={(base) =>\n onChange(withWorktree(value, { base }))\n }\n placeholder=\"main\"\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n </>\n )}\n <SpecField label=\"Worktree path\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.path}\n onChange={(path) => onChange(withWorktree(value, { path }))}\n placeholder=\".shell/worktrees/spec-runtime\"\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n {worktree === \"new\" && (\n <div className=\"grid gap-density-2 sm:grid-cols-[minmax(10rem,16rem)]\">\n <CheckboxField\n label=\"Keep worktree\"\n checked={value.setup?.checkout?.worktree?.keep}\n onChange={(keep) => onChange(withWorktree(value, { keep }))}\n />\n </div>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Stash\">\n <SegmentedControl\n aria-label=\"Stash mode\"\n size=\"sm\"\n value={stashMode(value)}\n onChange={(stash) => onChange(withStashMode(value, stash))}\n options={STASH_OPTIONS}\n />\n </SpecField>\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Since\">\n <SpecInput\n value={value.setup?.checkout?.dirty?.since}\n onChange={(since) => onChange(withDirty(value, { since }))}\n placeholder=\"origin/main\"\n icon={UiClock}\n mono\n />\n </SpecField>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["SPEC_WORKTREE_MODES","SPEC_STASH_MODES","checkoutMode","worktreeMode","jsxs","jsx","SpecField","SpecInput","withSetup","UiFolder","SegmentedControl","withCheckoutMode","Fragment","withCheckout","UiFolderGit","UiLink","UiGitBranch","NumberField","UiStack","Disclosure","SecretKeySelector","secretValueFromString","stringFromSecretValue","UiPlug","withWorktreeMode","withWorktree","UiTag","CheckboxField","stashMode","withStashMode","withDirty","UiClock"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkspaceSection.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/WorkspaceSection.tsx"],"sourcesContent":["import { SecretKeySelector } from \"../../../components/SecretKeySelector\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport {\n UiClock,\n UiFolder,\n UiFolderGit,\n UiGitBranch,\n UiLink,\n UiPlug,\n UiStack,\n UiTag,\n} from \"../../../icons\";\nimport {\n SPEC_STASH_MODES,\n SPEC_WORKTREE_MODES,\n type AISpecRuntimeValue,\n type SpecCheckoutMode,\n type SpecStashMode,\n type SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\nimport { secretValueFromString, stringFromSecretValue } from \"./env-model\";\nimport {\n CheckboxField,\n Disclosure,\n NumberField,\n SpecField,\n SpecInput,\n} from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport {\n checkoutMode,\n stashMode,\n withCheckout,\n withCheckoutMode,\n withDirty,\n withSetup,\n withStashMode,\n withWorktree,\n withWorktreeMode,\n worktreeMode,\n} from \"./update\";\n\nconst CHECKOUT_OPTIONS: Array<{ id: SpecCheckoutMode; label: string }> = [\n { id: \"none\", label: \"None\" },\n { id: \"remote\", label: \"Remote\" },\n { id: \"local\", label: \"Local\" },\n];\nconst WORKTREE_OPTIONS: Array<{ id: SpecWorktreeMode; label: string }> =\n SPEC_WORKTREE_MODES.map((mode) => ({\n id: mode,\n label: mode === \"none\" ? \"None\" : mode === \"new\" ? \"New\" : \"Existing\",\n }));\nconst STASH_OPTIONS: Array<{ id: SpecStashMode; label: string }> =\n SPEC_STASH_MODES.map((mode) => ({\n id: mode,\n label:\n mode === \"none\" ? \"None\" : mode.charAt(0).toUpperCase() + mode.slice(1),\n }));\n\nexport function WorkspaceSection({\n value,\n onChange,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n const checkout = checkoutMode(value);\n const worktree = worktreeMode(value);\n return (\n <div className=\"grid gap-density-3\">\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Directory\">\n <SpecInput\n value={value.setup?.cwd}\n onChange={(cwd) => onChange(withSetup(value, { cwd }))}\n icon={UiFolder}\n mono\n />\n </SpecField>\n <SpecField label=\"Base dir\">\n <SpecInput\n value={value.setup?.baseDir}\n onChange={(baseDir) => onChange(withSetup(value, { baseDir }))}\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Git checkout\">\n <SegmentedControl\n aria-label=\"Checkout source\"\n size=\"sm\"\n value={checkout}\n onChange={(mode) => onChange(withCheckoutMode(value, mode))}\n options={CHECKOUT_OPTIONS}\n />\n </SpecField>\n {checkout !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-[minmax(0,1fr)_9rem_6rem]\">\n {checkout === \"local\" ? (\n <SpecField label=\"Local path\">\n <SpecInput\n value={value.setup?.checkout?.path}\n onChange={(path) => onChange(withCheckout(value, { path }))}\n placeholder=\"/repo\"\n icon={UiFolderGit}\n mono\n />\n </SpecField>\n ) : (\n <SpecField label=\"Git URL\">\n <SpecInput\n value={value.setup?.checkout?.url}\n onChange={(url) => onChange(withCheckout(value, { url }))}\n placeholder=\"https://github.com/org/repo.git\"\n icon={UiLink}\n mono\n />\n </SpecField>\n )}\n <SpecField label=\"Ref\">\n <SpecInput\n value={value.setup?.checkout?.ref}\n onChange={(ref) => onChange(withCheckout(value, { ref }))}\n placeholder=\"main\"\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n <NumberField\n label=\"Depth\"\n value={value.setup?.checkout?.depth}\n onChange={(depth) =>\n onChange(withCheckout(value, { depth: depth ?? 0 }))\n }\n icon={UiStack}\n min={0}\n step={1}\n integer\n />\n </div>\n {checkout !== \"local\" && (\n <Disclosure label=\"Advanced\" hint=\"connection\">\n <SpecField label=\"Connection\">\n {secretSelector ? (\n <SecretKeySelector\n value={secretValueFromString(\n value.setup?.checkout?.connection,\n )}\n onChange={(next) =>\n onChange(\n withCheckout(value, {\n connection: stringFromSecretValue(next),\n }),\n )\n }\n loadResources={secretSelector.loadResources}\n loadKeyPreview={secretSelector.loadKeyPreview}\n {...(secretSelector.allowLiteral !== undefined\n ? { allowLiteral: secretSelector.allowLiteral }\n : {})}\n {...(secretSelector.strict !== undefined\n ? { strict: secretSelector.strict }\n : {})}\n className=\"min-w-0 flex-wrap\"\n />\n ) : (\n <SpecInput\n value={value.setup?.checkout?.connection}\n onChange={(connection) =>\n onChange(withCheckout(value, { connection }))\n }\n placeholder=\"github\"\n icon={UiPlug}\n mono\n />\n )}\n </SpecField>\n </Disclosure>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Worktree\">\n <SegmentedControl\n aria-label=\"Worktree mode\"\n size=\"sm\"\n value={worktree}\n onChange={(mode) => onChange(withWorktreeMode(value, mode))}\n options={WORKTREE_OPTIONS}\n />\n </SpecField>\n {worktree !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-3\">\n {worktree === \"new\" && (\n <>\n <SpecField label=\"Worktree prefix\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.prefix}\n onChange={(prefix) =>\n onChange(withWorktree(value, { prefix }))\n }\n placeholder=\"ai\"\n icon={UiTag}\n mono\n />\n </SpecField>\n <SpecField label=\"Worktree base\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.base}\n onChange={(base) =>\n onChange(withWorktree(value, { base }))\n }\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n </>\n )}\n <SpecField label=\"Worktree path\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.path}\n onChange={(path) => onChange(withWorktree(value, { path }))}\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n {worktree === \"new\" && (\n <div className=\"grid gap-density-2 sm:grid-cols-[minmax(10rem,16rem)]\">\n <CheckboxField\n label=\"Keep worktree\"\n checked={value.setup?.checkout?.worktree?.keep}\n onChange={(keep) => onChange(withWorktree(value, { keep }))}\n />\n </div>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Stash\">\n <SegmentedControl\n aria-label=\"Stash mode\"\n size=\"sm\"\n value={stashMode(value)}\n onChange={(stash) => onChange(withStashMode(value, stash))}\n options={STASH_OPTIONS}\n />\n </SpecField>\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Since\">\n <SpecInput\n value={value.setup?.checkout?.dirty?.since}\n onChange={(since) => onChange(withDirty(value, { since }))}\n icon={UiClock}\n mono\n />\n </SpecField>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["SPEC_WORKTREE_MODES","SPEC_STASH_MODES","checkoutMode","worktreeMode","jsxs","jsx","SpecField","SpecInput","withSetup","UiFolder","SegmentedControl","withCheckoutMode","Fragment","withCheckout","UiFolderGit","UiLink","UiGitBranch","NumberField","UiStack","Disclosure","SecretKeySelector","secretValueFromString","stringFromSecretValue","UiPlug","withWorktreeMode","withWorktree","UiTag","CheckboxField","stashMode","withStashMode","withDirty","UiClock"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/WorkspaceSection.tsx"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,kBAAkB,EAIxB,MAAM,4BAA4B,CAAC;AASpC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AA+B/D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,cAAc,GACf,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAC9D,
|
|
1
|
+
{"version":3,"file":"WorkspaceSection.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/WorkspaceSection.tsx"],"names":[],"mappings":"AAYA,OAAO,EAGL,KAAK,kBAAkB,EAIxB,MAAM,4BAA4B,CAAC;AASpC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AA+B/D,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,cAAc,GACf,EAAE;IACD,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAC9D,2CA6MA"}
|
|
@@ -41,7 +41,6 @@ function WorkspaceSection({
|
|
|
41
41
|
{
|
|
42
42
|
value: (_a = value.setup) == null ? void 0 : _a.cwd,
|
|
43
43
|
onChange: (cwd) => onChange(withSetup(value, { cwd })),
|
|
44
|
-
placeholder: ".",
|
|
45
44
|
icon: UiFolder,
|
|
46
45
|
mono: true
|
|
47
46
|
}
|
|
@@ -51,7 +50,6 @@ function WorkspaceSection({
|
|
|
51
50
|
{
|
|
52
51
|
value: (_b = value.setup) == null ? void 0 : _b.baseDir,
|
|
53
52
|
onChange: (baseDir) => onChange(withSetup(value, { baseDir })),
|
|
54
|
-
placeholder: ".captain/workspaces",
|
|
55
53
|
icon: UiFolder,
|
|
56
54
|
mono: true
|
|
57
55
|
}
|
|
@@ -170,7 +168,6 @@ function WorkspaceSection({
|
|
|
170
168
|
{
|
|
171
169
|
value: (_t = (_s = (_r = value.setup) == null ? void 0 : _r.checkout) == null ? void 0 : _s.worktree) == null ? void 0 : _t.base,
|
|
172
170
|
onChange: (base) => onChange(withWorktree(value, { base })),
|
|
173
|
-
placeholder: "main",
|
|
174
171
|
icon: UiGitBranch,
|
|
175
172
|
mono: true
|
|
176
173
|
}
|
|
@@ -181,7 +178,6 @@ function WorkspaceSection({
|
|
|
181
178
|
{
|
|
182
179
|
value: (_w = (_v = (_u = value.setup) == null ? void 0 : _u.checkout) == null ? void 0 : _v.worktree) == null ? void 0 : _w.path,
|
|
183
180
|
onChange: (path) => onChange(withWorktree(value, { path })),
|
|
184
|
-
placeholder: ".shell/worktrees/spec-runtime",
|
|
185
181
|
icon: UiFolder,
|
|
186
182
|
mono: true
|
|
187
183
|
}
|
|
@@ -213,7 +209,6 @@ function WorkspaceSection({
|
|
|
213
209
|
{
|
|
214
210
|
value: (_C = (_B = (_A = value.setup) == null ? void 0 : _A.checkout) == null ? void 0 : _B.dirty) == null ? void 0 : _C.since,
|
|
215
211
|
onChange: (since) => onChange(withDirty(value, { since })),
|
|
216
|
-
placeholder: "origin/main",
|
|
217
212
|
icon: UiClock,
|
|
218
213
|
mono: true
|
|
219
214
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/WorkspaceSection.tsx"],"sourcesContent":["import { SecretKeySelector } from \"../../../components/SecretKeySelector\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport {\n UiClock,\n UiFolder,\n UiFolderGit,\n UiGitBranch,\n UiLink,\n UiPlug,\n UiStack,\n UiTag,\n} from \"../../../icons\";\nimport {\n SPEC_STASH_MODES,\n SPEC_WORKTREE_MODES,\n type AISpecRuntimeValue,\n type SpecCheckoutMode,\n type SpecStashMode,\n type SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\nimport { secretValueFromString, stringFromSecretValue } from \"./env-model\";\nimport {\n CheckboxField,\n Disclosure,\n NumberField,\n SpecField,\n SpecInput,\n} from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport {\n checkoutMode,\n stashMode,\n withCheckout,\n withCheckoutMode,\n withDirty,\n withSetup,\n withStashMode,\n withWorktree,\n withWorktreeMode,\n worktreeMode,\n} from \"./update\";\n\nconst CHECKOUT_OPTIONS: Array<{ id: SpecCheckoutMode; label: string }> = [\n { id: \"none\", label: \"None\" },\n { id: \"remote\", label: \"Remote\" },\n { id: \"local\", label: \"Local\" },\n];\nconst WORKTREE_OPTIONS: Array<{ id: SpecWorktreeMode; label: string }> =\n SPEC_WORKTREE_MODES.map((mode) => ({\n id: mode,\n label: mode === \"none\" ? \"None\" : mode === \"new\" ? \"New\" : \"Existing\",\n }));\nconst STASH_OPTIONS: Array<{ id: SpecStashMode; label: string }> =\n SPEC_STASH_MODES.map((mode) => ({\n id: mode,\n label:\n mode === \"none\" ? \"None\" : mode.charAt(0).toUpperCase() + mode.slice(1),\n }));\n\nexport function WorkspaceSection({\n value,\n onChange,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n const checkout = checkoutMode(value);\n const worktree = worktreeMode(value);\n return (\n <div className=\"grid gap-density-3\">\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Directory\">\n <SpecInput\n value={value.setup?.cwd}\n onChange={(cwd) => onChange(withSetup(value, { cwd }))}\n placeholder=\".\"\n icon={UiFolder}\n mono\n />\n </SpecField>\n <SpecField label=\"Base dir\">\n <SpecInput\n value={value.setup?.baseDir}\n onChange={(baseDir) => onChange(withSetup(value, { baseDir }))}\n placeholder=\".captain/workspaces\"\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Git checkout\">\n <SegmentedControl\n aria-label=\"Checkout source\"\n size=\"sm\"\n value={checkout}\n onChange={(mode) => onChange(withCheckoutMode(value, mode))}\n options={CHECKOUT_OPTIONS}\n />\n </SpecField>\n {checkout !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-[minmax(0,1fr)_9rem_6rem]\">\n {checkout === \"local\" ? (\n <SpecField label=\"Local path\">\n <SpecInput\n value={value.setup?.checkout?.path}\n onChange={(path) => onChange(withCheckout(value, { path }))}\n placeholder=\"/repo\"\n icon={UiFolderGit}\n mono\n />\n </SpecField>\n ) : (\n <SpecField label=\"Git URL\">\n <SpecInput\n value={value.setup?.checkout?.url}\n onChange={(url) => onChange(withCheckout(value, { url }))}\n placeholder=\"https://github.com/org/repo.git\"\n icon={UiLink}\n mono\n />\n </SpecField>\n )}\n <SpecField label=\"Ref\">\n <SpecInput\n value={value.setup?.checkout?.ref}\n onChange={(ref) => onChange(withCheckout(value, { ref }))}\n placeholder=\"main\"\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n <NumberField\n label=\"Depth\"\n value={value.setup?.checkout?.depth}\n onChange={(depth) =>\n onChange(withCheckout(value, { depth: depth ?? 0 }))\n }\n icon={UiStack}\n min={0}\n step={1}\n integer\n />\n </div>\n {checkout !== \"local\" && (\n <Disclosure label=\"Advanced\" hint=\"connection\">\n <SpecField label=\"Connection\">\n {secretSelector ? (\n <SecretKeySelector\n value={secretValueFromString(\n value.setup?.checkout?.connection,\n )}\n onChange={(next) =>\n onChange(\n withCheckout(value, {\n connection: stringFromSecretValue(next),\n }),\n )\n }\n loadResources={secretSelector.loadResources}\n loadKeyPreview={secretSelector.loadKeyPreview}\n {...(secretSelector.allowLiteral !== undefined\n ? { allowLiteral: secretSelector.allowLiteral }\n : {})}\n {...(secretSelector.strict !== undefined\n ? { strict: secretSelector.strict }\n : {})}\n className=\"min-w-0 flex-wrap\"\n />\n ) : (\n <SpecInput\n value={value.setup?.checkout?.connection}\n onChange={(connection) =>\n onChange(withCheckout(value, { connection }))\n }\n placeholder=\"github\"\n icon={UiPlug}\n mono\n />\n )}\n </SpecField>\n </Disclosure>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Worktree\">\n <SegmentedControl\n aria-label=\"Worktree mode\"\n size=\"sm\"\n value={worktree}\n onChange={(mode) => onChange(withWorktreeMode(value, mode))}\n options={WORKTREE_OPTIONS}\n />\n </SpecField>\n {worktree !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-3\">\n {worktree === \"new\" && (\n <>\n <SpecField label=\"Worktree prefix\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.prefix}\n onChange={(prefix) =>\n onChange(withWorktree(value, { prefix }))\n }\n placeholder=\"ai\"\n icon={UiTag}\n mono\n />\n </SpecField>\n <SpecField label=\"Worktree base\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.base}\n onChange={(base) =>\n onChange(withWorktree(value, { base }))\n }\n placeholder=\"main\"\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n </>\n )}\n <SpecField label=\"Worktree path\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.path}\n onChange={(path) => onChange(withWorktree(value, { path }))}\n placeholder=\".shell/worktrees/spec-runtime\"\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n {worktree === \"new\" && (\n <div className=\"grid gap-density-2 sm:grid-cols-[minmax(10rem,16rem)]\">\n <CheckboxField\n label=\"Keep worktree\"\n checked={value.setup?.checkout?.worktree?.keep}\n onChange={(keep) => onChange(withWorktree(value, { keep }))}\n />\n </div>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Stash\">\n <SegmentedControl\n aria-label=\"Stash mode\"\n size=\"sm\"\n value={stashMode(value)}\n onChange={(stash) => onChange(withStashMode(value, stash))}\n options={STASH_OPTIONS}\n />\n </SpecField>\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Since\">\n <SpecInput\n value={value.setup?.checkout?.dirty?.since}\n onChange={(since) => onChange(withDirty(value, { since }))}\n placeholder=\"origin/main\"\n icon={UiClock}\n mono\n />\n </SpecField>\n </div>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkspaceSection.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/WorkspaceSection.tsx"],"sourcesContent":["import { SecretKeySelector } from \"../../../components/SecretKeySelector\";\nimport { SegmentedControl } from \"../../../components/SegmentedControl\";\nimport {\n UiClock,\n UiFolder,\n UiFolderGit,\n UiGitBranch,\n UiLink,\n UiPlug,\n UiStack,\n UiTag,\n} from \"../../../icons\";\nimport {\n SPEC_STASH_MODES,\n SPEC_WORKTREE_MODES,\n type AISpecRuntimeValue,\n type SpecCheckoutMode,\n type SpecStashMode,\n type SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\nimport { secretValueFromString, stringFromSecretValue } from \"./env-model\";\nimport {\n CheckboxField,\n Disclosure,\n NumberField,\n SpecField,\n SpecInput,\n} from \"./fields\";\nimport type { SpecRuntimeSecretSelectorConfig } from \"./types\";\nimport {\n checkoutMode,\n stashMode,\n withCheckout,\n withCheckoutMode,\n withDirty,\n withSetup,\n withStashMode,\n withWorktree,\n withWorktreeMode,\n worktreeMode,\n} from \"./update\";\n\nconst CHECKOUT_OPTIONS: Array<{ id: SpecCheckoutMode; label: string }> = [\n { id: \"none\", label: \"None\" },\n { id: \"remote\", label: \"Remote\" },\n { id: \"local\", label: \"Local\" },\n];\nconst WORKTREE_OPTIONS: Array<{ id: SpecWorktreeMode; label: string }> =\n SPEC_WORKTREE_MODES.map((mode) => ({\n id: mode,\n label: mode === \"none\" ? \"None\" : mode === \"new\" ? \"New\" : \"Existing\",\n }));\nconst STASH_OPTIONS: Array<{ id: SpecStashMode; label: string }> =\n SPEC_STASH_MODES.map((mode) => ({\n id: mode,\n label:\n mode === \"none\" ? \"None\" : mode.charAt(0).toUpperCase() + mode.slice(1),\n }));\n\nexport function WorkspaceSection({\n value,\n onChange,\n secretSelector,\n}: {\n value: AISpecRuntimeValue;\n onChange: (value: AISpecRuntimeValue) => void;\n secretSelector?: SpecRuntimeSecretSelectorConfig | undefined;\n}) {\n const checkout = checkoutMode(value);\n const worktree = worktreeMode(value);\n return (\n <div className=\"grid gap-density-3\">\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Directory\">\n <SpecInput\n value={value.setup?.cwd}\n onChange={(cwd) => onChange(withSetup(value, { cwd }))}\n icon={UiFolder}\n mono\n />\n </SpecField>\n <SpecField label=\"Base dir\">\n <SpecInput\n value={value.setup?.baseDir}\n onChange={(baseDir) => onChange(withSetup(value, { baseDir }))}\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Git checkout\">\n <SegmentedControl\n aria-label=\"Checkout source\"\n size=\"sm\"\n value={checkout}\n onChange={(mode) => onChange(withCheckoutMode(value, mode))}\n options={CHECKOUT_OPTIONS}\n />\n </SpecField>\n {checkout !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-[minmax(0,1fr)_9rem_6rem]\">\n {checkout === \"local\" ? (\n <SpecField label=\"Local path\">\n <SpecInput\n value={value.setup?.checkout?.path}\n onChange={(path) => onChange(withCheckout(value, { path }))}\n placeholder=\"/repo\"\n icon={UiFolderGit}\n mono\n />\n </SpecField>\n ) : (\n <SpecField label=\"Git URL\">\n <SpecInput\n value={value.setup?.checkout?.url}\n onChange={(url) => onChange(withCheckout(value, { url }))}\n placeholder=\"https://github.com/org/repo.git\"\n icon={UiLink}\n mono\n />\n </SpecField>\n )}\n <SpecField label=\"Ref\">\n <SpecInput\n value={value.setup?.checkout?.ref}\n onChange={(ref) => onChange(withCheckout(value, { ref }))}\n placeholder=\"main\"\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n <NumberField\n label=\"Depth\"\n value={value.setup?.checkout?.depth}\n onChange={(depth) =>\n onChange(withCheckout(value, { depth: depth ?? 0 }))\n }\n icon={UiStack}\n min={0}\n step={1}\n integer\n />\n </div>\n {checkout !== \"local\" && (\n <Disclosure label=\"Advanced\" hint=\"connection\">\n <SpecField label=\"Connection\">\n {secretSelector ? (\n <SecretKeySelector\n value={secretValueFromString(\n value.setup?.checkout?.connection,\n )}\n onChange={(next) =>\n onChange(\n withCheckout(value, {\n connection: stringFromSecretValue(next),\n }),\n )\n }\n loadResources={secretSelector.loadResources}\n loadKeyPreview={secretSelector.loadKeyPreview}\n {...(secretSelector.allowLiteral !== undefined\n ? { allowLiteral: secretSelector.allowLiteral }\n : {})}\n {...(secretSelector.strict !== undefined\n ? { strict: secretSelector.strict }\n : {})}\n className=\"min-w-0 flex-wrap\"\n />\n ) : (\n <SpecInput\n value={value.setup?.checkout?.connection}\n onChange={(connection) =>\n onChange(withCheckout(value, { connection }))\n }\n placeholder=\"github\"\n icon={UiPlug}\n mono\n />\n )}\n </SpecField>\n </Disclosure>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Worktree\">\n <SegmentedControl\n aria-label=\"Worktree mode\"\n size=\"sm\"\n value={worktree}\n onChange={(mode) => onChange(withWorktreeMode(value, mode))}\n options={WORKTREE_OPTIONS}\n />\n </SpecField>\n {worktree !== \"none\" && (\n <>\n <div className=\"grid gap-density-2 md:grid-cols-3\">\n {worktree === \"new\" && (\n <>\n <SpecField label=\"Worktree prefix\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.prefix}\n onChange={(prefix) =>\n onChange(withWorktree(value, { prefix }))\n }\n placeholder=\"ai\"\n icon={UiTag}\n mono\n />\n </SpecField>\n <SpecField label=\"Worktree base\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.base}\n onChange={(base) =>\n onChange(withWorktree(value, { base }))\n }\n icon={UiGitBranch}\n mono\n />\n </SpecField>\n </>\n )}\n <SpecField label=\"Worktree path\">\n <SpecInput\n value={value.setup?.checkout?.worktree?.path}\n onChange={(path) => onChange(withWorktree(value, { path }))}\n icon={UiFolder}\n mono\n />\n </SpecField>\n </div>\n {worktree === \"new\" && (\n <div className=\"grid gap-density-2 sm:grid-cols-[minmax(10rem,16rem)]\">\n <CheckboxField\n label=\"Keep worktree\"\n checked={value.setup?.checkout?.worktree?.keep}\n onChange={(keep) => onChange(withWorktree(value, { keep }))}\n />\n </div>\n )}\n </>\n )}\n </div>\n\n <div className=\"space-y-density-2\">\n <SpecField label=\"Stash\">\n <SegmentedControl\n aria-label=\"Stash mode\"\n size=\"sm\"\n value={stashMode(value)}\n onChange={(stash) => onChange(withStashMode(value, stash))}\n options={STASH_OPTIONS}\n />\n </SpecField>\n <div className=\"grid gap-density-2 md:grid-cols-2\">\n <SpecField label=\"Since\">\n <SpecInput\n value={value.setup?.checkout?.dirty?.since}\n onChange={(since) => onChange(withDirty(value, { since }))}\n icon={UiClock}\n mono\n />\n </SpecField>\n </div>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summaries.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/summaries.ts"],"sourcesContent":["import type { ChatModel } from \"../../chat/types\";\nimport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nimport { checkoutMode, worktreeMode } from \"./update\";\nimport { isDenyMode, type PermissionListEntry } from \"./permissions-model\";\n\nexport function summarizeModel(\n value: AISpecRuntimeValue,\n models: ChatModel[] = [],\n): string {\n const parts: string[] = [];\n const model = value.model?.trim();\n if (model) {\n parts.push(models.find((m) => m.id === model)?.label ?? model);\n }\n if (value.effort) parts.push(value.effort);\n
|
|
1
|
+
{"version":3,"file":"summaries.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/summaries.ts"],"sourcesContent":["import type { ChatModel } from \"../../chat/types\";\nimport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nimport { checkoutMode, commitPhase, worktreeMode } from \"./update\";\nimport { isDenyMode, type PermissionListEntry } from \"./permissions-model\";\n\nexport function summarizeModel(\n value: AISpecRuntimeValue,\n models: ChatModel[] = [],\n): string {\n const parts: string[] = [];\n const model = value.model?.trim();\n if (model) {\n parts.push(models.find((m) => m.id === model)?.label ?? model);\n }\n if (value.effort) parts.push(value.effort);\n return parts.length > 0 ? parts.join(\" · \") : \"Default model\";\n}\n\nexport function summarizePrompt(value: AISpecRuntimeValue): string {\n const overrides = [\n value.prompt?.user,\n value.prompt?.system,\n value.prompt?.appendSystem,\n ].filter((text) => Boolean(text?.trim())).length;\n if (overrides === 0) return \"Base prompt only\";\n return `${overrides} override${overrides > 1 ? \"s\" : \"\"} set`;\n}\n\nexport function summarizeWorkspace(value: AISpecRuntimeValue): string {\n const mode = checkoutMode(value);\n if (mode === \"none\") return \"No checkout\";\n const parts: string[] = [mode];\n const ref = value.setup?.checkout?.ref?.trim();\n if (ref) parts.push(ref);\n const worktree = worktreeMode(value);\n parts.push(worktree === \"none\" ? \"in-place\" : `${worktree} worktree`);\n return parts.join(\" · \");\n}\n\nexport function summarizePermissions(\n value: AISpecRuntimeValue,\n entries: PermissionListEntry[],\n): string {\n const parts: string[] = [value.permissions?.mode || \"default\"];\n const denied = entries.filter(\n (entry) => entry.domain === \"tools\" && entry.mode === \"deny\",\n ).length;\n const off = entries.filter(\n (entry) => entry.domain !== \"tools\" && isDenyMode(entry.mode),\n ).length;\n if (denied > 0) parts.push(`${denied} denied`);\n if (off > 0) parts.push(`${off} off`);\n return parts.join(\" · \");\n}\n\nexport function summarizeEnvironment(value: AISpecRuntimeValue): string {\n const vars = (value.setup?.envVars ?? []).filter((item) =>\n Boolean(item.name?.trim()),\n );\n if (vars.length === 0) return \"No variables\";\n const secrets = vars.filter((item) => {\n if (typeof item.valueFrom === \"string\") {\n return item.valueFrom.trim().startsWith(\"secret://\");\n }\n return Boolean(item.valueFrom?.secretKeyRef);\n }).length;\n const parts = [`${vars.length} var${vars.length !== 1 ? \"s\" : \"\"}`];\n if (secrets > 0) parts.push(`${secrets} secret`);\n return parts.join(\" · \");\n}\n\nexport function summarizeVerify(value: AISpecRuntimeValue): string {\n const verify = value.workflow?.verify;\n if (!verify) return \"No fixture\";\n const parts: string[] = [];\n if (verify.fixture?.trim()) parts.push(\"Fixture\");\n if (verify.scope === \"changed\") parts.push(\"changed files\");\n if (verify.maxIterations != null && verify.maxIterations > 0) {\n parts.push(\n `${verify.maxIterations} iteration${verify.maxIterations !== 1 ? \"s\" : \"\"}`,\n );\n }\n return parts.length > 0 ? parts.join(\" · \") : \"No fixture\";\n}\n\nconst COMMIT_PHASE_SUMMARIES = {\n none: \"Leave uncommitted\",\n turn: \"Commit every turn\",\n agent: \"Commit after the loop\",\n run: \"Commit changes\",\n} as const;\n\nexport function summarizeCommit(value: AISpecRuntimeValue): string {\n const phase = commitPhase(value);\n const summary = COMMIT_PHASE_SUMMARIES[phase];\n return value.workflow?.commits?.[0]?.dryRun\n ? `${summary} · dry run`\n : summary;\n}\n\nexport function summarizeCLIArgs(value: AISpecRuntimeValue): string {\n const flags = Object.entries(value.cliArgs ?? {}).filter(\n ([, item]) =>\n item !== undefined &&\n item !== \"\" &&\n item !== false &&\n (!Array.isArray(item) || item.length > 0),\n ).length;\n if (flags === 0) return \"Defaults\";\n return `${flags} flag${flags !== 1 ? \"s\" : \"\"} set`;\n}\n\n// The rail target chip: repo (from checkout URL or local path) plus ref.\nexport function summarizeTarget(value: AISpecRuntimeValue): string | undefined {\n const checkout = value.setup?.checkout;\n const source = checkout?.url?.trim() || checkout?.path?.trim();\n if (!source) return undefined;\n // Split-and-filter instead of `.replace(/\\/+$/, \"\")`: the trailing-slash\n // strip was a polynomial (ReDoS) match on many-`/` inputs. Empty segments\n // from trailing/duplicate slashes are dropped, so the last one is the repo.\n const segments = source.split(\"/\").filter(Boolean);\n const repo = segments[segments.length - 1]?.replace(/\\.git$/, \"\");\n if (!repo) return undefined;\n const ref = checkout?.ref?.trim();\n return ref ? `${repo} · ${ref}` : repo;\n}\n"],"names":[],"mappings":";;AAiHO,SAAS,gBAAgB,OAA+C;;AAC7E,QAAM,YAAW,WAAM,UAAN,mBAAa;AAC9B,QAAM,WAAS,0CAAU,QAAV,mBAAe,aAAU,0CAAU,SAAV,mBAAgB;AACxD,MAAI,CAAC,OAAQ,QAAO;AAIpB,QAAM,WAAW,OAAO,MAAM,GAAG,EAAE,OAAO,OAAO;AACjD,QAAM,QAAO,cAAS,SAAS,SAAS,CAAC,MAA5B,mBAA+B,QAAQ,UAAU;AAC9D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,OAAM,0CAAU,QAAV,mBAAe;AAC3B,SAAO,MAAM,GAAG,IAAI,MAAM,GAAG,KAAK;AACpC;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summaries.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/summaries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,MAAM,GAAE,SAAS,EAAO,GACvB,MAAM,
|
|
1
|
+
{"version":3,"file":"summaries.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/summaries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAc,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,MAAM,GAAE,SAAS,EAAO,GACvB,MAAM,CAQR;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAQjE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CASpE;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,kBAAkB,EACzB,OAAO,EAAE,mBAAmB,EAAE,GAC7B,MAAM,CAWR;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CActE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAYjE;AASD,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAMjE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAUlE;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAY7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summaries.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/summaries.ts"],"sourcesContent":["import type { ChatModel } from \"../../chat/types\";\nimport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nimport { checkoutMode, worktreeMode } from \"./update\";\nimport { isDenyMode, type PermissionListEntry } from \"./permissions-model\";\n\nexport function summarizeModel(\n value: AISpecRuntimeValue,\n models: ChatModel[] = [],\n): string {\n const parts: string[] = [];\n const model = value.model?.trim();\n if (model) {\n parts.push(models.find((m) => m.id === model)?.label ?? model);\n }\n if (value.effort) parts.push(value.effort);\n
|
|
1
|
+
{"version":3,"file":"summaries.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/summaries.ts"],"sourcesContent":["import type { ChatModel } from \"../../chat/types\";\nimport type { AISpecRuntimeValue } from \"../SpecRuntimeEditor.model\";\nimport { checkoutMode, commitPhase, worktreeMode } from \"./update\";\nimport { isDenyMode, type PermissionListEntry } from \"./permissions-model\";\n\nexport function summarizeModel(\n value: AISpecRuntimeValue,\n models: ChatModel[] = [],\n): string {\n const parts: string[] = [];\n const model = value.model?.trim();\n if (model) {\n parts.push(models.find((m) => m.id === model)?.label ?? model);\n }\n if (value.effort) parts.push(value.effort);\n return parts.length > 0 ? parts.join(\" · \") : \"Default model\";\n}\n\nexport function summarizePrompt(value: AISpecRuntimeValue): string {\n const overrides = [\n value.prompt?.user,\n value.prompt?.system,\n value.prompt?.appendSystem,\n ].filter((text) => Boolean(text?.trim())).length;\n if (overrides === 0) return \"Base prompt only\";\n return `${overrides} override${overrides > 1 ? \"s\" : \"\"} set`;\n}\n\nexport function summarizeWorkspace(value: AISpecRuntimeValue): string {\n const mode = checkoutMode(value);\n if (mode === \"none\") return \"No checkout\";\n const parts: string[] = [mode];\n const ref = value.setup?.checkout?.ref?.trim();\n if (ref) parts.push(ref);\n const worktree = worktreeMode(value);\n parts.push(worktree === \"none\" ? \"in-place\" : `${worktree} worktree`);\n return parts.join(\" · \");\n}\n\nexport function summarizePermissions(\n value: AISpecRuntimeValue,\n entries: PermissionListEntry[],\n): string {\n const parts: string[] = [value.permissions?.mode || \"default\"];\n const denied = entries.filter(\n (entry) => entry.domain === \"tools\" && entry.mode === \"deny\",\n ).length;\n const off = entries.filter(\n (entry) => entry.domain !== \"tools\" && isDenyMode(entry.mode),\n ).length;\n if (denied > 0) parts.push(`${denied} denied`);\n if (off > 0) parts.push(`${off} off`);\n return parts.join(\" · \");\n}\n\nexport function summarizeEnvironment(value: AISpecRuntimeValue): string {\n const vars = (value.setup?.envVars ?? []).filter((item) =>\n Boolean(item.name?.trim()),\n );\n if (vars.length === 0) return \"No variables\";\n const secrets = vars.filter((item) => {\n if (typeof item.valueFrom === \"string\") {\n return item.valueFrom.trim().startsWith(\"secret://\");\n }\n return Boolean(item.valueFrom?.secretKeyRef);\n }).length;\n const parts = [`${vars.length} var${vars.length !== 1 ? \"s\" : \"\"}`];\n if (secrets > 0) parts.push(`${secrets} secret`);\n return parts.join(\" · \");\n}\n\nexport function summarizeVerify(value: AISpecRuntimeValue): string {\n const verify = value.workflow?.verify;\n if (!verify) return \"No fixture\";\n const parts: string[] = [];\n if (verify.fixture?.trim()) parts.push(\"Fixture\");\n if (verify.scope === \"changed\") parts.push(\"changed files\");\n if (verify.maxIterations != null && verify.maxIterations > 0) {\n parts.push(\n `${verify.maxIterations} iteration${verify.maxIterations !== 1 ? \"s\" : \"\"}`,\n );\n }\n return parts.length > 0 ? parts.join(\" · \") : \"No fixture\";\n}\n\nconst COMMIT_PHASE_SUMMARIES = {\n none: \"Leave uncommitted\",\n turn: \"Commit every turn\",\n agent: \"Commit after the loop\",\n run: \"Commit changes\",\n} as const;\n\nexport function summarizeCommit(value: AISpecRuntimeValue): string {\n const phase = commitPhase(value);\n const summary = COMMIT_PHASE_SUMMARIES[phase];\n return value.workflow?.commits?.[0]?.dryRun\n ? `${summary} · dry run`\n : summary;\n}\n\nexport function summarizeCLIArgs(value: AISpecRuntimeValue): string {\n const flags = Object.entries(value.cliArgs ?? {}).filter(\n ([, item]) =>\n item !== undefined &&\n item !== \"\" &&\n item !== false &&\n (!Array.isArray(item) || item.length > 0),\n ).length;\n if (flags === 0) return \"Defaults\";\n return `${flags} flag${flags !== 1 ? \"s\" : \"\"} set`;\n}\n\n// The rail target chip: repo (from checkout URL or local path) plus ref.\nexport function summarizeTarget(value: AISpecRuntimeValue): string | undefined {\n const checkout = value.setup?.checkout;\n const source = checkout?.url?.trim() || checkout?.path?.trim();\n if (!source) return undefined;\n // Split-and-filter instead of `.replace(/\\/+$/, \"\")`: the trailing-slash\n // strip was a polynomial (ReDoS) match on many-`/` inputs. Empty segments\n // from trailing/duplicate slashes are dropped, so the last one is the repo.\n const segments = source.split(\"/\").filter(Boolean);\n const repo = segments[segments.length - 1]?.replace(/\\.git$/, \"\");\n if (!repo) return undefined;\n const ref = checkout?.ref?.trim();\n return ref ? `${repo} · ${ref}` : repo;\n}\n"],"names":[],"mappings":"AAiHO,SAAS,gBAAgB,OAA+C;AAAxE;AACL,QAAM,YAAW,WAAM,UAAN,mBAAa;AAC9B,QAAM,WAAS,0CAAU,QAAV,mBAAe,aAAU,0CAAU,SAAV,mBAAgB;AACxD,MAAI,CAAC,OAAQ,QAAO;AAIpB,QAAM,WAAW,OAAO,MAAM,GAAG,EAAE,OAAO,OAAO;AACjD,QAAM,QAAO,cAAS,SAAS,SAAS,CAAC,MAA5B,mBAA+B,QAAQ,UAAU;AAC9D,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,OAAM,0CAAU,QAAV,mBAAe;AAC3B,SAAO,MAAM,GAAG,IAAI,MAAM,GAAG,KAAK;AACpC;"}
|
|
@@ -60,15 +60,26 @@ function withVerify(value, patch) {
|
|
|
60
60
|
}
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
|
-
function
|
|
63
|
+
function withCommit(value, patch) {
|
|
64
64
|
var _a;
|
|
65
|
+
const [first, ...rest] = ((_a = value.workflow) == null ? void 0 : _a.commits) ?? [];
|
|
65
66
|
return withRoot(value, {
|
|
66
|
-
workflow: {
|
|
67
|
-
...value.workflow,
|
|
68
|
-
postRun: { ...(_a = value.workflow) == null ? void 0 : _a.postRun, ...patch }
|
|
69
|
-
}
|
|
67
|
+
workflow: { ...value.workflow, commits: [{ ...first, ...patch }, ...rest] }
|
|
70
68
|
});
|
|
71
69
|
}
|
|
70
|
+
function withCommitPhase(value, phase) {
|
|
71
|
+
if (phase === "none") {
|
|
72
|
+
return withRoot(value, { workflow: { ...value.workflow, commits: [] } });
|
|
73
|
+
}
|
|
74
|
+
return withCommit(value, { on: phase });
|
|
75
|
+
}
|
|
76
|
+
function commitPhase(value) {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
const commits = (_a = value.workflow) == null ? void 0 : _a.commits;
|
|
79
|
+
if (!(commits == null ? void 0 : commits.length)) return "none";
|
|
80
|
+
const on = (_b = commits[0]) == null ? void 0 : _b.on;
|
|
81
|
+
return on === "turn" || on === "agent" ? on : "run";
|
|
82
|
+
}
|
|
72
83
|
function withCheckoutMode(value, mode) {
|
|
73
84
|
if (mode === "none") {
|
|
74
85
|
return withCheckout(value, {
|
|
@@ -124,15 +135,17 @@ function stashMode(value) {
|
|
|
124
135
|
return "none";
|
|
125
136
|
}
|
|
126
137
|
exports.checkoutMode = checkoutMode;
|
|
138
|
+
exports.commitPhase = commitPhase;
|
|
127
139
|
exports.stashMode = stashMode;
|
|
128
140
|
exports.withBudgetValue = withBudgetValue;
|
|
129
141
|
exports.withCheckout = withCheckout;
|
|
130
142
|
exports.withCheckoutMode = withCheckoutMode;
|
|
143
|
+
exports.withCommit = withCommit;
|
|
144
|
+
exports.withCommitPhase = withCommitPhase;
|
|
131
145
|
exports.withDirty = withDirty;
|
|
132
146
|
exports.withMemory = withMemory;
|
|
133
147
|
exports.withOptionalRoot = withOptionalRoot;
|
|
134
148
|
exports.withPermissions = withPermissions;
|
|
135
|
-
exports.withPostRun = withPostRun;
|
|
136
149
|
exports.withPrompt = withPrompt;
|
|
137
150
|
exports.withRoot = withRoot;
|
|
138
151
|
exports.withSetup = withSetup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"sourcesContent":["import type {\n AISpecRuntimeMemory,\n AISpecRuntimePermissions,\n AISpecRuntimePrompt,\n AISpecRuntimeSetup,\n AISpecRuntimeValue,\n SpecCheckoutMode,\n SpecStashMode,\n SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\n\ntype SpecCheckout = NonNullable<AISpecRuntimeSetup[\"checkout\"]>;\ntype SpecWorktree = NonNullable<SpecCheckout[\"worktree\"]>;\ntype SpecDirty = NonNullable<SpecCheckout[\"dirty\"]>;\ntype SpecWorkflow = NonNullable<AISpecRuntimeValue[\"workflow\"]>;\ntype SpecBudget = NonNullable<AISpecRuntimeValue[\"budget\"]>;\n\nexport function withRoot(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeValue>,\n): AISpecRuntimeValue {\n return { ...value, ...patch };\n}\n\n// Sets a top-level scalar, deleting the key entirely when cleared so the\n// compacted payload omits it instead of carrying an empty string/undefined.\nexport function withOptionalRoot(\n value: AISpecRuntimeValue,\n key: keyof AISpecRuntimeValue,\n next: unknown,\n): AISpecRuntimeValue {\n const updated = { ...value } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete updated[key];\n } else {\n updated[key] = next;\n }\n return updated as AISpecRuntimeValue;\n}\n\nexport function withPrompt(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePrompt>,\n): AISpecRuntimeValue {\n return withRoot(value, { prompt: { ...value.prompt, ...patch } });\n}\n\nexport function withBudget(\n value: AISpecRuntimeValue,\n budget: SpecBudget,\n): AISpecRuntimeValue {\n return withRoot(value, { budget });\n}\n\nexport function withBudgetValue(\n value: AISpecRuntimeValue,\n key: keyof SpecBudget,\n next: number | string | undefined,\n): AISpecRuntimeValue {\n const budget = { ...value.budget } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete budget[key];\n } else {\n budget[key] = next;\n }\n return withRoot(value, { budget: budget as SpecBudget });\n}\n\nexport function withMemory(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeMemory>,\n): AISpecRuntimeValue {\n return withRoot(value, { memory: { ...value.memory, ...patch } });\n}\n\nexport function withPermissions(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePermissions>,\n): AISpecRuntimeValue {\n return withRoot(value, { permissions: { ...value.permissions, ...patch } });\n}\n\nexport function withSetup(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSetup>,\n): AISpecRuntimeValue {\n return withRoot(value, { setup: { ...value.setup, ...patch } });\n}\n\nexport function withCheckout(\n value: AISpecRuntimeValue,\n patch: SpecCheckout,\n): AISpecRuntimeValue {\n return withSetup(value, {\n checkout: { ...value.setup?.checkout, ...patch },\n });\n}\n\nexport function withWorktree(\n value: AISpecRuntimeValue,\n patch: SpecWorktree,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n worktree: { ...value.setup?.checkout?.worktree, ...patch },\n });\n}\n\nexport function withDirty(\n value: AISpecRuntimeValue,\n patch: SpecDirty,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n dirty: { ...value.setup?.checkout?.dirty, ...patch },\n });\n}\n\nexport function withVerify(\n value: AISpecRuntimeValue,\n patch: NonNullable<SpecWorkflow[\"verify\"]>,\n): AISpecRuntimeValue {\n return withRoot(value, {\n workflow: {\n ...value.workflow,\n verify: { ...value.workflow?.verify, ...patch },\n },\n });\n}\n\nexport function withPostRun(\n value: AISpecRuntimeValue,\n patch: NonNullable<SpecWorkflow[\"postRun\"]>,\n): AISpecRuntimeValue {\n return withRoot(value, {\n workflow: {\n ...value.workflow,\n postRun: { ...value.workflow?.postRun, ...patch },\n },\n });\n}\n\n// Mode switches clear the fields that no longer apply, so stale values from a\n// previous mode never leak into the compacted payload.\nexport function withCheckoutMode(\n value: AISpecRuntimeValue,\n mode: SpecCheckoutMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withCheckout(value, {\n mode,\n url: \"\",\n path: \"\",\n connection: \"\",\n ref: \"\",\n depth: 0,\n });\n }\n if (mode === \"local\") return withCheckout(value, { mode, url: \"\", connection: \"\" });\n return withCheckout(value, { mode, path: \"\" });\n}\n\nexport function withWorktreeMode(\n value: AISpecRuntimeValue,\n mode: SpecWorktreeMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withWorktree(value, {\n mode,\n prefix: \"\",\n base: \"\",\n path: \"\",\n keep: false,\n });\n }\n if (mode === \"existing\") {\n return withWorktree(value, { mode, prefix: \"\", base: \"\", keep: false });\n }\n return withWorktree(value, { mode });\n}\n\nexport function withStashMode(\n value: AISpecRuntimeValue,\n stash: SpecStashMode,\n): AISpecRuntimeValue {\n return withDirty(value, stash === \"none\" ? { stash, since: \"\" } : { stash });\n}\n\nexport function checkoutMode(value: AISpecRuntimeValue): SpecCheckoutMode {\n const checkout = value.setup?.checkout;\n if (checkout?.mode === \"remote\") return \"remote\";\n if (checkout?.mode === \"local\" || checkout?.path) return \"local\";\n return \"none\";\n}\n\nexport function worktreeMode(value: AISpecRuntimeValue): SpecWorktreeMode {\n const mode = value.setup?.checkout?.worktree?.mode;\n if (mode === \"existing\") return \"existing\";\n if (mode === \"new\") return \"new\";\n return \"none\";\n}\n\nexport function stashMode(value: AISpecRuntimeValue): SpecStashMode {\n const stash = value.setup?.checkout?.dirty?.stash;\n if (\n stash === \"untracked\" ||\n stash === \"unstaged\" ||\n stash === \"staged\" ||\n stash === \"all\"\n ) {\n return stash;\n }\n return \"none\";\n}\n\nexport function parseOptionalNumber(\n value: string,\n integer = false,\n): number | undefined {\n if (value.trim() === \"\") return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) return undefined;\n return integer ? Math.max(0, Math.trunc(parsed)) : parsed;\n}\n"],"names":[],"mappings":";;AAiBO,SAAS,SACd,OACA,OACoB;AACpB,SAAO,EAAE,GAAG,OAAO,GAAG,MAAA;AACxB;AAIO,SAAS,iBACd,OACA,KACA,MACoB;AACpB,QAAM,UAAU,EAAE,GAAG,MAAA;AACrB,MAAI,SAAS,UAAa,SAAS,IAAI;AACrC,WAAO,QAAQ,GAAG;AAAA,EACpB,OAAO;AACL,YAAQ,GAAG,IAAI;AAAA,EACjB;AACA,SAAO;AACT;AAEO,SAAS,WACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,GAAG,MAAA,GAAS;AAClE;AASO,SAAS,gBACd,OACA,KACA,MACoB;AACpB,QAAM,SAAS,EAAE,GAAG,MAAM,OAAA;AAC1B,MAAI,SAAS,UAAa,SAAS,IAAI;AACrC,WAAO,OAAO,GAAG;AAAA,EACnB,OAAO;AACL,WAAO,GAAG,IAAI;AAAA,EAChB;AACA,SAAO,SAAS,OAAO,EAAE,QAA8B;AACzD;AAEO,SAAS,WACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,GAAG,MAAA,GAAS;AAClE;AAEO,SAAS,gBACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,aAAa,GAAG,MAAA,GAAS;AAC5E;AAEO,SAAS,UACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,GAAG,MAAA,GAAS;AAChE;AAEO,SAAS,aACd,OACA,OACoB;;AACpB,SAAO,UAAU,OAAO;AAAA,IACtB,UAAU,EAAE,IAAG,WAAM,UAAN,mBAAa,UAAU,GAAG,MAAA;AAAA,EAAM,CAChD;AACH;AAEO,SAAS,aACd,OACA,OACoB;;AACpB,SAAO,aAAa,OAAO;AAAA,IACzB,UAAU,EAAE,IAAG,iBAAM,UAAN,mBAAa,aAAb,mBAAuB,UAAU,GAAG,MAAA;AAAA,EAAM,CAC1D;AACH;AAEO,SAAS,UACd,OACA,OACoB;;AACpB,SAAO,aAAa,OAAO;AAAA,IACzB,OAAO,EAAE,IAAG,iBAAM,UAAN,mBAAa,aAAb,mBAAuB,OAAO,GAAG,MAAA;AAAA,EAAM,CACpD;AACH;AAEO,SAAS,WACd,OACA,OACoB;;AACpB,SAAO,SAAS,OAAO;AAAA,IACrB,UAAU;AAAA,MACR,GAAG,MAAM;AAAA,MACT,QAAQ,EAAE,IAAG,WAAM,aAAN,mBAAgB,QAAQ,GAAG,MAAA;AAAA,IAAM;AAAA,EAChD,CACD;AACH;AAEO,SAAS,YACd,OACA,OACoB;;AACpB,SAAO,SAAS,OAAO;AAAA,IACrB,UAAU;AAAA,MACR,GAAG,MAAM;AAAA,MACT,SAAS,EAAE,IAAG,WAAM,aAAN,mBAAgB,SAAS,GAAG,MAAA;AAAA,IAAM;AAAA,EAClD,CACD;AACH;AAIO,SAAS,iBACd,OACA,MACoB;AACpB,MAAI,SAAS,QAAQ;AACnB,WAAO,aAAa,OAAO;AAAA,MACzB;AAAA,MACA,KAAK;AAAA,MACL,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,IAAA,CACR;AAAA,EACH;AACA,MAAI,SAAS,QAAS,QAAO,aAAa,OAAO,EAAE,MAAM,KAAK,IAAI,YAAY,GAAA,CAAI;AAClF,SAAO,aAAa,OAAO,EAAE,MAAM,MAAM,IAAI;AAC/C;AAEO,SAAS,iBACd,OACA,MACoB;AACpB,MAAI,SAAS,QAAQ;AACnB,WAAO,aAAa,OAAO;AAAA,MACzB;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AACA,MAAI,SAAS,YAAY;AACvB,WAAO,aAAa,OAAO,EAAE,MAAM,QAAQ,IAAI,MAAM,IAAI,MAAM,OAAO;AAAA,EACxE;AACA,SAAO,aAAa,OAAO,EAAE,MAAM;AACrC;AAEO,SAAS,cACd,OACA,OACoB;AACpB,SAAO,UAAU,OAAO,UAAU,SAAS,EAAE,OAAO,OAAO,GAAA,IAAO,EAAE,OAAO;AAC7E;AAEO,SAAS,aAAa,OAA6C;;AACxE,QAAM,YAAW,WAAM,UAAN,mBAAa;AAC9B,OAAI,qCAAU,UAAS,SAAU,QAAO;AACxC,OAAI,qCAAU,UAAS,YAAW,qCAAU,MAAM,QAAO;AACzD,SAAO;AACT;AAEO,SAAS,aAAa,OAA6C;;AACxE,QAAM,QAAO,uBAAM,UAAN,mBAAa,aAAb,mBAAuB,aAAvB,mBAAiC;AAC9C,MAAI,SAAS,WAAY,QAAO;AAChC,MAAI,SAAS,MAAO,QAAO;AAC3B,SAAO;AACT;AAEO,SAAS,UAAU,OAA0C;;AAClE,QAAM,SAAQ,uBAAM,UAAN,mBAAa,aAAb,mBAAuB,UAAvB,mBAA8B;AAC5C,MACE,UAAU,eACV,UAAU,cACV,UAAU,YACV,UAAU,OACV;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"update.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"sourcesContent":["import type {\n AISpecRuntimeMemory,\n AISpecRuntimePermissions,\n AISpecRuntimePrompt,\n AISpecRuntimeSetup,\n AISpecRuntimeValue,\n SpecCheckoutMode,\n SpecCommitPhase,\n SpecStashMode,\n SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\n\ntype SpecCheckout = NonNullable<AISpecRuntimeSetup[\"checkout\"]>;\ntype SpecWorktree = NonNullable<SpecCheckout[\"worktree\"]>;\ntype SpecDirty = NonNullable<SpecCheckout[\"dirty\"]>;\ntype SpecWorkflow = NonNullable<AISpecRuntimeValue[\"workflow\"]>;\ntype SpecCommit = NonNullable<SpecWorkflow[\"commits\"]>[number];\ntype SpecBudget = NonNullable<AISpecRuntimeValue[\"budget\"]>;\n\nexport function withRoot(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeValue>,\n): AISpecRuntimeValue {\n return { ...value, ...patch };\n}\n\n// Sets a top-level scalar, deleting the key entirely when cleared so the\n// compacted payload omits it instead of carrying an empty string/undefined.\nexport function withOptionalRoot(\n value: AISpecRuntimeValue,\n key: keyof AISpecRuntimeValue,\n next: unknown,\n): AISpecRuntimeValue {\n const updated = { ...value } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete updated[key];\n } else {\n updated[key] = next;\n }\n return updated as AISpecRuntimeValue;\n}\n\nexport function withPrompt(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePrompt>,\n): AISpecRuntimeValue {\n return withRoot(value, { prompt: { ...value.prompt, ...patch } });\n}\n\nexport function withBudget(\n value: AISpecRuntimeValue,\n budget: SpecBudget,\n): AISpecRuntimeValue {\n return withRoot(value, { budget });\n}\n\nexport function withBudgetValue(\n value: AISpecRuntimeValue,\n key: keyof SpecBudget,\n next: number | string | undefined,\n): AISpecRuntimeValue {\n const budget = { ...value.budget } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete budget[key];\n } else {\n budget[key] = next;\n }\n return withRoot(value, { budget: budget as SpecBudget });\n}\n\nexport function withMemory(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeMemory>,\n): AISpecRuntimeValue {\n return withRoot(value, { memory: { ...value.memory, ...patch } });\n}\n\nexport function withPermissions(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePermissions>,\n): AISpecRuntimeValue {\n return withRoot(value, { permissions: { ...value.permissions, ...patch } });\n}\n\nexport function withSetup(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSetup>,\n): AISpecRuntimeValue {\n return withRoot(value, { setup: { ...value.setup, ...patch } });\n}\n\nexport function withCheckout(\n value: AISpecRuntimeValue,\n patch: SpecCheckout,\n): AISpecRuntimeValue {\n return withSetup(value, {\n checkout: { ...value.setup?.checkout, ...patch },\n });\n}\n\nexport function withWorktree(\n value: AISpecRuntimeValue,\n patch: SpecWorktree,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n worktree: { ...value.setup?.checkout?.worktree, ...patch },\n });\n}\n\nexport function withDirty(\n value: AISpecRuntimeValue,\n patch: SpecDirty,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n dirty: { ...value.setup?.checkout?.dirty, ...patch },\n });\n}\n\nexport function withVerify(\n value: AISpecRuntimeValue,\n patch: NonNullable<SpecWorkflow[\"verify\"]>,\n): AISpecRuntimeValue {\n return withRoot(value, {\n workflow: {\n ...value.workflow,\n verify: { ...value.workflow?.verify, ...patch },\n },\n });\n}\n\n// The editor drives a single commit policy. A spec authored by hand may declare\n// several stanzas; the ones past the first are carried through untouched rather\n// than collapsed away by an edit to a field the editor does surface.\nexport function withCommit(\n value: AISpecRuntimeValue,\n patch: Partial<SpecCommit>,\n): AISpecRuntimeValue {\n const [first, ...rest] = value.workflow?.commits ?? [];\n return withRoot(value, {\n workflow: { ...value.workflow, commits: [{ ...first, ...patch }, ...rest] },\n });\n}\n\n// \"Never\" drops every stanza rather than flagging one off: an absent list is how\n// the spec says \"commit nothing\", and a surviving {dryRun: true} would leave the\n// section reading as configured.\nexport function withCommitPhase(\n value: AISpecRuntimeValue,\n phase: SpecCommitPhase | \"none\",\n): AISpecRuntimeValue {\n if (phase === \"none\") {\n return withRoot(value, { workflow: { ...value.workflow, commits: [] } });\n }\n return withCommit(value, { on: phase });\n}\n\n// A stanza with no explicit phase commits at the end of the run, matching\n// api.Commit.Phase()'s default.\nexport function commitPhase(\n value: AISpecRuntimeValue,\n): SpecCommitPhase | \"none\" {\n const commits = value.workflow?.commits;\n if (!commits?.length) return \"none\";\n const on = commits[0]?.on;\n return on === \"turn\" || on === \"agent\" ? on : \"run\";\n}\n\n// Mode switches clear the fields that no longer apply, so stale values from a\n// previous mode never leak into the compacted payload.\nexport function withCheckoutMode(\n value: AISpecRuntimeValue,\n mode: SpecCheckoutMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withCheckout(value, {\n mode,\n url: \"\",\n path: \"\",\n connection: \"\",\n ref: \"\",\n depth: 0,\n });\n }\n if (mode === \"local\") return withCheckout(value, { mode, url: \"\", connection: \"\" });\n return withCheckout(value, { mode, path: \"\" });\n}\n\nexport function withWorktreeMode(\n value: AISpecRuntimeValue,\n mode: SpecWorktreeMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withWorktree(value, {\n mode,\n prefix: \"\",\n base: \"\",\n path: \"\",\n keep: false,\n });\n }\n if (mode === \"existing\") {\n return withWorktree(value, { mode, prefix: \"\", base: \"\", keep: false });\n }\n return withWorktree(value, { mode });\n}\n\nexport function withStashMode(\n value: AISpecRuntimeValue,\n stash: SpecStashMode,\n): AISpecRuntimeValue {\n return withDirty(value, stash === \"none\" ? { stash, since: \"\" } : { stash });\n}\n\nexport function checkoutMode(value: AISpecRuntimeValue): SpecCheckoutMode {\n const checkout = value.setup?.checkout;\n if (checkout?.mode === \"remote\") return \"remote\";\n if (checkout?.mode === \"local\" || checkout?.path) return \"local\";\n return \"none\";\n}\n\nexport function worktreeMode(value: AISpecRuntimeValue): SpecWorktreeMode {\n const mode = value.setup?.checkout?.worktree?.mode;\n if (mode === \"existing\") return \"existing\";\n if (mode === \"new\") return \"new\";\n return \"none\";\n}\n\nexport function stashMode(value: AISpecRuntimeValue): SpecStashMode {\n const stash = value.setup?.checkout?.dirty?.stash;\n if (\n stash === \"untracked\" ||\n stash === \"unstaged\" ||\n stash === \"staged\" ||\n stash === \"all\"\n ) {\n return stash;\n }\n return \"none\";\n}\n\nexport function parseOptionalNumber(\n value: string,\n integer = false,\n): number | undefined {\n if (value.trim() === \"\") return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) return undefined;\n return integer ? Math.max(0, Math.trunc(parsed)) : parsed;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { AISpecRuntimeMemory, AISpecRuntimePermissions, AISpecRuntimePrompt, AISpecRuntimeSetup, AISpecRuntimeValue, SpecCheckoutMode, SpecStashMode, SpecWorktreeMode } from '../SpecRuntimeEditor.model';
|
|
1
|
+
import { AISpecRuntimeMemory, AISpecRuntimePermissions, AISpecRuntimePrompt, AISpecRuntimeSetup, AISpecRuntimeValue, SpecCheckoutMode, SpecCommitPhase, SpecStashMode, SpecWorktreeMode } from '../SpecRuntimeEditor.model';
|
|
2
2
|
type SpecCheckout = NonNullable<AISpecRuntimeSetup["checkout"]>;
|
|
3
3
|
type SpecWorktree = NonNullable<SpecCheckout["worktree"]>;
|
|
4
4
|
type SpecDirty = NonNullable<SpecCheckout["dirty"]>;
|
|
5
5
|
type SpecWorkflow = NonNullable<AISpecRuntimeValue["workflow"]>;
|
|
6
|
+
type SpecCommit = NonNullable<SpecWorkflow["commits"]>[number];
|
|
6
7
|
type SpecBudget = NonNullable<AISpecRuntimeValue["budget"]>;
|
|
7
8
|
export declare function withRoot(value: AISpecRuntimeValue, patch: Partial<AISpecRuntimeValue>): AISpecRuntimeValue;
|
|
8
9
|
export declare function withOptionalRoot(value: AISpecRuntimeValue, key: keyof AISpecRuntimeValue, next: unknown): AISpecRuntimeValue;
|
|
@@ -16,7 +17,9 @@ export declare function withCheckout(value: AISpecRuntimeValue, patch: SpecCheck
|
|
|
16
17
|
export declare function withWorktree(value: AISpecRuntimeValue, patch: SpecWorktree): AISpecRuntimeValue;
|
|
17
18
|
export declare function withDirty(value: AISpecRuntimeValue, patch: SpecDirty): AISpecRuntimeValue;
|
|
18
19
|
export declare function withVerify(value: AISpecRuntimeValue, patch: NonNullable<SpecWorkflow["verify"]>): AISpecRuntimeValue;
|
|
19
|
-
export declare function
|
|
20
|
+
export declare function withCommit(value: AISpecRuntimeValue, patch: Partial<SpecCommit>): AISpecRuntimeValue;
|
|
21
|
+
export declare function withCommitPhase(value: AISpecRuntimeValue, phase: SpecCommitPhase | "none"): AISpecRuntimeValue;
|
|
22
|
+
export declare function commitPhase(value: AISpecRuntimeValue): SpecCommitPhase | "none";
|
|
20
23
|
export declare function withCheckoutMode(value: AISpecRuntimeValue, mode: SpecCheckoutMode): AISpecRuntimeValue;
|
|
21
24
|
export declare function withWorktreeMode(value: AISpecRuntimeValue, mode: SpecWorktreeMode): AISpecRuntimeValue;
|
|
22
25
|
export declare function withStashMode(value: AISpecRuntimeValue, stash: SpecStashMode): AISpecRuntimeValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAEpC,KAAK,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,KAAK,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;AAC1D,KAAK,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,KAAK,YAAY,GAAG,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;AAChE,KAAK,UAAU,GAAG,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,kBAAkB,CAEpB;AAID,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,MAAM,kBAAkB,EAC7B,IAAI,EAAE,OAAO,GACZ,kBAAkB,CAQpB;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAClC,kBAAkB,CAEpB;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,UAAU,GACjB,kBAAkB,CAEpB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,MAAM,UAAU,EACrB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAChC,kBAAkB,CAQpB;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAClC,kBAAkB,CAEpB;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC,GACvC,kBAAkB,CAEpB;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACjC,kBAAkB,CAEpB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,YAAY,GAClB,kBAAkB,CAIpB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,YAAY,GAClB,kBAAkB,CAIpB;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,SAAS,GACf,kBAAkB,CAIpB;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,GACzC,kBAAkB,CAOpB;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,15 +58,26 @@ function withVerify(value, patch) {
|
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
}
|
|
61
|
-
function
|
|
61
|
+
function withCommit(value, patch) {
|
|
62
62
|
var _a;
|
|
63
|
+
const [first, ...rest] = ((_a = value.workflow) == null ? void 0 : _a.commits) ?? [];
|
|
63
64
|
return withRoot(value, {
|
|
64
|
-
workflow: {
|
|
65
|
-
...value.workflow,
|
|
66
|
-
postRun: { ...(_a = value.workflow) == null ? void 0 : _a.postRun, ...patch }
|
|
67
|
-
}
|
|
65
|
+
workflow: { ...value.workflow, commits: [{ ...first, ...patch }, ...rest] }
|
|
68
66
|
});
|
|
69
67
|
}
|
|
68
|
+
function withCommitPhase(value, phase) {
|
|
69
|
+
if (phase === "none") {
|
|
70
|
+
return withRoot(value, { workflow: { ...value.workflow, commits: [] } });
|
|
71
|
+
}
|
|
72
|
+
return withCommit(value, { on: phase });
|
|
73
|
+
}
|
|
74
|
+
function commitPhase(value) {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const commits = (_a = value.workflow) == null ? void 0 : _a.commits;
|
|
77
|
+
if (!(commits == null ? void 0 : commits.length)) return "none";
|
|
78
|
+
const on = (_b = commits[0]) == null ? void 0 : _b.on;
|
|
79
|
+
return on === "turn" || on === "agent" ? on : "run";
|
|
80
|
+
}
|
|
70
81
|
function withCheckoutMode(value, mode) {
|
|
71
82
|
if (mode === "none") {
|
|
72
83
|
return withCheckout(value, {
|
|
@@ -123,15 +134,17 @@ function stashMode(value) {
|
|
|
123
134
|
}
|
|
124
135
|
export {
|
|
125
136
|
checkoutMode,
|
|
137
|
+
commitPhase,
|
|
126
138
|
stashMode,
|
|
127
139
|
withBudgetValue,
|
|
128
140
|
withCheckout,
|
|
129
141
|
withCheckoutMode,
|
|
142
|
+
withCommit,
|
|
143
|
+
withCommitPhase,
|
|
130
144
|
withDirty,
|
|
131
145
|
withMemory,
|
|
132
146
|
withOptionalRoot,
|
|
133
147
|
withPermissions,
|
|
134
|
-
withPostRun,
|
|
135
148
|
withPrompt,
|
|
136
149
|
withRoot,
|
|
137
150
|
withSetup,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"sourcesContent":["import type {\n AISpecRuntimeMemory,\n AISpecRuntimePermissions,\n AISpecRuntimePrompt,\n AISpecRuntimeSetup,\n AISpecRuntimeValue,\n SpecCheckoutMode,\n SpecStashMode,\n SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\n\ntype SpecCheckout = NonNullable<AISpecRuntimeSetup[\"checkout\"]>;\ntype SpecWorktree = NonNullable<SpecCheckout[\"worktree\"]>;\ntype SpecDirty = NonNullable<SpecCheckout[\"dirty\"]>;\ntype SpecWorkflow = NonNullable<AISpecRuntimeValue[\"workflow\"]>;\ntype SpecBudget = NonNullable<AISpecRuntimeValue[\"budget\"]>;\n\nexport function withRoot(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeValue>,\n): AISpecRuntimeValue {\n return { ...value, ...patch };\n}\n\n// Sets a top-level scalar, deleting the key entirely when cleared so the\n// compacted payload omits it instead of carrying an empty string/undefined.\nexport function withOptionalRoot(\n value: AISpecRuntimeValue,\n key: keyof AISpecRuntimeValue,\n next: unknown,\n): AISpecRuntimeValue {\n const updated = { ...value } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete updated[key];\n } else {\n updated[key] = next;\n }\n return updated as AISpecRuntimeValue;\n}\n\nexport function withPrompt(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePrompt>,\n): AISpecRuntimeValue {\n return withRoot(value, { prompt: { ...value.prompt, ...patch } });\n}\n\nexport function withBudget(\n value: AISpecRuntimeValue,\n budget: SpecBudget,\n): AISpecRuntimeValue {\n return withRoot(value, { budget });\n}\n\nexport function withBudgetValue(\n value: AISpecRuntimeValue,\n key: keyof SpecBudget,\n next: number | string | undefined,\n): AISpecRuntimeValue {\n const budget = { ...value.budget } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete budget[key];\n } else {\n budget[key] = next;\n }\n return withRoot(value, { budget: budget as SpecBudget });\n}\n\nexport function withMemory(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeMemory>,\n): AISpecRuntimeValue {\n return withRoot(value, { memory: { ...value.memory, ...patch } });\n}\n\nexport function withPermissions(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePermissions>,\n): AISpecRuntimeValue {\n return withRoot(value, { permissions: { ...value.permissions, ...patch } });\n}\n\nexport function withSetup(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSetup>,\n): AISpecRuntimeValue {\n return withRoot(value, { setup: { ...value.setup, ...patch } });\n}\n\nexport function withCheckout(\n value: AISpecRuntimeValue,\n patch: SpecCheckout,\n): AISpecRuntimeValue {\n return withSetup(value, {\n checkout: { ...value.setup?.checkout, ...patch },\n });\n}\n\nexport function withWorktree(\n value: AISpecRuntimeValue,\n patch: SpecWorktree,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n worktree: { ...value.setup?.checkout?.worktree, ...patch },\n });\n}\n\nexport function withDirty(\n value: AISpecRuntimeValue,\n patch: SpecDirty,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n dirty: { ...value.setup?.checkout?.dirty, ...patch },\n });\n}\n\nexport function withVerify(\n value: AISpecRuntimeValue,\n patch: NonNullable<SpecWorkflow[\"verify\"]>,\n): AISpecRuntimeValue {\n return withRoot(value, {\n workflow: {\n ...value.workflow,\n verify: { ...value.workflow?.verify, ...patch },\n },\n });\n}\n\nexport function withPostRun(\n value: AISpecRuntimeValue,\n patch: NonNullable<SpecWorkflow[\"postRun\"]>,\n): AISpecRuntimeValue {\n return withRoot(value, {\n workflow: {\n ...value.workflow,\n postRun: { ...value.workflow?.postRun, ...patch },\n },\n });\n}\n\n// Mode switches clear the fields that no longer apply, so stale values from a\n// previous mode never leak into the compacted payload.\nexport function withCheckoutMode(\n value: AISpecRuntimeValue,\n mode: SpecCheckoutMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withCheckout(value, {\n mode,\n url: \"\",\n path: \"\",\n connection: \"\",\n ref: \"\",\n depth: 0,\n });\n }\n if (mode === \"local\") return withCheckout(value, { mode, url: \"\", connection: \"\" });\n return withCheckout(value, { mode, path: \"\" });\n}\n\nexport function withWorktreeMode(\n value: AISpecRuntimeValue,\n mode: SpecWorktreeMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withWorktree(value, {\n mode,\n prefix: \"\",\n base: \"\",\n path: \"\",\n keep: false,\n });\n }\n if (mode === \"existing\") {\n return withWorktree(value, { mode, prefix: \"\", base: \"\", keep: false });\n }\n return withWorktree(value, { mode });\n}\n\nexport function withStashMode(\n value: AISpecRuntimeValue,\n stash: SpecStashMode,\n): AISpecRuntimeValue {\n return withDirty(value, stash === \"none\" ? { stash, since: \"\" } : { stash });\n}\n\nexport function checkoutMode(value: AISpecRuntimeValue): SpecCheckoutMode {\n const checkout = value.setup?.checkout;\n if (checkout?.mode === \"remote\") return \"remote\";\n if (checkout?.mode === \"local\" || checkout?.path) return \"local\";\n return \"none\";\n}\n\nexport function worktreeMode(value: AISpecRuntimeValue): SpecWorktreeMode {\n const mode = value.setup?.checkout?.worktree?.mode;\n if (mode === \"existing\") return \"existing\";\n if (mode === \"new\") return \"new\";\n return \"none\";\n}\n\nexport function stashMode(value: AISpecRuntimeValue): SpecStashMode {\n const stash = value.setup?.checkout?.dirty?.stash;\n if (\n stash === \"untracked\" ||\n stash === \"unstaged\" ||\n stash === \"staged\" ||\n stash === \"all\"\n ) {\n return stash;\n }\n return \"none\";\n}\n\nexport function parseOptionalNumber(\n value: string,\n integer = false,\n): number | undefined {\n if (value.trim() === \"\") return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) return undefined;\n return integer ? Math.max(0, Math.trunc(parsed)) : parsed;\n}\n"],"names":[],"mappings":"AAiBO,SAAS,SACd,OACA,OACoB;AACpB,SAAO,EAAE,GAAG,OAAO,GAAG,MAAA;AACxB;AAIO,SAAS,iBACd,OACA,KACA,MACoB;AACpB,QAAM,UAAU,EAAE,GAAG,MAAA;AACrB,MAAI,SAAS,UAAa,SAAS,IAAI;AACrC,WAAO,QAAQ,GAAG;AAAA,EACpB,OAAO;AACL,YAAQ,GAAG,IAAI;AAAA,EACjB;AACA,SAAO;AACT;AAEO,SAAS,WACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,GAAG,MAAA,GAAS;AAClE;AASO,SAAS,gBACd,OACA,KACA,MACoB;AACpB,QAAM,SAAS,EAAE,GAAG,MAAM,OAAA;AAC1B,MAAI,SAAS,UAAa,SAAS,IAAI;AACrC,WAAO,OAAO,GAAG;AAAA,EACnB,OAAO;AACL,WAAO,GAAG,IAAI;AAAA,EAChB;AACA,SAAO,SAAS,OAAO,EAAE,QAA8B;AACzD;AAEO,SAAS,WACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,GAAG,MAAA,GAAS;AAClE;AAEO,SAAS,gBACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,aAAa,GAAG,MAAA,GAAS;AAC5E;AAEO,SAAS,UACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,GAAG,MAAA,GAAS;AAChE;AAEO,SAAS,aACd,OACA,OACoB;AA3Ef;AA4EL,SAAO,UAAU,OAAO;AAAA,IACtB,UAAU,EAAE,IAAG,WAAM,UAAN,mBAAa,UAAU,GAAG,MAAA;AAAA,EAAM,CAChD;AACH;AAEO,SAAS,aACd,OACA,OACoB;AApFf;AAqFL,SAAO,aAAa,OAAO;AAAA,IACzB,UAAU,EAAE,IAAG,iBAAM,UAAN,mBAAa,aAAb,mBAAuB,UAAU,GAAG,MAAA;AAAA,EAAM,CAC1D;AACH;AAEO,SAAS,UACd,OACA,OACoB;AA7Ff;AA8FL,SAAO,aAAa,OAAO;AAAA,IACzB,OAAO,EAAE,IAAG,iBAAM,UAAN,mBAAa,aAAb,mBAAuB,OAAO,GAAG,MAAA;AAAA,EAAM,CACpD;AACH;AAEO,SAAS,WACd,OACA,OACoB;AAtGf;AAuGL,SAAO,SAAS,OAAO;AAAA,IACrB,UAAU;AAAA,MACR,GAAG,MAAM;AAAA,MACT,QAAQ,EAAE,IAAG,WAAM,aAAN,mBAAgB,QAAQ,GAAG,MAAA;AAAA,IAAM;AAAA,EAChD,CACD;AACH;AAEO,SAAS,YACd,OACA,OACoB;AAlHf;AAmHL,SAAO,SAAS,OAAO;AAAA,IACrB,UAAU;AAAA,MACR,GAAG,MAAM;AAAA,MACT,SAAS,EAAE,IAAG,WAAM,aAAN,mBAAgB,SAAS,GAAG,MAAA;AAAA,IAAM;AAAA,EAClD,CACD;AACH;AAIO,SAAS,iBACd,OACA,MACoB;AACpB,MAAI,SAAS,QAAQ;AACnB,WAAO,aAAa,OAAO;AAAA,MACzB;AAAA,MACA,KAAK;AAAA,MACL,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,KAAK;AAAA,MACL,OAAO;AAAA,IAAA,CACR;AAAA,EACH;AACA,MAAI,SAAS,QAAS,QAAO,aAAa,OAAO,EAAE,MAAM,KAAK,IAAI,YAAY,GAAA,CAAI;AAClF,SAAO,aAAa,OAAO,EAAE,MAAM,MAAM,IAAI;AAC/C;AAEO,SAAS,iBACd,OACA,MACoB;AACpB,MAAI,SAAS,QAAQ;AACnB,WAAO,aAAa,OAAO;AAAA,MACzB;AAAA,MACA,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AACA,MAAI,SAAS,YAAY;AACvB,WAAO,aAAa,OAAO,EAAE,MAAM,QAAQ,IAAI,MAAM,IAAI,MAAM,OAAO;AAAA,EACxE;AACA,SAAO,aAAa,OAAO,EAAE,MAAM;AACrC;AAEO,SAAS,cACd,OACA,OACoB;AACpB,SAAO,UAAU,OAAO,UAAU,SAAS,EAAE,OAAO,OAAO,GAAA,IAAO,EAAE,OAAO;AAC7E;AAEO,SAAS,aAAa,OAA6C;AAzKnE;AA0KL,QAAM,YAAW,WAAM,UAAN,mBAAa;AAC9B,OAAI,qCAAU,UAAS,SAAU,QAAO;AACxC,OAAI,qCAAU,UAAS,YAAW,qCAAU,MAAM,QAAO;AACzD,SAAO;AACT;AAEO,SAAS,aAAa,OAA6C;AAhLnE;AAiLL,QAAM,QAAO,uBAAM,UAAN,mBAAa,aAAb,mBAAuB,aAAvB,mBAAiC;AAC9C,MAAI,SAAS,WAAY,QAAO;AAChC,MAAI,SAAS,MAAO,QAAO;AAC3B,SAAO;AACT;AAEO,SAAS,UAAU,OAA0C;AAvL7D;AAwLL,QAAM,SAAQ,uBAAM,UAAN,mBAAa,aAAb,mBAAuB,UAAvB,mBAA8B;AAC5C,MACE,UAAU,eACV,UAAU,cACV,UAAU,YACV,UAAU,OACV;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;"}
|
|
1
|
+
{"version":3,"file":"update.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"sourcesContent":["import type {\n AISpecRuntimeMemory,\n AISpecRuntimePermissions,\n AISpecRuntimePrompt,\n AISpecRuntimeSetup,\n AISpecRuntimeValue,\n SpecCheckoutMode,\n SpecCommitPhase,\n SpecStashMode,\n SpecWorktreeMode,\n} from \"../SpecRuntimeEditor.model\";\n\ntype SpecCheckout = NonNullable<AISpecRuntimeSetup[\"checkout\"]>;\ntype SpecWorktree = NonNullable<SpecCheckout[\"worktree\"]>;\ntype SpecDirty = NonNullable<SpecCheckout[\"dirty\"]>;\ntype SpecWorkflow = NonNullable<AISpecRuntimeValue[\"workflow\"]>;\ntype SpecCommit = NonNullable<SpecWorkflow[\"commits\"]>[number];\ntype SpecBudget = NonNullable<AISpecRuntimeValue[\"budget\"]>;\n\nexport function withRoot(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeValue>,\n): AISpecRuntimeValue {\n return { ...value, ...patch };\n}\n\n// Sets a top-level scalar, deleting the key entirely when cleared so the\n// compacted payload omits it instead of carrying an empty string/undefined.\nexport function withOptionalRoot(\n value: AISpecRuntimeValue,\n key: keyof AISpecRuntimeValue,\n next: unknown,\n): AISpecRuntimeValue {\n const updated = { ...value } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete updated[key];\n } else {\n updated[key] = next;\n }\n return updated as AISpecRuntimeValue;\n}\n\nexport function withPrompt(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePrompt>,\n): AISpecRuntimeValue {\n return withRoot(value, { prompt: { ...value.prompt, ...patch } });\n}\n\nexport function withBudget(\n value: AISpecRuntimeValue,\n budget: SpecBudget,\n): AISpecRuntimeValue {\n return withRoot(value, { budget });\n}\n\nexport function withBudgetValue(\n value: AISpecRuntimeValue,\n key: keyof SpecBudget,\n next: number | string | undefined,\n): AISpecRuntimeValue {\n const budget = { ...value.budget } as Record<string, unknown>;\n if (next === undefined || next === \"\") {\n delete budget[key];\n } else {\n budget[key] = next;\n }\n return withRoot(value, { budget: budget as SpecBudget });\n}\n\nexport function withMemory(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeMemory>,\n): AISpecRuntimeValue {\n return withRoot(value, { memory: { ...value.memory, ...patch } });\n}\n\nexport function withPermissions(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimePermissions>,\n): AISpecRuntimeValue {\n return withRoot(value, { permissions: { ...value.permissions, ...patch } });\n}\n\nexport function withSetup(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSetup>,\n): AISpecRuntimeValue {\n return withRoot(value, { setup: { ...value.setup, ...patch } });\n}\n\nexport function withCheckout(\n value: AISpecRuntimeValue,\n patch: SpecCheckout,\n): AISpecRuntimeValue {\n return withSetup(value, {\n checkout: { ...value.setup?.checkout, ...patch },\n });\n}\n\nexport function withWorktree(\n value: AISpecRuntimeValue,\n patch: SpecWorktree,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n worktree: { ...value.setup?.checkout?.worktree, ...patch },\n });\n}\n\nexport function withDirty(\n value: AISpecRuntimeValue,\n patch: SpecDirty,\n): AISpecRuntimeValue {\n return withCheckout(value, {\n dirty: { ...value.setup?.checkout?.dirty, ...patch },\n });\n}\n\nexport function withVerify(\n value: AISpecRuntimeValue,\n patch: NonNullable<SpecWorkflow[\"verify\"]>,\n): AISpecRuntimeValue {\n return withRoot(value, {\n workflow: {\n ...value.workflow,\n verify: { ...value.workflow?.verify, ...patch },\n },\n });\n}\n\n// The editor drives a single commit policy. A spec authored by hand may declare\n// several stanzas; the ones past the first are carried through untouched rather\n// than collapsed away by an edit to a field the editor does surface.\nexport function withCommit(\n value: AISpecRuntimeValue,\n patch: Partial<SpecCommit>,\n): AISpecRuntimeValue {\n const [first, ...rest] = value.workflow?.commits ?? [];\n return withRoot(value, {\n workflow: { ...value.workflow, commits: [{ ...first, ...patch }, ...rest] },\n });\n}\n\n// \"Never\" drops every stanza rather than flagging one off: an absent list is how\n// the spec says \"commit nothing\", and a surviving {dryRun: true} would leave the\n// section reading as configured.\nexport function withCommitPhase(\n value: AISpecRuntimeValue,\n phase: SpecCommitPhase | \"none\",\n): AISpecRuntimeValue {\n if (phase === \"none\") {\n return withRoot(value, { workflow: { ...value.workflow, commits: [] } });\n }\n return withCommit(value, { on: phase });\n}\n\n// A stanza with no explicit phase commits at the end of the run, matching\n// api.Commit.Phase()'s default.\nexport function commitPhase(\n value: AISpecRuntimeValue,\n): SpecCommitPhase | \"none\" {\n const commits = value.workflow?.commits;\n if (!commits?.length) return \"none\";\n const on = commits[0]?.on;\n return on === \"turn\" || on === \"agent\" ? on : \"run\";\n}\n\n// Mode switches clear the fields that no longer apply, so stale values from a\n// previous mode never leak into the compacted payload.\nexport function withCheckoutMode(\n value: AISpecRuntimeValue,\n mode: SpecCheckoutMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withCheckout(value, {\n mode,\n url: \"\",\n path: \"\",\n connection: \"\",\n ref: \"\",\n depth: 0,\n });\n }\n if (mode === \"local\") return withCheckout(value, { mode, url: \"\", connection: \"\" });\n return withCheckout(value, { mode, path: \"\" });\n}\n\nexport function withWorktreeMode(\n value: AISpecRuntimeValue,\n mode: SpecWorktreeMode,\n): AISpecRuntimeValue {\n if (mode === \"none\") {\n return withWorktree(value, {\n mode,\n prefix: \"\",\n base: \"\",\n path: \"\",\n keep: false,\n });\n }\n if (mode === \"existing\") {\n return withWorktree(value, { mode, prefix: \"\", base: \"\", keep: false });\n }\n return withWorktree(value, { mode });\n}\n\nexport function withStashMode(\n value: AISpecRuntimeValue,\n stash: SpecStashMode,\n): AISpecRuntimeValue {\n return withDirty(value, stash === \"none\" ? { stash, since: \"\" } : { stash });\n}\n\nexport function checkoutMode(value: AISpecRuntimeValue): SpecCheckoutMode {\n const checkout = value.setup?.checkout;\n if (checkout?.mode === \"remote\") return \"remote\";\n if (checkout?.mode === \"local\" || checkout?.path) return \"local\";\n return \"none\";\n}\n\nexport function worktreeMode(value: AISpecRuntimeValue): SpecWorktreeMode {\n const mode = value.setup?.checkout?.worktree?.mode;\n if (mode === \"existing\") return \"existing\";\n if (mode === \"new\") return \"new\";\n return \"none\";\n}\n\nexport function stashMode(value: AISpecRuntimeValue): SpecStashMode {\n const stash = value.setup?.checkout?.dirty?.stash;\n if (\n stash === \"untracked\" ||\n stash === \"unstaged\" ||\n stash === \"staged\" ||\n stash === \"all\"\n ) {\n return stash;\n }\n return \"none\";\n}\n\nexport function parseOptionalNumber(\n value: string,\n integer = false,\n): number | undefined {\n if (value.trim() === \"\") return undefined;\n const parsed = Number(value);\n if (!Number.isFinite(parsed)) return undefined;\n return integer ? Math.max(0, Math.trunc(parsed)) : parsed;\n}\n"],"names":[],"mappings":"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"}
|