[Init] Initial commit - NetMesh terminal manager
Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled

This commit is contained in:
2026-09-13 18:24:01 +08:00
commit 3c72efcb7f
3255 changed files with 907009 additions and 0 deletions

View File

@@ -0,0 +1,75 @@
import assert from 'node:assert/strict';
import test from 'node:test';
import { isStreamingMonitorCommand, TerminalMonitorGuard } from './terminalMonitorGuard';
import { applyMonitorStopResult } from './capabilityTools';
test('TerminalMonitorGuard bounds lines and batches', () => {
const guard = new TerminalMonitorGuard();
const result = guard.process('chat:job', `${'x'.repeat(800)}\n${'line\n'.repeat(1_000)}`);
assert.equal(result.action, 'deliver');
assert.ok((result.content?.length ?? Infinity) <= 3_000);
assert.ok((result.content?.split('\n')[0].length ?? Infinity) <= 500);
});
test('TerminalMonitorGuard suppresses bursts and stops a sustained overload', () => {
let now = 0;
const guard = new TerminalMonitorGuard({ now: () => now });
for (let index = 0; index < 10; index += 1) {
assert.equal(guard.process('chat:job', `line ${index}`).action, 'deliver');
}
assert.equal(guard.process('chat:job', 'burst').action, 'suppress');
let action = guard.process('chat:job', 'still flooding').action;
for (now = 1_000; now <= 31_000 && action !== 'stop'; now += 1_000) {
action = guard.process('chat:job', 'still flooding').action;
}
assert.equal(action, 'stop');
});
test('monitor stop result does not claim success when the backend stop failed', () => {
const failed = applyMonitorStopResult(
{ jobId: 'job-1', status: 'running' },
{ ok: false, error: 'lost worker' },
12,
);
assert.equal(failed.status, 'running');
assert.match(String(failed.output), /stop failed/);
assert.match(String(failed.output), /may still be running/);
const accepted = applyMonitorStopResult(
{ jobId: 'job-1', status: 'running' },
{ ok: true },
12,
);
assert.equal(accepted.status, 'stopping');
assert.match(String(accepted.output), /stop requested/);
});
test('isStreamingMonitorCommand requires an actual follow option', () => {
assert.equal(isStreamingMonitorCommand('tail app-file.log'), false);
assert.equal(isStreamingMonitorCommand('tail -n 10 foo.log'), false);
assert.equal(isStreamingMonitorCommand('journalctl --since 5m foo'), false);
assert.equal(isStreamingMonitorCommand('tail -f app.log'), true);
assert.equal(isStreamingMonitorCommand('tail -n0F app.log'), true);
assert.equal(isStreamingMonitorCommand('journalctl --follow -u nginx'), true);
assert.equal(isStreamingMonitorCommand('docker logs -f api'), true);
assert.equal(isStreamingMonitorCommand('kubectl logs --follow pod/api'), true);
assert.equal(isStreamingMonitorCommand('cd /srv && watch npm test'), true);
});
test('isStreamingMonitorCommand recognizes common wrappers and compose logs', () => {
assert.equal(isStreamingMonitorCommand('sudo journalctl -f -u nginx'), true);
assert.equal(isStreamingMonitorCommand('sudo -u root tail -f /var/log/syslog'), true);
assert.equal(isStreamingMonitorCommand('env LANG=C tail --follow app.log'), true);
assert.equal(isStreamingMonitorCommand('stdbuf -oL kubectl logs -f pod/api'), true);
assert.equal(isStreamingMonitorCommand('timeout 60s tail -f app.log'), true);
assert.equal(isStreamingMonitorCommand('docker compose logs -f api'), true);
assert.equal(isStreamingMonitorCommand('sudo -H journalctl -f -u nginx'), true);
assert.equal(isStreamingMonitorCommand('kubectl -n production logs -f pod/api'), true);
assert.equal(isStreamingMonitorCommand('kubectl --context prod logs --follow pod/api'), true);
assert.equal(isStreamingMonitorCommand('docker --context prod logs -f api'), true);
assert.equal(isStreamingMonitorCommand('docker compose -f compose.prod.yml logs -f api'), true);
assert.equal(isStreamingMonitorCommand('docker compose -p demo logs -f api'), true);
assert.equal(isStreamingMonitorCommand('sudo tail -n 10 app.log'), false);
assert.equal(isStreamingMonitorCommand('timeout 60s journalctl --since 5m'), false);
});