triflux 10.3.0 → 10.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +22 -22
  3. package/LICENSE +21 -21
  4. package/hooks/hook-registry.json +256 -256
  5. package/hub/adaptive-inject.mjs +1 -1
  6. package/hub/assign-callbacks.mjs +120 -120
  7. package/hub/delegator/index.mjs +14 -14
  8. package/hub/delegator/tool-definitions.mjs +35 -35
  9. package/hub/hitl.mjs +143 -143
  10. package/hub/router.mjs +791 -791
  11. package/hub/session-fingerprint.mjs +1 -1
  12. package/hub/team/ansi.mjs +44 -28
  13. package/hub/team/cli/commands/attach.mjs +37 -37
  14. package/hub/team/cli/commands/debug.mjs +74 -74
  15. package/hub/team/cli/commands/focus.mjs +53 -53
  16. package/hub/team/cli/commands/list.mjs +24 -24
  17. package/hub/team/cli/commands/start/start-in-process.mjs +40 -40
  18. package/hub/team/cli/commands/start/start-mux.mjs +73 -73
  19. package/hub/team/cli/commands/start/start-wt.mjs +69 -69
  20. package/hub/team/cli/commands/tasks.mjs +13 -13
  21. package/hub/team/cli/render.mjs +30 -30
  22. package/hub/team/cli/services/attach-fallback.mjs +54 -54
  23. package/hub/team/cli/services/member-selector.mjs +30 -30
  24. package/hub/team/cli/services/native-control.mjs +116 -116
  25. package/hub/team/cli/services/task-model.mjs +30 -30
  26. package/hub/team/conductor.mjs +2 -2
  27. package/hub/team/notify.mjs +1 -1
  28. package/hub/team/orchestrator.mjs +161 -161
  29. package/hub/team/session.mjs +611 -611
  30. package/hub/team/shared.mjs +13 -13
  31. package/hub/team/tui-lite.mjs +4 -4
  32. package/hub/team/tui.mjs +16 -12
  33. package/hub/tray.mjs +368 -368
  34. package/hub/workers/codex-mcp.mjs +507 -507
  35. package/hub/workers/factory.mjs +21 -21
  36. package/hud/constants.mjs +8 -2
  37. package/hud/providers/codex.mjs +11 -0
  38. package/hud/providers/gemini.mjs +21 -0
  39. package/package.json +1 -1
  40. package/scripts/claudemd-sync.mjs +11 -13
  41. package/scripts/completions/tfx.bash +47 -47
  42. package/scripts/completions/tfx.fish +44 -44
  43. package/scripts/completions/tfx.zsh +83 -83
  44. package/scripts/hub-ensure.mjs +120 -120
  45. package/scripts/keyword-detector.mjs +272 -272
  46. package/scripts/keyword-rules-expander.mjs +521 -521
  47. package/scripts/lib/mcp-server-catalog.mjs +118 -118
  48. package/scripts/notion-read.mjs +553 -553
  49. package/scripts/setup.mjs +23 -0
  50. package/scripts/test-tfx-route-no-claude-native.mjs +57 -57
  51. package/scripts/tfx-batch-stats.mjs +96 -96
  52. package/skills/.omc/state/agent-replay-8f0e10a9-9693-4410-96f5-a6b07e8ed995.jsonl +1 -0
  53. package/skills/.omc/state/idle-notif-cooldown.json +3 -0
  54. package/skills/.omc/state/last-tool-error.json +7 -0
  55. package/skills/.omc/state/subagent-tracking.json +7 -0
  56. package/skills/tfx-remote-spawn/references/hosts.json +16 -0
@@ -1,13 +1,13 @@
1
- // hub/team/shared.mjs — 팀 모듈 공유 유틸리티
2
- // cli.mjs, dashboard.mjs 등에서 중복되던 상수/함수를 통합
3
-
4
- // ── ANSI 색상 상수 ──
5
- export const AMBER = "\x1b[38;5;214m";
6
- export const GREEN = "\x1b[38;5;82m";
7
- export const RED = "\x1b[38;5;196m";
8
- export const GRAY = "\x1b[38;5;245m";
9
- export const DIM = "\x1b[2m";
10
- export const BOLD = "\x1b[1m";
11
- export const RESET = "\x1b[0m";
12
- export const WHITE = "\x1b[97m";
13
- export const YELLOW = "\x1b[33m";
1
+ // hub/team/shared.mjs — 팀 모듈 공유 유틸리티
2
+ // cli.mjs, dashboard.mjs 등에서 중복되던 상수/함수를 통합
3
+
4
+ // ── ANSI 색상 상수 ──
5
+ export const AMBER = "\x1b[38;5;214m";
6
+ export const GREEN = "\x1b[38;5;82m";
7
+ export const RED = "\x1b[38;5;196m";
8
+ export const GRAY = "\x1b[38;5;245m";
9
+ export const DIM = "\x1b[2m";
10
+ export const BOLD = "\x1b[1m";
11
+ export const RESET = "\x1b[0m";
12
+ export const WHITE = "\x1b[97m";
13
+ export const YELLOW = "\x1b[33m";
@@ -265,12 +265,12 @@ export function createLiteDashboard(opts = {}) {
265
265
  return;
266
266
  }
267
267
  if (key === "\r" || key === "\n") {
268
- if (typeof onOpenSelectedWorker !== "function") {
269
- // 콜백 없으면 탭 순환 (기본 동작)
268
+ if (typeof onOpenSelectedWorker === "function" && selectedWorker && workers.has(selectedWorker)) {
269
+ triggerOpenSelected();
270
+ } else {
271
+ // 콜백 없거나 선택 워커 없으면 탭 순환
270
272
  const tabs = ["log", "detail", "files"];
271
273
  focusTab = tabs[(tabs.indexOf(focusTab) + 1) % tabs.length];
272
- } else {
273
- triggerOpenSelected();
274
274
  }
275
275
  render();
276
276
  return;
package/hub/team/tui.mjs CHANGED
@@ -1148,15 +1148,19 @@ export function createLogDashboard(opts = {}) {
1148
1148
  }
1149
1149
 
1150
1150
  // 하단 상태바
1151
- const statusBar = truncate(
1152
- color(` 세션 종료됨 아무 키나 누르면 닫힘`, MOCHA.subtext),
1153
- totalCols,
1154
- );
1151
+ const allDone = names.every((n) => {
1152
+ const s = runtimeStatus(workers.get(n));
1153
+ return s === "ok" || s === "completed" || s === "failed";
1154
+ });
1155
+ const statusText = allDone
1156
+ ? " Enter: attach • q: 종료"
1157
+ : " Enter: attach • Tab: 포커스 • j/k: 이동 • h: 도움말";
1158
+ const statusBar = truncate(color(statusText, MOCHA.subtext), totalCols);
1155
1159
 
1156
1160
  return [...tier1, ...composedRows, statusBar];
1157
1161
  }
1158
1162
 
1159
- // ── altScreen diff render ─────────────────────────────────────────────
1163
+ // ── altScreen diff render (batched single write → 깜빡임 방지) ───────
1160
1164
  function renderAltScreen() {
1161
1165
  const newRows = buildRows();
1162
1166
  rowBuf.set(newRows);
@@ -1165,16 +1169,16 @@ export function createLogDashboard(opts = {}) {
1165
1169
 
1166
1170
  if (dirty.length === 0 && newRows.length === prevLen) return;
1167
1171
 
1168
- const toErase = prevLen > newRows.length
1169
- ? Array.from({ length: prevLen - newRows.length }, (_, i) => newRows.length + i)
1170
- : [];
1171
-
1172
+ let buf = "";
1172
1173
  for (const i of dirty) {
1173
- write(moveTo(i + 1, 1) + clearLine + (newRows[i] || ""));
1174
+ buf += moveTo(i + 1, 1) + clearLine + (newRows[i] || "");
1174
1175
  }
1175
- for (const i of toErase) {
1176
- write(moveTo(i + 1, 1) + clearLine);
1176
+ if (prevLen > newRows.length) {
1177
+ for (let i = newRows.length; i < prevLen; i++) {
1178
+ buf += moveTo(i + 1, 1) + clearLine;
1179
+ }
1177
1180
  }
1181
+ if (buf) write(buf);
1178
1182
 
1179
1183
  rowBuf.commit();
1180
1184
  }