scream-code 0.15.3 → 0.15.5
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/README.md +2 -1
- package/dist/{app-Bqc3MVGh.mjs → app-ugHHjuy4.mjs} +28 -10
- package/dist/{dispatch-CweYoXh3.mjs → dispatch-B23MoYWm.mjs} +1 -1
- package/dist/{dispatch-DGeogib-.mjs → dispatch-aNzh78xW.mjs} +1376 -171
- package/dist/main.mjs +1 -1
- package/dist/public/assets/index-ChLLVxTo.js +96 -0
- package/dist/public/assets/index-ChLLVxTo.js.map +1 -0
- package/dist/public/assets/index-yCBo3yth.css +1 -0
- package/dist/public/index.html +2 -2
- package/dist/{text-input-dialog-Dr42qLMU.mjs → text-input-dialog-C0UIQBlI.mjs} +1 -1
- package/dist/{text-input-dialog-BUXAKycx.mjs → text-input-dialog-DbYfSAjy.mjs} +14 -0
- package/package.json +1 -1
- package/dist/public/assets/index-BJaeSGtC.css +0 -1
- package/dist/public/assets/index-DDVdau1l.js +0 -93
- package/dist/public/assets/index-DDVdau1l.js.map +0 -1
package/README.md
CHANGED
|
@@ -50,6 +50,7 @@ When Scream wants to modify files or run commands, an approval panel pops up —
|
|
|
50
50
|
|
|
51
51
|
- **Goal Loop** — autonomous, goal-driven execution with an independent judge agent and token/time budget control.
|
|
52
52
|
- **Wolfpack** — unlimited parallel sub-agents (coder / explore / plan / verify / reviewer / oracle / writer / worker).
|
|
53
|
+
- **Subagent Collaboration** — steer running sub-agents with directed parent→child messages, request structured JSON replies via `output_schema`, and sandbox each sub-agent with runtime capability modes (read-only / read-write / execute / full).
|
|
53
54
|
- **Persistent Memory** — structured pain-point memory with FTS5 full-text + tag + vector retrieval, shared across sessions.
|
|
54
55
|
- **Local Knowledge Graph** — SAG-based visual knowledge base for multi-hop reasoning; import your own docs anytime.
|
|
55
56
|
- **RLM Mode** — persistent Python workspace for long-running tasks, with unlimited recursive sub-agents.
|
|
@@ -139,7 +140,7 @@ Website: [scream.chat](https://scream.chat)
|
|
|
139
140
|
|
|
140
141
|
### Contributing
|
|
141
142
|
|
|
142
|
-
Free and open — forks, feedback and pull requests are welcome. Scream is a lightweight agent foundation: maximize the model's own capability, don't over-constrain it with framework. Inspired by
|
|
143
|
+
Free and open — forks, feedback and pull requests are welcome. Scream is a lightweight agent foundation: maximize the model's own capability, don't over-constrain it with framework. Inspired by the wider agent-tooling community.
|
|
143
144
|
|
|
144
145
|
---
|
|
145
146
|
|
|
@@ -4,8 +4,8 @@ import { dirname as __cjsShimDirname } from 'node:path';
|
|
|
4
4
|
const __filename = __cjsShimFileURLToPath(import.meta.url);
|
|
5
5
|
const __dirname = __cjsShimDirname(__filename);
|
|
6
6
|
import "./suppress-sqlite-warning-C2VB0doZ.mjs";
|
|
7
|
-
import { $t as isTodoItemShape, A as renderDiffLinesClustered, An as getInputHistoryFile, At as ENABLE_TERMINAL_FOCUS_REPORTING, B as BackgroundAgentStatusComponent, Bn as ScreamHarness, Bt as TERMINAL_THEME_LIGHT, Cn as PULSE_WAVE_FRAMES, Ct as createThemeStyles, D as toggleEmptySessionHint, Dn as saveTuiConfig, Dt as parseOsc11BackgroundTheme, E as isTurnElapsedEnabled, En as loadTuiConfig, Et as detectTerminalTheme, F as estimateTokens, Fn as CLI_USER_AGENT_PRODUCT, Ft as OSC11_RESPONSE_PREFIX_NO_ESC, G as getBreathingFrame, Gn as log, H as AgentGroupComponent, Hn as resolveScreamHome, Ht as isStreaming, I as getSharedSpeedTracker, In as PRODUCT_NAME, It as QUERY_TERMINAL_THEME, J as refineGoal, Jn as isOrphanedToolCallError, Jt as printableChar, K as resetBreathingClock, Kn as resolveGlobalLogPath, L as SkillActivationComponent, Ln as DEFAULT_CATALOG_URL, Lt as TERMINAL_FOCUS_IN, M as langFromPath, Mn as detectInstallSource, Mt as OSC11_QUERY, N as CachedContainer, Nn as CLI_COMMAND_NAME, Nt as OSC11_RESPONSE, O as ToolCallComponent, On as detectShellEnvironment, Ot as DISABLE_TERMINAL_FOCUS_REPORTING, P as ThinkingComponent, Pn as CLI_UI_MODE, Pt as OSC11_RESPONSE_PREFIX, Qt as formatErrorMessage, R as ReadGroupComponent, Rn as fetchCatalog, Rt as TERMINAL_FOCUS_OUT, S as getDaemonInstructions, Sn as PIXEL_PULSE_FRAMES, St as createMarkdownTheme, T as isEmptySessionHintDismissed, Tn as TuiLikePreferencesSchema, Tt as getColorPalette, U as WelcomeComponent, Un as MemoryMemoStore, Ut as FooterComponent, V as AssistantMessageComponent, Vt as isBusy, W as BREATHE_CYCLE_MS, Wn as flushDiagnosticLogs, Xn as SCREAM_ERROR_INFO, Xt as appendStreamingArgsPreview, Yn as ErrorCodes, Yt as STATUS_BULLET, Zt as argsRecord, _ as refreshUpdateCache, _n as isExperimentalFlagEnabled, _t as clearInfoPanelState, an as EMPTY_SESSION_HINT_URL, b as readJsonlFile, bn as isEmbeddingModelCached, bt as resolveThemeSync, c as hasDispose, cn as SESSION_TIPS, ct as handlePlanCommand, d as formatMemoryMemoForInjection, dn as getCtrlDHint, en as parseStreamingArgs, et as toTerminalHyperlink, fn as getLlmNotSetMessage, g as selectUpdateTarget, gn as sortSlashCommands, gt as supportsBalance, hn as BUILTIN_SLASH_COMMANDS, ht as refreshProviderBalance, i as buildRoleAdditionalText, in as CHARS_PER_TOKEN, j as highlightLines, jn as getLogDir, jt as ENABLE_TERMINAL_THEME_REPORTING, k as renderDiffLines, kn as getDataDir, kt as DISABLE_TERMINAL_THEME_REPORTING, l as isPlanExpandable, ln as TIP_ROTATION_INTERVAL_MS, mn as buildSkillSlashCommands, n as clearEvalPanelState, nn as stringValue, nt as getModelCycleLevel, on as EXIT_CONFIRM_WINDOW_MS, ot as handleFusionPlanCommand, pn as getNoActiveSessionMessage, q as clearGoalState, qn as isScreamError, r as openUrl, rn as truncateErrorMessage, s as disposeChildren, sn as MAIN_AGENT_ID, t as dispatchInput, tn as serializeToolResultOutput, tt as changeThinkingLevel, u as MoonLoader, un as getCtrlCHint, v as readUpdateCache, vn as setExperimentalFlags, w as UserMessageComponent, wn as TuiConfigParseError, wt as contrastTextHex, xn as startManualEmbeddingDownload, xt as createEditorTheme, y as appendJsonlLine, yn as getKnowledgeStore, z as parseReadGroupOutput, zn as saveCatalogCache, zt as TERMINAL_THEME_DARK } from "./dispatch-
|
|
8
|
-
import { a as setLocale, o as t } from "./text-input-dialog-
|
|
7
|
+
import { $t as isTodoItemShape, A as renderDiffLinesClustered, An as getInputHistoryFile, At as ENABLE_TERMINAL_FOCUS_REPORTING, B as BackgroundAgentStatusComponent, Bn as ScreamHarness, Bt as TERMINAL_THEME_LIGHT, Cn as PULSE_WAVE_FRAMES, Ct as createThemeStyles, D as toggleEmptySessionHint, Dn as saveTuiConfig, Dt as parseOsc11BackgroundTheme, E as isTurnElapsedEnabled, En as loadTuiConfig, Et as detectTerminalTheme, F as estimateTokens, Fn as CLI_USER_AGENT_PRODUCT, Ft as OSC11_RESPONSE_PREFIX_NO_ESC, G as getBreathingFrame, Gn as log, H as AgentGroupComponent, Hn as resolveScreamHome, Ht as isStreaming, I as getSharedSpeedTracker, In as PRODUCT_NAME, It as QUERY_TERMINAL_THEME, J as refineGoal, Jn as isOrphanedToolCallError, Jt as printableChar, K as resetBreathingClock, Kn as resolveGlobalLogPath, L as SkillActivationComponent, Ln as DEFAULT_CATALOG_URL, Lt as TERMINAL_FOCUS_IN, M as langFromPath, Mn as detectInstallSource, Mt as OSC11_QUERY, N as CachedContainer, Nn as CLI_COMMAND_NAME, Nt as OSC11_RESPONSE, O as ToolCallComponent, On as detectShellEnvironment, Ot as DISABLE_TERMINAL_FOCUS_REPORTING, P as ThinkingComponent, Pn as CLI_UI_MODE, Pt as OSC11_RESPONSE_PREFIX, Qt as formatErrorMessage, R as ReadGroupComponent, Rn as fetchCatalog, Rt as TERMINAL_FOCUS_OUT, S as getDaemonInstructions, Sn as PIXEL_PULSE_FRAMES, St as createMarkdownTheme, T as isEmptySessionHintDismissed, Tn as TuiLikePreferencesSchema, Tt as getColorPalette, U as WelcomeComponent, Un as MemoryMemoStore, Ut as FooterComponent, V as AssistantMessageComponent, Vt as isBusy, W as BREATHE_CYCLE_MS, Wn as flushDiagnosticLogs, Xn as SCREAM_ERROR_INFO, Xt as appendStreamingArgsPreview, Yn as ErrorCodes, Yt as STATUS_BULLET, Zt as argsRecord, _ as refreshUpdateCache, _n as isExperimentalFlagEnabled, _t as clearInfoPanelState, an as EMPTY_SESSION_HINT_URL, b as readJsonlFile, bn as isEmbeddingModelCached, bt as resolveThemeSync, c as hasDispose, cn as SESSION_TIPS, ct as handlePlanCommand, d as formatMemoryMemoForInjection, dn as getCtrlDHint, en as parseStreamingArgs, et as toTerminalHyperlink, fn as getLlmNotSetMessage, g as selectUpdateTarget, gn as sortSlashCommands, gt as supportsBalance, hn as BUILTIN_SLASH_COMMANDS, ht as refreshProviderBalance, i as buildRoleAdditionalText, in as CHARS_PER_TOKEN, j as highlightLines, jn as getLogDir, jt as ENABLE_TERMINAL_THEME_REPORTING, k as renderDiffLines, kn as getDataDir, kt as DISABLE_TERMINAL_THEME_REPORTING, l as isPlanExpandable, ln as TIP_ROTATION_INTERVAL_MS, mn as buildSkillSlashCommands, n as clearEvalPanelState, nn as stringValue, nt as getModelCycleLevel, on as EXIT_CONFIRM_WINDOW_MS, ot as handleFusionPlanCommand, pn as getNoActiveSessionMessage, q as clearGoalState, qn as isScreamError, r as openUrl, rn as truncateErrorMessage, s as disposeChildren, sn as MAIN_AGENT_ID, t as dispatchInput, tn as serializeToolResultOutput, tt as changeThinkingLevel, u as MoonLoader, un as getCtrlCHint, v as readUpdateCache, vn as setExperimentalFlags, w as UserMessageComponent, wn as TuiConfigParseError, wt as contrastTextHex, xn as startManualEmbeddingDownload, xt as createEditorTheme, y as appendJsonlLine, yn as getKnowledgeStore, z as parseReadGroupOutput, zn as saveCatalogCache, zt as TERMINAL_THEME_DARK } from "./dispatch-aNzh78xW.mjs";
|
|
8
|
+
import { a as setLocale, o as t } from "./text-input-dialog-DbYfSAjy.mjs";
|
|
9
9
|
import { createRequire } from "node:module";
|
|
10
10
|
import { randomBytes, randomUUID, scryptSync, timingSafeEqual } from "node:crypto";
|
|
11
11
|
import { access, chmod, mkdir, mkdtemp, readFile, readdir, realpath, rename, rm, stat, unlink, writeFile } from "node:fs/promises";
|
|
@@ -32,7 +32,7 @@ function optionalBuildString(value) {
|
|
|
32
32
|
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
33
33
|
}
|
|
34
34
|
const SCREAM_BUILD_INFO = {
|
|
35
|
-
version: optionalBuildString("0.15.
|
|
35
|
+
version: optionalBuildString("0.15.5"),
|
|
36
36
|
channel: optionalBuildString(""),
|
|
37
37
|
commit: optionalBuildString(""),
|
|
38
38
|
buildTarget: optionalBuildString("darwin-arm64")
|
|
@@ -2338,6 +2338,10 @@ var SessionEventHandler = class {
|
|
|
2338
2338
|
*/
|
|
2339
2339
|
lastCompactionTrigger;
|
|
2340
2340
|
backgroundTaskTranscriptedTerminal = /* @__PURE__ */ new Set();
|
|
2341
|
+
/** Active foreground (non-background) subagents. Footer badge counts them
|
|
2342
|
+
* separately from background agents: foreground subagents are transient
|
|
2343
|
+
* (spawned by the current turn's Agent tool), background agents persist. */
|
|
2344
|
+
foregroundSubagentCount = 0;
|
|
2341
2345
|
subagentInfo = /* @__PURE__ */ new Map();
|
|
2342
2346
|
renderedSkillActivationIds = /* @__PURE__ */ new Set();
|
|
2343
2347
|
renderedMcpServerStatusKeys = /* @__PURE__ */ new Map();
|
|
@@ -3096,6 +3100,8 @@ var SessionEventHandler = class {
|
|
|
3096
3100
|
this.syncBackgroundAgentBadge();
|
|
3097
3101
|
return;
|
|
3098
3102
|
}
|
|
3103
|
+
this.foregroundSubagentCount += 1;
|
|
3104
|
+
this.syncBackgroundAgentBadge();
|
|
3099
3105
|
let tc = streamingUI.getToolComponent(event.parentToolCallId);
|
|
3100
3106
|
if (tc === void 0) {
|
|
3101
3107
|
const toolCall = streamingUI.getActiveToolCall(event.parentToolCallId);
|
|
@@ -3137,13 +3143,18 @@ var SessionEventHandler = class {
|
|
|
3137
3143
|
this.appendBackgroundAgentEntry("completed", backgroundMeta, extras);
|
|
3138
3144
|
return;
|
|
3139
3145
|
}
|
|
3146
|
+
this.foregroundSubagentCount = Math.max(0, this.foregroundSubagentCount - 1);
|
|
3147
|
+
this.syncBackgroundAgentBadge();
|
|
3140
3148
|
const routingId = this.subagentInfo.get(event.subagentId)?.parentToolCallId ?? event.parentToolCallId;
|
|
3141
3149
|
const tc = streamingUI.getToolComponent(routingId);
|
|
3142
3150
|
if (tc === void 0) return;
|
|
3143
3151
|
tc.onSubagentCompleted({
|
|
3144
3152
|
contextTokens: event.contextTokens,
|
|
3145
3153
|
usage: event.usage,
|
|
3146
|
-
resultSummary: event.resultSummary
|
|
3154
|
+
resultSummary: event.resultSummary,
|
|
3155
|
+
turns: event.turns,
|
|
3156
|
+
durationMs: event.durationMs,
|
|
3157
|
+
toolCallCount: event.toolCallCount
|
|
3147
3158
|
});
|
|
3148
3159
|
streamingUI.removeToolComponentIfInactive(event.parentToolCallId);
|
|
3149
3160
|
}
|
|
@@ -3166,6 +3177,8 @@ var SessionEventHandler = class {
|
|
|
3166
3177
|
this.appendBackgroundAgentEntry("failed", backgroundMeta, { error: event.error });
|
|
3167
3178
|
return;
|
|
3168
3179
|
}
|
|
3180
|
+
this.foregroundSubagentCount = Math.max(0, this.foregroundSubagentCount - 1);
|
|
3181
|
+
this.syncBackgroundAgentBadge();
|
|
3169
3182
|
const tc = streamingUI.getToolComponent(this.subagentInfo.get(event.subagentId)?.parentToolCallId ?? event.parentToolCallId);
|
|
3170
3183
|
if (tc === void 0) return;
|
|
3171
3184
|
tc.onSubagentFailed({ error: event.error });
|
|
@@ -3295,11 +3308,12 @@ var SessionEventHandler = class {
|
|
|
3295
3308
|
if (info.taskId.startsWith("agent-")) agentTasks += 1;
|
|
3296
3309
|
else bashTasks += 1;
|
|
3297
3310
|
}
|
|
3298
|
-
state.footer
|
|
3311
|
+
state.footer?.setBackgroundCounts({
|
|
3299
3312
|
bashTasks,
|
|
3300
|
-
agentTasks
|
|
3313
|
+
agentTasks,
|
|
3314
|
+
foregroundSubagents: this.foregroundSubagentCount
|
|
3301
3315
|
});
|
|
3302
|
-
state.ui
|
|
3316
|
+
state.ui?.requestRender();
|
|
3303
3317
|
}
|
|
3304
3318
|
};
|
|
3305
3319
|
//#endregion
|
|
@@ -3605,7 +3619,10 @@ var SessionReplayRenderer = class {
|
|
|
3605
3619
|
sessionEventHandler.backgroundTasks = new Map(agent.background.map((info) => [info.taskId, info]));
|
|
3606
3620
|
sessionEventHandler.backgroundTaskTranscriptedTerminal.clear();
|
|
3607
3621
|
for (const info of agent.background) if (isTerminalBackgroundTask(info)) sessionEventHandler.backgroundTaskTranscriptedTerminal.add(info.taskId);
|
|
3608
|
-
state.footer.setBackgroundCounts(
|
|
3622
|
+
state.footer.setBackgroundCounts({
|
|
3623
|
+
...countActiveBackgroundTasks(sessionEventHandler.backgroundTasks),
|
|
3624
|
+
foregroundSubagents: 0
|
|
3625
|
+
});
|
|
3609
3626
|
state.ui.requestRender();
|
|
3610
3627
|
}
|
|
3611
3628
|
renderRecords(agent) {
|
|
@@ -9741,7 +9758,8 @@ var SessionManager$1 = class {
|
|
|
9741
9758
|
this.host.tasksBrowserController.close();
|
|
9742
9759
|
this.host.state.footer.setBackgroundCounts({
|
|
9743
9760
|
bashTasks: 0,
|
|
9744
|
-
agentTasks: 0
|
|
9761
|
+
agentTasks: 0,
|
|
9762
|
+
foregroundSubagents: 0
|
|
9745
9763
|
});
|
|
9746
9764
|
this.host.streamingUI.setTodoList([]);
|
|
9747
9765
|
this.host.streamingUI.setTurnId(void 0);
|
|
@@ -12425,7 +12443,7 @@ var ScreamTUI = class {
|
|
|
12425
12443
|
const card = new OnboardingCardComponent({
|
|
12426
12444
|
colors: this.state.theme.colors,
|
|
12427
12445
|
onConfigure: () => {
|
|
12428
|
-
import("./dispatch-
|
|
12446
|
+
import("./dispatch-B23MoYWm.mjs").then(({ handleConnectCommand }) => handleConnectCommand(this, "")).finally(() => {
|
|
12429
12447
|
this.restoreEditor();
|
|
12430
12448
|
onDone?.();
|
|
12431
12449
|
});
|
|
@@ -3,5 +3,5 @@ import { fileURLToPath as __cjsShimFileURLToPath } from 'node:url';
|
|
|
3
3
|
import { dirname as __cjsShimDirname } from 'node:path';
|
|
4
4
|
const __filename = __cjsShimFileURLToPath(import.meta.url);
|
|
5
5
|
const __dirname = __cjsShimDirname(__filename);
|
|
6
|
-
import { Kt as handleConnectCommand } from "./dispatch-
|
|
6
|
+
import { Kt as handleConnectCommand } from "./dispatch-aNzh78xW.mjs";
|
|
7
7
|
export { handleConnectCommand };
|