@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,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-bound lane orchestration: the two host-side halves of "start a
|
|
3
|
+
* conversation on its own worktree".
|
|
4
|
+
*
|
|
5
|
+
* Why the host does NOT create the session
|
|
6
|
+
* The obvious host path is a direct store insert, but it is wrong on two
|
|
7
|
+
* counts:
|
|
8
|
+
* 1. `ctx.sessions.create()` makes the session owned by the CALLING
|
|
9
|
+
* FIBER — disposing that fiber removes the session from the store. A
|
|
10
|
+
* session created by this plugin would then disappear on the next
|
|
11
|
+
* plugin reload, which is exactly when a developer expects their
|
|
12
|
+
* conversation to still be there.
|
|
13
|
+
* 2. The retired session-isolation wrapper reached for a host gateway
|
|
14
|
+
* face (`apiProxy.sessions.create`); on a real deployment that face is
|
|
15
|
+
* absent — reproduced live: `POST /worktree/lane/create` answered
|
|
16
|
+
* `session-create-failed: the apiProxy sessions face is unavailable`.
|
|
17
|
+
* So creation stays with the platform: the browser asks the platform's own
|
|
18
|
+
* workspace navigation for the lane (`uiWorkspace.openWorkspace`, whose
|
|
19
|
+
* `beforeOpen` callback names the `ctx.sessions.create({ workspaceId })`
|
|
20
|
+
* session it connected) and binds that id to the lane. The lane's directory is
|
|
21
|
+
* a registered workspace because the platform accounts a session to a workspace
|
|
22
|
+
* only while its cwd equals that path; a lane session created with a bare cwd
|
|
23
|
+
* would render an inert composer.
|
|
24
|
+
*
|
|
25
|
+
* What the host owns
|
|
26
|
+
* `createLane` — make the branch's worktree (attaching an existing
|
|
27
|
+
* branch, cutting a missing one) and register its
|
|
28
|
+
* directory as a workspace. The registration is what makes
|
|
29
|
+
* the conversation in it usable; ownership still sits with
|
|
30
|
+
* the session, and teardown removes the registration with
|
|
31
|
+
* the directory.
|
|
32
|
+
* `bindLaneSession` — after the platform created the session, record the
|
|
33
|
+
* binding and apply the preset the lane requires.
|
|
34
|
+
*
|
|
35
|
+
* Why the lane needs `danger-full-access`
|
|
36
|
+
* A linked worktree keeps its git directory under
|
|
37
|
+
* `<repo>/.git/worktrees/<name>/`, i.e. OUTSIDE the session cwd (which is
|
|
38
|
+
* the lane directory). The sandbox grants writes only to the session cwd and
|
|
39
|
+
* its descendants, so under `workspace-write` git could not write its index,
|
|
40
|
+
* objects or refs and no commit would be possible. Reported as a boolean,
|
|
41
|
+
* never thrown: a lane whose preset could not be applied is still usable
|
|
42
|
+
* once the user switches the access mode manually, and the header chip says
|
|
43
|
+
* so.
|
|
44
|
+
* @module dsh-client-ui-worktree/host/session-lane
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
import type { Context } from '@deepseek-ai/cordis'
|
|
48
|
+
import type { SessionId } from '@deepseek-ai/dsh-session/types'
|
|
49
|
+
import { isValidBranchName, WorktreeError } from '../../../../core/worktree/invariant.ts'
|
|
50
|
+
import { samePath } from '../../../../core/worktree/paths.ts'
|
|
51
|
+
import type {
|
|
52
|
+
BindLaneInput, BindLaneResult, CreateLaneInput, CreateLaneResult, LaneLookupInput, LaneView,
|
|
53
|
+
} from '../../../../core/worktree/types.ts'
|
|
54
|
+
import type { WorktreeManager } from '../manager.ts'
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The preset every lane session must run under. `danger-full-access` maps to
|
|
58
|
+
* `{sandbox: 'danger-full-access', approval: 'never'}` in
|
|
59
|
+
* `@deepseek-ai/dsh-permission-presets`.
|
|
60
|
+
*/
|
|
61
|
+
export const LANE_PERMISSION_PRESET = 'danger-full-access'
|
|
62
|
+
|
|
63
|
+
/** Structural face over the permission-preset service (needs a live session). */
|
|
64
|
+
interface PermissionPresetsFace {
|
|
65
|
+
set(session: unknown, name: string): void
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Structural face over the host session store (id -> live session). */
|
|
69
|
+
interface SessionsStoreFace {
|
|
70
|
+
get(id: string): unknown
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** Test seams; production uses the ctx services. */
|
|
74
|
+
export interface SessionLaneManagerOptions {
|
|
75
|
+
/** Preset applier override (tests). */
|
|
76
|
+
setPermissionPreset?: (sessionId: string, preset: string) => void | Promise<void>
|
|
77
|
+
/** Live-session lookup override (tests). */
|
|
78
|
+
hasSession?: (sessionId: string) => boolean
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export class SessionLaneManager {
|
|
82
|
+
private readonly ctx: Context
|
|
83
|
+
private readonly worktrees: WorktreeManager
|
|
84
|
+
private readonly options: SessionLaneManagerOptions
|
|
85
|
+
/**
|
|
86
|
+
* Captured through an optional inject, so the preset service is picked up
|
|
87
|
+
* whenever the deployment provides it and never blocks this plugin's mount
|
|
88
|
+
* when it does not.
|
|
89
|
+
*/
|
|
90
|
+
private presets: PermissionPresetsFace | undefined
|
|
91
|
+
|
|
92
|
+
constructor(ctx: Context, worktrees: WorktreeManager, options: SessionLaneManagerOptions = {}) {
|
|
93
|
+
this.ctx = ctx
|
|
94
|
+
this.worktrees = worktrees
|
|
95
|
+
this.options = options
|
|
96
|
+
this.presets = ctx.get('permissionPresets') as PermissionPresetsFace | undefined
|
|
97
|
+
ctx.inject(['permissionPresets'], (child) => {
|
|
98
|
+
this.presets = child.get('permissionPresets') as PermissionPresetsFace | undefined
|
|
99
|
+
child.effect(() => () => { this.presets = undefined })
|
|
100
|
+
})
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/** Phase 1: ensure the worktree behind the branch exists (no workspace). */
|
|
104
|
+
async createLane(input: CreateLaneInput): Promise<CreateLaneResult> {
|
|
105
|
+
return await this.worktrees.ensureLane(input)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Phase 2: bind the platform-created session to its lane and apply the preset.
|
|
110
|
+
*
|
|
111
|
+
* Fail closed, in this order: every check that can reject the request runs
|
|
112
|
+
* BEFORE the session is elevated, and the request has to name the directory
|
|
113
|
+
* the conversation actually runs in. Without that, this route could record —
|
|
114
|
+
* and hand `danger-full-access` to — a conversation living somewhere else,
|
|
115
|
+
* and a later teardown would archive a session that never used the lane.
|
|
116
|
+
* Both halves were reproduced before this check existed: a bind resolved for a
|
|
117
|
+
* session whose cwd was a different directory, and the elevation happened on
|
|
118
|
+
* the way to a manifest write that then failed.
|
|
119
|
+
*
|
|
120
|
+
* The preset outcome is recorded with the binding, so a lane whose preset
|
|
121
|
+
* failed still resolves for the header chip.
|
|
122
|
+
*/
|
|
123
|
+
async bindLaneSession(input: BindLaneInput): Promise<BindLaneResult> {
|
|
124
|
+
if (!this.hasSession(input.sessionId)) {
|
|
125
|
+
throw new WorktreeError(
|
|
126
|
+
'session-unknown',
|
|
127
|
+
`session ${input.sessionId} is not live on the host, so it cannot be bound to a lane`,
|
|
128
|
+
{ sessionId: input.sessionId },
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
if (!isValidBranchName(input.branch)) {
|
|
132
|
+
throw new WorktreeError(
|
|
133
|
+
'invalid-branch',
|
|
134
|
+
`branch ${JSON.stringify(input.branch)} is not a valid git ref`,
|
|
135
|
+
{ branch: input.branch },
|
|
136
|
+
)
|
|
137
|
+
}
|
|
138
|
+
// Only a lane the host actually records may be bound; `laneForPath`
|
|
139
|
+
// synthesizes a view for a directory the manifest does not know about.
|
|
140
|
+
const recorded = await this.worktrees.laneEntry(input.repoPath, input.branch)
|
|
141
|
+
if (recorded === null) {
|
|
142
|
+
throw new WorktreeError(
|
|
143
|
+
'worktree-not-found',
|
|
144
|
+
`no manifest entry records the lane ${JSON.stringify(input.branch)}`,
|
|
145
|
+
{ branch: input.branch },
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
// The conversation has to be in that directory already: the bind is a
|
|
149
|
+
// record of where it runs, never a way to move it.
|
|
150
|
+
const lane = await this.worktrees.laneForPath({ sessionId: input.sessionId })
|
|
151
|
+
if (lane === null || !samePath(lane.path, recorded.path)) {
|
|
152
|
+
throw new WorktreeError(
|
|
153
|
+
'lane-mismatch',
|
|
154
|
+
`session ${input.sessionId} runs in ${lane === null ? 'no lane' : lane.path}, not ${recorded.path}`,
|
|
155
|
+
{ sessionId: input.sessionId, branch: input.branch, expected: recorded.path, actual: lane?.path ?? null },
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
const permissionPresetApplied = await this.applyPreset(input.sessionId)
|
|
159
|
+
await this.worktrees.bindSession(
|
|
160
|
+
input.repoPath,
|
|
161
|
+
input.branch,
|
|
162
|
+
input.sessionId as SessionId,
|
|
163
|
+
permissionPresetApplied,
|
|
164
|
+
)
|
|
165
|
+
return { lane, permissionPresetApplied }
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/** Resolve the lane a path or session belongs to (delegates to the git layer). */
|
|
169
|
+
async laneForPath(input: LaneLookupInput): Promise<LaneView | null> {
|
|
170
|
+
return this.worktrees.laneForPath(input)
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Undo a lane whose session never came up (the platform's create failed, or
|
|
175
|
+
* the user cancelled before it landed). Removes the worktree directory, the
|
|
176
|
+
* local branch, the git admin records, the manifest entry and the registered
|
|
177
|
+
* workspace, so a failed start leaves no stray lane behind.
|
|
178
|
+
*/
|
|
179
|
+
async rollbackLane(input: { repoPath: string; branch: string }): Promise<void> {
|
|
180
|
+
await this.worktrees.rollbackCreate({ repoPath: input.repoPath, name: input.branch })
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/** Whether the host can see that session. */
|
|
184
|
+
private hasSession(sessionId: string): boolean {
|
|
185
|
+
if (this.options.hasSession !== undefined) return this.options.hasSession(sessionId)
|
|
186
|
+
const store = this.ctx.get('sessions') as SessionsStoreFace | undefined
|
|
187
|
+
return store?.get?.(sessionId) !== undefined
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/** Apply the lane preset; a failure is reported, not thrown. */
|
|
191
|
+
private async applyPreset(sessionId: string): Promise<boolean> {
|
|
192
|
+
if (this.options.setPermissionPreset !== undefined) {
|
|
193
|
+
try {
|
|
194
|
+
await this.options.setPermissionPreset(sessionId, LANE_PERMISSION_PRESET)
|
|
195
|
+
return true
|
|
196
|
+
} catch (error) {
|
|
197
|
+
this.warnPreset(error)
|
|
198
|
+
return false
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const presets = this.presets
|
|
202
|
+
if (presets === undefined) {
|
|
203
|
+
this.warnPreset(new Error('the permissionPresets service is unavailable in this deployment'))
|
|
204
|
+
return false
|
|
205
|
+
}
|
|
206
|
+
const store = this.ctx.get('sessions') as SessionsStoreFace | undefined
|
|
207
|
+
const session = store?.get?.(sessionId)
|
|
208
|
+
if (session === undefined) {
|
|
209
|
+
this.warnPreset(new Error(`session ${sessionId} is not in the session store`))
|
|
210
|
+
return false
|
|
211
|
+
}
|
|
212
|
+
try {
|
|
213
|
+
presets.set(session, LANE_PERMISSION_PRESET)
|
|
214
|
+
return true
|
|
215
|
+
} catch (error) {
|
|
216
|
+
this.warnPreset(error)
|
|
217
|
+
return false
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
private warnPreset(error: unknown): void {
|
|
222
|
+
console.warn(
|
|
223
|
+
`[dsh-worktree] could not apply the "${LANE_PERMISSION_PRESET}" preset; `
|
|
224
|
+
+ 'the lane session will need its access mode switched manually before it can commit:',
|
|
225
|
+
error,
|
|
226
|
+
)
|
|
227
|
+
}
|
|
228
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP route layer for the workspace-model manager. Mirrors the worktree
|
|
3
|
+
* route discipline:
|
|
4
|
+
* 1. JSON envelope + status code translation
|
|
5
|
+
* 2. Shared host access fence (`accessTrustOf`) for every endpoint
|
|
6
|
+
* 3. Surfacing errors under the stable `WorkspaceModelResponse` contract
|
|
7
|
+
*
|
|
8
|
+
* Route list:
|
|
9
|
+
* - GET /workspace-model/list — read; always allowed from the browser
|
|
10
|
+
* - POST /workspace-model/get — read one path (body `{ path }`)
|
|
11
|
+
* - POST /workspace-model/set — mutation; shared fence
|
|
12
|
+
* - POST /workspace-model/clear — mutation; shared fence
|
|
13
|
+
* @module dsh-client-ui-worktree/host/workspace-model-routes
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import type { ServerResponse } from 'node:http'
|
|
17
|
+
import type { Context } from '@deepseek-ai/cordis'
|
|
18
|
+
import type {} from '@deepseek-ai/dsh-host-webserver'
|
|
19
|
+
import type {
|
|
20
|
+
SetWorkspaceModelInput, WorkspaceModelResponse, WorkspaceModelPreset, WorkspaceModelView,
|
|
21
|
+
} from '../../../core/worktree/workspace-model.ts'
|
|
22
|
+
import type { WorkspaceModelManager } from './workspace-model.ts'
|
|
23
|
+
import { readJsonObject, writeJson } from './http.ts'
|
|
24
|
+
import { accessTrustOf } from '../access-trust/index.ts'
|
|
25
|
+
import { registerResources, type OwnResource } from '../resources.ts'
|
|
26
|
+
|
|
27
|
+
/** Per-route URL prefix. */
|
|
28
|
+
export const WORKSPACE_MODEL_PREFIX = '/workspace-model'
|
|
29
|
+
|
|
30
|
+
const BAD_REQUEST: WorkspaceModelResponse<never> = { ok: false, code: 'bad-request', message: 'malformed request' }
|
|
31
|
+
const FORBIDDEN: WorkspaceModelResponse<never> = { ok: false, code: 'forbidden', message: 'mutation endpoints require the host access fence' }
|
|
32
|
+
const READ_FORBIDDEN: WorkspaceModelResponse<never> = { ok: false, code: 'forbidden', message: 'reads require the host access fence' }
|
|
33
|
+
|
|
34
|
+
/** Pull a required string field, or null when absent/empty. */
|
|
35
|
+
function stringField(body: Record<string, unknown> | null, name: string): string | null {
|
|
36
|
+
if (body === null) return null
|
|
37
|
+
const value = body[name]
|
|
38
|
+
return typeof value === 'string' && value !== '' ? value : null
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** CORS preflight short-circuit for the mutation routes. */
|
|
42
|
+
function handleOptions(res: ServerResponse): void {
|
|
43
|
+
res.writeHead(204, {
|
|
44
|
+
'access-control-allow-methods': 'POST, OPTIONS',
|
|
45
|
+
'access-control-allow-headers': 'content-type',
|
|
46
|
+
'access-control-max-age': '600',
|
|
47
|
+
})
|
|
48
|
+
res.end()
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* True when the request may mutate: the shared host access fence (loopback, or
|
|
53
|
+
* a deployment trusted authority with an authenticated browser session).
|
|
54
|
+
* `isTrusted` already carries the whole rule, so there is no second allow path.
|
|
55
|
+
*/
|
|
56
|
+
|
|
57
|
+
/** Wrap a handler that already bounds its own errors. */
|
|
58
|
+
function respond<T>(res: ServerResponse, value: WorkspaceModelResponse<T>): void {
|
|
59
|
+
writeJson(res, value.ok ? 200 : value.code === 'forbidden' ? 403 : 400, value)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** Register all /workspace-model/* routes. Returns the dispose function. */
|
|
63
|
+
export function registerWorkspaceModelRoutes(ctx: Context, manager: WorkspaceModelManager): () => void {
|
|
64
|
+
return registerResources(own => registerOwnedWorkspaceModelRoutes(ctx, manager, own))
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function registerOwnedWorkspaceModelRoutes(ctx: Context, manager: WorkspaceModelManager, own: OwnResource<() => void>): void {
|
|
68
|
+
const isTrusted = accessTrustOf(ctx).isTrusted
|
|
69
|
+
const canMutate = isTrusted
|
|
70
|
+
|
|
71
|
+
// GET /workspace-model/list
|
|
72
|
+
own(ctx.webServer.register({
|
|
73
|
+
kind: 'exact',
|
|
74
|
+
path: `${WORKSPACE_MODEL_PREFIX}/list`,
|
|
75
|
+
handler: async (req, res) => {
|
|
76
|
+
if (req.method !== 'GET') { writeJson(res, 405, BAD_REQUEST); return }
|
|
77
|
+
if (!isTrusted(req)) { respond<never>(res, READ_FORBIDDEN); return }
|
|
78
|
+
const list = manager.list()
|
|
79
|
+
const views: WorkspaceModelView[] = Object.entries(list).map(([path, preset]) => ({ path, preset }))
|
|
80
|
+
writeJson(res, 200, { ok: true, value: views })
|
|
81
|
+
},
|
|
82
|
+
}))
|
|
83
|
+
|
|
84
|
+
// POST /workspace-model/get
|
|
85
|
+
own(ctx.webServer.register({
|
|
86
|
+
kind: 'exact',
|
|
87
|
+
path: `${WORKSPACE_MODEL_PREFIX}/get`,
|
|
88
|
+
handler: async (req, res) => {
|
|
89
|
+
if (req.method === 'OPTIONS') { handleOptions(res); return }
|
|
90
|
+
if (req.method !== 'POST') { writeJson(res, 405, BAD_REQUEST); return }
|
|
91
|
+
if (!isTrusted(req)) { respond<never>(res, READ_FORBIDDEN); return }
|
|
92
|
+
let body: Record<string, unknown> | null
|
|
93
|
+
try { body = await readJsonObject(req) } catch { writeJson(res, 400, BAD_REQUEST); return }
|
|
94
|
+
const path = stringField(body, 'path')
|
|
95
|
+
if (path === null) { writeJson(res, 400, BAD_REQUEST); return }
|
|
96
|
+
respond<WorkspaceModelView>(res, { ok: true, value: { path, preset: manager.get(path) } })
|
|
97
|
+
},
|
|
98
|
+
}))
|
|
99
|
+
|
|
100
|
+
// POST /workspace-model/set
|
|
101
|
+
own(ctx.webServer.register({
|
|
102
|
+
kind: 'exact',
|
|
103
|
+
path: `${WORKSPACE_MODEL_PREFIX}/set`,
|
|
104
|
+
handler: async (req, res) => {
|
|
105
|
+
if (req.method === 'OPTIONS') { handleOptions(res); return }
|
|
106
|
+
if (req.method !== 'POST') { writeJson(res, 405, BAD_REQUEST); return }
|
|
107
|
+
if (!canMutate(req)) { writeJson(res, 403, FORBIDDEN); return }
|
|
108
|
+
let body: Record<string, unknown> | null
|
|
109
|
+
try { body = await readJsonObject(req) } catch { writeJson(res, 400, BAD_REQUEST); return }
|
|
110
|
+
const path = stringField(body, 'path')
|
|
111
|
+
const preset = body?.preset
|
|
112
|
+
if (path === null || typeof preset !== 'object' || preset === null || Array.isArray(preset)) {
|
|
113
|
+
writeJson(res, 400, BAD_REQUEST); return
|
|
114
|
+
}
|
|
115
|
+
const p = preset as Partial<WorkspaceModelPreset>
|
|
116
|
+
if (typeof p.provider !== 'string' || p.provider === '' || typeof p.model !== 'string' || p.model === '') {
|
|
117
|
+
writeJson(res, 400, BAD_REQUEST); return
|
|
118
|
+
}
|
|
119
|
+
if (p.reasoningEffort !== undefined && typeof p.reasoningEffort !== 'string') {
|
|
120
|
+
writeJson(res, 400, BAD_REQUEST); return
|
|
121
|
+
}
|
|
122
|
+
const input: SetWorkspaceModelInput = {
|
|
123
|
+
path,
|
|
124
|
+
preset: { provider: p.provider, model: p.model, ...(p.reasoningEffort !== undefined ? { reasoningEffort: p.reasoningEffort } : {}) },
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const stored = await manager.set(input.path, input.preset)
|
|
128
|
+
respond<WorkspaceModelPreset>(res, { ok: true, value: stored })
|
|
129
|
+
} catch (error) {
|
|
130
|
+
writeJson(res, 500, { ok: false, code: 'bad-request', message: error instanceof Error ? error.message : String(error) })
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
}))
|
|
134
|
+
|
|
135
|
+
// POST /workspace-model/clear
|
|
136
|
+
own(ctx.webServer.register({
|
|
137
|
+
kind: 'exact',
|
|
138
|
+
path: `${WORKSPACE_MODEL_PREFIX}/clear`,
|
|
139
|
+
handler: async (req, res) => {
|
|
140
|
+
if (req.method === 'OPTIONS') { handleOptions(res); return }
|
|
141
|
+
if (req.method !== 'POST') { writeJson(res, 405, BAD_REQUEST); return }
|
|
142
|
+
if (!canMutate(req)) { writeJson(res, 403, FORBIDDEN); return }
|
|
143
|
+
let body: Record<string, unknown> | null
|
|
144
|
+
try { body = await readJsonObject(req) } catch { writeJson(res, 400, BAD_REQUEST); return }
|
|
145
|
+
const path = stringField(body, 'path')
|
|
146
|
+
if (path === null) { writeJson(res, 400, BAD_REQUEST); return }
|
|
147
|
+
try {
|
|
148
|
+
const removed = await manager.clear(path)
|
|
149
|
+
respond<boolean>(res, { ok: true, value: removed })
|
|
150
|
+
} catch (error) {
|
|
151
|
+
writeJson(res, 500, { ok: false, code: 'bad-request', message: error instanceof Error ? error.message : String(error) })
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
}))
|
|
155
|
+
|
|
156
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host workspace-model manager: owns the workspace-granularity model preset
|
|
3
|
+
* document. Presets are stored in a plugin-own settings namespace
|
|
4
|
+
* (`workspace-model`) as a `{ [canonicalPath]: { provider, model, effort? } }`
|
|
5
|
+
* map, so a single user-editable document is the source of truth across
|
|
6
|
+
* machines and reloads.
|
|
7
|
+
*
|
|
8
|
+
* The settings service is optional: when no settings provider is mounted the
|
|
9
|
+
* manager degrades to an in-memory-only store (model presets still apply for
|
|
10
|
+
* the process lifetime, just not durable) rather than failing to mount.
|
|
11
|
+
* @module dsh-client-ui-worktree/host/workspace-model
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { realpathSync } from 'node:fs'
|
|
15
|
+
import type { Context } from '@deepseek-ai/cordis'
|
|
16
|
+
import { familyNamespace, registerFamilyNamespace, updateFamilyNamespace } from '../family-config.ts'
|
|
17
|
+
import type { SettingsNamespace } from '@deepseek-ai/dsh-settings'
|
|
18
|
+
import z from 'schemastery'
|
|
19
|
+
import type {
|
|
20
|
+
WorkspaceModelPreset, WorkspacePresetMap,
|
|
21
|
+
} from '../../../core/worktree/workspace-model.ts'
|
|
22
|
+
|
|
23
|
+
/** Settings namespace unique to this plugin. */
|
|
24
|
+
export const WORKSPACE_MODEL_NS = 'workspace-model'
|
|
25
|
+
|
|
26
|
+
/** Schemastery schema for the preset document (a path -> preset map). */
|
|
27
|
+
export const WorkspacePresetSchema = z.dict(z.object({
|
|
28
|
+
provider: z.string().required(),
|
|
29
|
+
model: z.string().required(),
|
|
30
|
+
reasoningEffort: z.string(),
|
|
31
|
+
})).default({}) as unknown as z<WorkspacePresetMap>
|
|
32
|
+
|
|
33
|
+
/** Face over the settings service the manager talks to (settings optional). */
|
|
34
|
+
interface SettingsFace {
|
|
35
|
+
get(): WorkspacePresetMap
|
|
36
|
+
replace(section: WorkspacePresetMap): Promise<void>
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** Canonicalize a workspace path for use as a document key. Follows symlinks
|
|
40
|
+
* via realpath and strips a trailing separator, matching how the workspace
|
|
41
|
+
* registry records paths and how sessions record `cwd`. The root path `/`
|
|
42
|
+
* is preserved (and is the only case where stripping the trailing separator
|
|
43
|
+
* is a no-op, because paths must be non-empty when used as a key). */
|
|
44
|
+
export function canonicalWorkspacePath(path: string): string {
|
|
45
|
+
if (typeof path !== 'string' || path.length === 0) return path
|
|
46
|
+
let canonical: string
|
|
47
|
+
try {
|
|
48
|
+
canonical = realpathSync(path)
|
|
49
|
+
} catch {
|
|
50
|
+
canonical = path.replace(/\\/g, '/')
|
|
51
|
+
}
|
|
52
|
+
// Strip trailing separator(s) but preserve the root.
|
|
53
|
+
const stripped = canonical.replace(/[\\/]+$/, '')
|
|
54
|
+
return stripped === '' ? canonical : stripped
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
registerFamilyNamespace(WORKSPACE_MODEL_NS, WorkspacePresetSchema)
|
|
58
|
+
|
|
59
|
+
/** Public surface used by `routes.ts` and the agent wiring. */
|
|
60
|
+
export class WorkspaceModelManager {
|
|
61
|
+
private settings: SettingsFace | null = null
|
|
62
|
+
private memory = new Map<string, WorkspaceModelPreset>()
|
|
63
|
+
private settingsFiber: { dispose(): void | Promise<void> } | undefined
|
|
64
|
+
|
|
65
|
+
dispose(): void {
|
|
66
|
+
this.settings = null
|
|
67
|
+
void this.settingsFiber?.dispose()
|
|
68
|
+
this.settingsFiber = undefined
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/** Optional settings service; safe to call with an unmounted provider. */
|
|
72
|
+
constructor(private readonly ctx: Context) {
|
|
73
|
+
this.installSettings()
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Wire the workspace-model namespace to the 0.2 settings document. */
|
|
77
|
+
private installSettings(): void {
|
|
78
|
+
this.settingsFiber = this.ctx.inject(['settings'], (sctx) => {
|
|
79
|
+
const ns = WORKSPACE_MODEL_NS
|
|
80
|
+
this.settings = {
|
|
81
|
+
get: () => (familyNamespace<WorkspacePresetMap>(ns) ?? {}),
|
|
82
|
+
replace: async (section) => {
|
|
83
|
+
await updateFamilyNamespace(sctx, ns, section as unknown as Record<string, unknown>)
|
|
84
|
+
},
|
|
85
|
+
}
|
|
86
|
+
this.seedMemory(this.settings.get())
|
|
87
|
+
})
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** Replace the in-memory mirror from a resolved document. */
|
|
91
|
+
private seedMemory(map: WorkspacePresetMap): void {
|
|
92
|
+
this.memory = new Map(Object.entries(map ?? {}))
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** All stored presets keyed by canonical path (read snapshot). */
|
|
96
|
+
list(): Record<string, WorkspaceModelPreset> {
|
|
97
|
+
return Object.fromEntries(this.memory)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** The preset for one workspace path, or undefined when none. */
|
|
101
|
+
get(path: string): WorkspaceModelPreset | undefined {
|
|
102
|
+
return this.memory.get(canonicalWorkspacePath(path))
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** Store a preset for one workspace path. Returns the stored preset. */
|
|
106
|
+
async set(path: string, preset: WorkspaceModelPreset): Promise<WorkspaceModelPreset> {
|
|
107
|
+
const key = canonicalWorkspacePath(path)
|
|
108
|
+
if (this.settings !== null) {
|
|
109
|
+
const next = { ...this.settings.get(), [key]: { ...preset } }
|
|
110
|
+
await this.settings.replace(next)
|
|
111
|
+
this.seedMemory(next)
|
|
112
|
+
} else {
|
|
113
|
+
this.memory.set(key, { ...preset })
|
|
114
|
+
}
|
|
115
|
+
return { ...preset }
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** Remove a workspace's preset if present. Returns true when removed. */
|
|
119
|
+
async clear(path: string): Promise<boolean> {
|
|
120
|
+
const key = canonicalWorkspacePath(path)
|
|
121
|
+
const existed = this.memory.has(key)
|
|
122
|
+
if (this.settings !== null) {
|
|
123
|
+
const next = { ...this.settings.get() }
|
|
124
|
+
delete next[key]
|
|
125
|
+
await this.settings.replace(next)
|
|
126
|
+
this.seedMemory(next)
|
|
127
|
+
} else {
|
|
128
|
+
this.memory.delete(key)
|
|
129
|
+
}
|
|
130
|
+
return existed
|
|
131
|
+
}
|
|
132
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dsh-web-all — host half.
|
|
3
|
+
*
|
|
4
|
+
* dsh-cove 的唯一运行时实体。host 半区按服务域组织(src/host/services/*),
|
|
5
|
+
* 每个服务域导出一个 register(ctx) 注册函数,由本文件统一装配;
|
|
6
|
+
* cordis.patch.yml 只有一行 `web-all`。
|
|
7
|
+
*
|
|
8
|
+
* 服务域不按能力对外暴露插件边界:路由前缀(/api/dsh-ssh 等)、agent 工具名
|
|
9
|
+
* (ssh_exec 等)、settings namespace(dsh-ssh 等)保持不变,仅注册入口收敛。
|
|
10
|
+
*/
|
|
11
|
+
import type { Context } from '@deepseek-ai/cordis'
|
|
12
|
+
import { assembleServices } from './host/services/index.ts'
|
|
13
|
+
import { bindFamilyConfig, createFamilyConfig, notifyFamilyConfigChange } from './host/services/family-config.ts'
|
|
14
|
+
|
|
15
|
+
/** Stable cordis plugin name (matches cordis.patch.yml insert id). */
|
|
16
|
+
export const name = 'web-all'
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Services the host half needs before any service domain can mount.
|
|
20
|
+
* 每个服务域会声明自己的额外依赖;装配器把 ctx 完整交给它们。
|
|
21
|
+
*/
|
|
22
|
+
export const inject = [
|
|
23
|
+
'webServer',
|
|
24
|
+
'tools',
|
|
25
|
+
'systemPrompt',
|
|
26
|
+
'settings',
|
|
27
|
+
'sessions',
|
|
28
|
+
'sessionController',
|
|
29
|
+
'workspaceController',
|
|
30
|
+
'workspaceRegistry',
|
|
31
|
+
'connection',
|
|
32
|
+
'subprocess',
|
|
33
|
+
'fs',
|
|
34
|
+
'agentPresets',
|
|
35
|
+
'commands',
|
|
36
|
+
'agents',
|
|
37
|
+
] as const
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* 插件 config 类型面(运行时的权威 schema 是下面导出的 `Config`)。
|
|
41
|
+
* 命名空间键(doctor / remote-web-ui / dsh-ssh / …)即各能力域的设置命名空间。
|
|
42
|
+
*/
|
|
43
|
+
export interface Config extends Record<string, unknown> {
|
|
44
|
+
/** 用户 dsh 配置根(默认 $DSH_HOME 或 ~/.dsh)。 */
|
|
45
|
+
dshHome?: string
|
|
46
|
+
/** 用户 agents 配置根(默认 $DSH_AGENTS_HOME 或 ~/.agents)。 */
|
|
47
|
+
agentsHome?: string
|
|
48
|
+
/** Worktree PR credential reference. */
|
|
49
|
+
worktree?: import('./host/services/worktree/index.ts').WorktreeServiceConfig
|
|
50
|
+
/** Playwright sessions service options (profile overridable; `liveView` enables the agent-browser live view). */
|
|
51
|
+
playwright?: import('./core/playwright-sessions/contracts.ts').PlaywrightSessionsConfig
|
|
52
|
+
/** 跳过 BrowserAuth token/cookie 检查;仅可信反向代理或局域网显式启用。 */
|
|
53
|
+
noBrowserAuth?: boolean
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* 运行时 Config(0.2 原生设置模型的入口):聚合条目 = 装配参数 + 每个能力域的
|
|
58
|
+
* 设置命名空间(volatile)。导出后该条目才会出现在原生设置文档里,家族设置
|
|
59
|
+
* 才能被读写而不必重挂插件。构建时机必须在装配器 import 求值之后——见
|
|
60
|
+
* `createFamilyConfig` 的注释。
|
|
61
|
+
*/
|
|
62
|
+
export const Config = createFamilyConfig()
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Application entry:装配全部 host 服务域。
|
|
66
|
+
* @param ctx - host plugin context。
|
|
67
|
+
*/
|
|
68
|
+
export function apply(ctx: Context, config?: Config): void {
|
|
69
|
+
// 绑定 loader 解析后的聚合 config:volatile 节点是引用,设置变更会原地热更新。
|
|
70
|
+
bindFamilyConfig(config)
|
|
71
|
+
// 设置变更扇出:注册时读一次的服务域据此重新 sync(无需重挂插件)。
|
|
72
|
+
ctx.effect(() => {
|
|
73
|
+
const off = (ctx as unknown as { on?: (event: string, listener: () => void) => (() => void) | undefined }).on?.('loader/volatile-update', () => { notifyFamilyConfigChange() })
|
|
74
|
+
const offSettings = (ctx as unknown as { on?: (event: string, listener: () => void) => (() => void) | undefined }).on?.('settings/document-updated', () => { notifyFamilyConfigChange() })
|
|
75
|
+
return () => { off?.(); offSettings?.() }
|
|
76
|
+
}, 'web-all: settings change fan-out')
|
|
77
|
+
ctx.effect(async () => assembleServices(ctx, {
|
|
78
|
+
dshHome: config?.dshHome,
|
|
79
|
+
agentsHome: config?.agentsHome,
|
|
80
|
+
noBrowserAuth: config?.noBrowserAuth,
|
|
81
|
+
worktree: config?.worktree,
|
|
82
|
+
playwright: config?.playwright,
|
|
83
|
+
}), 'web-all: host services')
|
|
84
|
+
}
|
package/src/invariant.ts
ADDED