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,35 @@
1
+ # Codex Swarm - PRD Classification Table
2
+
3
+ > Generated: 2026-03-30
4
+ > Source: `.omx/plans/prd-issue-{24..30}.md` (7 PRDs)
5
+ > User directive: "구현은 autopilot, 조사는 plan만 쓰고"
6
+
7
+ ## Classification
8
+
9
+ | # | PRD File | Type | Keywords Found | User Override | OMX Skill |
10
+ |---|----------|------|----------------|---------------|-----------|
11
+ | 24 | `prd-issue-24-remote-spawn-file-transfer.md` | **implement** (구현) | "추가", "변경" | autopilot | `$plan` -> `$autopilot` |
12
+ | 25 | `prd-issue-25-remote-spawn-resize-blank-screen.md` | **investigate** (조사) | "조사", "investigation", "재현", "reproduce" | plan only | `$plan` |
13
+ | 26 | `prd-issue-26-remote-spawn-session-cleanup.md` | **implement** (구현) | "추가", "변경" | autopilot | `$plan` -> `$autopilot` |
14
+ | 27 | `prd-issue-27-hud-dashboard-anchor.md` | **implement** (구현) | "변경", "개선" | autopilot | `$plan` -> `$autopilot` |
15
+ | 28 | `prd-issue-28-headless-guard-spawn-deadlock.md` | **implement** (구현) | "변경", "fix" | autopilot | `$plan` -> `$autopilot` |
16
+ | 29 | `prd-issue-29-headless-cwd-propagation.md` | **implement** (구현) | "변경" | autopilot | `$plan` -> `$autopilot` |
17
+ | 30 | `prd-issue-30-remote-spawn-terminal-minimize.md` | **investigate** (조사) | "조사", "investigation", "재현", "reproduce" | plan only | `$plan` |
18
+
19
+ ## Classification Logic
20
+
21
+ Per SKILL.md Step 3:
22
+
23
+ - **implement**: PRD content contains "구현", "implement", "추가", "변경", "fix"
24
+ - **investigate**: PRD content contains "조사", "investigation", "재현", "reproduce"
25
+ - **refactor**: PRD content contains "리팩터", "refactor", "정리", "개선"
26
+
27
+ User explicitly overrode skill assignment:
28
+ - All **implement** tasks -> `$plan` -> `$autopilot` (not `$ralph`)
29
+ - All **investigate** tasks -> `$plan` only (no follow-up execution)
30
+
31
+ ## Summary
32
+
33
+ - **5 implement** tasks: issues 24, 26, 27, 28, 29
34
+ - **2 investigate** tasks: issues 25, 30
35
+ - **0 refactor** tasks
@@ -0,0 +1,275 @@
1
+ #!/usr/bin/env bash
2
+ # =============================================================================
3
+ # Codex Swarm — Full Swarm: 7 PRDs (Issues 24-30)
4
+ # Generated: 2026-03-30
5
+ # User directive: 구현=autopilot, 조사=plan만, 하나의 WT에 탭으로
6
+ # =============================================================================
7
+ # DO NOT EXECUTE — this is a dry-run generation for review.
8
+ # =============================================================================
9
+
10
+ set -euo pipefail
11
+
12
+ PROJECT_ROOT="C:/Users/SSAFY/Desktop/Projects/cli/triflux"
13
+ SWARM_DIR="$PROJECT_ROOT/.codex-swarm"
14
+ WT_DIR="$SWARM_DIR/wt-issue"
15
+ PROMPT_DIR="$SWARM_DIR/prompts"
16
+ BASH_EXE='C:\Program Files\Git\bin\bash.exe'
17
+
18
+ # =============================================================================
19
+ # Step 5: Create git worktrees
20
+ # =============================================================================
21
+
22
+ echo "=== Step 5: Creating git worktrees ==="
23
+
24
+ git worktree add "$SWARM_DIR/wt-issue-24" -b codex/issue-24 2>/dev/null || \
25
+ git worktree add "$SWARM_DIR/wt-issue-24" codex/issue-24
26
+
27
+ git worktree add "$SWARM_DIR/wt-issue-25" -b codex/issue-25 2>/dev/null || \
28
+ git worktree add "$SWARM_DIR/wt-issue-25" codex/issue-25
29
+
30
+ git worktree add "$SWARM_DIR/wt-issue-26" -b codex/issue-26 2>/dev/null || \
31
+ git worktree add "$SWARM_DIR/wt-issue-26" codex/issue-26
32
+
33
+ git worktree add "$SWARM_DIR/wt-issue-27" -b codex/issue-27 2>/dev/null || \
34
+ git worktree add "$SWARM_DIR/wt-issue-27" codex/issue-27
35
+
36
+ git worktree add "$SWARM_DIR/wt-issue-28" -b codex/issue-28 2>/dev/null || \
37
+ git worktree add "$SWARM_DIR/wt-issue-28" codex/issue-28
38
+
39
+ git worktree add "$SWARM_DIR/wt-issue-29" -b codex/issue-29 2>/dev/null || \
40
+ git worktree add "$SWARM_DIR/wt-issue-29" codex/issue-29
41
+
42
+ git worktree add "$SWARM_DIR/wt-issue-30" -b codex/issue-30 2>/dev/null || \
43
+ git worktree add "$SWARM_DIR/wt-issue-30" codex/issue-30
44
+
45
+ # =============================================================================
46
+ # Step 6: Generate prompts + copy PRD files into worktrees
47
+ # =============================================================================
48
+
49
+ echo "=== Step 6: Generating prompts ==="
50
+
51
+ mkdir -p "$PROMPT_DIR"
52
+
53
+ # --- Issue 24: implement -> $plan -> $autopilot ---
54
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md" \
55
+ "$SWARM_DIR/wt-issue-24/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md" 2>/dev/null || \
56
+ { mkdir -p "$SWARM_DIR/wt-issue-24/.omx/plans" && \
57
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md" \
58
+ "$SWARM_DIR/wt-issue-24/.omx/plans/prd-issue-24-remote-spawn-file-transfer.md"; }
59
+
60
+ cat > "$PROMPT_DIR/prompt-24.md" << 'PROMPT_EOF'
61
+ triflux 프로젝트의 태스크를 구현해야 합니다.
62
+
63
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-24-remote-spawn-file-transfer.md
64
+
65
+ 작업 순서:
66
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
67
+ 2. $plan 스킬로 구현 계획을 수립하세요
68
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
69
+
70
+ 프로젝트 정보:
71
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
72
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
73
+ PROMPT_EOF
74
+
75
+ # --- Issue 25: investigate -> $plan only ---
76
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md" \
77
+ "$SWARM_DIR/wt-issue-25/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md" 2>/dev/null || \
78
+ { mkdir -p "$SWARM_DIR/wt-issue-25/.omx/plans" && \
79
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md" \
80
+ "$SWARM_DIR/wt-issue-25/.omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md"; }
81
+
82
+ cat > "$PROMPT_DIR/prompt-25.md" << 'PROMPT_EOF'
83
+ triflux 프로젝트의 태스크를 조사해야 합니다.
84
+
85
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-25-remote-spawn-resize-blank-screen.md
86
+
87
+ 작업 순서:
88
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
89
+ 2. $plan 스킬로 조사 계획을 수립하세요
90
+ 3. 계획 수립까지만 진행하세요 (구현하지 마세요)
91
+
92
+ 프로젝트 정보:
93
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
94
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
95
+ PROMPT_EOF
96
+
97
+ # --- Issue 26: implement -> $plan -> $autopilot ---
98
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md" \
99
+ "$SWARM_DIR/wt-issue-26/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md" 2>/dev/null || \
100
+ { mkdir -p "$SWARM_DIR/wt-issue-26/.omx/plans" && \
101
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md" \
102
+ "$SWARM_DIR/wt-issue-26/.omx/plans/prd-issue-26-remote-spawn-session-cleanup.md"; }
103
+
104
+ cat > "$PROMPT_DIR/prompt-26.md" << 'PROMPT_EOF'
105
+ triflux 프로젝트의 태스크를 구현해야 합니다.
106
+
107
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-26-remote-spawn-session-cleanup.md
108
+
109
+ 작업 순서:
110
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
111
+ 2. $plan 스킬로 구현 계획을 수립하세요
112
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
113
+
114
+ 프로젝트 정보:
115
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
116
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
117
+ PROMPT_EOF
118
+
119
+ # --- Issue 27: implement -> $plan -> $autopilot ---
120
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-27-hud-dashboard-anchor.md" \
121
+ "$SWARM_DIR/wt-issue-27/.omx/plans/prd-issue-27-hud-dashboard-anchor.md" 2>/dev/null || \
122
+ { mkdir -p "$SWARM_DIR/wt-issue-27/.omx/plans" && \
123
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-27-hud-dashboard-anchor.md" \
124
+ "$SWARM_DIR/wt-issue-27/.omx/plans/prd-issue-27-hud-dashboard-anchor.md"; }
125
+
126
+ cat > "$PROMPT_DIR/prompt-27.md" << 'PROMPT_EOF'
127
+ triflux 프로젝트의 태스크를 구현해야 합니다.
128
+
129
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-27-hud-dashboard-anchor.md
130
+
131
+ 작업 순서:
132
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
133
+ 2. $plan 스킬로 구현 계획을 수립하세요
134
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
135
+
136
+ 프로젝트 정보:
137
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
138
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
139
+ PROMPT_EOF
140
+
141
+ # --- Issue 28: implement -> $plan -> $autopilot ---
142
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md" \
143
+ "$SWARM_DIR/wt-issue-28/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md" 2>/dev/null || \
144
+ { mkdir -p "$SWARM_DIR/wt-issue-28/.omx/plans" && \
145
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md" \
146
+ "$SWARM_DIR/wt-issue-28/.omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md"; }
147
+
148
+ cat > "$PROMPT_DIR/prompt-28.md" << 'PROMPT_EOF'
149
+ triflux 프로젝트의 태스크를 구현해야 합니다.
150
+
151
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-28-headless-guard-spawn-deadlock.md
152
+
153
+ 작업 순서:
154
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
155
+ 2. $plan 스킬로 구현 계획을 수립하세요
156
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
157
+
158
+ 프로젝트 정보:
159
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
160
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
161
+ PROMPT_EOF
162
+
163
+ # --- Issue 29: implement -> $plan -> $autopilot ---
164
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-29-headless-cwd-propagation.md" \
165
+ "$SWARM_DIR/wt-issue-29/.omx/plans/prd-issue-29-headless-cwd-propagation.md" 2>/dev/null || \
166
+ { mkdir -p "$SWARM_DIR/wt-issue-29/.omx/plans" && \
167
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-29-headless-cwd-propagation.md" \
168
+ "$SWARM_DIR/wt-issue-29/.omx/plans/prd-issue-29-headless-cwd-propagation.md"; }
169
+
170
+ cat > "$PROMPT_DIR/prompt-29.md" << 'PROMPT_EOF'
171
+ triflux 프로젝트의 태스크를 구현해야 합니다.
172
+
173
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-29-headless-cwd-propagation.md
174
+
175
+ 작업 순서:
176
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
177
+ 2. $plan 스킬로 구현 계획을 수립하세요
178
+ 3. 계획이 완료되면 $autopilot 스킬로 자율 구현을 시작하세요
179
+
180
+ 프로젝트 정보:
181
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
182
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
183
+ PROMPT_EOF
184
+
185
+ # --- Issue 30: investigate -> $plan only ---
186
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md" \
187
+ "$SWARM_DIR/wt-issue-30/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md" 2>/dev/null || \
188
+ { mkdir -p "$SWARM_DIR/wt-issue-30/.omx/plans" && \
189
+ cp "$PROJECT_ROOT/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md" \
190
+ "$SWARM_DIR/wt-issue-30/.omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md"; }
191
+
192
+ cat > "$PROMPT_DIR/prompt-30.md" << 'PROMPT_EOF'
193
+ triflux 프로젝트의 태스크를 조사해야 합니다.
194
+
195
+ 태스크 파일을 먼저 읽으세요: .omx/plans/prd-issue-30-remote-spawn-terminal-minimize.md
196
+
197
+ 작업 순서:
198
+ 1. 태스크 파일을 읽고 요구사항을 파악하세요
199
+ 2. $plan 스킬로 조사 계획을 수립하세요
200
+ 3. 계획 수립까지만 진행하세요 (구현하지 마세요)
201
+
202
+ 프로젝트 정보:
203
+ - triflux: Claude Code용 멀티모델 CLI 오케스트레이터
204
+ - 언어: JavaScript/ESM (Node.js), 테스트: npm test
205
+ PROMPT_EOF
206
+
207
+ # =============================================================================
208
+ # Step 7: Create psmux sessions + launch Codex
209
+ # =============================================================================
210
+
211
+ echo "=== Step 7: Creating psmux sessions and launching Codex ==="
212
+
213
+ # --- Issue 24: implement | codex53_high ---
214
+ psmux new-session --name "codex-swarm-24" --dir "$SWARM_DIR/wt-issue-24"
215
+ psmux send-keys --target "codex-swarm-24:0" \
216
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-24.md)\"" Enter
217
+
218
+ # --- Issue 25: investigate | gpt54_high ---
219
+ psmux new-session --name "codex-swarm-25" --dir "$SWARM_DIR/wt-issue-25"
220
+ psmux send-keys --target "codex-swarm-25:0" \
221
+ "codex -c 'model=\"gpt-5.4\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-25.md)\"" Enter
222
+
223
+ # --- Issue 26: implement | codex53_high ---
224
+ psmux new-session --name "codex-swarm-26" --dir "$SWARM_DIR/wt-issue-26"
225
+ psmux send-keys --target "codex-swarm-26:0" \
226
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-26.md)\"" Enter
227
+
228
+ # --- Issue 27: implement | codex53_high ---
229
+ psmux new-session --name "codex-swarm-27" --dir "$SWARM_DIR/wt-issue-27"
230
+ psmux send-keys --target "codex-swarm-27:0" \
231
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-27.md)\"" Enter
232
+
233
+ # --- Issue 28: implement | codex53_high ---
234
+ psmux new-session --name "codex-swarm-28" --dir "$SWARM_DIR/wt-issue-28"
235
+ psmux send-keys --target "codex-swarm-28:0" \
236
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-28.md)\"" Enter
237
+
238
+ # --- Issue 29: implement | codex53_high ---
239
+ psmux new-session --name "codex-swarm-29" --dir "$SWARM_DIR/wt-issue-29"
240
+ psmux send-keys --target "codex-swarm-29:0" \
241
+ "codex -c 'model=\"gpt-5.3-codex\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-29.md)\"" Enter
242
+
243
+ # --- Issue 30: investigate | gpt54_high ---
244
+ psmux new-session --name "codex-swarm-30" --dir "$SWARM_DIR/wt-issue-30"
245
+ psmux send-keys --target "codex-swarm-30:0" \
246
+ "codex -c 'model=\"gpt-5.4\"' -c 'model_reasoning_effort=\"high\"' --full-auto \"\$(cat $PROMPT_DIR/prompt-30.md)\"" Enter
247
+
248
+ # =============================================================================
249
+ # Step 8: WT tab attach — all sessions in one window
250
+ # =============================================================================
251
+
252
+ echo "=== Step 8: Attaching all sessions to one WT window ==="
253
+
254
+ # First session: new WT window
255
+ psmux attach --session "codex-swarm-24" --wt-new-window
256
+
257
+ # Remaining sessions: tabs in same window
258
+ psmux attach --session "codex-swarm-25" --wt-tab
259
+ psmux attach --session "codex-swarm-26" --wt-tab
260
+ psmux attach --session "codex-swarm-27" --wt-tab
261
+ psmux attach --session "codex-swarm-28" --wt-tab
262
+ psmux attach --session "codex-swarm-29" --wt-tab
263
+ psmux attach --session "codex-swarm-30" --wt-tab
264
+
265
+ # --- Fallback: wt.exe direct (if psmux attach unavailable) ---
266
+ # wt.exe -w new \
267
+ # --title "issue-24 file-transfer" -d "$SWARM_DIR/wt-issue-24" "$BASH_EXE" -c "psmux attach codex-swarm-24" \; \
268
+ # new-tab --title "issue-25 resize-blank" -d "$SWARM_DIR/wt-issue-25" "$BASH_EXE" -c "psmux attach codex-swarm-25" \; \
269
+ # new-tab --title "issue-26 session-cleanup" -d "$SWARM_DIR/wt-issue-26" "$BASH_EXE" -c "psmux attach codex-swarm-26" \; \
270
+ # new-tab --title "issue-27 hud-dashboard" -d "$SWARM_DIR/wt-issue-27" "$BASH_EXE" -c "psmux attach codex-swarm-27" \; \
271
+ # new-tab --title "issue-28 guard-deadlock" -d "$SWARM_DIR/wt-issue-28" "$BASH_EXE" -c "psmux attach codex-swarm-28" \; \
272
+ # new-tab --title "issue-29 cwd-propagation" -d "$SWARM_DIR/wt-issue-29" "$BASH_EXE" -c "psmux attach codex-swarm-29" \; \
273
+ # new-tab --title "issue-30 terminal-minimize" -d "$SWARM_DIR/wt-issue-30" "$BASH_EXE" -c "psmux attach codex-swarm-30"
274
+
275
+ echo "=== Swarm spawned: 7 sessions in 1 WT window (7 tabs) ==="
@@ -0,0 +1,56 @@
1
+ # Codex Swarm - Profile Routing Table
2
+
3
+ > Generated: 2026-03-30
4
+
5
+ ## Size Assessment (Step 4-1)
6
+
7
+ | # | PRD File | Lines | Affected Files | High-cost Keywords | Dependencies | Size |
8
+ |---|----------|-------|----------------|-------------------|--------------|------|
9
+ | 24 | prd-issue-24 | 73 | 4 (`remote-spawn.mjs`, handoff, scp, staging) | 0 | none | **L** |
10
+ | 25 | prd-issue-25 | 76 | 4 (`psmux`, SSH PTY, Claude TUI, WT) | 0 | none | **L** |
11
+ | 26 | prd-issue-26 | 70 | 3 (`remote-spawn`, `psmux`, hub stale cleanup) | 0 | none | **L** |
12
+ | 27 | prd-issue-27 | 73 | 4 (`wt.exe` attach, dashboard viewer, headless, config) | 0 | none | **L** |
13
+ | 28 | prd-issue-28 | 69 | 4 (`headless-guard.mjs`, `hub/team/psmux.mjs`, codex, gemini) | 0 | none | **L** |
14
+ | 29 | prd-issue-29 | 70 | 5 (`tfx-route.sh`, `parse-args.mjs`, `start-headless.mjs`, `headless.mjs`, `buildHeadlessCommand`) | 0 | none | **L** |
15
+ | 30 | prd-issue-30 | 70 | 3 (`remote-spawn.mjs`, `headless.mjs`, WT) | 0 | none | **L** |
16
+
17
+ ### Size Thresholds (from SKILL.md)
18
+
19
+ | Size | PRD Lines | Affected Files | High-cost Keywords |
20
+ |------|-----------|----------------|-------------------|
21
+ | XL | 80+ | 6+ | 2+ |
22
+ | L | 40-80 | 3-5 | 0-1 |
23
+ | M | 20-40 | 1-2 | 0 |
24
+ | S | <20 | 1 | 0 |
25
+
26
+ All 7 PRDs fall in the **L (standard)** range: 69-76 lines, 3-5 affected files, 0 high-cost keywords.
27
+
28
+ ## Profile Routing (Step 4-2)
29
+
30
+ Per routing table: Type x Size -> Profile
31
+
32
+ | Type \ Size | XL | L | M | S |
33
+ |-------------|-----|-----|-----|-----|
34
+ | **implement** | codex53_xhigh | **codex53_high** | codex53_med | codex53_low |
35
+ | **investigate** | gpt54_high | **gpt54_high** | gpt54_low | mini54_med |
36
+
37
+ ## Final Routing
38
+
39
+ | # | Task | Size | Type | Profile | Codex Flags |
40
+ |---|------|------|------|---------|-------------|
41
+ | 24 | file-transfer | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
42
+ | 25 | resize-blank | L | investigate | `gpt54_high` | `-c 'model="gpt-5.4"' -c 'model_reasoning_effort="high"'` |
43
+ | 26 | session-cleanup | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
44
+ | 27 | hud-dashboard-anchor | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
45
+ | 28 | guard-deadlock | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
46
+ | 29 | cwd-propagation | L | implement | `codex53_high` | `-c 'model="gpt-5.3-codex"' -c 'model_reasoning_effort="high"'` |
47
+ | 30 | terminal-minimize | L | investigate | `gpt54_high` | `-c 'model="gpt-5.4"' -c 'model_reasoning_effort="high"'` |
48
+
49
+ ## Execution Defaults
50
+
51
+ | Setting | Value | Note |
52
+ |---------|-------|------|
53
+ | Mode | `--full-auto` | Sandbox auto-approve |
54
+ | Worktree | enabled | Per-session independent worktree |
55
+ | psmux | enabled | Session management |
56
+ | WT | tabs in single window | User requested: "하나의 WT에 탭으로 넣어줘" |
@@ -0,0 +1,5 @@
1
+ {
2
+ "total_tokens": 37789,
3
+ "duration_ms": 178352,
4
+ "total_duration_seconds": 178.4
5
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "expectations": [
3
+ {"text": "all-7-prds-found", "passed": true, "evidence": "7개 PRD 모두 발견 및 나열"},
4
+ {"text": "correct-type-classification", "passed": true, "evidence": "5 implement + 2 investigate 정확"},
5
+ {"text": "profile-routing-varies", "passed": true, "evidence": "codex53_high/gpt54_high 분리 적용"},
6
+ {"text": "worktree-per-task", "passed": true, "evidence": "7개 worktree 생성 명령 존재"},
7
+ {"text": "psmux-sessions", "passed": true, "evidence": "7개 psmux 세션 생성됨"},
8
+ {"text": "single-wt-window", "passed": true, "evidence": "WT 탭 attach 포함"},
9
+ {"text": "omx-skill-mapping", "passed": true, "evidence": "autopilot/plan 매핑 존재"}
10
+ ]
11
+ }
@@ -0,0 +1,92 @@
1
+ # Codex Swarm Analysis — Full 7-PRD Execution Plan
2
+
3
+ ## Overview
4
+
5
+ - **Source**: 7 PRD files in `.omx/plans/`
6
+ - **Issues**: #24, #25, #26, #27, #28, #29, #30
7
+ - **Classification**: 5 implement, 2 investigate
8
+ - **User directive**: implement -> `$plan` -> `$autopilot`, investigate -> `$plan` only
9
+ - **Execution**: Codex CLI in `--full-auto` mode, one psmux session per PRD, all in one WT window as tabs
10
+
11
+ ## What Was Generated
12
+
13
+ | File | Purpose |
14
+ |------|---------|
15
+ | `classification.md` | PRD-by-PRD type classification with rationale |
16
+ | `routing.md` | Codex profile routing (model, effort level) per PRD |
17
+ | `commands.sh` | Full executable script: worktrees, prompts, psmux, codex, WT tabs |
18
+ | `analysis.md` | This summary |
19
+
20
+ ## Execution Pipeline
21
+
22
+ ```
23
+ Phase 1: git worktree add (7 isolated worktrees)
24
+ Phase 2: Copy PRD files into worktrees
25
+ Phase 3: Generate per-task prompt files with OMX skill instructions
26
+ Phase 4: psmux new-session + codex send-keys (7 sessions)
27
+ Phase 5: psmux attach --wt-tab (1 WT window, 7 tabs)
28
+ ```
29
+
30
+ ## Session Map
31
+
32
+ | Tab | Session | Issue | Type | Model | Skill Flow |
33
+ |-----|---------|-------|------|-------|------------|
34
+ | 1 | codex-swarm-24 | file-transfer | implement | gpt-5.3-codex (high) | $plan -> $autopilot |
35
+ | 2 | codex-swarm-25 | resize-blank | investigate | gpt-5.4 (high) | $plan only |
36
+ | 3 | codex-swarm-26 | session-cleanup | implement | gpt-5.3-codex (high) | $plan -> $autopilot |
37
+ | 4 | codex-swarm-27 | dashboard-anchor | implement | gpt-5.3-codex (high) | $plan -> $autopilot |
38
+ | 5 | codex-swarm-28 | guard-deadlock | implement | gpt-5.3-codex (high) | $plan -> $autopilot |
39
+ | 6 | codex-swarm-29 | cwd-propagation | implement | gpt-5.3-codex (high) | $plan -> $autopilot |
40
+ | 7 | codex-swarm-30 | terminal-minimize | investigate | gpt-5.4 (high) | $plan only |
41
+
42
+ ## Isolation Strategy
43
+
44
+ Each session runs in its own git worktree under `.codex-swarm/wt-issue-{N}` on branch `codex/issue-{N}`. This prevents file conflicts between parallel Codex sessions. PRD files are copied into each worktree so the Codex agent can read them locally.
45
+
46
+ ## Key Design Decisions
47
+
48
+ ### 1. Model Selection
49
+ - **Implement tasks** (5): `gpt-5.3-codex` with high reasoning effort. Codex-optimized model for code generation.
50
+ - **Investigate tasks** (2): `gpt-5.4` with high reasoning effort. General model better suited for analysis and investigation planning.
51
+ - All 7 PRDs sized as L (standard) based on line count (69-76 lines) and affected file counts (2-5 files).
52
+
53
+ ### 2. OMX Skill Routing
54
+ - User explicitly requested: implement -> autopilot, investigate -> plan only.
55
+ - Implement prompts instruct: `$plan` first, then `$autopilot` for autonomous execution.
56
+ - Investigate prompts instruct: `$plan` only, explicitly stating "do not implement".
57
+
58
+ ### 3. WT Layout
59
+ - User requested "one WT with tabs" -- all 7 sessions are tabs in a single WT window.
60
+ - First session uses `--wt-new-window`, remaining 6 use `--wt-tab`.
61
+ - wt.exe fallback is provided as a commented-out alternative.
62
+
63
+ ### 4. No Execution
64
+ - Per instructions, commands are generated but NOT executed.
65
+ - The `commands.sh` script is ready to run when the user decides to launch.
66
+
67
+ ## Monitoring Commands
68
+
69
+ ```bash
70
+ # Check status of all sessions
71
+ for N in 24 25 26 27 28 29 30; do
72
+ echo "=== Issue #$N ==="
73
+ psmux capture-pane --session "codex-swarm-$N" --lines 5
74
+ done
75
+
76
+ # List active sessions
77
+ psmux list-sessions | grep codex-swarm
78
+
79
+ # Kill all swarm sessions (cleanup)
80
+ for N in 24 25 26 27 28 29 30; do
81
+ psmux kill-session --name "codex-swarm-$N"
82
+ done
83
+ git worktree prune
84
+ rm -rf .codex-swarm/
85
+ ```
86
+
87
+ ## Risk Notes
88
+
89
+ - **Issue #25 and #30** (investigate): These have "evidence insufficient" validity verdicts. The investigation plans may conclude that no code fix is needed. Using `$plan` only is appropriate.
90
+ - **Issue #28** (partially valid): The deadlock claim is overstated per validity review, but the UX improvement is still warranted. Autopilot should handle the bounded scope.
91
+ - **Issue #29**: Touches the most files (5 across CLI parse, headless, and backend layers). Most likely to need careful cross-file coordination.
92
+ - **Parallel execution**: 7 simultaneous Codex sessions will consume significant API quota. All are routed to high-effort profiles.
@@ -0,0 +1,71 @@
1
+ # PRD Classification — 7 PRDs in .omx/plans/
2
+
3
+ ## Classification Criteria
4
+
5
+ Based on PRD content analysis against SKILL.md Step 3 rules:
6
+ - **implement**: keywords "구현", "implement", "추가", "변경", "fix", actionable code changes
7
+ - **investigate**: keywords "조사", "investigation", "재현", "reproduce", runtime-only evidence needed
8
+
9
+ User override: implement -> `$plan` -> `$autopilot`, investigate -> `$plan` only.
10
+
11
+ ---
12
+
13
+ ## PRD-by-PRD Classification
14
+
15
+ ### 1. prd-issue-24-remote-spawn-file-transfer.md
16
+ - **Type**: implement
17
+ - **Rationale**: "Add an explicit file-transfer phase before remote Claude launch", "Copy transferred files", "rewrite the prompt". Clear implementation deliverable with bounded code changes in `scripts/remote-spawn.mjs`.
18
+ - **Validity verdict**: mostly valid
19
+ - **OMX skill**: `$plan` -> `$autopilot`
20
+
21
+ ### 2. prd-issue-25-remote-spawn-resize-blank-screen.md
22
+ - **Type**: investigate
23
+ - **Rationale**: "Produce a deterministic reproduction procedure", "investigation checklist", "instrumentation-first workflow". Explicitly framed as investigation, not implementation. Verdict was "evidence insufficient".
24
+ - **Validity verdict**: evidence insufficient
25
+ - **OMX skill**: `$plan` (investigation mode)
26
+
27
+ ### 3. prd-issue-26-remote-spawn-session-cleanup.md
28
+ - **Type**: implement
29
+ - **Rationale**: "Add a normal-exit watcher", "trigger killPsmuxSession(sessionName)". Clear implementation target: add cleanup logic to spawn lifecycle.
30
+ - **Validity verdict**: valid
31
+ - **OMX skill**: `$plan` -> `$autopilot`
32
+
33
+ ### 4. prd-issue-27-hud-dashboard-anchor.md
34
+ - **Type**: implement
35
+ - **Rationale**: "Replace focus-relative split behavior with a dedicated dashboard target strategy", "Remove or narrow mf up focus manipulation". Concrete implementation changes to `hub/team/headless.mjs`.
36
+ - **Validity verdict**: valid
37
+ - **OMX skill**: `$plan` -> `$autopilot`
38
+
39
+ ### 5. prd-issue-28-headless-guard-spawn-deadlock.md
40
+ - **Type**: implement
41
+ - **Rationale**: "Make the denial message action-oriented and specific", "Add regression tests around the guard decision matrix". Implementation + test additions to `scripts/headless-guard.mjs`.
42
+ - **Validity verdict**: partially valid
43
+ - **OMX skill**: `$plan` -> `$autopilot`
44
+
45
+ ### 6. prd-issue-29-headless-cwd-propagation.md
46
+ - **Type**: implement
47
+ - **Rationale**: "Add a cwd or equivalent field to the headless start argument parsing", "Propagate that field through start-headless.mjs". Multi-file implementation across CLI parse, headless, backend layers.
48
+ - **Validity verdict**: valid
49
+ - **OMX skill**: `$plan` -> `$autopilot`
50
+
51
+ ### 7. prd-issue-30-remote-spawn-terminal-minimize.md
52
+ - **Type**: investigate
53
+ - **Rationale**: "Reproduce the symptom reliably", "Build a minimal repro script", "Collect terminal state evidence". Explicitly an investigation PRD. Verdict was "evidence insufficient".
54
+ - **Validity verdict**: evidence insufficient
55
+ - **OMX skill**: `$plan` (investigation mode)
56
+
57
+ ---
58
+
59
+ ## Summary Table
60
+
61
+ | # | PRD file | Type | OMX Skill | Validity |
62
+ |---|----------|------|-----------|----------|
63
+ | 24 | prd-issue-24-remote-spawn-file-transfer | implement | `$plan` -> `$autopilot` | mostly valid |
64
+ | 25 | prd-issue-25-remote-spawn-resize-blank-screen | investigate | `$plan` only | evidence insufficient |
65
+ | 26 | prd-issue-26-remote-spawn-session-cleanup | implement | `$plan` -> `$autopilot` | valid |
66
+ | 27 | prd-issue-27-hud-dashboard-anchor | implement | `$plan` -> `$autopilot` | valid |
67
+ | 28 | prd-issue-28-headless-guard-spawn-deadlock | implement | `$plan` -> `$autopilot` | partially valid |
68
+ | 29 | prd-issue-29-headless-cwd-propagation | implement | `$plan` -> `$autopilot` | valid |
69
+ | 30 | prd-issue-30-remote-spawn-terminal-minimize | investigate | `$plan` only | evidence insufficient |
70
+
71
+ **Totals**: 5 implement, 2 investigate