triflux 10.3.4 → 10.4.0

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 (120) hide show
  1. package/CLAUDE.md +193 -0
  2. package/LICENSE +21 -21
  3. package/hooks/hook-registry.json +256 -256
  4. package/hub/adaptive-inject.mjs +1 -1
  5. package/hub/assign-callbacks.mjs +120 -120
  6. package/hub/delegator/index.mjs +14 -14
  7. package/hub/delegator/tool-definitions.mjs +35 -35
  8. package/hub/hitl.mjs +143 -143
  9. package/hub/router.mjs +791 -791
  10. package/hub/session-fingerprint.mjs +1 -1
  11. package/hub/team/cli/commands/attach.mjs +37 -37
  12. package/hub/team/cli/commands/debug.mjs +74 -74
  13. package/hub/team/cli/commands/focus.mjs +53 -53
  14. package/hub/team/cli/commands/list.mjs +24 -24
  15. package/hub/team/cli/commands/start/start-in-process.mjs +40 -40
  16. package/hub/team/cli/commands/start/start-mux.mjs +73 -73
  17. package/hub/team/cli/commands/start/start-wt.mjs +69 -69
  18. package/hub/team/cli/commands/tasks.mjs +13 -13
  19. package/hub/team/cli/render.mjs +30 -30
  20. package/hub/team/cli/services/attach-fallback.mjs +54 -54
  21. package/hub/team/cli/services/member-selector.mjs +30 -30
  22. package/hub/team/cli/services/native-control.mjs +116 -116
  23. package/hub/team/cli/services/task-model.mjs +30 -30
  24. package/hub/team/notify.mjs +1 -1
  25. package/hub/team/orchestrator.mjs +161 -161
  26. package/hub/team/session.mjs +611 -611
  27. package/hub/team/shared.mjs +13 -13
  28. package/hub/tray.mjs +368 -368
  29. package/hub/workers/codex-mcp.mjs +507 -507
  30. package/hub/workers/factory.mjs +21 -21
  31. package/package.json +21 -55
  32. package/references/hosts.json +33 -0
  33. package/scripts/completions/tfx.bash +47 -47
  34. package/scripts/completions/tfx.fish +44 -44
  35. package/scripts/completions/tfx.zsh +83 -83
  36. package/scripts/hub-ensure.mjs +120 -120
  37. package/scripts/keyword-detector.mjs +272 -272
  38. package/scripts/keyword-rules-expander.mjs +521 -521
  39. package/scripts/lib/mcp-server-catalog.mjs +118 -118
  40. package/scripts/notion-read.mjs +553 -553
  41. package/scripts/test-tfx-route-no-claude-native.mjs +57 -57
  42. package/scripts/tfx-batch-stats.mjs +96 -96
  43. package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
  44. package/skills/.omc/state/idle-notif-cooldown.json +3 -0
  45. package/skills/.omc/state/last-tool-error.json +7 -0
  46. package/skills/.omc/state/subagent-tracking.json +7 -0
  47. package/skills/tfx-remote-spawn/references/hosts.json +16 -0
  48. package/skills/tfx-workspace/async-tests/run-tests.sh +203 -0
  49. package/skills/tfx-workspace/evals/evals.json +79 -0
  50. package/skills/tfx-workspace/iteration-1/benchmark.json +162 -0
  51. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/eval_metadata.json +11 -0
  52. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/grading.json +9 -0
  53. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/outputs/analysis.md +154 -0
  54. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/old_skill/timing.json +5 -0
  55. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/grading.json +9 -0
  56. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/outputs/analysis.md +126 -0
  57. package/skills/tfx-workspace/iteration-1/codex-gemini-remap/with_skill/timing.json +5 -0
  58. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/eval_metadata.json +11 -0
  59. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/grading.json +9 -0
  60. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/outputs/analysis.md +119 -0
  61. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/old_skill/timing.json +5 -0
  62. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/grading.json +9 -0
  63. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/outputs/analysis.md +115 -0
  64. package/skills/tfx-workspace/iteration-1/doctor-diagnosis/with_skill/timing.json +5 -0
  65. package/skills/tfx-workspace/iteration-1/hub-start-sequence/eval_metadata.json +10 -0
  66. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/grading.json +8 -0
  67. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/outputs/analysis.md +86 -0
  68. package/skills/tfx-workspace/iteration-1/hub-start-sequence/old_skill/timing.json +5 -0
  69. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/grading.json +8 -0
  70. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/outputs/analysis.md +81 -0
  71. package/skills/tfx-workspace/iteration-1/hub-start-sequence/with_skill/timing.json +5 -0
  72. package/skills/tfx-workspace/iteration-1/multi-team-creation/eval_metadata.json +12 -0
  73. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/grading.json +10 -0
  74. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/outputs/analysis.md +316 -0
  75. package/skills/tfx-workspace/iteration-1/multi-team-creation/old_skill/timing.json +5 -0
  76. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/grading.json +10 -0
  77. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/outputs/analysis.md +352 -0
  78. package/skills/tfx-workspace/iteration-1/multi-team-creation/with_skill/timing.json +5 -0
  79. package/skills/tfx-workspace/iteration-1/review.html +1325 -0
  80. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/eval_metadata.json +12 -0
  81. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/grading.json +10 -0
  82. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/outputs/analysis.md +97 -0
  83. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/old_skill/timing.json +5 -0
  84. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/grading.json +10 -0
  85. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/outputs/analysis.md +94 -0
  86. package/skills/tfx-workspace/iteration-1/routing-implement-shortcut/with_skill/timing.json +5 -0
  87. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/eval_metadata.json +12 -0
  88. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/grading.json +10 -0
  89. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/outputs/analysis.md +209 -0
  90. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/old_skill/timing.json +5 -0
  91. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/grading.json +10 -0
  92. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/outputs/analysis.md +193 -0
  93. package/skills/tfx-workspace/iteration-1/routing-multi-task-triage/with_skill/timing.json +5 -0
  94. package/skills/tfx-workspace/iteration-2/benchmark.json +62 -0
  95. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/eval_metadata.json +13 -0
  96. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/grading.json +11 -0
  97. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/outputs/analysis.md +382 -0
  98. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/old_skill/timing.json +5 -0
  99. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/grading.json +11 -0
  100. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/outputs/analysis.md +333 -0
  101. package/skills/tfx-workspace/iteration-2/multi-team-creation-refactored/with_skill/timing.json +5 -0
  102. package/skills/tfx-workspace/iteration-2/review.html +1325 -0
  103. package/skills/tfx-workspace/skill-snapshot/tfx-auto/SKILL.md +217 -0
  104. package/skills/tfx-workspace/skill-snapshot/tfx-auto-codex/SKILL.md +77 -0
  105. package/skills/tfx-workspace/skill-snapshot/tfx-codex/SKILL.md +65 -0
  106. package/skills/tfx-workspace/skill-snapshot/tfx-doctor/SKILL.md +94 -0
  107. package/skills/tfx-workspace/skill-snapshot/tfx-gemini/SKILL.md +82 -0
  108. package/skills/tfx-workspace/skill-snapshot/tfx-hub/SKILL.md +133 -0
  109. package/skills/tfx-workspace/skill-snapshot/tfx-multi/SKILL.md +426 -0
  110. package/skills/tfx-workspace/skill-snapshot/tfx-setup/SKILL.md +101 -0
  111. package/.claude-plugin/marketplace.json +0 -34
  112. package/.claude-plugin/plugin.json +0 -22
  113. package/config/mcp-registry.json +0 -29
  114. package/tui/codex-profile.mjs +0 -402
  115. package/tui/core.mjs +0 -236
  116. package/tui/doctor.mjs +0 -328
  117. package/tui/gemini-profile.mjs +0 -254
  118. package/tui/monitor-data.mjs +0 -148
  119. package/tui/monitor.mjs +0 -295
  120. package/tui/setup.mjs +0 -442
@@ -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;