@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,169 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Wish 机械验收门 — 只核对「产生真实质量后果」的证据,不搞文档仪式。
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# verify.sh --cwd <workspace> --spec <id> [--root <dir>]
|
|
6
|
+
#
|
|
7
|
+
# Checks:
|
|
8
|
+
# 1. .sdd/acceptance/<id>/coverage.tsv 存在 且 coverage_check.py 通过(存量功能落点完整)
|
|
9
|
+
# 2. .sdd/acceptance/<id>/shots/ 下存在三个视口的真实渲染截图(1280 / 1440 / narrow 各 ≥1 张,
|
|
10
|
+
# 文件名含对应视口标记;多视口 = 用户可见验收)。非 UI 愿望:存在
|
|
11
|
+
# .sdd/acceptance/<id>.no-ui 豁免文件(用户在确认阶段显式声明)→ 跳过截图要求,其余照查。
|
|
12
|
+
# 3. live 重跑(保留):旧格式测试证据 TSV 若存在,unit/integration/health 命令自己重跑
|
|
13
|
+
#
|
|
14
|
+
# Gate integrity: scripts/MANIFEST.sha256 中锁定的全部脚本(gate-lock.sh FILES 列表)必须
|
|
15
|
+
# 与当前哈希一致,任一不匹配即拒绝(证据不可信)。改动后重跑 gate-lock.sh。
|
|
16
|
+
set -euo pipefail
|
|
17
|
+
|
|
18
|
+
CWD="."
|
|
19
|
+
SPEC=""
|
|
20
|
+
ROOT_ARG=""
|
|
21
|
+
RERUN_SCRIPT=""
|
|
22
|
+
|
|
23
|
+
while [[ $# -gt 0 ]]; do
|
|
24
|
+
case "$1" in
|
|
25
|
+
--cwd) CWD="${2:-}"; shift 2 ;;
|
|
26
|
+
--spec) SPEC="${2:-}"; shift 2 ;;
|
|
27
|
+
--root) ROOT_ARG="${2:-}"; shift 2 ;;
|
|
28
|
+
--rerun) RERUN_SCRIPT="${2:-}"; shift 2 ;;
|
|
29
|
+
-h|--help) sed -n '2,15p' "$0" | sed 's/^# \{0,1\}//'; exit 0 ;;
|
|
30
|
+
*) echo "verify: unknown arg $1" >&2; exit 2 ;;
|
|
31
|
+
esac
|
|
32
|
+
done
|
|
33
|
+
|
|
34
|
+
[[ -n "$SPEC" ]] || { echo "verify: --spec required" >&2; exit 2; }
|
|
35
|
+
[[ "$SPEC" =~ ^[A-Za-z0-9][A-Za-z0-9_-]*$ ]] || { echo "verify: --spec 非法(仅允许字母数字下划线连字符,拒绝路径穿越)" >&2; exit 2; }
|
|
36
|
+
|
|
37
|
+
find_root() {
|
|
38
|
+
local d
|
|
39
|
+
d="$(cd "$1" && pwd)"
|
|
40
|
+
while true; do
|
|
41
|
+
if [[ -f "$d/AGENTS.md" || -d "$d/.sdd" || -d "$d/docs" ]]; then
|
|
42
|
+
printf '%s\n' "$d"; return
|
|
43
|
+
fi
|
|
44
|
+
local parent; parent="$(dirname "$d")"
|
|
45
|
+
[[ "$parent" == "$d" ]] && break
|
|
46
|
+
d="$parent"
|
|
47
|
+
done
|
|
48
|
+
cd "$1" && pwd
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
trim() { local s="$1"; s="${s#"${s%%[![:space:]]*}"}"; s="${s%"${s##*[![:space:]]}"}"; printf '%s' "$s"; }
|
|
52
|
+
|
|
53
|
+
sha256_of() {
|
|
54
|
+
local f="$1"
|
|
55
|
+
if command -v sha256sum >/dev/null 2>&1; then sha256sum "$f" | awk '{print $1}'
|
|
56
|
+
elif command -v shasum >/dev/null 2>&1; then shasum -a 256 "$f" | awk '{print $1}'
|
|
57
|
+
else echo "verify: no sha256sum/shasum available" >&2; exit 2; fi
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
ROOT="${ROOT_ARG:-$(find_root "$CWD")}"
|
|
61
|
+
|
|
62
|
+
# ---- gate integrity(校验面 = MANIFEST 全条目,不只是子集)--------------------------
|
|
63
|
+
GATES_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
64
|
+
MANIFEST="$GATES_DIR/MANIFEST.sha256"
|
|
65
|
+
if [[ -f "$MANIFEST" ]]; then
|
|
66
|
+
nlocked="$(grep -vcE '^#|^$' "$MANIFEST" || true)"
|
|
67
|
+
if [[ "${nlocked:-0}" -lt 1 ]]; then
|
|
68
|
+
echo "verify FAIL: MANIFEST.sha256 为空(完整性基线缺失)——重跑 gate-lock.sh 再验收" >&2
|
|
69
|
+
exit 1
|
|
70
|
+
fi
|
|
71
|
+
while read -r want f; do
|
|
72
|
+
[[ -z "$want" || "$f" == \#* ]] && continue
|
|
73
|
+
[[ -f "$GATES_DIR/$f" ]] || { echo "verify FAIL: locked file $f missing" >&2; exit 1; }
|
|
74
|
+
got="$(sha256_of "$GATES_DIR/$f")"
|
|
75
|
+
if [[ "$got" != "$want" ]]; then
|
|
76
|
+
echo "verify FAIL: gate script $f modified since lock — evidence untrustworthy (rerun gate-lock.sh after legitimate edits)" >&2
|
|
77
|
+
exit 1
|
|
78
|
+
fi
|
|
79
|
+
done < "$MANIFEST"
|
|
80
|
+
else
|
|
81
|
+
echo "verify FAIL: MANIFEST.sha256 缺失(完整性基线不存在)——先跑 gate-lock.sh" >&2
|
|
82
|
+
exit 1
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# ---- 存量功能落点映射 + 机械数数 -------------------------------------------
|
|
86
|
+
COVER_TSV="$ROOT/.sdd/acceptance/$SPEC/coverage.tsv"
|
|
87
|
+
[[ -f "$COVER_TSV" ]] || { echo "verify FAIL: no coverage.tsv at $COVER_TSV (阶段 4 存量功能落点映射)" >&2; exit 1; }
|
|
88
|
+
|
|
89
|
+
COVER_PY="$GATES_DIR/coverage_check.py"
|
|
90
|
+
[[ -f "$COVER_PY" ]] || { echo "verify FAIL: coverage_check.py missing next to verify.sh" >&2; exit 1; }
|
|
91
|
+
if ! python3 "$COVER_PY" "$ROOT" "$SPEC"; then
|
|
92
|
+
echo "verify FAIL: coverage_check.py failed (存量功能落点不完整)" >&2
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
# ---- 多视口真实渲染截图(1280 / 1440 / narrow 三视口;no-ui 豁免)-----------------
|
|
97
|
+
NO_UI="$ROOT/.sdd/acceptance/$SPEC.no-ui"
|
|
98
|
+
if [[ -f "$NO_UI" ]]; then
|
|
99
|
+
echo "verify: non-UI wish exempts screenshots (no-ui marker present)"
|
|
100
|
+
else
|
|
101
|
+
SHOTS="$ROOT/.sdd/acceptance/$SPEC/shots"
|
|
102
|
+
[[ -d "$SHOTS" ]] || { echo "verify FAIL: no screenshots dir at $SHOTS (阶段 4 多视口截图;非 UI 愿望需 .no-ui 豁免文件)" >&2; exit 1; }
|
|
103
|
+
# 视口断言:每个前缀至少一张 PNG,且 PNG 实际像素宽度落在该视口的物理范围
|
|
104
|
+
# (1280-* ≥1200px / 1440-* ≥1366px / narrow-* ≤1000px,容差覆盖 retina 2x);
|
|
105
|
+
# 同图三命名(复制一张 1280 图冒充三视口)必然在某前缀的宽度断言上失败。
|
|
106
|
+
png_width() {
|
|
107
|
+
python3 -c '
|
|
108
|
+
import struct, sys
|
|
109
|
+
try:
|
|
110
|
+
d = open(sys.argv[1], "rb").read(26)
|
|
111
|
+
if d[:8] != b"\x89PNG\r\n\x1a\n":
|
|
112
|
+
print(-1); sys.exit(0)
|
|
113
|
+
print(struct.unpack(">I", d[16:20])[0])
|
|
114
|
+
except FileNotFoundError:
|
|
115
|
+
print(-2)
|
|
116
|
+
' "$1"
|
|
117
|
+
}
|
|
118
|
+
missing=""
|
|
119
|
+
for v in 1280 1440 narrow; do
|
|
120
|
+
hits="$(find "$SHOTS" -maxdepth 1 -type f -iname "${v}-*.png" 2>/dev/null)"
|
|
121
|
+
if [[ -z "$hits" ]]; then
|
|
122
|
+
missing="$missing $v"; continue
|
|
123
|
+
fi
|
|
124
|
+
w="$(png_width "$(echo "$hits" | head -1)")"
|
|
125
|
+
case "$v" in
|
|
126
|
+
1280) ok_rule(){ [[ "$1" -ge 1200 ]]; } ;;
|
|
127
|
+
1440) ok_rule(){ [[ "$1" -ge 1366 ]]; } ;;
|
|
128
|
+
narrow) ok_rule(){ [[ "$1" -le 1000 ]]; } ;;
|
|
129
|
+
esac
|
|
130
|
+
if [[ "$w" == "-1" ]]; then
|
|
131
|
+
echo "verify FAIL: $v 视口截图不是有效 PNG(可用浏览器真实渲染导出 PNG;文件:$(echo "$hits" | head -1))" >&2; exit 1
|
|
132
|
+
fi
|
|
133
|
+
if ! ok_rule "$w"; then
|
|
134
|
+
echo "verify FAIL: ${v}-* 截图宽度 $w px 不在 ${v} 视口物理范围(1280-*≥1200 / 1440-*≥1366 / narrow-*≤1000)——疑似复制图冒充多视口" >&2; exit 1
|
|
135
|
+
fi
|
|
136
|
+
done
|
|
137
|
+
if [[ -n "$missing" ]]; then
|
|
138
|
+
echo "verify FAIL: shots/ 缺少视口截图,文件名须以前缀标记视口:$missing(1280-* / 1440-* / narrow-* 各 ≥1 张 PNG,如 1280-home.png、1440-home.png、narrow-home.png;非 UI 愿望用 .no-ui 豁免)" >&2
|
|
139
|
+
exit 1
|
|
140
|
+
fi
|
|
141
|
+
fi
|
|
142
|
+
|
|
143
|
+
# ---- old-format evidence tsv:不再自动执行 cmd 列(v3 对抗修复)---------------
|
|
144
|
+
# 旧格式 .sdd/acceptance/<id>.tsv 的 cmd 列曾是 `bash -c` 任意执行面(红队 S4e:证据→代码执行)。
|
|
145
|
+
# 现默认不执行:仅统计存在并提示;需要 live 重跑请显式 `--rerun <script>`(白名单脚本名)。
|
|
146
|
+
OLD_EVID="$ROOT/.sdd/acceptance/$SPEC.tsv"
|
|
147
|
+
live="no"
|
|
148
|
+
if [[ -f "$OLD_EVID" ]]; then
|
|
149
|
+
live="yes"
|
|
150
|
+
echo "verify: 旧格式证据 tsv 发现于 $OLD_EVID(v3 起 cmd 列不再自动执行;live 重跑需显式 --rerun <script>)"
|
|
151
|
+
if [[ -n "${RERUN_SCRIPT:-}" ]]; then
|
|
152
|
+
if [[ ! -f "$ROOT/$RERUN_SCRIPT" ]]; then
|
|
153
|
+
echo "verify FAIL: --rerun 脚本不存在: $ROOT/$RERUN_SCRIPT" >&2; exit 1
|
|
154
|
+
fi
|
|
155
|
+
log="$ROOT/.sdd/acceptance/$SPEC/rerun/$RERUN_SCRIPT.log"
|
|
156
|
+
mkdir -p "$(dirname "$log")"
|
|
157
|
+
set +e
|
|
158
|
+
( cd "$ROOT" && timeout "${RERUN_TIMEOUT:-180}" bash "$RERUN_SCRIPT" ) >"$log" 2>&1
|
|
159
|
+
rc=$?
|
|
160
|
+
set -e
|
|
161
|
+
if [[ $rc -ne 0 ]]; then
|
|
162
|
+
echo "verify FAIL: --rerun $RERUN_SCRIPT exited $rc (log $log)" >&2; exit 1
|
|
163
|
+
fi
|
|
164
|
+
echo "verify: --rerun $RERUN_SCRIPT ok (exit 0, log $log)"
|
|
165
|
+
fi
|
|
166
|
+
fi
|
|
167
|
+
|
|
168
|
+
echo "verify OK: coverage=pass shots=$(if [[ -f "$NO_UI" ]]; then echo exempt; else find "$SHOTS" -maxdepth 1 -type f \( -iname '*.png' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.webp' -o -iname '*.gif' \) | wc -l | tr -d ' '; fi) live_rerun=$live"
|
|
169
|
+
exit 0
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""verify_preset_budgets.py — 预设内容预算 × skill 引用完整性门禁。
|
|
3
|
+
|
|
4
|
+
检查(全部可负对照验证):
|
|
5
|
+
1. persona prefix ≤ 3000 字符(解析 bundle 根目录的 `code-vibe.patch.yml` 或旧目录的 `agent.cordis.yml`)
|
|
6
|
+
2. 每个 skills/*/SKILL.md ≤ 200 行
|
|
7
|
+
3. 每个 SKILL.md 的 description:> 540 字符 ERROR / > 300 WARN(DSH catalogDescriptionMaxLength=300
|
|
8
|
+
渲染截断点——截断后触发契约必须在前 300 字符,故 WARN 提醒;540 是脚本自定义的绝对上限)
|
|
9
|
+
4. skill 引用完整性(persona 文本 + 全部 SKILL.md 全文):
|
|
10
|
+
a. 反引号 token:`` `xxx-yyy` `` 短横线连写(技能名判别特征:catalog 13 名全部含 `-`,
|
|
11
|
+
而命令/路径/变量类反引号词如 `journey.sh`/`--assert`/`vN` 天然不满足)→ 必须命中 catalog;
|
|
12
|
+
b. 字面互引:`../<name>/SKILL.md` → <name> 必须在 catalog;
|
|
13
|
+
c. 跨 skill 路径:`../<name>/references/…` 等 → <name> 必须在 catalog,且跟随的
|
|
14
|
+
references/scripts 子路径必须真实存在于 skills/<name>/ 下;
|
|
15
|
+
d. 措辞引用(兼容旧版):`load the X skill` / `X skill` / `X/SKILL.md` 格式 → X 必须在 catalog。
|
|
16
|
+
全部不满足 → exit 1(TEST 负向:把 persona/SKILL.md 里技能名改错、删 references 目录必须被拒)。
|
|
17
|
+
|
|
18
|
+
用法:python3 verify_preset_budgets.py [preset_root](默认从脚本位置解析包内 code-vibe)
|
|
19
|
+
python3 verify_preset_budgets.py --help
|
|
20
|
+
Exit: 0 ok, 1 违例, 2 usage.
|
|
21
|
+
超限时按 relocate → condense → raise 处理:先删/移内容,仍不够才 raise(raise 须用户确认并记录于对应 Issue 或 pull request)。
|
|
22
|
+
"""
|
|
23
|
+
import re
|
|
24
|
+
import sys
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
PERSONA_LIMIT = 3000
|
|
28
|
+
SKILL_LINES_LIMIT = 200
|
|
29
|
+
DESC_LIMIT = 540 # 绝对上限(>540 ERROR)
|
|
30
|
+
DESC_WARN = 300 # DSH catalog 渲染截断点(>300 WARN)
|
|
31
|
+
|
|
32
|
+
# 预设自有流程词(journey 状态机 / delivery target / 豁免标记等):反引号内出现但非技能名。
|
|
33
|
+
# 新增流程词必须在此登记(对应 MAINTENANCE 规则),否则会被 4a 误报。
|
|
34
|
+
FLOW_WORDS = {
|
|
35
|
+
"acceptance-passed", "blocked", "stuck", "idle", "claim-deliver",
|
|
36
|
+
"code-ready", "dev-effective", "production-delivered", "no-ui",
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
USAGE = """verify_preset_budgets.py — 预设预算 × skill 引用完整性门禁
|
|
40
|
+
用法:python3 verify_preset_budgets.py [preset_root](默认从脚本位置解析包内 code-vibe)
|
|
41
|
+
python3 verify_preset_budgets.py --help
|
|
42
|
+
检查:persona ≤3000 字符;SKILL.md ≤200 行;description ≤540(>300 WARN);
|
|
43
|
+
反引号技能名 / ../<name>/SKILL.md 互引 / ../<name>/references 路径 / 措辞引用 全部必须命中 catalog。
|
|
44
|
+
Exit: 0 ok, 1 违例, 2 usage."""
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def parse_persona_prefix(agent_yml: Path):
|
|
48
|
+
"""提取 `prefix: |-` 块文本;无则返回 ''。"""
|
|
49
|
+
if not agent_yml.is_file():
|
|
50
|
+
return ""
|
|
51
|
+
text = agent_yml.read_text(encoding="utf-8")
|
|
52
|
+
m = re.search(r"prefix:\s*\|-([ \t]*\n)?", text)
|
|
53
|
+
if not m:
|
|
54
|
+
return ""
|
|
55
|
+
start = m.end()
|
|
56
|
+
lines = text[start:].split("\n")
|
|
57
|
+
body = []
|
|
58
|
+
indent = None
|
|
59
|
+
for line in lines:
|
|
60
|
+
if not line.strip():
|
|
61
|
+
body.append("")
|
|
62
|
+
continue
|
|
63
|
+
lead = len(line) - len(line.lstrip(" "))
|
|
64
|
+
if indent is None:
|
|
65
|
+
indent = lead
|
|
66
|
+
if line.startswith("- id:") and lead <= (indent or 0):
|
|
67
|
+
break
|
|
68
|
+
if lead >= (indent or 0):
|
|
69
|
+
body.append(line[indent:])
|
|
70
|
+
else:
|
|
71
|
+
break
|
|
72
|
+
return "\n".join(body)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def skill_names(root: Path):
|
|
76
|
+
return {p.name for p in root.iterdir() if (p / "SKILL.md").is_file()}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def check_references_in_text(text: str, name: str, skills_dir: Path, catalog: set, errs: list, ctx: str):
|
|
80
|
+
"""引用检查 d:`../…` 相对路径引用必须真实可解析。
|
|
81
|
+
|
|
82
|
+
从 SKILL.md(skills/<name>/SKILL.md)出发:
|
|
83
|
+
- 首段命中 catalog 且带子路径 → 跨 skill 引用:skills/<target>/<rest> 必须存在;
|
|
84
|
+
- 首段未命中 catalog → 同 skill 引用(写作 `../x.md` 意图是 skills/<name>/x.md…,
|
|
85
|
+
但 `..` 实际解析到 skills/ 根,故按「skills/<name>/<完整路径>」与「skills/<完整路径>」
|
|
86
|
+
两处存在性判定,均不存在则为断裂引用(如 ../critique-format.md)。
|
|
87
|
+
"""
|
|
88
|
+
ref_re = re.compile(r"\.\./([^\s\\)\]`,,。;:+]+)")
|
|
89
|
+
for m in ref_re.finditer(text):
|
|
90
|
+
path = m.group(1)
|
|
91
|
+
segs = path.split("/")
|
|
92
|
+
head = segs[0]
|
|
93
|
+
head_m = re.fullmatch(r"[a-z][a-z0-9-]*", head)
|
|
94
|
+
if head_m and head in catalog:
|
|
95
|
+
rest = "/".join(segs[1:])
|
|
96
|
+
cand = (skills_dir / head / rest).resolve() if rest else skills_dir / head
|
|
97
|
+
if not cand.exists():
|
|
98
|
+
errs.append(f"{ctx}: 跨 skill 引用 ../{path} 不存在(skills/{head}/ 下无此路径)")
|
|
99
|
+
else:
|
|
100
|
+
# 同 skill 内部引用:先按写作意图(skills/<name>/…),再按字面(skills/…)
|
|
101
|
+
cand1 = skills_dir / name / path
|
|
102
|
+
cand2 = skills_dir / path
|
|
103
|
+
if not cand1.exists() and not cand2.exists():
|
|
104
|
+
errs.append(f"{ctx}: ../{path} 断裂——skills/{name}/{path} 与 skills/{path} 均不存在")
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def default_preset_root():
|
|
108
|
+
"""Return the packaged code-vibe asset root from this script's location."""
|
|
109
|
+
return Path(__file__).resolve().parents[3]
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def main():
|
|
113
|
+
if len(sys.argv) > 1 and sys.argv[1] in ("-h", "--help"):
|
|
114
|
+
print(USAGE)
|
|
115
|
+
return 0
|
|
116
|
+
preset_root = Path(sys.argv[1]).resolve() if len(sys.argv) > 1 else default_preset_root()
|
|
117
|
+
skills_dir = preset_root / "skills"
|
|
118
|
+
if not skills_dir.is_dir():
|
|
119
|
+
print(f"verify_preset_budgets: no skills dir at {skills_dir}", file=sys.stderr)
|
|
120
|
+
return 2
|
|
121
|
+
|
|
122
|
+
errs = []
|
|
123
|
+
warns = []
|
|
124
|
+
|
|
125
|
+
# 1. persona prefix 字符数。0.2 bundle patch 优先,旧目录格式仅作显式路径兼容。
|
|
126
|
+
agent_yml = preset_root.parent / "code-vibe.patch.yml"
|
|
127
|
+
if not agent_yml.is_file():
|
|
128
|
+
agent_yml = preset_root / "agent.cordis.yml"
|
|
129
|
+
persona = parse_persona_prefix(agent_yml)
|
|
130
|
+
if persona:
|
|
131
|
+
if len(persona) > PERSONA_LIMIT:
|
|
132
|
+
errs.append(f"persona prefix {len(persona)} chars > {PERSONA_LIMIT}(relocate→condense→raise:先删重复与指针化,仍超再 raise)")
|
|
133
|
+
else:
|
|
134
|
+
print(f"persona prefix: {len(persona)} chars (≤{PERSONA_LIMIT})")
|
|
135
|
+
else:
|
|
136
|
+
warns.append(f"{agent_yml.name} 未找到 persona prefix 块(跳过该项)")
|
|
137
|
+
|
|
138
|
+
catalog = skill_names(skills_dir)
|
|
139
|
+
print(f"catalog: {len(catalog)} skills — {', '.join(sorted(catalog))}")
|
|
140
|
+
|
|
141
|
+
# 4a-0. FLOW_WORDS 防滥用:豁免表登记了 catalog 内的技能名 = 试图绕过引用检查 → ERROR
|
|
142
|
+
flow_conflicts = sorted(FLOW_WORDS & catalog)
|
|
143
|
+
if flow_conflicts:
|
|
144
|
+
for t in flow_conflicts:
|
|
145
|
+
errs.append(f"FLOW_WORDS 登记了 catalog 内的技能名: {t}(禁止把技能名加入豁免表——引用检查必须生效)")
|
|
146
|
+
|
|
147
|
+
# 2-3. 每个 SKILL.md 行数与 description 长度
|
|
148
|
+
sk_texts = {}
|
|
149
|
+
for name in sorted(catalog):
|
|
150
|
+
sk = skills_dir / name / "SKILL.md"
|
|
151
|
+
sk_texts[name] = sk.read_text(encoding="utf-8")
|
|
152
|
+
lines = sk_texts[name].splitlines()
|
|
153
|
+
if len(lines) > SKILL_LINES_LIMIT:
|
|
154
|
+
errs.append(f"{name}/SKILL.md {len(lines)} lines > {SKILL_LINES_LIMIT}")
|
|
155
|
+
dline = next((l for l in lines if l.startswith("description: ")), None)
|
|
156
|
+
m = re.match(r"^description: (.*)$", dline) if dline else None
|
|
157
|
+
if m:
|
|
158
|
+
desc = m.group(1).strip().strip('"')
|
|
159
|
+
if len(desc) > DESC_LIMIT:
|
|
160
|
+
errs.append(f"{name} description {len(desc)} chars > {DESC_LIMIT}")
|
|
161
|
+
elif len(desc) > DESC_WARN:
|
|
162
|
+
warns.append(f"{name} description {len(desc)} chars > {DESC_WARN}(catalog 渲染截断点;触发契约主体在前 300 字符即可)")
|
|
163
|
+
|
|
164
|
+
# 4a. 反引号短横线 token(persona + 全部 SKILL.md):技能名判别特征 = 字母开头 + 含至少一个 `-`
|
|
165
|
+
backtick_re = re.compile(r"`([a-z][a-z0-9-]*-[a-z0-9][a-z0-9-]*)`")
|
|
166
|
+
for ctx, text in [("persona", persona)] + [(f"{n}/SKILL.md", t) for n, t in sk_texts.items()]:
|
|
167
|
+
for m in backtick_re.finditer(text):
|
|
168
|
+
target = m.group(1)
|
|
169
|
+
if target not in catalog and target not in FLOW_WORDS:
|
|
170
|
+
errs.append(f"{ctx} 反引号技能名不在 catalog: `{target}`(引用即失效——修复须与 catalog 一致,或登记进 FLOW_WORDS)")
|
|
171
|
+
|
|
172
|
+
# 4b. 字面互引 ../<name>/SKILL.md
|
|
173
|
+
inter_ref = re.compile(r"\.\./([A-Za-z0-9-]+)/SKILL\.md")
|
|
174
|
+
for name in sorted(catalog):
|
|
175
|
+
for m in inter_ref.finditer(sk_texts[name]):
|
|
176
|
+
target = m.group(1)
|
|
177
|
+
if target not in catalog:
|
|
178
|
+
errs.append(f"{name}/SKILL.md 互引指向不存在的 skill: ../{target}/SKILL.md")
|
|
179
|
+
|
|
180
|
+
# 4c. 措辞引用(兼容旧版):`load the X skill` / `X skill`(X/SKILL.md 无 .. 前缀的裸引用)
|
|
181
|
+
name_re = re.compile(r"(?:load(?:ing)?\s+the\s+|skill\s*[::]?\s*)([a-z][a-z0-9-]+)\s+skill")
|
|
182
|
+
bare_ref = re.compile(r"(?<![.\w])/([a-z][a-z0-9-]+)/SKILL\.md")
|
|
183
|
+
for ctx, text in [("persona", persona)] + [(f"{n}/SKILL.md", t) for n, t in sk_texts.items()]:
|
|
184
|
+
for m in name_re.finditer(text):
|
|
185
|
+
target = m.group(1)
|
|
186
|
+
if target not in catalog:
|
|
187
|
+
errs.append(f"{ctx} 点名的 skill 不在 catalog: {target}")
|
|
188
|
+
for m in bare_ref.finditer(text):
|
|
189
|
+
target = m.group(1)
|
|
190
|
+
if target not in catalog:
|
|
191
|
+
errs.append(f"{ctx} 互引指向不存在的 skill: /{target}/SKILL.md")
|
|
192
|
+
|
|
193
|
+
# 4d. 跨 skill 路径存在性(references/scripts 等)
|
|
194
|
+
for name in sorted(catalog):
|
|
195
|
+
check_references_in_text(sk_texts[name], name, skills_dir, catalog, errs, f"{name}/SKILL.md")
|
|
196
|
+
|
|
197
|
+
# 4e. 同 skill 内部路径引用(references/scripts/templates/roles 前缀,反引号或链接目标)存在性
|
|
198
|
+
local_re = re.compile(r"`((?:references|scripts|templates|roles)/[^`\s]+)`|\(((?:references|scripts|templates|roles)/[^)\s]+)\)")
|
|
199
|
+
for name in sorted(catalog):
|
|
200
|
+
for m in local_re.finditer(sk_texts[name]):
|
|
201
|
+
p = (m.group(1) or m.group(2)).split("#")[0] # 去掉 # 锚点片段
|
|
202
|
+
cand = skills_dir / name / p
|
|
203
|
+
if not cand.exists():
|
|
204
|
+
errs.append(f"{name}/SKILL.md 引用缺失: {p}(skills/{name}/ 下不存在)")
|
|
205
|
+
|
|
206
|
+
for w in warns:
|
|
207
|
+
print(f"WARN: {w}", file=sys.stderr)
|
|
208
|
+
if errs:
|
|
209
|
+
for e in errs:
|
|
210
|
+
print(f"ERROR: {e}", file=sys.stderr)
|
|
211
|
+
print(f"verify_preset_budgets FAIL: {len(errs)} violation(s)", file=sys.stderr)
|
|
212
|
+
return 1
|
|
213
|
+
print("verify_preset_budgets OK")
|
|
214
|
+
return 0
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
if __name__ == "__main__":
|
|
218
|
+
sys.exit(main())
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# wish.sh — manage wishes: add to the demand pool, then start one into docs/wish/<id>/.
|
|
3
|
+
#
|
|
4
|
+
# Usage:
|
|
5
|
+
# wish.sh --cwd <workspace> --new --title "<标题>" [--quote "<用户原话>"]
|
|
6
|
+
# # append to demand pool + create quote.md (原话最高优先级工件)
|
|
7
|
+
# wish.sh --cwd <workspace> --start <id> # create docs/wish/<id>/{contract.md,plan.md}
|
|
8
|
+
#
|
|
9
|
+
# `--start` also flips the pool row's status new -> active (best effort).
|
|
10
|
+
set -euo pipefail
|
|
11
|
+
|
|
12
|
+
CWD="."; ACTION=""; WISH=""; TITLE=""; QUOTE=""; ROOT_ARG=""
|
|
13
|
+
|
|
14
|
+
while [[ $# -gt 0 ]]; do
|
|
15
|
+
case "$1" in
|
|
16
|
+
--cwd) CWD="${2:-}"; shift 2 ;;
|
|
17
|
+
--root) ROOT_ARG="${2:-}"; shift 2 ;;
|
|
18
|
+
--new) ACTION=new; shift ;;
|
|
19
|
+
--start) ACTION=start; WISH="${2:-}"; shift 2 ;;
|
|
20
|
+
--title) TITLE="${2:-}"; shift 2 ;;
|
|
21
|
+
--quote) QUOTE="${2:-}"; shift 2 ;;
|
|
22
|
+
-h|--help) sed -n '2,10p' "$0" | sed 's/^# \{0,1\}//'; exit 0 ;;
|
|
23
|
+
*) echo "wish: unknown arg $1" >&2; exit 2 ;;
|
|
24
|
+
esac
|
|
25
|
+
done
|
|
26
|
+
|
|
27
|
+
[[ -n "$ACTION" ]] || { echo "wish: need --new or --start" >&2; exit 2; }
|
|
28
|
+
|
|
29
|
+
find_root() {
|
|
30
|
+
local d
|
|
31
|
+
d="$(cd "$1" && pwd)"
|
|
32
|
+
while true; do
|
|
33
|
+
if [[ -f "$d/AGENTS.md" || -d "$d/.sdd" || -d "$d/docs" ]]; then
|
|
34
|
+
printf '%s\n' "$d"; return
|
|
35
|
+
fi
|
|
36
|
+
local parent; parent="$(dirname "$d")"
|
|
37
|
+
[[ "$parent" == "$d" ]] && break
|
|
38
|
+
d="$parent"
|
|
39
|
+
done
|
|
40
|
+
cd "$1" && pwd
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
ROOT="${ROOT_ARG:-$(find_root "$CWD")}"
|
|
44
|
+
POOL="$ROOT/docs/product/demand-pool.md"
|
|
45
|
+
DOC="$ROOT/docs/wish"
|
|
46
|
+
|
|
47
|
+
emit() { # emit <path> <<EOF ... EOF
|
|
48
|
+
local f="$1"
|
|
49
|
+
if [[ -f "$f" ]]; then echo "wish: keep $f (exists)"; return; fi
|
|
50
|
+
cat > "$f"
|
|
51
|
+
echo "wish: wrote $f"
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if [[ "$ACTION" == "new" ]]; then
|
|
55
|
+
[[ -n "$TITLE" ]] || { echo "wish: --new needs --title" >&2; exit 2; }
|
|
56
|
+
if [[ "$TITLE" == *$'\n'* || "$TITLE" == *$'\r'* || "$TITLE" == *'|'* ]]; then
|
|
57
|
+
echo "wish: --title 含换行或管道符(需求池注入防护;标题须为单行文本)" >&2; exit 2
|
|
58
|
+
fi
|
|
59
|
+
if [[ -n "$QUOTE" && ( "$QUOTE" == *$'\n'* || "$QUOTE" == *$'\r'* ) ]]; then
|
|
60
|
+
QUOTE="$(printf '%s' "$QUOTE" | tr '\r\n' ' ')"
|
|
61
|
+
echo "wish: --quote 换行已压平为空格(原话应逐字转录,换行请直接编辑 quote.md)" >&2
|
|
62
|
+
fi
|
|
63
|
+
[[ -f "$POOL" ]] || { echo "wish: no demand pool at $POOL — run project.sh first" >&2; exit 1; }
|
|
64
|
+
last=$(grep -oE '^\| *W[0-9]+' "$POOL" | tail -1 | grep -oE '[0-9]+' || echo 0)
|
|
65
|
+
next=$(( ${last:-0} + 1 ))
|
|
66
|
+
printf '| W%d | %s | new | |\n' "$next" "$TITLE" >> "$POOL"
|
|
67
|
+
mkdir -p "$DOC/W$next"
|
|
68
|
+
if [[ -n "$QUOTE" ]]; then
|
|
69
|
+
printf '# 用户原话(最高优先级 · 逐字转录 · 不可改写)\n\n> quote 版本:v1\n\n%s\n\n> 记录:%s(原话正文一字不改;本节与任何下游转述冲突时以本节为准;quote 更新到 vN+1 时下游一并重新对齐)\n' \
|
|
70
|
+
"$QUOTE" "$(date -u +%Y-%m-%dT%H:%M:%SZ)" > "$DOC/W$next/quote.md"
|
|
71
|
+
echo "wish: wrote $DOC/W$next/quote.md (原话已落盘, quote v1)"
|
|
72
|
+
else
|
|
73
|
+
emit "$DOC/W$next/quote.md" <<'EOF'
|
|
74
|
+
# 用户原话(最高优先级 · 逐字转录 · 不可改写)
|
|
75
|
+
|
|
76
|
+
> quote 版本:v1
|
|
77
|
+
|
|
78
|
+
<待补录:用户原话逐字原文(最高优先级工件,必须补录;check_spec 会拦截占位)>
|
|
79
|
+
|
|
80
|
+
> 记录:(原话正文一字不改;本节与任何下游转述冲突时以本节为准;quote 更新到 vN+1 时下游一并重新对齐)
|
|
81
|
+
EOF
|
|
82
|
+
echo "wish: quote.md 为占位 — 请逐字补录用户原话(最高优先级)"
|
|
83
|
+
fi
|
|
84
|
+
echo "wish: added W$next to $POOL"
|
|
85
|
+
echo " next: wish.sh --cwd . --start W$next"
|
|
86
|
+
exit 0
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
# start
|
|
90
|
+
[[ -n "$WISH" ]] || { echo "wish: --start needs <id>" >&2; exit 2; }
|
|
91
|
+
[[ "$WISH" =~ ^[A-Za-z0-9][A-Za-z0-9_-]*$ ]] || { echo "wish: --start 非法 id(仅允许字母数字下划线连字符,拒绝路径穿越)" >&2; exit 2; }
|
|
92
|
+
mkdir -p "$DOC/$WISH"
|
|
93
|
+
|
|
94
|
+
emit "$DOC/$WISH/contract.md" <<EOF
|
|
95
|
+
# $WISH
|
|
96
|
+
|
|
97
|
+
## 用户与主结果
|
|
98
|
+
- 用户:
|
|
99
|
+
- 主结果(可观察):
|
|
100
|
+
|
|
101
|
+
## MVP 边界
|
|
102
|
+
- In:
|
|
103
|
+
- Out:
|
|
104
|
+
|
|
105
|
+
## 权威数据源
|
|
106
|
+
- (真实数据 / API / 账号;示例数据必须标注 example)
|
|
107
|
+
|
|
108
|
+
## 事实映射(仅 Verified 进 P0 / 实施阻断)
|
|
109
|
+
| 入口 | actor | 实体/表关系 | 可信路径 | 代码调用点 | 越权反例 | 证据级 |
|
|
110
|
+
|---|---|---|---|---|---|---|
|
|
111
|
+
| | | | | | | Verified/Unverified |
|
|
112
|
+
EOF
|
|
113
|
+
|
|
114
|
+
emit "$DOC/$WISH/plan.md" <<EOF
|
|
115
|
+
# $WISH
|
|
116
|
+
|
|
117
|
+
## 纵向切片(一切片 = 一入口 + 成功/失败路径 + Oracle)
|
|
118
|
+
| 切片 ID | 入口 | 完成定义(链 T-xxx) | 触及路径 | 依赖 | Oracle 强度 |
|
|
119
|
+
|---|---|---|---|---|---|
|
|
120
|
+
| S1 | | | | | unit/machine/browser |
|
|
121
|
+
|
|
122
|
+
## Workspace
|
|
123
|
+
- 模式:local | git-worktree
|
|
124
|
+
- 分支:sdd/<id>
|
|
125
|
+
|
|
126
|
+
## 单向门
|
|
127
|
+
- 不可逆操作 / 批准人:
|
|
128
|
+
EOF
|
|
129
|
+
|
|
130
|
+
emit "$DOC/$WISH/review.md" <<EOF
|
|
131
|
+
# $WISH — 代码评审
|
|
132
|
+
|
|
133
|
+
> 由**非实现者**的独立 subagent 在 merge / Verify 前填写。
|
|
134
|
+
|
|
135
|
+
## 结论
|
|
136
|
+
- 结论:(待填:pass 或 fail)
|
|
137
|
+
- 评审人:
|
|
138
|
+
- 日期:
|
|
139
|
+
|
|
140
|
+
## 问题清单
|
|
141
|
+
- (无则写「无」)
|
|
142
|
+
EOF
|
|
143
|
+
|
|
144
|
+
if [[ -f "$POOL" ]]; then
|
|
145
|
+
sed -i -E "s/^(\| *$WISH *\| [^|]*\|) new( *\|)/\1 active\2/" "$POOL" 2>/dev/null || true
|
|
146
|
+
fi
|
|
147
|
+
# NOTE: phase stays idle — design-ready must be reached through the GATED transition
|
|
148
|
+
# (journey.sh --transition design-ready: requires .confirmed artifact + check_spec --phase design).
|
|
149
|
+
# Never --set here: it is the human recovery hatch and would bypass every gate.
|
|
150
|
+
echo "wish: started $WISH -> $DOC/$WISH (phase idle; design-ready via gated journey transition)"
|