@dsh-cove/dsh-web-all 0.0.0-stage → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.i18n.yaml +6 -0
- package/README.md +205 -2
- package/README.zh.md +205 -0
- package/cordis.patch.yml +59 -0
- package/lib/client.js +25413 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +20024 -0
- package/lib/invariant.js +6 -0
- package/lib/types/client/compat.d.ts +29 -0
- package/lib/types/client/compat.d.ts.map +1 -0
- package/lib/types/client/compat.js +69 -0
- package/lib/types/client/conversation/git-branch.d.ts +13 -0
- package/lib/types/client/conversation/git-branch.d.ts.map +1 -0
- package/lib/types/client/conversation/git-branch.js +121 -0
- package/lib/types/client/conversation/git-graph/api.d.ts +42 -0
- package/lib/types/client/conversation/git-graph/api.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/api.js +72 -0
- package/lib/types/client/conversation/git-graph/branch-chip.d.ts +47 -0
- package/lib/types/client/conversation/git-graph/branch-chip.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/branch-chip.js +268 -0
- package/lib/types/client/conversation/git-graph/branch-popover.d.ts +32 -0
- package/lib/types/client/conversation/git-graph/branch-popover.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/branch-popover.js +108 -0
- package/lib/types/client/conversation/git-graph/chip.d.ts +24 -0
- package/lib/types/client/conversation/git-graph/chip.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/chip.js +15 -0
- package/lib/types/client/conversation/git-graph/create-branch-dialog.d.ts +30 -0
- package/lib/types/client/conversation/git-graph/create-branch-dialog.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/create-branch-dialog.js +52 -0
- package/lib/types/client/conversation/git-graph/error-copy.d.ts +17 -0
- package/lib/types/client/conversation/git-graph/error-copy.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/error-copy.js +44 -0
- package/lib/types/client/conversation/git-graph/graph-dialog.d.ts +21 -0
- package/lib/types/client/conversation/git-graph/graph-dialog.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/graph-dialog.js +112 -0
- package/lib/types/client/conversation/git-graph/hero-seat.d.ts +53 -0
- package/lib/types/client/conversation/git-graph/hero-seat.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/hero-seat.js +54 -0
- package/lib/types/client/conversation/git-graph/locales.d.ts +88 -0
- package/lib/types/client/conversation/git-graph/locales.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/locales.js +85 -0
- package/lib/types/client/conversation/git-graph/sse-leader.d.ts +37 -0
- package/lib/types/client/conversation/git-graph/sse-leader.d.ts.map +1 -0
- package/lib/types/client/conversation/git-graph/sse-leader.js +101 -0
- package/lib/types/client/conversation/index.d.ts +43 -0
- package/lib/types/client/conversation/index.d.ts.map +1 -0
- package/lib/types/client/conversation/index.js +39 -0
- package/lib/types/client/conversation/selector-context.d.ts +12 -0
- package/lib/types/client/conversation/selector-context.d.ts.map +1 -0
- package/lib/types/client/conversation/selector-context.js +11 -0
- package/lib/types/client/conversation/session-lane-chip.d.ts +72 -0
- package/lib/types/client/conversation/session-lane-chip.d.ts.map +1 -0
- package/lib/types/client/conversation/session-lane-chip.js +163 -0
- package/lib/types/client/conversation/session-lane-locales.d.ts +22 -0
- package/lib/types/client/conversation/session-lane-locales.d.ts.map +1 -0
- package/lib/types/client/conversation/session-lane-locales.js +29 -0
- package/lib/types/client/conversation/subagent-model-dom.d.ts +16 -0
- package/lib/types/client/conversation/subagent-model-dom.d.ts.map +1 -0
- package/lib/types/client/conversation/subagent-model-dom.js +138 -0
- package/lib/types/client/conversation/subagent-model.d.ts +17 -0
- package/lib/types/client/conversation/subagent-model.d.ts.map +1 -0
- package/lib/types/client/conversation/subagent-model.js +156 -0
- package/lib/types/client/conversation/worktree/api.d.ts +97 -0
- package/lib/types/client/conversation/worktree/api.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/api.js +239 -0
- package/lib/types/client/conversation/worktree/dialogs/DeleteWorktreeDialog.d.ts +35 -0
- package/lib/types/client/conversation/worktree/dialogs/DeleteWorktreeDialog.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/dialogs/DeleteWorktreeDialog.js +55 -0
- package/lib/types/client/conversation/worktree/dialogs/PrCreateDialog.d.ts +27 -0
- package/lib/types/client/conversation/worktree/dialogs/PrCreateDialog.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/dialogs/PrCreateDialog.js +49 -0
- package/lib/types/client/conversation/worktree/lane-binding.d.ts +46 -0
- package/lib/types/client/conversation/worktree/lane-binding.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-binding.js +60 -0
- package/lib/types/client/conversation/worktree/lane-menu.d.ts +51 -0
- package/lib/types/client/conversation/worktree/lane-menu.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-menu.js +140 -0
- package/lib/types/client/conversation/worktree/lane-open.d.ts +126 -0
- package/lib/types/client/conversation/worktree/lane-open.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-open.js +140 -0
- package/lib/types/client/conversation/worktree/lane-workspace-sweeper.d.ts +79 -0
- package/lib/types/client/conversation/worktree/lane-workspace-sweeper.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lane-workspace-sweeper.js +116 -0
- package/lib/types/client/conversation/worktree/lifecycle.d.ts +29 -0
- package/lib/types/client/conversation/worktree/lifecycle.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/lifecycle.js +67 -0
- package/lib/types/client/conversation/worktree/locales.d.ts +58 -0
- package/lib/types/client/conversation/worktree/locales.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/locales.js +86 -0
- package/lib/types/client/conversation/worktree/semantic.d.ts +11 -0
- package/lib/types/client/conversation/worktree/semantic.d.ts.map +1 -0
- package/lib/types/client/conversation/worktree/semantic.js +10 -0
- package/lib/types/client/index.d.ts +14 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/lib/types/client/index.js +45 -0
- package/lib/types/client/lark-inbox/i18n.d.ts +63 -0
- package/lib/types/client/lark-inbox/i18n.d.ts.map +1 -0
- package/lib/types/client/lark-inbox/i18n.js +119 -0
- package/lib/types/client/lark-inbox/wizard.d.ts +19 -0
- package/lib/types/client/lark-inbox/wizard.d.ts.map +1 -0
- package/lib/types/client/lark-inbox/wizard.js +158 -0
- package/lib/types/client/notify/i18n.d.ts +47 -0
- package/lib/types/client/notify/i18n.d.ts.map +1 -0
- package/lib/types/client/notify/i18n.js +87 -0
- package/lib/types/client/settings/family-scope.d.ts +23 -0
- package/lib/types/client/settings/family-scope.d.ts.map +1 -0
- package/lib/types/client/settings/family-scope.js +30 -0
- package/lib/types/client/settings/lark-inbox.d.ts +73 -0
- package/lib/types/client/settings/lark-inbox.d.ts.map +1 -0
- package/lib/types/client/settings/lark-inbox.js +144 -0
- package/lib/types/client/settings/notify.d.ts +66 -0
- package/lib/types/client/settings/notify.d.ts.map +1 -0
- package/lib/types/client/settings/notify.js +139 -0
- package/lib/types/client/settings/primitives-0.2.d.ts +137 -0
- package/lib/types/client/settings/primitives-0.2.d.ts.map +1 -0
- package/lib/types/client/settings/primitives-0.2.js +8 -0
- package/lib/types/client/sidebar/RenderBoundary.d.ts +17 -0
- package/lib/types/client/sidebar/RenderBoundary.d.ts.map +1 -0
- package/lib/types/client/sidebar/RenderBoundary.js +18 -0
- package/lib/types/client/sidebar/agent-browser.d.ts +9 -0
- package/lib/types/client/sidebar/agent-browser.d.ts.map +1 -0
- package/lib/types/client/sidebar/agent-browser.js +102 -0
- package/lib/types/client/sidebar/diff-view.d.ts +58 -0
- package/lib/types/client/sidebar/diff-view.d.ts.map +1 -0
- package/lib/types/client/sidebar/diff-view.js +223 -0
- package/lib/types/client/sidebar/git-workbench.d.ts +41 -0
- package/lib/types/client/sidebar/git-workbench.d.ts.map +1 -0
- package/lib/types/client/sidebar/git-workbench.js +480 -0
- package/lib/types/client/sidebar/icons.d.ts +9 -0
- package/lib/types/client/sidebar/icons.d.ts.map +1 -0
- package/lib/types/client/sidebar/icons.js +6 -0
- package/lib/types/client/sidebar/index.d.ts +19 -0
- package/lib/types/client/sidebar/index.d.ts.map +1 -0
- package/lib/types/client/sidebar/index.js +12 -0
- package/lib/types/client/sidebar/native-panels.d.ts +19 -0
- package/lib/types/client/sidebar/native-panels.d.ts.map +1 -0
- package/lib/types/client/sidebar/native-panels.js +103 -0
- package/lib/types/client/sidebar/page-shell.d.ts +52 -0
- package/lib/types/client/sidebar/page-shell.d.ts.map +1 -0
- package/lib/types/client/sidebar/page-shell.js +18 -0
- package/lib/types/client/sidebar/panels/memoir/api.d.ts +258 -0
- package/lib/types/client/sidebar/panels/memoir/api.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/api.js +135 -0
- package/lib/types/client/sidebar/panels/memoir/controller.d.ts +22 -0
- package/lib/types/client/sidebar/panels/memoir/controller.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/controller.js +38 -0
- package/lib/types/client/sidebar/panels/memoir/cwd.d.ts +80 -0
- package/lib/types/client/sidebar/panels/memoir/cwd.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/cwd.js +96 -0
- package/lib/types/client/sidebar/panels/memoir/i18n.d.ts +21 -0
- package/lib/types/client/sidebar/panels/memoir/i18n.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/i18n.js +288 -0
- package/lib/types/client/sidebar/panels/memoir/panel-activation.d.ts +11 -0
- package/lib/types/client/sidebar/panels/memoir/panel-activation.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/panel-activation.js +37 -0
- package/lib/types/client/sidebar/panels/memoir/panel.d.ts +26 -0
- package/lib/types/client/sidebar/panels/memoir/panel.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/panel.js +423 -0
- package/lib/types/client/sidebar/panels/memoir/styles.d.ts +22 -0
- package/lib/types/client/sidebar/panels/memoir/styles.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/styles.js +774 -0
- package/lib/types/client/sidebar/panels/memoir/types.d.ts +7 -0
- package/lib/types/client/sidebar/panels/memoir/types.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/memoir/types.js +5 -0
- package/lib/types/client/sidebar/panels/ssh/ClusterTab.d.ts +8 -0
- package/lib/types/client/sidebar/panels/ssh/ClusterTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/ClusterTab.js +53 -0
- package/lib/types/client/sidebar/panels/ssh/HostFormDialog.d.ts +13 -0
- package/lib/types/client/sidebar/panels/ssh/HostFormDialog.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/HostFormDialog.js +110 -0
- package/lib/types/client/sidebar/panels/ssh/HostsTab.d.ts +26 -0
- package/lib/types/client/sidebar/panels/ssh/HostsTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/HostsTab.js +175 -0
- package/lib/types/client/sidebar/panels/ssh/SshPanel.d.ts +14 -0
- package/lib/types/client/sidebar/panels/ssh/SshPanel.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/SshPanel.js +34 -0
- package/lib/types/client/sidebar/panels/ssh/TerminalTab.d.ts +18 -0
- package/lib/types/client/sidebar/panels/ssh/TerminalTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/TerminalTab.js +207 -0
- package/lib/types/client/sidebar/panels/ssh/TransferTab.d.ts +8 -0
- package/lib/types/client/sidebar/panels/ssh/TransferTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/TransferTab.js +168 -0
- package/lib/types/client/sidebar/panels/ssh/TunnelsTab.d.ts +18 -0
- package/lib/types/client/sidebar/panels/ssh/TunnelsTab.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/TunnelsTab.js +161 -0
- package/lib/types/client/sidebar/panels/ssh/api.d.ts +80 -0
- package/lib/types/client/sidebar/panels/ssh/api.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/api.js +333 -0
- package/lib/types/client/sidebar/panels/ssh/controller.d.ts +23 -0
- package/lib/types/client/sidebar/panels/ssh/controller.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/controller.js +41 -0
- package/lib/types/client/sidebar/panels/ssh/helpers.d.ts +44 -0
- package/lib/types/client/sidebar/panels/ssh/helpers.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/helpers.js +53 -0
- package/lib/types/client/sidebar/panels/ssh/locales.d.ts +155 -0
- package/lib/types/client/sidebar/panels/ssh/locales.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/locales.js +312 -0
- package/lib/types/client/sidebar/panels/ssh/xterm.css.d.ts +3 -0
- package/lib/types/client/sidebar/panels/ssh/xterm.css.d.ts.map +1 -0
- package/lib/types/client/sidebar/panels/ssh/xterm.css.js +2 -0
- package/lib/types/client/sidebar/right-pane-i18n.d.ts +121 -0
- package/lib/types/client/sidebar/right-pane-i18n.d.ts.map +1 -0
- package/lib/types/client/sidebar/right-pane-i18n.js +239 -0
- package/lib/types/client/sidebar/right-pane.d.ts +27 -0
- package/lib/types/client/sidebar/right-pane.d.ts.map +1 -0
- package/lib/types/client/sidebar/right-pane.js +112 -0
- package/lib/types/client/sidebar/scope.d.ts +17 -0
- package/lib/types/client/sidebar/scope.d.ts.map +1 -0
- package/lib/types/client/sidebar/scope.js +41 -0
- package/lib/types/client/trust.d.ts +78 -0
- package/lib/types/client/trust.d.ts.map +1 -0
- package/lib/types/client/trust.js +130 -0
- package/lib/types/client/ui-icons.d.ts +19 -0
- package/lib/types/client/ui-icons.d.ts.map +1 -0
- package/lib/types/client/ui-icons.js +33 -0
- package/lib/types/core/git-graph/commands.d.ts +36 -0
- package/lib/types/core/git-graph/commands.d.ts.map +1 -0
- package/lib/types/core/git-graph/commands.js +122 -0
- package/lib/types/core/git-graph/protocol.d.ts +104 -0
- package/lib/types/core/git-graph/protocol.d.ts.map +1 -0
- package/lib/types/core/git-graph/protocol.js +142 -0
- package/lib/types/core/index.d.ts +3 -0
- package/lib/types/core/index.d.ts.map +1 -0
- package/lib/types/core/index.js +2 -0
- package/lib/types/core/lark-inbox/gating.d.ts +21 -0
- package/lib/types/core/lark-inbox/gating.d.ts.map +1 -0
- package/lib/types/core/lark-inbox/gating.js +17 -0
- package/lib/types/core/lark-inbox/queue.d.ts +27 -0
- package/lib/types/core/lark-inbox/queue.d.ts.map +1 -0
- package/lib/types/core/lark-inbox/queue.js +78 -0
- package/lib/types/core/memoir/protocol.d.ts +42 -0
- package/lib/types/core/memoir/protocol.d.ts.map +1 -0
- package/lib/types/core/memoir/protocol.js +8 -0
- package/lib/types/core/no-browser-auth/contract.d.ts +22 -0
- package/lib/types/core/no-browser-auth/contract.d.ts.map +1 -0
- package/lib/types/core/no-browser-auth/contract.js +9 -0
- package/lib/types/core/notify/contract.d.ts +133 -0
- package/lib/types/core/notify/contract.d.ts.map +1 -0
- package/lib/types/core/notify/contract.js +186 -0
- package/lib/types/core/notify/feed.d.ts +116 -0
- package/lib/types/core/notify/feed.d.ts.map +1 -0
- package/lib/types/core/notify/feed.js +214 -0
- package/lib/types/core/playwright-sessions/contracts.d.ts +98 -0
- package/lib/types/core/playwright-sessions/contracts.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/contracts.js +68 -0
- package/lib/types/core/playwright-sessions/control.d.ts +19 -0
- package/lib/types/core/playwright-sessions/control.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/control.js +9 -0
- package/lib/types/core/playwright-sessions/index.d.ts +4 -0
- package/lib/types/core/playwright-sessions/index.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/index.js +3 -0
- package/lib/types/core/playwright-sessions/names.d.ts +4 -0
- package/lib/types/core/playwright-sessions/names.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/names.js +84 -0
- package/lib/types/core/playwright-sessions/schema.d.ts +4 -0
- package/lib/types/core/playwright-sessions/schema.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/schema.js +90 -0
- package/lib/types/core/playwright-sessions/wire.d.ts +78 -0
- package/lib/types/core/playwright-sessions/wire.d.ts.map +1 -0
- package/lib/types/core/playwright-sessions/wire.js +103 -0
- package/lib/types/core/remote-access/paths.d.ts +19 -0
- package/lib/types/core/remote-access/paths.d.ts.map +1 -0
- package/lib/types/core/remote-access/paths.js +18 -0
- package/lib/types/core/remote-web-ui/security.d.ts +35 -0
- package/lib/types/core/remote-web-ui/security.d.ts.map +1 -0
- package/lib/types/core/remote-web-ui/security.js +146 -0
- package/lib/types/core/right-pane/protocol.d.ts +25 -0
- package/lib/types/core/right-pane/protocol.d.ts.map +1 -0
- package/lib/types/core/right-pane/protocol.js +91 -0
- package/lib/types/core/schedule-mode/index.d.ts +7 -0
- package/lib/types/core/schedule-mode/index.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/index.js +6 -0
- package/lib/types/core/schedule-mode/native.d.ts +35 -0
- package/lib/types/core/schedule-mode/native.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/native.js +82 -0
- package/lib/types/core/schedule-mode/types.d.ts +177 -0
- package/lib/types/core/schedule-mode/types.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/types.js +65 -0
- package/lib/types/core/schedule-mode/view.d.ts +62 -0
- package/lib/types/core/schedule-mode/view.d.ts.map +1 -0
- package/lib/types/core/schedule-mode/view.js +4 -0
- package/lib/types/core/ssh/protocol.d.ts +215 -0
- package/lib/types/core/ssh/protocol.d.ts.map +1 -0
- package/lib/types/core/ssh/protocol.js +23 -0
- package/lib/types/core/subagent-model/badges.d.ts +73 -0
- package/lib/types/core/subagent-model/badges.d.ts.map +1 -0
- package/lib/types/core/subagent-model/badges.js +105 -0
- package/lib/types/core/worktree/invariant.d.ts +62 -0
- package/lib/types/core/worktree/invariant.d.ts.map +1 -0
- package/lib/types/core/worktree/invariant.js +72 -0
- package/lib/types/core/worktree/manifest.d.ts +71 -0
- package/lib/types/core/worktree/manifest.d.ts.map +1 -0
- package/lib/types/core/worktree/manifest.js +98 -0
- package/lib/types/core/worktree/paths.d.ts +60 -0
- package/lib/types/core/worktree/paths.d.ts.map +1 -0
- package/lib/types/core/worktree/paths.js +118 -0
- package/lib/types/core/worktree/pr-create.d.ts +67 -0
- package/lib/types/core/worktree/pr-create.d.ts.map +1 -0
- package/lib/types/core/worktree/pr-create.js +118 -0
- package/lib/types/core/worktree/protocol.d.ts +7 -0
- package/lib/types/core/worktree/protocol.d.ts.map +1 -0
- package/lib/types/core/worktree/protocol.js +6 -0
- package/lib/types/core/worktree/types.d.ts +292 -0
- package/lib/types/core/worktree/types.d.ts.map +1 -0
- package/lib/types/core/worktree/types.js +14 -0
- package/lib/types/core/worktree/workspace-model.d.ts +56 -0
- package/lib/types/core/worktree/workspace-model.d.ts.map +1 -0
- package/lib/types/core/worktree/workspace-model.js +14 -0
- package/lib/types/host/services/access-trust/index.d.ts +54 -0
- package/lib/types/host/services/access-trust/index.d.ts.map +1 -0
- package/lib/types/host/services/access-trust/index.js +82 -0
- package/lib/types/host/services/access-trust/trust.d.ts +70 -0
- package/lib/types/host/services/access-trust/trust.d.ts.map +1 -0
- package/lib/types/host/services/access-trust/trust.js +187 -0
- package/lib/types/host/services/codex-bridge/bridge.d.ts +106 -0
- package/lib/types/host/services/codex-bridge/bridge.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/bridge.js +321 -0
- package/lib/types/host/services/codex-bridge/codex-auth.d.ts +108 -0
- package/lib/types/host/services/codex-bridge/codex-auth.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/codex-auth.js +241 -0
- package/lib/types/host/services/codex-bridge/dsh-integration.d.ts +58 -0
- package/lib/types/host/services/codex-bridge/dsh-integration.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/dsh-integration.js +120 -0
- package/lib/types/host/services/codex-bridge/http.d.ts +43 -0
- package/lib/types/host/services/codex-bridge/http.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/http.js +92 -0
- package/lib/types/host/services/codex-bridge/index.d.ts +63 -0
- package/lib/types/host/services/codex-bridge/index.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/index.js +111 -0
- package/lib/types/host/services/codex-bridge/loopback.d.ts +25 -0
- package/lib/types/host/services/codex-bridge/loopback.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/loopback.js +68 -0
- package/lib/types/host/services/codex-bridge/routes.d.ts +31 -0
- package/lib/types/host/services/codex-bridge/routes.d.ts.map +1 -0
- package/lib/types/host/services/codex-bridge/routes.js +126 -0
- package/lib/types/host/services/family-config.d.ts +71 -0
- package/lib/types/host/services/family-config.d.ts.map +1 -0
- package/lib/types/host/services/family-config.js +166 -0
- package/lib/types/host/services/family-namespaces.d.ts +24 -0
- package/lib/types/host/services/family-namespaces.d.ts.map +1 -0
- package/lib/types/host/services/family-namespaces.js +30 -0
- package/lib/types/host/services/git-graph/index.d.ts +6 -0
- package/lib/types/host/services/git-graph/index.d.ts.map +1 -0
- package/lib/types/host/services/git-graph/index.js +7 -0
- package/lib/types/host/services/git-graph/routes.d.ts +4 -0
- package/lib/types/host/services/git-graph/routes.d.ts.map +1 -0
- package/lib/types/host/services/git-graph/routes.js +241 -0
- package/lib/types/host/services/git-graph/service.d.ts +52 -0
- package/lib/types/host/services/git-graph/service.d.ts.map +1 -0
- package/lib/types/host/services/git-graph/service.js +301 -0
- package/lib/types/host/services/index.d.ts +23 -0
- package/lib/types/host/services/index.d.ts.map +1 -0
- package/lib/types/host/services/index.js +80 -0
- package/lib/types/host/services/lark-inbox/config.d.ts +24 -0
- package/lib/types/host/services/lark-inbox/config.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/config.js +48 -0
- package/lib/types/host/services/lark-inbox/gateway.d.ts +53 -0
- package/lib/types/host/services/lark-inbox/gateway.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/gateway.js +171 -0
- package/lib/types/host/services/lark-inbox/host-routes.d.ts +22 -0
- package/lib/types/host/services/lark-inbox/host-routes.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/host-routes.js +146 -0
- package/lib/types/host/services/lark-inbox/inbox-store.d.ts +39 -0
- package/lib/types/host/services/lark-inbox/inbox-store.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/inbox-store.js +124 -0
- package/lib/types/host/services/lark-inbox/index.d.ts +26 -0
- package/lib/types/host/services/lark-inbox/index.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/index.js +135 -0
- package/lib/types/host/services/lark-inbox/tools.d.ts +7 -0
- package/lib/types/host/services/lark-inbox/tools.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/tools.js +119 -0
- package/lib/types/host/services/lark-inbox/wizard.d.ts +62 -0
- package/lib/types/host/services/lark-inbox/wizard.d.ts.map +1 -0
- package/lib/types/host/services/lark-inbox/wizard.js +211 -0
- package/lib/types/host/services/lifecycle.d.ts +29 -0
- package/lib/types/host/services/lifecycle.d.ts.map +1 -0
- package/lib/types/host/services/lifecycle.js +93 -0
- package/lib/types/host/services/memoir/index.d.ts +40 -0
- package/lib/types/host/services/memoir/index.d.ts.map +1 -0
- package/lib/types/host/services/memoir/index.js +52 -0
- package/lib/types/host/services/memoir/routes.d.ts +30 -0
- package/lib/types/host/services/memoir/routes.d.ts.map +1 -0
- package/lib/types/host/services/memoir/routes.js +364 -0
- package/lib/types/host/services/memoir/settings.d.ts +27 -0
- package/lib/types/host/services/memoir/settings.d.ts.map +1 -0
- package/lib/types/host/services/memoir/settings.js +120 -0
- package/lib/types/host/services/memoir/store.d.ts +35 -0
- package/lib/types/host/services/memoir/store.d.ts.map +1 -0
- package/lib/types/host/services/memoir/store.js +124 -0
- package/lib/types/host/services/memoir/tools.d.ts +8 -0
- package/lib/types/host/services/memoir/tools.d.ts.map +1 -0
- package/lib/types/host/services/memoir/tools.js +154 -0
- package/lib/types/host/services/no-browser-auth/index.d.ts +25 -0
- package/lib/types/host/services/no-browser-auth/index.d.ts.map +1 -0
- package/lib/types/host/services/no-browser-auth/index.js +42 -0
- package/lib/types/host/services/notify/config.d.ts +105 -0
- package/lib/types/host/services/notify/config.d.ts.map +1 -0
- package/lib/types/host/services/notify/config.js +123 -0
- package/lib/types/host/services/notify/feishu-sender.d.ts +120 -0
- package/lib/types/host/services/notify/feishu-sender.d.ts.map +1 -0
- package/lib/types/host/services/notify/feishu-sender.js +186 -0
- package/lib/types/host/services/notify/host-routes.d.ts +69 -0
- package/lib/types/host/services/notify/host-routes.d.ts.map +1 -0
- package/lib/types/host/services/notify/host-routes.js +112 -0
- package/lib/types/host/services/notify/index.d.ts +80 -0
- package/lib/types/host/services/notify/index.d.ts.map +1 -0
- package/lib/types/host/services/notify/index.js +263 -0
- package/lib/types/host/services/playwright-sessions/child.d.ts +76 -0
- package/lib/types/host/services/playwright-sessions/child.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/child.js +197 -0
- package/lib/types/host/services/playwright-sessions/controller.d.ts +25 -0
- package/lib/types/host/services/playwright-sessions/controller.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/controller.js +104 -0
- package/lib/types/host/services/playwright-sessions/index.d.ts +6 -0
- package/lib/types/host/services/playwright-sessions/index.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/index.js +161 -0
- package/lib/types/host/services/playwright-sessions/live-view.d.ts +32 -0
- package/lib/types/host/services/playwright-sessions/live-view.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/live-view.js +188 -0
- package/lib/types/host/services/playwright-sessions/manager.d.ts +87 -0
- package/lib/types/host/services/playwright-sessions/manager.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/manager.js +203 -0
- package/lib/types/host/services/playwright-sessions/profile-gc.d.ts +39 -0
- package/lib/types/host/services/playwright-sessions/profile-gc.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/profile-gc.js +72 -0
- package/lib/types/host/services/playwright-sessions/routes.d.ts +18 -0
- package/lib/types/host/services/playwright-sessions/routes.d.ts.map +1 -0
- package/lib/types/host/services/playwright-sessions/routes.js +87 -0
- package/lib/types/host/services/remote-access/boot-scripts.d.ts +55 -0
- package/lib/types/host/services/remote-access/boot-scripts.d.ts.map +1 -0
- package/lib/types/host/services/remote-access/boot-scripts.js +109 -0
- package/lib/types/host/services/remote-access/index.d.ts +28 -0
- package/lib/types/host/services/remote-access/index.d.ts.map +1 -0
- package/lib/types/host/services/remote-access/index.js +47 -0
- package/lib/types/host/services/remote-access/routes.d.ts +42 -0
- package/lib/types/host/services/remote-access/routes.d.ts.map +1 -0
- package/lib/types/host/services/remote-access/routes.js +119 -0
- package/lib/types/host/services/remote-web-ui/index.d.ts +21 -0
- package/lib/types/host/services/remote-web-ui/index.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/index.js +325 -0
- package/lib/types/host/services/remote-web-ui/server-mode/accounts.d.ts +115 -0
- package/lib/types/host/services/remote-web-ui/server-mode/accounts.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/accounts.js +396 -0
- package/lib/types/host/services/remote-web-ui/server-mode/cookie.d.ts +28 -0
- package/lib/types/host/services/remote-web-ui/server-mode/cookie.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/cookie.js +48 -0
- package/lib/types/host/services/remote-web-ui/server-mode/dsh-home.d.ts +17 -0
- package/lib/types/host/services/remote-web-ui/server-mode/dsh-home.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/dsh-home.js +40 -0
- package/lib/types/host/services/remote-web-ui/server-mode/external-auth.d.ts +73 -0
- package/lib/types/host/services/remote-web-ui/server-mode/external-auth.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/external-auth.js +242 -0
- package/lib/types/host/services/remote-web-ui/server-mode/fence.d.ts +23 -0
- package/lib/types/host/services/remote-web-ui/server-mode/fence.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/fence.js +24 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway-routes.d.ts +89 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway-routes.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway-routes.js +768 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway.d.ts +99 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/gateway.js +679 -0
- package/lib/types/host/services/remote-web-ui/server-mode/http.d.ts +43 -0
- package/lib/types/host/services/remote-web-ui/server-mode/http.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/http.js +92 -0
- package/lib/types/host/services/remote-web-ui/server-mode/integrated-auth.d.ts +42 -0
- package/lib/types/host/services/remote-web-ui/server-mode/integrated-auth.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/integrated-auth.js +73 -0
- package/lib/types/host/services/remote-web-ui/server-mode/lan.d.ts +13 -0
- package/lib/types/host/services/remote-web-ui/server-mode/lan.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/lan.js +17 -0
- package/lib/types/host/services/remote-web-ui/server-mode/loopback.d.ts +25 -0
- package/lib/types/host/services/remote-web-ui/server-mode/loopback.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/loopback.js +68 -0
- package/lib/types/host/services/remote-web-ui/server-mode/posture.d.ts +75 -0
- package/lib/types/host/services/remote-web-ui/server-mode/posture.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/posture.js +116 -0
- package/lib/types/host/services/remote-web-ui/server-mode/roles.d.ts +44 -0
- package/lib/types/host/services/remote-web-ui/server-mode/roles.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/roles.js +47 -0
- package/lib/types/host/services/remote-web-ui/server-mode/server-boot.d.ts +21 -0
- package/lib/types/host/services/remote-web-ui/server-mode/server-boot.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/server-boot.js +37 -0
- package/lib/types/host/services/remote-web-ui/server-mode/sessions.d.ts +111 -0
- package/lib/types/host/services/remote-web-ui/server-mode/sessions.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server-mode/sessions.js +298 -0
- package/lib/types/host/services/remote-web-ui/server.d.ts +82 -0
- package/lib/types/host/services/remote-web-ui/server.d.ts.map +1 -0
- package/lib/types/host/services/remote-web-ui/server.js +492 -0
- package/lib/types/host/services/resources.d.ts +9 -0
- package/lib/types/host/services/resources.d.ts.map +1 -0
- package/lib/types/host/services/resources.js +98 -0
- package/lib/types/host/services/right-pane/browser.d.ts +42 -0
- package/lib/types/host/services/right-pane/browser.d.ts.map +1 -0
- package/lib/types/host/services/right-pane/browser.js +106 -0
- package/lib/types/host/services/right-pane/index.d.ts +22 -0
- package/lib/types/host/services/right-pane/index.d.ts.map +1 -0
- package/lib/types/host/services/right-pane/index.js +114 -0
- package/lib/types/host/services/right-pane/wire.d.ts +6 -0
- package/lib/types/host/services/right-pane/wire.d.ts.map +1 -0
- package/lib/types/host/services/right-pane/wire.js +9 -0
- package/lib/types/host/services/schedule-mode/config.d.ts +11 -0
- package/lib/types/host/services/schedule-mode/config.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/config.js +15 -0
- package/lib/types/host/services/schedule-mode/engine.d.ts +150 -0
- package/lib/types/host/services/schedule-mode/engine.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/engine.js +672 -0
- package/lib/types/host/services/schedule-mode/index.d.ts +33 -0
- package/lib/types/host/services/schedule-mode/index.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/index.js +175 -0
- package/lib/types/host/services/schedule-mode/routes.d.ts +31 -0
- package/lib/types/host/services/schedule-mode/routes.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/routes.js +109 -0
- package/lib/types/host/services/schedule-mode/session-create.d.ts +27 -0
- package/lib/types/host/services/schedule-mode/session-create.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/session-create.js +21 -0
- package/lib/types/host/services/schedule-mode/store.d.ts +36 -0
- package/lib/types/host/services/schedule-mode/store.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/store.js +309 -0
- package/lib/types/host/services/schedule-mode/tools.d.ts +13 -0
- package/lib/types/host/services/schedule-mode/tools.d.ts.map +1 -0
- package/lib/types/host/services/schedule-mode/tools.js +132 -0
- package/lib/types/host/services/ssh/engine.d.ts +162 -0
- package/lib/types/host/services/ssh/engine.d.ts.map +1 -0
- package/lib/types/host/services/ssh/engine.js +699 -0
- package/lib/types/host/services/ssh/host-keys.d.ts +10 -0
- package/lib/types/host/services/ssh/host-keys.d.ts.map +1 -0
- package/lib/types/host/services/ssh/host-keys.js +108 -0
- package/lib/types/host/services/ssh/index.d.ts +38 -0
- package/lib/types/host/services/ssh/index.d.ts.map +1 -0
- package/lib/types/host/services/ssh/index.js +47 -0
- package/lib/types/host/services/ssh/routes.d.ts +29 -0
- package/lib/types/host/services/ssh/routes.d.ts.map +1 -0
- package/lib/types/host/services/ssh/routes.js +465 -0
- package/lib/types/host/services/ssh/store.d.ts +40 -0
- package/lib/types/host/services/ssh/store.d.ts.map +1 -0
- package/lib/types/host/services/ssh/store.js +330 -0
- package/lib/types/host/services/ssh/terminal-ws.d.ts +9 -0
- package/lib/types/host/services/ssh/terminal-ws.d.ts.map +1 -0
- package/lib/types/host/services/ssh/terminal-ws.js +142 -0
- package/lib/types/host/services/ssh/tools.d.ts +11 -0
- package/lib/types/host/services/ssh/tools.d.ts.map +1 -0
- package/lib/types/host/services/ssh/tools.js +270 -0
- package/lib/types/host/services/web-render/contracts.d.ts +93 -0
- package/lib/types/host/services/web-render/contracts.d.ts.map +1 -0
- package/lib/types/host/services/web-render/contracts.js +60 -0
- package/lib/types/host/services/web-render/index.d.ts +58 -0
- package/lib/types/host/services/web-render/index.d.ts.map +1 -0
- package/lib/types/host/services/web-render/index.js +90 -0
- package/lib/types/host/services/web-render/provider.d.ts +37 -0
- package/lib/types/host/services/web-render/provider.d.ts.map +1 -0
- package/lib/types/host/services/web-render/provider.js +274 -0
- package/lib/types/host/services/web-search-anthropic/contracts.d.ts +117 -0
- package/lib/types/host/services/web-search-anthropic/contracts.d.ts.map +1 -0
- package/lib/types/host/services/web-search-anthropic/contracts.js +90 -0
- package/lib/types/host/services/web-search-anthropic/index.d.ts +53 -0
- package/lib/types/host/services/web-search-anthropic/index.d.ts.map +1 -0
- package/lib/types/host/services/web-search-anthropic/index.js +123 -0
- package/lib/types/host/services/web-search-anthropic/provider.d.ts +101 -0
- package/lib/types/host/services/web-search-anthropic/provider.d.ts.map +1 -0
- package/lib/types/host/services/web-search-anthropic/provider.js +237 -0
- package/lib/types/host/services/worktree/git-runner.d.ts +82 -0
- package/lib/types/host/services/worktree/git-runner.d.ts.map +1 -0
- package/lib/types/host/services/worktree/git-runner.js +81 -0
- package/lib/types/host/services/worktree/git.d.ts +94 -0
- package/lib/types/host/services/worktree/git.d.ts.map +1 -0
- package/lib/types/host/services/worktree/git.js +153 -0
- package/lib/types/host/services/worktree/http.d.ts +12 -0
- package/lib/types/host/services/worktree/http.d.ts.map +1 -0
- package/lib/types/host/services/worktree/http.js +34 -0
- package/lib/types/host/services/worktree/index.d.ts +38 -0
- package/lib/types/host/services/worktree/index.d.ts.map +1 -0
- package/lib/types/host/services/worktree/index.js +78 -0
- package/lib/types/host/services/worktree/lane-tool.d.ts +22 -0
- package/lib/types/host/services/worktree/lane-tool.d.ts.map +1 -0
- package/lib/types/host/services/worktree/lane-tool.js +92 -0
- package/lib/types/host/services/worktree/manager.d.ts +410 -0
- package/lib/types/host/services/worktree/manager.d.ts.map +1 -0
- package/lib/types/host/services/worktree/manager.js +1485 -0
- package/lib/types/host/services/worktree/model-override.d.ts +20 -0
- package/lib/types/host/services/worktree/model-override.d.ts.map +1 -0
- package/lib/types/host/services/worktree/model-override.js +35 -0
- package/lib/types/host/services/worktree/routes.d.ts +50 -0
- package/lib/types/host/services/worktree/routes.d.ts.map +1 -0
- package/lib/types/host/services/worktree/routes.js +695 -0
- package/lib/types/host/services/worktree/run-command.d.ts +26 -0
- package/lib/types/host/services/worktree/run-command.d.ts.map +1 -0
- package/lib/types/host/services/worktree/run-command.js +36 -0
- package/lib/types/host/services/worktree/session-lane/manager.d.ts +109 -0
- package/lib/types/host/services/worktree/session-lane/manager.d.ts.map +1 -0
- package/lib/types/host/services/worktree/session-lane/manager.js +172 -0
- package/lib/types/host/services/worktree/workspace-model-routes.d.ts +21 -0
- package/lib/types/host/services/worktree/workspace-model-routes.d.ts.map +1 -0
- package/lib/types/host/services/worktree/workspace-model-routes.js +198 -0
- package/lib/types/host/services/worktree/workspace-model.d.ts +48 -0
- package/lib/types/host/services/worktree/workspace-model.d.ts.map +1 -0
- package/lib/types/host/services/worktree/workspace-model.js +113 -0
- package/lib/types/index.d.ts +47 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +52 -0
- package/lib/types/invariant.d.ts +4 -0
- package/lib/types/invariant.d.ts.map +1 -0
- package/lib/types/invariant.js +3 -0
- package/package.json +153 -3
- package/presets/code-vibe/THIRD_PARTY_NOTICES.md +55 -0
- package/presets/code-vibe/skills/UPSTREAM.md +104 -0
- package/presets/code-vibe/skills/agent-experience/SKILL.md +15 -0
- package/presets/code-vibe/skills/agent-operation/SKILL.md +43 -0
- package/presets/code-vibe/skills/code-review/SKILL.md +45 -0
- package/presets/code-vibe/skills/dsh-ci-test-reliability/SKILL.md +133 -0
- package/presets/code-vibe/skills/dsh-ci-test-reliability/references/ci-flake-diagnosis.md +60 -0
- package/presets/code-vibe/skills/dsh-find-simplifications/SKILL.md +69 -0
- package/presets/code-vibe/skills/dsh-find-simplifications/references/historical-patterns.md +45 -0
- package/presets/code-vibe/skills/dsh-merging-stacked-prs/SKILL.md +129 -0
- package/presets/code-vibe/skills/dsh-prose-standard/SKILL.md +83 -0
- package/presets/code-vibe/skills/dsh-prose-standard/references/examples.md +169 -0
- package/presets/code-vibe/skills/dsh-speed-up-perf/SKILL.md +94 -0
- package/presets/code-vibe/skills/dsh-trim-cot-leakage/SKILL.md +47 -0
- package/presets/code-vibe/skills/dsh-trim-cot-leakage/references/examples.md +275 -0
- package/presets/code-vibe/skills/dsh-trim-cot-leakage/references/recall-batteries.md +52 -0
- package/presets/code-vibe/skills/frontend-design/SKILL.md +60 -0
- package/presets/code-vibe/skills/frontend-design/references/critique-format.md +35 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/LOAD-MAP.md +81 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/README.md +53 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/anchor.md +51 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/audit/ai-tells.md +59 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/audit/web-interface.md +14 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/change-control.md +62 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/copy.md +65 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/craft-knobs.md +61 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/debug-playbook.md +37 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/exemplars/README.md +64 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/plan-architecture.checklist.json +13 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/product-judgment.md +113 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/system-architecture.md +108 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/README.md +26 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/color-roles.md +49 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/motion.md +51 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/tokens/scale.md +89 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/ui-page-gate.md +61 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/ui-surface.checklist.json +49 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/ux.md +76 -0
- package/presets/code-vibe/skills/frontend-design/references/design-standards/visual.md +52 -0
- package/presets/code-vibe/skills/frontend-design/references/perceptible-path.md +27 -0
- package/presets/code-vibe/skills/frontend-design/references/product-package.md +80 -0
- package/presets/code-vibe/skills/frontend-design/references/scheme-antipatterns.md +21 -0
- package/presets/code-vibe/skills/quality-review/SKILL.md +57 -0
- package/presets/code-vibe/skills/quality-review/references/bounded-verify.md +37 -0
- package/presets/code-vibe/skills/quality-review/references/browser-verify.md +81 -0
- package/presets/code-vibe/skills/quality-review/references/evidence-contract.md +194 -0
- package/presets/code-vibe/skills/quality-review/references/falsify-checklist.md +44 -0
- package/presets/code-vibe/skills/quality-review/references/human-acceptance-pack.md +68 -0
- package/presets/code-vibe/skills/quality-review/references/product-regression.md +51 -0
- package/presets/code-vibe/skills/quality-review/references/ux-standards.md +37 -0
- package/presets/code-vibe/skills/quality-review/references/ux-walkthrough.md +49 -0
- package/presets/code-vibe/skills/quality-review/references/validation-report.md +22 -0
- package/presets/code-vibe/skills/quality-review/references/verification-loop.md +95 -0
- package/presets/code-vibe/skills/quality-review/references/version-acceptance-matrix.md +131 -0
- package/presets/code-vibe/skills/record-browser-gif/SKILL.md +174 -0
- package/presets/code-vibe/skills/record-browser-gif/scripts/encode_gif.py +337 -0
- package/presets/code-vibe/skills/record-browser-gif/scripts/test_encode_gif.py +103 -0
- package/presets/code-vibe/skills/wish-programming/SKILL.md +150 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/arch-reviewer.md +26 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/design-reviewer.md +32 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/pm-reviewer.md +26 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/qa-reviewer.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/security-reviewer.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/sre-reviewer.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/roles/ux-adversary.md +16 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/arch.md.tpl +51 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/brief.md.tpl +36 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/confirmation-pack.md +54 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/design-spec.md.tpl +49 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/module-readme.md +37 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/product.md.tpl +74 -0
- package/presets/code-vibe/skills/wish-programming/references/templates/requirements.md.tpl +31 -0
- package/presets/code-vibe/skills/wish-programming/references/workflow-template.md +122 -0
- package/presets/code-vibe/skills/wish-programming/scripts/MANIFEST.sha256 +11 -0
- package/presets/code-vibe/skills/wish-programming/scripts/check_spec.py +416 -0
- package/presets/code-vibe/skills/wish-programming/scripts/check_whitelist.py +193 -0
- package/presets/code-vibe/skills/wish-programming/scripts/coverage_check.py +199 -0
- package/presets/code-vibe/skills/wish-programming/scripts/gate-lock.sh +46 -0
- package/presets/code-vibe/skills/wish-programming/scripts/journey.sh +281 -0
- package/presets/code-vibe/skills/wish-programming/scripts/project.sh +152 -0
- package/presets/code-vibe/skills/wish-programming/scripts/replay.sh +65 -0
- package/presets/code-vibe/skills/wish-programming/scripts/scan_drift.py +79 -0
- package/presets/code-vibe/skills/wish-programming/scripts/verify.sh +169 -0
- package/presets/code-vibe/skills/wish-programming/scripts/verify_preset_budgets.py +218 -0
- package/presets/code-vibe/skills/wish-programming/scripts/wish.sh +150 -0
- package/presets/code-vibe.patch.yml +325 -0
- package/presets/hiopen.patch.yml +109 -0
- package/src/client/compat.ts +86 -0
- package/src/client/conversation/conversation.module.css +264 -0
- package/src/client/conversation/git-branch.tsx +152 -0
- package/src/client/conversation/git-graph/LICENSE.git-graph +202 -0
- package/src/client/conversation/git-graph/api.ts +85 -0
- package/src/client/conversation/git-graph/branch-chip.tsx +354 -0
- package/src/client/conversation/git-graph/branch-popover.tsx +185 -0
- package/src/client/conversation/git-graph/chip.tsx +47 -0
- package/src/client/conversation/git-graph/create-branch-dialog.tsx +108 -0
- package/src/client/conversation/git-graph/error-copy.ts +50 -0
- package/src/client/conversation/git-graph/git-graph.module.css +792 -0
- package/src/client/conversation/git-graph/graph-dialog.tsx +196 -0
- package/src/client/conversation/git-graph/hero-seat.ts +76 -0
- package/src/client/conversation/git-graph/locales.ts +90 -0
- package/src/client/conversation/git-graph/sse-leader.ts +124 -0
- package/src/client/conversation/index.ts +82 -0
- package/src/client/conversation/selector-context.tsx +24 -0
- package/src/client/conversation/session-lane-chip.tsx +262 -0
- package/src/client/conversation/session-lane-locales.ts +34 -0
- package/src/client/conversation/subagent-model-dom.ts +157 -0
- package/src/client/conversation/subagent-model.ts +198 -0
- package/src/client/conversation/worktree/api.ts +283 -0
- package/src/client/conversation/worktree/dialogs/DeleteWorktreeDialog.tsx +111 -0
- package/src/client/conversation/worktree/dialogs/PrCreateDialog.tsx +114 -0
- package/src/client/conversation/worktree/lane-binding.ts +77 -0
- package/src/client/conversation/worktree/lane-menu.tsx +247 -0
- package/src/client/conversation/worktree/lane-open.ts +204 -0
- package/src/client/conversation/worktree/lane-workspace-sweeper.ts +136 -0
- package/src/client/conversation/worktree/lifecycle.ts +75 -0
- package/src/client/conversation/worktree/locales.ts +97 -0
- package/src/client/conversation/worktree/semantic.ts +10 -0
- package/src/client/conversation/worktree/worktree.module.css +70 -0
- package/src/client/css-modules.d.ts +8 -0
- package/src/client/index.ts +58 -0
- package/src/client/lark-inbox/i18n.ts +125 -0
- package/src/client/lark-inbox/lark-wizard.module.css +88 -0
- package/src/client/lark-inbox/wizard.tsx +211 -0
- package/src/client/notify/i18n.ts +93 -0
- package/src/client/settings/family-scope.ts +45 -0
- package/src/client/settings/lark-inbox.tsx +319 -0
- package/src/client/settings/notify.tsx +288 -0
- package/src/client/settings/primitives-0.2.ts +148 -0
- package/src/client/settings/settings-shell.module.css +56 -0
- package/src/client/sidebar/RenderBoundary.tsx +17 -0
- package/src/client/sidebar/agent-browser.tsx +114 -0
- package/src/client/sidebar/diff-view.tsx +314 -0
- package/src/client/sidebar/git-workbench.tsx +700 -0
- package/src/client/sidebar/icons.tsx +23 -0
- package/src/client/sidebar/index.ts +28 -0
- package/src/client/sidebar/native-panels.tsx +149 -0
- package/src/client/sidebar/page-shell.module.css +96 -0
- package/src/client/sidebar/page-shell.tsx +86 -0
- package/src/client/sidebar/panels/memoir/api.ts +300 -0
- package/src/client/sidebar/panels/memoir/controller.ts +47 -0
- package/src/client/sidebar/panels/memoir/cwd.ts +140 -0
- package/src/client/sidebar/panels/memoir/i18n.ts +300 -0
- package/src/client/sidebar/panels/memoir/panel-activation.ts +42 -0
- package/src/client/sidebar/panels/memoir/panel.tsx +869 -0
- package/src/client/sidebar/panels/memoir/styles.ts +776 -0
- package/src/client/sidebar/panels/memoir/types.ts +7 -0
- package/src/client/sidebar/panels/ssh/ClusterTab.tsx +123 -0
- package/src/client/sidebar/panels/ssh/HostFormDialog.tsx +243 -0
- package/src/client/sidebar/panels/ssh/HostsTab.tsx +290 -0
- package/src/client/sidebar/panels/ssh/SshPanel.tsx +76 -0
- package/src/client/sidebar/panels/ssh/TerminalTab.tsx +290 -0
- package/src/client/sidebar/panels/ssh/TransferTab.tsx +232 -0
- package/src/client/sidebar/panels/ssh/TunnelsTab.tsx +204 -0
- package/src/client/sidebar/panels/ssh/api.ts +388 -0
- package/src/client/sidebar/panels/ssh/controller.ts +48 -0
- package/src/client/sidebar/panels/ssh/helpers.ts +70 -0
- package/src/client/sidebar/panels/ssh/locales.ts +318 -0
- package/src/client/sidebar/panels/ssh/panel.module.css +801 -0
- package/src/client/sidebar/panels/ssh/xterm.css.ts +2 -0
- package/src/client/sidebar/right-pane-i18n.ts +243 -0
- package/src/client/sidebar/right-pane.tsx +156 -0
- package/src/client/sidebar/scope.ts +54 -0
- package/src/client/sidebar/sidebar-header.module.css +72 -0
- package/src/client/sidebar/sidebar.module.css +619 -0
- package/src/client/trust.ts +187 -0
- package/src/client/ui-icons.ts +35 -0
- package/src/core/git-graph/commands.ts +107 -0
- package/src/core/git-graph/protocol.ts +238 -0
- package/src/core/index.ts +2 -0
- package/src/core/lark-inbox/gating.ts +35 -0
- package/src/core/lark-inbox/queue.ts +100 -0
- package/src/core/memoir/protocol.ts +46 -0
- package/src/core/no-browser-auth/contract.ts +25 -0
- package/src/core/notify/contract.ts +236 -0
- package/src/core/notify/feed.ts +235 -0
- package/src/core/playwright-sessions/contracts.ts +143 -0
- package/src/core/playwright-sessions/control.ts +33 -0
- package/src/core/playwright-sessions/index.ts +3 -0
- package/src/core/playwright-sessions/names.ts +83 -0
- package/src/core/playwright-sessions/schema.ts +102 -0
- package/src/core/playwright-sessions/wire.ts +142 -0
- package/src/core/remote-access/paths.ts +23 -0
- package/src/core/remote-web-ui/security.ts +171 -0
- package/src/core/right-pane/protocol.ts +94 -0
- package/src/core/schedule-mode/index.ts +6 -0
- package/src/core/schedule-mode/native.ts +105 -0
- package/src/core/schedule-mode/types.ts +182 -0
- package/src/core/schedule-mode/view.ts +66 -0
- package/src/core/ssh/protocol.ts +212 -0
- package/src/core/subagent-model/badges.ts +161 -0
- package/src/core/worktree/invariant.ts +101 -0
- package/src/core/worktree/manifest.ts +135 -0
- package/src/core/worktree/paths.ts +123 -0
- package/src/core/worktree/pr-create.ts +157 -0
- package/src/core/worktree/protocol.ts +7 -0
- package/src/core/worktree/types.ts +317 -0
- package/src/core/worktree/workspace-model.ts +61 -0
- package/src/host/services/access-trust/index.ts +127 -0
- package/src/host/services/access-trust/trust.ts +189 -0
- package/src/host/services/codex-bridge/bridge.ts +392 -0
- package/src/host/services/codex-bridge/codex-auth.ts +352 -0
- package/src/host/services/codex-bridge/dsh-integration.ts +169 -0
- package/src/host/services/codex-bridge/http.ts +105 -0
- package/src/host/services/codex-bridge/index.ts +154 -0
- package/src/host/services/codex-bridge/loopback.ts +63 -0
- package/src/host/services/codex-bridge/routes.ts +143 -0
- package/src/host/services/family-config.ts +224 -0
- package/src/host/services/family-namespaces.ts +39 -0
- package/src/host/services/git-graph/index.ts +11 -0
- package/src/host/services/git-graph/routes.ts +212 -0
- package/src/host/services/git-graph/service.ts +305 -0
- package/src/host/services/index.ts +94 -0
- package/src/host/services/lark-inbox/config.ts +66 -0
- package/src/host/services/lark-inbox/gateway.ts +184 -0
- package/src/host/services/lark-inbox/host-routes.ts +113 -0
- package/src/host/services/lark-inbox/inbox-store.ts +160 -0
- package/src/host/services/lark-inbox/index.ts +141 -0
- package/src/host/services/lark-inbox/tools.ts +124 -0
- package/src/host/services/lark-inbox/wizard.ts +206 -0
- package/src/host/services/lifecycle.ts +107 -0
- package/src/host/services/memoir/index.ts +80 -0
- package/src/host/services/memoir/routes.ts +346 -0
- package/src/host/services/memoir/settings.ts +122 -0
- package/src/host/services/memoir/store.ts +132 -0
- package/src/host/services/memoir/tools.ts +158 -0
- package/src/host/services/no-browser-auth/index.ts +70 -0
- package/src/host/services/notify/config.ts +178 -0
- package/src/host/services/notify/feishu-sender.ts +220 -0
- package/src/host/services/notify/host-routes.ts +133 -0
- package/src/host/services/notify/index.ts +305 -0
- package/src/host/services/playwright-sessions/child.ts +251 -0
- package/src/host/services/playwright-sessions/controller.ts +102 -0
- package/src/host/services/playwright-sessions/index.ts +146 -0
- package/src/host/services/playwright-sessions/live-view.ts +225 -0
- package/src/host/services/playwright-sessions/manager.ts +239 -0
- package/src/host/services/playwright-sessions/profile-gc.ts +97 -0
- package/src/host/services/playwright-sessions/routes.ts +90 -0
- package/src/host/services/remote-access/boot-scripts.ts +118 -0
- package/src/host/services/remote-access/index.ts +62 -0
- package/src/host/services/remote-access/routes.ts +137 -0
- package/src/host/services/remote-web-ui/index.ts +344 -0
- package/src/host/services/remote-web-ui/server-mode/accounts.ts +423 -0
- package/src/host/services/remote-web-ui/server-mode/cookie.ts +57 -0
- package/src/host/services/remote-web-ui/server-mode/dsh-home.ts +42 -0
- package/src/host/services/remote-web-ui/server-mode/external-auth.ts +296 -0
- package/src/host/services/remote-web-ui/server-mode/fence.ts +27 -0
- package/src/host/services/remote-web-ui/server-mode/gateway-routes.ts +797 -0
- package/src/host/services/remote-web-ui/server-mode/gateway.ts +684 -0
- package/src/host/services/remote-web-ui/server-mode/http.ts +105 -0
- package/src/host/services/remote-web-ui/server-mode/integrated-auth.ts +118 -0
- package/src/host/services/remote-web-ui/server-mode/lan.ts +19 -0
- package/src/host/services/remote-web-ui/server-mode/loopback.ts +63 -0
- package/src/host/services/remote-web-ui/server-mode/posture.ts +154 -0
- package/src/host/services/remote-web-ui/server-mode/roles.ts +51 -0
- package/src/host/services/remote-web-ui/server-mode/server-boot.ts +38 -0
- package/src/host/services/remote-web-ui/server-mode/sessions.ts +347 -0
- package/src/host/services/remote-web-ui/server.ts +591 -0
- package/src/host/services/resources.ts +78 -0
- package/src/host/services/right-pane/browser.ts +106 -0
- package/src/host/services/right-pane/index.ts +117 -0
- package/src/host/services/right-pane/wire.ts +10 -0
- package/src/host/services/schedule-mode/config.ts +26 -0
- package/src/host/services/schedule-mode/engine.ts +689 -0
- package/src/host/services/schedule-mode/index.ts +214 -0
- package/src/host/services/schedule-mode/routes.ts +130 -0
- package/src/host/services/schedule-mode/session-create.ts +36 -0
- package/src/host/services/schedule-mode/store.ts +304 -0
- package/src/host/services/schedule-mode/tools.ts +154 -0
- package/src/host/services/ssh/engine.ts +675 -0
- package/src/host/services/ssh/host-keys.ts +99 -0
- package/src/host/services/ssh/index.ts +84 -0
- package/src/host/services/ssh/routes.ts +442 -0
- package/src/host/services/ssh/store.ts +310 -0
- package/src/host/services/ssh/terminal-ws.ts +157 -0
- package/src/host/services/ssh/tools.ts +279 -0
- package/src/host/services/web-render/contracts.ts +138 -0
- package/src/host/services/web-render/index.ts +112 -0
- package/src/host/services/web-render/provider.ts +282 -0
- package/src/host/services/web-search-anthropic/contracts.ts +163 -0
- package/src/host/services/web-search-anthropic/index.ts +152 -0
- package/src/host/services/web-search-anthropic/provider.ts +325 -0
- package/src/host/services/worktree/git-runner.ts +124 -0
- package/src/host/services/worktree/git.ts +183 -0
- package/src/host/services/worktree/http.ts +36 -0
- package/src/host/services/worktree/index.ts +92 -0
- package/src/host/services/worktree/lane-tool.ts +100 -0
- package/src/host/services/worktree/manager.ts +1553 -0
- package/src/host/services/worktree/model-override.ts +43 -0
- package/src/host/services/worktree/routes.ts +570 -0
- package/src/host/services/worktree/run-command.ts +66 -0
- package/src/host/services/worktree/session-lane/manager.ts +228 -0
- package/src/host/services/worktree/workspace-model-routes.ts +156 -0
- package/src/host/services/worktree/workspace-model.ts +132 -0
- package/src/index.ts +84 -0
- package/src/invariant.ts +4 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface RunCommandOptions {
|
|
2
|
+
cwd: string;
|
|
3
|
+
timeoutMs: number;
|
|
4
|
+
maxBuffer?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface RunCommandResult {
|
|
7
|
+
stdout: string;
|
|
8
|
+
stderr: string;
|
|
9
|
+
}
|
|
10
|
+
export type RunCommand = (executable: string, argv: readonly string[], options: RunCommandOptions) => Promise<RunCommandResult>;
|
|
11
|
+
/** Production command runner. Node's execFile passes argv directly to the executable. */
|
|
12
|
+
export declare const runCommand: RunCommand;
|
|
13
|
+
export interface CommandFailure extends Error {
|
|
14
|
+
code?: string | number;
|
|
15
|
+
errno?: number;
|
|
16
|
+
killed?: boolean;
|
|
17
|
+
signal?: NodeJS.Signals | null;
|
|
18
|
+
stdout?: string | Buffer;
|
|
19
|
+
stderr?: string | Buffer;
|
|
20
|
+
}
|
|
21
|
+
/** Narrow unknown exec failures without coupling callers to Node's private error type. */
|
|
22
|
+
export declare function commandFailure(error: unknown): CommandFailure | undefined;
|
|
23
|
+
/** execFile reports timeout as killed/SIGTERM and commonly as code ETIMEDOUT. */
|
|
24
|
+
export declare function isCommandTimeout(error: unknown): boolean;
|
|
25
|
+
export declare function commandFailureText(error: unknown): string;
|
|
26
|
+
//# sourceMappingURL=run-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-command.d.ts","sourceRoot":"","sources":["../../../../../src/host/services/worktree/run-command.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,UAAU,GAAG,CACvB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAE9B,yFAAyF;AACzF,eAAO,MAAM,UAAU,EAAE,UAQxB,CAAA;AAED,MAAM,WAAW,cAAe,SAAQ,KAAK;IAC3C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CACzB;AAED,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,GAAG,SAAS,CAEzE;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMzD"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injectable argv-only command runner for the worktree service.
|
|
3
|
+
*
|
|
4
|
+
* Commands are executed with execFile, never a shell. Keeping this seam small
|
|
5
|
+
* lets route tests assert the exact executable, argv, cwd, and timeout.
|
|
6
|
+
*/
|
|
7
|
+
import { execFile } from 'node:child_process';
|
|
8
|
+
import { promisify } from 'node:util';
|
|
9
|
+
const execFileAsync = promisify(execFile);
|
|
10
|
+
/** Production command runner. Node's execFile passes argv directly to the executable. */
|
|
11
|
+
export const runCommand = async (executable, argv, options) => {
|
|
12
|
+
const { stdout, stderr } = await execFileAsync(executable, [...argv], {
|
|
13
|
+
cwd: options.cwd,
|
|
14
|
+
timeout: options.timeoutMs,
|
|
15
|
+
maxBuffer: options.maxBuffer ?? 4 * 1024 * 1024,
|
|
16
|
+
windowsHide: true,
|
|
17
|
+
});
|
|
18
|
+
return { stdout, stderr };
|
|
19
|
+
};
|
|
20
|
+
/** Narrow unknown exec failures without coupling callers to Node's private error type. */
|
|
21
|
+
export function commandFailure(error) {
|
|
22
|
+
return error instanceof Error ? error : undefined;
|
|
23
|
+
}
|
|
24
|
+
/** execFile reports timeout as killed/SIGTERM and commonly as code ETIMEDOUT. */
|
|
25
|
+
export function isCommandTimeout(error) {
|
|
26
|
+
const failure = commandFailure(error);
|
|
27
|
+
return failure?.code === 'ETIMEDOUT' || failure?.killed === true || failure?.signal === 'SIGTERM';
|
|
28
|
+
}
|
|
29
|
+
export function commandFailureText(error) {
|
|
30
|
+
const failure = commandFailure(error);
|
|
31
|
+
if (failure === undefined)
|
|
32
|
+
return String(error);
|
|
33
|
+
const stderr = typeof failure.stderr === 'string' ? failure.stderr : failure.stderr?.toString('utf8');
|
|
34
|
+
const stdout = typeof failure.stdout === 'string' ? failure.stdout : failure.stdout?.toString('utf8');
|
|
35
|
+
return [stderr, stdout, failure.message].filter((part) => typeof part === 'string' && part.trim() !== '').join('\n');
|
|
36
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
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
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
47
|
+
import type { BindLaneInput, BindLaneResult, CreateLaneInput, CreateLaneResult, LaneLookupInput, LaneView } from '../../../../core/worktree/types.ts';
|
|
48
|
+
import type { WorktreeManager } from '../manager.ts';
|
|
49
|
+
/**
|
|
50
|
+
* The preset every lane session must run under. `danger-full-access` maps to
|
|
51
|
+
* `{sandbox: 'danger-full-access', approval: 'never'}` in
|
|
52
|
+
* `@deepseek-ai/dsh-permission-presets`.
|
|
53
|
+
*/
|
|
54
|
+
export declare const LANE_PERMISSION_PRESET = "danger-full-access";
|
|
55
|
+
/** Test seams; production uses the ctx services. */
|
|
56
|
+
export interface SessionLaneManagerOptions {
|
|
57
|
+
/** Preset applier override (tests). */
|
|
58
|
+
setPermissionPreset?: (sessionId: string, preset: string) => void | Promise<void>;
|
|
59
|
+
/** Live-session lookup override (tests). */
|
|
60
|
+
hasSession?: (sessionId: string) => boolean;
|
|
61
|
+
}
|
|
62
|
+
export declare class SessionLaneManager {
|
|
63
|
+
private readonly ctx;
|
|
64
|
+
private readonly worktrees;
|
|
65
|
+
private readonly options;
|
|
66
|
+
/**
|
|
67
|
+
* Captured through an optional inject, so the preset service is picked up
|
|
68
|
+
* whenever the deployment provides it and never blocks this plugin's mount
|
|
69
|
+
* when it does not.
|
|
70
|
+
*/
|
|
71
|
+
private presets;
|
|
72
|
+
constructor(ctx: Context, worktrees: WorktreeManager, options?: SessionLaneManagerOptions);
|
|
73
|
+
/** Phase 1: ensure the worktree behind the branch exists (no workspace). */
|
|
74
|
+
createLane(input: CreateLaneInput): Promise<CreateLaneResult>;
|
|
75
|
+
/**
|
|
76
|
+
* Phase 2: bind the platform-created session to its lane and apply the preset.
|
|
77
|
+
*
|
|
78
|
+
* Fail closed, in this order: every check that can reject the request runs
|
|
79
|
+
* BEFORE the session is elevated, and the request has to name the directory
|
|
80
|
+
* the conversation actually runs in. Without that, this route could record —
|
|
81
|
+
* and hand `danger-full-access` to — a conversation living somewhere else,
|
|
82
|
+
* and a later teardown would archive a session that never used the lane.
|
|
83
|
+
* Both halves were reproduced before this check existed: a bind resolved for a
|
|
84
|
+
* session whose cwd was a different directory, and the elevation happened on
|
|
85
|
+
* the way to a manifest write that then failed.
|
|
86
|
+
*
|
|
87
|
+
* The preset outcome is recorded with the binding, so a lane whose preset
|
|
88
|
+
* failed still resolves for the header chip.
|
|
89
|
+
*/
|
|
90
|
+
bindLaneSession(input: BindLaneInput): Promise<BindLaneResult>;
|
|
91
|
+
/** Resolve the lane a path or session belongs to (delegates to the git layer). */
|
|
92
|
+
laneForPath(input: LaneLookupInput): Promise<LaneView | null>;
|
|
93
|
+
/**
|
|
94
|
+
* Undo a lane whose session never came up (the platform's create failed, or
|
|
95
|
+
* the user cancelled before it landed). Removes the worktree directory, the
|
|
96
|
+
* local branch, the git admin records, the manifest entry and the registered
|
|
97
|
+
* workspace, so a failed start leaves no stray lane behind.
|
|
98
|
+
*/
|
|
99
|
+
rollbackLane(input: {
|
|
100
|
+
repoPath: string;
|
|
101
|
+
branch: string;
|
|
102
|
+
}): Promise<void>;
|
|
103
|
+
/** Whether the host can see that session. */
|
|
104
|
+
private hasSession;
|
|
105
|
+
/** Apply the lane preset; a failure is reported, not thrown. */
|
|
106
|
+
private applyPreset;
|
|
107
|
+
private warnPreset;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../../../src/host/services/worktree/session-lane/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAIlD,OAAO,KAAK,EACV,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAC5F,MAAM,oCAAoC,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,uBAAuB,CAAA;AAY1D,oDAAoD;AACpD,MAAM,WAAW,yBAAyB;IACxC,uCAAuC;IACvC,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjF,4CAA4C;IAC5C,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;CAC5C;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD;;;;OAIG;IACH,OAAO,CAAC,OAAO,CAAmC;gBAEtC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,GAAE,yBAA8B;IAW7F,4EAA4E;IACtE,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInE;;;;;;;;;;;;;;OAcG;IACG,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA6CpE,kFAAkF;IAC5E,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAInE;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E,6CAA6C;IAC7C,OAAO,CAAC,UAAU;IAMlB,gEAAgE;YAClD,WAAW;IA8BzB,OAAO,CAAC,UAAU;CAOnB"}
|
|
@@ -0,0 +1,172 @@
|
|
|
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
|
+
import { isValidBranchName, WorktreeError } from "../../../../core/worktree/invariant.js";
|
|
47
|
+
import { samePath } from "../../../../core/worktree/paths.js";
|
|
48
|
+
/**
|
|
49
|
+
* The preset every lane session must run under. `danger-full-access` maps to
|
|
50
|
+
* `{sandbox: 'danger-full-access', approval: 'never'}` in
|
|
51
|
+
* `@deepseek-ai/dsh-permission-presets`.
|
|
52
|
+
*/
|
|
53
|
+
export const LANE_PERMISSION_PRESET = 'danger-full-access';
|
|
54
|
+
export class SessionLaneManager {
|
|
55
|
+
ctx;
|
|
56
|
+
worktrees;
|
|
57
|
+
options;
|
|
58
|
+
/**
|
|
59
|
+
* Captured through an optional inject, so the preset service is picked up
|
|
60
|
+
* whenever the deployment provides it and never blocks this plugin's mount
|
|
61
|
+
* when it does not.
|
|
62
|
+
*/
|
|
63
|
+
presets;
|
|
64
|
+
constructor(ctx, worktrees, options = {}) {
|
|
65
|
+
this.ctx = ctx;
|
|
66
|
+
this.worktrees = worktrees;
|
|
67
|
+
this.options = options;
|
|
68
|
+
this.presets = ctx.get('permissionPresets');
|
|
69
|
+
ctx.inject(['permissionPresets'], (child) => {
|
|
70
|
+
this.presets = child.get('permissionPresets');
|
|
71
|
+
child.effect(() => () => { this.presets = undefined; });
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/** Phase 1: ensure the worktree behind the branch exists (no workspace). */
|
|
75
|
+
async createLane(input) {
|
|
76
|
+
return await this.worktrees.ensureLane(input);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Phase 2: bind the platform-created session to its lane and apply the preset.
|
|
80
|
+
*
|
|
81
|
+
* Fail closed, in this order: every check that can reject the request runs
|
|
82
|
+
* BEFORE the session is elevated, and the request has to name the directory
|
|
83
|
+
* the conversation actually runs in. Without that, this route could record —
|
|
84
|
+
* and hand `danger-full-access` to — a conversation living somewhere else,
|
|
85
|
+
* and a later teardown would archive a session that never used the lane.
|
|
86
|
+
* Both halves were reproduced before this check existed: a bind resolved for a
|
|
87
|
+
* session whose cwd was a different directory, and the elevation happened on
|
|
88
|
+
* the way to a manifest write that then failed.
|
|
89
|
+
*
|
|
90
|
+
* The preset outcome is recorded with the binding, so a lane whose preset
|
|
91
|
+
* failed still resolves for the header chip.
|
|
92
|
+
*/
|
|
93
|
+
async bindLaneSession(input) {
|
|
94
|
+
if (!this.hasSession(input.sessionId)) {
|
|
95
|
+
throw new WorktreeError('session-unknown', `session ${input.sessionId} is not live on the host, so it cannot be bound to a lane`, { sessionId: input.sessionId });
|
|
96
|
+
}
|
|
97
|
+
if (!isValidBranchName(input.branch)) {
|
|
98
|
+
throw new WorktreeError('invalid-branch', `branch ${JSON.stringify(input.branch)} is not a valid git ref`, { branch: input.branch });
|
|
99
|
+
}
|
|
100
|
+
// Only a lane the host actually records may be bound; `laneForPath`
|
|
101
|
+
// synthesizes a view for a directory the manifest does not know about.
|
|
102
|
+
const recorded = await this.worktrees.laneEntry(input.repoPath, input.branch);
|
|
103
|
+
if (recorded === null) {
|
|
104
|
+
throw new WorktreeError('worktree-not-found', `no manifest entry records the lane ${JSON.stringify(input.branch)}`, { branch: input.branch });
|
|
105
|
+
}
|
|
106
|
+
// The conversation has to be in that directory already: the bind is a
|
|
107
|
+
// record of where it runs, never a way to move it.
|
|
108
|
+
const lane = await this.worktrees.laneForPath({ sessionId: input.sessionId });
|
|
109
|
+
if (lane === null || !samePath(lane.path, recorded.path)) {
|
|
110
|
+
throw new WorktreeError('lane-mismatch', `session ${input.sessionId} runs in ${lane === null ? 'no lane' : lane.path}, not ${recorded.path}`, { sessionId: input.sessionId, branch: input.branch, expected: recorded.path, actual: lane?.path ?? null });
|
|
111
|
+
}
|
|
112
|
+
const permissionPresetApplied = await this.applyPreset(input.sessionId);
|
|
113
|
+
await this.worktrees.bindSession(input.repoPath, input.branch, input.sessionId, permissionPresetApplied);
|
|
114
|
+
return { lane, permissionPresetApplied };
|
|
115
|
+
}
|
|
116
|
+
/** Resolve the lane a path or session belongs to (delegates to the git layer). */
|
|
117
|
+
async laneForPath(input) {
|
|
118
|
+
return this.worktrees.laneForPath(input);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Undo a lane whose session never came up (the platform's create failed, or
|
|
122
|
+
* the user cancelled before it landed). Removes the worktree directory, the
|
|
123
|
+
* local branch, the git admin records, the manifest entry and the registered
|
|
124
|
+
* workspace, so a failed start leaves no stray lane behind.
|
|
125
|
+
*/
|
|
126
|
+
async rollbackLane(input) {
|
|
127
|
+
await this.worktrees.rollbackCreate({ repoPath: input.repoPath, name: input.branch });
|
|
128
|
+
}
|
|
129
|
+
/** Whether the host can see that session. */
|
|
130
|
+
hasSession(sessionId) {
|
|
131
|
+
if (this.options.hasSession !== undefined)
|
|
132
|
+
return this.options.hasSession(sessionId);
|
|
133
|
+
const store = this.ctx.get('sessions');
|
|
134
|
+
return store?.get?.(sessionId) !== undefined;
|
|
135
|
+
}
|
|
136
|
+
/** Apply the lane preset; a failure is reported, not thrown. */
|
|
137
|
+
async applyPreset(sessionId) {
|
|
138
|
+
if (this.options.setPermissionPreset !== undefined) {
|
|
139
|
+
try {
|
|
140
|
+
await this.options.setPermissionPreset(sessionId, LANE_PERMISSION_PRESET);
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
this.warnPreset(error);
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
const presets = this.presets;
|
|
149
|
+
if (presets === undefined) {
|
|
150
|
+
this.warnPreset(new Error('the permissionPresets service is unavailable in this deployment'));
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
const store = this.ctx.get('sessions');
|
|
154
|
+
const session = store?.get?.(sessionId);
|
|
155
|
+
if (session === undefined) {
|
|
156
|
+
this.warnPreset(new Error(`session ${sessionId} is not in the session store`));
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
presets.set(session, LANE_PERMISSION_PRESET);
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
this.warnPreset(error);
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
warnPreset(error) {
|
|
169
|
+
console.warn(`[dsh-worktree] could not apply the "${LANE_PERMISSION_PRESET}" preset; `
|
|
170
|
+
+ 'the lane session will need its access mode switched manually before it can commit:', error);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
16
|
+
import type { WorkspaceModelManager } from './workspace-model.ts';
|
|
17
|
+
/** Per-route URL prefix. */
|
|
18
|
+
export declare const WORKSPACE_MODEL_PREFIX = "/workspace-model";
|
|
19
|
+
/** Register all /workspace-model/* routes. Returns the dispose function. */
|
|
20
|
+
export declare function registerWorkspaceModelRoutes(ctx: Context, manager: WorkspaceModelManager): () => void;
|
|
21
|
+
//# sourceMappingURL=workspace-model-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-model-routes.d.ts","sourceRoot":"","sources":["../../../../../src/host/services/worktree/workspace-model-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAKjE,4BAA4B;AAC5B,eAAO,MAAM,sBAAsB,qBAAqB,CAAA;AAkCxD,4EAA4E;AAC5E,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,qBAAqB,GAAG,MAAM,IAAI,CAErG"}
|
|
@@ -0,0 +1,198 @@
|
|
|
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
|
+
import { readJsonObject, writeJson } from "./http.js";
|
|
16
|
+
import { accessTrustOf } from "../access-trust/index.js";
|
|
17
|
+
import { registerResources } from "../resources.js";
|
|
18
|
+
/** Per-route URL prefix. */
|
|
19
|
+
export const WORKSPACE_MODEL_PREFIX = '/workspace-model';
|
|
20
|
+
const BAD_REQUEST = { ok: false, code: 'bad-request', message: 'malformed request' };
|
|
21
|
+
const FORBIDDEN = { ok: false, code: 'forbidden', message: 'mutation endpoints require the host access fence' };
|
|
22
|
+
const READ_FORBIDDEN = { ok: false, code: 'forbidden', message: 'reads require the host access fence' };
|
|
23
|
+
/** Pull a required string field, or null when absent/empty. */
|
|
24
|
+
function stringField(body, name) {
|
|
25
|
+
if (body === null)
|
|
26
|
+
return null;
|
|
27
|
+
const value = body[name];
|
|
28
|
+
return typeof value === 'string' && value !== '' ? value : null;
|
|
29
|
+
}
|
|
30
|
+
/** CORS preflight short-circuit for the mutation routes. */
|
|
31
|
+
function handleOptions(res) {
|
|
32
|
+
res.writeHead(204, {
|
|
33
|
+
'access-control-allow-methods': 'POST, OPTIONS',
|
|
34
|
+
'access-control-allow-headers': 'content-type',
|
|
35
|
+
'access-control-max-age': '600',
|
|
36
|
+
});
|
|
37
|
+
res.end();
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* True when the request may mutate: the shared host access fence (loopback, or
|
|
41
|
+
* a deployment trusted authority with an authenticated browser session).
|
|
42
|
+
* `isTrusted` already carries the whole rule, so there is no second allow path.
|
|
43
|
+
*/
|
|
44
|
+
/** Wrap a handler that already bounds its own errors. */
|
|
45
|
+
function respond(res, value) {
|
|
46
|
+
writeJson(res, value.ok ? 200 : value.code === 'forbidden' ? 403 : 400, value);
|
|
47
|
+
}
|
|
48
|
+
/** Register all /workspace-model/* routes. Returns the dispose function. */
|
|
49
|
+
export function registerWorkspaceModelRoutes(ctx, manager) {
|
|
50
|
+
return registerResources(own => registerOwnedWorkspaceModelRoutes(ctx, manager, own));
|
|
51
|
+
}
|
|
52
|
+
function registerOwnedWorkspaceModelRoutes(ctx, manager, own) {
|
|
53
|
+
const isTrusted = accessTrustOf(ctx).isTrusted;
|
|
54
|
+
const canMutate = isTrusted;
|
|
55
|
+
// GET /workspace-model/list
|
|
56
|
+
own(ctx.webServer.register({
|
|
57
|
+
kind: 'exact',
|
|
58
|
+
path: `${WORKSPACE_MODEL_PREFIX}/list`,
|
|
59
|
+
handler: async (req, res) => {
|
|
60
|
+
if (req.method !== 'GET') {
|
|
61
|
+
writeJson(res, 405, BAD_REQUEST);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (!isTrusted(req)) {
|
|
65
|
+
respond(res, READ_FORBIDDEN);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const list = manager.list();
|
|
69
|
+
const views = Object.entries(list).map(([path, preset]) => ({ path, preset }));
|
|
70
|
+
writeJson(res, 200, { ok: true, value: views });
|
|
71
|
+
},
|
|
72
|
+
}));
|
|
73
|
+
// POST /workspace-model/get
|
|
74
|
+
own(ctx.webServer.register({
|
|
75
|
+
kind: 'exact',
|
|
76
|
+
path: `${WORKSPACE_MODEL_PREFIX}/get`,
|
|
77
|
+
handler: async (req, res) => {
|
|
78
|
+
if (req.method === 'OPTIONS') {
|
|
79
|
+
handleOptions(res);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (req.method !== 'POST') {
|
|
83
|
+
writeJson(res, 405, BAD_REQUEST);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (!isTrusted(req)) {
|
|
87
|
+
respond(res, READ_FORBIDDEN);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
let body;
|
|
91
|
+
try {
|
|
92
|
+
body = await readJsonObject(req);
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const path = stringField(body, 'path');
|
|
99
|
+
if (path === null) {
|
|
100
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
respond(res, { ok: true, value: { path, preset: manager.get(path) } });
|
|
104
|
+
},
|
|
105
|
+
}));
|
|
106
|
+
// POST /workspace-model/set
|
|
107
|
+
own(ctx.webServer.register({
|
|
108
|
+
kind: 'exact',
|
|
109
|
+
path: `${WORKSPACE_MODEL_PREFIX}/set`,
|
|
110
|
+
handler: async (req, res) => {
|
|
111
|
+
if (req.method === 'OPTIONS') {
|
|
112
|
+
handleOptions(res);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (req.method !== 'POST') {
|
|
116
|
+
writeJson(res, 405, BAD_REQUEST);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (!canMutate(req)) {
|
|
120
|
+
writeJson(res, 403, FORBIDDEN);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
let body;
|
|
124
|
+
try {
|
|
125
|
+
body = await readJsonObject(req);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const path = stringField(body, 'path');
|
|
132
|
+
const preset = body?.preset;
|
|
133
|
+
if (path === null || typeof preset !== 'object' || preset === null || Array.isArray(preset)) {
|
|
134
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const p = preset;
|
|
138
|
+
if (typeof p.provider !== 'string' || p.provider === '' || typeof p.model !== 'string' || p.model === '') {
|
|
139
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (p.reasoningEffort !== undefined && typeof p.reasoningEffort !== 'string') {
|
|
143
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const input = {
|
|
147
|
+
path,
|
|
148
|
+
preset: { provider: p.provider, model: p.model, ...(p.reasoningEffort !== undefined ? { reasoningEffort: p.reasoningEffort } : {}) },
|
|
149
|
+
};
|
|
150
|
+
try {
|
|
151
|
+
const stored = await manager.set(input.path, input.preset);
|
|
152
|
+
respond(res, { ok: true, value: stored });
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
writeJson(res, 500, { ok: false, code: 'bad-request', message: error instanceof Error ? error.message : String(error) });
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
}));
|
|
159
|
+
// POST /workspace-model/clear
|
|
160
|
+
own(ctx.webServer.register({
|
|
161
|
+
kind: 'exact',
|
|
162
|
+
path: `${WORKSPACE_MODEL_PREFIX}/clear`,
|
|
163
|
+
handler: async (req, res) => {
|
|
164
|
+
if (req.method === 'OPTIONS') {
|
|
165
|
+
handleOptions(res);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (req.method !== 'POST') {
|
|
169
|
+
writeJson(res, 405, BAD_REQUEST);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (!canMutate(req)) {
|
|
173
|
+
writeJson(res, 403, FORBIDDEN);
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
let body;
|
|
177
|
+
try {
|
|
178
|
+
body = await readJsonObject(req);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const path = stringField(body, 'path');
|
|
185
|
+
if (path === null) {
|
|
186
|
+
writeJson(res, 400, BAD_REQUEST);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
try {
|
|
190
|
+
const removed = await manager.clear(path);
|
|
191
|
+
respond(res, { ok: true, value: removed });
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
writeJson(res, 500, { ok: false, code: 'bad-request', message: error instanceof Error ? error.message : String(error) });
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
}));
|
|
198
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
14
|
+
import z from 'schemastery';
|
|
15
|
+
import type { WorkspaceModelPreset, WorkspacePresetMap } from '../../../core/worktree/workspace-model.ts';
|
|
16
|
+
/** Settings namespace unique to this plugin. */
|
|
17
|
+
export declare const WORKSPACE_MODEL_NS = "workspace-model";
|
|
18
|
+
/** Schemastery schema for the preset document (a path -> preset map). */
|
|
19
|
+
export declare const WorkspacePresetSchema: z<WorkspacePresetMap>;
|
|
20
|
+
/** Canonicalize a workspace path for use as a document key. Follows symlinks
|
|
21
|
+
* via realpath and strips a trailing separator, matching how the workspace
|
|
22
|
+
* registry records paths and how sessions record `cwd`. The root path `/`
|
|
23
|
+
* is preserved (and is the only case where stripping the trailing separator
|
|
24
|
+
* is a no-op, because paths must be non-empty when used as a key). */
|
|
25
|
+
export declare function canonicalWorkspacePath(path: string): string;
|
|
26
|
+
/** Public surface used by `routes.ts` and the agent wiring. */
|
|
27
|
+
export declare class WorkspaceModelManager {
|
|
28
|
+
private readonly ctx;
|
|
29
|
+
private settings;
|
|
30
|
+
private memory;
|
|
31
|
+
private settingsFiber;
|
|
32
|
+
dispose(): void;
|
|
33
|
+
/** Optional settings service; safe to call with an unmounted provider. */
|
|
34
|
+
constructor(ctx: Context);
|
|
35
|
+
/** Wire the workspace-model namespace to the 0.2 settings document. */
|
|
36
|
+
private installSettings;
|
|
37
|
+
/** Replace the in-memory mirror from a resolved document. */
|
|
38
|
+
private seedMemory;
|
|
39
|
+
/** All stored presets keyed by canonical path (read snapshot). */
|
|
40
|
+
list(): Record<string, WorkspaceModelPreset>;
|
|
41
|
+
/** The preset for one workspace path, or undefined when none. */
|
|
42
|
+
get(path: string): WorkspaceModelPreset | undefined;
|
|
43
|
+
/** Store a preset for one workspace path. Returns the stored preset. */
|
|
44
|
+
set(path: string, preset: WorkspaceModelPreset): Promise<WorkspaceModelPreset>;
|
|
45
|
+
/** Remove a workspace's preset if present. Returns true when removed. */
|
|
46
|
+
clear(path: string): Promise<boolean>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=workspace-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-model.d.ts","sourceRoot":"","sources":["../../../../../src/host/services/worktree/workspace-model.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,CAAC,MAAM,aAAa,CAAA;AAC3B,OAAO,KAAK,EACV,oBAAoB,EAAE,kBAAkB,EACzC,MAAM,2CAA2C,CAAA;AAElD,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,oBAAoB,CAAA;AAEnD,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,EAIJ,CAAC,CAAC,kBAAkB,CAAC,CAAA;AAQnD;;;;uEAIuE;AACvE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAW3D;AAID,+DAA+D;AAC/D,qBAAa,qBAAqB;IAYpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAXhC,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,aAAa,CAAiD;IAEtE,OAAO,IAAI,IAAI;IAMf,0EAA0E;gBAC7C,GAAG,EAAE,OAAO;IAIzC,uEAAuE;IACvE,OAAO,CAAC,eAAe;IAavB,6DAA6D;IAC7D,OAAO,CAAC,UAAU;IAIlB,kEAAkE;IAClE,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAI5C,iEAAiE;IACjE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAInD,wEAAwE;IAClE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAYpF,yEAAyE;IACnE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAa5C"}
|