mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-17 22:05:50 +00:00
Feat/integrate lint preview (#285)
* feat: 适配 zed acp 协议 * docs: 完善 acp 文档 * feat: integrate feature branches + daemon/job 命令层级化 + 跨平台后台引擎 Cherry-picked from origin/lint/preview (637c908), excluding lint-only changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: correct detectMimeFromBase64 to decode raw bytes from base64 Cherry-picked from origin/lint/preview (ee36954). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: daemon 子进程 spawn 跨平台修复 + CliLaunchSpec 集中化重构 Cherry-picked from origin/lint/preview (c5f52cd), excluding lint-only formatting changes. - 新建 src/utils/cliLaunch.ts: 集中化 CLI 子进程启动层 - 修复 --daemon-worker=kind 等号格式解析 - 修复 daemon/bg fast path 缺少 setShellIfWindows() - 修复 checkPathExists 用 existsSync 替代 execSync('dir') - 7 个 spawn 站点迁移到 CliLaunchSpec Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: merge tsconfig.base.json into tsconfig.json with full compiler options The cherry-pick from637c908dropped jsx/strict/etc settings when removing tsconfig.base.json. This commit restores them in a single tsconfig.json. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: merge tsconfig.base.json into tsconfig.json with full compiler options The cherry-pick from637c908dropped jsx/strict/etc settings when removing tsconfig.base.json. This commit restores them in a single tsconfig.json. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
78
src/utils/pipeMuteState.ts
Normal file
78
src/utils/pipeMuteState.ts
Normal file
@@ -0,0 +1,78 @@
|
||||
/**
|
||||
* pipeMuteState — Master-side logical disconnect state.
|
||||
*
|
||||
* Tracks which slave pipes are currently "muted" (logically disconnected)
|
||||
* and which have a temporary `/send` override active.
|
||||
*
|
||||
* This is local master state only — not part of the socket protocol.
|
||||
*/
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Muted set: slaves whose business messages should be dropped by master
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
const _mutedPipes = new Set<string>()
|
||||
|
||||
export function setMasterMutedPipes(names: Iterable<string>): void {
|
||||
_mutedPipes.clear()
|
||||
for (const n of names) _mutedPipes.add(n)
|
||||
}
|
||||
|
||||
export function isMasterPipeMuted(name: string): boolean {
|
||||
return _mutedPipes.has(name)
|
||||
}
|
||||
|
||||
export function removeMasterPipeMute(name: string): void {
|
||||
_mutedPipes.delete(name)
|
||||
}
|
||||
|
||||
export function clearMasterMutedPipes(): void {
|
||||
_mutedPipes.clear()
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Send override set: slaves temporarily unmuted by explicit `/send` command.
|
||||
// Override lasts until the slave emits `done` or `error`.
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
const _sendOverrides = new Set<string>()
|
||||
let _sendOverrideVersion = 0
|
||||
const _sendOverrideListeners = new Set<() => void>()
|
||||
|
||||
function emitSendOverrideChanged(): void {
|
||||
_sendOverrideVersion += 1
|
||||
for (const listener of _sendOverrideListeners) {
|
||||
listener()
|
||||
}
|
||||
}
|
||||
|
||||
export function addSendOverride(name: string): void {
|
||||
_sendOverrides.add(name)
|
||||
emitSendOverrideChanged()
|
||||
}
|
||||
|
||||
export function removeSendOverride(name: string): void {
|
||||
if (_sendOverrides.delete(name)) {
|
||||
emitSendOverrideChanged()
|
||||
}
|
||||
}
|
||||
|
||||
export function hasSendOverride(name: string): boolean {
|
||||
return _sendOverrides.has(name)
|
||||
}
|
||||
|
||||
export function clearSendOverrides(): void {
|
||||
if (_sendOverrides.size > 0) {
|
||||
_sendOverrides.clear()
|
||||
emitSendOverrideChanged()
|
||||
}
|
||||
}
|
||||
|
||||
export function subscribeSendOverride(listener: () => void): () => void {
|
||||
_sendOverrideListeners.add(listener)
|
||||
return () => { _sendOverrideListeners.delete(listener) }
|
||||
}
|
||||
|
||||
export function getSendOverrideVersion(): number {
|
||||
return _sendOverrideVersion
|
||||
}
|
||||
Reference in New Issue
Block a user