DSH's officially top-recommended TUI plugin — high performance, low overhead, cute pixel whale, smooth mouse interaction. One-command install via npm. / DSH 官方首推的 TUI 插件,高性能低占用,可爱像素鲸鱼,流畅鼠标交互,npm 一键安装
This report summarizes scanner evidence for ccch1mneyyy/dsh-TUI, a TypeScript project with 4,293 GitHub stars. SynthScan examined 407,072 lines of code across 1499 source files, recording 1587 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 9.3 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 512 finding(s).
Are imports declared and package/API names verified? 4 finding(s).
Are wrappers, guards, and repeated structures necessary? 1294 finding(s).
Which changes need focused human review? 1587 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1587 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cordis.patch.yml | 12 | # ── surface-specific values over the dsh-base layer ───────────────────────── | COMMENT |
| MEDIUM | cordis.patch.yml | 104 | # ── agent presets (issue #8) ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | cordis.patch.yml | 243 | # ── dsh-tui rows ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 581 | // ─── 子命令:version / help ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 637 | // ─── doctor 检查逻辑(doctor 子命令与 safe 会话共用)────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 703 | // ─── safe 会话支撑(清单解析与报告渲染,交互/非交互共用)────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 764 | // ─── 子命令:doctor ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 791 | // ─── dsh 会话结果模型(fallback 与 safe 重试共用)───────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 851 | // ─── 最后运行记录 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 1395 | // ─── 子命令:safe(安全模式入口,两种角色同一段代码)────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 1424 | // ─── 子命令:update ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 1455 | // ─── 子命令:migrate ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 1475 | // ─── 全局副本:瘦壳角色 ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | bin/dsh-tui.js | 1499 | // ─── profile 副本(或源码运行):完整启动逻辑 ───────────────────────────── | COMMENT |
| MEDIUM | docs/safe-mode-plan-pr1.md | 151 | // ─── doctor 检查逻辑(doctor 子命令与 safe 会话共用)────────────────────────── | COMMENT |
| MEDIUM | docs/safe-mode-plan-pr1.md | 251 | // ─── dsh 会话结果模型(fallback 与 safe 重试共用)───────────────────────────── | COMMENT |
| MEDIUM | docs/safe-mode-plan-pr1.md | 622 | // ─── safe 会话支撑(清单解析与报告渲染,交互/非交互共用)────────────────────── | COMMENT |
| MEDIUM | docs/safe-mode-plan-pr1.md | 684 | // ─── 子命令:safe(安全模式入口,两种角色同一段代码)────────────────────────── | COMMENT |
| MEDIUM | tui-profile/conformance/tests/run.js | 138 | // ── Backend contribution family (TUI-BACKEND-001) ───────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-session-commands.ts | 114 | // ── the side query ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-session-commands.ts | 158 | // ── the side query's options are classified ──────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-session-commands.ts | 166 | // ── /btw and /recap through the channel ──────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-session-commands.ts | 194 | // ── /rename ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-session-commands.ts | 217 | // ── /color ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-session-commands.ts | 257 | // ── /mcp reconnect | toggle ──────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-session-commands.ts | 276 | // ── DSH keeps its command set and its plain /mcp ─────────────────────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 682 | // ── snapshot-then-refresh (issue #987) ───────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 682 | // ── snapshot-then-refresh (issue #987) ───────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 1031 | // ── the persistent snapshot: what a RESTART paints first ─────────────────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 1288 | // ── progress: the first enumeration, before the listing can resolve ──────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 1659 | // ── the rail shows whole rows, and Enter follows the VISIBLE cursor ──────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 1940 | // ── source tabs: other coding agents' conversations ────────────────────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 2230 | // ── the cache read re-scopes the in-memory slot on every mount ───────────── | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 2322 | // ── another backend's sessions (Phase 4b: the Claude Agent browser) ────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 29 | // ── 隔离 HOME(必须先于任何 src 导入)───────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 172 | // ── A. 往返语义 ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 192 | // ── B. 授权 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 223 | // ── C. 参数校验 ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 288 | // ── D. namespace 隔离与文件名清洗 ───────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 301 | // ── E. quota 双阈值 ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 320 | // ── F. 损坏保文件 ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-plugin-storage.ts | 333 | // ── G. 生命周期 ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/verify-plugin-storage.ts | 362 | // ── H. 隐私:日志永不出现 key/value 材料 ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/verify-plugin-storage.ts | 372 | // ── I. descriptor 现声明 LocalStorage ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/verify-plugin-storage.ts | 381 | // ── 汇总 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/repro-suggestion-click.tsx | 158 | // ═══════════════ 第二幕:输入框点击定位光标 ═══════════════ | COMMENT |
| MEDIUM | scripts/repro-suggestion-click.tsx | 201 | // ═══════════════ 第三幕:命令菜单滚轮选择 ═══════════════ | COMMENT |
| MEDIUM | scripts/repro-suggestion-click.tsx | 232 | // ═══════════════ 第四幕:rewind 点击选中→确认页点击执行 + workspace 菜单点击 ═══════════════ | COMMENT |
| MEDIUM⚡ | scripts/verify-claude-contract.ts | 49 | // ── 1. package.json ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/verify-claude-contract.ts | 59 | // ── 2. contract.ts ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | scripts/verify-claude-contract.ts | 62 | // ── 3. the lockfile ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-contract.ts | 79 | // ── 4. pnpm-workspace.yaml exemptions ─────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-contract.ts | 86 | // ── 5. the installed SDK and its CLI parity ───────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-claude-contract.ts | 97 | // ── 6. the exhaustive Options classification ──────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-reload.ts | 57 | // ── 1. 全部无变化 → 全 unchanged,零 apply/skip ───────────────────────── | COMMENT |
| MEDIUM | scripts/verify-reload.ts | 65 | // ── 2. 五项都改 → 五项都 apply,顺序固定 ──────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-reload.ts | 83 | // ── 3. theme:env 优先 / 无效 / 缺文件 ────────────────────────────────── | COMMENT |
| MEDIUM | scripts/verify-reload.ts | 92 | // ── 4. lang:env / settings 用户层 / cordis.yml 三级优先 ──────────────── | COMMENT |
| MEDIUM | scripts/verify-reload.ts | 106 | // ── 5. preset:DSH_TUI_PRESET 优先;activity:cordis.yml 显式优先 ─────── | COMMENT |
| MEDIUM | scripts/verify-reload.ts | 120 | // ── 6. model:偏好即当前选择(cordis.yml 只是部署默认值) ─────────────── | COMMENT |
| 1011 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .mergify.yml | 1 | # Mergify 合并队列——`main` 的合并由它执行。 | COMMENT |
| LOW | cordis.patch.yml | 1 | # The dsh-tui bundle patch: the interactive terminal front door over the | COMMENT |
| LOW | cordis.patch.yml | 101 | config: | COMMENT |
| LOW | cordis.patch.yml | 241 | root: !!js process.env.DSH_TUI_SESSION_ROOT ?? dshHomePath('sessions') | COMMENT |
| LOW | cordis.patch.yml | 341 | - id: dsh-tui-panels | COMMENT |
| LOW | cordis.patch.yml | 441 | # the Host-owned account service when available. The TUI's /provider | COMMENT |
| LOW | cordis.patch.yml | 461 | # live in the entry-level inject ONLY as an ordering (and reload-rebind) | COMMENT |
| LOW | cordis.patch.yml | 481 | # `fullscreen: false`——显式选择始终优先于默认。 | COMMENT |
| LOW | cordis.patch.yml | 501 | # - id: default | COMMENT |
| LOW | cordis.patch.yml | 521 | backend: !!js process.env.DSH_TUI_BACKEND || undefined | COMMENT |
| LOW | cordis.yml | 1 | # dsh-tui interactive front door over the agent-spine bundle. | COMMENT |
| LOW | cordis.yml | 61 | # wl-copy/xclip/xsel 兜底)、滚轮滚动、双击选词/三击选行。false 则退回 | COMMENT |
| LOW | cordis.yml | 81 | # plan: false | COMMENT |
| LOW | cordis.yml | 181 | # task tools stay at their DSH defaults (on). | COMMENT |
| LOW | pnpm-workspace.yaml | 61 | '@deepseek-ai/dsh-session-persistence': 0.2.0-rc.2 | COMMENT |
| LOW | bin/dsh-tui.js | 81 | const guideDir = join(ownDir, 'guide') | COMMENT |
| LOW | scripts/verify-session-supervisor.tsx | 1661 | // Two regressions in one screen, both invisible to the older assertions: | COMMENT |
| LOW | scripts/repro-inline-thirdparty.tsx | 161 | // 视口是比帧更高的滑动窗口,注入的第三方输出消耗物理行后会把窗口相对帧 | COMMENT |
| LOW | scripts/verify-claude-channels.ts | 1301 | // the one production ships). The isolated user settings hold an old | COMMENT |
| LOW | scripts/repro-settings.tsx | 221 | assert(await settled(() => mutations.length === 2), 'confirmed number draft auto-saved') | COMMENT |
| LOW | scripts/repro-effort.tsx | 361 | } | COMMENT |
| LOW | scripts/verify-launchpad.tsx | 1821 | // 不变量;新判据只是把"显式标记的降级"从缺陷里摘出来——每一条 half 判据仍要求 | COMMENT |
| LOW | scripts/verify-backend-registry.ts | 141 | // ── 2b′. §4.7 ① over the *real* manifests (B-3) ──────────────────────────────── | COMMENT |
| LOW | scripts/verify-minimal-ui-naming.ts | 121 | // (verify-channel-ui 那一档是 `if (effect !== 'mutate') continue`,会静默跳过)。 | COMMENT |
| LOW | scripts/verify-paste-drop.ts | 321 | // T05 hotfix, CONTROL GROUP (was: "inert C0 controls are dropped"). The | COMMENT |
| LOW | scripts/verify-win32-input.tsx | 701 | COMMENT | |
| LOW | scripts/verify-win32-input.tsx | 981 | } | COMMENT |
| LOW | scripts/verify-win32-input.tsx | 1041 | const f = new Feeder() | COMMENT |
| LOW | scripts/verify-command-hold.ts | 81 | assert.equal(workingHoldOf('model deepseek/x'), 'gated', 'a completion path inherits its root hold') | COMMENT |
| LOW | scripts/verify-command-hold.ts | 121 | const source = readFileSync(file, 'utf8') | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 1 | # The `anchored-standard` experimental preset: Standard capabilities with the | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 21 | # pool instances — `provide()` throws on the second registration under the | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 41 | # opt-in for standard-schema bootstraps; unset, the adapter default flows. See | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 101 | # exist; read them before acting" — and the model reads the files itself via | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 121 | # below registers the same `bash` tool name into this same preset layer, and | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 161 | Run commands in a bash shell | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 221 | # Only the model-facing controls. The task REGISTRY stays on the host plane: | COMMENT |
| LOW | presets/liangshen/agent.cordis.yml | 321 | # registered once. This preset contributes the delegation TOOLS, which resolve | COMMENT |
| LOW | src/extensions.ts | 1 | // Re-export shim: the Cordis-backed implementation lives behind the adapter | COMMENT |
| LOW | src/api.ts | 1 | // Types-only entry (`@deepseek-harness-tui/dsh-tui/api`): every plugin-facing | COMMENT |
| LOW | src/api.ts | 21 | // removed from the public surface; repository-internal headless helpers | COMMENT |
| LOW | src/update.ts | 2161 | // noisy logging on every ordinary launch (/restart only). | COMMENT |
| LOW | src/update.ts | 2181 | // here was built by THIS process, and on a kernel switch even the target itself | COMMENT |
| LOW | src/jsx-runtime.ts | 1 | // Host JSX factory for plugin scenes: re-exports the TUI's OWN | COMMENT |
| LOW | src/ink/dom.ts | 61 | dirty: boolean | COMMENT |
| LOW | src/ink/dom.ts | 81 | // clamps scrollTop to stay within it. Prevents blank screen when | COMMENT |
| LOW | src/ink/dom.ts | 101 | // its own (positional re-pin at the bottom) — imperative scrolls already | COMMENT |
| LOW | src/ink/dom.ts | 121 | onViewportHeightChange?: () => void | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 101 | // absolute child that paints OUTSIDE its parent's rect (OverlayAbove uses | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1021 | // row 0 and blitRegion clamps in screen space, so the panel keeps its | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1301 | output.write(x, y, text, softWrap, lines) | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1421 | const content = node.childNodes.find(c => (c as DOMElement).yogaNode) as | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1461 | // pinned header, recap row) or the terminal changes row count — | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1521 | // scrollAnchor: scroll so the anchored element's top is at the | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1541 | // previous max, pin to the new max. Scroll away → stop following; | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1561 | // following it (or clamping to its smaller maxScroll) would yank an | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1621 | const pending = node.pendingScrollDelta | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1641 | (pending < 0 && cMin !== undefined && cur < cMin) || | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1661 | // just the input box, and an idle app produces no follow-up frame | COMMENT |
| LOW | src/ink/render-node-to-output.ts | 1761 | // layoutShifted detection gap: when scrollTop moves by >= viewport | COMMENT |
| 217 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tui-profile/protocols/tui-contributions.d.ts | 89 | export function validateSettingsSectionSpec(value: unknown): Readonly<SettingsSectionSpec> | CODE |
| LOW⚡ | tui-profile/protocols/tui-contributions.d.ts | 92 | export function registerTuiContributionExtensions(catalog: ManifestDefinitionCatalog): () => void | CODE |
| LOW⚡ | tui-profile/protocols/tui-contributions.d.ts | 93 | export function assertSettingsSectionHandler(value: unknown): asserts value is SettingsSectionHandler | CODE |
| LOW | tui-profile/protocols/tui-channel-http.js | 7 | export function createTuiChannelEndpointDescriptor(origin) { | CODE |
| LOW | tui-profile/protocols/tui-channel-http.js | 23 | export function validateTuiChannelEndpointDescriptor(value) { | CODE |
| LOW | tui-profile/protocols/tui-channel.js | 38 | export function validateTuiChannelRequirement(value) { | CODE |
| LOW | tui-profile/protocols/tui-channel.js | 45 | export function validateTuiChannelSupport(value) { | CODE |
| LOW | tui-profile/protocols/tui-channel.js | 85 | export function validateTuiChannelSnapshot(value) { | CODE |
| LOW | tui-profile/protocols/tui-channel-http.d.ts | 14 | export function createTuiChannelEndpointDescriptor(origin: string): TuiChannelEndpointDescriptor | CODE |
| LOW | tui-profile/protocols/tui-channel-http.d.ts | 15 | export function validateTuiChannelEndpointDescriptor(value: unknown): TuiChannelEndpointDescriptor | CODE |
| LOW⚡ | tui-profile/protocols/tui-channel.d.ts | 55 | export function validateTuiChannelRequirement(value: unknown): TuiChannelRequirementSpec | CODE |
| LOW⚡ | tui-profile/protocols/tui-channel.d.ts | 56 | export function validateTuiChannelSupport(value: unknown): TuiChannelSupportSpec | CODE |
| LOW⚡ | tui-profile/protocols/tui-channel.d.ts | 58 | export function validateTuiChannelSnapshot(value: unknown): TuiChannelSnapshot | CODE |
| LOW | tui-profile/protocols/tui-contributions.js | 51 | export function validateSettingsSectionSpec(value) { | CODE |
| LOW | tui-profile/protocols/tui-contributions.js | 164 | export function registerTuiContributionExtensions(catalog) { | CODE |
| LOW | tui-profile/protocols/tui-contributions.js | 169 | export function assertSettingsSectionHandler(value) { | CODE |
| LOW | scripts/verify-plugin-grants.ts | 73 | async function awaitInitialKernelReadiness( | CODE |
| LOW | scripts/verify-sticky-anchor.tsx | 189 | function assertHeaderFollowsViewport(label: string): number | null { | CODE |
| LOW | scripts/verify-zellij.tsx | 104 | function checkProbeEnvCoversModule(): void { | CODE |
| LOW | scripts/verify-zellij.tsx | 157 | function checkScenarioReachedProbe(label: string, result: ProbeResult, scenario: Scenario): void { | CODE |
| LOW | scripts/verify-adapter-shadow.ts | 342 | function sourceCallsKernelLedgerRecord(source: string): boolean { | CODE |
| LOW | scripts/verify-adapter-shadow.ts | 485 | function classAnyMemberHasReturnedHandleGuard(ownerClass: string, handle: string, capability: string): boolean { | CODE |
| LOW | scripts/verify-adapter-shadow.ts | 549 | function fileHasDirectCapabilityGuard(relative: string, capability: string): boolean { | CODE |
| LOW | scripts/verify-adapter-shadow.ts | 572 | function fileHasMethodCallNamedWithUndefinedArg(relative: string, method: string): boolean { | CODE |
| LOW | scripts/verify-adapter-slices.ts | 44 | function productionKernelSlicesWired(source: string): boolean { | CODE |
| LOW | scripts/verify-model-picker-ui.tsx | 120 | function panelUsesDefaultBackground(term: InstanceType<typeof Terminal>): boolean { | CODE |
| LOW | scripts/verify-live-session.ts | 243 | async function verifyRealUpstreamSession(): Promise<void> { | CODE |
| LOW | scripts/lib/agent-event-invariants.ts | 31 | export function agentEventInvariantViolations(events: readonly AgentEvent[], options: AgentEventInvariantOptions = {}): | CODE |
| LOW | scripts/lib/agent-event-invariants.ts | 170 | export function assertAgentEventInvariants(events: readonly AgentEvent[], options?: AgentEventInvariantOptions): void { | CODE |
| LOW | src/commands.ts | 205 | export function supportedLocalCommandNames( | CODE |
| LOW | src/commands.ts | 225 | export function isUnavailableLocalCommand( | CODE |
| LOW | src/migrationPrefs.ts | 75 | export function planFullscreenFactoryMigration( | CODE |
| LOW | src/migrationPrefs.ts | 92 | export async function commitFullscreenFactoryMigration( | CODE |
| LOW | src/deepseekPricing.ts | 70 | export function isDeepSeekOfficialProvider(provider: string): boolean { | CODE |
| LOW | src/deepseekPricing.ts | 160 | export function estimateSessionCostSplitCny( | CODE |
| LOW | src/deepseekPricing.ts | 275 | export function estimateCostFromBucketsCny( | CODE |
| LOW | src/deepseekPricing.ts | 333 | export function collectSessionCostEntries(input: SessionCostInput): CostBucketEntry[] { | CODE |
| LOW | src/deepseekPricing.ts | 352 | export function estimateSessionCostSnapshotCny( | CODE |
| LOW | src/handoffEvents.ts | 50 | export function classifyReplacementOutcome(input: { | CODE |
| LOW | src/tuiDisplayPrefs.ts | 312 | export function normalizeMathImageBacking(value: unknown): MathImageBacking { | CODE |
| LOW | src/tuiDisplayPrefs.ts | 433 | export function normalizeBtwContextBudget(value: unknown): number { | CODE |
| LOW | src/theme.ts | 1145 | export function registerCustomThemeResolver(resolver: ThemeResolver): void { | CODE |
| LOW | src/theme.ts | 1154 | export function registerRuntimeThemeResolver(resolver: ThemeResolver): () => void { | CODE |
| LOW | src/theme.ts | 1169 | export function clearRuntimeThemeResolver(): void { | CODE |
| LOW | src/sessionModes.ts | 82 | export function stablePermissionRosterOrder( | CODE |
| LOW | src/tuiSettingsFile.ts | 54 | export function backupUnreadableTuiSettings(file: string = TUI_SETTINGS_FILE): string { | CODE |
| LOW | src/update.ts | 790 | export async function downloadAndReplaceStandaloneBinary( | CODE |
| LOW | src/update.ts | 1143 | export function ensureWorkspaceAllowBuilds(yamlPath: string): AllowBuildsOutcome | undefined { | CODE |
| LOW | src/update.ts | 1238 | export function ensureProfileReleaseAgeExclude( | CODE |
| LOW | src/update.ts | 1418 | export function ignoredSharpOptionalPatterns(platform: string, cpu: string, libc: string): string[] { | CODE |
| LOW | src/update.ts | 1514 | export function ensureProfileSharpPlatformFilter(profile: string): SharpPlatformFilterOutcome | undefined { | CODE |
| LOW | src/update.ts | 1633 | export function removeStalePackageInstall(profile: string): StaleInstallRemoval { | CODE |
| LOW | src/ink/terminal-image.ts | 107 | export function normalizeTerminalCellSize( | CODE |
| LOW | src/ink/terminal-image.ts | 137 | function plausibleTerminalCellSize( | CODE |
| LOW | src/ink/terminal-image.ts | 370 | export function terminalImageSourceFromAttributes( | CODE |
| LOW | src/ink/squash-text-nodes.ts | 23 | export function squashTextNodesToSegments( | CODE |
| LOW | src/ink/output.ts | 1363 | function styledCharsWithGraphemeClustering( | CODE |
| LOW | src/ink/sixel-codec.ts | 45 | export function sixelCoveragePaintsThreshold(alpha: number): boolean { | CODE |
| LOW | src/ink/render-node-to-output.ts | 277 | export function getOcclusionMismatchNodes(output: Output): DOMElement[] { | CODE |
| LOW | src/ink/render-node-to-output.ts | 2336 | function blitEscapingAbsoluteDescendants( | CODE |
| 163 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cordis.patch.yml | 37 | # The native DeepSeek adapter, pinned to the harness defaults: full thinking | COMMENT |
| MEDIUM | cordis.patch.yml | 524 | # summary). Mounted through @deepseek-harness-tui/dsh-tui's own | COMMENT |
| MEDIUM | cordis.yml | 13 | # The approval service (issue #49): the harness's sandbox escalation seam | COMMENT |
| MEDIUM | cordis.yml | 217 | # Mounted through @deepseek-harness-tui/dsh-tui's `./working-activity` | COMMENT |
| MEDIUM | scripts/verify-session-supervisor.tsx | 1410 | // condition is what makes this robust: the screen names the terminal's own | COMMENT |
| MEDIUM | scripts/verify-tips.tsx | 194 | // sides before substring assertions — robust to any wrap/indent point. | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 273 | # deepseek-ai/deepseek-harness tag dsh-v0.2.0-rc.2 | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 282 | # deepseek-ai/deepseek-harness tag dsh-v0.1.5-alpha.2 — the compat line | COMMENT |
| MEDIUM | presets/liangshen/agent.cordis.yml | 54 | # catalog at once, matching the two-stage harness experiment. There is no | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | cordis.yml | 249 | # DeepSeek advertises a 1M context window, so the 80% default threshold | COMMENT |
| MEDIUM | src/dsh-adapter/oauth/index.ts | 28 | * # below tunes the Codex `gpt-5.6-sol` context window to 1M tokens. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tui-profile/protocols/tui-contributions.js | 199 | 'path', 'label', 'titles', 'hint', 'hintTitles', 'kind', 'options', 'placeholder', 'secretRef', | CODE |
| LOW | src/dsh-adapter/subagents.ts | 46 | private descriptionSource = new Map<string, 'queue' | 'bound' | 'placeholder'>() | CODE |
| LOW | src/dsh-adapter/subagents.ts | 82 | const source: 'queue' | 'bound' | 'placeholder' = keyed !== undefined ? 'bound' : description === undefined ? 'place | CODE |
| LOW | src/dsh-adapter/subagents.ts | 219 | this.descriptionSource.set(agentId, label === undefined ? 'placeholder' : 'bound') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | presets/liangshen/agent.cordis.yml | 7 | # This file is an AGENT-PLANE composition. The roster mounts it ONCE under a | COMMENT |