@redplanethq/corebrain 2.8.24 → 2.8.26
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/dist/commands/coding/read.d.ts.map +1 -1
- package/dist/commands/coding/read.js +7 -1
- package/dist/commands/coding/read.js.map +1 -1
- package/dist/config/folders.d.ts.map +1 -1
- package/dist/config/folders.js +31 -1
- package/dist/config/folders.js.map +1 -1
- package/dist/server/api/coding/coding_spawn.d.ts.map +1 -1
- package/dist/server/api/coding/coding_spawn.js +8 -0
- package/dist/server/api/coding/coding_spawn.js.map +1 -1
- package/dist/server/api/manifest-builder.d.ts.map +1 -1
- package/dist/server/api/manifest-builder.js +1 -0
- package/dist/server/api/manifest-builder.js.map +1 -1
- package/dist/server/coding-session-watcher.d.ts +41 -0
- package/dist/server/coding-session-watcher.d.ts.map +1 -0
- package/dist/server/coding-session-watcher.js +311 -0
- package/dist/server/coding-session-watcher.js.map +1 -0
- package/dist/server/tools/coding-tools.d.ts.map +1 -1
- package/dist/server/tools/coding-tools.js +119 -16
- package/dist/server/tools/coding-tools.js.map +1 -1
- package/dist/server/tools/exec-tools.d.ts.map +1 -1
- package/dist/server/tools/exec-tools.js +209 -14
- package/dist/server/tools/exec-tools.js.map +1 -1
- package/dist/types/config.d.ts +2 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/agent-templates.d.ts.map +1 -1
- package/dist/utils/agent-templates.js +21 -0
- package/dist/utils/agent-templates.js.map +1 -1
- package/dist/utils/coding-agents/claude-code.d.ts +1 -0
- package/dist/utils/coding-agents/claude-code.d.ts.map +1 -1
- package/dist/utils/coding-agents/claude-code.js +6 -0
- package/dist/utils/coding-agents/claude-code.js.map +1 -1
- package/dist/utils/coding-agents/codex.d.ts +1 -0
- package/dist/utils/coding-agents/codex.d.ts.map +1 -1
- package/dist/utils/coding-agents/codex.js +5 -0
- package/dist/utils/coding-agents/codex.js.map +1 -1
- package/dist/utils/coding-agents/index.d.ts +3 -2
- package/dist/utils/coding-agents/index.d.ts.map +1 -1
- package/dist/utils/coding-agents/index.js +28 -12
- package/dist/utils/coding-agents/index.js.map +1 -1
- package/dist/utils/coding-agents/opencode.d.ts +20 -0
- package/dist/utils/coding-agents/opencode.d.ts.map +1 -0
- package/dist/utils/coding-agents/opencode.js +375 -0
- package/dist/utils/coding-agents/opencode.js.map +1 -0
- package/dist/utils/coding-agents/types.d.ts +6 -0
- package/dist/utils/coding-agents/types.d.ts.map +1 -1
- package/dist/utils/coding-agents/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,8 +10,9 @@ import { folderScopeError } from './scope-error.js';
|
|
|
10
10
|
import { getSession, upsertSession, deleteSession, listRunningSessions, } from '../../utils/coding-sessions.js';
|
|
11
11
|
import { getAgentConfig, buildStartArgs, buildResumeArgs, startAgentProcess, isProcessRunning, stopProcess, } from '../../utils/coding-runner.js';
|
|
12
12
|
import { gatewayLog } from '../../server/gateway-log.js';
|
|
13
|
-
import { readAgentSessionTurns, agentSessionUpdatedSince, getAgentReader, scanAllSessions, searchSessions, findLatestCodexSession, } from '../../utils/coding-agents/index.js';
|
|
13
|
+
import { readAgentSessionTurns, agentSessionUpdatedSince, getAgentReader, scanAllSessions, searchSessions, findLatestCodexSession, findLatestOpenCodeSession, } from '../../utils/coding-agents/index.js';
|
|
14
14
|
import { ptyManager } from '../../server/pty/manager.js';
|
|
15
|
+
import { startCodingSessionWatcher, stopCodingSessionWatcher, } from '../../server/coding-session-watcher.js';
|
|
15
16
|
// ============ Schemas ============
|
|
16
17
|
const AskSchema = zod.object({
|
|
17
18
|
agent: zod.string().optional(),
|
|
@@ -171,12 +172,12 @@ export const codingTools = [
|
|
|
171
172
|
},
|
|
172
173
|
{
|
|
173
174
|
name: 'coding_read_session',
|
|
174
|
-
description: 'Read conversation turns (user/assistant messages) from a coding session. Returns structured turns
|
|
175
|
+
description: 'Read conversation turns (user/assistant messages) from a coding session. Returns structured turns and a status describing what the agent is doing. The `status` field is one of: "initializing" (agent booting, transcript not yet written), "working" (process alive AND the assistant is still responding to the most recent user turn — keep polling), "idle" (process alive AND the last turn is from the assistant, so the conversation is paused until the next user message), "ended" (process has exited with a transcript), "failed" (process exited without any transcript). The `statusMessage` field is a human-readable explanation of the same state intended for meta-agents.',
|
|
175
176
|
inputSchema: jsonSchemas.coding_read_session,
|
|
176
177
|
},
|
|
177
178
|
{
|
|
178
179
|
name: 'coding_list_sessions',
|
|
179
|
-
description: "List all coding sessions from
|
|
180
|
+
description: "List all coding sessions from disk-resident agent histories (claude-code, codex-cli). Sorted by most recent first; supports date filtering. Each row includes `status` and `statusMessage` using the same vocabulary as `coding_read_session`: \"working\" (process alive, assistant is still responding to the last user turn), \"idle\" (process alive, last turn is assistant — paused for user), \"ended\" (process gone), or \"initializing\" (process alive but transcript not yet readable).",
|
|
180
181
|
inputSchema: jsonSchemas.coding_list_sessions,
|
|
181
182
|
},
|
|
182
183
|
{
|
|
@@ -224,7 +225,7 @@ function detectAgentForSession(sessionId, dir) {
|
|
|
224
225
|
if (stored?.agent)
|
|
225
226
|
return stored.agent;
|
|
226
227
|
// Try each reader's sessionExists
|
|
227
|
-
const readers = ['claude-code', 'codex-cli'];
|
|
228
|
+
const readers = ['claude-code', 'codex-cli', 'opencode'];
|
|
228
229
|
for (const agentName of readers) {
|
|
229
230
|
const reader = getAgentReader(agentName);
|
|
230
231
|
if (reader?.sessionExists(dir, sessionId))
|
|
@@ -536,6 +537,37 @@ async function handleAsk(params, logger = gatewayLog) {
|
|
|
536
537
|
// (its own UUID in the filename) and re-key our running session record to use it.
|
|
537
538
|
if (agentName === 'codex-cli' && !isResume) {
|
|
538
539
|
const found = await findLatestCodexSession(workingDir, startedAt);
|
|
540
|
+
if (found && found.sessionId !== sessionId) {
|
|
541
|
+
sessionId = found.sessionId;
|
|
542
|
+
upsertSession({
|
|
543
|
+
sessionId: found.sessionId,
|
|
544
|
+
agent: agentName,
|
|
545
|
+
dir: params.dir,
|
|
546
|
+
pid,
|
|
547
|
+
startedAt,
|
|
548
|
+
worktreePath,
|
|
549
|
+
worktreeBranch,
|
|
550
|
+
});
|
|
551
|
+
startCodingSessionWatcher({
|
|
552
|
+
sessionId: found.sessionId,
|
|
553
|
+
agentName,
|
|
554
|
+
dir: workingDir,
|
|
555
|
+
});
|
|
556
|
+
return {
|
|
557
|
+
success: true,
|
|
558
|
+
result: {
|
|
559
|
+
sessionId: found.sessionId,
|
|
560
|
+
pid,
|
|
561
|
+
resumed: isResume,
|
|
562
|
+
message: 'Session started. Poll with sleep(60) + coding_read_session, up to 3 times. If still running, use reschedule_self(10) for long polling.',
|
|
563
|
+
},
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
// For opencode on a new session: discover the session ID opencode assigned
|
|
568
|
+
// in its SQLite database and re-key our running session record to use it.
|
|
569
|
+
if (agentName === 'opencode' && !isResume) {
|
|
570
|
+
const found = await findLatestOpenCodeSession(workingDir, startedAt);
|
|
539
571
|
if (found && found.sessionId !== sessionId) {
|
|
540
572
|
sessionId = found.sessionId;
|
|
541
573
|
upsertSession({
|
|
@@ -559,6 +591,13 @@ async function handleAsk(params, logger = gatewayLog) {
|
|
|
559
591
|
}
|
|
560
592
|
}
|
|
561
593
|
}
|
|
594
|
+
// Watch the running transcript so the webapp learns about turn boundaries
|
|
595
|
+
// without having to poll. The watcher stops itself when the PTY exits.
|
|
596
|
+
startCodingSessionWatcher({
|
|
597
|
+
sessionId,
|
|
598
|
+
agentName,
|
|
599
|
+
dir: workingDir,
|
|
600
|
+
});
|
|
562
601
|
return {
|
|
563
602
|
success: true,
|
|
564
603
|
result: {
|
|
@@ -574,6 +613,7 @@ function handleCloseSession(params) {
|
|
|
574
613
|
const session = getSession(params.sessionId);
|
|
575
614
|
stopProcess(params.sessionId);
|
|
576
615
|
deleteSession(params.sessionId);
|
|
616
|
+
stopCodingSessionWatcher(params.sessionId);
|
|
577
617
|
if (session?.worktreePath) {
|
|
578
618
|
const { removed, uncommitted } = removeWorktree(session.worktreePath, session.dir);
|
|
579
619
|
if (!removed && uncommitted) {
|
|
@@ -599,6 +639,7 @@ function handleCloseAll() {
|
|
|
599
639
|
for (const session of sessions) {
|
|
600
640
|
stopProcess(session.sessionId);
|
|
601
641
|
deleteSession(session.sessionId);
|
|
642
|
+
stopCodingSessionWatcher(session.sessionId);
|
|
602
643
|
if (session.worktreePath) {
|
|
603
644
|
const { removed, uncommitted } = removeWorktree(session.worktreePath, session.dir);
|
|
604
645
|
if (!removed && uncommitted) {
|
|
@@ -645,7 +686,28 @@ async function handleReadSession(params) {
|
|
|
645
686
|
statusMessage = 'Agent is booting. Wait a few seconds and read again.';
|
|
646
687
|
}
|
|
647
688
|
else if (running) {
|
|
648
|
-
|
|
689
|
+
// Process is alive and the transcript exists. Distinguish "working" (the
|
|
690
|
+
// agent is producing the answer to the most recent user turn) from "idle"
|
|
691
|
+
// (the last turn is the assistant's, so the conversation is paused until
|
|
692
|
+
// the user speaks again). Surfaced as descriptive text so meta-agents can
|
|
693
|
+
// decide whether to poll more or act on the answer.
|
|
694
|
+
const lastTurn = turns.length > 0 ? turns[turns.length - 1] : undefined;
|
|
695
|
+
if (lastTurn?.role === 'user') {
|
|
696
|
+
status = 'working';
|
|
697
|
+
statusMessage =
|
|
698
|
+
'Working — assistant is still responding to the most recent user message. Poll again before acting on the output.';
|
|
699
|
+
}
|
|
700
|
+
else if (lastTurn?.role === 'assistant') {
|
|
701
|
+
status = 'idle';
|
|
702
|
+
statusMessage =
|
|
703
|
+
'Idle — assistant turn is complete. Session is alive and waiting for the next user message.';
|
|
704
|
+
}
|
|
705
|
+
else {
|
|
706
|
+
// No turns parsed yet despite the file existing — treat like initializing.
|
|
707
|
+
status = 'initializing';
|
|
708
|
+
statusMessage =
|
|
709
|
+
'Agent has started writing the transcript but no turns are parseable yet. Wait and read again.';
|
|
710
|
+
}
|
|
649
711
|
}
|
|
650
712
|
else if (!fileExists && stored?.startedAt) {
|
|
651
713
|
// Process is gone and produced no transcript. Don't lie with "completed".
|
|
@@ -665,7 +727,9 @@ async function handleReadSession(params) {
|
|
|
665
727
|
// Process finished — clean up running session record
|
|
666
728
|
if (stored)
|
|
667
729
|
deleteSession(params.sessionId);
|
|
668
|
-
status = '
|
|
730
|
+
status = 'ended';
|
|
731
|
+
statusMessage =
|
|
732
|
+
'Ended — agent process has exited. The transcript is final; resume with `coding_ask` (passing sessionId) to continue.';
|
|
669
733
|
}
|
|
670
734
|
return {
|
|
671
735
|
success: true,
|
|
@@ -693,19 +757,58 @@ async function handleListSessions(params) {
|
|
|
693
757
|
offset: params.offset ?? 0,
|
|
694
758
|
});
|
|
695
759
|
const runningIds = new Set(listRunningSessions().map(s => s.sessionId));
|
|
760
|
+
// For running sessions only, peek at the last turn to distinguish
|
|
761
|
+
// "working" (assistant is still responding) from "idle" (assistant turn
|
|
762
|
+
// is done). Ended sessions skip the I/O. Same vocabulary as
|
|
763
|
+
// `coding_read_session` so meta-agents can rely on a single taxonomy.
|
|
764
|
+
const enriched = await Promise.all(sessions.map(async (s) => {
|
|
765
|
+
const running = runningIds.has(s.sessionId);
|
|
766
|
+
let status;
|
|
767
|
+
let statusMessage;
|
|
768
|
+
if (!running) {
|
|
769
|
+
status = 'ended';
|
|
770
|
+
statusMessage =
|
|
771
|
+
'Ended — agent process has exited. Resume with `coding_ask` (passing sessionId) to continue.';
|
|
772
|
+
}
|
|
773
|
+
else {
|
|
774
|
+
// readJsonlLines reads the whole file regardless of `tail`, then slices.
|
|
775
|
+
// Pull 50 tail entries so the user/assistant filter still leaves us at
|
|
776
|
+
// least one real turn even when the file ends with system/summary rows.
|
|
777
|
+
const { turns } = await readAgentSessionTurns(s.agent, s.dir, s.sessionId, { tail: true, lines: 50 });
|
|
778
|
+
const lastTurn = turns.length > 0 ? turns[turns.length - 1] : undefined;
|
|
779
|
+
if (lastTurn?.role === 'user') {
|
|
780
|
+
status = 'working';
|
|
781
|
+
statusMessage =
|
|
782
|
+
'Working — assistant is still responding to the most recent user message.';
|
|
783
|
+
}
|
|
784
|
+
else if (lastTurn?.role === 'assistant') {
|
|
785
|
+
status = 'idle';
|
|
786
|
+
statusMessage =
|
|
787
|
+
'Idle — assistant turn is complete. Session is alive and waiting for the next user message.';
|
|
788
|
+
}
|
|
789
|
+
else {
|
|
790
|
+
status = 'initializing';
|
|
791
|
+
statusMessage =
|
|
792
|
+
'Initializing — agent is booting, transcript not yet readable.';
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
return {
|
|
796
|
+
sessionId: s.sessionId,
|
|
797
|
+
agent: s.agent,
|
|
798
|
+
dir: s.dir,
|
|
799
|
+
title: s.title,
|
|
800
|
+
running,
|
|
801
|
+
status,
|
|
802
|
+
statusMessage,
|
|
803
|
+
createdAt: new Date(s.createdAt).toISOString(),
|
|
804
|
+
updatedAt: new Date(s.updatedAt).toISOString(),
|
|
805
|
+
fileSizeBytes: s.fileSizeBytes,
|
|
806
|
+
};
|
|
807
|
+
}));
|
|
696
808
|
return {
|
|
697
809
|
success: true,
|
|
698
810
|
result: {
|
|
699
|
-
sessions:
|
|
700
|
-
sessionId: s.sessionId,
|
|
701
|
-
agent: s.agent,
|
|
702
|
-
dir: s.dir,
|
|
703
|
-
title: s.title,
|
|
704
|
-
running: runningIds.has(s.sessionId),
|
|
705
|
-
createdAt: new Date(s.createdAt).toISOString(),
|
|
706
|
-
updatedAt: new Date(s.updatedAt).toISOString(),
|
|
707
|
-
fileSizeBytes: s.fileSizeBytes,
|
|
708
|
-
})),
|
|
811
|
+
sessions: enriched,
|
|
709
812
|
total,
|
|
710
813
|
hasMore,
|
|
711
814
|
offset: params.offset ?? 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coding-tools.js","sourceRoot":"","sources":["../../../src/server/tools/coding-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coding-tools.js","sourceRoot":"","sources":["../../../src/server/tools/coding-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/exec-tools.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"exec-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/exec-tools.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAKtB,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAgKjD,eAAO,MAAM,iBAAiB;;;;mBAI5B,CAAC;AA4BH,eAAO,MAAM,SAAS,EAAE,WAAW,EAMlC,CAAC;AA+VF,wBAAsB,eAAe,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,CAkB/D"}
|
|
@@ -7,6 +7,108 @@ import { listFolders, resolveFolderForPath } from '../../config/folders.js';
|
|
|
7
7
|
import { folderScopeError } from './scope-error.js';
|
|
8
8
|
// Default directory for exec commands - uses same directory as config
|
|
9
9
|
const DEFAULT_EXEC_DIR = getConfigPath();
|
|
10
|
+
// Defaults for stdout/stderr capture caps. Unbounded accumulation has caused
|
|
11
|
+
// OOMs upstream when commands like `cat huge.log` or `sed -n '1,99999p'` ran
|
|
12
|
+
// through the gateway — the captured strings flow into the agent's message
|
|
13
|
+
// history and pin megabytes in the webapp heap for the rest of the session.
|
|
14
|
+
const DEFAULT_MAX_STDOUT_BYTES = 128 * 1024; // 128 KB
|
|
15
|
+
const DEFAULT_MAX_STDERR_BYTES = 16 * 1024; // 16 KB
|
|
16
|
+
// Hard ceiling on bytes we will *read* off the child's pipes before killing
|
|
17
|
+
// the process. Acts as a backstop against `yes`/runaway producers — we keep
|
|
18
|
+
// `kill = max * KILL_MULTIPLIER` so legitimate spikes still finish.
|
|
19
|
+
const KILL_MULTIPLIER = 8;
|
|
20
|
+
function formatBytes(n) {
|
|
21
|
+
if (n < 1024)
|
|
22
|
+
return `${n} B`;
|
|
23
|
+
if (n < 1024 * 1024)
|
|
24
|
+
return `${(n / 1024).toFixed(1)} KB`;
|
|
25
|
+
return `${(n / (1024 * 1024)).toFixed(1)} MB`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Capture child-process stream output without retaining more than `maxBytes`.
|
|
29
|
+
* Keeps the head (~30%) and a sliding tail (~70%), dropping the middle. The
|
|
30
|
+
* tail bias matters: for shell commands the trailing bytes (exit error,
|
|
31
|
+
* final summary) are usually the most useful slice for the model.
|
|
32
|
+
*/
|
|
33
|
+
class StreamCapture {
|
|
34
|
+
maxBytes;
|
|
35
|
+
head = [];
|
|
36
|
+
headBytes = 0;
|
|
37
|
+
tail = [];
|
|
38
|
+
tailBytes = 0;
|
|
39
|
+
totalBytes = 0;
|
|
40
|
+
headCap;
|
|
41
|
+
tailCap;
|
|
42
|
+
constructor(maxBytes) {
|
|
43
|
+
this.maxBytes = maxBytes;
|
|
44
|
+
this.headCap = Math.floor(maxBytes * 0.3);
|
|
45
|
+
this.tailCap = maxBytes - this.headCap;
|
|
46
|
+
}
|
|
47
|
+
push(chunk) {
|
|
48
|
+
this.totalBytes += chunk.length;
|
|
49
|
+
if (this.headBytes < this.headCap) {
|
|
50
|
+
const room = this.headCap - this.headBytes;
|
|
51
|
+
if (chunk.length <= room) {
|
|
52
|
+
this.head.push(chunk);
|
|
53
|
+
this.headBytes += chunk.length;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.head.push(chunk.subarray(0, room));
|
|
57
|
+
this.headBytes += room;
|
|
58
|
+
this.pushTail(chunk.subarray(room));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this.pushTail(chunk);
|
|
62
|
+
}
|
|
63
|
+
pushTail(chunk) {
|
|
64
|
+
this.tail.push(chunk);
|
|
65
|
+
this.tailBytes += chunk.length;
|
|
66
|
+
while (this.tailBytes > this.tailCap && this.tail.length > 0) {
|
|
67
|
+
const first = this.tail[0];
|
|
68
|
+
const excess = this.tailBytes - this.tailCap;
|
|
69
|
+
if (excess >= first.length) {
|
|
70
|
+
this.tail.shift();
|
|
71
|
+
this.tailBytes -= first.length;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.tail[0] = first.subarray(excess);
|
|
75
|
+
this.tailBytes -= excess;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
finalize(label) {
|
|
80
|
+
const headStr = Buffer.concat(this.head).toString('utf8');
|
|
81
|
+
if (this.tail.length === 0) {
|
|
82
|
+
return {
|
|
83
|
+
content: headStr,
|
|
84
|
+
truncated: false,
|
|
85
|
+
totalBytes: this.totalBytes,
|
|
86
|
+
emittedBytes: this.headBytes,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const tailStr = Buffer.concat(this.tail).toString('utf8');
|
|
90
|
+
const emitted = this.headBytes + this.tailBytes;
|
|
91
|
+
const dropped = this.totalBytes - emitted;
|
|
92
|
+
if (dropped <= 0) {
|
|
93
|
+
// Filled head + tail exactly, nothing actually dropped yet.
|
|
94
|
+
return {
|
|
95
|
+
content: headStr + tailStr,
|
|
96
|
+
truncated: false,
|
|
97
|
+
totalBytes: this.totalBytes,
|
|
98
|
+
emittedBytes: emitted,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const marker = `\n... [${label} truncated: ${formatBytes(dropped)} omitted, ` +
|
|
102
|
+
`${formatBytes(this.totalBytes)} total. Re-run with head/tail/grep/sed -n 'A,Bp' ` +
|
|
103
|
+
`or redirect to a file and read a slice — the full output exceeds the ${formatBytes(this.maxBytes)} cap.] ...\n`;
|
|
104
|
+
return {
|
|
105
|
+
content: headStr + marker + tailStr,
|
|
106
|
+
truncated: true,
|
|
107
|
+
totalBytes: this.totalBytes,
|
|
108
|
+
emittedBytes: emitted,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
10
112
|
// Warn once per process about the folders-empty fallback
|
|
11
113
|
let warnedFoldersEmpty = false;
|
|
12
114
|
// Default blocked command patterns — always enforced unless allowUnsafe is set
|
|
@@ -165,41 +267,87 @@ function isCommandAllowed(command) {
|
|
|
165
267
|
return { allowed: true };
|
|
166
268
|
}
|
|
167
269
|
/**
|
|
168
|
-
* Execute a command and return output
|
|
270
|
+
* Execute a command and return output, capping captured stdout/stderr so we
|
|
271
|
+
* never accumulate arbitrary amounts of data in memory. If a stream blows
|
|
272
|
+
* past `KILL_MULTIPLIER × cap` while we're already discarding bytes, we kill
|
|
273
|
+
* the process — at that point we're throwing the data away anyway and the
|
|
274
|
+
* producer is just keeping the pipe pressurized.
|
|
169
275
|
*/
|
|
170
|
-
async function executeCommand(command, dir, timeout) {
|
|
276
|
+
async function executeCommand(command, dir, timeout, maxStdoutBytes, maxStderrBytes) {
|
|
171
277
|
return new Promise((resolve) => {
|
|
172
278
|
const proc = spawn(command, {
|
|
173
279
|
cwd: dir,
|
|
174
280
|
shell: true,
|
|
175
281
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
176
282
|
});
|
|
177
|
-
|
|
178
|
-
|
|
283
|
+
const stdoutCap = new StreamCapture(maxStdoutBytes);
|
|
284
|
+
const stderrCap = new StreamCapture(maxStderrBytes);
|
|
179
285
|
let killed = false;
|
|
286
|
+
let killedForOversize = false;
|
|
287
|
+
const stdoutKillAt = maxStdoutBytes * KILL_MULTIPLIER;
|
|
288
|
+
const stderrKillAt = maxStderrBytes * KILL_MULTIPLIER;
|
|
180
289
|
// Set timeout
|
|
181
290
|
const timer = setTimeout(() => {
|
|
182
291
|
killed = true;
|
|
183
292
|
proc.kill('SIGTERM');
|
|
184
293
|
}, timeout);
|
|
185
294
|
proc.stdout?.on('data', (data) => {
|
|
186
|
-
|
|
295
|
+
stdoutCap.push(data);
|
|
296
|
+
if (!killed && stdoutCap.totalBytes > stdoutKillAt) {
|
|
297
|
+
killed = true;
|
|
298
|
+
killedForOversize = true;
|
|
299
|
+
proc.kill('SIGTERM');
|
|
300
|
+
}
|
|
187
301
|
});
|
|
188
302
|
proc.stderr?.on('data', (data) => {
|
|
189
|
-
|
|
303
|
+
stderrCap.push(data);
|
|
304
|
+
if (!killed && stderrCap.totalBytes > stderrKillAt) {
|
|
305
|
+
killed = true;
|
|
306
|
+
killedForOversize = true;
|
|
307
|
+
proc.kill('SIGTERM');
|
|
308
|
+
}
|
|
190
309
|
});
|
|
191
|
-
|
|
310
|
+
const finish = (code, errMessage) => {
|
|
192
311
|
clearTimeout(timer);
|
|
193
|
-
|
|
194
|
-
|
|
312
|
+
const stdoutFinal = stdoutCap.finalize('stdout');
|
|
313
|
+
const stderrFinal = stderrCap.finalize('stderr');
|
|
314
|
+
let stderr = stderrFinal.content;
|
|
315
|
+
if (errMessage) {
|
|
316
|
+
stderr = stderr ? `${stderr}\n${errMessage}` : errMessage;
|
|
317
|
+
}
|
|
318
|
+
if (killedForOversize) {
|
|
319
|
+
const note = `\nCommand was terminated because its output exceeded ` +
|
|
320
|
+
`${formatBytes(stdoutKillAt)} (stdout) / ${formatBytes(stderrKillAt)} (stderr). ` +
|
|
321
|
+
`Re-run with a narrower selection (head/tail/grep/sed).`;
|
|
322
|
+
stderr = stderr ? `${stderr}${note}` : note.trimStart();
|
|
323
|
+
}
|
|
324
|
+
else if (killed) {
|
|
325
|
+
stderr = stderr ? `${stderr}\nCommand timed out` : 'Command timed out';
|
|
326
|
+
}
|
|
327
|
+
resolve({
|
|
328
|
+
stdout: stdoutFinal.content,
|
|
329
|
+
stderr,
|
|
330
|
+
code,
|
|
331
|
+
stdoutTruncated: stdoutFinal.truncated,
|
|
332
|
+
stderrTruncated: stderrFinal.truncated,
|
|
333
|
+
stdoutTotalBytes: stdoutFinal.totalBytes,
|
|
334
|
+
stderrTotalBytes: stderrFinal.totalBytes,
|
|
335
|
+
killedForOversize,
|
|
336
|
+
});
|
|
337
|
+
};
|
|
338
|
+
proc.on('close', (code) => {
|
|
339
|
+
if (killedForOversize) {
|
|
340
|
+
finish(137);
|
|
341
|
+
}
|
|
342
|
+
else if (killed) {
|
|
343
|
+
finish(124);
|
|
195
344
|
}
|
|
196
345
|
else {
|
|
197
|
-
|
|
346
|
+
finish(code ?? 0);
|
|
198
347
|
}
|
|
199
348
|
});
|
|
200
349
|
proc.on('error', (err) => {
|
|
201
|
-
|
|
202
|
-
resolve({ stdout, stderr: err.message, code: 1 });
|
|
350
|
+
finish(1, err.message);
|
|
203
351
|
});
|
|
204
352
|
});
|
|
205
353
|
}
|
|
@@ -248,18 +396,65 @@ async function handleExecCommand(params) {
|
|
|
248
396
|
}
|
|
249
397
|
// Execute command
|
|
250
398
|
const timeout = params.timeout || 30000;
|
|
251
|
-
const
|
|
399
|
+
const maxStdoutBytes = readByteCap(config.maxStdoutBytes, 'COREBRAIN_EXEC_MAX_STDOUT_BYTES', DEFAULT_MAX_STDOUT_BYTES);
|
|
400
|
+
const maxStderrBytes = readByteCap(config.maxStderrBytes, 'COREBRAIN_EXEC_MAX_STDERR_BYTES', DEFAULT_MAX_STDERR_BYTES);
|
|
401
|
+
const result = await executeCommand(params.command, dir, timeout, maxStdoutBytes, maxStderrBytes);
|
|
402
|
+
const truncationNote = buildTruncationNote(result, maxStdoutBytes, maxStderrBytes);
|
|
403
|
+
// success: true always — the tool itself executed. A non-zero exit
|
|
404
|
+
// code is a user-land outcome, not a tool failure, and we want the
|
|
405
|
+
// caller to see stdout/stderr/exitCode so the agent can interpret
|
|
406
|
+
// what happened. Marking success: false drops the entire result
|
|
407
|
+
// payload at the tool-group dispatch layer, leaving the caller with
|
|
408
|
+
// only `TOOL_ERROR: unknown` and no way to diagnose.
|
|
252
409
|
return {
|
|
253
|
-
success:
|
|
410
|
+
success: true,
|
|
254
411
|
result: {
|
|
255
412
|
command: params.command,
|
|
256
413
|
dir,
|
|
257
414
|
exitCode: result.code,
|
|
258
415
|
stdout: result.stdout,
|
|
259
416
|
stderr: result.stderr || undefined,
|
|
417
|
+
...(result.stdoutTruncated && {
|
|
418
|
+
stdoutTruncated: true,
|
|
419
|
+
stdoutTotalBytes: result.stdoutTotalBytes,
|
|
420
|
+
}),
|
|
421
|
+
...(result.stderrTruncated && {
|
|
422
|
+
stderrTruncated: true,
|
|
423
|
+
stderrTotalBytes: result.stderrTotalBytes,
|
|
424
|
+
}),
|
|
425
|
+
...(result.killedForOversize && { killedForOversize: true }),
|
|
426
|
+
...(truncationNote && { truncationNote }),
|
|
260
427
|
},
|
|
261
428
|
};
|
|
262
429
|
}
|
|
430
|
+
function readByteCap(configured, envVar, fallback) {
|
|
431
|
+
if (typeof configured === 'number' && configured > 0)
|
|
432
|
+
return configured;
|
|
433
|
+
const fromEnv = process.env[envVar];
|
|
434
|
+
if (fromEnv) {
|
|
435
|
+
const parsed = Number(fromEnv);
|
|
436
|
+
if (Number.isFinite(parsed) && parsed > 0)
|
|
437
|
+
return parsed;
|
|
438
|
+
}
|
|
439
|
+
return fallback;
|
|
440
|
+
}
|
|
441
|
+
function buildTruncationNote(r, stdoutCap, stderrCap) {
|
|
442
|
+
if (!r.stdoutTruncated && !r.stderrTruncated && !r.killedForOversize) {
|
|
443
|
+
return undefined;
|
|
444
|
+
}
|
|
445
|
+
const parts = [];
|
|
446
|
+
if (r.stdoutTruncated) {
|
|
447
|
+
parts.push(`stdout exceeded ${formatBytes(stdoutCap)} cap (${formatBytes(r.stdoutTotalBytes)} total)`);
|
|
448
|
+
}
|
|
449
|
+
if (r.stderrTruncated) {
|
|
450
|
+
parts.push(`stderr exceeded ${formatBytes(stderrCap)} cap (${formatBytes(r.stderrTotalBytes)} total)`);
|
|
451
|
+
}
|
|
452
|
+
if (r.killedForOversize) {
|
|
453
|
+
parts.push('command was killed for runaway output');
|
|
454
|
+
}
|
|
455
|
+
return (parts.join('; ') +
|
|
456
|
+
'. Use head/tail/grep/sed -n to narrow the next call, or redirect to a file and read a slice.');
|
|
457
|
+
}
|
|
263
458
|
// ============ Tool Execution ============
|
|
264
459
|
export async function executeExecTool(toolName, params) {
|
|
265
460
|
try {
|