林凯90331
6b5b801dae
fix(ink): treat newline as return and suppress favorite fetch error in TUI
...
Some terminals on CentOS emit \n or \r\n instead of \r for the Enter key.
Map both sequences to 'return' in parseKeypress so key.return is set correctly.
Replace console.warn with logForDebugging in favorite.ts to prevent
network errors from polluting the TUI output.
Signed-off-by: 林凯90331 <90331@sangfor.com>
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
2026-05-15 11:06:18 +08:00
林凯90331
beb268eca0
fix(ink): handle enter key on centos
...
Some terminals on CentOS emit 'enter' instead of 'return' for the Enter key.
Treat both names as the Return key to ensure consistent input behavior across platforms.
Signed-off-by: 林凯90331 <90331@sangfor.com>
Co-authored-by: CoStrict <zgsm@sangfor.com.cn>
2026-05-15 10:17:22 +08:00
DoSun
c2eb6bff90
fix: 清理 main 分支的 stub .js 文件,恢复有 .ts 源文件的命令模块
2026-05-13 10:36:04 +08:00
y574444354
d59d1f590a
chore: 合并社区 upstream/main 代码至 v2.4.2
...
合并 claude-code-best/claude-code 社区最新代码,包含:
- 配置文件更新:precheck/lint-staged/overrides 等
- 新 feature flags:EXPERIMENTAL_SEARCH_EXTRA_TOOLS、AUTOFIX_PR
- 工具系统架构更新:Tool Search、ACP 协议支持
- 文档更新:CLAUDE.md 同步架构变更
- 依赖更新:SDK 版本升级、lint-staged 加入
冲突处理策略:以 costrict 版本为主,选择性合并上游功能改进
2026-05-12 11:55:04 +08:00
claude-code-best
2192120646
feat: 尝试改进 Error 处理以提升内存管理效率
2026-05-05 18:18:13 +08:00
claude-code-best
e90f5b16ed
fix: 优化内存峰值与 CPU 性能,降低 100-300MB 内存占用
...
- claude.ts: 流式字符串拼接从 O(n²) += 改为数组累积 join,消除 4 处热点
- Messages.tsx: 合并 3 组独立遍历为单次 pass(thinking/bash 查找、3-filter 链、divider/selectedIdx)
- HighlightedCode.tsx: ColorFile 实例添加模块级 LRU 缓存(50 条),避免重复创建
- screen.ts: StylePool 衍生缓存添加 1000 条上限淘汰,防止无界增长
- CompanionSprite.tsx: TICK_MS 从 500ms 提升至 1000ms,减少 setState 频率
- connection.ts: MCP stderr 缓冲从 64MB 降至 8MB
- stringUtils.ts: MAX_STRING_LENGTH 从 32MB 降至 2MB
- sessionStorage.ts: Transcript 写入队列添加 1000 条上限
- query.ts: spread 改 concat 减少一次数组拷贝
- PromptInputFooterLeftSide.tsx: 显示进程 pid 便于调试
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-02 00:45:03 +08:00
claude-code-best
a16afdbf78
fix: 修复 tsc 类型错误,通过 CI typecheck 阶段
...
- bridgeClient.ts: 添加缺失的 pairingInProgress 属性声明
- ink.tsx: 移除 5 处不再需要的 @ts-expect-error,保留 1 处 MACRO 比较
- client.ts: 添加缺失的 pendingSessionTarget 属性声明
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 22:00:29 +08:00
claude-code-best
f8480358ca
style: 格式化 packages/@ant/ 下所有文件以通过 biome ci
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 21:55:51 +08:00
claude-code-best
d1472534d2
style: 修复所有 lint 错误,覆盖 @ant forked 代码
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-01 21:49:21 +08:00
Bonerush
78c70308cd
fix: theme switching always defaults to dark mode
...
Root causes:
1. ThemeProvider was imported but never used in App.tsx and showSetupDialog
2. setThemeConfigCallbacks was never called to inject persistence callbacks
3. Preview/save/cancel theme lifecycle had no provider to coordinate
Changes:
- Export setThemeConfigCallbacks from @anthropic/ink
- Wrap App.tsx children with ThemeProvider (initialState from config, onThemeSave persists)
- Wrap showSetupDialog with ThemeProvider for onboarding/trust dialogs
- Call setThemeConfigCallbacks in init.ts to register load/save callbacks
- Update SnapshotUpdateDialog test to account for new ThemeProvider wrapper
Fixes #theme-switching
2026-04-30 16:15:27 +08:00
y574444354
8f9e7d5067
merge: sync upstream/main while preserving local brand/config
...
- 保留本地 package.json(@costrict/csc, v4.0.12)、CLAUDE.md、README、contributors.svg
- 采用上游代码更新:19 commits including bug fixes, security improvements
- 删除 upstream 废弃文件:automation.js, automation.test.js, health-check.ts
2026-04-29 09:06:20 +08:00
claude-code-best
e38d45460e
fix: 修复 Windows Node.js 构建产物因 stdin.ref() 泄漏导致进程挂起 ( #353 )
...
startCapturingEarlyInput() 调用 stdin.ref() 后,如果 Ink 未能接管
(如 raw mode 不支持或 setup 阶段异常),unref() 永远不会被调用,
导致 Node.js 事件循环无法退出。修复包括:
- stopCapturingEarlyInput() 中补充 stdin.unref() 调用
- 新增 10s 安全阀定时器自动清理 leaked ref()
- Ink App.componentWillUnmount 兜底 unref() 非 TTY stdin
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-24 21:16:15 +08:00
yhangf
bd150468b0
chore(branding): replace Claude/Anthropic references with CoStrict in UI strings
2026-04-21 20:13:14 +08:00
claude-code-best
bddd146f25
feat: 重构供应商层次 ( #286 )
...
* refactor: 创建 @anthropic-ai/model-provider 包骨架与类型定义
- 新建 workspace 包 packages/@anthropic-ai/model-provider
- 定义 ModelProviderHooks 接口(依赖注入:分析、成本、日志等)
- 定义 ClientFactories 接口(Anthropic/OpenAI/Gemini/Grok 客户端工厂)
- 搬入核心类型:Message 体系、NonNullableUsage、EMPTY_USAGE、SystemPrompt、错误常量
- 主项目 src/types/message.ts 等改为 re-export,保持向后兼容
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: 提升 OpenAI 转换器和模型映射到 model-provider 包
- 搬入 OpenAI 消息转换(convertMessages)、工具转换(convertTools)、流适配(streamAdapter)
- 搬入 OpenAI 和 Grok 模型映射(resolveOpenAIModel、resolveGrokModel)
- 主项目文件改为 thin re-export proxy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: 搬入 Gemini 兼容层到 model-provider 包
- 搬入 Gemini 类型定义、消息转换、工具转换、流适配、模型映射
- 主项目 gemini/ 目录下文件改为 thin re-export proxy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: 搬入 errorUtils 并迁移消费者导入到 model-provider
- 搬入 formatAPIError、extractConnectionErrorDetails 等 errorUtils
- 迁移 10 个消费者文件直接从 @anthropic-ai/model-provider 导入
- 更新 emptyUsage、sdkUtilityTypes、systemPromptType 为 re-export proxy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: compact 模型降级为 -1 模式(Opus→Sonnet, Sonnet→Haiku)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* docs: 添加 agent-loop 绘图
* Revert "feat: compact 模型降级为 -1 模式(Opus→Sonnet, Sonnet→Haiku)"
This reverts commit e458d6391d .
* docs: 添加简化版 agent loop
* fix: 修复 n 快捷键导致关闭的问题
* fix: 修复 node 下 ws 没打包问题
* docs: 修复链接
* test: 添加测试支持
* fix: 修复类型问题(#267 ) (#271 )
* fix: 修复 Bun 的 polyfill 问题
* fix: 类型修复完成
* feat: 统一所有包的类型文件
* fix: 修复构建问题
* test: 修复类型校验 (#279 )
* fix: 修复 Bun 的 polyfill 问题
* fix: 类型修复完成
* feat: 统一所有包的类型文件
* fix: 修复构建问题
* fix(remote-control): harden self-hosted session flows (#278 )
Co-authored-by: chengzifeng <chengzifeng@meituan.com>
* docs: update contributors
* build: 新增 vite 构建流程
* feat: 添加环境变量支持以覆盖 max_tokens 设置
* feat(langfuse): LLM generation 记录工具定义
将 Anthropic 格式的工具定义转换为 Langfuse 兼容的 OpenAI 格式,
并在 generation 的 input 中以 { messages, tools } 结构传入,
以便在 Langfuse UI 中查看完整的工具定义信息。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: 添加对 ACP 协议的支持 (#284 )
* feat: 适配 zed acp 协议
* docs: 完善 acp 文档
* chore: 1.4.0
* conflict: 解决冲突
* feat: 添加测试覆盖率上报
* style: 改名加移动文件夹位置
* refactor: 移动测试用例及实现
* test: 修复测试用例完成
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Cheng Zi Feng <1154238323@qq.com>
Co-authored-by: chengzifeng <chengzifeng@meituan.com>
Co-authored-by: claude-code-best <272536312+claude-code-best@users.noreply.github.com>
2026-04-17 09:33:14 +08:00
claude-code-best
c8d08d235b
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 from 637c908 dropped 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 from 637c908 dropped 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>
2026-04-16 20:59:29 +08:00
claude-code-best
da60b49b86
fix: 修复类型问题( #267 ) ( #271 )
...
* fix: 修复 Bun 的 polyfill 问题
* fix: 类型修复完成
* feat: 统一所有包的类型文件
* fix: 修复构建问题
2026-04-16 11:07:01 +08:00
xixingde
75c510cb9d
feat(agents): add visibleTo access control and orchestrator agents for TDD/Wiki workflows
...
- Add `visibleTo` field to `BaseAgentDefinition` to restrict agent visibility to specific parent agent types
- Filter agents with `visibleTo` restrictions from wildcard agent lists in prompt generation
- Add new `TDD_AGENT` and `WIKI_AGENT` orchestrator agents as entry points for TDD and Wiki workflows
- Register `WIKI_AGENT` in built-in agents list with workflow grouping comments
- Mark all TDD sub-agents (`TddRunAndFix`, `TddTestAndFix`, `TddTestDesign`, `TddTestPrepare`) as `visibleTo: ['TDD']`
- Mark all Wiki sub-agents (`WikiProjectAnalyze`, `WikiCatalogueDesign`, `WikiDocumentGenerate`, `WikiIndexGeneration`) as `visibleTo: ['WIKI']`
- Mark workflow-specific agents (`DesignAgent`, `QuickExplore`, `Requirement`, `SubCoding`, `TaskCheck`, `TaskPlan`, `StrictSpec`) with appropriate `visibleTo` restrictions
- Refactor `strict-project-wiki` and `strict-test` skills to delegate directly to orchestrator agents via `context: 'fork'`
- Remove stale package-level node_modules symlinks
2026-04-15 15:49:28 +08:00
claude-code-best
1a4e9702c2
fix: 修复类型问题( #267 ) ( #271 )
...
* fix: 修复 Bun 的 polyfill 问题
* fix: 类型修复完成
* feat: 统一所有包的类型文件
* fix: 修复构建问题
2026-04-15 10:54:00 +08:00
Ubuntu
3c41abe5ef
linshi fangchu node_modules
2026-04-14 14:21:21 +00:00
claude-code-best
2fb1c9dcd8
feat: 工具层及 mcp 大重构 ( #252 )
...
* feat: 第一版大重构
* fix: 修复类型问题
* chore: 更新版本到 1.3.2
* Add brave as alternative WebSearchTool
* fix: 修正顺序
* fix: 修复对穷鬼模式的 auto dream 和 session memory 越过
* feat: 穷鬼模式去除 session-summary
* feat: 创建 builtin-tools 包,搬运所有工具实现
将 src/tools/ 下的全部 60 个工具目录迁移至 packages/builtin-tools/src/tools/,
内部导入路径已更新为 src/ alias 模式。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: 更新 src/ 中所有工具引用至 builtin-tools 包,删除 src/tools/
- src/tools.ts 及 178 个 src/ 文件的 import 路径从 ./tools/ 改为 builtin-tools/tools/
- 删除 src/tools/ 整个目录(已迁移至 packages/builtin-tools/)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: 添加 builtin-tools 路径别名至 tsconfig,更新 bun.lock
- tsconfig.json 新增 builtin-tools/* 和 builtin-tools 路径映射
- 新增 packages/builtin-tools/src 至 include
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refactor: 为 builtin-tools、mcp-client、agent-tools 添加 @claude-code-best 作用域前缀
所有包名及 import 路径统一添加 @claude-code-best/ 前缀:
- builtin-tools → @claude-code-best/builtin-tools
- mcp-client → @claude-code-best/mcp-client
- agent-tools → @claude-code-best/agent-tools
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: 修复 node 环境没有 bun 的问题
---------
Co-authored-by: Eric-Guo <eric.guocz@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 09:52:05 +08:00
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
claude-code-best
6a70056910
feat: 全部类型问题解决
2026-04-11 10:24:00 +08:00
claude-code-best
ff03fe7fcb
fix: 修复类型问题
2026-04-10 17:34:01 +08:00
claude-code-best
a14d3dc8f0
fix(types): clean type fixes across 92 files
...
Apply proper TypeScript type corrections without any unsafe casts:
- Fix unknown/never/{} types from decompilation
- Correct function signatures and parameter types
- Add missing type declarations and interfaces
- Fix Ink component prop types
- Update API client/provider type annotations
Test files with mock data casts are included as-is (acceptable pattern).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-09 23:45:56 +08:00
claude-code-best
e86573ac2f
fix: 修复 -r 模式下键盘输入无响应
...
两个根因:
1. earlyInput 的 readableHandler 残留在 stdin 上
setAppCallbacks() 在反编译项目中从未被调用,导致
stopCapturingEarlyInput() 是 no-op,readableHandler
在 Ink 的 handleReadable 之前消费所有 stdin 数据。
修复:在 handleSetRawMode(true) 时移除非自身的 readable listeners。
2. React 19 layout effect cleanup 顺序问题
React 19 先运行新树的 layout effects,再清理旧树。
当旧树(showSetupDialog)比新树(launchResumeChooser)
有更多 useInput hooks 时,旧树 cleanup 把
rawModeEnabledCount 降到 0,错误关闭 raw mode。
修复:当 count=0 但仍有活跃 EventEmitter listeners 时恢复 count。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 23:54:09 +08:00
claude-code-best
91b9366f64
refactor: 大规模迁移原有组件到 ink 包内
2026-04-07 22:26:45 +08:00
claude-code-best
f268b16b31
feat: 将 keybinding 纳入 ink 管辖
2026-04-07 17:51:01 +08:00
claude-code-best
e5782e732c
Revert "Revert "feat: 第一个可以用的 ink 组件抽象 ( #158 )" ( #175 )"
...
This reverts commit 88d4c3ba24 .
2026-04-07 16:17:48 +08:00
claude-code-best
88d4c3ba24
Revert "feat: 第一个可以用的 ink 组件抽象 ( #158 )" ( #175 )
...
This reverts commit c445f43f8d .
2026-04-07 15:05:03 +08:00
claude-code-best
c445f43f8d
feat: 第一个可以用的 ink 组件抽象 ( #158 )
2026-04-06 23:56:45 +08:00