@dsh-cove/dsh-web-all 0.0.0-stage → 0.4.4
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/LICENSE +202 -0
- package/README.i18n.yaml +6 -0
- package/README.md +205 -2
- package/README.zh.md +205 -0
- package/cordis.patch.yml +59 -0
- package/lib/client.js +25413 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +20024 -0
- package/lib/invariant.js +6 -0
- package/lib/types/client/compat.d.ts +29 -0
- package/lib/types/client/compat.d.ts.map +1 -0
- package/lib/types/client/compat.js +69 -0
- package/lib/types/client/conversation/git-branch.d.ts +13 -0
- package/lib/types/client/conversation/git-branch.d.ts.map +1 -0
- package/lib/types/client/conversation/git-branch.js +121 -0
- package/lib/types/client/conversation/git-graph/api.d.ts +42 -0
- package/lib/types/client/conversation/git-graph/api.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/api.js +72 -0
- package/lib/types/client/conversation/git-graph/branch-chip.d.ts +47 -0
- package/lib/types/client/conversation/git-graph/branch-chip.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/branch-chip.js +268 -0
- package/lib/types/client/conversation/git-graph/branch-popover.d.ts +32 -0
- package/lib/types/client/conversation/git-graph/branch-popover.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/branch-popover.js +108 -0
- package/lib/types/client/conversation/git-graph/chip.d.ts +24 -0
- package/lib/types/client/conversation/git-graph/chip.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/chip.js +15 -0
- package/lib/types/client/conversation/git-graph/create-branch-dialog.d.ts +30 -0
- package/lib/types/client/conversation/git-graph/create-branch-dialog.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/create-branch-dialog.js +52 -0
- package/lib/types/client/conversation/git-graph/error-copy.d.ts +17 -0
- package/lib/types/client/conversation/git-graph/error-copy.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/error-copy.js +44 -0
- package/lib/types/client/conversation/git-graph/graph-dialog.d.ts +21 -0
- package/lib/types/client/conversation/git-graph/graph-dialog.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/graph-dialog.js +112 -0
- package/lib/types/client/conversation/git-graph/hero-seat.d.ts +53 -0
- package/lib/types/client/conversation/git-graph/hero-seat.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/hero-seat.js +54 -0
- package/lib/types/client/conversation/git-graph/locales.d.ts +88 -0
- package/lib/types/client/conversation/git-graph/locales.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/locales.js +85 -0
- package/lib/types/client/conversation/git-graph/sse-leader.d.ts +37 -0
- package/lib/types/client/conversation/git-graph/sse-leader.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/sse-leader.js +101 -0
- package/lib/types/client/conversation/index.d.ts +43 -0
- package/lib/types/client/conversation/index.d.ts.map +1 -0
- package/lib/types/client/conversation/index.js +39 -0
- package/lib/types/client/conversation/selector-context.d.ts +12 -0
- package/lib/types/client/conversation/selector-context.d.ts.map +1 -0
- package/lib/types/client/conversation/selector-context.js +11 -0
- package/lib/types/client/conversation/session-lane-chip.d.ts +72 -0
- package/lib/types/client/conversation/session-lane-chip.d.ts.map +1 -0
- package/lib/types/client/conversation/session-lane-chip.js +163 -0
- package/lib/types/client/conversation/session-lane-locales.d.ts +22 -0
- package/lib/types/client/conversation/session-lane-locales.d.ts.map +1 -0
- package/lib/types/client/conversation/session-lane-locales.js +29 -0
- package/lib/types/client/conversation/subagent-model-dom.d.ts +16 -0
- package/lib/types/client/conversation/subagent-model-dom.d.ts.map +1 -0
- package/lib/types/client/conversation/subagent-model-dom.js +138 -0
- package/lib/types/client/conversation/subagent-model.d.ts +17 -0
- package/lib/types/client/conversation/subagent-model.d.ts.map +1 -0
- package/lib/types/client/conversation/subagent-model.js +156 -0
- package/lib/types/client/conversation/worktree/api.d.ts +97 -0
- package/lib/types/client/conversation/worktree/api.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/api.js +239 -0
- package/lib/types/client/conversation/worktree/dialogs/DeleteWorktreeDialog.d.ts +35 -0
- package/lib/types/client/conversation/worktree/dialogs/DeleteWorktreeDialog.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/dialogs/DeleteWorktreeDialog.js +55 -0
- package/lib/types/client/conversation/worktree/dialogs/PrCreateDialog.d.ts +27 -0
- package/lib/types/client/conversation/worktree/dialogs/PrCreateDialog.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/dialogs/PrCreateDialog.js +49 -0
- package/lib/types/client/conversation/worktree/lane-binding.d.ts +46 -0
- package/lib/types/client/conversation/worktree/lane-binding.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-binding.js +60 -0
- package/lib/types/client/conversation/worktree/lane-menu.d.ts +51 -0
- package/lib/types/client/conversation/worktree/lane-menu.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-menu.js +140 -0
- package/lib/types/client/conversation/worktree/lane-open.d.ts +126 -0
- package/lib/types/client/conversation/worktree/lane-open.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-open.js +140 -0
- package/lib/types/client/conversation/worktree/lane-workspace-sweeper.d.ts +79 -0
- package/lib/types/client/conversation/worktree/lane-workspace-sweeper.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-workspace-sweeper.js +116 -0
- package/lib/types/client/conversation/worktree/lifecycle.d.ts +29 -0
- package/lib/types/client/conversation/worktree/lifecycle.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lifecycle.js +67 -0
- package/lib/types/client/conversation/worktree/locales.d.ts +58 -0
- package/lib/types/client/conversation/worktree/locales.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/locales.js +86 -0
- package/lib/types/client/conversation/worktree/semantic.d.ts +11 -0
- package/lib/types/client/conversation/worktree/semantic.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/semantic.js +10 -0
- package/lib/types/client/index.d.ts +14 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/lib/types/client/index.js +45 -0
- package/lib/types/client/lark-inbox/i18n.d.ts +63 -0
- package/lib/types/client/lark-inbox/i18n.d.ts.map +1 -0
- package/lib/types/client/lark-inbox/i18n.js +119 -0
- package/lib/types/client/lark-inbox/wizard.d.ts +19 -0
- package/lib/types/client/lark-inbox/wizard.d.ts.map +1 -0
- package/lib/types/client/lark-inbox/wizard.js +158 -0
- package/lib/types/client/notify/i18n.d.ts +47 -0
- package/lib/types/client/notify/i18n.d.ts.map +1 -0
- package/lib/types/client/notify/i18n.js +87 -0
- package/lib/types/client/settings/family-scope.d.ts +23 -0
- package/lib/types/client/settings/family-scope.d.ts.map +1 -0
- package/lib/types/client/settings/family-scope.js +30 -0
- package/lib/types/client/settings/lark-inbox.d.ts +73 -0
- package/lib/types/client/settings/lark-inbox.d.ts.map +1 -0
- package/lib/types/client/settings/lark-inbox.js +144 -0
- package/lib/types/client/settings/notify.d.ts +66 -0
- package/lib/types/client/settings/notify.d.ts.map +1 -0
- package/lib/types/client/settings/notify.js +139 -0
- package/lib/types/client/settings/primitives-0.2.d.ts +137 -0
- package/lib/types/client/settings/primitives-0.2.d.ts.map +1 -0
- package/lib/types/client/settings/primitives-0.2.js +8 -0
- package/lib/types/client/sidebar/RenderBoundary.d.ts +17 -0
- package/lib/types/client/sidebar/RenderBoundary.d.ts.map +1 -0
- package/lib/types/client/sidebar/RenderBoundary.js +18 -0
- package/lib/types/client/sidebar/agent-browser.d.ts +9 -0
- package/lib/types/client/sidebar/agent-browser.d.ts.map +1 -0
- package/lib/types/client/sidebar/agent-browser.js +102 -0
- package/lib/types/client/sidebar/diff-view.d.ts +58 -0
- package/lib/types/client/sidebar/diff-view.d.ts.map +1 -0
- package/lib/types/client/sidebar/diff-view.js +223 -0
- package/lib/types/client/sidebar/git-workbench.d.ts +41 -0
- package/lib/types/client/sidebar/git-workbench.d.ts.map +1 -0
- package/lib/types/client/sidebar/git-workbench.js +480 -0
- package/lib/types/client/sidebar/icons.d.ts +9 -0
- package/lib/types/client/sidebar/icons.d.ts.map +1 -0
- package/lib/types/client/sidebar/icons.js +6 -0
- package/lib/types/client/sidebar/index.d.ts +19 -0
- package/lib/types/client/sidebar/index.d.ts.map +1 -0
- package/lib/types/client/sidebar/index.js +12 -0
- package/lib/types/client/sidebar/native-panels.d.ts +19 -0
- package/lib/types/client/sidebar/native-panels.d.ts.map +1 -0
- package/lib/types/client/sidebar/native-panels.js +103 -0
- package/lib/types/client/sidebar/page-shell.d.ts +52 -0
- package/lib/types/client/sidebar/page-shell.d.ts.map +1 -0
- package/lib/types/client/sidebar/page-shell.js +18 -0
- package/lib/types/client/sidebar/panels/memoir/api.d.ts +258 -0
- package/lib/types/client/sidebar/panels/memoir/api.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/api.js +135 -0
- package/lib/types/client/sidebar/panels/memoir/controller.d.ts +22 -0
- package/lib/types/client/sidebar/panels/memoir/controller.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/controller.js +38 -0
- package/lib/types/client/sidebar/panels/memoir/cwd.d.ts +80 -0
- package/lib/types/client/sidebar/panels/memoir/cwd.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/cwd.js +96 -0
- package/lib/types/client/sidebar/panels/memoir/i18n.d.ts +21 -0
- package/lib/types/client/sidebar/panels/memoir/i18n.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/i18n.js +288 -0
- package/lib/types/client/sidebar/panels/memoir/panel-activation.d.ts +11 -0
- package/lib/types/client/sidebar/panels/memoir/panel-activation.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/panel-activation.js +37 -0
- package/lib/types/client/sidebar/panels/memoir/panel.d.ts +26 -0
- package/lib/types/client/sidebar/panels/memoir/panel.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/panel.js +423 -0
- package/lib/types/client/sidebar/panels/memoir/styles.d.ts +22 -0
- package/lib/types/client/sidebar/panels/memoir/styles.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/styles.js +774 -0
- package/lib/types/client/sidebar/panels/memoir/types.d.ts +7 -0
- package/lib/types/client/sidebar/panels/memoir/types.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/types.js +5 -0
- package/lib/types/client/sidebar/panels/ssh/ClusterTab.d.ts +8 -0
- package/lib/types/client/sidebar/panels/ssh/ClusterTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/ClusterTab.js +53 -0
- package/lib/types/client/sidebar/panels/ssh/HostFormDialog.d.ts +13 -0
- package/lib/types/client/sidebar/panels/ssh/HostFormDialog.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/HostFormDialog.js +110 -0
- package/lib/types/client/sidebar/panels/ssh/HostsTab.d.ts +26 -0
- package/lib/types/client/sidebar/panels/ssh/HostsTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/HostsTab.js +175 -0
- package/lib/types/client/sidebar/panels/ssh/SshPanel.d.ts +14 -0
- package/lib/types/client/sidebar/panels/ssh/SshPanel.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/SshPanel.js +34 -0
- package/lib/types/client/sidebar/panels/ssh/TerminalTab.d.ts +18 -0
- package/lib/types/client/sidebar/panels/ssh/TerminalTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/TerminalTab.js +207 -0
- package/lib/types/client/sidebar/panels/ssh/TransferTab.d.ts +8 -0
- package/lib/types/client/sidebar/panels/ssh/TransferTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/TransferTab.js +168 -0
- package/lib/types/client/sidebar/panels/ssh/TunnelsTab.d.ts +18 -0
- package/lib/types/client/sidebar/panels/ssh/TunnelsTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/TunnelsTab.js +161 -0
- package/lib/types/client/sidebar/panels/ssh/api.d.ts +80 -0
- package/lib/types/client/sidebar/panels/ssh/api.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/api.js +333 -0
- package/lib/types/client/sidebar/panels/ssh/controller.d.ts +23 -0
- package/lib/types/client/sidebar/panels/ssh/controller.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/controller.js +41 -0
- package/lib/types/client/sidebar/panels/ssh/helpers.d.ts +44 -0
- package/lib/types/client/sidebar/panels/ssh/helpers.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/helpers.js +53 -0
- package/lib/types/client/sidebar/panels/ssh/locales.d.ts +155 -0
- package/lib/types/client/sidebar/panels/ssh/locales.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/locales.js +312 -0
- package/lib/types/client/sidebar/panels/ssh/xterm.css.d.ts +3 -0
- package/lib/types/client/sidebar/panels/ssh/xterm.css.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/xterm.css.js +2 -0
- package/lib/types/client/sidebar/right-pane-i18n.d.ts +121 -0
- package/lib/types/client/sidebar/right-pane-i18n.d.ts.map +1 -0
- package/lib/types/client/sidebar/right-pane-i18n.js +239 -0
- package/lib/types/client/sidebar/right-pane.d.ts +27 -0
- package/lib/types/client/sidebar/right-pane.d.ts.map +1 -0
- package/lib/types/client/sidebar/right-pane.js +112 -0
- package/lib/types/client/sidebar/scope.d.ts +17 -0
- package/lib/types/client/sidebar/scope.d.ts.map +1 -0
- package/lib/types/client/sidebar/scope.js +41 -0
- package/lib/types/client/trust.d.ts +78 -0
- package/lib/types/client/trust.d.ts.map +1 -0
- package/lib/types/client/trust.js +130 -0
- package/lib/types/client/ui-icons.d.ts +19 -0
- package/lib/types/client/ui-icons.d.ts.map +1 -0
- package/lib/types/client/ui-icons.js +33 -0
- package/lib/types/core/git-graph/commands.d.ts +36 -0
- package/lib/types/core/git-graph/commands.d.ts.map +1 -0
- package/lib/types/core/git-graph/commands.js +122 -0
- package/lib/types/core/git-graph/protocol.d.ts +104 -0
- package/lib/types/core/git-graph/protocol.d.ts.map +1 -0
- package/lib/types/core/git-graph/protocol.js +142 -0
- package/lib/types/core/index.d.ts +3 -0
- package/lib/types/core/index.d.ts.map +1 -0
- package/lib/types/core/index.js +2 -0
- package/lib/types/core/lark-inbox/gating.d.ts +21 -0
- package/lib/types/core/lark-inbox/gating.d.ts.map +1 -0
- package/lib/types/core/lark-inbox/gating.js +17 -0
- package/lib/types/core/lark-inbox/queue.d.ts +27 -0
- package/lib/types/core/lark-inbox/queue.d.ts.map +1 -0
- package/lib/types/core/lark-inbox/queue.js +78 -0
- package/lib/types/core/memoir/protocol.d.ts +42 -0
- package/lib/types/core/memoir/protocol.d.ts.map +1 -0
- package/lib/types/core/memoir/protocol.js +8 -0
- package/lib/types/core/no-browser-auth/contract.d.ts +22 -0
- package/lib/types/core/no-browser-auth/contract.d.ts.map +1 -0
- package/lib/types/core/no-browser-auth/contract.js +9 -0
- package/lib/types/core/notify/contract.d.ts +133 -0
- package/lib/types/core/notify/contract.d.ts.map +1 -0
- package/lib/types/core/notify/contract.js +186 -0
- package/lib/types/core/notify/feed.d.ts +116 -0
- package/lib/types/core/notify/feed.d.ts.map +1 -0
- package/lib/types/core/notify/feed.js +214 -0
- package/lib/types/core/playwright-sessions/contracts.d.ts +98 -0
- package/lib/types/core/playwright-sessions/contracts.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/contracts.js +68 -0
- package/lib/types/core/playwright-sessions/control.d.ts +19 -0
- package/lib/types/core/playwright-sessions/control.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/control.js +9 -0
- package/lib/types/core/playwright-sessions/index.d.ts +4 -0
- package/lib/types/core/playwright-sessions/index.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/index.js +3 -0
- package/lib/types/core/playwright-sessions/names.d.ts +4 -0
- package/lib/types/core/playwright-sessions/names.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/names.js +84 -0
- package/lib/types/core/playwright-sessions/schema.d.ts +4 -0
- package/lib/types/core/playwright-sessions/schema.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/schema.js +90 -0
- package/lib/types/core/playwright-sessions/wire.d.ts +78 -0
- package/lib/types/core/playwright-sessions/wire.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/wire.js +103 -0
- package/lib/types/core/remote-access/paths.d.ts +19 -0
- package/lib/types/core/remote-access/paths.d.ts.map +1 -0
- package/lib/types/core/remote-access/paths.js +18 -0
- package/lib/types/core/remote-web-ui/security.d.ts +35 -0
- package/lib/types/core/remote-web-ui/security.d.ts.map +1 -0
- package/lib/types/core/remote-web-ui/security.js +146 -0
- package/lib/types/core/right-pane/protocol.d.ts +25 -0
- package/lib/types/core/right-pane/protocol.d.ts.map +1 -0
- package/lib/types/core/right-pane/protocol.js +91 -0
- package/lib/types/core/schedule-mode/index.d.ts +7 -0
- package/lib/types/core/schedule-mode/index.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/index.js +6 -0
- package/lib/types/core/schedule-mode/native.d.ts +35 -0
- package/lib/types/core/schedule-mode/native.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/native.js +82 -0
- package/lib/types/core/schedule-mode/types.d.ts +177 -0
- package/lib/types/core/schedule-mode/types.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/types.js +65 -0
- package/lib/types/core/schedule-mode/view.d.ts +62 -0
- package/lib/types/core/schedule-mode/view.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/view.js +4 -0
- package/lib/types/core/ssh/protocol.d.ts +215 -0
- package/lib/types/core/ssh/protocol.d.ts.map +1 -0
- package/lib/types/core/ssh/protocol.js +23 -0
- package/lib/types/core/subagent-model/badges.d.ts +73 -0
- package/lib/types/core/subagent-model/badges.d.ts.map +1 -0
- package/lib/types/core/subagent-model/badges.js +105 -0
- package/lib/types/core/worktree/invariant.d.ts +62 -0
- package/lib/types/core/worktree/invariant.d.ts.map +1 -0
- package/lib/types/core/worktree/invariant.js +72 -0
- package/lib/types/core/worktree/manifest.d.ts +71 -0
- package/lib/types/core/worktree/manifest.d.ts.map +1 -0
- package/lib/types/core/worktree/manifest.js +98 -0
- package/lib/types/core/worktree/paths.d.ts +60 -0
- package/lib/types/core/worktree/paths.d.ts.map +1 -0
- package/lib/types/core/worktree/paths.js +118 -0
- package/lib/types/core/worktree/pr-create.d.ts +67 -0
- package/lib/types/core/worktree/pr-create.d.ts.map +1 -0
- package/lib/types/core/worktree/pr-create.js +118 -0
- package/lib/types/core/worktree/protocol.d.ts +7 -0
- package/lib/types/core/worktree/protocol.d.ts.map +1 -0
- package/lib/types/core/worktree/protocol.js +6 -0
- package/lib/types/core/worktree/types.d.ts +292 -0
- package/lib/types/core/worktree/types.d.ts.map +1 -0
- package/lib/types/core/worktree/types.js +14 -0
- package/lib/types/core/worktree/workspace-model.d.ts +56 -0
- package/lib/types/core/worktree/workspace-model.d.ts.map +1 -0
- package/lib/types/core/worktree/workspace-model.js +14 -0
- package/lib/types/host/services/access-trust/index.d.ts +54 -0
- package/lib/types/host/services/access-trust/index.d.ts.map +1 -0
- package/lib/types/host/services/access-trust/index.js +82 -0
- package/lib/types/host/services/access-trust/trust.d.ts +70 -0
- package/lib/types/host/services/access-trust/trust.d.ts.map +1 -0
- package/lib/types/host/services/access-trust/trust.js +187 -0
- package/lib/types/host/services/codex-bridge/bridge.d.ts +106 -0
- package/lib/types/host/services/codex-bridge/bridge.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/bridge.js +321 -0
- package/lib/types/host/services/codex-bridge/codex-auth.d.ts +108 -0
- package/lib/types/host/services/codex-bridge/codex-auth.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/codex-auth.js +241 -0
- package/lib/types/host/services/codex-bridge/dsh-integration.d.ts +58 -0
- package/lib/types/host/services/codex-bridge/dsh-integration.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/dsh-integration.js +120 -0
- package/lib/types/host/services/codex-bridge/http.d.ts +43 -0
- package/lib/types/host/services/codex-bridge/http.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/http.js +92 -0
- package/lib/types/host/services/codex-bridge/index.d.ts +63 -0
- package/lib/types/host/services/codex-bridge/index.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/index.js +111 -0
- package/lib/types/host/services/codex-bridge/loopback.d.ts +25 -0
- package/lib/types/host/services/codex-bridge/loopback.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/loopback.js +68 -0
- package/lib/types/host/services/codex-bridge/routes.d.ts +31 -0
- package/lib/types/host/services/codex-bridge/routes.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/routes.js +126 -0
- package/lib/types/host/services/family-config.d.ts +71 -0
- package/lib/types/host/services/family-config.d.ts.map +1 -0
- package/lib/types/host/services/family-config.js +166 -0
- package/lib/types/host/services/family-namespaces.d.ts +24 -0
- package/lib/types/host/services/family-namespaces.d.ts.map +1 -0
- package/lib/types/host/services/family-namespaces.js +30 -0
- package/lib/types/host/services/git-graph/index.d.ts +6 -0
- package/lib/types/host/services/git-graph/index.d.ts.map +1 -0
- package/lib/types/host/services/git-graph/index.js +7 -0
- package/lib/types/host/services/git-graph/routes.d.ts +4 -0
- package/lib/types/host/services/git-graph/routes.d.ts.map +1 -0
- package/lib/types/host/services/git-graph/routes.js +241 -0
- package/lib/types/host/services/git-graph/service.d.ts +52 -0
- package/lib/types/host/services/git-graph/service.d.ts.map +1 -0
- package/lib/types/host/services/git-graph/service.js +301 -0
- package/lib/types/host/services/index.d.ts +23 -0
- package/lib/types/host/services/index.d.ts.map +1 -0
- package/lib/types/host/services/index.js +80 -0
- package/lib/types/host/services/lark-inbox/config.d.ts +24 -0
- package/lib/types/host/services/lark-inbox/config.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/config.js +48 -0
- package/lib/types/host/services/lark-inbox/gateway.d.ts +53 -0
- package/lib/types/host/services/lark-inbox/gateway.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/gateway.js +171 -0
- package/lib/types/host/services/lark-inbox/host-routes.d.ts +22 -0
- package/lib/types/host/services/lark-inbox/host-routes.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/host-routes.js +146 -0
- package/lib/types/host/services/lark-inbox/inbox-store.d.ts +39 -0
- package/lib/types/host/services/lark-inbox/inbox-store.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/inbox-store.js +124 -0
- package/lib/types/host/services/lark-inbox/index.d.ts +26 -0
- package/lib/types/host/services/lark-inbox/index.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/index.js +135 -0
- package/lib/types/host/services/lark-inbox/tools.d.ts +7 -0
- package/lib/types/host/services/lark-inbox/tools.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/tools.js +119 -0
- package/lib/types/host/services/lark-inbox/wizard.d.ts +62 -0
- package/lib/types/host/services/lark-inbox/wizard.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/wizard.js +211 -0
- package/lib/types/host/services/lifecycle.d.ts +29 -0
- package/lib/types/host/services/lifecycle.d.ts.map +1 -0
- package/lib/types/host/services/lifecycle.js +93 -0
- package/lib/types/host/services/memoir/index.d.ts +40 -0
- package/lib/types/host/services/memoir/index.d.ts.map +1 -0
- package/lib/types/host/services/memoir/index.js +52 -0
- package/lib/types/host/services/memoir/routes.d.ts +30 -0
- package/lib/types/host/services/memoir/routes.d.ts.map +1 -0
- package/lib/types/host/services/memoir/routes.js +364 -0
- package/lib/types/host/services/memoir/settings.d.ts +27 -0
- package/lib/types/host/services/memoir/settings.d.ts.map +1 -0
- package/lib/types/host/services/memoir/settings.js +120 -0
- package/lib/types/host/services/memoir/store.d.ts +35 -0
- package/lib/types/host/services/memoir/store.d.ts.map +1 -0
- package/lib/types/host/services/memoir/store.js +124 -0
- package/lib/types/host/services/memoir/tools.d.ts +8 -0
- package/lib/types/host/services/memoir/tools.d.ts.map +1 -0
- package/lib/types/host/services/memoir/tools.js +154 -0
- package/lib/types/host/services/no-browser-auth/index.d.ts +25 -0
- package/lib/types/host/services/no-browser-auth/index.d.ts.map +1 -0
- package/lib/types/host/services/no-browser-auth/index.js +42 -0
- package/lib/types/host/services/notify/config.d.ts +105 -0
- package/lib/types/host/services/notify/config.d.ts.map +1 -0
- package/lib/types/host/services/notify/config.js +123 -0
- package/lib/types/host/services/notify/feishu-sender.d.ts +120 -0
- package/lib/types/host/services/notify/feishu-sender.d.ts.map +1 -0
- package/lib/types/host/services/notify/feishu-sender.js +186 -0
- package/lib/types/host/services/notify/host-routes.d.ts +69 -0
- package/lib/types/host/services/notify/host-routes.d.ts.map +1 -0
- package/lib/types/host/services/notify/host-routes.js +112 -0
- package/lib/types/host/services/notify/index.d.ts +80 -0
- package/lib/types/host/services/notify/index.d.ts.map +1 -0
- package/lib/types/host/services/notify/index.js +263 -0
- package/lib/types/host/services/playwright-sessions/child.d.ts +76 -0
- package/lib/types/host/services/playwright-sessions/child.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/child.js +197 -0
- package/lib/types/host/services/playwright-sessions/controller.d.ts +25 -0
- package/lib/types/host/services/playwright-sessions/controller.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/controller.js +104 -0
- package/lib/types/host/services/playwright-sessions/index.d.ts +6 -0
- package/lib/types/host/services/playwright-sessions/index.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/index.js +161 -0
- package/lib/types/host/services/playwright-sessions/live-view.d.ts +32 -0
- package/lib/types/host/services/playwright-sessions/live-view.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/live-view.js +188 -0
- package/lib/types/host/services/playwright-sessions/manager.d.ts +87 -0
- package/lib/types/host/services/playwright-sessions/manager.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/manager.js +203 -0
- package/lib/types/host/services/playwright-sessions/profile-gc.d.ts +39 -0
- package/lib/types/host/services/playwright-sessions/profile-gc.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/profile-gc.js +72 -0
- package/lib/types/host/services/playwright-sessions/routes.d.ts +18 -0
- package/lib/types/host/services/playwright-sessions/routes.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/routes.js +87 -0
- package/lib/types/host/services/remote-access/boot-scripts.d.ts +55 -0
- package/lib/types/host/services/remote-access/boot-scripts.d.ts.map +1 -0
- package/lib/types/host/services/remote-access/boot-scripts.js +109 -0
- package/lib/types/host/services/remote-access/index.d.ts +28 -0
- package/lib/types/host/services/remote-access/index.d.ts.map +1 -0
- package/lib/types/host/services/remote-access/index.js +47 -0
- package/lib/types/host/services/remote-access/routes.d.ts +42 -0
- package/lib/types/host/services/remote-access/routes.d.ts.map +1 -0
- package/lib/types/host/services/remote-access/routes.js +119 -0
- package/lib/types/host/services/remote-web-ui/index.d.ts +21 -0
- package/lib/types/host/services/remote-web-ui/index.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/index.js +325 -0
- package/lib/types/host/services/remote-web-ui/server-mode/accounts.d.ts +115 -0
- package/lib/types/host/services/remote-web-ui/server-mode/accounts.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/accounts.js +396 -0
- package/lib/types/host/services/remote-web-ui/server-mode/cookie.d.ts +28 -0
- package/lib/types/host/services/remote-web-ui/server-mode/cookie.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/cookie.js +48 -0
- package/lib/types/host/services/remote-web-ui/server-mode/dsh-home.d.ts +17 -0
- package/lib/types/host/services/remote-web-ui/server-mode/dsh-home.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/dsh-home.js +40 -0
- package/lib/types/host/services/remote-web-ui/server-mode/external-auth.d.ts +73 -0
- package/lib/types/host/services/remote-web-ui/server-mode/external-auth.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/external-auth.js +242 -0
- package/lib/types/host/services/remote-web-ui/server-mode/fence.d.ts +23 -0
- package/lib/types/host/services/remote-web-ui/server-mode/fence.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/fence.js +24 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway-routes.d.ts +89 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway-routes.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway-routes.js +768 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway.d.ts +99 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway.js +679 -0
- package/lib/types/host/services/remote-web-ui/server-mode/http.d.ts +43 -0
- package/lib/types/host/services/remote-web-ui/server-mode/http.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/http.js +92 -0
- package/lib/types/host/services/remote-web-ui/server-mode/integrated-auth.d.ts +42 -0
- package/lib/types/host/services/remote-web-ui/server-mode/integrated-auth.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/integrated-auth.js +73 -0
- package/lib/types/host/services/remote-web-ui/server-mode/lan.d.ts +13 -0
- package/lib/types/host/services/remote-web-ui/server-mode/lan.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/lan.js +17 -0
- package/lib/types/host/services/remote-web-ui/server-mode/loopback.d.ts +25 -0
- package/lib/types/host/services/remote-web-ui/server-mode/loopback.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/loopback.js +68 -0
- package/lib/types/host/services/remote-web-ui/server-mode/posture.d.ts +75 -0
- package/lib/types/host/services/remote-web-ui/server-mode/posture.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/posture.js +116 -0
- package/lib/types/host/services/remote-web-ui/server-mode/roles.d.ts +44 -0
- package/lib/types/host/services/remote-web-ui/server-mode/roles.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/roles.js +47 -0
- package/lib/types/host/services/remote-web-ui/server-mode/server-boot.d.ts +21 -0
- package/lib/types/host/services/remote-web-ui/server-mode/server-boot.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/server-boot.js +37 -0
- package/lib/types/host/services/remote-web-ui/server-mode/sessions.d.ts +111 -0
- package/lib/types/host/services/remote-web-ui/server-mode/sessions.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/sessions.js +298 -0
- package/lib/types/host/services/remote-web-ui/server.d.ts +82 -0
- package/lib/types/host/services/remote-web-ui/server.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server.js +492 -0
- package/lib/types/host/services/resources.d.ts +9 -0
- package/lib/types/host/services/resources.d.ts.map +1 -0
- package/lib/types/host/services/resources.js +98 -0
- package/lib/types/host/services/right-pane/browser.d.ts +42 -0
- package/lib/types/host/services/right-pane/browser.d.ts.map +1 -0
- package/lib/types/host/services/right-pane/browser.js +106 -0
- package/lib/types/host/services/right-pane/index.d.ts +22 -0
- package/lib/types/host/services/right-pane/index.d.ts.map +1 -0
- package/lib/types/host/services/right-pane/index.js +114 -0
- package/lib/types/host/services/right-pane/wire.d.ts +6 -0
- package/lib/types/host/services/right-pane/wire.d.ts.map +1 -0
- package/lib/types/host/services/right-pane/wire.js +9 -0
- package/lib/types/host/services/schedule-mode/config.d.ts +11 -0
- package/lib/types/host/services/schedule-mode/config.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/config.js +15 -0
- package/lib/types/host/services/schedule-mode/engine.d.ts +150 -0
- package/lib/types/host/services/schedule-mode/engine.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/engine.js +672 -0
- package/lib/types/host/services/schedule-mode/index.d.ts +33 -0
- package/lib/types/host/services/schedule-mode/index.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/index.js +175 -0
- package/lib/types/host/services/schedule-mode/routes.d.ts +31 -0
- package/lib/types/host/services/schedule-mode/routes.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/routes.js +109 -0
- package/lib/types/host/services/schedule-mode/session-create.d.ts +27 -0
- package/lib/types/host/services/schedule-mode/session-create.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/session-create.js +21 -0
- package/lib/types/host/services/schedule-mode/store.d.ts +36 -0
- package/lib/types/host/services/schedule-mode/store.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/store.js +309 -0
- package/lib/types/host/services/schedule-mode/tools.d.ts +13 -0
- package/lib/types/host/services/schedule-mode/tools.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/tools.js +132 -0
- package/lib/types/host/services/ssh/engine.d.ts +162 -0
- package/lib/types/host/services/ssh/engine.d.ts.map +1 -0
- package/lib/types/host/services/ssh/engine.js +699 -0
- package/lib/types/host/services/ssh/host-keys.d.ts +10 -0
- package/lib/types/host/services/ssh/host-keys.d.ts.map +1 -0
- package/lib/types/host/services/ssh/host-keys.js +108 -0
- package/lib/types/host/services/ssh/index.d.ts +38 -0
- package/lib/types/host/services/ssh/index.d.ts.map +1 -0
- package/lib/types/host/services/ssh/index.js +47 -0
- package/lib/types/host/services/ssh/routes.d.ts +29 -0
- package/lib/types/host/services/ssh/routes.d.ts.map +1 -0
- package/lib/types/host/services/ssh/routes.js +465 -0
- package/lib/types/host/services/ssh/store.d.ts +40 -0
- package/lib/types/host/services/ssh/store.d.ts.map +1 -0
- package/lib/types/host/services/ssh/store.js +330 -0
- package/lib/types/host/services/ssh/terminal-ws.d.ts +9 -0
- package/lib/types/host/services/ssh/terminal-ws.d.ts.map +1 -0
- package/lib/types/host/services/ssh/terminal-ws.js +142 -0
- package/lib/types/host/services/ssh/tools.d.ts +11 -0
- package/lib/types/host/services/ssh/tools.d.ts.map +1 -0
- package/lib/types/host/services/ssh/tools.js +270 -0
- package/lib/types/host/services/web-render/contracts.d.ts +93 -0
- package/lib/types/host/services/web-render/contracts.d.ts.map +1 -0
- package/lib/types/host/services/web-render/contracts.js +60 -0
- package/lib/types/host/services/web-render/index.d.ts +58 -0
- package/lib/types/host/services/web-render/index.d.ts.map +1 -0
- package/lib/types/host/services/web-render/index.js +90 -0
- package/lib/types/host/services/web-render/provider.d.ts +37 -0
- package/lib/types/host/services/web-render/provider.d.ts.map +1 -0
- package/lib/types/host/services/web-render/provider.js +274 -0
- package/lib/types/host/services/web-search-anthropic/contracts.d.ts +117 -0
- package/lib/types/host/services/web-search-anthropic/contracts.d.ts.map +1 -0
- package/lib/types/host/services/web-search-anthropic/contracts.js +90 -0
- package/lib/types/host/services/web-search-anthropic/index.d.ts +53 -0
- package/lib/types/host/services/web-search-anthropic/index.d.ts.map +1 -0
- package/lib/types/host/services/web-search-anthropic/index.js +123 -0
- package/lib/types/host/services/web-search-anthropic/provider.d.ts +101 -0
- package/lib/types/host/services/web-search-anthropic/provider.d.ts.map +1 -0
- package/lib/types/host/services/web-search-anthropic/provider.js +237 -0
- package/lib/types/host/services/worktree/git-runner.d.ts +82 -0
- package/lib/types/host/services/worktree/git-runner.d.ts.map +1 -0
- package/lib/types/host/services/worktree/git-runner.js +81 -0
- package/lib/types/host/services/worktree/git.d.ts +94 -0
- package/lib/types/host/services/worktree/git.d.ts.map +1 -0
- package/lib/types/host/services/worktree/git.js +153 -0
- package/lib/types/host/services/worktree/http.d.ts +12 -0
- package/lib/types/host/services/worktree/http.d.ts.map +1 -0
- package/lib/types/host/services/worktree/http.js +34 -0
- package/lib/types/host/services/worktree/index.d.ts +38 -0
- package/lib/types/host/services/worktree/index.d.ts.map +1 -0
- package/lib/types/host/services/worktree/index.js +78 -0
- package/lib/types/host/services/worktree/lane-tool.d.ts +22 -0
- package/lib/types/host/services/worktree/lane-tool.d.ts.map +1 -0
- package/lib/types/host/services/worktree/lane-tool.js +92 -0
- package/lib/types/host/services/worktree/manager.d.ts +410 -0
- package/lib/types/host/services/worktree/manager.d.ts.map +1 -0
- package/lib/types/host/services/worktree/manager.js +1485 -0
- package/lib/types/host/services/worktree/model-override.d.ts +20 -0
- package/lib/types/host/services/worktree/model-override.d.ts.map +1 -0
- package/lib/types/host/services/worktree/model-override.js +35 -0
- package/lib/types/host/services/worktree/routes.d.ts +50 -0
- package/lib/types/host/services/worktree/routes.d.ts.map +1 -0
- package/lib/types/host/services/worktree/routes.js +695 -0
- package/lib/types/host/services/worktree/run-command.d.ts +26 -0
- package/lib/types/host/services/worktree/run-command.d.ts.map +1 -0
- package/lib/types/host/services/worktree/run-command.js +36 -0
- package/lib/types/host/services/worktree/session-lane/manager.d.ts +109 -0
- package/lib/types/host/services/worktree/session-lane/manager.d.ts.map +1 -0
- package/lib/types/host/services/worktree/session-lane/manager.js +172 -0
- package/lib/types/host/services/worktree/workspace-model-routes.d.ts +21 -0
- package/lib/types/host/services/worktree/workspace-model-routes.d.ts.map +1 -0
- package/lib/types/host/services/worktree/workspace-model-routes.js +198 -0
- package/lib/types/host/services/worktree/workspace-model.d.ts +48 -0
- package/lib/types/host/services/worktree/workspace-model.d.ts.map +1 -0
- package/lib/types/host/services/worktree/workspace-model.js +113 -0
- package/lib/types/index.d.ts +47 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +52 -0
- package/lib/types/invariant.d.ts +4 -0
- package/lib/types/invariant.d.ts.map +1 -0
- package/lib/types/invariant.js +3 -0
- package/package.json +153 -3
- package/presets/code-vibe/THIRD_PARTY_NOTICES.md +55 -0
- package/presets/code-vibe/skills/UPSTREAM.md +104 -0
- package/presets/code-vibe/skills/agent-experience/SKILL.md +15 -0
- package/presets/code-vibe/skills/agent-operation/SKILL.md +43 -0
- package/presets/code-vibe/skills/code-review/SKILL.md +45 -0
- package/presets/code-vibe/skills/dsh-ci-test-reliability/SKILL.md +133 -0
- package/presets/code-vibe/skills/dsh-ci-test-reliability/references/ci-flake-diagnosis.md +60 -0
- package/presets/code-vibe/skills/dsh-find-simplifications/SKILL.md +69 -0
- package/presets/code-vibe/skills/dsh-find-simplifications/references/historical-patterns.md +45 -0
- package/presets/code-vibe/skills/dsh-merging-stacked-prs/SKILL.md +129 -0
- package/presets/code-vibe/skills/dsh-prose-standard/SKILL.md +83 -0
- package/presets/code-vibe/skills/dsh-prose-standard/references/examples.md +169 -0
- package/presets/code-vibe/skills/dsh-speed-up-perf/SKILL.md +94 -0
- package/presets/code-vibe/skills/dsh-trim-cot-leakage/SKILL.md +47 -0
- package/presets/code-vibe/skills/dsh-trim-cot-leakage/references/examples.md +275 -0
- package/presets/code-vibe/skills/dsh-trim-cot-leakage/references/recall-batteries.md +52 -0
- package/presets/code-vibe/skills/frontend-design/SKILL.md +60 -0
- package/presets/code-vibe/skills/frontend-design/references/critique-format.md +35 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/LOAD-MAP.md +81 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/README.md +53 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/anchor.md +51 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/audit/ai-tells.md +59 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/audit/web-interface.md +14 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/change-control.md +62 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/copy.md +65 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/craft-knobs.md +61 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/debug-playbook.md +37 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/exemplars/README.md +64 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/plan-architecture.checklist.json +13 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/product-judgment.md +113 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/system-architecture.md +108 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/README.md +26 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/color-roles.md +49 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/motion.md +51 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/scale.md +89 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/ui-page-gate.md +61 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/ui-surface.checklist.json +49 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/ux.md +76 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/visual.md +52 -0
- package/presets/code-vibe/skills/frontend-design/references/perceptible-path.md +27 -0
- package/presets/code-vibe/skills/frontend-design/references/product-package.md +80 -0
- package/presets/code-vibe/skills/frontend-design/references/scheme-antipatterns.md +21 -0
- package/presets/code-vibe/skills/quality-review/SKILL.md +57 -0
- package/presets/code-vibe/skills/quality-review/references/bounded-verify.md +37 -0
- package/presets/code-vibe/skills/quality-review/references/browser-verify.md +81 -0
- package/presets/code-vibe/skills/quality-review/references/evidence-contract.md +194 -0
- package/presets/code-vibe/skills/quality-review/references/falsify-checklist.md +44 -0
- package/presets/code-vibe/skills/quality-review/references/human-acceptance-pack.md +68 -0
- package/presets/code-vibe/skills/quality-review/references/product-regression.md +51 -0
- package/presets/code-vibe/skills/quality-review/references/ux-standards.md +37 -0
- package/presets/code-vibe/skills/quality-review/references/ux-walkthrough.md +49 -0
- package/presets/code-vibe/skills/quality-review/references/validation-report.md +22 -0
- package/presets/code-vibe/skills/quality-review/references/verification-loop.md +95 -0
- package/presets/code-vibe/skills/quality-review/references/version-acceptance-matrix.md +131 -0
- package/presets/code-vibe/skills/record-browser-gif/SKILL.md +174 -0
- package/presets/code-vibe/skills/record-browser-gif/scripts/encode_gif.py +337 -0
- package/presets/code-vibe/skills/record-browser-gif/scripts/test_encode_gif.py +103 -0
- package/presets/code-vibe/skills/wish-programming/SKILL.md +150 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/arch-reviewer.md +26 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/design-reviewer.md +32 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/pm-reviewer.md +26 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/qa-reviewer.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/security-reviewer.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/sre-reviewer.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/ux-adversary.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/arch.md.tpl +51 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/brief.md.tpl +36 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/confirmation-pack.md +54 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/design-spec.md.tpl +49 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/module-readme.md +37 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/product.md.tpl +74 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/requirements.md.tpl +31 -0
- package/presets/code-vibe/skills/wish-programming/references/workflow-template.md +122 -0
- package/presets/code-vibe/skills/wish-programming/scripts/MANIFEST.sha256 +11 -0
- package/presets/code-vibe/skills/wish-programming/scripts/check_spec.py +416 -0
- package/presets/code-vibe/skills/wish-programming/scripts/check_whitelist.py +193 -0
- package/presets/code-vibe/skills/wish-programming/scripts/coverage_check.py +199 -0
- package/presets/code-vibe/skills/wish-programming/scripts/gate-lock.sh +46 -0
- package/presets/code-vibe/skills/wish-programming/scripts/journey.sh +281 -0
- package/presets/code-vibe/skills/wish-programming/scripts/project.sh +152 -0
- package/presets/code-vibe/skills/wish-programming/scripts/replay.sh +65 -0
- package/presets/code-vibe/skills/wish-programming/scripts/scan_drift.py +79 -0
- package/presets/code-vibe/skills/wish-programming/scripts/verify.sh +169 -0
- package/presets/code-vibe/skills/wish-programming/scripts/verify_preset_budgets.py +218 -0
- package/presets/code-vibe/skills/wish-programming/scripts/wish.sh +150 -0
- package/presets/code-vibe.patch.yml +325 -0
- package/presets/hiopen.patch.yml +109 -0
- package/src/client/compat.ts +86 -0
- package/src/client/conversation/conversation.module.css +264 -0
- package/src/client/conversation/git-branch.tsx +152 -0
- package/src/client/conversation/git-graph/LICENSE.git-graph +202 -0
- package/src/client/conversation/git-graph/api.ts +85 -0
- package/src/client/conversation/git-graph/branch-chip.tsx +354 -0
- package/src/client/conversation/git-graph/branch-popover.tsx +185 -0
- package/src/client/conversation/git-graph/chip.tsx +47 -0
- package/src/client/conversation/git-graph/create-branch-dialog.tsx +108 -0
- package/src/client/conversation/git-graph/error-copy.ts +50 -0
- package/src/client/conversation/git-graph/git-graph.module.css +792 -0
- package/src/client/conversation/git-graph/graph-dialog.tsx +196 -0
- package/src/client/conversation/git-graph/hero-seat.ts +76 -0
- package/src/client/conversation/git-graph/locales.ts +90 -0
- package/src/client/conversation/git-graph/sse-leader.ts +124 -0
- package/src/client/conversation/index.ts +82 -0
- package/src/client/conversation/selector-context.tsx +24 -0
- package/src/client/conversation/session-lane-chip.tsx +262 -0
- package/src/client/conversation/session-lane-locales.ts +34 -0
- package/src/client/conversation/subagent-model-dom.ts +157 -0
- package/src/client/conversation/subagent-model.ts +198 -0
- package/src/client/conversation/worktree/api.ts +283 -0
- package/src/client/conversation/worktree/dialogs/DeleteWorktreeDialog.tsx +111 -0
- package/src/client/conversation/worktree/dialogs/PrCreateDialog.tsx +114 -0
- package/src/client/conversation/worktree/lane-binding.ts +77 -0
- package/src/client/conversation/worktree/lane-menu.tsx +247 -0
- package/src/client/conversation/worktree/lane-open.ts +204 -0
- package/src/client/conversation/worktree/lane-workspace-sweeper.ts +136 -0
- package/src/client/conversation/worktree/lifecycle.ts +75 -0
- package/src/client/conversation/worktree/locales.ts +97 -0
- package/src/client/conversation/worktree/semantic.ts +10 -0
- package/src/client/conversation/worktree/worktree.module.css +70 -0
- package/src/client/css-modules.d.ts +8 -0
- package/src/client/index.ts +58 -0
- package/src/client/lark-inbox/i18n.ts +125 -0
- package/src/client/lark-inbox/lark-wizard.module.css +88 -0
- package/src/client/lark-inbox/wizard.tsx +211 -0
- package/src/client/notify/i18n.ts +93 -0
- package/src/client/settings/family-scope.ts +45 -0
- package/src/client/settings/lark-inbox.tsx +319 -0
- package/src/client/settings/notify.tsx +288 -0
- package/src/client/settings/primitives-0.2.ts +148 -0
- package/src/client/settings/settings-shell.module.css +56 -0
- package/src/client/sidebar/RenderBoundary.tsx +17 -0
- package/src/client/sidebar/agent-browser.tsx +114 -0
- package/src/client/sidebar/diff-view.tsx +314 -0
- package/src/client/sidebar/git-workbench.tsx +700 -0
- package/src/client/sidebar/icons.tsx +23 -0
- package/src/client/sidebar/index.ts +28 -0
- package/src/client/sidebar/native-panels.tsx +149 -0
- package/src/client/sidebar/page-shell.module.css +96 -0
- package/src/client/sidebar/page-shell.tsx +86 -0
- package/src/client/sidebar/panels/memoir/api.ts +300 -0
- package/src/client/sidebar/panels/memoir/controller.ts +47 -0
- package/src/client/sidebar/panels/memoir/cwd.ts +140 -0
- package/src/client/sidebar/panels/memoir/i18n.ts +300 -0
- package/src/client/sidebar/panels/memoir/panel-activation.ts +42 -0
- package/src/client/sidebar/panels/memoir/panel.tsx +869 -0
- package/src/client/sidebar/panels/memoir/styles.ts +776 -0
- package/src/client/sidebar/panels/memoir/types.ts +7 -0
- package/src/client/sidebar/panels/ssh/ClusterTab.tsx +123 -0
- package/src/client/sidebar/panels/ssh/HostFormDialog.tsx +243 -0
- package/src/client/sidebar/panels/ssh/HostsTab.tsx +290 -0
- package/src/client/sidebar/panels/ssh/SshPanel.tsx +76 -0
- package/src/client/sidebar/panels/ssh/TerminalTab.tsx +290 -0
- package/src/client/sidebar/panels/ssh/TransferTab.tsx +232 -0
- package/src/client/sidebar/panels/ssh/TunnelsTab.tsx +204 -0
- package/src/client/sidebar/panels/ssh/api.ts +388 -0
- package/src/client/sidebar/panels/ssh/controller.ts +48 -0
- package/src/client/sidebar/panels/ssh/helpers.ts +70 -0
- package/src/client/sidebar/panels/ssh/locales.ts +318 -0
- package/src/client/sidebar/panels/ssh/panel.module.css +801 -0
- package/src/client/sidebar/panels/ssh/xterm.css.ts +2 -0
- package/src/client/sidebar/right-pane-i18n.ts +243 -0
- package/src/client/sidebar/right-pane.tsx +156 -0
- package/src/client/sidebar/scope.ts +54 -0
- package/src/client/sidebar/sidebar-header.module.css +72 -0
- package/src/client/sidebar/sidebar.module.css +619 -0
- package/src/client/trust.ts +187 -0
- package/src/client/ui-icons.ts +35 -0
- package/src/core/git-graph/commands.ts +107 -0
- package/src/core/git-graph/protocol.ts +238 -0
- package/src/core/index.ts +2 -0
- package/src/core/lark-inbox/gating.ts +35 -0
- package/src/core/lark-inbox/queue.ts +100 -0
- package/src/core/memoir/protocol.ts +46 -0
- package/src/core/no-browser-auth/contract.ts +25 -0
- package/src/core/notify/contract.ts +236 -0
- package/src/core/notify/feed.ts +235 -0
- package/src/core/playwright-sessions/contracts.ts +143 -0
- package/src/core/playwright-sessions/control.ts +33 -0
- package/src/core/playwright-sessions/index.ts +3 -0
- package/src/core/playwright-sessions/names.ts +83 -0
- package/src/core/playwright-sessions/schema.ts +102 -0
- package/src/core/playwright-sessions/wire.ts +142 -0
- package/src/core/remote-access/paths.ts +23 -0
- package/src/core/remote-web-ui/security.ts +171 -0
- package/src/core/right-pane/protocol.ts +94 -0
- package/src/core/schedule-mode/index.ts +6 -0
- package/src/core/schedule-mode/native.ts +105 -0
- package/src/core/schedule-mode/types.ts +182 -0
- package/src/core/schedule-mode/view.ts +66 -0
- package/src/core/ssh/protocol.ts +212 -0
- package/src/core/subagent-model/badges.ts +161 -0
- package/src/core/worktree/invariant.ts +101 -0
- package/src/core/worktree/manifest.ts +135 -0
- package/src/core/worktree/paths.ts +123 -0
- package/src/core/worktree/pr-create.ts +157 -0
- package/src/core/worktree/protocol.ts +7 -0
- package/src/core/worktree/types.ts +317 -0
- package/src/core/worktree/workspace-model.ts +61 -0
- package/src/host/services/access-trust/index.ts +127 -0
- package/src/host/services/access-trust/trust.ts +189 -0
- package/src/host/services/codex-bridge/bridge.ts +392 -0
- package/src/host/services/codex-bridge/codex-auth.ts +352 -0
- package/src/host/services/codex-bridge/dsh-integration.ts +169 -0
- package/src/host/services/codex-bridge/http.ts +105 -0
- package/src/host/services/codex-bridge/index.ts +154 -0
- package/src/host/services/codex-bridge/loopback.ts +63 -0
- package/src/host/services/codex-bridge/routes.ts +143 -0
- package/src/host/services/family-config.ts +224 -0
- package/src/host/services/family-namespaces.ts +39 -0
- package/src/host/services/git-graph/index.ts +11 -0
- package/src/host/services/git-graph/routes.ts +212 -0
- package/src/host/services/git-graph/service.ts +305 -0
- package/src/host/services/index.ts +94 -0
- package/src/host/services/lark-inbox/config.ts +66 -0
- package/src/host/services/lark-inbox/gateway.ts +184 -0
- package/src/host/services/lark-inbox/host-routes.ts +113 -0
- package/src/host/services/lark-inbox/inbox-store.ts +160 -0
- package/src/host/services/lark-inbox/index.ts +141 -0
- package/src/host/services/lark-inbox/tools.ts +124 -0
- package/src/host/services/lark-inbox/wizard.ts +206 -0
- package/src/host/services/lifecycle.ts +107 -0
- package/src/host/services/memoir/index.ts +80 -0
- package/src/host/services/memoir/routes.ts +346 -0
- package/src/host/services/memoir/settings.ts +122 -0
- package/src/host/services/memoir/store.ts +132 -0
- package/src/host/services/memoir/tools.ts +158 -0
- package/src/host/services/no-browser-auth/index.ts +70 -0
- package/src/host/services/notify/config.ts +178 -0
- package/src/host/services/notify/feishu-sender.ts +220 -0
- package/src/host/services/notify/host-routes.ts +133 -0
- package/src/host/services/notify/index.ts +305 -0
- package/src/host/services/playwright-sessions/child.ts +251 -0
- package/src/host/services/playwright-sessions/controller.ts +102 -0
- package/src/host/services/playwright-sessions/index.ts +146 -0
- package/src/host/services/playwright-sessions/live-view.ts +225 -0
- package/src/host/services/playwright-sessions/manager.ts +239 -0
- package/src/host/services/playwright-sessions/profile-gc.ts +97 -0
- package/src/host/services/playwright-sessions/routes.ts +90 -0
- package/src/host/services/remote-access/boot-scripts.ts +118 -0
- package/src/host/services/remote-access/index.ts +62 -0
- package/src/host/services/remote-access/routes.ts +137 -0
- package/src/host/services/remote-web-ui/index.ts +344 -0
- package/src/host/services/remote-web-ui/server-mode/accounts.ts +423 -0
- package/src/host/services/remote-web-ui/server-mode/cookie.ts +57 -0
- package/src/host/services/remote-web-ui/server-mode/dsh-home.ts +42 -0
- package/src/host/services/remote-web-ui/server-mode/external-auth.ts +296 -0
- package/src/host/services/remote-web-ui/server-mode/fence.ts +27 -0
- package/src/host/services/remote-web-ui/server-mode/gateway-routes.ts +797 -0
- package/src/host/services/remote-web-ui/server-mode/gateway.ts +684 -0
- package/src/host/services/remote-web-ui/server-mode/http.ts +105 -0
- package/src/host/services/remote-web-ui/server-mode/integrated-auth.ts +118 -0
- package/src/host/services/remote-web-ui/server-mode/lan.ts +19 -0
- package/src/host/services/remote-web-ui/server-mode/loopback.ts +63 -0
- package/src/host/services/remote-web-ui/server-mode/posture.ts +154 -0
- package/src/host/services/remote-web-ui/server-mode/roles.ts +51 -0
- package/src/host/services/remote-web-ui/server-mode/server-boot.ts +38 -0
- package/src/host/services/remote-web-ui/server-mode/sessions.ts +347 -0
- package/src/host/services/remote-web-ui/server.ts +591 -0
- package/src/host/services/resources.ts +78 -0
- package/src/host/services/right-pane/browser.ts +106 -0
- package/src/host/services/right-pane/index.ts +117 -0
- package/src/host/services/right-pane/wire.ts +10 -0
- package/src/host/services/schedule-mode/config.ts +26 -0
- package/src/host/services/schedule-mode/engine.ts +689 -0
- package/src/host/services/schedule-mode/index.ts +214 -0
- package/src/host/services/schedule-mode/routes.ts +130 -0
- package/src/host/services/schedule-mode/session-create.ts +36 -0
- package/src/host/services/schedule-mode/store.ts +304 -0
- package/src/host/services/schedule-mode/tools.ts +154 -0
- package/src/host/services/ssh/engine.ts +675 -0
- package/src/host/services/ssh/host-keys.ts +99 -0
- package/src/host/services/ssh/index.ts +84 -0
- package/src/host/services/ssh/routes.ts +442 -0
- package/src/host/services/ssh/store.ts +310 -0
- package/src/host/services/ssh/terminal-ws.ts +157 -0
- package/src/host/services/ssh/tools.ts +279 -0
- package/src/host/services/web-render/contracts.ts +138 -0
- package/src/host/services/web-render/index.ts +112 -0
- package/src/host/services/web-render/provider.ts +282 -0
- package/src/host/services/web-search-anthropic/contracts.ts +163 -0
- package/src/host/services/web-search-anthropic/index.ts +152 -0
- package/src/host/services/web-search-anthropic/provider.ts +325 -0
- package/src/host/services/worktree/git-runner.ts +124 -0
- package/src/host/services/worktree/git.ts +183 -0
- package/src/host/services/worktree/http.ts +36 -0
- package/src/host/services/worktree/index.ts +92 -0
- package/src/host/services/worktree/lane-tool.ts +100 -0
- package/src/host/services/worktree/manager.ts +1553 -0
- package/src/host/services/worktree/model-override.ts +43 -0
- package/src/host/services/worktree/routes.ts +570 -0
- package/src/host/services/worktree/run-command.ts +66 -0
- package/src/host/services/worktree/session-lane/manager.ts +228 -0
- package/src/host/services/worktree/workspace-model-routes.ts +156 -0
- package/src/host/services/worktree/workspace-model.ts +132 -0
- package/src/index.ts +84 -0
- package/src/invariant.ts +4 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path and naming helpers shared between the host manager and the browser
|
|
3
|
+
* side (browser side uses these for display only — it never writes to the
|
|
4
|
+
* filesystem). All paths are POSIX; the host normalizes the separators at
|
|
5
|
+
* the git boundary.
|
|
6
|
+
* @module @dsh-cove/dsh-client-ui-worktree/core
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { isValidBranchName } from './invariant.ts'
|
|
10
|
+
|
|
11
|
+
/** The directory inside each repo that owns linked worktrees. */
|
|
12
|
+
export const WORKSPACE_DIR = '.dsh/workspaces'
|
|
13
|
+
|
|
14
|
+
/** The manifest filename inside `WORKSPACE_DIR`. */
|
|
15
|
+
export const MANIFEST_FILENAME = 'manifest.json'
|
|
16
|
+
|
|
17
|
+
/** The "main" pseudo-worktree name — never a real on-disk worktree. */
|
|
18
|
+
export const MAIN_WORKTREE = '<main>'
|
|
19
|
+
|
|
20
|
+
/** Compose `<repo>/.dsh/workspaces` for a given repo path. */
|
|
21
|
+
export function worktreeRoot(repoPath: string): string {
|
|
22
|
+
if (typeof repoPath !== 'string' || repoPath.length === 0) {
|
|
23
|
+
throw new TypeError('repoPath must be a non-empty string')
|
|
24
|
+
}
|
|
25
|
+
const trimmed = stripTrailingSeparator(repoPath)
|
|
26
|
+
return `${trimmed}/${WORKSPACE_DIR}`
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** Compose `<repo>/.dsh/workspaces/<branch>` for a given repo + branch. */
|
|
30
|
+
export function worktreeDir(repoPath: string, branch: string): string {
|
|
31
|
+
if (!isValidBranchName(branch)) {
|
|
32
|
+
throw new Error(`invalid branch name: ${JSON.stringify(branch)}`)
|
|
33
|
+
}
|
|
34
|
+
return `${worktreeRoot(repoPath)}/${branch}`
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Whether a path is one of this plugin's lane directories
|
|
39
|
+
* (`<repo>/.dsh/workspaces/<branch>`).
|
|
40
|
+
*
|
|
41
|
+
* Used to keep the lane lifecycle's bookkeeping — retiring a lane's workspace
|
|
42
|
+
* registration once its conversations are archived — away from workspaces the
|
|
43
|
+
* user registered themselves. Workspace ids are opaque, so the path is the only
|
|
44
|
+
* thing that identifies a lane in a workspace list.
|
|
45
|
+
*/
|
|
46
|
+
export function isLaneDirectory(path: string): boolean {
|
|
47
|
+
if (typeof path !== 'string' || path === '') return false
|
|
48
|
+
return path.replace(/\\/g, '/').includes(`/${WORKSPACE_DIR}/`)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Strip a single trailing `/` (defensive only — POSIX paths usually lack it). */
|
|
52
|
+
function stripTrailingSeparator(path: string): string {
|
|
53
|
+
return path.endsWith('/') && path.length > 1 ? path.slice(0, -1) : path
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Short sha (first 7 chars) — same display rule as `git rev-parse --short`. */
|
|
57
|
+
export function shortSha(sha: string | null | undefined): string | null {
|
|
58
|
+
if (typeof sha !== 'string' || sha.length === 0) return null
|
|
59
|
+
return sha.length > 7 ? sha.slice(0, 7) : sha
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Truncate a path for the sidebar row (replace the leading `<repo>/.dsh/`
|
|
64
|
+
* with a visual marker so the full path is still in the title attr).
|
|
65
|
+
*/
|
|
66
|
+
export function displayPath(absolute: string): string {
|
|
67
|
+
const marker = `/${WORKSPACE_DIR}/`
|
|
68
|
+
const idx = absolute.indexOf(marker)
|
|
69
|
+
if (idx < 0) return absolute
|
|
70
|
+
return `.dsh/workspaces/${absolute.slice(idx + marker.length)}`
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Whether `target` is `root` itself or lies beneath it (POSIX, segment-aware).
|
|
75
|
+
*
|
|
76
|
+
* Applied to keep mutations inside the workspaces the host has registered: a
|
|
77
|
+
* plain string prefix would let `/repo-other` read as "inside `/repo`".
|
|
78
|
+
*/
|
|
79
|
+
export function isInsidePath(root: string, target: string): boolean {
|
|
80
|
+
const posix = (value: string): string => value.replace(/\\/g, '/')
|
|
81
|
+
const base = posix(root)
|
|
82
|
+
const candidate = posix(target)
|
|
83
|
+
const trimmedBase = base.length > 1 && base.endsWith('/') ? base.slice(0, -1) : base
|
|
84
|
+
const trimmed = candidate.length > 1 && candidate.endsWith('/') ? candidate.slice(0, -1) : candidate
|
|
85
|
+
if (trimmedBase === '/' || trimmedBase === '') return trimmed.startsWith('/')
|
|
86
|
+
return trimmed === trimmedBase || trimmed.startsWith(`${trimmedBase}/`)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Compare two paths for equality after normalization (POSIX separators). */
|
|
90
|
+
export function samePath(a: string, b: string): boolean {
|
|
91
|
+
if (a === b) return true
|
|
92
|
+
const na = a.replace(/\\/g, '/')
|
|
93
|
+
const nb = b.replace(/\\/g, '/')
|
|
94
|
+
if (na === nb) return true
|
|
95
|
+
const sa = na.endsWith('/') && na.length > 1 ? na.slice(0, -1) : na
|
|
96
|
+
const sb = nb.endsWith('/') && nb.length > 1 ? nb.slice(0, -1) : nb
|
|
97
|
+
return sa === sb
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Parse a GitHub remote URL into `{ owner, repo }`. Accepts the https
|
|
102
|
+
* (`https://github.com/owner/repo[.git]`), ssh scp-like
|
|
103
|
+
* (`git@github.com:owner/repo.git`), and ssh URL (`ssh://git@github.com/owner/repo`)
|
|
104
|
+
* spellings. Returns null for non-GitHub remotes so the caller can fall
|
|
105
|
+
* back to the compare-URL path.
|
|
106
|
+
*/
|
|
107
|
+
export function githubOwnerRepo(remoteUrl: string): { owner: string; repo: string } | null {
|
|
108
|
+
const match = remoteUrl.trim().match(/(?:github\.com[/:])([^/]+)\/([^/.]+?)(?:\.git)?$/)
|
|
109
|
+
if (match === null) return null
|
|
110
|
+
const [, owner, repo] = match
|
|
111
|
+
if (owner === undefined || repo === undefined || owner === '' || repo === '') return null
|
|
112
|
+
return { owner, repo }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* GitHub compare URL for one PR candidate: base...head with the editor
|
|
117
|
+
* expanded. Returns null when the remote is not a GitHub URL.
|
|
118
|
+
*/
|
|
119
|
+
export function githubCompareUrl(remoteUrl: string, base: string, branch: string): string | null {
|
|
120
|
+
const parsed = githubOwnerRepo(remoteUrl)
|
|
121
|
+
if (parsed === null) return null
|
|
122
|
+
return `https://github.com/${parsed.owner}/${parsed.repo}/compare/${encodeURIComponent(base)}...${encodeURIComponent(branch)}?expand=1`
|
|
123
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull-request creation wire contract and pure argv/input helpers.
|
|
3
|
+
*
|
|
4
|
+
* Host execution lives in the worktree service. This module stays runtime-neutral
|
|
5
|
+
* so both host and client programs compile the same request/result contract.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
export interface PrCreateInput {
|
|
9
|
+
/** Any path inside the project. `repoPath` remains accepted by the host as a legacy alias. */
|
|
10
|
+
cwd?: string
|
|
11
|
+
/** Local branch to publish. `name` remains accepted by the host as a legacy alias. */
|
|
12
|
+
branch?: string
|
|
13
|
+
/** Pull-request title. Defaults to the branch for legacy callers. */
|
|
14
|
+
title?: string
|
|
15
|
+
/** Pull-request body. Defaults to an empty body for legacy callers. */
|
|
16
|
+
body?: string
|
|
17
|
+
/** Target branch. `baseRef` remains accepted by the host as a legacy alias. */
|
|
18
|
+
base?: string
|
|
19
|
+
/** GitHub head selector, usually a branch or `owner:branch`. Defaults to `branch`. */
|
|
20
|
+
head?: string
|
|
21
|
+
/** Create the pull request as a draft. */
|
|
22
|
+
draft?: boolean
|
|
23
|
+
/** Legacy project-root field. */
|
|
24
|
+
repoPath?: string
|
|
25
|
+
/** Legacy worktree-name field. */
|
|
26
|
+
name?: string
|
|
27
|
+
/** Legacy base-branch field. */
|
|
28
|
+
baseRef?: string
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface PrCreateResult {
|
|
32
|
+
url: string
|
|
33
|
+
number: number
|
|
34
|
+
/** Legacy result field retained for the previous browser client. */
|
|
35
|
+
prUrl: string
|
|
36
|
+
/** Legacy discriminator: gh creates the pull request through GitHub's API. */
|
|
37
|
+
method: 'api'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type PrCreateErrorCode =
|
|
41
|
+
| 'invalid-input'
|
|
42
|
+
| 'gh-not-installed'
|
|
43
|
+
| 'gh-not-authenticated'
|
|
44
|
+
| 'pr-already-exists'
|
|
45
|
+
| 'timeout'
|
|
46
|
+
| 'gh-failed'
|
|
47
|
+
| 'invalid-gh-response'
|
|
48
|
+
|
|
49
|
+
export interface NormalizedPrCreateInput {
|
|
50
|
+
cwd: string
|
|
51
|
+
branch: string
|
|
52
|
+
title: string
|
|
53
|
+
body: string
|
|
54
|
+
base?: string
|
|
55
|
+
head: string
|
|
56
|
+
draft: boolean
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export type PrCreateInputValidation =
|
|
60
|
+
| { ok: true; value: NormalizedPrCreateInput }
|
|
61
|
+
| { ok: false; message: string }
|
|
62
|
+
|
|
63
|
+
const MAX_TITLE_LENGTH = 256
|
|
64
|
+
const MAX_BODY_LENGTH = 64 * 1024
|
|
65
|
+
|
|
66
|
+
/** Git's branch-name restrictions, without invoking a subprocess. */
|
|
67
|
+
export function isSafeBranchName(value: string): boolean {
|
|
68
|
+
if (value === '' || value.length > 255 || value === '@' || value.startsWith('-')) return false
|
|
69
|
+
if (/\s|[~^:?*\\\[\x00-\x1f\x7f]/u.test(value)) return false
|
|
70
|
+
if (value.includes('..') || value.includes('@{') || value.includes('//')) return false
|
|
71
|
+
if (value.startsWith('/') || value.endsWith('/') || value.startsWith('.') || value.endsWith('.')) return false
|
|
72
|
+
if (value.endsWith('.lock')) return false
|
|
73
|
+
return value.split('/').every(part => part !== '' && !part.startsWith('.') && !part.endsWith('.'))
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** GitHub accepts either a branch or `owner:branch` for --head. */
|
|
77
|
+
export function isSafeHead(value: string): boolean {
|
|
78
|
+
const colon = value.indexOf(':')
|
|
79
|
+
if (colon === -1) return isSafeBranchName(value)
|
|
80
|
+
if (colon === 0 || colon !== value.lastIndexOf(':')) return false
|
|
81
|
+
const owner = value.slice(0, colon)
|
|
82
|
+
const branch = value.slice(colon + 1)
|
|
83
|
+
return /^[A-Za-z0-9_.-]+$/u.test(owner) && isSafeBranchName(branch)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Normalize current and legacy request fields, rejecting malformed or unsafe values. */
|
|
87
|
+
export function normalizePrCreateInput(input: PrCreateInput): PrCreateInputValidation {
|
|
88
|
+
const cwdValue = input.cwd ?? input.repoPath
|
|
89
|
+
const branchValue = input.branch ?? input.name
|
|
90
|
+
const baseValue = input.base ?? input.baseRef
|
|
91
|
+
|
|
92
|
+
if (input.cwd !== undefined && typeof input.cwd !== 'string') return { ok: false, message: 'cwd must be a string' }
|
|
93
|
+
if (input.repoPath !== undefined && typeof input.repoPath !== 'string') return { ok: false, message: 'repoPath must be a string' }
|
|
94
|
+
if (typeof cwdValue !== 'string' || cwdValue.trim() === '') return { ok: false, message: 'cwd is required' }
|
|
95
|
+
if (typeof branchValue !== 'string' || !isSafeBranchName(branchValue.trim())) {
|
|
96
|
+
return { ok: false, message: 'branch is invalid' }
|
|
97
|
+
}
|
|
98
|
+
if (input.branch !== undefined && typeof input.branch !== 'string') return { ok: false, message: 'branch must be a string' }
|
|
99
|
+
if (input.name !== undefined && typeof input.name !== 'string') return { ok: false, message: 'name must be a string' }
|
|
100
|
+
if (input.title !== undefined && typeof input.title !== 'string') return { ok: false, message: 'title must be a string' }
|
|
101
|
+
if (input.body !== undefined && typeof input.body !== 'string') return { ok: false, message: 'body must be a string' }
|
|
102
|
+
if (input.base !== undefined && typeof input.base !== 'string') return { ok: false, message: 'base must be a string' }
|
|
103
|
+
if (input.baseRef !== undefined && typeof input.baseRef !== 'string') return { ok: false, message: 'baseRef must be a string' }
|
|
104
|
+
if (input.head !== undefined && typeof input.head !== 'string') return { ok: false, message: 'head must be a string' }
|
|
105
|
+
if (input.draft !== undefined && typeof input.draft !== 'boolean') return { ok: false, message: 'draft must be a boolean' }
|
|
106
|
+
|
|
107
|
+
const branch = branchValue.trim()
|
|
108
|
+
const title = input.title?.trim() || branch
|
|
109
|
+
const body = input.body ?? ''
|
|
110
|
+
const base = baseValue?.trim()
|
|
111
|
+
const head = input.head?.trim() || branch
|
|
112
|
+
|
|
113
|
+
if (title.length > MAX_TITLE_LENGTH || /[\r\n\x00]/u.test(title)) {
|
|
114
|
+
return { ok: false, message: `title must be one line and at most ${MAX_TITLE_LENGTH} characters` }
|
|
115
|
+
}
|
|
116
|
+
if (body.length > MAX_BODY_LENGTH || body.includes('\0')) {
|
|
117
|
+
return { ok: false, message: `body must not contain NUL and must be at most ${MAX_BODY_LENGTH} characters` }
|
|
118
|
+
}
|
|
119
|
+
if (base !== undefined && (base === '' || !isSafeBranchName(base))) return { ok: false, message: 'base is invalid' }
|
|
120
|
+
if (!isSafeHead(head)) return { ok: false, message: 'head is invalid' }
|
|
121
|
+
|
|
122
|
+
return {
|
|
123
|
+
ok: true,
|
|
124
|
+
value: {
|
|
125
|
+
cwd: cwdValue.trim(),
|
|
126
|
+
branch,
|
|
127
|
+
title,
|
|
128
|
+
body,
|
|
129
|
+
...(base === undefined ? {} : { base }),
|
|
130
|
+
head,
|
|
131
|
+
draft: input.draft === true,
|
|
132
|
+
},
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** Build an argv-only GitHub CLI invocation. Values never pass through a shell. */
|
|
137
|
+
export function ghPrCreateArgv(input: Omit<NormalizedPrCreateInput, 'cwd'>): string[] {
|
|
138
|
+
const argv = ['pr', 'create', '--title', input.title, '--body', input.body, '--head', input.head]
|
|
139
|
+
if (input.base !== undefined) argv.push('--base', input.base)
|
|
140
|
+
if (input.draft) argv.push('--draft')
|
|
141
|
+
return argv
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/** Extract the PR URL and numeric id from `gh pr create` output. */
|
|
145
|
+
export function parseGhPrCreateOutput(stdout: string): { url: string; number: number } | undefined {
|
|
146
|
+
const match = stdout.match(/https?:\/\/[^\s]+\/pull\/(\d+)(?:\b|\/)?/u)
|
|
147
|
+
if (match === null) return undefined
|
|
148
|
+
const number = Number(match[1])
|
|
149
|
+
if (!Number.isSafeInteger(number) || number <= 0) return undefined
|
|
150
|
+
try {
|
|
151
|
+
const url = new URL(match[0].replace(/[),.;]+$/u, ''))
|
|
152
|
+
if (url.protocol !== 'https:' && url.protocol !== 'http:') return undefined
|
|
153
|
+
return { url: url.href.replace(/\/$/u, ''), number }
|
|
154
|
+
} catch {
|
|
155
|
+
return undefined
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain types shared between the host half and the browser half. Anything
|
|
3
|
+
* that crosses the HTTP boundary lands here first so the JSON contract is
|
|
4
|
+
* one source of truth.
|
|
5
|
+
*
|
|
6
|
+
* The plugin deliberately mirrors the official `ctx.workspaces` /
|
|
7
|
+
* `ctx.sessions` client-service shapes where it can — the browser side
|
|
8
|
+
* mirrors the official `@deepseek-ai/dsh-workspace` / `@deepseek-ai/dsh-session` faces
|
|
9
|
+
* (type-only) and aligns its derivation to the same `sessionIds` account
|
|
10
|
+
* the official WorkspaceBrowser uses, so a single source of truth
|
|
11
|
+
* governs session grouping and workspace display across both surfaces.
|
|
12
|
+
* @module @dsh-cove/dsh-client-ui-worktree/core
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
|
16
|
+
import type { WorkspaceId } from '@deepseek-ai/dsh-workspace/types'
|
|
17
|
+
import type { WorktreeErrorCode } from './invariant.ts'
|
|
18
|
+
|
|
19
|
+
// Re-export the branded id types so host modules can import them from
|
|
20
|
+
// `core/types.ts` alongside the rest of the domain model.
|
|
21
|
+
export type { SessionId } from '@deepseek-ai/dsh-session/types'
|
|
22
|
+
export type { WorkspaceId } from '@deepseek-ai/dsh-workspace/types'
|
|
23
|
+
|
|
24
|
+
/** One linked worktree entry as the browser renders it under a project row. */
|
|
25
|
+
export interface WorktreeView {
|
|
26
|
+
/** Stable name (= worktree dir name under `.dsh/workspaces/`). */
|
|
27
|
+
name: string
|
|
28
|
+
/** Absolute filesystem path. */
|
|
29
|
+
path: string
|
|
30
|
+
/** The checked-out branch (or null when detached). */
|
|
31
|
+
branch: string | null
|
|
32
|
+
/** HEAD sha (short) when known. */
|
|
33
|
+
head: string | null
|
|
34
|
+
/** True when the worktree directory exists on disk. */
|
|
35
|
+
exists: boolean
|
|
36
|
+
/** DSH workspace id when registered; null when the path is not a workspace. */
|
|
37
|
+
workspaceId: WorkspaceId | null
|
|
38
|
+
/** Session bound to this lane (session-bound lanes only); null otherwise.
|
|
39
|
+
* This binding — not `workspaceId` — is what makes a lane a lane. */
|
|
40
|
+
sessionId: SessionId | null
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** One git project (repo) in the host worktree index. */
|
|
44
|
+
export interface WorktreeProject {
|
|
45
|
+
/** Canonical absolute path of the repository. */
|
|
46
|
+
repoPath: string
|
|
47
|
+
/** Absolute path of the main worktree (== repoPath on a normal repo). */
|
|
48
|
+
mainPath: string
|
|
49
|
+
/** DSH workspace id for the main worktree path, when registered. */
|
|
50
|
+
mainWorkspaceId: WorkspaceId | null
|
|
51
|
+
/** The repository's basename (e.g. `dsh-cove`). */
|
|
52
|
+
name: string
|
|
53
|
+
/** The main worktree's HEAD branch (or null when detached / unknown). */
|
|
54
|
+
mainBranch: string | null
|
|
55
|
+
/** Number of uncommitted files in the main working tree (>=0); null when not probed. */
|
|
56
|
+
dirty: number | null
|
|
57
|
+
/** Linked worktrees under `<repo>/.dsh/workspaces/`. The main worktree is NOT in this list. */
|
|
58
|
+
worktrees: WorktreeView[]
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Host response: the per-repo worktree index for the management panel.
|
|
63
|
+
* Sessions are never carried through the HTTP layer.
|
|
64
|
+
*/
|
|
65
|
+
export interface WorktreeIndex {
|
|
66
|
+
/** Every registered workspace path that resolves to a git repository. */
|
|
67
|
+
projects: WorktreeProject[]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Result shape for worktree mutations returned over HTTP. */
|
|
71
|
+
export interface MutationResult<T = void> {
|
|
72
|
+
ok: true
|
|
73
|
+
value: T
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Domain error shape returned over HTTP (status >= 400). */
|
|
77
|
+
export interface WorktreeErrorView {
|
|
78
|
+
ok: false
|
|
79
|
+
code: WorktreeErrorCode
|
|
80
|
+
message: string
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Discriminated union for HTTP responses. */
|
|
84
|
+
export type WorktreeResponse<T = void> = MutationResult<T> | WorktreeErrorView
|
|
85
|
+
|
|
86
|
+
/** Parameters for `POST /worktree/create`. */
|
|
87
|
+
export interface CreateWorktreeInput {
|
|
88
|
+
/** Repository root (must be a registered workspace). */
|
|
89
|
+
repoPath: string
|
|
90
|
+
/** Branch name (also used as the worktree dir name under `.dsh/workspaces/`).
|
|
91
|
+
* The branch is cut at `base` and checked out in the worktree. */
|
|
92
|
+
branch: string
|
|
93
|
+
/** Optional base commit-ish the new branch starts at; defaults to HEAD. */
|
|
94
|
+
base?: string
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/** Parameters for `POST /worktree/lane/create` — the worktree behind a branch. */
|
|
98
|
+
export interface CreateLaneInput {
|
|
99
|
+
/** Repository root (any directory inside it resolves). */
|
|
100
|
+
repoPath: string
|
|
101
|
+
/** Branch the lane checks out. An existing local branch is ATTACHED (its own
|
|
102
|
+
* worktree is created); otherwise the branch is cut at `base`. */
|
|
103
|
+
branch: string
|
|
104
|
+
/** Base commit-ish for a branch that has to be created; defaults to HEAD. */
|
|
105
|
+
base?: string
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* A prepared lane: the branch's worktree, ready to host the conversation that
|
|
110
|
+
* asked for it.
|
|
111
|
+
*
|
|
112
|
+
* The lane directory is registered as a DSH workspace, and that is a platform
|
|
113
|
+
* requirement rather than a design taste: the registry accounts a session to a
|
|
114
|
+
* workspace only while the session's cwd equals that workspace's path (its
|
|
115
|
+
* `sessionIds` filters by the session's path, and `attachSession` refuses any
|
|
116
|
+
* other cwd), `session.create` takes a workspace id XOR a bare cwd, and a blank
|
|
117
|
+
* conversation that no workspace accounts for renders its composer inert
|
|
118
|
+
* ("choose a workspace to start"). A lane session created with a bare cwd is
|
|
119
|
+
* therefore a conversation the user cannot type into.
|
|
120
|
+
*
|
|
121
|
+
* Ownership still sits with the conversation: the lane is recorded against the
|
|
122
|
+
* session that asked for it (`/worktree/lane/bind`), that binding is what the
|
|
123
|
+
* teardown guards read, and the header chip — not the workspace row — is where
|
|
124
|
+
* its lifecycle lives. Teardown unregisters the workspace with the directory, so
|
|
125
|
+
* the sidebar only carries lanes that are still alive.
|
|
126
|
+
*/
|
|
127
|
+
export interface LaneHandle {
|
|
128
|
+
/** Lane name == branch name. */
|
|
129
|
+
name: string
|
|
130
|
+
/** Checked-out branch. */
|
|
131
|
+
branch: string
|
|
132
|
+
/** Absolute worktree path — the directory a lane session runs in. */
|
|
133
|
+
path: string
|
|
134
|
+
/** Short HEAD of the lane. */
|
|
135
|
+
head: string | null
|
|
136
|
+
/** False when an existing worktree was reused instead of created. */
|
|
137
|
+
created: boolean
|
|
138
|
+
/** The lane's registered workspace, which is how a blank draft is moved onto
|
|
139
|
+
* it; null when the registry refused (the lane still exists on disk, but no
|
|
140
|
+
* conversation can be started in it). */
|
|
141
|
+
workspaceId: WorkspaceId | null
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/** Result of `POST /worktree/lane/create`. */
|
|
145
|
+
export type CreateLaneResult = LaneHandle
|
|
146
|
+
|
|
147
|
+
/** Parameters for `POST /worktree/lane/bind` — attach a created session to its lane. */
|
|
148
|
+
export interface BindLaneInput {
|
|
149
|
+
/** Repository root owning the lane. */
|
|
150
|
+
repoPath: string
|
|
151
|
+
/** Branch the lane cuts (its manifest name). */
|
|
152
|
+
branch: string
|
|
153
|
+
/** Session the platform created on the lane workspace. */
|
|
154
|
+
sessionId: string
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/** Result of `POST /worktree/lane/bind`. */
|
|
158
|
+
export interface BindLaneResult {
|
|
159
|
+
/** The lane after binding (null when it cannot be resolved). */
|
|
160
|
+
lane: LaneView | null
|
|
161
|
+
/** Whether the lane's required permission preset is now applied. */
|
|
162
|
+
permissionPresetApplied: boolean
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/** Parameters for `POST /worktree/lane` — resolve the lane a path/session belongs to. */
|
|
166
|
+
export interface LaneLookupInput {
|
|
167
|
+
/** Absolute path inside the lane (usually the session cwd). */
|
|
168
|
+
path?: string
|
|
169
|
+
/** Session id; the host resolves its cwd when `path` is absent. */
|
|
170
|
+
sessionId?: string
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* One lane as the conversation header chip and the panel render it.
|
|
175
|
+
* `name`/`branch` identify the lane; the status fields mirror
|
|
176
|
+
* `WorktreeStatusView` so a single host probe serves both surfaces.
|
|
177
|
+
*/
|
|
178
|
+
export interface LaneView {
|
|
179
|
+
/** Lane name == branch name. */
|
|
180
|
+
name: string
|
|
181
|
+
/** Checked-out branch (null when detached). */
|
|
182
|
+
branch: string | null
|
|
183
|
+
/** Absolute lane path. */
|
|
184
|
+
path: string
|
|
185
|
+
/** Repository root owning the lane. */
|
|
186
|
+
repoPath: string
|
|
187
|
+
/** True when the lane directory exists on disk. */
|
|
188
|
+
exists: boolean
|
|
189
|
+
/** DSH workspace id when registered. */
|
|
190
|
+
workspaceId: WorkspaceId | null
|
|
191
|
+
/** Session recorded as bound to this lane, when one was created through us. */
|
|
192
|
+
sessionId: SessionId | null
|
|
193
|
+
/** Whether the required lane preset applied; null for older/non-session lanes. */
|
|
194
|
+
permissionPresetApplied: boolean | null
|
|
195
|
+
/** Uncommitted file count (null when the directory is gone). */
|
|
196
|
+
dirty: number | null
|
|
197
|
+
/** Remote-tracking ref for the branch exists after fetch. */
|
|
198
|
+
pushed: boolean
|
|
199
|
+
/** Branch gone from the remote after having been pushed (merged signal). */
|
|
200
|
+
remoteBranchGone: boolean
|
|
201
|
+
/** Branch is merged into its base. */
|
|
202
|
+
merged: boolean
|
|
203
|
+
/** Recorded PR url, when one was created through this plugin. */
|
|
204
|
+
prUrl: string | null
|
|
205
|
+
/** Recorded GitHub PR number. */
|
|
206
|
+
prNumber: number | null
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/** Parameters for `POST /worktree/remove`. */
|
|
210
|
+
export interface RemoveWorktreeInput {
|
|
211
|
+
/** Repository root. */
|
|
212
|
+
repoPath: string
|
|
213
|
+
/** Worktree directory name under `.dsh/workspaces/`. */
|
|
214
|
+
name: string
|
|
215
|
+
/** Pass --force to git so uncommitted changes are dropped. */
|
|
216
|
+
force?: boolean
|
|
217
|
+
/**
|
|
218
|
+
* The conversation asking for the teardown, when it is the lane's own
|
|
219
|
+
* conversation. A live session blocks removal so a running conversation never
|
|
220
|
+
* loses its directory; that interlock must not make a lane the conversation
|
|
221
|
+
* itself sits on unremovable, so the lane's own recorded session may excuse
|
|
222
|
+
* itself (and is archived by the teardown like any other). Any other id —
|
|
223
|
+
* including one the lane does not record — excuses nothing.
|
|
224
|
+
*/
|
|
225
|
+
sessionId?: string
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/** Parameters for `POST /worktree/init`. */
|
|
229
|
+
export interface InitWorktreeInput {
|
|
230
|
+
/** Repository root. */
|
|
231
|
+
repoPath: string
|
|
232
|
+
/** Create the first branch on HEAD (default: `main`). */
|
|
233
|
+
initialBranch?: string
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/** Parameters for `POST /worktree/pr-create`. */
|
|
237
|
+
export interface PrCreateInput {
|
|
238
|
+
/** Repository root (must be a registered workspace). */
|
|
239
|
+
repoPath: string
|
|
240
|
+
/** Worktree name == branch name. */
|
|
241
|
+
name: string
|
|
242
|
+
/** PR target base branch; defaults to the repo's resolved base (manifest
|
|
243
|
+
* `baseBranch`, else the remote default branch, else `main`). */
|
|
244
|
+
baseRef?: string
|
|
245
|
+
/** Optional PR title; defaults to the branch name. */
|
|
246
|
+
title?: string
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/** Result of `POST /worktree/pr-create`. */
|
|
250
|
+
export interface PrCreateResult {
|
|
251
|
+
/** The PR page URL (compare URL when created via 'url', html_url when 'api'). */
|
|
252
|
+
prUrl: string
|
|
253
|
+
/** How the PR was created: compare URL opened in the browser, or the
|
|
254
|
+
* GitHub REST API (requires the `pr.tokenEnv` credential). */
|
|
255
|
+
method: 'url' | 'api'
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/** Parameters for `POST /worktree/status`. */
|
|
259
|
+
export interface StatusInput {
|
|
260
|
+
/** Repository root. */
|
|
261
|
+
repoPath: string
|
|
262
|
+
/** Status for one named worktree only; omit for every linked worktree. */
|
|
263
|
+
name?: string
|
|
264
|
+
/**
|
|
265
|
+
* Probe the remote again instead of answering from the host cache. The
|
|
266
|
+
* explicit "refresh status" action sets it; opening the panel does not,
|
|
267
|
+
* because a status probe runs `git fetch` and `ls-remote` per lane.
|
|
268
|
+
*/
|
|
269
|
+
force?: boolean
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** Per-worktree PR/merge status as the panel renders it. */
|
|
273
|
+
export interface WorktreeStatusView {
|
|
274
|
+
/** Worktree name (== branch name). */
|
|
275
|
+
name: string
|
|
276
|
+
/** Absolute worktree path. */
|
|
277
|
+
path: string
|
|
278
|
+
/** Checked-out branch (null when detached). */
|
|
279
|
+
branch: string | null
|
|
280
|
+
/** True when the remote-tracking ref for the branch exists after fetch. */
|
|
281
|
+
pushed: boolean
|
|
282
|
+
/** True when the branch was pushed before but the remote branch is now gone. */
|
|
283
|
+
remoteBranchGone: boolean
|
|
284
|
+
/** True when the branch is merged into the base (branch gone on remote, or
|
|
285
|
+
* the branch tip is an ancestor of the base tip). */
|
|
286
|
+
merged: boolean
|
|
287
|
+
/** The recorded PR url, when one was created through this plugin. */
|
|
288
|
+
prUrl: string | null
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/** Host response: per-repo PR/merge status index. */
|
|
292
|
+
export interface WorktreeStatusIndex {
|
|
293
|
+
/** Base branch every status was resolved against. */
|
|
294
|
+
baseBranch: string
|
|
295
|
+
worktrees: WorktreeStatusView[]
|
|
296
|
+
/**
|
|
297
|
+
* Candidate branches for dialogs: local branch short names, then remote
|
|
298
|
+
* `origin/*` names with the `origin/` prefix stripped, deduplicated in
|
|
299
|
+
* that order. Serves base-ref / base-commit dropdowns without another
|
|
300
|
+
* round trip (the panel probes one status per repo on open).
|
|
301
|
+
*/
|
|
302
|
+
branches: string[]
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/** Parameters for `POST /worktree/cleanup`. */
|
|
306
|
+
export interface CleanupWorktreeInput {
|
|
307
|
+
/** Repository root. */
|
|
308
|
+
repoPath: string
|
|
309
|
+
/** Worktree directory name under `.dsh/workspaces/`. */
|
|
310
|
+
name: string
|
|
311
|
+
/** Force cleanup even when the branch is not merged (abandons the branch
|
|
312
|
+
* and drops uncommitted changes). */
|
|
313
|
+
force?: boolean
|
|
314
|
+
/** The conversation asking for the teardown, when it is the lane's own
|
|
315
|
+
* conversation; see {@link RemoveWorktreeInput.sessionId}. */
|
|
316
|
+
sessionId?: string
|
|
317
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace-scoped model presets: domain types shared between the host
|
|
3
|
+
* half and the browser half. Everything crossing the HTTP boundary lands
|
|
4
|
+
* here first so the JSON contract is one source of truth.
|
|
5
|
+
*
|
|
6
|
+
* The granularity is **workspace**: a preset is keyed by the canonical
|
|
7
|
+
* workspace directory path (the same value the DSH session header records
|
|
8
|
+
* as `cwd` at session creation). Each workspace — a plain directory or a
|
|
9
|
+
* worktree — carries one `{ provider, model, reasoningEffort? }` selection
|
|
10
|
+
* that overrides the session's otherwise-resolved model from its very first
|
|
11
|
+
* request.
|
|
12
|
+
* @module @dsh-cove/dsh-client-ui-worktree/core/workspace-model
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** One workspace's model preset. `reasoningEffort` is adapter-owned and
|
|
16
|
+
* optional — absent means the selected model's provider default applies. */
|
|
17
|
+
export interface WorkspaceModelPreset {
|
|
18
|
+
/** Registered provider route id. */
|
|
19
|
+
provider: string
|
|
20
|
+
/** Provider-owned model id. */
|
|
21
|
+
model: string
|
|
22
|
+
/** Adapter-owned reasoning effort id, or provider default when absent. */
|
|
23
|
+
reasoningEffort?: string
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** The stored document: a map from canonical workspace path to preset. */
|
|
27
|
+
export type WorkspacePresetMap = Record<string, WorkspaceModelPreset>
|
|
28
|
+
|
|
29
|
+
/** The effective display form a preset may take. */
|
|
30
|
+
export interface EffectiveWorkspaceModel {
|
|
31
|
+
/** Whether the workspace has an explicit preset. */
|
|
32
|
+
preset?: WorkspaceModelPreset
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** A read of one workspace's effective model selection. */
|
|
36
|
+
export interface WorkspaceModelView {
|
|
37
|
+
/** Canonical workspace path the preset is keyed by. */
|
|
38
|
+
path: string
|
|
39
|
+
/** Explicit preset when registered; undefined when none. */
|
|
40
|
+
preset?: WorkspaceModelPreset
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Mutation input: set/clear a preset for one canonical workspace path. */
|
|
44
|
+
export interface SetWorkspaceModelInput {
|
|
45
|
+
/** Canonical workspace path (the preset key). */
|
|
46
|
+
path: string
|
|
47
|
+
/** The preset to store. */
|
|
48
|
+
preset: WorkspaceModelPreset
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/** Domain error shape returned over HTTP (status >= 400). */
|
|
52
|
+
export interface WorkspaceModelErrorView {
|
|
53
|
+
ok: false
|
|
54
|
+
code: 'bad-request' | 'forbidden'
|
|
55
|
+
message: string
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Discriminated union for HTTP responses. */
|
|
59
|
+
export type WorkspaceModelResponse<T = void> =
|
|
60
|
+
| { ok: true; value: T }
|
|
61
|
+
| WorkspaceModelErrorView
|