@triflux/remote 10.0.1 → 10.25.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/hub/pipe.mjs +239 -121
- package/hub/public/dashboard.html +68 -7
- package/hub/server.mjs +2181 -701
- package/hub/store-adapter.mjs +101 -37
- package/hub/store.mjs +356 -153
- package/hub/team/agent-map.json +26 -7
- package/hub/team/ansi.mjs +245 -146
- package/hub/team/backend.mjs +84 -17
- package/hub/team/build-worker-prompt.mjs +42 -0
- package/hub/team/check-mcp-hub.mjs +49 -0
- package/hub/team/claude-daemon-control.mjs +219 -0
- package/hub/team/claude-native-bridge.mjs +784 -0
- package/hub/team/claude-session-projection.mjs +65 -0
- package/hub/team/cli/commands/attach.mjs +57 -37
- package/hub/team/cli/commands/control.mjs +29 -8
- package/hub/team/cli/commands/debug.mjs +95 -74
- package/hub/team/cli/commands/focus.mjs +80 -53
- package/hub/team/cli/commands/interrupt.mjs +18 -6
- package/hub/team/cli/commands/kill.mjs +16 -5
- package/hub/team/cli/commands/list.mjs +31 -24
- package/hub/team/cli/commands/send.mjs +19 -6
- package/hub/team/cli/commands/start/index.mjs +154 -33
- package/hub/team/cli/commands/start/parse-args.mjs +89 -12
- package/hub/team/cli/commands/start/start-headless.mjs +127 -37
- package/hub/team/cli/commands/start/start-in-process.mjs +50 -40
- package/hub/team/cli/commands/start/start-mux.mjs +122 -73
- package/hub/team/cli/commands/start/start-wt.mjs +86 -69
- package/hub/team/cli/commands/status.mjs +43 -14
- package/hub/team/cli/commands/stop.mjs +11 -4
- package/hub/team/cli/commands/task.mjs +8 -3
- package/hub/team/cli/commands/tasks.mjs +13 -13
- package/hub/team/cli/index.mjs +2 -2
- package/hub/team/cli/manifest.mjs +38 -8
- package/hub/team/cli/render.mjs +52 -30
- package/hub/team/cli/services/attach-fallback.mjs +74 -54
- package/hub/team/cli/services/hub-client.mjs +45 -17
- package/hub/team/cli/services/member-selector.mjs +37 -30
- package/hub/team/cli/services/native-control.mjs +144 -116
- package/hub/team/cli/services/runtime-mode.mjs +55 -1
- package/hub/team/cli/services/state-store.mjs +66 -9
- package/hub/team/cli/services/task-model.mjs +40 -30
- package/hub/team/codex-review.mjs +521 -0
- package/hub/team/conductor-mesh-bridge.mjs +25 -24
- package/hub/team/conductor-registry.mjs +121 -0
- package/hub/team/conductor.mjs +1379 -671
- package/hub/team/consensus-meta.mjs +176 -0
- package/hub/team/dashboard-anchor.mjs +4 -5
- package/hub/team/dashboard-layout.mjs +3 -1
- package/hub/team/dashboard-open.mjs +21 -119
- package/hub/team/dashboard.mjs +76 -28
- package/hub/team/event-log.mjs +18 -10
- package/hub/team/execution-mode.mjs +241 -0
- package/hub/team/extract-completion-payload.mjs +110 -0
- package/hub/team/git-preflight.mjs +286 -0
- package/hub/team/handoff.mjs +49 -18
- package/hub/team/headless-bridge-session.mjs +17 -0
- package/hub/team/headless.mjs +2065 -1156
- package/hub/team/health-probe.mjs +232 -69
- package/hub/team/launcher-template.mjs +23 -13
- package/hub/team/lead-control.mjs +91 -4
- package/hub/team/mcp-selector.mjs +145 -0
- package/hub/team/native-supervisor.mjs +90 -26
- package/hub/team/native.mjs +74 -35
- package/hub/team/nativeProxy.mjs +184 -113
- package/hub/team/notify.mjs +147 -78
- package/hub/team/orchestrator.mjs +173 -161
- package/hub/team/pane.mjs +43 -15
- package/hub/team/process-cleanup.mjs +69 -25
- package/hub/team/psmux.mjs +1067 -264
- package/hub/team/recovery-store.mjs +149 -0
- package/hub/team/remote-probe.mjs +69 -53
- package/hub/team/remote-session.mjs +131 -59
- package/hub/team/remote-watcher.mjs +62 -34
- package/hub/team/retry-state-machine.mjs +267 -0
- package/hub/team/routing.mjs +51 -25
- package/hub/team/runtime-strategy.mjs +200 -0
- package/hub/team/schemas/worker-completion.json +39 -0
- package/hub/team/sentinel-capture.mjs +127 -0
- package/hub/team/session-sync.mjs +153 -6
- package/hub/team/session.mjs +605 -611
- package/hub/team/shared.mjs +13 -13
- package/hub/team/staleState.mjs +72 -30
- package/hub/team/swarm-cli.mjs +390 -0
- package/hub/team/swarm-hypervisor.mjs +1526 -198
- package/hub/team/swarm-intent.mjs +216 -0
- package/hub/team/swarm-locks.mjs +140 -25
- package/hub/team/swarm-planner.mjs +121 -21
- package/hub/team/swarm-preflight.mjs +317 -0
- package/hub/team/swarm-reconciler.mjs +128 -23
- package/hub/team/synapse-cli.mjs +458 -0
- package/hub/team/synapse-http.mjs +60 -0
- package/hub/team/synapse-registry.mjs +329 -0
- package/hub/team/terminal-opener.mjs +216 -0
- package/hub/team/tui-core.mjs +288 -0
- package/hub/team/tui-lite.mjs +234 -146
- package/hub/team/tui-remote-adapter.mjs +21 -37
- package/hub/team/tui-synapse.mjs +223 -0
- package/hub/team/tui-viewer.mjs +104 -45
- package/hub/team/tui-widgets.mjs +262 -0
- package/hub/team/tui.mjs +936 -449
- package/hub/team/worker-completion-validator.mjs +84 -0
- package/hub/team/worker-sandbox.mjs +93 -0
- package/hub/team/worker-signal.mjs +263 -0
- package/hub/team/worker-signal.types.d.ts +52 -0
- package/hub/team/worktree-lifecycle.mjs +518 -64
- package/hub/team/wt-manager.mjs +297 -26
- package/hub/tools.mjs +474 -252
- package/hub/tray.mjs +411 -368
- package/hub/workers/claude-worker.mjs +162 -118
- package/hub/workers/codex-app-server-worker.mjs +1015 -0
- package/hub/workers/codex-mcp.mjs +724 -507
- package/hub/workers/delegator-mcp.mjs +663 -337
- package/hub/workers/factory.mjs +100 -21
- package/hub/workers/gemini-worker.mjs +179 -86
- package/hub/workers/interface.mjs +23 -2
- package/hub/workers/lib/jsonrpc-stdio.mjs +463 -0
- package/hub/workers/worker-utils.mjs +22 -16
- package/package.json +4 -3
- package/scripts/lib/agent-json.mjs +27 -0
- package/scripts/lib/async.mjs +174 -0
- package/scripts/lib/claudemd-scanner.mjs +223 -0
- package/scripts/lib/cli-agy.mjs +62 -0
- package/scripts/lib/cli-claude.mjs +78 -0
- package/scripts/lib/cli-codex.mjs +199 -0
- package/scripts/lib/cli-gemini.mjs +67 -0
- package/scripts/lib/codex-recovery.sh +50 -0
- package/scripts/lib/context.mjs +67 -0
- package/scripts/lib/cross-review-utils.mjs +59 -0
- package/scripts/lib/doctor-env-checks.mjs +121 -0
- package/scripts/lib/dynamic-route-cli.mjs +107 -0
- package/scripts/lib/env-probe.mjs +269 -0
- package/scripts/lib/env.mjs +14 -0
- package/scripts/lib/gemini-profiles.mjs +119 -0
- package/scripts/lib/handoff.mjs +187 -0
- package/scripts/lib/hook-utils.mjs +16 -0
- package/scripts/lib/hub.mjs +48 -0
- package/scripts/lib/keyword-rules.mjs +195 -0
- package/scripts/lib/logger.mjs +105 -0
- package/scripts/lib/mcp-filter.mjs +883 -0
- package/scripts/lib/mcp-gateway-servers.mjs +70 -0
- package/scripts/lib/mcp-guard-engine.mjs +2120 -0
- package/scripts/lib/mcp-health.mjs +773 -0
- package/scripts/lib/mcp-manifest.mjs +89 -0
- package/scripts/lib/mcp-server-catalog.mjs +355 -0
- package/scripts/lib/pid.mjs +63 -0
- package/scripts/lib/process-utils.mjs +26 -0
- package/scripts/lib/psmux-info.mjs +179 -0
- package/scripts/lib/quota.mjs +47 -0
- package/scripts/lib/remote-spawn-transfer.mjs +226 -0
- package/scripts/lib/skill-state.mjs +220 -0
- package/scripts/lib/skill-template.mjs +375 -0
- package/scripts/lib/team.mjs +75 -0
- package/scripts/lib/timeout.mjs +66 -0
- package/scripts/lib/tmp.mjs +26 -0
- package/scripts/lib/toml.mjs +113 -0
|
@@ -42,11 +42,22 @@ body{background:#0d1117;color:#c9d1d9;font-family:system-ui,-apple-system,sans-s
|
|
|
42
42
|
.token-item .calls{font-size:.78rem;color:#8b949e;margin-top:2px}
|
|
43
43
|
|
|
44
44
|
.chart-wrap{position:relative;width:100%;height:160px}
|
|
45
|
-
.chart-wrap canvas{width:100
|
|
45
|
+
.chart-wrap canvas{width:100%;height:100%}
|
|
46
46
|
.chart-legend{display:flex;gap:14px;margin-top:8px;font-size:.78rem;color:#8b949e}
|
|
47
47
|
.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:4px;vertical-align:middle}
|
|
48
48
|
|
|
49
49
|
.placeholder{text-align:center;padding:24px;color:#8b949e;font-size:.85rem}
|
|
50
|
+
.btn{background:#21262d;border:1px solid #30363d;color:#c9d1d9;padding:4px 12px;border-radius:6px;font-size:.78rem;cursor:pointer;transition:background .2s}
|
|
51
|
+
.btn:hover{background:#30363d}
|
|
52
|
+
.btn:active{background:#3b414a}
|
|
53
|
+
.btn.ok{border-color:#3fb950;color:#3fb950}
|
|
54
|
+
.guide{display:none;max-width:1200px;margin:0 auto 16px;background:#161b22;border:1px solid #30363d;border-radius:8px;padding:16px;font-size:.82rem;line-height:1.7;color:#8b949e}
|
|
55
|
+
.guide.open{display:block}
|
|
56
|
+
.guide h3{color:#c9d1d9;font-size:.9rem;margin:12px 0 6px}
|
|
57
|
+
.guide h3:first-child{margin-top:0}
|
|
58
|
+
.guide code{background:#0d1117;padding:1px 5px;border-radius:3px;font-size:.78rem;color:#d19a66}
|
|
59
|
+
.guide ul{padding-left:18px;margin:4px 0}
|
|
60
|
+
.actions{display:flex;gap:8px;align-items:center}
|
|
50
61
|
</style>
|
|
51
62
|
</head>
|
|
52
63
|
<body>
|
|
@@ -57,9 +68,35 @@ body{background:#0d1117;color:#c9d1d9;font-family:system-ui,-apple-system,sans-s
|
|
|
57
68
|
<span class="status-dot" id="statusDot"></span>
|
|
58
69
|
<span id="statusText">연결 중...</span>
|
|
59
70
|
<span id="lastUpdate" class="sub"></span>
|
|
71
|
+
<div class="actions">
|
|
72
|
+
<button class="btn" id="guideBtn" title="도움말">?</button>
|
|
73
|
+
<button class="btn" id="reloadBtn" title="계정 브로커 리로드">Reload</button>
|
|
74
|
+
<a href="/broker/dashboard" target="_blank" class="btn" style="text-decoration:none">Broker</a>
|
|
75
|
+
</div>
|
|
60
76
|
</div>
|
|
61
77
|
</div>
|
|
62
78
|
|
|
79
|
+
<div class="guide" id="guidePanel">
|
|
80
|
+
<h3>AIMD 동시 워커</h3>
|
|
81
|
+
<p>AIMD(Additive Increase / Multiplicative Decrease) 알고리즘으로 최적 동시 워커 수를 자동 조절합니다. 게이지가 <code>10/10</code>에 가까우면 시스템이 포화 상태입니다.</p>
|
|
82
|
+
<h3>CLI 쿼터 사용률</h3>
|
|
83
|
+
<ul>
|
|
84
|
+
<li><strong>Claude</strong> — 5시간/주간 사용량. 80% 이상이면 빨간색 경고.</li>
|
|
85
|
+
<li><strong>Codex</strong> — Primary/Secondary 버킷별 사용률. 리셋 시간이 표시됩니다.</li>
|
|
86
|
+
<li><strong>Gemini</strong> — 남은 비율 기반 사용률. RPM/RPD 제한 포함.</li>
|
|
87
|
+
</ul>
|
|
88
|
+
<h3>호출 이력 타임라인</h3>
|
|
89
|
+
<p>최근 CLI 호출의 성공/실패/타임아웃을 시간순으로 표시합니다. <span style="color:#3fb950">녹색</span>=성공, <span style="color:#f85149">빨강</span>=실패, <span style="color:#d29922">노랑</span>=타임아웃.</p>
|
|
90
|
+
<h3>토큰 누적 현황</h3>
|
|
91
|
+
<p>CLI별 누적 토큰 사용량과 호출 횟수입니다. 세션 시작 이후의 합계입니다.</p>
|
|
92
|
+
<h3>조작</h3>
|
|
93
|
+
<ul>
|
|
94
|
+
<li><strong>Reload</strong> — <code>POST /broker/reload</code> 호출. accounts.json을 핫리로드합니다.</li>
|
|
95
|
+
<li><strong>Broker</strong> — 계정 브로커 대시보드(별도 페이지)를 엽니다.</li>
|
|
96
|
+
<li>데이터는 <strong>5초</strong>마다 자동 갱신됩니다.</li>
|
|
97
|
+
</ul>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
63
100
|
<div class="grid">
|
|
64
101
|
<!-- AIMD 게이지 -->
|
|
65
102
|
<div class="card">
|
|
@@ -152,7 +189,7 @@ body{background:#0d1117;color:#c9d1d9;font-family:system-ui,-apple-system,sans-s
|
|
|
152
189
|
function remain(rt) {
|
|
153
190
|
if (!rt) return '';
|
|
154
191
|
var ts = typeof rt === 'number' && rt < 1e10 ? rt * 1000 : new Date(rt).getTime();
|
|
155
|
-
if (!isFinite(ts)) return '';
|
|
192
|
+
if (!Number.isFinite(ts)) return '';
|
|
156
193
|
var ms = ts - Date.now();
|
|
157
194
|
if (ms <= 0) return '만료됨';
|
|
158
195
|
var h = Math.floor(ms / 3600000);
|
|
@@ -199,7 +236,7 @@ body{background:#0d1117;color:#c9d1d9;font-family:system-ui,-apple-system,sans-s
|
|
|
199
236
|
var s = '';
|
|
200
237
|
|
|
201
238
|
// Claude
|
|
202
|
-
var cl = d.claude
|
|
239
|
+
var cl = d.claude?.data;
|
|
203
240
|
if (cl) {
|
|
204
241
|
s += quotaBlock('Claude (c)', '#d19a66', [
|
|
205
242
|
['5시간', cl.fiveHourPercent || 0],
|
|
@@ -208,16 +245,16 @@ body{background:#0d1117;color:#c9d1d9;font-family:system-ui,-apple-system,sans-s
|
|
|
208
245
|
}
|
|
209
246
|
|
|
210
247
|
// Codex
|
|
211
|
-
var cx2 = d.codex
|
|
248
|
+
var cx2 = d.codex?.buckets?.codex;
|
|
212
249
|
if (cx2) {
|
|
213
250
|
s += quotaBlock('Codex (x)', '#ffffff', [
|
|
214
251
|
['Primary', cx2.primary ? cx2.primary.used_percent || 0 : 0],
|
|
215
252
|
['Secondary', cx2.secondary ? cx2.secondary.used_percent || 0 : 0]
|
|
216
|
-
], cx2.primary
|
|
253
|
+
], cx2.primary?.resets_at);
|
|
217
254
|
}
|
|
218
255
|
|
|
219
256
|
// Gemini
|
|
220
|
-
var gm = d.gemini
|
|
257
|
+
var gm = d.gemini?.buckets;
|
|
221
258
|
if (gm && gm.length > 0) {
|
|
222
259
|
var frac = gm[0].remainingFraction;
|
|
223
260
|
s += quotaBlock('Gemini (g)', '#61afef', [
|
|
@@ -330,7 +367,7 @@ body{background:#0d1117;color:#c9d1d9;font-family:system-ui,-apple-system,sans-s
|
|
|
330
367
|
gauge(data.aimd ? data.aimd.batchSize : 0);
|
|
331
368
|
renderQuota(data);
|
|
332
369
|
|
|
333
|
-
cachedEvents = (data.aimd
|
|
370
|
+
cachedEvents = (data.aimd?.events) || [];
|
|
334
371
|
drawEvents(cachedEvents);
|
|
335
372
|
|
|
336
373
|
renderTokens(data.accumulator);
|
|
@@ -347,6 +384,30 @@ body{background:#0d1117;color:#c9d1d9;font-family:system-ui,-apple-system,sans-s
|
|
|
347
384
|
rTimer = setTimeout(function() { drawEvents(cachedEvents); }, 150);
|
|
348
385
|
});
|
|
349
386
|
|
|
387
|
+
/* ── 가이드 토글 ── */
|
|
388
|
+
document.getElementById('guideBtn').onclick = function() {
|
|
389
|
+
var p = document.getElementById('guidePanel');
|
|
390
|
+
p.classList.toggle('open');
|
|
391
|
+
this.classList.toggle('ok');
|
|
392
|
+
};
|
|
393
|
+
|
|
394
|
+
/* ── 브로커 리로드 ── */
|
|
395
|
+
document.getElementById('reloadBtn').onclick = function() {
|
|
396
|
+
var btn = this;
|
|
397
|
+
btn.textContent = '...';
|
|
398
|
+
fetch('/broker/reload', { method: 'POST' })
|
|
399
|
+
.then(function(r) { return r.json(); })
|
|
400
|
+
.then(function(d) {
|
|
401
|
+
btn.textContent = d.ok ? 'OK (' + (d.accounts || 0) + ')' : 'Fail';
|
|
402
|
+
btn.classList.toggle('ok', d.ok);
|
|
403
|
+
setTimeout(function() { btn.textContent = 'Reload'; btn.classList.remove('ok'); }, 3000);
|
|
404
|
+
})
|
|
405
|
+
.catch(function() {
|
|
406
|
+
btn.textContent = 'Error';
|
|
407
|
+
setTimeout(function() { btn.textContent = 'Reload'; }, 3000);
|
|
408
|
+
});
|
|
409
|
+
};
|
|
410
|
+
|
|
350
411
|
poll();
|
|
351
412
|
setInterval(poll, POLL);
|
|
352
413
|
})();
|