mirror of
https://github.com/claude-code-best/claude-code.git
synced 2026-06-17 05:45:51 +00:00
* 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>
79 lines
2.2 KiB
TypeScript
79 lines
2.2 KiB
TypeScript
/**
|
|
* 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
|
|
}
|