triflux 10.3.0 → 10.3.2

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.
Files changed (56) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +22 -22
  3. package/LICENSE +21 -21
  4. package/hooks/hook-registry.json +256 -256
  5. package/hub/adaptive-inject.mjs +1 -1
  6. package/hub/assign-callbacks.mjs +120 -120
  7. package/hub/delegator/index.mjs +14 -14
  8. package/hub/delegator/tool-definitions.mjs +35 -35
  9. package/hub/hitl.mjs +143 -143
  10. package/hub/router.mjs +791 -791
  11. package/hub/session-fingerprint.mjs +1 -1
  12. package/hub/team/ansi.mjs +44 -28
  13. package/hub/team/cli/commands/attach.mjs +37 -37
  14. package/hub/team/cli/commands/debug.mjs +74 -74
  15. package/hub/team/cli/commands/focus.mjs +53 -53
  16. package/hub/team/cli/commands/list.mjs +24 -24
  17. package/hub/team/cli/commands/start/start-in-process.mjs +40 -40
  18. package/hub/team/cli/commands/start/start-mux.mjs +73 -73
  19. package/hub/team/cli/commands/start/start-wt.mjs +69 -69
  20. package/hub/team/cli/commands/tasks.mjs +13 -13
  21. package/hub/team/cli/render.mjs +30 -30
  22. package/hub/team/cli/services/attach-fallback.mjs +54 -54
  23. package/hub/team/cli/services/member-selector.mjs +30 -30
  24. package/hub/team/cli/services/native-control.mjs +116 -116
  25. package/hub/team/cli/services/task-model.mjs +30 -30
  26. package/hub/team/conductor.mjs +2 -2
  27. package/hub/team/notify.mjs +1 -1
  28. package/hub/team/orchestrator.mjs +161 -161
  29. package/hub/team/session.mjs +611 -611
  30. package/hub/team/shared.mjs +13 -13
  31. package/hub/team/tui-lite.mjs +4 -4
  32. package/hub/team/tui.mjs +16 -12
  33. package/hub/tray.mjs +368 -368
  34. package/hub/workers/codex-mcp.mjs +507 -507
  35. package/hub/workers/factory.mjs +21 -21
  36. package/hud/constants.mjs +8 -2
  37. package/hud/providers/codex.mjs +11 -0
  38. package/hud/providers/gemini.mjs +21 -0
  39. package/package.json +1 -1
  40. package/scripts/claudemd-sync.mjs +11 -13
  41. package/scripts/completions/tfx.bash +47 -47
  42. package/scripts/completions/tfx.fish +44 -44
  43. package/scripts/completions/tfx.zsh +83 -83
  44. package/scripts/hub-ensure.mjs +120 -120
  45. package/scripts/keyword-detector.mjs +272 -272
  46. package/scripts/keyword-rules-expander.mjs +521 -521
  47. package/scripts/lib/mcp-server-catalog.mjs +118 -118
  48. package/scripts/notion-read.mjs +553 -553
  49. package/scripts/setup.mjs +23 -0
  50. package/scripts/test-tfx-route-no-claude-native.mjs +57 -57
  51. package/scripts/tfx-batch-stats.mjs +96 -96
  52. package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
  53. package/skills/.omc/state/idle-notif-cooldown.json +3 -0
  54. package/skills/.omc/state/last-tool-error.json +7 -0
  55. package/skills/.omc/state/subagent-tracking.json +7 -0
  56. package/skills/tfx-remote-spawn/references/hosts.json +16 -0
@@ -9,7 +9,7 @@
9
9
  {
10
10
  "name": "triflux",
11
11
  "description": "CLI-first multi-model orchestrator for Claude Code. Routes tasks to Codex, Gemini, and Claude CLIs with automatic triage, DAG-based parallel execution, headless psmux sessions, and cost-optimized routing. Includes 41 skills, HUD status bar, hook orchestrator, and shell-based CLI routing.",
12
- "version": "9.7.14",
12
+ "version": "10.3.2",
13
13
  "author": {
14
14
  "name": "tellang"
15
15
  },
@@ -30,5 +30,5 @@
30
30
  ]
31
31
  }
32
32
  ],
33
- "version": "9.7.14"
33
+ "version": "10.3.2"
34
34
  }
@@ -1,22 +1,22 @@
1
- {
2
- "name": "triflux",
3
- "version": "10.0.0",
4
- "description": "CLI-first multi-model orchestrator for Claude Code — route tasks to Codex, Gemini, and Claude",
5
- "author": {
6
- "name": "tellang"
7
- },
8
- "repository": "https://github.com/tellang/triflux",
9
- "homepage": "https://github.com/tellang/triflux",
10
- "license": "MIT",
11
- "keywords": [
12
- "claude-code",
13
- "plugin",
14
- "codex",
15
- "gemini",
16
- "cli-routing",
17
- "orchestration",
18
- "multi-model"
19
- ],
20
- "skills": "./skills/",
21
- "hooks": "./hooks/hooks.json"
22
- }
1
+ {
2
+ "name": "triflux",
3
+ "version": "10.3.2",
4
+ "description": "CLI-first multi-model orchestrator for Claude Code — route tasks to Codex, Gemini, and Claude",
5
+ "author": {
6
+ "name": "tellang"
7
+ },
8
+ "repository": "https://github.com/tellang/triflux",
9
+ "homepage": "https://github.com/tellang/triflux",
10
+ "license": "MIT",
11
+ "keywords": [
12
+ "claude-code",
13
+ "plugin",
14
+ "codex",
15
+ "gemini",
16
+ "cli-routing",
17
+ "orchestration",
18
+ "multi-model"
19
+ ],
20
+ "skills": "./skills/",
21
+ "hooks": "./hooks/hooks.json"
22
+ }
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 tellang
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 tellang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -1,256 +1,256 @@
1
- {
2
- "$schema": "hook-registry-schema",
3
- "version": 1,
4
- "description": "훅 우선순위 레지스트리 — 오케스트레이터가 이 파일을 읽어 순차 실행한다. priority 낮을수록 먼저 실행.",
5
- "defaults": {
6
- "triflux_priority": 0,
7
- "omc_priority": 50,
8
- "external_priority": 100
9
- },
10
- "events": {
11
- "PreToolUse": [
12
- {
13
- "id": "tfx-safety-guard",
14
- "source": "triflux",
15
- "matcher": "Bash",
16
- "command": "node \"${PLUGIN_ROOT}/hooks/safety-guard.mjs\"",
17
- "priority": 0,
18
- "enabled": true,
19
- "timeout": 3,
20
- "blocking": true,
21
- "description": "위험 Bash 명령 사전 차단 (rm -rf, force push 등)"
22
- },
23
- {
24
- "id": "tfx-agent-route-guard",
25
- "source": "triflux",
26
- "matcher": "Agent",
27
- "command": "node \"${PLUGIN_ROOT}/hooks/agent-route-guard.mjs\"",
28
- "priority": 0,
29
- "enabled": true,
30
- "timeout": 3,
31
- "blocking": false,
32
- "description": "서브에이전트 스폰 시 triflux 컨텍스트 주입"
33
- },
34
- {
35
- "id": "tfx-cross-review-gate",
36
- "source": "triflux",
37
- "matcher": "Bash",
38
- "command": "node \"${PLUGIN_ROOT}/scripts/cross-review-gate.mjs\"",
39
- "priority": 1,
40
- "enabled": true,
41
- "timeout": 3,
42
- "blocking": true,
43
- "description": "git commit 전 교차 리뷰 미검증 파일 차단/경고"
44
- },
45
- {
46
- "id": "omc-headless-guard",
47
- "source": "omc",
48
- "matcher": "Bash|Agent",
49
- "command": "bash \"${HOME}/.claude/scripts/headless-guard-fast.sh\"",
50
- "priority": 50,
51
- "enabled": true,
52
- "timeout": 3,
53
- "blocking": false,
54
- "description": "psmux headless 가드"
55
- },
56
- {
57
- "id": "omc-tfx-gate-activate",
58
- "source": "omc",
59
- "matcher": "Skill",
60
- "command": "node \"${HOME}/.claude/scripts/tfx-gate-activate.mjs\"",
61
- "priority": 50,
62
- "enabled": true,
63
- "timeout": 2,
64
- "blocking": false,
65
- "description": "tfx-multi 상태 추적 게이트"
66
- },
67
- {
68
- "id": "tfx-write-edit-passthrough",
69
- "source": "triflux",
70
- "matcher": "Edit|Write",
71
- "command": "exit 0",
72
- "priority": 999,
73
- "enabled": true,
74
- "blocking": false,
75
- "description": "Edit/Write passthrough"
76
- }
77
- ],
78
- "PostToolUse": [
79
- {
80
- "id": "tfx-cross-review-tracker",
81
- "source": "triflux",
82
- "matcher": "Edit|Write",
83
- "command": "node \"${PLUGIN_ROOT}/hooks/cross-review-tracker.mjs\"",
84
- "priority": 0,
85
- "enabled": true,
86
- "timeout": 3,
87
- "blocking": false,
88
- "description": "파일 수정 추적 → 교차 리뷰 nudge"
89
- },
90
- {
91
- "id": "tfx-mcp-config-watcher",
92
- "source": "triflux",
93
- "matcher": "Edit|Write",
94
- "command": "node \"${PLUGIN_ROOT}/hooks/mcp-config-watcher.mjs\"",
95
- "priority": 1,
96
- "enabled": true,
97
- "timeout": 3,
98
- "blocking": false,
99
- "description": "감시 대상 MCP 설정 변경 감지 → stdio MCP 자동 치환"
100
- }
101
- ],
102
- "PostToolUseFailure": [
103
- {
104
- "id": "tfx-error-context",
105
- "source": "triflux",
106
- "matcher": "*",
107
- "command": "node \"${PLUGIN_ROOT}/hooks/error-context.mjs\"",
108
- "priority": 0,
109
- "enabled": true,
110
- "timeout": 3,
111
- "blocking": false,
112
- "description": "도구 실패 시 에러 힌트 자동 주입"
113
- },
114
- {
115
- "id": "tfx-adaptive-collector",
116
- "source": "triflux",
117
- "matcher": "*",
118
- "command": "node \"${PLUGIN_ROOT}/hooks/hook-adaptive-collector.mjs\"",
119
- "priority": 1,
120
- "enabled": true,
121
- "timeout": 3,
122
- "blocking": false,
123
- "description": "에러 패턴 수집 → Neural Memory adaptive engine 학습"
124
- }
125
- ],
126
- "UserPromptSubmit": [
127
- {
128
- "id": "tfx-keyword-detector",
129
- "source": "triflux",
130
- "matcher": "*",
131
- "command": "node \"${PLUGIN_ROOT}/scripts/run.cjs\" \"${PLUGIN_ROOT}/scripts/keyword-detector.mjs\"",
132
- "priority": 0,
133
- "enabled": true,
134
- "timeout": 5,
135
- "blocking": false,
136
- "description": "키워드 매칭 → 스킬 자동 라우팅"
137
- }
138
- ],
139
- "SessionStart": [
140
- {
141
- "id": "tfx-setup",
142
- "source": "triflux",
143
- "matcher": "*",
144
- "command": "node \"${PLUGIN_ROOT}/scripts/setup.mjs\"",
145
- "priority": 0,
146
- "enabled": true,
147
- "timeout": 10,
148
- "blocking": false,
149
- "description": "triflux 환경 초기화"
150
- },
151
- {
152
- "id": "tfx-mcp-safety-guard",
153
- "source": "triflux",
154
- "matcher": "*",
155
- "command": "node \"${PLUGIN_ROOT}/scripts/mcp-safety-guard.mjs\"",
156
- "priority": 1,
157
- "enabled": true,
158
- "timeout": 3,
159
- "blocking": false,
160
- "description": "Gemini stdio MCP 자동 감지 + 제거 (spawn EPERM 방지)"
161
- },
162
- {
163
- "id": "tfx-hub-ensure",
164
- "source": "triflux",
165
- "matcher": "*",
166
- "command": "node \"${PLUGIN_ROOT}/scripts/hub-ensure.mjs\"",
167
- "priority": 2,
168
- "enabled": true,
169
- "timeout": 8,
170
- "blocking": false,
171
- "description": "tfx-hub 서비스 헬스체크 및 시작"
172
- },
173
- {
174
- "id": "tfx-preflight-cache",
175
- "source": "triflux",
176
- "matcher": "*",
177
- "command": "node \"${PLUGIN_ROOT}/scripts/preflight-cache.mjs\"",
178
- "priority": 3,
179
- "enabled": true,
180
- "timeout": 5,
181
- "blocking": false,
182
- "description": "CLI/Hub 가용성 캐시 (hub-ensure 완료 후 실행)"
183
- },
184
- {
185
- "id": "tfx-mcp-gateway-ensure",
186
- "source": "triflux",
187
- "matcher": "*",
188
- "command": "node \"${PLUGIN_ROOT}/scripts/mcp-gateway-ensure.mjs\"",
189
- "priority": 4,
190
- "enabled": true,
191
- "timeout": 8,
192
- "blocking": false,
193
- "description": "supergateway MCP 서비스 헬스체크 및 자동 기동"
194
- },
195
- {
196
- "id": "ext-session-vault-start",
197
- "source": "session-vault",
198
- "matcher": "*",
199
- "command": "bash \"${HOME}/Desktop/Projects/tools/session-vault/scripts/start_hook.sh\"",
200
- "priority": 100,
201
- "enabled": true,
202
- "timeout": 10,
203
- "blocking": false,
204
- "description": "세션 볼트 로깅 시작"
205
- }
206
- ],
207
- "Stop": [
208
- {
209
- "id": "tfx-pipeline-stop",
210
- "source": "triflux",
211
- "matcher": "*",
212
- "command": "node \"${PLUGIN_ROOT}/hooks/pipeline-stop.mjs\"",
213
- "priority": 0,
214
- "enabled": true,
215
- "timeout": 5,
216
- "blocking": true,
217
- "description": "활성 파이프라인 감지 → 종료 차단"
218
- },
219
- {
220
- "id": "ext-session-vault-export",
221
- "source": "session-vault",
222
- "matcher": "*",
223
- "command": "bash \"${HOME}/Desktop/Projects/tools/session-vault/scripts/export_hook.sh\"",
224
- "priority": 100,
225
- "enabled": true,
226
- "timeout": 30,
227
- "blocking": false,
228
- "description": "세션 트랜스크립트 내보내기"
229
- },
230
- {
231
- "id": "ext-mcp-cleanup",
232
- "source": "system",
233
- "matcher": "*",
234
- "command": "powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File \"${HOME}/.claude/scripts/mcp-cleanup.ps1\"",
235
- "priority": 100,
236
- "enabled": true,
237
- "timeout": 8,
238
- "blocking": false,
239
- "description": "MCP 고아 프로세스 정리"
240
- }
241
- ],
242
- "SubagentStop": [
243
- {
244
- "id": "tfx-subagent-verifier",
245
- "source": "triflux",
246
- "matcher": "*",
247
- "command": "node \"${PLUGIN_ROOT}/hooks/subagent-verifier.mjs\"",
248
- "priority": 0,
249
- "enabled": true,
250
- "timeout": 3,
251
- "blocking": false,
252
- "description": "서브에이전트 결과 품질 체크"
253
- }
254
- ]
255
- }
256
- }
1
+ {
2
+ "$schema": "hook-registry-schema",
3
+ "version": 1,
4
+ "description": "훅 우선순위 레지스트리 — 오케스트레이터가 이 파일을 읽어 순차 실행한다. priority 낮을수록 먼저 실행.",
5
+ "defaults": {
6
+ "triflux_priority": 0,
7
+ "omc_priority": 50,
8
+ "external_priority": 100
9
+ },
10
+ "events": {
11
+ "PreToolUse": [
12
+ {
13
+ "id": "tfx-safety-guard",
14
+ "source": "triflux",
15
+ "matcher": "Bash",
16
+ "command": "node \"${PLUGIN_ROOT}/hooks/safety-guard.mjs\"",
17
+ "priority": 0,
18
+ "enabled": true,
19
+ "timeout": 3,
20
+ "blocking": true,
21
+ "description": "위험 Bash 명령 사전 차단 (rm -rf, force push 등)"
22
+ },
23
+ {
24
+ "id": "tfx-agent-route-guard",
25
+ "source": "triflux",
26
+ "matcher": "Agent",
27
+ "command": "node \"${PLUGIN_ROOT}/hooks/agent-route-guard.mjs\"",
28
+ "priority": 0,
29
+ "enabled": true,
30
+ "timeout": 3,
31
+ "blocking": false,
32
+ "description": "서브에이전트 스폰 시 triflux 컨텍스트 주입"
33
+ },
34
+ {
35
+ "id": "tfx-cross-review-gate",
36
+ "source": "triflux",
37
+ "matcher": "Bash",
38
+ "command": "node \"${PLUGIN_ROOT}/scripts/cross-review-gate.mjs\"",
39
+ "priority": 1,
40
+ "enabled": true,
41
+ "timeout": 3,
42
+ "blocking": true,
43
+ "description": "git commit 전 교차 리뷰 미검증 파일 차단/경고"
44
+ },
45
+ {
46
+ "id": "omc-headless-guard",
47
+ "source": "omc",
48
+ "matcher": "Bash|Agent",
49
+ "command": "bash \"${HOME}/.claude/scripts/headless-guard-fast.sh\"",
50
+ "priority": 50,
51
+ "enabled": true,
52
+ "timeout": 3,
53
+ "blocking": false,
54
+ "description": "psmux headless 가드"
55
+ },
56
+ {
57
+ "id": "omc-tfx-gate-activate",
58
+ "source": "omc",
59
+ "matcher": "Skill",
60
+ "command": "node \"${HOME}/.claude/scripts/tfx-gate-activate.mjs\"",
61
+ "priority": 50,
62
+ "enabled": true,
63
+ "timeout": 2,
64
+ "blocking": false,
65
+ "description": "tfx-multi 상태 추적 게이트"
66
+ },
67
+ {
68
+ "id": "tfx-write-edit-passthrough",
69
+ "source": "triflux",
70
+ "matcher": "Edit|Write",
71
+ "command": "exit 0",
72
+ "priority": 999,
73
+ "enabled": true,
74
+ "blocking": false,
75
+ "description": "Edit/Write passthrough"
76
+ }
77
+ ],
78
+ "PostToolUse": [
79
+ {
80
+ "id": "tfx-cross-review-tracker",
81
+ "source": "triflux",
82
+ "matcher": "Edit|Write",
83
+ "command": "node \"${PLUGIN_ROOT}/hooks/cross-review-tracker.mjs\"",
84
+ "priority": 0,
85
+ "enabled": true,
86
+ "timeout": 3,
87
+ "blocking": false,
88
+ "description": "파일 수정 추적 → 교차 리뷰 nudge"
89
+ },
90
+ {
91
+ "id": "tfx-mcp-config-watcher",
92
+ "source": "triflux",
93
+ "matcher": "Edit|Write",
94
+ "command": "node \"${PLUGIN_ROOT}/hooks/mcp-config-watcher.mjs\"",
95
+ "priority": 1,
96
+ "enabled": true,
97
+ "timeout": 3,
98
+ "blocking": false,
99
+ "description": "감시 대상 MCP 설정 변경 감지 → stdio MCP 자동 치환"
100
+ }
101
+ ],
102
+ "PostToolUseFailure": [
103
+ {
104
+ "id": "tfx-error-context",
105
+ "source": "triflux",
106
+ "matcher": "*",
107
+ "command": "node \"${PLUGIN_ROOT}/hooks/error-context.mjs\"",
108
+ "priority": 0,
109
+ "enabled": true,
110
+ "timeout": 3,
111
+ "blocking": false,
112
+ "description": "도구 실패 시 에러 힌트 자동 주입"
113
+ },
114
+ {
115
+ "id": "tfx-adaptive-collector",
116
+ "source": "triflux",
117
+ "matcher": "*",
118
+ "command": "node \"${PLUGIN_ROOT}/hooks/hook-adaptive-collector.mjs\"",
119
+ "priority": 1,
120
+ "enabled": true,
121
+ "timeout": 3,
122
+ "blocking": false,
123
+ "description": "에러 패턴 수집 → Neural Memory adaptive engine 학습"
124
+ }
125
+ ],
126
+ "UserPromptSubmit": [
127
+ {
128
+ "id": "tfx-keyword-detector",
129
+ "source": "triflux",
130
+ "matcher": "*",
131
+ "command": "node \"${PLUGIN_ROOT}/scripts/run.cjs\" \"${PLUGIN_ROOT}/scripts/keyword-detector.mjs\"",
132
+ "priority": 0,
133
+ "enabled": true,
134
+ "timeout": 5,
135
+ "blocking": false,
136
+ "description": "키워드 매칭 → 스킬 자동 라우팅"
137
+ }
138
+ ],
139
+ "SessionStart": [
140
+ {
141
+ "id": "tfx-setup",
142
+ "source": "triflux",
143
+ "matcher": "*",
144
+ "command": "node \"${PLUGIN_ROOT}/scripts/setup.mjs\"",
145
+ "priority": 0,
146
+ "enabled": true,
147
+ "timeout": 10,
148
+ "blocking": false,
149
+ "description": "triflux 환경 초기화"
150
+ },
151
+ {
152
+ "id": "tfx-mcp-safety-guard",
153
+ "source": "triflux",
154
+ "matcher": "*",
155
+ "command": "node \"${PLUGIN_ROOT}/scripts/mcp-safety-guard.mjs\"",
156
+ "priority": 1,
157
+ "enabled": true,
158
+ "timeout": 3,
159
+ "blocking": false,
160
+ "description": "Gemini stdio MCP 자동 감지 + 제거 (spawn EPERM 방지)"
161
+ },
162
+ {
163
+ "id": "tfx-hub-ensure",
164
+ "source": "triflux",
165
+ "matcher": "*",
166
+ "command": "node \"${PLUGIN_ROOT}/scripts/hub-ensure.mjs\"",
167
+ "priority": 2,
168
+ "enabled": true,
169
+ "timeout": 8,
170
+ "blocking": false,
171
+ "description": "tfx-hub 서비스 헬스체크 및 시작"
172
+ },
173
+ {
174
+ "id": "tfx-preflight-cache",
175
+ "source": "triflux",
176
+ "matcher": "*",
177
+ "command": "node \"${PLUGIN_ROOT}/scripts/preflight-cache.mjs\"",
178
+ "priority": 3,
179
+ "enabled": true,
180
+ "timeout": 5,
181
+ "blocking": false,
182
+ "description": "CLI/Hub 가용성 캐시 (hub-ensure 완료 후 실행)"
183
+ },
184
+ {
185
+ "id": "tfx-mcp-gateway-ensure",
186
+ "source": "triflux",
187
+ "matcher": "*",
188
+ "command": "node \"${PLUGIN_ROOT}/scripts/mcp-gateway-ensure.mjs\"",
189
+ "priority": 4,
190
+ "enabled": true,
191
+ "timeout": 8,
192
+ "blocking": false,
193
+ "description": "supergateway MCP 서비스 헬스체크 및 자동 기동"
194
+ },
195
+ {
196
+ "id": "ext-session-vault-start",
197
+ "source": "session-vault",
198
+ "matcher": "*",
199
+ "command": "bash \"${HOME}/Desktop/Projects/tools/session-vault/scripts/start_hook.sh\"",
200
+ "priority": 100,
201
+ "enabled": true,
202
+ "timeout": 10,
203
+ "blocking": false,
204
+ "description": "세션 볼트 로깅 시작"
205
+ }
206
+ ],
207
+ "Stop": [
208
+ {
209
+ "id": "tfx-pipeline-stop",
210
+ "source": "triflux",
211
+ "matcher": "*",
212
+ "command": "node \"${PLUGIN_ROOT}/hooks/pipeline-stop.mjs\"",
213
+ "priority": 0,
214
+ "enabled": true,
215
+ "timeout": 5,
216
+ "blocking": true,
217
+ "description": "활성 파이프라인 감지 → 종료 차단"
218
+ },
219
+ {
220
+ "id": "ext-session-vault-export",
221
+ "source": "session-vault",
222
+ "matcher": "*",
223
+ "command": "bash \"${HOME}/Desktop/Projects/tools/session-vault/scripts/export_hook.sh\"",
224
+ "priority": 100,
225
+ "enabled": true,
226
+ "timeout": 30,
227
+ "blocking": false,
228
+ "description": "세션 트랜스크립트 내보내기"
229
+ },
230
+ {
231
+ "id": "ext-mcp-cleanup",
232
+ "source": "system",
233
+ "matcher": "*",
234
+ "command": "powershell -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File \"${HOME}/.claude/scripts/mcp-cleanup.ps1\"",
235
+ "priority": 100,
236
+ "enabled": true,
237
+ "timeout": 8,
238
+ "blocking": false,
239
+ "description": "MCP 고아 프로세스 정리"
240
+ }
241
+ ],
242
+ "SubagentStop": [
243
+ {
244
+ "id": "tfx-subagent-verifier",
245
+ "source": "triflux",
246
+ "matcher": "*",
247
+ "command": "node \"${PLUGIN_ROOT}/hooks/subagent-verifier.mjs\"",
248
+ "priority": 0,
249
+ "enabled": true,
250
+ "timeout": 3,
251
+ "blocking": false,
252
+ "description": "서브에이전트 결과 품질 체크"
253
+ }
254
+ ]
255
+ }
256
+ }
@@ -183,4 +183,4 @@ export function createAdaptiveInjector(opts = {}) {
183
183
  });
184
184
  }
185
185
 
186
- export default createAdaptiveInjector;
186
+ export default createAdaptiveInjector;