@flanksource/clicky-ui 0.3.26 → 0.3.28
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 +14 -0
- package/dist/ai.cjs +52 -6
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +53 -7
- package/dist/ai.js.map +1 -1
- package/dist/comments/CommentCard.cjs +24 -39
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts +9 -2
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +24 -39
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentProvider.cjs +4 -3
- package/dist/comments/CommentProvider.cjs.map +1 -1
- package/dist/comments/CommentProvider.d.ts +6 -1
- package/dist/comments/CommentProvider.d.ts.map +1 -1
- package/dist/comments/CommentProvider.js +4 -3
- package/dist/comments/CommentProvider.js.map +1 -1
- package/dist/comments/CommentSidePanel.cjs +65 -52
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.d.ts.map +1 -1
- package/dist/comments/CommentSidePanel.js +67 -54
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/CommentThread.cjs +2 -2
- package/dist/comments/CommentThread.cjs.map +1 -1
- package/dist/comments/CommentThread.d.ts +3 -3
- package/dist/comments/CommentThread.d.ts.map +1 -1
- package/dist/comments/CommentThread.js +2 -2
- package/dist/comments/CommentThread.js.map +1 -1
- package/dist/comments/CommentThreadList.cjs +85 -37
- package/dist/comments/CommentThreadList.cjs.map +1 -1
- package/dist/comments/CommentThreadList.d.ts +3 -3
- package/dist/comments/CommentThreadList.d.ts.map +1 -1
- package/dist/comments/CommentThreadList.js +86 -38
- package/dist/comments/CommentThreadList.js.map +1 -1
- package/dist/comments/comment-utils.cjs +26 -0
- package/dist/comments/comment-utils.cjs.map +1 -1
- package/dist/comments/comment-utils.d.ts +11 -0
- package/dist/comments/comment-utils.d.ts.map +1 -1
- package/dist/comments/comment-utils.js +26 -0
- package/dist/comments/comment-utils.js.map +1 -1
- package/dist/comments.cjs +2 -0
- package/dist/comments.cjs.map +1 -1
- package/dist/comments.js +3 -1
- package/dist/components/AccordionList.cjs +3 -0
- package/dist/components/AccordionList.cjs.map +1 -1
- package/dist/components/AccordionList.d.ts +3 -1
- package/dist/components/AccordionList.d.ts.map +1 -1
- package/dist/components/AccordionList.js +3 -0
- package/dist/components/AccordionList.js.map +1 -1
- package/dist/components/CopyButton.cjs +35 -0
- package/dist/components/CopyButton.cjs.map +1 -0
- package/dist/components/CopyButton.d.ts +20 -0
- package/dist/components/CopyButton.d.ts.map +1 -0
- package/dist/components/CopyButton.js +35 -0
- package/dist/components/CopyButton.js.map +1 -0
- package/dist/components/FilterBar.cjs +29 -6
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +10 -1
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +29 -6
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/ListMenu.cjs +4 -1
- package/dist/components/ListMenu.cjs.map +1 -1
- package/dist/components/ListMenu.d.ts +5 -1
- package/dist/components/ListMenu.d.ts.map +1 -1
- package/dist/components/ListMenu.js +4 -1
- package/dist/components/ListMenu.js.map +1 -1
- package/dist/components/SegmentedControl.cjs +4 -2
- package/dist/components/SegmentedControl.cjs.map +1 -1
- package/dist/components/SegmentedControl.d.ts +4 -0
- package/dist/components/SegmentedControl.d.ts.map +1 -1
- package/dist/components/SegmentedControl.js +4 -2
- package/dist/components/SegmentedControl.js.map +1 -1
- package/dist/components/clipboard.cjs +60 -0
- package/dist/components/clipboard.cjs.map +1 -0
- package/dist/components/clipboard.d.ts +13 -0
- package/dist/components/clipboard.d.ts.map +1 -0
- package/dist/components/clipboard.js +60 -0
- package/dist/components/clipboard.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +15 -1
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +15 -1
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-list-array.cjs +113 -0
- package/dist/components/json-schema-form-list-array.cjs.map +1 -0
- package/dist/components/json-schema-form-list-array.d.ts +7 -0
- package/dist/components/json-schema-form-list-array.d.ts.map +1 -0
- package/dist/components/json-schema-form-list-array.js +113 -0
- package/dist/components/json-schema-form-list-array.js.map +1 -0
- package/dist/components/json-schema-form-resolve.cjs +1 -1
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +1 -1
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +1 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components.cjs +5 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +2 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +5 -0
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +4 -1
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.js +4 -1
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/DataTable.cjs +202 -40
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +163 -3
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +202 -40
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.cjs.map +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js +1 -1
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.js.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs +8 -6
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.js +8 -6
- package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -1
- package/dist/data/SelectionActionBar.cjs +242 -0
- package/dist/data/SelectionActionBar.cjs.map +1 -0
- package/dist/data/SelectionActionBar.d.ts +28 -0
- package/dist/data/SelectionActionBar.d.ts.map +1 -0
- package/dist/data/SelectionActionBar.js +242 -0
- package/dist/data/SelectionActionBar.js.map +1 -0
- package/dist/data/TaskManager.cjs +34 -12
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +34 -12
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +11 -7
- package/dist/data/TaskManagerButton.cjs.map +1 -1
- package/dist/data/TaskManagerButton.d.ts.map +1 -1
- package/dist/data/TaskManagerButton.js +11 -7
- package/dist/data/TaskManagerButton.js.map +1 -1
- package/dist/data/TaskProgress.cjs +55 -11
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +53 -9
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +2 -4
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +2 -4
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.cjs +1 -2
- package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.js +1 -2
- package/dist/data/ai/ChatWindow.runtime.js.map +1 -1
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs +262 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts +16 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.js +262 -0
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs +77 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts +8 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.js +77 -0
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPage.cjs +332 -0
- package/dist/data/ai/PromptCatalog/PromptPage.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPage.d.ts +17 -0
- package/dist/data/ai/PromptCatalog/PromptPage.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPage.js +332 -0
- package/dist/data/ai/PromptCatalog/PromptPage.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts +16 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.js +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageEditor.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +10 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.js +102 -0
- package/dist/data/ai/PromptCatalog/PromptPageHeader.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs +90 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts +8 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.js +90 -0
- package/dist/data/ai/PromptCatalog/PromptPagePreview.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs +168 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +17 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js +168 -0
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.js.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs +36 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts +7 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.js +36 -0
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.js.map +1 -0
- package/dist/data/ai/PromptCatalog/index.d.ts +9 -0
- package/dist/data/ai/PromptCatalog/index.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs +137 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts +28 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.js +137 -0
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.js.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.cjs +114 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.cjs.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +45 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts.map +1 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.js +114 -0
- package/dist/data/ai/PromptCatalog/prompt-page-model.js.map +1 -0
- package/dist/data/ai/PromptCatalog/types.d.ts +70 -0
- package/dist/data/ai/PromptCatalog/types.d.ts.map +1 -0
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +9 -12
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js +9 -12
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
- package/dist/data/ai/PromptPicker/index.d.ts +1 -1
- package/dist/data/ai/PromptPicker/index.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/types.d.ts +9 -0
- package/dist/data/ai/PromptPicker/types.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/types.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +4 -5
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +5 -6
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.js +1 -1
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
- package/dist/data/ai/RuntimeModePicker.cjs +25 -14
- package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
- package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
- package/dist/data/ai/RuntimeModePicker.js +26 -15
- package/dist/data/ai/RuntimeModePicker.js.map +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts +1 -1
- package/dist/data/ai/SessionInspector.collection-types.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.collection.cjs +3 -3
- package/dist/data/ai/SessionInspector.collection.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.collection.js +3 -3
- package/dist/data/ai/SessionInspector.collection.js.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
- package/dist/data/ai/SessionInspector.model.cjs +3 -3
- package/dist/data/ai/SessionInspector.model.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.model.d.ts +1 -1
- package/dist/data/ai/SessionInspector.model.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.model.js +3 -3
- package/dist/data/ai/SessionInspector.model.js.map +1 -1
- package/dist/data/ai/SessionInspector.panels.cjs +1 -1
- package/dist/data/ai/SessionInspector.panels.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.panels.js +1 -1
- package/dist/data/ai/SessionInspector.panels.js.map +1 -1
- package/dist/data/ai/SessionInspector.summary.cjs +3 -3
- package/dist/data/ai/SessionInspector.summary.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.summary.js +3 -3
- package/dist/data/ai/SessionInspector.summary.js.map +1 -1
- package/dist/data/ai/SessionViewer.fixtures.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.unified.d.ts +3 -2
- package/dist/data/ai/SessionViewer.unified.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.cjs +18 -30
- 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 +19 -31
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs +71 -86
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js +72 -87
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs +99 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts +13 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js +99 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +37 -21
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +6 -2
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +38 -22
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs +114 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts +10 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js +114 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs +160 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts +9 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js +160 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs +27 -241
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +5 -6
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js +25 -239
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs +21 -8
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +4 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js +22 -9
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs +207 -164
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +4 -3
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js +210 -167
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs +15 -15
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js +15 -15
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs +120 -42
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +4 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js +123 -45
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/env-model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/env-model.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs +136 -48
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +13 -3
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js +137 -49
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs +93 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts +6 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js +93 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs +35 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts +5 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js +35 -0
- package/dist/data/ai/SpecRuntimeEditor/permission-preset-storage.js.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs +2 -9
- package/dist/data/ai/SpecRuntimeEditor/presets.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts +1 -2
- package/dist/data/ai/SpecRuntimeEditor/presets.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/presets.js +2 -9
- package/dist/data/ai/SpecRuntimeEditor/presets.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +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/types.cjs +2 -7
- package/dist/data/ai/SpecRuntimeEditor/types.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts +0 -1
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/types.js +3 -8
- package/dist/data/ai/SpecRuntimeEditor/types.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.cjs +43 -33
- package/dist/data/ai/SpecRuntimeEditor/update.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +7 -13
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/update.js +43 -33
- package/dist/data/ai/SpecRuntimeEditor/update.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +33 -45
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +54 -29
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +33 -44
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs +276 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.cjs.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts +58 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.d.ts.map +1 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js +276 -0
- package/dist/data/ai/SpecRuntimeEditor.sandbox-model.js.map +1 -0
- package/dist/data/ai/ThreadPicker.cjs +55 -42
- package/dist/data/ai/ThreadPicker.cjs.map +1 -1
- package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
- package/dist/data/ai/ThreadPicker.js +56 -43
- package/dist/data/ai/ThreadPicker.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +9 -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 +9 -1
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.cjs +41 -487
- package/dist/data/ai/ToolSchemaBrowser.cjs.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.d.ts +7 -2
- package/dist/data/ai/ToolSchemaBrowser.d.ts.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.detail.cjs +238 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.d.ts +8 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.js +238 -0
- package/dist/data/ai/ToolSchemaBrowser.detail.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs +57 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts +9 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js +57 -0
- package/dist/data/ai/ToolSchemaBrowser.directory-header.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.js +42 -488
- package/dist/data/ai/ToolSchemaBrowser.js.map +1 -1
- package/dist/data/ai/ToolSchemaBrowser.model.cjs +130 -0
- package/dist/data/ai/ToolSchemaBrowser.model.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts +35 -0
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.model.js +130 -0
- package/dist/data/ai/ToolSchemaBrowser.model.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs +57 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +7 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js +57 -0
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.js.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs +389 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.cjs.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +23 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts.map +1 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js +389 -0
- package/dist/data/ai/ToolSchemaBrowser.sidebar.js.map +1 -0
- package/dist/data/ai/agent-action-icons.cjs +14 -6
- package/dist/data/ai/agent-action-icons.cjs.map +1 -1
- package/dist/data/ai/agent-action-icons.d.ts.map +1 -1
- package/dist/data/ai/agent-action-icons.js +14 -6
- package/dist/data/ai/agent-action-icons.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.cjs +17 -9
- package/dist/data/ai/examples/sessions/claude-complete.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.js +17 -9
- package/dist/data/ai/examples/sessions/claude-complete.js.map +1 -1
- package/dist/data/ai/examples/sessions/claude.cjs +7 -4
- package/dist/data/ai/examples/sessions/claude.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/claude.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/claude.js +7 -4
- package/dist/data/ai/examples/sessions/claude.js.map +1 -1
- package/dist/data/ai/examples/sessions/codex-complete.cjs +17 -10
- package/dist/data/ai/examples/sessions/codex-complete.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/codex-complete.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/codex-complete.js +17 -10
- package/dist/data/ai/examples/sessions/codex-complete.js.map +1 -1
- package/dist/data/ai/examples/sessions/codex.cjs +7 -4
- package/dist/data/ai/examples/sessions/codex.cjs.map +1 -1
- package/dist/data/ai/examples/sessions/codex.d.ts.map +1 -1
- package/dist/data/ai/examples/sessions/codex.js +7 -4
- package/dist/data/ai/examples/sessions/codex.js.map +1 -1
- package/dist/data/ai/index.d.ts +6 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/runtime-profile.cjs +93 -0
- package/dist/data/ai/runtime-profile.cjs.map +1 -0
- package/dist/data/ai/runtime-profile.d.ts +73 -0
- package/dist/data/ai/runtime-profile.d.ts.map +1 -0
- package/dist/data/ai/runtime-profile.js +93 -0
- package/dist/data/ai/runtime-profile.js.map +1 -0
- package/dist/data/ai/sandbox-kind-meta.cjs +38 -4
- package/dist/data/ai/sandbox-kind-meta.cjs.map +1 -1
- package/dist/data/ai/sandbox-kind-meta.d.ts +3 -0
- package/dist/data/ai/sandbox-kind-meta.d.ts.map +1 -1
- package/dist/data/ai/sandbox-kind-meta.js +38 -4
- package/dist/data/ai/sandbox-kind-meta.js.map +1 -1
- package/dist/data/chat/Chat.cjs +17 -5
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.cjs +3 -3
- package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
- package/dist/data/chat/Chat.fixtures.js +3 -3
- package/dist/data/chat/Chat.fixtures.js.map +1 -1
- package/dist/data/chat/Chat.js +18 -6
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/Chat.runtime.cjs +15 -9
- package/dist/data/chat/Chat.runtime.cjs.map +1 -1
- package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
- package/dist/data/chat/Chat.runtime.js +16 -10
- package/dist/data/chat/Chat.runtime.js.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.cjs +5 -5
- package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -1
- package/dist/data/chat/ChatRuntimeToolbar.js +5 -5
- package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -1
- package/dist/data/chat/ContextMeter.cjs +3 -3
- package/dist/data/chat/ContextMeter.cjs.map +1 -1
- package/dist/data/chat/ContextMeter.d.ts +3 -3
- package/dist/data/chat/ContextMeter.d.ts.map +1 -1
- package/dist/data/chat/ContextMeter.js +3 -3
- package/dist/data/chat/ContextMeter.js.map +1 -1
- package/dist/data/chat/approval.cjs.map +1 -1
- package/dist/data/chat/approval.d.ts +21 -1
- package/dist/data/chat/approval.d.ts.map +1 -1
- package/dist/data/chat/approval.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +5 -0
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +5 -0
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +7 -5
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/chat/usage-snapshot.cjs +21 -1
- package/dist/data/chat/usage-snapshot.cjs.map +1 -1
- package/dist/data/chat/usage-snapshot.d.ts +2 -0
- package/dist/data/chat/usage-snapshot.d.ts.map +1 -1
- package/dist/data/chat/usage-snapshot.js +22 -2
- package/dist/data/chat/usage-snapshot.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +49 -51
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts +10 -2
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +51 -53
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.cjs +55 -0
- package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.d.ts +11 -3
- package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.js +55 -0
- package/dist/data/runtime/RuntimeBar.model.js.map +1 -1
- package/dist/data/runtime/RuntimeBarCombo.cjs +11 -6
- package/dist/data/runtime/RuntimeBarCombo.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarCombo.d.ts +3 -1
- package/dist/data/runtime/RuntimeBarCombo.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarCombo.js +11 -6
- package/dist/data/runtime/RuntimeBarCombo.js.map +1 -1
- package/dist/data/runtime/RuntimeBarSegments.cjs +7 -5
- package/dist/data/runtime/RuntimeBarSegments.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBarSegments.d.ts +4 -2
- package/dist/data/runtime/RuntimeBarSegments.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBarSegments.js +7 -5
- package/dist/data/runtime/RuntimeBarSegments.js.map +1 -1
- package/dist/data/runtime/model-capabilities.cjs +6 -6
- package/dist/data/runtime/model-capabilities.cjs.map +1 -1
- package/dist/data/runtime/model-capabilities.d.ts +5 -1
- package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
- package/dist/data/runtime/model-capabilities.js +6 -6
- package/dist/data/runtime/model-capabilities.js.map +1 -1
- package/dist/data/runtime/provider-status.cjs +1 -1
- package/dist/data/runtime/provider-status.cjs.map +1 -1
- package/dist/data/runtime/provider-status.js +1 -1
- package/dist/data/runtime/provider-status.js.map +1 -1
- package/dist/data/runtime/runtime-field-support.cjs +63 -0
- package/dist/data/runtime/runtime-field-support.cjs.map +1 -0
- package/dist/data/runtime/runtime-field-support.d.ts +13 -0
- package/dist/data/runtime/runtime-field-support.d.ts.map +1 -0
- package/dist/data/runtime/runtime-field-support.js +63 -0
- package/dist/data/runtime/runtime-field-support.js.map +1 -0
- package/dist/data/runtime/runtime-mode.cjs +170 -111
- package/dist/data/runtime/runtime-mode.cjs.map +1 -1
- package/dist/data/runtime/runtime-mode.d.ts +58 -14
- package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
- package/dist/data/runtime/runtime-mode.js +170 -111
- package/dist/data/runtime/runtime-mode.js.map +1 -1
- package/dist/data/selectionActionSplit.cjs +33 -0
- package/dist/data/selectionActionSplit.cjs.map +1 -0
- package/dist/data/selectionActionSplit.d.ts +36 -0
- package/dist/data/selectionActionSplit.d.ts.map +1 -0
- package/dist/data/selectionActionSplit.js +33 -0
- package/dist/data/selectionActionSplit.js.map +1 -0
- package/dist/data/task-copy.cjs +76 -0
- package/dist/data/task-copy.cjs.map +1 -0
- package/dist/data/task-copy.d.ts +12 -0
- package/dist/data/task-copy.d.ts.map +1 -0
- package/dist/data/task-copy.js +76 -0
- package/dist/data/task-copy.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +34 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +4 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +34 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-task-run.cjs +24 -17
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts +3 -1
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +25 -18
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/icons/components/UiCalendarCheck.cjs +15 -0
- package/dist/icons/components/UiCalendarCheck.cjs.map +1 -0
- package/dist/icons/components/UiCalendarCheck.d.ts +15 -0
- package/dist/icons/components/UiCalendarCheck.d.ts.map +1 -0
- package/dist/icons/components/UiCalendarCheck.js +15 -0
- package/dist/icons/components/UiCalendarCheck.js.map +1 -0
- package/dist/icons/components/UiChartLineUp.cjs +15 -0
- package/dist/icons/components/UiChartLineUp.cjs.map +1 -0
- package/dist/icons/components/UiChartLineUp.d.ts +15 -0
- package/dist/icons/components/UiChartLineUp.d.ts.map +1 -0
- package/dist/icons/components/UiChartLineUp.js +15 -0
- package/dist/icons/components/UiChartLineUp.js.map +1 -0
- package/dist/icons/components/UiClockCountdown.cjs +15 -0
- package/dist/icons/components/UiClockCountdown.cjs.map +1 -0
- package/dist/icons/components/UiClockCountdown.d.ts +15 -0
- package/dist/icons/components/UiClockCountdown.d.ts.map +1 -0
- package/dist/icons/components/UiClockCountdown.js +15 -0
- package/dist/icons/components/UiClockCountdown.js.map +1 -0
- package/dist/icons/components/UiFactory.cjs +15 -0
- package/dist/icons/components/UiFactory.cjs.map +1 -0
- package/dist/icons/components/UiFactory.d.ts +15 -0
- package/dist/icons/components/UiFactory.d.ts.map +1 -0
- package/dist/icons/components/UiFactory.js +15 -0
- package/dist/icons/components/UiFactory.js.map +1 -0
- package/dist/icons/components/UiHandCoins.cjs +15 -0
- package/dist/icons/components/UiHandCoins.cjs.map +1 -0
- package/dist/icons/components/UiHandCoins.d.ts +15 -0
- package/dist/icons/components/UiHandCoins.d.ts.map +1 -0
- package/dist/icons/components/UiHandCoins.js +15 -0
- package/dist/icons/components/UiHandCoins.js.map +1 -0
- package/dist/icons/components/UiInvoice.cjs +15 -0
- package/dist/icons/components/UiInvoice.cjs.map +1 -0
- package/dist/icons/components/UiInvoice.d.ts +15 -0
- package/dist/icons/components/UiInvoice.d.ts.map +1 -0
- package/dist/icons/components/UiInvoice.js +15 -0
- package/dist/icons/components/UiInvoice.js.map +1 -0
- package/dist/icons/components/UiTax.cjs +15 -0
- package/dist/icons/components/UiTax.cjs.map +1 -0
- package/dist/icons/components/UiTax.d.ts +15 -0
- package/dist/icons/components/UiTax.d.ts.map +1 -0
- package/dist/icons/components/UiTax.js +15 -0
- package/dist/icons/components/UiTax.js.map +1 -0
- package/dist/icons/index.d.ts +14 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/registry.cjs +14 -0
- package/dist/icons/registry.cjs.map +1 -1
- package/dist/icons/registry.d.ts.map +1 -1
- package/dist/icons/registry.js +14 -0
- package/dist/icons/registry.js.map +1 -1
- package/dist/icons.cjs +21 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +21 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +43 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +44 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +17 -3
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.js +17 -3
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/overlay/DropdownMenu.cjs +46 -35
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.js +46 -35
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +26 -11
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.d.ts +4 -1
- package/dist/rpc/FilterForm.d.ts.map +1 -1
- package/dist/rpc/FilterForm.js +26 -11
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/FilterFormFields.cjs +3 -2
- package/dist/rpc/FilterFormFields.cjs.map +1 -1
- package/dist/rpc/FilterFormFields.d.ts +2 -1
- package/dist/rpc/FilterFormFields.d.ts.map +1 -1
- package/dist/rpc/FilterFormFields.js +3 -2
- package/dist/rpc/FilterFormFields.js.map +1 -1
- package/dist/rpc/OperationActionBar.cjs +67 -15
- package/dist/rpc/OperationActionBar.cjs.map +1 -1
- package/dist/rpc/OperationActionBar.d.ts +11 -3
- package/dist/rpc/OperationActionBar.d.ts.map +1 -1
- package/dist/rpc/OperationActionBar.js +68 -16
- package/dist/rpc/OperationActionBar.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +69 -76
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts +3 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +69 -76
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCatalogActions.cjs +69 -0
- package/dist/rpc/OperationCatalogActions.cjs.map +1 -0
- package/dist/rpc/OperationCatalogActions.d.ts +17 -0
- package/dist/rpc/OperationCatalogActions.d.ts.map +1 -0
- package/dist/rpc/OperationCatalogActions.js +69 -0
- package/dist/rpc/OperationCatalogActions.js.map +1 -0
- package/dist/rpc/OperationEntityContextPicker.cjs +129 -116
- package/dist/rpc/OperationEntityContextPicker.cjs.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.d.ts +18 -1
- package/dist/rpc/OperationEntityContextPicker.d.ts.map +1 -1
- package/dist/rpc/OperationEntityContextPicker.js +130 -117
- package/dist/rpc/OperationEntityContextPicker.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +7 -4
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +4 -2
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +7 -4
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/operationCatalogUrl.cjs +28 -0
- package/dist/rpc/operationCatalogUrl.cjs.map +1 -0
- package/dist/rpc/operationCatalogUrl.d.ts +3 -0
- package/dist/rpc/operationCatalogUrl.d.ts.map +1 -0
- package/dist/rpc/operationCatalogUrl.js +28 -0
- package/dist/rpc/operationCatalogUrl.js.map +1 -0
- package/dist/rpc/rowNavigation.cjs +4 -3
- package/dist/rpc/rowNavigation.cjs.map +1 -1
- package/dist/rpc/rowNavigation.d.ts +1 -1
- package/dist/rpc/rowNavigation.d.ts.map +1 -1
- package/dist/rpc/rowNavigation.js +4 -3
- package/dist/rpc/rowNavigation.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +2 -2
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc.cjs +2 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +2 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -0
- package/dist/rpc.js.map +1 -1
- package/dist/runtime-profile.cjs +7 -0
- package/dist/runtime-profile.cjs.map +1 -0
- package/dist/runtime-profile.d.ts +2 -0
- package/dist/runtime-profile.d.ts.map +1 -0
- package/dist/runtime-profile.js +7 -0
- package/dist/runtime-profile.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/types.ts"],"sourcesContent":["import type {\n KeyPreview,\n SecretKind,\n SecretResource,\n} from \"../../../components/SecretKeySelector\";\nimport type { StaticIconComponent } from \"../../Icon\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport type { SpecSandboxCapability } from \"../SpecRuntimeEditor.model\";\nimport {\n UiBox,\n UiBraces,\n UiFileText,\n UiGitCommit,\n UiGitBranch,\n UiRobotAi,\n UiSealCheck,\n UiShield,\n UiTerminal,\n} from \"../../../icons\";\n\n/**\n * The sandbox surface a host serves alongside the spec schema (captain:\n * `GET /api/captain/ai/prompt/schema` → `sandboxes`, also\n * `GET /api/captain/sandboxes`). It is a projection of the adapter descriptor\n * table, so the editor can explain each choice and refuse invalid pairings\n * instead of failing at dispatch.\n */\nexport type SpecRuntimeSandboxCatalog = {\n /** The configured `sandbox.default` selector, when one is set. */\n default?: string | undefined;\n kinds?: SpecRuntimeSandboxKind[] | undefined;\n /**\n * Configured backends whose declared kind does not resolve to an adapter.\n * Reported rather than dropped, so a misconfigured backend reads as wrong\n * instead of missing — but never offered as a selectable choice.\n */\n invalid?: SpecRuntimeSandboxBackend[] | undefined;\n};\n\nexport type SpecRuntimeSandboxKind = {\n kind: string;\n description?: string | undefined;\n /** Host-owned schema for a named backend's adapter-specific options. */\n configSchema?: JsonSchemaObject | undefined;\n /** True when `sandbox.default` names this bare kind. */\n default?: boolean | undefined;\n capabilities?: SpecSandboxCapability[] | undefined;\n /** Runtime modes this adapter can serve; a pairing outside it is an error. */\n modes?: string[] | undefined;\n backends?: SpecRuntimeSandboxBackend[] | undefined;\n};\n\nexport type SpecRuntimeSandboxBackend = {\n name: string;\n kind?: string | undefined;\n /** True when `sandbox.default` names this backend. */\n default?: boolean | undefined;\n /** The endpoint a git-agent backend dispatches through. */\n url?: string | undefined;\n agents?: SpecRuntimeSandboxAgent[] | undefined;\n /** Why this backend cannot be selected; set only on `invalid` entries. */\n error?: string | undefined;\n};\n\nexport type SpecRuntimeSandboxAgent = {\n name: string;\n /** \"enrolled\", or \"pending until <expiry>\" for an unclaimed join token. */\n status?: string | undefined;\n /** The host has every transport-specific credential needed to run here. */\n dispatchable: boolean;\n /** Safe diagnostic for a non-dispatchable agent; never a credential path. */\n dispatchIssue?: string | undefined;\n};\n\nexport type SpecRuntimeSecretSelectorConfig = {\n loadResources: (kind: SecretKind) => Promise<SecretResource[]>;\n loadKeyPreview: (kind: SecretKind, name: string) => Promise<KeyPreview[]>;\n strict?: boolean | undefined;\n allowLiteral?: boolean | undefined;\n};\n\nexport type SpecSectionId =\n | \"model\"\n | \"prompt\"\n | \"workspace\"\n | \"sandbox\"\n | \"permissions\"\n | \"environment\"\n | \"verify\"\n | \"commit\"\n | \"cli\";\n\nexport type SpecSectionMeta = {\n id: SpecSectionId;\n label: string;\n hint: string;\n icon: StaticIconComponent;\n iconClassName?: string | undefined;\n};\n\n// Rail/nav order; section numbers (\"01\"…) derive from the index. The \"cli\"\n// section only renders when the host supplies a cliOptions schema.\nexport const SPEC_RUNTIME_SECTIONS: SpecSectionMeta[] = [\n {\n id: \"model\",\n label: \"Model\",\n hint: \"Which model runs, how
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/types.ts"],"sourcesContent":["import type {\n KeyPreview,\n SecretKind,\n SecretResource,\n} from \"../../../components/SecretKeySelector\";\nimport type { StaticIconComponent } from \"../../Icon\";\nimport type { JsonSchemaObject } from \"../../../components/json-schema-form-types\";\nimport type { SpecSandboxCapability } from \"../SpecRuntimeEditor.model\";\nimport {\n UiBox,\n UiBraces,\n UiFileText,\n UiGitCommit,\n UiGitBranch,\n UiRobotAi,\n UiSealCheck,\n UiShield,\n UiTerminal,\n} from \"../../../icons\";\n\n/**\n * The sandbox surface a host serves alongside the spec schema (captain:\n * `GET /api/captain/ai/prompt/schema` → `sandboxes`, also\n * `GET /api/captain/sandboxes`). It is a projection of the adapter descriptor\n * table, so the editor can explain each choice and refuse invalid pairings\n * instead of failing at dispatch.\n */\nexport type SpecRuntimeSandboxCatalog = {\n /** The configured `sandbox.default` selector, when one is set. */\n default?: string | undefined;\n kinds?: SpecRuntimeSandboxKind[] | undefined;\n /**\n * Configured backends whose declared kind does not resolve to an adapter.\n * Reported rather than dropped, so a misconfigured backend reads as wrong\n * instead of missing — but never offered as a selectable choice.\n */\n invalid?: SpecRuntimeSandboxBackend[] | undefined;\n};\n\nexport type SpecRuntimeSandboxKind = {\n kind: string;\n description?: string | undefined;\n /** Host-owned schema for a named backend's adapter-specific options. */\n configSchema?: JsonSchemaObject | undefined;\n /** True when `sandbox.default` names this bare kind. */\n default?: boolean | undefined;\n capabilities?: SpecSandboxCapability[] | undefined;\n /** Runtime modes this adapter can serve; a pairing outside it is an error. */\n modes?: string[] | undefined;\n backends?: SpecRuntimeSandboxBackend[] | undefined;\n};\n\nexport type SpecRuntimeSandboxBackend = {\n name: string;\n kind?: string | undefined;\n /** True when `sandbox.default` names this backend. */\n default?: boolean | undefined;\n /** The endpoint a git-agent backend dispatches through. */\n url?: string | undefined;\n agents?: SpecRuntimeSandboxAgent[] | undefined;\n /** Why this backend cannot be selected; set only on `invalid` entries. */\n error?: string | undefined;\n};\n\nexport type SpecRuntimeSandboxAgent = {\n name: string;\n /** \"enrolled\", or \"pending until <expiry>\" for an unclaimed join token. */\n status?: string | undefined;\n /** The host has every transport-specific credential needed to run here. */\n dispatchable: boolean;\n /** Safe diagnostic for a non-dispatchable agent; never a credential path. */\n dispatchIssue?: string | undefined;\n};\n\nexport type SpecRuntimeSecretSelectorConfig = {\n loadResources: (kind: SecretKind) => Promise<SecretResource[]>;\n loadKeyPreview: (kind: SecretKind, name: string) => Promise<KeyPreview[]>;\n strict?: boolean | undefined;\n allowLiteral?: boolean | undefined;\n};\n\nexport type SpecSectionId =\n | \"model\"\n | \"prompt\"\n | \"workspace\"\n | \"sandbox\"\n | \"permissions\"\n | \"environment\"\n | \"verify\"\n | \"commit\"\n | \"cli\";\n\nexport type SpecSectionMeta = {\n id: SpecSectionId;\n label: string;\n hint: string;\n icon: StaticIconComponent;\n iconClassName?: string | undefined;\n};\n\n// Rail/nav order; section numbers (\"01\"…) derive from the index. The \"cli\"\n// section only renders when the host supplies a cliOptions schema.\nexport const SPEC_RUNTIME_SECTIONS: SpecSectionMeta[] = [\n {\n id: \"model\",\n label: \"Model\",\n hint: \"Which model runs, how it reasons, what it loads, and its budget ceiling.\",\n icon: UiRobotAi,\n iconClassName: \"text-indigo-500\",\n },\n {\n id: \"prompt\",\n label: \"Prompt\",\n hint: \"Overrides layered on top of the base agent prompt.\",\n icon: UiFileText,\n iconClassName: \"text-primary\",\n },\n {\n id: \"workspace\",\n label: \"Workspace\",\n hint: \"Where the agent checks out code and runs.\",\n icon: UiGitBranch,\n iconClassName: \"text-sky-500\",\n },\n // Adjacent to Workspace on purpose: a sandbox declaring `isolate-workspace`\n // materializes its own tree, so it conflicts with a worktree or checkout set\n // in the section directly above.\n {\n id: \"sandbox\",\n label: \"Sandbox\",\n hint: \"What confines the run, and where it executes.\",\n icon: UiBox,\n iconClassName: \"text-amber-500\",\n },\n {\n id: \"permissions\",\n label: \"Permissions\",\n hint: \"Tool, MCP, and plugin access layered over the selected posture.\",\n icon: UiShield,\n iconClassName: \"text-emerald-600 dark:text-emerald-400\",\n },\n {\n id: \"environment\",\n label: \"Environment\",\n hint: \"Variables and secrets injected before the run.\",\n icon: UiBraces,\n iconClassName: \"text-amber-600 dark:text-amber-400\",\n },\n {\n id: \"verify\",\n label: \"Verify\",\n hint: \"How the work is checked before finalization.\",\n icon: UiSealCheck,\n iconClassName: \"text-emerald-600 dark:text-emerald-400\",\n },\n {\n id: \"commit\",\n label: \"Commit\",\n hint: \"Whether passing work is committed, previewed, or left as changes.\",\n icon: UiGitCommit,\n iconClassName: \"text-violet-600 dark:text-violet-400\",\n },\n {\n id: \"cli\",\n label: \"CLI flags\",\n hint: \"Extra interactive CLI flags passed straight to the agent binary.\",\n icon: UiTerminal,\n },\n];\n"],"names":[],"mappings":";;;;;;;;;AAsGO,MAAM,wBAA2C;AAAA,EACtD;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAKjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,eAAe;AAAA,EAAA;AAAA,EAEjB;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAEV;"}
|
|
@@ -27,26 +27,53 @@ function withBudgetValue(value, key, next) {
|
|
|
27
27
|
function withMemory(value, patch) {
|
|
28
28
|
return withRoot(value, { memory: { ...value.memory, ...patch } });
|
|
29
29
|
}
|
|
30
|
-
function withPermissions(value, patch) {
|
|
31
|
-
return withRoot(value, { permissions: { ...value.permissions, ...patch } });
|
|
32
|
-
}
|
|
33
30
|
function sandboxRef(value) {
|
|
34
|
-
if (typeof value.sandbox === "string")
|
|
31
|
+
if (typeof value.sandbox === "string") {
|
|
32
|
+
return { mode: value.sandbox.trim() };
|
|
33
|
+
}
|
|
35
34
|
return value.sandbox ?? {};
|
|
36
35
|
}
|
|
37
36
|
function withSandbox(value, patch) {
|
|
38
|
-
var _a;
|
|
39
37
|
const next = { ...sandboxRef(value), ...patch };
|
|
40
|
-
if (!
|
|
38
|
+
if (!next.mode) {
|
|
39
|
+
throw new Error("sandbox.mode is required before configuring sandbox settings");
|
|
40
|
+
}
|
|
41
41
|
return withRoot(value, { sandbox: next });
|
|
42
42
|
}
|
|
43
|
+
function withSandboxMode(value, mode) {
|
|
44
|
+
const current = sandboxRef(value);
|
|
45
|
+
if (current.mode === mode) return value;
|
|
46
|
+
if (mode === "off") return withRoot(value, { sandbox: { mode } });
|
|
47
|
+
return withRoot(value, {
|
|
48
|
+
sandbox: { mode, ...current.approval ? { approval: current.approval } : {} }
|
|
49
|
+
});
|
|
50
|
+
}
|
|
43
51
|
function withSandboxBackend(value, backend) {
|
|
44
|
-
|
|
45
|
-
|
|
52
|
+
const next = { ...sandboxRef(value) };
|
|
53
|
+
const selected = backend.trim();
|
|
54
|
+
if (selected) next.backend = selected;
|
|
55
|
+
else delete next.backend;
|
|
56
|
+
return withRoot(value, { sandbox: next });
|
|
57
|
+
}
|
|
58
|
+
function withSandboxAgent(value, agent) {
|
|
59
|
+
const next = { ...sandboxRef(value) };
|
|
60
|
+
const selected = agent.trim();
|
|
61
|
+
if (selected) next.agent = selected;
|
|
62
|
+
else delete next.agent;
|
|
63
|
+
return withRoot(value, { sandbox: next });
|
|
64
|
+
}
|
|
65
|
+
function withSandboxApproval(value, approval) {
|
|
66
|
+
if (sandboxRef(value).mode === "off") {
|
|
67
|
+
throw new Error("sandbox mode off does not accept approval");
|
|
68
|
+
}
|
|
69
|
+
return withSandbox(value, { approval });
|
|
46
70
|
}
|
|
47
|
-
function
|
|
71
|
+
function withSandboxDispatch(value, patch) {
|
|
72
|
+
if (sandboxRef(value).mode !== "git-agent") {
|
|
73
|
+
throw new Error("sandbox dispatch policy requires sandbox.mode git-agent");
|
|
74
|
+
}
|
|
48
75
|
return withSandbox(value, {
|
|
49
|
-
|
|
76
|
+
dispatch: { ...sandboxRef(value).dispatch, ...patch }
|
|
50
77
|
});
|
|
51
78
|
}
|
|
52
79
|
function withSetup(value, patch) {
|
|
@@ -64,12 +91,6 @@ function withWorktree(value, patch) {
|
|
|
64
91
|
worktree: { ...(_b = (_a = value.setup) == null ? void 0 : _a.checkout) == null ? void 0 : _b.worktree, ...patch }
|
|
65
92
|
});
|
|
66
93
|
}
|
|
67
|
-
function withDirty(value, patch) {
|
|
68
|
-
var _a, _b;
|
|
69
|
-
return withCheckout(value, {
|
|
70
|
-
dirty: { ...(_b = (_a = value.setup) == null ? void 0 : _a.checkout) == null ? void 0 : _b.dirty, ...patch }
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
94
|
function withVerify(value, patch) {
|
|
74
95
|
var _a;
|
|
75
96
|
return withRoot(value, {
|
|
@@ -110,7 +131,8 @@ function withCheckoutMode(value, mode) {
|
|
|
110
131
|
depth: 0
|
|
111
132
|
});
|
|
112
133
|
}
|
|
113
|
-
if (mode === "local")
|
|
134
|
+
if (mode === "local")
|
|
135
|
+
return withCheckout(value, { mode, url: "", connection: "" });
|
|
114
136
|
return withCheckout(value, { mode, path: "" });
|
|
115
137
|
}
|
|
116
138
|
function withWorktreeMode(value, mode) {
|
|
@@ -128,9 +150,6 @@ function withWorktreeMode(value, mode) {
|
|
|
128
150
|
}
|
|
129
151
|
return withWorktree(value, { mode });
|
|
130
152
|
}
|
|
131
|
-
function withStashMode(value, stash) {
|
|
132
|
-
return withDirty(value, stash === "none" ? { stash, since: "" } : { stash });
|
|
133
|
-
}
|
|
134
153
|
function checkoutMode(value) {
|
|
135
154
|
var _a;
|
|
136
155
|
const checkout = (_a = value.setup) == null ? void 0 : _a.checkout;
|
|
@@ -145,34 +164,25 @@ function worktreeMode(value) {
|
|
|
145
164
|
if (mode === "new") return "new";
|
|
146
165
|
return "none";
|
|
147
166
|
}
|
|
148
|
-
function stashMode(value) {
|
|
149
|
-
var _a, _b, _c;
|
|
150
|
-
const stash = (_c = (_b = (_a = value.setup) == null ? void 0 : _a.checkout) == null ? void 0 : _b.dirty) == null ? void 0 : _c.stash;
|
|
151
|
-
if (stash === "untracked" || stash === "unstaged" || stash === "staged" || stash === "all") {
|
|
152
|
-
return stash;
|
|
153
|
-
}
|
|
154
|
-
return "none";
|
|
155
|
-
}
|
|
156
167
|
exports.checkoutMode = checkoutMode;
|
|
157
168
|
exports.commitPhase = commitPhase;
|
|
158
169
|
exports.sandboxRef = sandboxRef;
|
|
159
|
-
exports.stashMode = stashMode;
|
|
160
170
|
exports.withBudgetValue = withBudgetValue;
|
|
161
171
|
exports.withCheckout = withCheckout;
|
|
162
172
|
exports.withCheckoutMode = withCheckoutMode;
|
|
163
173
|
exports.withCommit = withCommit;
|
|
164
174
|
exports.withCommitPhase = withCommitPhase;
|
|
165
|
-
exports.withDirty = withDirty;
|
|
166
175
|
exports.withMemory = withMemory;
|
|
167
176
|
exports.withOptionalRoot = withOptionalRoot;
|
|
168
|
-
exports.withPermissions = withPermissions;
|
|
169
177
|
exports.withPrompt = withPrompt;
|
|
170
178
|
exports.withRoot = withRoot;
|
|
171
179
|
exports.withSandbox = withSandbox;
|
|
180
|
+
exports.withSandboxAgent = withSandboxAgent;
|
|
181
|
+
exports.withSandboxApproval = withSandboxApproval;
|
|
172
182
|
exports.withSandboxBackend = withSandboxBackend;
|
|
173
|
-
exports.
|
|
183
|
+
exports.withSandboxDispatch = withSandboxDispatch;
|
|
184
|
+
exports.withSandboxMode = withSandboxMode;
|
|
174
185
|
exports.withSetup = withSetup;
|
|
175
|
-
exports.withStashMode = withStashMode;
|
|
176
186
|
exports.withVerify = withVerify;
|
|
177
187
|
exports.withWorktree = withWorktree;
|
|
178
188
|
exports.withWorktreeMode = withWorktreeMode;
|
|
@@ -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 AISpecRuntimeSandbox,\n AISpecRuntimeSandboxPolicy,\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\n/**\n * Reads the sandbox ref in object form regardless of which form it is stored\n * in, so the section's controls do not each have to re-narrow the union.\n */\nexport function sandboxRef(value: AISpecRuntimeValue): AISpecRuntimeSandbox {\n if (typeof value.sandbox === \"string\") return { backend: value.sandbox };\n return value.sandbox ?? {};\n}\n\n/**\n * Patches the sandbox ref. Clearing the backend drops the whole ref: `sandbox:\n * \"\"` is present-but-selecting-nothing, which api.SandboxRef.Validate rejects,\n * and agent/policy overrides have nothing to apply to without one.\n *\n * The stored shape stays the object form while editing; compactAISpecRuntime\n * collapses it back to a scalar on save when only a backend is set.\n */\nexport function withSandbox(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandbox>,\n): AISpecRuntimeValue {\n const next: AISpecRuntimeSandbox = { ...sandboxRef(value), ...patch };\n if (!next.backend?.trim()) return withOptionalRoot(value, \"sandbox\", undefined);\n return withRoot(value, { sandbox: next });\n}\n\n/**\n * Selects the adapter, discarding any previous overrides. Switching backends\n * must not carry an agent pin or a path policy across: an agent enrolled on one\n * git-agent backend does not exist on another, and a stale pin would fail at\n * dispatch rather than at the click that caused it.\n */\nexport function withSandboxBackend(\n value: AISpecRuntimeValue,\n backend: string,\n): AISpecRuntimeValue {\n if (!backend.trim()) return withOptionalRoot(value, \"sandbox\", undefined);\n return withRoot(value, { sandbox: { backend } });\n}\n\nexport function withSandboxPolicy(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandboxPolicy>,\n): AISpecRuntimeValue {\n return withSandbox(value, {\n policy: { ...sandboxRef(value).policy, ...patch },\n });\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
|
+
{"version":3,"file":"update.cjs","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"sourcesContent":["import type {\n AISpecRuntimeConnections,\n AISpecRuntimeMemory,\n AISpecRuntimePermissions,\n AISpecRuntimePrompt,\n AISpecRuntimeSandbox,\n AISpecRuntimeSandboxDispatch,\n AISpecRuntimeSandboxPolicy,\n AISpecRuntimeSetup,\n AISpecRuntimeValue,\n SpecCheckoutMode,\n SpecCommitPhase,\n SpecPermissionMode,\n SpecSandboxMode,\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\n/**\n * Reads the sandbox ref in object form regardless of which form it is stored\n * in, so the section's controls do not each have to re-narrow the union.\n */\nexport function sandboxRef(value: AISpecRuntimeValue): AISpecRuntimeSandbox {\n if (typeof value.sandbox === \"string\") {\n return { mode: value.sandbox.trim() as SpecSandboxMode };\n }\n return value.sandbox ?? {};\n}\n\n/**\n * Patches the unified ref while keeping its object form during editing.\n */\nexport function withSandbox(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandbox>,\n): AISpecRuntimeValue {\n const next: AISpecRuntimeSandbox = { ...sandboxRef(value), ...patch };\n if (!next.mode) {\n throw new Error(\"sandbox.mode is required before configuring sandbox settings\");\n }\n return withRoot(value, { sandbox: next });\n}\n\nexport function withSandboxMode(\n value: AISpecRuntimeValue,\n mode: SpecSandboxMode,\n): AISpecRuntimeValue {\n const current = sandboxRef(value);\n if (current.mode === mode) return value;\n if (mode === \"off\") return withRoot(value, { sandbox: { mode } });\n return withRoot(value, {\n sandbox: { mode, ...(current.approval ? { approval: current.approval } : {}) },\n });\n}\n\nexport function withSandboxBackend(\n value: AISpecRuntimeValue,\n backend: string,\n): AISpecRuntimeValue {\n const next = { ...sandboxRef(value) };\n const selected = backend.trim();\n if (selected) next.backend = selected;\n else delete next.backend;\n return withRoot(value, { sandbox: next });\n}\n\nexport function withSandboxAgent(\n value: AISpecRuntimeValue,\n agent: string,\n): AISpecRuntimeValue {\n const next = { ...sandboxRef(value) };\n const selected = agent.trim();\n if (selected) next.agent = selected;\n else delete next.agent;\n return withRoot(value, { sandbox: next });\n}\n\nexport function withSandboxApproval(\n value: AISpecRuntimeValue,\n approval: SpecPermissionMode,\n): AISpecRuntimeValue {\n if (sandboxRef(value).mode === \"off\") {\n throw new Error(\"sandbox mode off does not accept approval\");\n }\n return withSandbox(value, { approval });\n}\n\nexport function withSandboxPolicy(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandboxPolicy>,\n): AISpecRuntimeValue {\n if (sandboxRef(value).mode !== \"native\") {\n throw new Error(\"native sandbox policy requires sandbox.mode native\");\n }\n return withSandbox(value, {\n policy: { ...sandboxRef(value).policy, ...patch },\n });\n}\n\nexport function withSandboxDispatch(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandboxDispatch>,\n): AISpecRuntimeValue {\n if (sandboxRef(value).mode !== \"git-agent\") {\n throw new Error(\"sandbox dispatch policy requires sandbox.mode git-agent\");\n }\n return withSandbox(value, {\n dispatch: { ...sandboxRef(value).dispatch, ...patch },\n });\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 withConnections(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeConnections>,\n): AISpecRuntimeValue {\n return withSetup(value, {\n connections: { ...value.setup?.connections, ...patch },\n });\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\")\n 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":";;AAyBO,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;AAaO,SAAS,WAAW,OAAiD;AAC1E,MAAI,OAAO,MAAM,YAAY,UAAU;AACrC,WAAO,EAAE,MAAM,MAAM,QAAQ,OAAK;AAAA,EACpC;AACA,SAAO,MAAM,WAAW,CAAA;AAC1B;AAKO,SAAS,YACd,OACA,OACoB;AACpB,QAAM,OAA6B,EAAE,GAAG,WAAW,KAAK,GAAG,GAAG,MAAA;AAC9D,MAAI,CAAC,KAAK,MAAM;AACd,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAChF;AACA,SAAO,SAAS,OAAO,EAAE,SAAS,MAAM;AAC1C;AAEO,SAAS,gBACd,OACA,MACoB;AACpB,QAAM,UAAU,WAAW,KAAK;AAChC,MAAI,QAAQ,SAAS,KAAM,QAAO;AAClC,MAAI,SAAS,MAAO,QAAO,SAAS,OAAO,EAAE,SAAS,EAAE,KAAA,GAAQ;AAChE,SAAO,SAAS,OAAO;AAAA,IACrB,SAAS,EAAE,MAAM,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA,EAAC;AAAA,EAAG,CAC9E;AACH;AAEO,SAAS,mBACd,OACA,SACoB;AACpB,QAAM,OAAO,EAAE,GAAG,WAAW,KAAK,EAAA;AAClC,QAAM,WAAW,QAAQ,KAAA;AACzB,MAAI,eAAe,UAAU;AAAA,cACjB,KAAK;AACjB,SAAO,SAAS,OAAO,EAAE,SAAS,MAAM;AAC1C;AAEO,SAAS,iBACd,OACA,OACoB;AACpB,QAAM,OAAO,EAAE,GAAG,WAAW,KAAK,EAAA;AAClC,QAAM,WAAW,MAAM,KAAA;AACvB,MAAI,eAAe,QAAQ;AAAA,cACf,KAAK;AACjB,SAAO,SAAS,OAAO,EAAE,SAAS,MAAM;AAC1C;AAEO,SAAS,oBACd,OACA,UACoB;AACpB,MAAI,WAAW,KAAK,EAAE,SAAS,OAAO;AACpC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AACA,SAAO,YAAY,OAAO,EAAE,UAAU;AACxC;AAcO,SAAS,oBACd,OACA,OACoB;AACpB,MAAI,WAAW,KAAK,EAAE,SAAS,aAAa;AAC1C,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AACA,SAAO,YAAY,OAAO;AAAA,IACxB,UAAU,EAAE,GAAG,WAAW,KAAK,EAAE,UAAU,GAAG,MAAA;AAAA,EAAM,CACrD;AACH;AAEO,SAAS,UACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,GAAG,MAAA,GAAS;AAChE;AAWO,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;AAWO,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;AAKO,SAAS,WACd,OACA,OACoB;;AACpB,QAAM,CAAC,OAAO,GAAG,IAAI,MAAI,WAAM,aAAN,mBAAgB,YAAW,CAAA;AACpD,SAAO,SAAS,OAAO;AAAA,IACrB,UAAU,EAAE,GAAG,MAAM,UAAU,SAAS,CAAC,EAAE,GAAG,OAAO,GAAG,MAAA,GAAS,GAAG,IAAI,EAAA;AAAA,EAAE,CAC3E;AACH;AAKO,SAAS,gBACd,OACA,OACoB;AACpB,MAAI,UAAU,QAAQ;AACpB,WAAO,SAAS,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,SAAS,CAAA,EAAC,GAAK;AAAA,EACzE;AACA,SAAO,WAAW,OAAO,EAAE,IAAI,OAAO;AACxC;AAIO,SAAS,YACd,OAC0B;;AAC1B,QAAM,WAAU,WAAM,aAAN,mBAAgB;AAChC,MAAI,EAAC,mCAAS,QAAQ,QAAO;AAC7B,QAAM,MAAK,aAAQ,CAAC,MAAT,mBAAY;AACvB,SAAO,OAAO,UAAU,OAAO,UAAU,KAAK;AAChD;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;AACX,WAAO,aAAa,OAAO,EAAE,MAAM,KAAK,IAAI,YAAY,IAAI;AAC9D,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;AASO,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;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AISpecRuntimeMemory, AISpecRuntimePermissions, AISpecRuntimePrompt, AISpecRuntimeSandbox, AISpecRuntimeSandboxPolicy, AISpecRuntimeSetup, AISpecRuntimeValue, SpecCheckoutMode, SpecCommitPhase, SpecStashMode, SpecWorktreeMode } from '../SpecRuntimeEditor.model';
|
|
1
|
+
import { AISpecRuntimeConnections, AISpecRuntimeMemory, AISpecRuntimePermissions, AISpecRuntimePrompt, AISpecRuntimeSandbox, AISpecRuntimeSandboxDispatch, AISpecRuntimeSandboxPolicy, AISpecRuntimeSetup, AISpecRuntimeValue, SpecCheckoutMode, SpecCommitPhase, SpecPermissionMode, SpecSandboxMode, 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"]>;
|
|
@@ -18,23 +18,17 @@ export declare function withPermissions(value: AISpecRuntimeValue, patch: Partia
|
|
|
18
18
|
*/
|
|
19
19
|
export declare function sandboxRef(value: AISpecRuntimeValue): AISpecRuntimeSandbox;
|
|
20
20
|
/**
|
|
21
|
-
* Patches the
|
|
22
|
-
* ""` is present-but-selecting-nothing, which api.SandboxRef.Validate rejects,
|
|
23
|
-
* and agent/policy overrides have nothing to apply to without one.
|
|
24
|
-
*
|
|
25
|
-
* The stored shape stays the object form while editing; compactAISpecRuntime
|
|
26
|
-
* collapses it back to a scalar on save when only a backend is set.
|
|
21
|
+
* Patches the unified ref while keeping its object form during editing.
|
|
27
22
|
*/
|
|
28
23
|
export declare function withSandbox(value: AISpecRuntimeValue, patch: Partial<AISpecRuntimeSandbox>): AISpecRuntimeValue;
|
|
29
|
-
|
|
30
|
-
* Selects the adapter, discarding any previous overrides. Switching backends
|
|
31
|
-
* must not carry an agent pin or a path policy across: an agent enrolled on one
|
|
32
|
-
* git-agent backend does not exist on another, and a stale pin would fail at
|
|
33
|
-
* dispatch rather than at the click that caused it.
|
|
34
|
-
*/
|
|
24
|
+
export declare function withSandboxMode(value: AISpecRuntimeValue, mode: SpecSandboxMode): AISpecRuntimeValue;
|
|
35
25
|
export declare function withSandboxBackend(value: AISpecRuntimeValue, backend: string): AISpecRuntimeValue;
|
|
26
|
+
export declare function withSandboxAgent(value: AISpecRuntimeValue, agent: string): AISpecRuntimeValue;
|
|
27
|
+
export declare function withSandboxApproval(value: AISpecRuntimeValue, approval: SpecPermissionMode): AISpecRuntimeValue;
|
|
36
28
|
export declare function withSandboxPolicy(value: AISpecRuntimeValue, patch: Partial<AISpecRuntimeSandboxPolicy>): AISpecRuntimeValue;
|
|
29
|
+
export declare function withSandboxDispatch(value: AISpecRuntimeValue, patch: Partial<AISpecRuntimeSandboxDispatch>): AISpecRuntimeValue;
|
|
37
30
|
export declare function withSetup(value: AISpecRuntimeValue, patch: Partial<AISpecRuntimeSetup>): AISpecRuntimeValue;
|
|
31
|
+
export declare function withConnections(value: AISpecRuntimeValue, patch: Partial<AISpecRuntimeConnections>): AISpecRuntimeValue;
|
|
38
32
|
export declare function withCheckout(value: AISpecRuntimeValue, patch: SpecCheckout): AISpecRuntimeValue;
|
|
39
33
|
export declare function withWorktree(value: AISpecRuntimeValue, patch: SpecWorktree): AISpecRuntimeValue;
|
|
40
34
|
export declare function withDirty(value: AISpecRuntimeValue, patch: SpecDirty): 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,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,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,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/D,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;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,26 +25,53 @@ function withBudgetValue(value, key, next) {
|
|
|
25
25
|
function withMemory(value, patch) {
|
|
26
26
|
return withRoot(value, { memory: { ...value.memory, ...patch } });
|
|
27
27
|
}
|
|
28
|
-
function withPermissions(value, patch) {
|
|
29
|
-
return withRoot(value, { permissions: { ...value.permissions, ...patch } });
|
|
30
|
-
}
|
|
31
28
|
function sandboxRef(value) {
|
|
32
|
-
if (typeof value.sandbox === "string")
|
|
29
|
+
if (typeof value.sandbox === "string") {
|
|
30
|
+
return { mode: value.sandbox.trim() };
|
|
31
|
+
}
|
|
33
32
|
return value.sandbox ?? {};
|
|
34
33
|
}
|
|
35
34
|
function withSandbox(value, patch) {
|
|
36
|
-
var _a;
|
|
37
35
|
const next = { ...sandboxRef(value), ...patch };
|
|
38
|
-
if (!
|
|
36
|
+
if (!next.mode) {
|
|
37
|
+
throw new Error("sandbox.mode is required before configuring sandbox settings");
|
|
38
|
+
}
|
|
39
39
|
return withRoot(value, { sandbox: next });
|
|
40
40
|
}
|
|
41
|
+
function withSandboxMode(value, mode) {
|
|
42
|
+
const current = sandboxRef(value);
|
|
43
|
+
if (current.mode === mode) return value;
|
|
44
|
+
if (mode === "off") return withRoot(value, { sandbox: { mode } });
|
|
45
|
+
return withRoot(value, {
|
|
46
|
+
sandbox: { mode, ...current.approval ? { approval: current.approval } : {} }
|
|
47
|
+
});
|
|
48
|
+
}
|
|
41
49
|
function withSandboxBackend(value, backend) {
|
|
42
|
-
|
|
43
|
-
|
|
50
|
+
const next = { ...sandboxRef(value) };
|
|
51
|
+
const selected = backend.trim();
|
|
52
|
+
if (selected) next.backend = selected;
|
|
53
|
+
else delete next.backend;
|
|
54
|
+
return withRoot(value, { sandbox: next });
|
|
55
|
+
}
|
|
56
|
+
function withSandboxAgent(value, agent) {
|
|
57
|
+
const next = { ...sandboxRef(value) };
|
|
58
|
+
const selected = agent.trim();
|
|
59
|
+
if (selected) next.agent = selected;
|
|
60
|
+
else delete next.agent;
|
|
61
|
+
return withRoot(value, { sandbox: next });
|
|
62
|
+
}
|
|
63
|
+
function withSandboxApproval(value, approval) {
|
|
64
|
+
if (sandboxRef(value).mode === "off") {
|
|
65
|
+
throw new Error("sandbox mode off does not accept approval");
|
|
66
|
+
}
|
|
67
|
+
return withSandbox(value, { approval });
|
|
44
68
|
}
|
|
45
|
-
function
|
|
69
|
+
function withSandboxDispatch(value, patch) {
|
|
70
|
+
if (sandboxRef(value).mode !== "git-agent") {
|
|
71
|
+
throw new Error("sandbox dispatch policy requires sandbox.mode git-agent");
|
|
72
|
+
}
|
|
46
73
|
return withSandbox(value, {
|
|
47
|
-
|
|
74
|
+
dispatch: { ...sandboxRef(value).dispatch, ...patch }
|
|
48
75
|
});
|
|
49
76
|
}
|
|
50
77
|
function withSetup(value, patch) {
|
|
@@ -62,12 +89,6 @@ function withWorktree(value, patch) {
|
|
|
62
89
|
worktree: { ...(_b = (_a = value.setup) == null ? void 0 : _a.checkout) == null ? void 0 : _b.worktree, ...patch }
|
|
63
90
|
});
|
|
64
91
|
}
|
|
65
|
-
function withDirty(value, patch) {
|
|
66
|
-
var _a, _b;
|
|
67
|
-
return withCheckout(value, {
|
|
68
|
-
dirty: { ...(_b = (_a = value.setup) == null ? void 0 : _a.checkout) == null ? void 0 : _b.dirty, ...patch }
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
92
|
function withVerify(value, patch) {
|
|
72
93
|
var _a;
|
|
73
94
|
return withRoot(value, {
|
|
@@ -108,7 +129,8 @@ function withCheckoutMode(value, mode) {
|
|
|
108
129
|
depth: 0
|
|
109
130
|
});
|
|
110
131
|
}
|
|
111
|
-
if (mode === "local")
|
|
132
|
+
if (mode === "local")
|
|
133
|
+
return withCheckout(value, { mode, url: "", connection: "" });
|
|
112
134
|
return withCheckout(value, { mode, path: "" });
|
|
113
135
|
}
|
|
114
136
|
function withWorktreeMode(value, mode) {
|
|
@@ -126,9 +148,6 @@ function withWorktreeMode(value, mode) {
|
|
|
126
148
|
}
|
|
127
149
|
return withWorktree(value, { mode });
|
|
128
150
|
}
|
|
129
|
-
function withStashMode(value, stash) {
|
|
130
|
-
return withDirty(value, stash === "none" ? { stash, since: "" } : { stash });
|
|
131
|
-
}
|
|
132
151
|
function checkoutMode(value) {
|
|
133
152
|
var _a;
|
|
134
153
|
const checkout = (_a = value.setup) == null ? void 0 : _a.checkout;
|
|
@@ -143,35 +162,26 @@ function worktreeMode(value) {
|
|
|
143
162
|
if (mode === "new") return "new";
|
|
144
163
|
return "none";
|
|
145
164
|
}
|
|
146
|
-
function stashMode(value) {
|
|
147
|
-
var _a, _b, _c;
|
|
148
|
-
const stash = (_c = (_b = (_a = value.setup) == null ? void 0 : _a.checkout) == null ? void 0 : _b.dirty) == null ? void 0 : _c.stash;
|
|
149
|
-
if (stash === "untracked" || stash === "unstaged" || stash === "staged" || stash === "all") {
|
|
150
|
-
return stash;
|
|
151
|
-
}
|
|
152
|
-
return "none";
|
|
153
|
-
}
|
|
154
165
|
export {
|
|
155
166
|
checkoutMode,
|
|
156
167
|
commitPhase,
|
|
157
168
|
sandboxRef,
|
|
158
|
-
stashMode,
|
|
159
169
|
withBudgetValue,
|
|
160
170
|
withCheckout,
|
|
161
171
|
withCheckoutMode,
|
|
162
172
|
withCommit,
|
|
163
173
|
withCommitPhase,
|
|
164
|
-
withDirty,
|
|
165
174
|
withMemory,
|
|
166
175
|
withOptionalRoot,
|
|
167
|
-
withPermissions,
|
|
168
176
|
withPrompt,
|
|
169
177
|
withRoot,
|
|
170
178
|
withSandbox,
|
|
179
|
+
withSandboxAgent,
|
|
180
|
+
withSandboxApproval,
|
|
171
181
|
withSandboxBackend,
|
|
172
|
-
|
|
182
|
+
withSandboxDispatch,
|
|
183
|
+
withSandboxMode,
|
|
173
184
|
withSetup,
|
|
174
|
-
withStashMode,
|
|
175
185
|
withVerify,
|
|
176
186
|
withWorktree,
|
|
177
187
|
withWorktreeMode,
|
|
@@ -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 AISpecRuntimeSandbox,\n AISpecRuntimeSandboxPolicy,\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\n/**\n * Reads the sandbox ref in object form regardless of which form it is stored\n * in, so the section's controls do not each have to re-narrow the union.\n */\nexport function sandboxRef(value: AISpecRuntimeValue): AISpecRuntimeSandbox {\n if (typeof value.sandbox === \"string\") return { backend: value.sandbox };\n return value.sandbox ?? {};\n}\n\n/**\n * Patches the sandbox ref. Clearing the backend drops the whole ref: `sandbox:\n * \"\"` is present-but-selecting-nothing, which api.SandboxRef.Validate rejects,\n * and agent/policy overrides have nothing to apply to without one.\n *\n * The stored shape stays the object form while editing; compactAISpecRuntime\n * collapses it back to a scalar on save when only a backend is set.\n */\nexport function withSandbox(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandbox>,\n): AISpecRuntimeValue {\n const next: AISpecRuntimeSandbox = { ...sandboxRef(value), ...patch };\n if (!next.backend?.trim()) return withOptionalRoot(value, \"sandbox\", undefined);\n return withRoot(value, { sandbox: next });\n}\n\n/**\n * Selects the adapter, discarding any previous overrides. Switching backends\n * must not carry an agent pin or a path policy across: an agent enrolled on one\n * git-agent backend does not exist on another, and a stale pin would fail at\n * dispatch rather than at the click that caused it.\n */\nexport function withSandboxBackend(\n value: AISpecRuntimeValue,\n backend: string,\n): AISpecRuntimeValue {\n if (!backend.trim()) return withOptionalRoot(value, \"sandbox\", undefined);\n return withRoot(value, { sandbox: { backend } });\n}\n\nexport function withSandboxPolicy(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandboxPolicy>,\n): AISpecRuntimeValue {\n return withSandbox(value, {\n policy: { ...sandboxRef(value).policy, ...patch },\n });\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
|
+
{"version":3,"file":"update.js","sources":["../../../../src/data/ai/SpecRuntimeEditor/update.ts"],"sourcesContent":["import type {\n AISpecRuntimeConnections,\n AISpecRuntimeMemory,\n AISpecRuntimePermissions,\n AISpecRuntimePrompt,\n AISpecRuntimeSandbox,\n AISpecRuntimeSandboxDispatch,\n AISpecRuntimeSandboxPolicy,\n AISpecRuntimeSetup,\n AISpecRuntimeValue,\n SpecCheckoutMode,\n SpecCommitPhase,\n SpecPermissionMode,\n SpecSandboxMode,\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\n/**\n * Reads the sandbox ref in object form regardless of which form it is stored\n * in, so the section's controls do not each have to re-narrow the union.\n */\nexport function sandboxRef(value: AISpecRuntimeValue): AISpecRuntimeSandbox {\n if (typeof value.sandbox === \"string\") {\n return { mode: value.sandbox.trim() as SpecSandboxMode };\n }\n return value.sandbox ?? {};\n}\n\n/**\n * Patches the unified ref while keeping its object form during editing.\n */\nexport function withSandbox(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandbox>,\n): AISpecRuntimeValue {\n const next: AISpecRuntimeSandbox = { ...sandboxRef(value), ...patch };\n if (!next.mode) {\n throw new Error(\"sandbox.mode is required before configuring sandbox settings\");\n }\n return withRoot(value, { sandbox: next });\n}\n\nexport function withSandboxMode(\n value: AISpecRuntimeValue,\n mode: SpecSandboxMode,\n): AISpecRuntimeValue {\n const current = sandboxRef(value);\n if (current.mode === mode) return value;\n if (mode === \"off\") return withRoot(value, { sandbox: { mode } });\n return withRoot(value, {\n sandbox: { mode, ...(current.approval ? { approval: current.approval } : {}) },\n });\n}\n\nexport function withSandboxBackend(\n value: AISpecRuntimeValue,\n backend: string,\n): AISpecRuntimeValue {\n const next = { ...sandboxRef(value) };\n const selected = backend.trim();\n if (selected) next.backend = selected;\n else delete next.backend;\n return withRoot(value, { sandbox: next });\n}\n\nexport function withSandboxAgent(\n value: AISpecRuntimeValue,\n agent: string,\n): AISpecRuntimeValue {\n const next = { ...sandboxRef(value) };\n const selected = agent.trim();\n if (selected) next.agent = selected;\n else delete next.agent;\n return withRoot(value, { sandbox: next });\n}\n\nexport function withSandboxApproval(\n value: AISpecRuntimeValue,\n approval: SpecPermissionMode,\n): AISpecRuntimeValue {\n if (sandboxRef(value).mode === \"off\") {\n throw new Error(\"sandbox mode off does not accept approval\");\n }\n return withSandbox(value, { approval });\n}\n\nexport function withSandboxPolicy(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandboxPolicy>,\n): AISpecRuntimeValue {\n if (sandboxRef(value).mode !== \"native\") {\n throw new Error(\"native sandbox policy requires sandbox.mode native\");\n }\n return withSandbox(value, {\n policy: { ...sandboxRef(value).policy, ...patch },\n });\n}\n\nexport function withSandboxDispatch(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeSandboxDispatch>,\n): AISpecRuntimeValue {\n if (sandboxRef(value).mode !== \"git-agent\") {\n throw new Error(\"sandbox dispatch policy requires sandbox.mode git-agent\");\n }\n return withSandbox(value, {\n dispatch: { ...sandboxRef(value).dispatch, ...patch },\n });\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 withConnections(\n value: AISpecRuntimeValue,\n patch: Partial<AISpecRuntimeConnections>,\n): AISpecRuntimeValue {\n return withSetup(value, {\n connections: { ...value.setup?.connections, ...patch },\n });\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\")\n 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":"AAyBO,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;AAaO,SAAS,WAAW,OAAiD;AAC1E,MAAI,OAAO,MAAM,YAAY,UAAU;AACrC,WAAO,EAAE,MAAM,MAAM,QAAQ,OAAK;AAAA,EACpC;AACA,SAAO,MAAM,WAAW,CAAA;AAC1B;AAKO,SAAS,YACd,OACA,OACoB;AACpB,QAAM,OAA6B,EAAE,GAAG,WAAW,KAAK,GAAG,GAAG,MAAA;AAC9D,MAAI,CAAC,KAAK,MAAM;AACd,UAAM,IAAI,MAAM,8DAA8D;AAAA,EAChF;AACA,SAAO,SAAS,OAAO,EAAE,SAAS,MAAM;AAC1C;AAEO,SAAS,gBACd,OACA,MACoB;AACpB,QAAM,UAAU,WAAW,KAAK;AAChC,MAAI,QAAQ,SAAS,KAAM,QAAO;AAClC,MAAI,SAAS,MAAO,QAAO,SAAS,OAAO,EAAE,SAAS,EAAE,KAAA,GAAQ;AAChE,SAAO,SAAS,OAAO;AAAA,IACrB,SAAS,EAAE,MAAM,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA,EAAC;AAAA,EAAG,CAC9E;AACH;AAEO,SAAS,mBACd,OACA,SACoB;AACpB,QAAM,OAAO,EAAE,GAAG,WAAW,KAAK,EAAA;AAClC,QAAM,WAAW,QAAQ,KAAA;AACzB,MAAI,eAAe,UAAU;AAAA,cACjB,KAAK;AACjB,SAAO,SAAS,OAAO,EAAE,SAAS,MAAM;AAC1C;AAEO,SAAS,iBACd,OACA,OACoB;AACpB,QAAM,OAAO,EAAE,GAAG,WAAW,KAAK,EAAA;AAClC,QAAM,WAAW,MAAM,KAAA;AACvB,MAAI,eAAe,QAAQ;AAAA,cACf,KAAK;AACjB,SAAO,SAAS,OAAO,EAAE,SAAS,MAAM;AAC1C;AAEO,SAAS,oBACd,OACA,UACoB;AACpB,MAAI,WAAW,KAAK,EAAE,SAAS,OAAO;AACpC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC7D;AACA,SAAO,YAAY,OAAO,EAAE,UAAU;AACxC;AAcO,SAAS,oBACd,OACA,OACoB;AACpB,MAAI,WAAW,KAAK,EAAE,SAAS,aAAa;AAC1C,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AACA,SAAO,YAAY,OAAO;AAAA,IACxB,UAAU,EAAE,GAAG,WAAW,KAAK,EAAE,UAAU,GAAG,MAAA;AAAA,EAAM,CACrD;AACH;AAEO,SAAS,UACd,OACA,OACoB;AACpB,SAAO,SAAS,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,GAAG,MAAA,GAAS;AAChE;AAWO,SAAS,aACd,OACA,OACoB;AAjLf;AAkLL,SAAO,UAAU,OAAO;AAAA,IACtB,UAAU,EAAE,IAAG,WAAM,UAAN,mBAAa,UAAU,GAAG,MAAA;AAAA,EAAM,CAChD;AACH;AAEO,SAAS,aACd,OACA,OACoB;AA1Lf;AA2LL,SAAO,aAAa,OAAO;AAAA,IACzB,UAAU,EAAE,IAAG,iBAAM,UAAN,mBAAa,aAAb,mBAAuB,UAAU,GAAG,MAAA;AAAA,EAAM,CAC1D;AACH;AAWO,SAAS,WACd,OACA,OACoB;AA5Mf;AA6ML,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;AAKO,SAAS,WACd,OACA,OACoB;AA3Nf;AA4NL,QAAM,CAAC,OAAO,GAAG,IAAI,MAAI,WAAM,aAAN,mBAAgB,YAAW,CAAA;AACpD,SAAO,SAAS,OAAO;AAAA,IACrB,UAAU,EAAE,GAAG,MAAM,UAAU,SAAS,CAAC,EAAE,GAAG,OAAO,GAAG,MAAA,GAAS,GAAG,IAAI,EAAA;AAAA,EAAE,CAC3E;AACH;AAKO,SAAS,gBACd,OACA,OACoB;AACpB,MAAI,UAAU,QAAQ;AACpB,WAAO,SAAS,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,UAAU,SAAS,CAAA,EAAC,GAAK;AAAA,EACzE;AACA,SAAO,WAAW,OAAO,EAAE,IAAI,OAAO;AACxC;AAIO,SAAS,YACd,OAC0B;AAnPrB;AAoPL,QAAM,WAAU,WAAM,aAAN,mBAAgB;AAChC,MAAI,EAAC,mCAAS,QAAQ,QAAO;AAC7B,QAAM,MAAK,aAAQ,CAAC,MAAT,mBAAY;AACvB,SAAO,OAAO,UAAU,OAAO,UAAU,KAAK;AAChD;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;AACX,WAAO,aAAa,OAAO,EAAE,MAAM,KAAK,IAAI,YAAY,IAAI;AAC9D,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;AASO,SAAS,aAAa,OAA6C;AAzSnE;AA0SL,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;AAhTnE;AAiTL,QAAM,QAAO,uBAAM,UAAN,mBAAa,aAAb,mBAAuB,aAAvB,mBAAiC;AAC9C,MAAI,SAAS,WAAY,QAAO;AAChC,MAAI,SAAS,MAAO,QAAO;AAC3B,SAAO;AACT;"}
|