claude-code-best/src/utils/__tests__
claude-code-best 09fc515edb
feat: 远程群控 (#243)
* feat: restore pipe IPC, LAN pipes, monitor tool, and PR-package features

Core IPC system (UDS_INBOX):
- PipeServer/PipeClient with UDS + TCP dual transport, NDJSON protocol
- PipeRegistry: machineId-based role assignment, file locking
- Master/slave attach, prompt relay, permission forwarding
- Heartbeat lifecycle with parallel isPipeAlive probes
- Commands: /pipes, /attach, /detach, /send, /claim-main, /pipe-status

LAN Pipes (LAN_PIPES):
- UDP multicast beacon (224.0.71.67:7101) for zero-config LAN discovery
- PipeServer TCP listener, PipeClient TCP connect mode
- Heartbeat auto-attaches LAN peers via TCP
- Cross-machine attach allowed regardless of role
- /pipes shows [LAN] peers with role + hostname/IP
- SendMessageTool supports tcp: scheme with user consent

Architecture — extracted hooks from REPL.tsx (~830 lines → ~20 lines):
- usePipeIpc: lifecycle (bootstrap, handlers, heartbeat, cleanup)
- usePipeRelay: slave→master message relay via module singleton
- usePipePermissionForward: permission request/cancel forwarding
- usePipeRouter: selected pipe input routing with role+IP labels
- Shared ndjsonFramer.ts replaces 3 duplicate NDJSON parsers

Key fixes applied during development:
- Multicast binds to correct LAN interface (not WSL/Docker)
- Beacon ref stored as module singleton (not Zustand state mutation)
- Heartbeat preserves LAN peers in discoveredPipes and selectedPipes
- Disconnect handler calls removeSlaveClient (fixes listener leak)
- cleanupStaleEntries probes without lock, writes briefly under lock
- getMachineId uses async execFile (not blocking execSync)
- globalThis.__pipeSendToMaster replaced with setPipeRelay singleton
- M key only toggles route mode when selector panel is expanded
- User prompt displayed in message list on pipe broadcast
- Broadcast notifications show [role] + hostname/IP for LAN peers

Other restored features:
- Monitor tool: /monitor command, MonitorTool, MonitorMcpTask lifecycle
- Daemon supervisor and remoteControlServer command
- Tools: SnipTool, SleepTool, ListPeersTool, SendUserFileTool,
  WebBrowserTool, WorkflowTool, and 10+ stub→implementation rewrites
- Feature flags: UDS_INBOX, LAN_PIPES, MONITOR_TOOL, FORK_SUBAGENT,
  KAIROS, COORDINATOR_MODE, WORKFLOW_SCRIPTS, HISTORY_SNIP

Tests: 2190 pass / 0 fail (15 new: lanBeacon 7, peerAddress 8)

* fix: resolve merge conflicts and fix all tsc/test errors after main merge

- Export ToolResultBlockParam from Tool.ts (14 tool files fixed)
- Migrate ink imports from ../../ink.js to @anthropic/ink (7 files)
- Fix toolUseID → toolUseId typo in monitor.ts and MonitorTool.tsx
- Add fallback values for string|undefined type errors (8 locations)
- Fix AppState type in assistant.ts, add NewInstallWizard stubs
- Fix ParsedRepository.repo → .name in subscribe-pr.ts
- Fix AgentId/string type mismatch in BackgroundTasksDialog.tsx
- Fix PipeRelayFn return type in pipePermissionRelay.ts
- Use PipeMessage type in usePipeRelay.ts
- Fix lanBeacon.test.ts mock type assertions
- Create missing MouseActionEvent class for ink package
- Use ansi: color format instead of bare "green"/"red"
- Resolve theme.permission access via getTheme()

Result: 0 tsc errors, 2496 tests pass, 0 fail

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: 恢复 /poor 的说明

---------

Co-authored-by: unraid <local@unraid.local>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-11 23:22:55 +08:00
..
abortController.test.ts feat: 完成测试 16-17 2026-04-02 16:03:20 +08:00
argumentSubstitution.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
array.test.ts feat: 搭建单元测试基础设施 — Bun test runner + 示例测试 2026-04-01 02:08:38 +08:00
bufferedWriter.test.ts feat: 完成测试 16-17 2026-04-02 16:03:20 +08:00
CircularBuffer.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
claudemd.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
collapseHookSummaries.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
collapseTeammateShutdowns.test.ts fix(types): clean type fixes across 92 files 2026-04-09 23:45:56 +08:00
configConstants.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
contentArray.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
controlMessageCompat.test.ts fix(types): clean type fixes across 92 files 2026-04-09 23:45:56 +08:00
cron.test.ts test: 添加 Cron 调度单元测试 (测试计划 07) 2026-04-01 22:23:26 +08:00
detectRepository.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
diff.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
directMemberMessage.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
displayTags.test.ts test: Phase 5 — 添加 12 个测试文件 (+209 tests, 1177 total) 2026-04-02 10:11:43 +08:00
effort.test.ts test: Phase 5 — 添加 12 个测试文件 (+209 tests, 1177 total) 2026-04-02 10:11:43 +08:00
envUtils.test.ts test: Phase 2-4 — 添加 12 个测试文件 (+321 tests, 968 total) 2026-04-02 09:29:01 +08:00
envValidation.test.ts feat: 完成测试 16-17 2026-04-02 16:03:20 +08:00
errors.test.ts test: Phase 1 — 添加 8 个纯函数测试文件 (+134 tests) 2026-04-02 08:50:29 +08:00
file.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
fingerprint.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
format.test.ts test: add coverage for formatRelativeTimeAgo and formatLogMetadata (#94) 2026-04-03 22:17:58 +08:00
formatBriefTimestamp.test.ts fix(openai): fix stop_reason null, zero usage fields and max_tokens forwarding 2026-04-10 12:17:52 +08:00
frontmatterParser.test.ts test: 添加 Utils 纯函数单元测试 (测试计划 02) 2026-04-01 22:03:02 +08:00
generators.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
git.test.ts test: 添加 Git 工具函数单元测试 (测试计划 08) 2026-04-01 22:30:45 +08:00
gitDiff.test.ts feat: 完成测试 16-17 2026-04-02 16:03:20 +08:00
glob.test.ts test: 添加 Utils 纯函数单元测试 (测试计划 02) 2026-04-01 22:03:02 +08:00
groupToolUses.test.ts test: Phase 2-4 — 添加 12 个测试文件 (+321 tests, 968 total) 2026-04-02 09:29:01 +08:00
hash.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
horizontalScroll.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
hyperlink.test.ts test: Phase 5 — 添加 12 个测试文件 (+209 tests, 1177 total) 2026-04-02 10:11:43 +08:00
json.test.ts test: 添加 json/truncate/path/tokens 模块测试 2026-04-01 23:56:37 +08:00
lanBeacon.test.ts feat: 远程群控 (#243) 2026-04-11 23:22:55 +08:00
lazySchema.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
markdown.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
memoize.test.ts test: Phase 2-4 — 添加 12 个测试文件 (+321 tests, 968 total) 2026-04-02 09:29:01 +08:00
messages.test.ts feat: 全部类型问题解决 2026-04-11 10:24:00 +08:00
modelCost.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
notebook.test.ts fix(types): clean type fixes across 92 files 2026-04-09 23:45:56 +08:00
objectGroupBy.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
path.test.ts feat: 远程群控 (#243) 2026-04-11 23:22:55 +08:00
peerAddress.test.ts feat: 远程群控 (#243) 2026-04-11 23:22:55 +08:00
pipePermissionRelay.test.ts feat: 远程群控 (#243) 2026-04-11 23:22:55 +08:00
pipeTransport.test.ts feat: 远程群控 (#243) 2026-04-11 23:22:55 +08:00
privacyLevel.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
sanitization.test.ts test: Phase 1 — 添加 8 个纯函数测试文件 (+134 tests) 2026-04-02 08:50:29 +08:00
semanticBoolean.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
semanticNumber.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
semver.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
sequential.test.ts fix(types): clean type fixes across 92 files 2026-04-09 23:45:56 +08:00
set.test.ts feat: 搭建单元测试基础设施 — Bun test runner + 示例测试 2026-04-01 02:08:38 +08:00
slashCommandParsing.test.ts test: Phase 1 — 添加 8 个纯函数测试文件 (+134 tests) 2026-04-02 08:50:29 +08:00
sleep.test.ts test: Phase 2-4 — 添加 12 个测试文件 (+321 tests, 968 total) 2026-04-02 09:29:01 +08:00
sliceAnsi.test.ts feat: 完成测试 16-17 2026-04-02 16:03:20 +08:00
stream.test.ts feat: 完成测试 16-17 2026-04-02 16:03:20 +08:00
stringUtils.test.ts test: 添加 Utils 纯函数单元测试 (测试计划 02) 2026-04-01 22:03:02 +08:00
systemPrompt.test.ts test: 添加 Context 构建单元测试 (测试计划 03) 2026-04-01 22:14:23 +08:00
taggedId.test.ts test: Phase 5 — 添加 12 个测试文件 (+209 tests, 1177 total) 2026-04-02 10:11:43 +08:00
textHighlighting.test.ts fix(types): clean type fixes across 92 files 2026-04-09 23:45:56 +08:00
tokenBudget.test.ts test: Phase 5 — 添加 12 个测试文件 (+209 tests, 1177 total) 2026-04-02 10:11:43 +08:00
tokens.test.ts fix(types): clean type fixes across 92 files 2026-04-09 23:45:56 +08:00
treeify.test.ts fix(types): clean type fixes across 92 files 2026-04-09 23:45:56 +08:00
truncate.test.ts feat: 远程群控 (#243) 2026-04-11 23:22:55 +08:00
userPromptKeywords.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
uuid.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00
windowsPaths.test.ts test: Phase 5 — 添加 12 个测试文件 (+209 tests, 1177 total) 2026-04-02 10:11:43 +08:00
withResolvers.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
words.test.ts feat: 完成测试 16-17 2026-04-02 16:03:20 +08:00
xdg.test.ts test: 添加一大堆测试文件 2026-04-02 20:28:08 +08:00
xml.test.ts test: 添加 Utils 纯函数单元测试 (测试计划 02) 2026-04-01 22:03:02 +08:00
zodToJsonSchema.test.ts test: 新增测试代码文件 2026-04-02 14:44:56 +08:00