triflux 8.11.2 → 8.12.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 (103) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/README.ko.md +1 -1
  3. package/README.md +1 -1
  4. package/hooks/hooks.json +56 -51
  5. package/hub/pipeline/index.mjs +318 -318
  6. package/hub/routing/q-learning.mjs +2 -1
  7. package/hub/schema.sql +146 -146
  8. package/hub/team/cli/commands/kill.mjs +37 -37
  9. package/hub/team/cli/commands/start/index.mjs +3 -2
  10. package/hub/team/cli/commands/start/parse-args.mjs +5 -0
  11. package/hub/team/cli/commands/start/start-headless.mjs +2 -1
  12. package/hub/team/cli/commands/stop.mjs +31 -31
  13. package/hub/team/cli/commands/task.mjs +30 -30
  14. package/hub/team/cli/help.mjs +41 -40
  15. package/hub/team/cli/services/hub-client.mjs +208 -208
  16. package/hub/team/cli/services/native-control.mjs +118 -118
  17. package/hub/team/cli/services/runtime-mode.mjs +62 -62
  18. package/hub/team/cli/services/state-store.mjs +48 -48
  19. package/hub/team/dashboard-anchor.mjs +14 -0
  20. package/hub/team/dashboard.mjs +274 -274
  21. package/hub/team/headless.mjs +44 -19
  22. package/hub/team/native.mjs +649 -649
  23. package/hub/tools.mjs +554 -554
  24. package/hub/workers/delegator-mcp.mjs +21 -1
  25. package/package.json +1 -1
  26. package/scripts/__tests__/remote-spawn-transfer.test.mjs +117 -0
  27. package/scripts/__tests__/remote-spawn.test.mjs +78 -0
  28. package/scripts/cache-buildup.mjs +401 -0
  29. package/scripts/headless-guard.mjs +10 -3
  30. package/scripts/hub-ensure.mjs +120 -120
  31. package/scripts/lib/mcp-filter.mjs +720 -720
  32. package/scripts/lib/remote-spawn-transfer.mjs +196 -0
  33. package/scripts/mcp-check.mjs +237 -127
  34. package/scripts/mcp-gateway-ensure.mjs +6 -8
  35. package/scripts/mcp-gateway-integration-test.mjs +228 -0
  36. package/scripts/mcp-gateway-start.mjs +42 -16
  37. package/scripts/mcp-gateway-start.ps1 +17 -14
  38. package/scripts/mcp-gateway-verify.mjs +1 -1
  39. package/scripts/preflight-cache.mjs +137 -137
  40. package/scripts/remote-spawn.mjs +404 -40
  41. package/scripts/setup.mjs +18 -0
  42. package/scripts/tfx-route-worker.mjs +165 -165
  43. package/scripts/tfx-route.sh +85 -16
  44. package/scripts/token-snapshot.mjs +575 -575
  45. package/skills/tfx-analysis/SKILL.md +101 -101
  46. package/skills/tfx-autopilot/SKILL.md +112 -112
  47. package/skills/tfx-autoresearch/SKILL.md +1 -0
  48. package/skills/tfx-autoroute/SKILL.md +184 -184
  49. package/skills/tfx-codex-swarm/SKILL.md +449 -0
  50. package/skills/tfx-codex-swarm/evals/evals.json +26 -0
  51. package/skills/tfx-codex-swarm-workspace/iteration-1/benchmark.json +33 -0
  52. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/eval_metadata.json +42 -0
  53. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/grading.json +11 -0
  54. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/analysis.md +87 -0
  55. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/classification.md +35 -0
  56. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/commands.sh +275 -0
  57. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/outputs/routing.md +56 -0
  58. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/with_skill/timing.json +5 -0
  59. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/grading.json +11 -0
  60. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/analysis.md +92 -0
  61. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/classification.md +71 -0
  62. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/commands.sh +264 -0
  63. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/outputs/routing.md +113 -0
  64. package/skills/tfx-codex-swarm-workspace/iteration-1/full-swarm-all-prds/without_skill/timing.json +5 -0
  65. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/eval_metadata.json +32 -0
  66. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/grading.json +9 -0
  67. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/analysis.md +96 -0
  68. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/classification.md +38 -0
  69. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/commands.sh +151 -0
  70. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/outputs/routing.md +51 -0
  71. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/with_skill/timing.json +5 -0
  72. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/grading.json +9 -0
  73. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/analysis.md +127 -0
  74. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/classification.md +57 -0
  75. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/commands.sh +129 -0
  76. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/outputs/routing.md +84 -0
  77. package/skills/tfx-codex-swarm-workspace/iteration-1/implicit-swarm-no-keywords/without_skill/timing.json +5 -0
  78. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/eval_metadata.json +27 -0
  79. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/grading.json +8 -0
  80. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/analysis.md +98 -0
  81. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/classification.md +65 -0
  82. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/commands.sh +123 -0
  83. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/outputs/routing.md +66 -0
  84. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/with_skill/timing.json +5 -0
  85. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/grading.json +8 -0
  86. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/analysis.md +88 -0
  87. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/classification.md +40 -0
  88. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/commands.sh +130 -0
  89. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/outputs/routing.md +61 -0
  90. package/skills/tfx-codex-swarm-workspace/iteration-1/selective-spawn-with-override/without_skill/timing.json +5 -0
  91. package/skills/tfx-profile/SKILL.md +141 -51
  92. package/skills/tfx-qa/SKILL.md +117 -117
  93. package/skills/tfx-remote-spawn/references/hosts.json +16 -16
  94. package/skills/tfx-review/SKILL.md +51 -51
  95. package/skills/tfx-setup/SKILL.md +20 -0
  96. package/tui/gemini-profile.mjs +254 -0
  97. package/tui/setup.mjs +36 -1
  98. package/scripts/claude-logged.ps1 +0 -54
  99. package/scripts/demo-tui.mjs +0 -59
  100. package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +0 -1
  101. package/skills/.omc/state/idle-notif-cooldown.json +0 -3
  102. package/skills/.omc/state/last-tool-error.json +0 -7
  103. package/skills/.omc/state/subagent-tracking.json +0 -7
@@ -0,0 +1,264 @@
1
+ #!/usr/bin/env bash
2
+ # =============================================================================
3
+ # Codex Swarm — 7 PRDs from .omx/plans/
4
+ # Generated for: triflux @ C:/Users/SSAFY/Desktop/Projects/cli/triflux
5
+ # 5 implement ($plan -> $autopilot), 2 investigate ($plan only)
6
+ # All sessions in one WT window with tabs
7
+ # =============================================================================
8
+
9
+ set -euo pipefail
10
+
11
+ PROJECT_ROOT="C:/Users/SSAFY/Desktop/Projects/cli/triflux"
12
+ SWARM_DIR="$PROJECT_ROOT/.codex-swarm"
13
+ PROMPTS_DIR="$SWARM_DIR/prompts"
14
+ BASH_EXE='C:\Program Files\Git\bin\bash.exe'
15
+
16
+ # ─── Phase 1: Worktree Creation ─────────────────────────────────────────────
17
+
18
+ echo "=== Phase 1: Creating worktrees ==="
19
+
20
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-24" -b codex/issue-24 2>/dev/null || \
21
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-24" codex/issue-24
22
+
23
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-25" -b codex/issue-25 2>/dev/null || \
24
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-25" codex/issue-25
25
+
26
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-26" -b codex/issue-26 2>/dev/null || \
27
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-26" codex/issue-26
28
+
29
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-27" -b codex/issue-27 2>/dev/null || \
30
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-27" codex/issue-27
31
+
32
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-28" -b codex/issue-28 2>/dev/null || \
33
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-28" codex/issue-28
34
+
35
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-29" -b codex/issue-29 2>/dev/null || \
36
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-29" codex/issue-29
37
+
38
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-30" -b codex/issue-30 2>/dev/null || \
39
+ git -C "$PROJECT_ROOT" worktree add "$SWARM_DIR/wt-issue-30" codex/issue-30
40
+
41
+ echo " 7 worktrees created under $SWARM_DIR/"
42
+
43
+ # ─── Phase 2: Copy PRD files into worktrees ──────────────────────────────────
44
+
45
+ echo "=== Phase 2: Staging PRD files ==="
46
+
47
+ for N in 24 25 26 27 28 29 30; do
48
+ mkdir -p "$SWARM_DIR/wt-issue-$N/.omx/plans"
49
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-$N-"*.md "$SWARM_DIR/wt-issue-$N/.omx/plans/" 2>/dev/null || true
50
+ done
51
+
52
+ echo " PRD files staged into worktrees"
53
+
54
+ # ─── Phase 3: Generate prompt files ─────────────────────────────────────────
55
+
56
+ echo "=== Phase 3: Generating prompts ==="
57
+
58
+ mkdir -p "$PROMPTS_DIR"
59
+
60
+ # --- Issue #24: implement -> $plan -> $autopilot ---
61
+ cat > "$PROMPTS_DIR/prompt-24.md" << 'PROMPT_EOF'
62
+ triflux 프로젝트의 태스크를 구현해야 합니다.
63
+
64
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-24-remote-spawn-file-transfer.md
65
+
66
+ 작업 순서:
67
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
68
+ 2. $plan 스킬을 사용하여 구현 계획을 수립하세요
69
+ 3. 계획이 완성되면 $autopilot 스킬로 자율 구현을 진행하세요
70
+ 4. Acceptance Criteria를 모두 충족하는지 검증하세요
71
+
72
+ 프로젝트 정보:
73
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
74
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
75
+ - 주요 수정 대상: scripts/remote-spawn.mjs
76
+ PROMPT_EOF
77
+
78
+ # --- Issue #25: investigate -> $plan only ---
79
+ cat > "$PROMPTS_DIR/prompt-25.md" << 'PROMPT_EOF'
80
+ triflux 프로젝트의 이슈를 조사해야 합니다.
81
+
82
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md
83
+
84
+ 작업 순서:
85
+ 1. 태스크 파일을 읽고 조사 요구사항을 파악하세요
86
+ 2. $plan 스킬을 사용하여 조사 계획을 수립하세요
87
+ 3. 재현 절차, 계측 방법, 원인 분류 기준을 포함하세요
88
+ 4. 구현은 하지 마세요 — 조사 계획 수립까지만 진행하세요
89
+
90
+ 프로젝트 정보:
91
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
92
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
93
+ - 조사 대상: SSH PTY resize, psmux pane capture, WT alternate screen
94
+ PROMPT_EOF
95
+
96
+ # --- Issue #26: implement -> $plan -> $autopilot ---
97
+ cat > "$PROMPTS_DIR/prompt-26.md" << 'PROMPT_EOF'
98
+ triflux 프로젝트의 태스크를 구현해야 합니다.
99
+
100
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-26-remote-spawn-session-cleanup.md
101
+
102
+ 작업 순서:
103
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
104
+ 2. $plan 스킬을 사용하여 구현 계획을 수립하세요
105
+ 3. 계획이 완성되면 $autopilot 스킬로 자율 구현을 진행하세요
106
+ 4. Acceptance Criteria를 모두 충족하는지 검증하세요
107
+
108
+ 프로젝트 정보:
109
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
110
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
111
+ - 주요 수정 대상: scripts/remote-spawn.mjs, hub/server.mjs
112
+ PROMPT_EOF
113
+
114
+ # --- Issue #27: implement -> $plan -> $autopilot ---
115
+ cat > "$PROMPTS_DIR/prompt-27.md" << 'PROMPT_EOF'
116
+ triflux 프로젝트의 태스크를 구현해야 합니다.
117
+
118
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-27-hud-dashboard-anchor.md
119
+
120
+ 작업 순서:
121
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
122
+ 2. $plan 스킬을 사용하여 구현 계획을 수립하세요
123
+ 3. 계획이 완성되면 $autopilot 스킬로 자율 구현을 진행하세요
124
+ 4. Acceptance Criteria를 모두 충족하는지 검증하세요
125
+
126
+ 프로젝트 정보:
127
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
128
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
129
+ - 주요 수정 대상: hub/team/headless.mjs (dashboard attach path)
130
+ PROMPT_EOF
131
+
132
+ # --- Issue #28: implement -> $plan -> $autopilot ---
133
+ cat > "$PROMPTS_DIR/prompt-28.md" << 'PROMPT_EOF'
134
+ triflux 프로젝트의 태스크를 구현해야 합니다.
135
+
136
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md
137
+
138
+ 작업 순서:
139
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
140
+ 2. $plan 스킬을 사용하여 구현 계획을 수립하세요
141
+ 3. 계획이 완성되면 $autopilot 스킬로 자율 구현을 진행하세요
142
+ 4. Acceptance Criteria를 모두 충족하는지 검증하세요
143
+
144
+ 프로젝트 정보:
145
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
146
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
147
+ - 주요 수정 대상: scripts/headless-guard.mjs, tests/unit/headless-guard.test.mjs
148
+ PROMPT_EOF
149
+
150
+ # --- Issue #29: implement -> $plan -> $autopilot ---
151
+ cat > "$PROMPTS_DIR/prompt-29.md" << 'PROMPT_EOF'
152
+ triflux 프로젝트의 태스크를 구현해야 합니다.
153
+
154
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-29-headless-cwd-propagation.md
155
+
156
+ 작업 순서:
157
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
158
+ 2. $plan 스킬을 사용하여 구현 계획을 수립하세요
159
+ 3. 계획이 완성되면 $autopilot 스킬로 자율 구현을 진행하세요
160
+ 4. Acceptance Criteria를 모두 충족하는지 검증하세요
161
+
162
+ 프로젝트 정보:
163
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
164
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
165
+ - 주요 수정 대상: hub/team/cli/commands/start/parse-args.mjs, start-headless.mjs, hub/team/headless.mjs, hub/team/backend.mjs
166
+ PROMPT_EOF
167
+
168
+ # --- Issue #30: investigate -> $plan only ---
169
+ cat > "$PROMPTS_DIR/prompt-30.md" << 'PROMPT_EOF'
170
+ triflux 프로젝트의 이슈를 조사해야 합니다.
171
+
172
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md
173
+
174
+ 작업 순서:
175
+ 1. 태스크 파일을 읽고 조사 요구사항을 파악하세요
176
+ 2. $plan 스킬을 사용하여 조사 계획을 수립하세요
177
+ 3. 재현 스크립트, 터미널 상태 캡처 방법, 판별 기준을 포함하세요
178
+ 4. 구현은 하지 마세요 — 조사 계획 수립까지만 진행하세요
179
+
180
+ 프로젝트 정보:
181
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
182
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
183
+ - 조사 대상: remote-spawn.mjs WT tab/pane creation, headless.mjs focus manipulation
184
+ PROMPT_EOF
185
+
186
+ echo " 7 prompt files generated in $PROMPTS_DIR/"
187
+
188
+ # ─── Phase 4: psmux Session Creation + Codex Launch ─────────────────────────
189
+
190
+ echo "=== Phase 4: Creating psmux sessions and launching Codex ==="
191
+
192
+ # --- Issue #24: implement, codex53_high ---
193
+ psmux new-session --name "codex-swarm-24" --dir "$SWARM_DIR/wt-issue-24"
194
+ psmux send-keys --target "codex-swarm-24:0" \
195
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPTS_DIR/prompt-24.md)\"" Enter
196
+
197
+ # --- Issue #25: investigate, gpt54_high ---
198
+ psmux new-session --name "codex-swarm-25" --dir "$SWARM_DIR/wt-issue-25"
199
+ psmux send-keys --target "codex-swarm-25:0" \
200
+ "codex -c 'model=\"gpt-5.4\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPTS_DIR/prompt-25.md)\"" Enter
201
+
202
+ # --- Issue #26: implement, codex53_high ---
203
+ psmux new-session --name "codex-swarm-26" --dir "$SWARM_DIR/wt-issue-26"
204
+ psmux send-keys --target "codex-swarm-26:0" \
205
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPTS_DIR/prompt-26.md)\"" Enter
206
+
207
+ # --- Issue #27: implement, codex53_high ---
208
+ psmux new-session --name "codex-swarm-27" --dir "$SWARM_DIR/wt-issue-27"
209
+ psmux send-keys --target "codex-swarm-27:0" \
210
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPTS_DIR/prompt-27.md)\"" Enter
211
+
212
+ # --- Issue #28: implement, codex53_high ---
213
+ psmux new-session --name "codex-swarm-28" --dir "$SWARM_DIR/wt-issue-28"
214
+ psmux send-keys --target "codex-swarm-28:0" \
215
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPTS_DIR/prompt-28.md)\"" Enter
216
+
217
+ # --- Issue #29: implement, codex53_high ---
218
+ psmux new-session --name "codex-swarm-29" --dir "$SWARM_DIR/wt-issue-29"
219
+ psmux send-keys --target "codex-swarm-29:0" \
220
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPTS_DIR/prompt-29.md)\"" Enter
221
+
222
+ # --- Issue #30: investigate, gpt54_high ---
223
+ psmux new-session --name "codex-swarm-30" --dir "$SWARM_DIR/wt-issue-30"
224
+ psmux send-keys --target "codex-swarm-30:0" \
225
+ "codex -c 'model=\"gpt-5.4\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPTS_DIR/prompt-30.md)\"" Enter
226
+
227
+ echo " 7 psmux sessions created, Codex launched in each"
228
+
229
+ # ─── Phase 5: WT Tab Attach — All sessions in one window ────────────────────
230
+
231
+ echo "=== Phase 5: Attaching all sessions to one WT window ==="
232
+
233
+ # First session opens a new WT window
234
+ psmux attach --session "codex-swarm-24" --wt-new-window
235
+
236
+ # Remaining 6 sessions attach as tabs in the same window
237
+ psmux attach --session "codex-swarm-25" --wt-tab
238
+ psmux attach --session "codex-swarm-26" --wt-tab
239
+ psmux attach --session "codex-swarm-27" --wt-tab
240
+ psmux attach --session "codex-swarm-28" --wt-tab
241
+ psmux attach --session "codex-swarm-29" --wt-tab
242
+ psmux attach --session "codex-swarm-30" --wt-tab
243
+
244
+ echo " All 7 sessions attached as tabs in one WT window"
245
+
246
+ # ─── Fallback: wt.exe direct (if psmux attach --wt-tab unavailable) ─────────
247
+
248
+ # Uncomment below if psmux attach --wt-tab is not available:
249
+ #
250
+ # PSMUX_WIN=$(command -v psmux.exe || echo "psmux")
251
+ # wt.exe -w new \
252
+ # --title "swarm-24 file-transfer" -d "$SWARM_DIR/wt-issue-24" "$BASH_EXE" -c "psmux attach codex-swarm-24" \; \
253
+ # new-tab --title "swarm-25 resize-blank" -d "$SWARM_DIR/wt-issue-25" "$BASH_EXE" -c "psmux attach codex-swarm-25" \; \
254
+ # new-tab --title "swarm-26 session-cleanup" -d "$SWARM_DIR/wt-issue-26" "$BASH_EXE" -c "psmux attach codex-swarm-26" \; \
255
+ # new-tab --title "swarm-27 dashboard-anchor" -d "$SWARM_DIR/wt-issue-27" "$BASH_EXE" -c "psmux attach codex-swarm-27" \; \
256
+ # new-tab --title "swarm-28 guard-deadlock" -d "$SWARM_DIR/wt-issue-28" "$BASH_EXE" -c "psmux attach codex-swarm-28" \; \
257
+ # new-tab --title "swarm-29 cwd-propagation" -d "$SWARM_DIR/wt-issue-29" "$BASH_EXE" -c "psmux attach codex-swarm-29" \; \
258
+ # new-tab --title "swarm-30 terminal-minimize" -d "$SWARM_DIR/wt-issue-30" "$BASH_EXE" -c "psmux attach codex-swarm-30"
259
+
260
+ echo ""
261
+ echo "=== Codex Swarm Complete ==="
262
+ echo " Sessions: 7 (5 implement + 2 investigate)"
263
+ echo " Window: 1 WT window, 7 tabs"
264
+ echo " Monitor: psmux capture-pane --session codex-swarm-{N} --lines 5"
@@ -0,0 +1,113 @@
1
+ # Codex Profile Routing — 7 PRDs
2
+
3
+ ## Routing Method
4
+
5
+ Following SKILL.md Step 4 profile routing tables.
6
+
7
+ ### Size Estimation Signals
8
+
9
+ | Signal | Method |
10
+ |--------|--------|
11
+ | PRD length | line count |
12
+ | Affected files | file paths mentioned in PRD |
13
+ | High-cost keywords | "architecture", "migration", "refactoring" |
14
+ | Dependency depth | references to other issues/PRDs |
15
+
16
+ ### Size Thresholds
17
+
18
+ | Size | PRD lines | Affected files | High-cost keywords |
19
+ |------|-----------|----------------|--------------------|
20
+ | XL | 80+ | 6+ | 2+ |
21
+ | L | 40-80 | 3-5 | 0-1 |
22
+ | M | 20-40 | 1-2 | 0 |
23
+ | S | <20 | 1 | 0 |
24
+
25
+ ---
26
+
27
+ ## Per-PRD Routing
28
+
29
+ ### Issue #24 — remote-spawn file transfer
30
+ - **Lines**: 73
31
+ - **Affected files**: `scripts/remote-spawn.mjs` (primary), prompt pipeline, scp path (~3 files)
32
+ - **High-cost keywords**: 0
33
+ - **Size**: L (standard)
34
+ - **Type**: implement
35
+ - **Profile**: `codex53_high`
36
+ - **Flags**: `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'`
37
+
38
+ ### Issue #25 — resize blank-screen investigation
39
+ - **Lines**: 76
40
+ - **Affected files**: `scripts/remote-spawn.mjs`, psmux pane capture, SSH PTY (~4 files)
41
+ - **High-cost keywords**: 0
42
+ - **Size**: L (standard)
43
+ - **Type**: investigate
44
+ - **Profile**: `gpt54_high`
45
+ - **Flags**: `-c 'model="gpt-5.4"' -c 'model_reasoning_effort="high"'`
46
+
47
+ ### Issue #26 — session cleanup
48
+ - **Lines**: 70
49
+ - **Affected files**: `scripts/remote-spawn.mjs`, `hub/server.mjs` (~2-3 files)
50
+ - **High-cost keywords**: 0
51
+ - **Size**: L (standard)
52
+ - **Type**: implement
53
+ - **Profile**: `codex53_high`
54
+ - **Flags**: `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'`
55
+
56
+ ### Issue #27 — HUD dashboard anchor
57
+ - **Lines**: 73
58
+ - **Affected files**: `hub/team/headless.mjs` (primary), WT config (~2 files)
59
+ - **High-cost keywords**: 0
60
+ - **Size**: L (standard)
61
+ - **Type**: implement
62
+ - **Profile**: `codex53_high`
63
+ - **Flags**: `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'`
64
+
65
+ ### Issue #28 — headless-guard spawn deadlock
66
+ - **Lines**: 69
67
+ - **Affected files**: `scripts/headless-guard.mjs`, `tests/unit/headless-guard.test.mjs` (~2 files)
68
+ - **High-cost keywords**: 0
69
+ - **Size**: L (standard)
70
+ - **Type**: implement
71
+ - **Profile**: `codex53_high`
72
+ - **Flags**: `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'`
73
+
74
+ ### Issue #29 — headless cwd propagation
75
+ - **Lines**: 70
76
+ - **Affected files**: `hub/team/cli/commands/start/parse-args.mjs`, `hub/team/cli/commands/start/start-headless.mjs`, `hub/team/headless.mjs`, `hub/team/backend.mjs`, `scripts/tfx-route.sh` (~5 files)
77
+ - **High-cost keywords**: 0
78
+ - **Size**: L (standard)
79
+ - **Type**: implement
80
+ - **Profile**: `codex53_high`
81
+ - **Flags**: `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'`
82
+
83
+ ### Issue #30 — terminal minimize investigation
84
+ - **Lines**: 70
85
+ - **Affected files**: `scripts/remote-spawn.mjs`, `hub/team/headless.mjs`, WT focus (~3 files)
86
+ - **High-cost keywords**: 0
87
+ - **Size**: L (standard)
88
+ - **Type**: investigate
89
+ - **Profile**: `gpt54_high`
90
+ - **Flags**: `-c 'model="gpt-5.4"' -c 'model_reasoning_effort="high"'`
91
+
92
+ ---
93
+
94
+ ## Routing Summary Table
95
+
96
+ | # | Task | Size | Type | Profile | Model | Effort |
97
+ |---|------|------|------|---------|-------|--------|
98
+ | 24 | file-transfer | L | implement | `codex53_high` | gpt-5.3-codex | high |
99
+ | 25 | resize-blank | L | investigate | `gpt54_high` | gpt-5.4 | high |
100
+ | 26 | session-cleanup | L | implement | `codex53_high` | gpt-5.3-codex | high |
101
+ | 27 | dashboard-anchor | L | implement | `codex53_high` | gpt-5.3-codex | high |
102
+ | 28 | guard-deadlock | L | implement | `codex53_high` | gpt-5.3-codex | high |
103
+ | 29 | cwd-propagation | L | implement | `codex53_high` | gpt-5.3-codex | high |
104
+ | 30 | terminal-minimize | L | investigate | `gpt54_high` | gpt-5.4 | high |
105
+
106
+ ## Execution Config
107
+
108
+ | Setting | Value | Notes |
109
+ |---------|-------|-------|
110
+ | Execution mode | `--full-auto` | sandbox auto-approve |
111
+ | Worktree | enabled | per-session isolated worktree |
112
+ | psmux | enabled | session management |
113
+ | WT layout | single window, 7 tabs | user requested tabs |
@@ -0,0 +1,5 @@
1
+ {
2
+ "total_tokens": 50555,
3
+ "duration_ms": 218213,
4
+ "total_duration_seconds": 218.2
5
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "eval_id": 3,
3
+ "eval_name": "implicit-swarm-no-keywords",
4
+ "prompt": "이 PRD 3개 파일을 각각 독립적으로 코덱스한테 맡겨서 병렬로 구현해줘. docs/prd/auth-refactor.md, docs/prd/api-v2.md, docs/prd/cache-layer.md",
5
+ "assertions": [
6
+ {
7
+ "name": "3-paths-recognized",
8
+ "description": "사용자 제공 3개 파일 경로 인식",
9
+ "check": "classification.md에 auth-refactor, api-v2, cache-layer 모두 등장"
10
+ },
11
+ {
12
+ "name": "filename-classification",
13
+ "description": "파일명 기반 유형 분류 시도",
14
+ "check": "auth-refactor를 리팩터링으로, api-v2/cache-layer를 구현으로 분류"
15
+ },
16
+ {
17
+ "name": "profile-routing-applied",
18
+ "description": "자동 프로파일 라우팅 적용",
19
+ "check": "routing.md에 프로파일 매핑 존재 (codex53 또는 gpt54)"
20
+ },
21
+ {
22
+ "name": "worktree-isolation",
23
+ "description": "3개 독립 worktree 생성",
24
+ "check": "commands.sh에 git worktree add가 3개"
25
+ },
26
+ {
27
+ "name": "psmux-and-wt",
28
+ "description": "psmux 세션 + WT 탭 명령 생성",
29
+ "check": "commands.sh에 psmux + wt 명령 존재"
30
+ }
31
+ ]
32
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "expectations": [
3
+ {"text": "3-paths-recognized", "passed": true, "evidence": "auth-refactor, api-v2, cache-layer 모두 classification.md에 등장"},
4
+ {"text": "filename-classification", "passed": true, "evidence": "auth-refactor=리팩터링, api-v2=구현, cache-layer=구현"},
5
+ {"text": "profile-routing-applied", "passed": true, "evidence": "모두 codex53_high 라우팅"},
6
+ {"text": "worktree-isolation", "passed": true, "evidence": "3개 git worktree add 명령"},
7
+ {"text": "psmux-and-wt", "passed": true, "evidence": "psmux 세션 + WT 탭 명령 존재"}
8
+ ]
9
+ }
@@ -0,0 +1,96 @@
1
+ # tfx-codex-swarm — 실행 분석 리포트
2
+
3
+ > 사용자 요청: "이 PRD 3개 파일을 각각 독립적으로 코덱스한테 맡겨서 병렬로 구현해줘"
4
+ > 입력: docs/prd/auth-refactor.md, docs/prd/api-v2.md, docs/prd/cache-layer.md
5
+ > 분석일: 2026-03-30
6
+ > 모드: DRY-RUN (시뮬레이션)
7
+
8
+ ## 1. 워크플로우 실행 요약
9
+
10
+ ### Step 1: 태스크 파일 스캔 → SKIP
11
+ 사용자가 3개 파일 경로를 명시적으로 제공했으므로 자동 스캔(`.omx/plans/*.md`, `.omc/plans/*.md`, `docs/prd/*.md`)을 건너뜀.
12
+
13
+ ### Step 2: 태스크 선택 → SKIP
14
+ 사용자가 "이 PRD 3개 파일"로 명시했으므로 AskUserQuestion 없이 전체 선택 확정.
15
+
16
+ ### Step 3: 태스크 분류 → 파일명 기반 자동 분류
17
+
18
+ | 태스크 | 유형 | OMX 스킬 |
19
+ |--------|------|----------|
20
+ | auth-refactor | 리팩터링 | `$plan` → `$ralph` |
21
+ | api-v2 | 구현 | `$plan` → `$autopilot` |
22
+ | cache-layer | 구현 | `$plan` → `$autopilot` |
23
+
24
+ **판단 근거**: PRD 파일이 존재하지 않아 내용 기반 분류 불가. 파일명에서 키워드를 추출하여 분류.
25
+ - `auth-refactor`: "refactor" → 리팩터링
26
+ - `api-v2`, `cache-layer`: 명시적 리팩터/조사 키워드 없음 → 구현 (기본)
27
+
28
+ ### Step 4: 프로파일 라우팅 → 전부 codex53_high
29
+
30
+ | 태스크 | 규모 | 유형 | 프로파일 |
31
+ |--------|------|------|----------|
32
+ | auth-refactor | L | 리팩터링 | codex53_high |
33
+ | api-v2 | L | 구현 | codex53_high |
34
+ | cache-layer | L | 구현 | codex53_high |
35
+
36
+ **판단 근거**: PRD 실체가 없어 줄 수/영향 파일 수를 직접 측정할 수 없음. 파일명에서 추정한 규모:
37
+ - 인증 리팩터링, API v2, 캐시 레이어 모두 중간~큰 규모 작업 → L (표준) 추정
38
+ - L × 리팩터링 = codex53_high, L × 구현 = codex53_high (라우팅 테이블 일치)
39
+
40
+ ### Steps 5-8: 명령어 생성 완료
41
+ - 3개 worktree 생성 명령어
42
+ - 3개 프롬프트 파일 (유형별 OMX 스킬 지시 포함)
43
+ - 3개 psmux 세션 + codex send-keys 명령어
44
+ - WT 탭 일괄 attach 명령어 (+ wt.exe fallback)
45
+
46
+ ## 2. 스킬 워크플로우 적용 분석
47
+
48
+ ### 스킬이 제공한 가치
49
+
50
+ | 항목 | 스킬 적용 결과 |
51
+ |------|---------------|
52
+ | 분류 체계 | 3가지 유형(구현/조사/리팩터링) 자동 분류 → OMX 스킬 매핑 |
53
+ | 프로파일 라우팅 | 유형×규모 매트릭스로 최적 모델+effort 자동 선택 |
54
+ | 프롬프트 구조화 | 유형별 OMX 스킬 지시($plan→$autopilot vs $plan→$ralph) 포함 |
55
+ | worktree 규칙 | `.codex-swarm/wt-{slug}` 패턴 일관 적용 |
56
+ | psmux 규칙 | `codex-swarm-{id}` 네이밍, send-keys 패턴 일관 적용 |
57
+ | WT 통합 | 첫 세션 wt-new-window + 나머지 wt-tab, fallback 포함 |
58
+
59
+ ### AskUserQuestion 분기 결과
60
+
61
+ | Step | 인터랙션 필요 여부 | 근거 |
62
+ |------|-------------------|------|
63
+ | Step 2 (태스크 선택) | 불필요 | 사용자가 3개 파일 명시 |
64
+ | Step 3 (스킬 선택) | 불필요 | 파일명으로 자동 분류 가능 (모호하지 않음) |
65
+ | Step 4 (프로파일) | 불필요 | 사용자가 프로파일 언급 안 함 → 자동 라우팅 |
66
+
67
+ 결과: **0회 인터랙션** — 사용자가 충분한 정보를 제공했으므로 완전 자동 실행 가능.
68
+
69
+ ## 3. 생성된 리소스 매트릭스
70
+
71
+ | 리소스 유형 | auth-refactor | api-v2 | cache-layer |
72
+ |------------|---------------|--------|-------------|
73
+ | 브랜치 | `codex/auth-refactor` | `codex/api-v2` | `codex/cache-layer` |
74
+ | Worktree | `.codex-swarm/wt-auth-refactor` | `.codex-swarm/wt-api-v2` | `.codex-swarm/wt-cache-layer` |
75
+ | 프롬프트 | `prompts/prompt-auth-refactor.md` | `prompts/prompt-api-v2.md` | `prompts/prompt-cache-layer.md` |
76
+ | psmux 세션 | `codex-swarm-auth-refactor` | `codex-swarm-api-v2` | `codex-swarm-cache-layer` |
77
+ | Codex 모델 | gpt-5.3-codex | gpt-5.3-codex | gpt-5.3-codex |
78
+ | Reasoning | high | high | high |
79
+ | 실행 모드 | --full-auto | --full-auto | --full-auto |
80
+ | OMX 흐름 | $plan → $ralph | $plan → $autopilot | $plan → $autopilot |
81
+
82
+ ## 4. 제약 사항 및 참고
83
+
84
+ 1. **PRD 파일 부재**: 3개 PRD 파일(docs/prd/auth-refactor.md, docs/prd/api-v2.md, docs/prd/cache-layer.md)이 실제 존재하지 않음. 분류와 규모 산정이 파일명 기반 추정에 의존.
85
+ 2. **규모 균일성**: 실제 PRD 내용에 따라 규모가 M이나 XL로 바뀔 수 있으며, 그에 따라 프로파일도 codex53_med나 codex53_xhigh로 변경될 수 있음.
86
+ 3. **PRD 복사 실패 가능**: Step 6의 `cp` 명령이 원본 파일 부재로 실패할 수 있음 (`|| true`로 에러 무시 처리됨).
87
+ 4. **codex 대화식 모드**: SKILL.md에 명시된 대로 `codex exec`(비대화식)가 아닌 대화식 모드 사용. OMX 스킬($plan, $autopilot, $ralph)이 트리거되려면 대화식 필수.
88
+
89
+ ## 5. 출력 파일
90
+
91
+ | 파일 | 내용 |
92
+ |------|------|
93
+ | `classification.md` | Step 3 분류 결과 상세 |
94
+ | `routing.md` | Step 4 프로파일 라우팅 결과 상세 |
95
+ | `commands.sh` | Steps 5-8 실행 명령어 전체 |
96
+ | `analysis.md` | 본 분석 리포트 |
@@ -0,0 +1,38 @@
1
+ # tfx-codex-swarm — Step 3: 태스크 분류 및 OMX 스킬 매핑
2
+
3
+ > 사용자 요청: "이 PRD 3개 파일을 각각 독립적으로 코덱스한테 맡겨서 병렬로 구현해줘"
4
+ > 입력 파일: docs/prd/auth-refactor.md, docs/prd/api-v2.md, docs/prd/cache-layer.md
5
+
6
+ ## 분류 결과
7
+
8
+ | # | 파일 | 슬러그 | 유형 | 판별 근거 | OMX 스킬 |
9
+ |---|------|--------|------|-----------|----------|
10
+ | 1 | docs/prd/auth-refactor.md | auth-refactor | 리팩터링 (refactor) | 파일명에 "refactor" 포함 → 리팩터링 자동 분류 | `$plan` → `$ralph` |
11
+ | 2 | docs/prd/api-v2.md | api-v2 | 구현 (implement) | 파일명 "api-v2" → 새 API 버전 구현, 기본 구현 분류 | `$plan` → `$autopilot` |
12
+ | 3 | docs/prd/cache-layer.md | cache-layer | 구현 (implement) | 파일명 "cache-layer" → 새 레이어 추가, 기본 구현 분류 | `$plan` → `$autopilot` |
13
+
14
+ ## 분류 로직
15
+
16
+ ### auth-refactor → 리팩터링
17
+ - 파일명 키워드: `refactor` 매치
18
+ - SKILL.md 분류 테이블: "리팩터", "refactor", "정리", "개선" → 리팩터링
19
+ - OMX 스킬: `$plan` → `$ralph` (계획 후 완료까지 반복 실행)
20
+ - 근거: 리팩터링은 기존 코드 구조 변경이므로 ralph의 반복 검증이 적합
21
+
22
+ ### api-v2 → 구현
23
+ - 파일명 키워드: `api-v2` → 명시적 리팩터/조사 키워드 없음, 새 버전 = 구현
24
+ - SKILL.md 분류 테이블: "구현", "implement", "추가", "변경" → 구현
25
+ - OMX 스킬: `$plan` → `$autopilot` (계획 후 자율 구현)
26
+ - 근거: 새 API 엔드포인트/버전 추가는 전형적 구현 태스크
27
+
28
+ ### cache-layer → 구현
29
+ - 파일명 키워드: `cache-layer` → 새 레이어 추가
30
+ - SKILL.md 분류 테이블: "구현", "implement", "추가" → 구현
31
+ - OMX 스킬: `$plan` → `$autopilot` (계획 후 자율 구현)
32
+ - 근거: 캐시 레이어는 신규 아키텍처 컴포넌트 추가
33
+
34
+ ## 참고
35
+
36
+ - PRD 파일이 실제 존재하지 않으므로 **파일명 기반** 분류만 수행
37
+ - 실제 실행 시 파일 내용을 읽어 키워드 복잡도, 영향 파일 수 등을 추가 판별
38
+ - 사용자가 스킬을 명시하지 않았으므로 자동 분류 적용