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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +22 -22
- package/LICENSE +21 -21
- package/hooks/hook-registry.json +256 -256
- package/hub/adaptive-inject.mjs +1 -1
- package/hub/assign-callbacks.mjs +120 -120
- package/hub/delegator/index.mjs +14 -14
- package/hub/delegator/tool-definitions.mjs +35 -35
- package/hub/hitl.mjs +143 -143
- package/hub/router.mjs +791 -791
- package/hub/session-fingerprint.mjs +1 -1
- package/hub/team/ansi.mjs +44 -28
- package/hub/team/cli/commands/attach.mjs +37 -37
- package/hub/team/cli/commands/debug.mjs +74 -74
- package/hub/team/cli/commands/focus.mjs +53 -53
- package/hub/team/cli/commands/list.mjs +24 -24
- package/hub/team/cli/commands/start/start-in-process.mjs +40 -40
- package/hub/team/cli/commands/start/start-mux.mjs +73 -73
- package/hub/team/cli/commands/start/start-wt.mjs +69 -69
- package/hub/team/cli/commands/tasks.mjs +13 -13
- package/hub/team/cli/render.mjs +30 -30
- package/hub/team/cli/services/attach-fallback.mjs +54 -54
- package/hub/team/cli/services/member-selector.mjs +30 -30
- package/hub/team/cli/services/native-control.mjs +116 -116
- package/hub/team/cli/services/task-model.mjs +30 -30
- package/hub/team/conductor.mjs +2 -2
- package/hub/team/notify.mjs +1 -1
- package/hub/team/orchestrator.mjs +161 -161
- package/hub/team/session.mjs +611 -611
- package/hub/team/shared.mjs +13 -13
- package/hub/team/tui-lite.mjs +4 -4
- package/hub/team/tui.mjs +16 -12
- package/hub/tray.mjs +368 -368
- package/hub/workers/codex-mcp.mjs +507 -507
- package/hub/workers/factory.mjs +21 -21
- package/hud/constants.mjs +8 -2
- package/hud/providers/codex.mjs +11 -0
- package/hud/providers/gemini.mjs +21 -0
- package/package.json +1 -1
- package/scripts/claudemd-sync.mjs +11 -13
- package/scripts/completions/tfx.bash +47 -47
- package/scripts/completions/tfx.fish +44 -44
- package/scripts/completions/tfx.zsh +83 -83
- package/scripts/hub-ensure.mjs +120 -120
- package/scripts/keyword-detector.mjs +272 -272
- package/scripts/keyword-rules-expander.mjs +521 -521
- package/scripts/lib/mcp-server-catalog.mjs +118 -118
- package/scripts/notion-read.mjs +553 -553
- package/scripts/setup.mjs +23 -0
- package/scripts/test-tfx-route-no-claude-native.mjs +57 -57
- package/scripts/tfx-batch-stats.mjs +96 -96
- package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
- package/skills/.omc/state/idle-notif-cooldown.json +3 -0
- package/skills/.omc/state/last-tool-error.json +7 -0
- package/skills/.omc/state/subagent-tracking.json +7 -0
- 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": "
|
|
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": "
|
|
33
|
+
"version": "10.3.2"
|
|
34
34
|
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "triflux",
|
|
3
|
-
"version": "10.
|
|
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.
|
package/hooks/hook-registry.json
CHANGED
|
@@ -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
|
+
}
|
package/hub/adaptive-inject.mjs
CHANGED