tmuxclihook 0.5.4 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/package.json +1 -1
- package/scripts/adapters/opencode.sh +31 -2
- package/src/adapters-meta.js +3 -1
package/README.md
CHANGED
|
@@ -88,6 +88,11 @@ clack 0.7 只把 ctrl+c 映射为取消(Esc 默认无效果),安装器在
|
|
|
88
88
|
|
|
89
89
|
live 模式以 `~/.claude/settings.json` 为共享配置真源(cc-switch 4.0.2 起不再读库里的 `common_config_claude`),写入用与文件模式相同的原子合并,他人 hook 与配置其他字段保留;legacy 模式用与 cc-switch 自身一致的 `json_patch` 更新 db。注意:cc-switch GUI 运行中会把内存缓存写回真源,安装前建议先退出 GUI(脚本会警告);legacy 模式下不经 `switch` 直接运行的 `claude` 读不到 db 里的 hooks。
|
|
90
90
|
|
|
91
|
+
**codex / opencode 的 cc-switch 真源**
|
|
92
|
+
|
|
93
|
+
- **codex**:`switch` 为每个 provider 创建独立 `CODEX_HOME`(`~/.cc-switch/instances/codex/<providerId>`),并把 `~/.codex/hooks.json` 符号链接进实例,因此插件写默认(或 `$CODEX_HOME`)下的 `hooks.json` 即被所有实例共享。但 `[hooks.state]` 信任记录在实例自己的 `config.toml` 里、cc-switch 不复制——**每个新 provider 实例首次启动需在 codex TUI 内 Trust all 一次**,否则 hooks 不执行(trusted_hash 无法在 bash 侧复现,插件不预写)。
|
|
94
|
+
- **opencode**:cc-switch 对它是 additive live config(无 per-provider 实例目录),provider 条目直接写进配置目录的 `opencode.json(c)`。插件目录解析为 `OPENCODE_CONFIG_DIR` > cc-switch `settings.json` 的 `opencodeConfigDir` > `${XDG_CONFIG_HOME:-~/.config}/opencode`;旧版 cc-switch 无该键时自动回落默认目录。
|
|
95
|
+
|
|
91
96
|
## Source 管理(生产默认 / 本地调试切换)
|
|
92
97
|
|
|
93
98
|
`npm i -g` 装完后,hooks 安装与 tmux 集成默认使用包内自带的 `scripts/`(由 `npm publish` 前的 `prepack` 步骤从仓库根复制打包进来,见「架构」一节),开箱即用,无需仓库 checkout。
|
package/package.json
CHANGED
|
@@ -24,8 +24,37 @@ ADAPTER_EVENTS="SessionStart UserPromptSubmit PreToolUse PermissionRequest Permi
|
|
|
24
24
|
# 前台进程名:opencode 二进制无 arch 后缀(区别于 codex 的 codex-aarch64-* 等)
|
|
25
25
|
ADAPTER_PROCESS_NAMES="opencode"
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
|
|
27
|
+
# 配置目录解析(与 opencode 原生规则 + cc-switch 4.0 的设备级目录覆盖一致):
|
|
28
|
+
# 1. OPENCODE_CONFIG_DIR 环境变量——opencode 原生支持;cc-switch GUI(模型探测/WSL
|
|
29
|
+
# 启动)会注入该变量
|
|
30
|
+
# 2. cc-switch `~/.cc-switch/settings.json` 的 `opencodeConfigDir`(cc-switch 的
|
|
31
|
+
# 「目录覆盖」真源;旧版无此键 → 自动落到 3,向后兼容)
|
|
32
|
+
# 3. XDG 默认:`$XDG_CONFIG_HOME/opencode`(通常 ~/.config/opencode)
|
|
33
|
+
# 注意:opencode 不像 claude/codex 那样有 per-provider 实例目录——cc-switch 对它是
|
|
34
|
+
# 「additive live config」,provider 条目直接写进该目录下的 opencode.json(c);
|
|
35
|
+
# 本插件的 plugin 文件与它同目录共存,互不覆盖。
|
|
36
|
+
_opencode_config_dir() {
|
|
37
|
+
if [ -n "${OPENCODE_CONFIG_DIR:-}" ]; then
|
|
38
|
+
printf '%s\n' "$OPENCODE_CONFIG_DIR"
|
|
39
|
+
return 0
|
|
40
|
+
fi
|
|
41
|
+
local settings="$HOME/.cc-switch/settings.json" dir=""
|
|
42
|
+
if [ -f "$settings" ]; then
|
|
43
|
+
dir=$(sed -n 's/.*"opencodeConfigDir"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' "$settings" 2>/dev/null | head -n 1)
|
|
44
|
+
case "$dir" in
|
|
45
|
+
"~") dir="$HOME" ;;
|
|
46
|
+
"~/"*) dir="${HOME}/${dir:2}" ;;
|
|
47
|
+
esac
|
|
48
|
+
fi
|
|
49
|
+
if [ -n "$dir" ]; then
|
|
50
|
+
printf '%s\n' "$dir"
|
|
51
|
+
else
|
|
52
|
+
printf '%s\n' "${XDG_CONFIG_HOME:-$HOME/.config}/opencode"
|
|
53
|
+
fi
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
# plugin 文件路径(配置目录解析见 _opencode_config_dir)
|
|
57
|
+
ADAPTER_HOOKS_FILE="$(_opencode_config_dir)/plugins/tmux-ai-status.ts"
|
|
29
58
|
|
|
30
59
|
# opencode 无 SessionEnd → 退出由 tmux-ai-monitor 做进程检测
|
|
31
60
|
ADAPTER_HAS_SESSION_END="false"
|
package/src/adapters-meta.js
CHANGED
|
@@ -57,7 +57,9 @@ function buildTools(scriptsDir) {
|
|
|
57
57
|
versionArgs: ['--version'],
|
|
58
58
|
versionRe: /(\d+\.\d+\.\d+)/,
|
|
59
59
|
minVersion: null, // plugin 系统本地文件跳过版本兼容检查
|
|
60
|
-
// hooksFile 实为 JS/TS plugin 文件(非 JSON hooks 配置),install/uninstall
|
|
60
|
+
// hooksFile 实为 JS/TS plugin 文件(非 JSON hooks 配置),install/uninstall 整文件写入/删除。
|
|
61
|
+
// 权威路径由 bash adapter 解析(OPENCODE_CONFIG_DIR > cc-switch opencodeConfigDir > XDG),
|
|
62
|
+
// 此处仅静态近似,判定一律走 wrapper check,避免两处真源发散。
|
|
61
63
|
hooksFile: join(
|
|
62
64
|
process.env.OPENCODE_CONFIG_DIR || join(process.env.XDG_CONFIG_HOME || join(HOME, '.config'), 'opencode'),
|
|
63
65
|
'plugins',
|