@dsh-cove/dsh-web-all 0.0.0-stage → 0.4.3
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 +201 -2
- package/README.zh.md +202 -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/subagent-model/model-resolver.d.ts +25 -0
- package/lib/types/core/subagent-model/model-resolver.d.ts.map +1 -0
- package/lib/types/core/subagent-model/model-resolver.js +60 -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/web-search-kaon/contracts.d.ts +114 -0
- package/lib/types/host/services/web-search-kaon/contracts.d.ts.map +1 -0
- package/lib/types/host/services/web-search-kaon/contracts.js +73 -0
- package/lib/types/host/services/web-search-kaon/index.d.ts +50 -0
- package/lib/types/host/services/web-search-kaon/index.d.ts.map +1 -0
- package/lib/types/host/services/web-search-kaon/index.js +114 -0
- package/lib/types/host/services/web-search-kaon/provider.d.ts +111 -0
- package/lib/types/host/services/web-search-kaon/provider.d.ts.map +1 -0
- package/lib/types/host/services/web-search-kaon/provider.js +244 -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,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire contract between the host half (routes.ts) and the browser half
|
|
3
|
+
* (client/api.ts). Pure types only — imported by both halves, bundled into
|
|
4
|
+
* each, no runtime identity to share.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Authentication flavors a host entry may carry. */
|
|
8
|
+
export type SshAuthKind = 'key' | 'password' | 'agent'
|
|
9
|
+
|
|
10
|
+
/** Canonical OpenSSH SHA256 fingerprint (32 bytes, unpadded base64). */
|
|
11
|
+
export function isHostKeyFingerprint(value: unknown): value is string {
|
|
12
|
+
return typeof value === 'string' && /^SHA256:[A-Za-z0-9+/]{42}[AEIMQUYcgkosw048]$/.test(value)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** One stored host entry (the $DSH_HOME/dsh-ssh.json store shape). */
|
|
16
|
+
export interface SshHostEntry {
|
|
17
|
+
/** Stable, user-chosen identifier used by every operation. */
|
|
18
|
+
alias: string
|
|
19
|
+
/** Hostname or IP of the target. */
|
|
20
|
+
host: string
|
|
21
|
+
/** Explicit, out-of-band verified SHA256 pin; otherwise use ~/.ssh/known_hosts. */
|
|
22
|
+
hostKeyFingerprint?: string
|
|
23
|
+
/** SSH port (default 22). */
|
|
24
|
+
port: number
|
|
25
|
+
/** Login user. */
|
|
26
|
+
user: string
|
|
27
|
+
/** Authentication. */
|
|
28
|
+
auth: {
|
|
29
|
+
kind: SshAuthKind
|
|
30
|
+
/** Absolute path to the private key for 'key' auth. */
|
|
31
|
+
keyPath?: string
|
|
32
|
+
/** Passphrase for an encrypted key. */
|
|
33
|
+
passphrase?: string
|
|
34
|
+
/** Password for 'password' auth. */
|
|
35
|
+
password?: string
|
|
36
|
+
/**
|
|
37
|
+
* ssh-agent endpoint for 'agent' auth. A socket path, the special value
|
|
38
|
+
* 'pageant' (PuTTY Pageant on Windows), or undefined for auto-detect
|
|
39
|
+
* (SSH_AUTH_SOCK, then Pageant on Windows).
|
|
40
|
+
*/
|
|
41
|
+
agentPath?: string
|
|
42
|
+
}
|
|
43
|
+
/** Jump chain: local aliases connected through in order (ProxyJump). */
|
|
44
|
+
proxyJump: string[]
|
|
45
|
+
/** Free-form note. */
|
|
46
|
+
description?: string
|
|
47
|
+
/** Deployment environment label (development / production / ...). */
|
|
48
|
+
environment?: string
|
|
49
|
+
/** Free-form tags. */
|
|
50
|
+
tags: string[]
|
|
51
|
+
/** Physical location note. */
|
|
52
|
+
location?: string
|
|
53
|
+
createdAt: number
|
|
54
|
+
updatedAt: number
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/** Public (secret-free) projection of an entry, safe for the browser/agent. */
|
|
58
|
+
export interface SshHostSummary {
|
|
59
|
+
alias: string
|
|
60
|
+
host: string
|
|
61
|
+
/** Explicit, out-of-band verified SHA256 pin; otherwise use ~/.ssh/known_hosts. */
|
|
62
|
+
hostKeyFingerprint?: string
|
|
63
|
+
port: number
|
|
64
|
+
user: string
|
|
65
|
+
auth: SshAuthKind
|
|
66
|
+
/** Whether the key path exists on the host machine (key auth only). */
|
|
67
|
+
keyReady: boolean
|
|
68
|
+
proxyJump: string[]
|
|
69
|
+
description?: string
|
|
70
|
+
environment?: string
|
|
71
|
+
tags: string[]
|
|
72
|
+
location?: string
|
|
73
|
+
createdAt: number
|
|
74
|
+
updatedAt: number
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/** Result of one non-interactive command execution. */
|
|
78
|
+
export interface ExecResult {
|
|
79
|
+
success: boolean
|
|
80
|
+
/** Remote exit code, or null when the channel died without one. */
|
|
81
|
+
exitCode: number | null
|
|
82
|
+
timedOut: boolean
|
|
83
|
+
stdout: string
|
|
84
|
+
stderr: string
|
|
85
|
+
/** Wall-clock duration of the round trip in ms. */
|
|
86
|
+
durationMs: number
|
|
87
|
+
/** Connection error message when the command never ran. */
|
|
88
|
+
error?: string
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** One server entry in a cluster run. */
|
|
92
|
+
export interface ClusterResult {
|
|
93
|
+
alias: string
|
|
94
|
+
ok: boolean
|
|
95
|
+
exitCode?: number | null
|
|
96
|
+
timedOut?: boolean
|
|
97
|
+
stdout?: string
|
|
98
|
+
stderr?: string
|
|
99
|
+
durationMs?: number
|
|
100
|
+
error?: string
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** SFTP transfer progress frame (upload stream). */
|
|
104
|
+
export interface TransferProgress {
|
|
105
|
+
phase: 'connecting' | 'transferring' | 'done' | 'error'
|
|
106
|
+
file: string
|
|
107
|
+
transferred: number
|
|
108
|
+
total: number
|
|
109
|
+
percent: number
|
|
110
|
+
speedBps?: number
|
|
111
|
+
error?: string
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** One active local port-forward tunnel. */
|
|
115
|
+
export interface TunnelInfo {
|
|
116
|
+
id: string
|
|
117
|
+
alias: string
|
|
118
|
+
localPort: number
|
|
119
|
+
remoteHost: string
|
|
120
|
+
remotePort: number
|
|
121
|
+
state: 'forwarding' | 'connecting' | 'failed'
|
|
122
|
+
error?: string
|
|
123
|
+
startedAt: number
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/** One directory listing entry (remote file browser). */
|
|
127
|
+
export interface RemoteDirEntry {
|
|
128
|
+
name: string
|
|
129
|
+
type: 'dir' | 'file' | 'other'
|
|
130
|
+
size: number
|
|
131
|
+
mtimeMs: number
|
|
132
|
+
mode?: number
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/** Test-connection outcome. */
|
|
136
|
+
export interface TestResult {
|
|
137
|
+
ok: boolean
|
|
138
|
+
latencyMs?: number
|
|
139
|
+
error?: string
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Host edit payload (create/update); 'alias' comes from the URL for updates. */
|
|
143
|
+
export interface HostPayload {
|
|
144
|
+
alias?: string
|
|
145
|
+
host: string
|
|
146
|
+
/** Explicit SHA256 pin; PATCH null clears it and returns to known_hosts. */
|
|
147
|
+
hostKeyFingerprint?: string | null
|
|
148
|
+
port?: number
|
|
149
|
+
user: string
|
|
150
|
+
/**
|
|
151
|
+
* Authentication. Required on create; on update an omitted auth keeps the
|
|
152
|
+
* stored secrets (the browser never receives them back).
|
|
153
|
+
*/
|
|
154
|
+
auth?: SshHostEntry['auth']
|
|
155
|
+
proxyJump?: string[]
|
|
156
|
+
description?: string
|
|
157
|
+
environment?: string
|
|
158
|
+
tags?: string[]
|
|
159
|
+
location?: string
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/** Import outcome from ~/.ssh/config. */
|
|
163
|
+
export interface ImportResult {
|
|
164
|
+
parsed: number
|
|
165
|
+
added: number
|
|
166
|
+
skipped: number
|
|
167
|
+
/** Aliases that failed to map (wildcard patterns, missing HostName, ...). */
|
|
168
|
+
skippedNames: string[]
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/** JSON error body used by every route. */
|
|
172
|
+
export interface ApiErrorBody {
|
|
173
|
+
error: string
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/** WebSocket terminal protocol frames (host -> client and client -> host). */
|
|
177
|
+
export type TerminalServerFrame =
|
|
178
|
+
| { type: 'ready'; alias: string }
|
|
179
|
+
| { type: 'output'; data: string }
|
|
180
|
+
| { type: 'exit'; code: number | null; error?: string }
|
|
181
|
+
| {
|
|
182
|
+
type: 'auth_prompt'
|
|
183
|
+
name: string
|
|
184
|
+
instructions: string
|
|
185
|
+
prompts: Array<{ prompt: string; echo: boolean }>
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export type TerminalClientFrame =
|
|
189
|
+
| { type: 'input'; data: string }
|
|
190
|
+
| { type: 'resize'; cols: number; rows: number }
|
|
191
|
+
| { type: 'auth_response'; responses: string[] }
|
|
192
|
+
|
|
193
|
+
/** Route paths the client calls (shared literals). */
|
|
194
|
+
export const SSH_API_BASE = '/api/dsh-ssh' as const
|
|
195
|
+
|
|
196
|
+
export const SSH_API = {
|
|
197
|
+
hosts: SSH_API_BASE + '/hosts',
|
|
198
|
+
importSshConfig: SSH_API_BASE + '/hosts/import-ssh-config',
|
|
199
|
+
test: SSH_API_BASE + '/test',
|
|
200
|
+
exec: SSH_API_BASE + '/exec',
|
|
201
|
+
cluster: SSH_API_BASE + '/cluster',
|
|
202
|
+
upload: SSH_API_BASE + '/upload',
|
|
203
|
+
download: SSH_API_BASE + '/download',
|
|
204
|
+
ls: SSH_API_BASE + '/ls',
|
|
205
|
+
tunnel: SSH_API_BASE + '/tunnel',
|
|
206
|
+
terminal: SSH_API_BASE + '/terminal',
|
|
207
|
+
} as const
|
|
208
|
+
|
|
209
|
+
/** NDJSON transfer stream line shapes (upload). */
|
|
210
|
+
export type TransferStreamLine =
|
|
211
|
+
| { type: 'progress'; progress: TransferProgress }
|
|
212
|
+
| { type: 'result'; ok: boolean; transferredBytes?: number; error?: string }
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent badge facts, resolved from the client sessions list snapshot.
|
|
3
|
+
*
|
|
4
|
+
* DSH 0.2 reshaped every fact this feature used: `sessions.list` no longer has
|
|
5
|
+
* `current` or `subagentsByParent`, and the `subagents/history` RPC is gone.
|
|
6
|
+
* The list rows carry the projections instead — the parent row's
|
|
7
|
+
* `projectionValues.subagentCatalog` names its direct children, and each child
|
|
8
|
+
* row's `projectionValues.modelSelection` holds the model and reasoning effort
|
|
9
|
+
* the child ran with (`{ lastUsed, next }`). So the badge needs no history
|
|
10
|
+
* fetch and never opens or retains a child session.
|
|
11
|
+
*
|
|
12
|
+
* Dependency-free: the position module passes the raw snapshot rows in.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/** The `modelSelection` projection's shape (`{ provider, model, reasoningEffort? }`). */
|
|
16
|
+
export interface SubagentModelChoice {
|
|
17
|
+
readonly provider?: unknown
|
|
18
|
+
readonly model?: unknown
|
|
19
|
+
readonly reasoningEffort?: unknown
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** One `projectionValues` bag as the client list carries it. */
|
|
23
|
+
export interface SubagentProjectionValuesLike {
|
|
24
|
+
readonly subagentCatalog?: unknown
|
|
25
|
+
readonly modelSelection?: unknown
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** The subset of a session list row this resolver reads. */
|
|
29
|
+
export interface SubagentListRowLike {
|
|
30
|
+
readonly id?: unknown
|
|
31
|
+
readonly parentId?: unknown
|
|
32
|
+
readonly origin?: unknown
|
|
33
|
+
readonly displayTitle?: unknown
|
|
34
|
+
readonly title?: unknown
|
|
35
|
+
readonly projectionValues?: SubagentProjectionValuesLike
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/** The subset of the sessions list snapshot this resolver reads. */
|
|
39
|
+
export interface SubagentListSnapshotLike {
|
|
40
|
+
readonly byId?: Readonly<Record<string, SubagentListRowLike>>
|
|
41
|
+
/** Parent-keyed projections; a fallback path for the catalog. */
|
|
42
|
+
readonly projectionsBySession?: Readonly<Record<string, { readonly values?: { readonly subagentCatalog?: unknown } }>>
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** One badge to render: the child identity, its matchable labels, and its text. */
|
|
46
|
+
export interface SubagentBadgeFacts {
|
|
47
|
+
readonly childId: string
|
|
48
|
+
/** Labels/row titles that identify this child's rendered row. */
|
|
49
|
+
readonly labels: readonly string[]
|
|
50
|
+
/** `model` or `model · effort`; absent when the child recorded no selection. */
|
|
51
|
+
readonly modelText?: string
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Resolved badges plus the conversation root they belong to. */
|
|
55
|
+
export interface SubagentBadgeResolution {
|
|
56
|
+
readonly rootId?: string
|
|
57
|
+
readonly badges: readonly SubagentBadgeFacts[]
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Walk upward to the first non-subagent session.
|
|
62
|
+
* @param rows - the list rows.
|
|
63
|
+
* @param sessionId - any listed session id.
|
|
64
|
+
* @returns the root conversation's id (the input when it is already a root).
|
|
65
|
+
*/
|
|
66
|
+
export function rootSessionId(
|
|
67
|
+
rows: Readonly<Record<string, SubagentListRowLike>>,
|
|
68
|
+
sessionId: string,
|
|
69
|
+
): string {
|
|
70
|
+
const seen = new Set<string>()
|
|
71
|
+
let current = rows[sessionId]
|
|
72
|
+
while (current?.origin === 'subagent' && typeof current.parentId === 'string' && !seen.has(String(current.id))) {
|
|
73
|
+
seen.add(String(current.id))
|
|
74
|
+
current = rows[current.parentId]
|
|
75
|
+
}
|
|
76
|
+
return typeof current?.id === 'string' ? current.id : sessionId
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** `model` or `model · effort`, or undefined when the choice carries no model. */
|
|
80
|
+
export function formatModelText(choice: unknown): string | undefined {
|
|
81
|
+
if (!isRecord(choice)) return undefined
|
|
82
|
+
const model = nonBlankString(choice.model)
|
|
83
|
+
if (model === undefined) return undefined
|
|
84
|
+
const effort = nonBlankString(choice.reasoningEffort)
|
|
85
|
+
return effort === undefined ? model : `${model} · ${effort}`
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Resolve every badge for the conversation the operator is in.
|
|
90
|
+
* @param snapshot - the sessions list snapshot (`byId` + projections).
|
|
91
|
+
* @param sessionId - the main-view session id, when one is selected.
|
|
92
|
+
* @returns the root id and one entry per catalog child that has a model.
|
|
93
|
+
*/
|
|
94
|
+
export function resolveSubagentBadges(
|
|
95
|
+
snapshot: SubagentListSnapshotLike,
|
|
96
|
+
sessionId: string | undefined,
|
|
97
|
+
): SubagentBadgeResolution {
|
|
98
|
+
const rows = snapshot.byId ?? {}
|
|
99
|
+
if (sessionId === undefined || sessionId === '') return { badges: [] }
|
|
100
|
+
const rootId = rootSessionId(rows, sessionId)
|
|
101
|
+
const catalog = readCatalog(snapshot, rows, rootId)
|
|
102
|
+
const badges: SubagentBadgeFacts[] = []
|
|
103
|
+
const seen = new Set<string>()
|
|
104
|
+
for (const entry of catalog) {
|
|
105
|
+
const childId = readChildId(entry)
|
|
106
|
+
if (childId === undefined || seen.has(childId)) continue
|
|
107
|
+
seen.add(childId)
|
|
108
|
+
const child = rows[childId]
|
|
109
|
+
badges.push({
|
|
110
|
+
childId,
|
|
111
|
+
labels: childLabels(entry, child),
|
|
112
|
+
...(formatModelText(pickSelection(child?.projectionValues?.modelSelection)) === undefined
|
|
113
|
+
? {}
|
|
114
|
+
: { modelText: formatModelText(pickSelection(child?.projectionValues?.modelSelection)) }),
|
|
115
|
+
})
|
|
116
|
+
}
|
|
117
|
+
return { rootId, badges }
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** The parent row's catalog first; the parent-keyed projection as fallback. */
|
|
121
|
+
function readCatalog(
|
|
122
|
+
snapshot: SubagentListSnapshotLike,
|
|
123
|
+
rows: Readonly<Record<string, SubagentListRowLike>>,
|
|
124
|
+
rootId: string,
|
|
125
|
+
): readonly unknown[] {
|
|
126
|
+
const fromRow = rows[rootId]?.projectionValues?.subagentCatalog
|
|
127
|
+
if (Array.isArray(fromRow)) return fromRow
|
|
128
|
+
const fromProjection = snapshot.projectionsBySession?.[rootId]?.values?.subagentCatalog
|
|
129
|
+
return Array.isArray(fromProjection) ? fromProjection : []
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function readChildId(entry: unknown): string | undefined {
|
|
133
|
+
if (!isRecord(entry)) return undefined
|
|
134
|
+
return nonBlankString(entry.id)
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/** Every label a rendered row may carry for this child. */
|
|
138
|
+
function childLabels(entry: unknown, child: SubagentListRowLike | undefined): readonly string[] {
|
|
139
|
+
const candidates = [
|
|
140
|
+
isRecord(entry) ? nonBlankString(entry.label) : undefined,
|
|
141
|
+
nonBlankString(child?.displayTitle),
|
|
142
|
+
nonBlankString(child?.title),
|
|
143
|
+
]
|
|
144
|
+
return [...new Set(candidates.filter((value): value is string => value !== undefined))]
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** The committed request header wins over the pending intent. */
|
|
148
|
+
function pickSelection(selection: unknown): unknown {
|
|
149
|
+
if (!isRecord(selection)) return selection
|
|
150
|
+
return selection.lastUsed ?? selection.next
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
154
|
+
return typeof value === 'object' && value !== null
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function nonBlankString(value: unknown): string | undefined {
|
|
158
|
+
if (typeof value !== 'string') return undefined
|
|
159
|
+
const trimmed = value.trim()
|
|
160
|
+
return trimmed === '' ? undefined : trimmed
|
|
161
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public error type thrown by the host worktree manager. Errors are domain
|
|
3
|
+
* shaped (no leaking of git exit codes as raw integers) so the HTTP layer
|
|
4
|
+
* can map them to stable status codes without parsing message strings.
|
|
5
|
+
*
|
|
6
|
+
* The browser half imports this through the same `./invariant` export as
|
|
7
|
+
* the host half: both halves agree on the error vocabulary over the wire.
|
|
8
|
+
* @module @dsh-cove/dsh-client-ui-worktree/invariant
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export type WorktreeErrorCode =
|
|
12
|
+
/** The session cwd is not inside a git repository. */
|
|
13
|
+
| 'not-a-repository'
|
|
14
|
+
/** The session cwd does not match any registered workspace. */
|
|
15
|
+
| 'workspace-unknown'
|
|
16
|
+
/** The named worktree does not exist for the repository. */
|
|
17
|
+
| 'worktree-not-found'
|
|
18
|
+
/** A worktree with the same name already exists. */
|
|
19
|
+
| 'worktree-exists'
|
|
20
|
+
/** A running session would be broken by removing this worktree. */
|
|
21
|
+
| 'worktree-busy'
|
|
22
|
+
/** The branch name is invalid (empty, contains spaces, has a `..`, etc.). */
|
|
23
|
+
| 'invalid-branch'
|
|
24
|
+
/** A git subprocess returned a non-zero exit code. */
|
|
25
|
+
| 'git-failed'
|
|
26
|
+
/** The git push to the remote failed. */
|
|
27
|
+
| 'push-failed'
|
|
28
|
+
/** The repository has no `origin` remote to push to. */
|
|
29
|
+
| 'no-remote'
|
|
30
|
+
/** Cleanup refused because the branch is not merged into its base. */
|
|
31
|
+
| 'not-merged'
|
|
32
|
+
/** The remote host is not GitHub, so no compare URL or PR API applies. */
|
|
33
|
+
| 'unsupported-remote'
|
|
34
|
+
/** The manifest file is missing required fields or is corrupted. */
|
|
35
|
+
| 'manifest-corrupt'
|
|
36
|
+
/** The repo does not ignore `<repo>/.dsh/workspaces/`, so a lane directory
|
|
37
|
+
* would show up as untracked in the main checkout. */
|
|
38
|
+
| 'worktree-not-ignored'
|
|
39
|
+
/** The host could not create the session bound to a new lane. */
|
|
40
|
+
| 'session-create-failed'
|
|
41
|
+
/** The session a lane would bind to is not live on the host. */
|
|
42
|
+
| 'session-unknown'
|
|
43
|
+
/** A bind named a lane the asking conversation is not running in. */
|
|
44
|
+
| 'lane-mismatch'
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Thrown by the worktree host service when a domain precondition fails.
|
|
48
|
+
* The message is human-readable English; the code is the stable contract.
|
|
49
|
+
*/
|
|
50
|
+
export class WorktreeError extends Error {
|
|
51
|
+
readonly code: WorktreeErrorCode
|
|
52
|
+
readonly details?: Record<string, unknown>
|
|
53
|
+
|
|
54
|
+
constructor(code: WorktreeErrorCode, message: string, details?: Record<string, unknown>) {
|
|
55
|
+
super(message)
|
|
56
|
+
this.name = 'WorktreeError'
|
|
57
|
+
this.code = code
|
|
58
|
+
if (details !== undefined) this.details = details
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Stable, language-neutral branch-name predicate. Accepts the git ref
|
|
64
|
+
* subset that does not surprise users: letters, digits, dot, underscore,
|
|
65
|
+
* slash, dash; must not be empty, must not start with a dot or dash, must
|
|
66
|
+
* not contain `..`, must not end with `.lock`, and must be <= 100 chars.
|
|
67
|
+
*/
|
|
68
|
+
export function isValidBranchName(name: string): boolean {
|
|
69
|
+
if (typeof name !== 'string') return false
|
|
70
|
+
if (name.length === 0 || name.length > 100) return false
|
|
71
|
+
if (name === 'HEAD' || name === '@') return false
|
|
72
|
+
if (name.startsWith('.') || name.startsWith('-')) return false
|
|
73
|
+
if (name.endsWith('.lock') || name.endsWith('/') || name.endsWith('.')) return false
|
|
74
|
+
if (name.includes('..')) return false
|
|
75
|
+
if (name.includes('~') || name.includes('^') || name.includes(':')) return false
|
|
76
|
+
if (name.includes('\\') || name.includes(' ')) return false
|
|
77
|
+
if (!/^[A-Za-z0-9._/-]+$/.test(name)) return false
|
|
78
|
+
return true
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Default error message for a code (browser copy mirrors these). */
|
|
82
|
+
export function defaultMessage(code: WorktreeErrorCode): string {
|
|
83
|
+
switch (code) {
|
|
84
|
+
case 'not-a-repository': return 'The directory is not a git repository.'
|
|
85
|
+
case 'workspace-unknown': return 'The directory is not a registered workspace.'
|
|
86
|
+
case 'worktree-not-found': return 'No such worktree.'
|
|
87
|
+
case 'worktree-exists': return 'A worktree with that name already exists.'
|
|
88
|
+
case 'worktree-busy': return 'A running session is bound to that worktree; stop it first or use force.'
|
|
89
|
+
case 'invalid-branch': return 'That branch name is not valid for a git ref.'
|
|
90
|
+
case 'git-failed': return 'git exited with a non-zero status; see the server log for details.'
|
|
91
|
+
case 'push-failed': return 'The push to the remote failed; see the server log for details.'
|
|
92
|
+
case 'no-remote': return 'The repository has no "origin" remote; add one before creating a pull request.'
|
|
93
|
+
case 'not-merged': return 'The branch is not merged into its base; merge the pull request first or force the cleanup.'
|
|
94
|
+
case 'unsupported-remote': return 'The remote host is not GitHub; PR creation is only supported for GitHub remotes.'
|
|
95
|
+
case 'manifest-corrupt': return 'The worktree manifest is corrupted; remove it and reinitialize.'
|
|
96
|
+
case 'worktree-not-ignored': return 'The repository does not ignore the worktree root; add it to .gitignore before creating a lane.'
|
|
97
|
+
case 'session-create-failed': return 'The host could not start a session on the new lane; the lane was rolled back.'
|
|
98
|
+
case 'session-unknown': return 'The session does not exist on the host, so it cannot be bound to a lane.'
|
|
99
|
+
case 'lane-mismatch': return 'The session is not running in that lane directory, so it cannot be bound to it.'
|
|
100
|
+
}
|
|
101
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest on-disk schema for `<repo>/.dsh/workspaces/manifest.json`. The
|
|
3
|
+
* manifest records every worktree we ever created so the sidebar can
|
|
4
|
+
* recover after the worktree directory is gone (orphan state) and so the
|
|
5
|
+
* workspace registry can re-bind surviving paths. Since v1 it also records
|
|
6
|
+
* PR metadata per worktree so the panel can show merged / not-merged state
|
|
7
|
+
* across restarts.
|
|
8
|
+
*
|
|
9
|
+
* Version history:
|
|
10
|
+
* - v1: name/path/baseCommit/createdAt/detached per entry.
|
|
11
|
+
* - v2: adds optional `baseBranch` (repo-level PR target) and per-entry
|
|
12
|
+
* `prUrl` / `prNumber` / `remoteBranch` / `baseRef` / `updatedAt`.
|
|
13
|
+
* The reader accepts both versions (v1 entries simply carry no PR
|
|
14
|
+
* metadata) so an upgraded plugin never trips over an older manifest.
|
|
15
|
+
* v2 also carries the optional session binding (`sessionId` /
|
|
16
|
+
* `workspaceId`) and preset outcome used by session-bound lanes; these
|
|
17
|
+
* are additive optional fields, so the on-disk version stays 2.
|
|
18
|
+
* @module @dsh-cove/dsh-client-ui-worktree/core
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { MANIFEST_FILENAME, WORKSPACE_DIR } from './paths.ts'
|
|
22
|
+
|
|
23
|
+
/** Persisted entry for one worktree. */
|
|
24
|
+
export interface WorktreeManifestEntry {
|
|
25
|
+
/** Branch name (== worktree dir name under `.dsh/workspaces/`). */
|
|
26
|
+
name: string
|
|
27
|
+
/** Absolute path. */
|
|
28
|
+
path: string
|
|
29
|
+
/** Commit the worktree was created from. */
|
|
30
|
+
baseCommit: string
|
|
31
|
+
/** ISO 8601 timestamp. */
|
|
32
|
+
createdAt: string
|
|
33
|
+
/** True when the worktree was created without a branch (detached). */
|
|
34
|
+
detached: boolean
|
|
35
|
+
/** PR page URL once a PR was created through this plugin. */
|
|
36
|
+
prUrl?: string
|
|
37
|
+
/** GitHub PR number when created via the REST API. */
|
|
38
|
+
prNumber?: number
|
|
39
|
+
/** The remote the branch was pushed to (`origin`). */
|
|
40
|
+
remoteBranch?: string
|
|
41
|
+
/** Base branch the PR targets. */
|
|
42
|
+
baseRef?: string
|
|
43
|
+
/** ISO 8601 timestamp of the last PR-related mutation. */
|
|
44
|
+
updatedAt?: string
|
|
45
|
+
/** DSH session bound to this lane (session-bound lanes only). */
|
|
46
|
+
sessionId?: string
|
|
47
|
+
/** DSH workspace id registered for the lane path, when known. */
|
|
48
|
+
workspaceId?: string
|
|
49
|
+
/** Whether the required lane permission preset was applied to its session. */
|
|
50
|
+
permissionPresetApplied?: boolean
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** The full manifest file (current on-disk version). */
|
|
54
|
+
export interface WorktreeManifest {
|
|
55
|
+
version: 2
|
|
56
|
+
repoPath: string
|
|
57
|
+
/** Repo-level PR target base branch; set on the first pr-create. */
|
|
58
|
+
baseBranch?: string
|
|
59
|
+
worktrees: WorktreeManifestEntry[]
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** A parsed manifest in the current (v2) shape; v1 input is normalized. */
|
|
63
|
+
export type ParsedWorktreeManifest = WorktreeManifest
|
|
64
|
+
|
|
65
|
+
/** Empty manifest for a fresh repo. */
|
|
66
|
+
export function emptyManifest(repoPath: string): WorktreeManifest {
|
|
67
|
+
return { version: 2, repoPath, worktrees: [] }
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Parse manifest text into the current v2 shape. v1 manifests (or v2 with
|
|
72
|
+
* missing optional fields) are normalized rather than rejected, so an
|
|
73
|
+
* upgraded plugin keeps working with an old manifest. Throws a plain
|
|
74
|
+
* `Error` on shapes that are not a manifest at all — the caller decides
|
|
75
|
+
* how to surface corruption.
|
|
76
|
+
*/
|
|
77
|
+
export function parseManifest(text: string): ParsedWorktreeManifest {
|
|
78
|
+
let parsed: unknown
|
|
79
|
+
try {
|
|
80
|
+
parsed = JSON.parse(text)
|
|
81
|
+
} catch (error) {
|
|
82
|
+
throw new Error(`worktree manifest is not valid JSON: ${String(error)}`)
|
|
83
|
+
}
|
|
84
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
85
|
+
throw new Error('worktree manifest must be a JSON object')
|
|
86
|
+
}
|
|
87
|
+
const record = parsed as Record<string, unknown>
|
|
88
|
+
const version = record['version']
|
|
89
|
+
if (version !== 1 && version !== 2) {
|
|
90
|
+
throw new Error(`unsupported worktree manifest version: ${JSON.stringify(version)}`)
|
|
91
|
+
}
|
|
92
|
+
if (typeof record['repoPath'] !== 'string') {
|
|
93
|
+
throw new Error('worktree manifest is missing repoPath')
|
|
94
|
+
}
|
|
95
|
+
if (!Array.isArray(record['worktrees'])) {
|
|
96
|
+
throw new Error('worktree manifest is missing the worktrees array')
|
|
97
|
+
}
|
|
98
|
+
const baseBranch = typeof record['baseBranch'] === 'string' ? record['baseBranch'] : undefined
|
|
99
|
+
const worktrees: WorktreeManifestEntry[] = (record['worktrees'] as unknown[]).map((entry) => {
|
|
100
|
+
if (entry === null || typeof entry !== 'object' || Array.isArray(entry)) {
|
|
101
|
+
throw new Error('worktree manifest contains a malformed entry')
|
|
102
|
+
}
|
|
103
|
+
const e = entry as Record<string, unknown>
|
|
104
|
+
for (const field of ['name', 'path', 'baseCommit', 'createdAt'] as const) {
|
|
105
|
+
if (typeof e[field] !== 'string') throw new Error(`worktree manifest entry is missing '${field}'`)
|
|
106
|
+
}
|
|
107
|
+
if (typeof e['detached'] !== 'boolean') {
|
|
108
|
+
throw new Error('worktree manifest entry is missing detached')
|
|
109
|
+
}
|
|
110
|
+
const out: WorktreeManifestEntry = {
|
|
111
|
+
name: e['name'] as string,
|
|
112
|
+
path: e['path'] as string,
|
|
113
|
+
baseCommit: e['baseCommit'] as string,
|
|
114
|
+
createdAt: e['createdAt'] as string,
|
|
115
|
+
detached: e['detached'] as boolean,
|
|
116
|
+
}
|
|
117
|
+
if (typeof e['prUrl'] === 'string') out.prUrl = e['prUrl']
|
|
118
|
+
if (typeof e['prNumber'] === 'number') out.prNumber = e['prNumber']
|
|
119
|
+
if (typeof e['remoteBranch'] === 'string') out.remoteBranch = e['remoteBranch']
|
|
120
|
+
if (typeof e['baseRef'] === 'string') out.baseRef = e['baseRef']
|
|
121
|
+
if (typeof e['updatedAt'] === 'string') out.updatedAt = e['updatedAt']
|
|
122
|
+
if (typeof e['sessionId'] === 'string') out.sessionId = e['sessionId']
|
|
123
|
+
if (typeof e['workspaceId'] === 'string') out.workspaceId = e['workspaceId']
|
|
124
|
+
if (typeof e['permissionPresetApplied'] === 'boolean') {
|
|
125
|
+
out.permissionPresetApplied = e['permissionPresetApplied']
|
|
126
|
+
}
|
|
127
|
+
return out
|
|
128
|
+
})
|
|
129
|
+
return { version: 2, repoPath: record['repoPath'] as string, ...(baseBranch === undefined ? {} : { baseBranch }), worktrees }
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** Manifest path = `<repo>/.dsh/workspaces/manifest.json`. */
|
|
133
|
+
export function manifestPath(repoPath: string): string {
|
|
134
|
+
return `${repoPath}/${WORKSPACE_DIR}/${MANIFEST_FILENAME}`
|
|
135
|
+
}
|