scream-code 0.15.6 → 0.15.7

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 CHANGED
@@ -48,9 +48,11 @@ When Scream wants to modify files or run commands, an approval panel pops up —
48
48
 
49
49
  ### Features
50
50
 
51
- - **Goal Loop** — autonomous, goal-driven execution with an independent judge agent and token/time budget control.
51
+ - **Goal Loop** — autonomous, goal-driven execution with an independent judge agent. Rejections must name concrete gaps; evidence gaps self-repair for up to 3 rounds, subjective calls park for your decision (with a written report), and token/time budgets bound the loop.
52
+ - **TUI Sidebar** — four live panels: workspace Git diff summary (green adds / red deletes), per-session token accounting (cache-hit / cache-miss / output), 8 sub-agent slots with real-time states (idle / working / outputting / messaging / reworking), and Goal status with judge state (awaiting / judging / adjudicated).
52
53
  - **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).
54
+ - **Subagent Collaboration** — delegate to specialist sub-agents and stay in control: they **ask the lead agent for guidance mid-task instead of guessing when blocked**, request a handoff when a different specialist fits, take mid-task redirects or follow-up notes, return structured JSON when asked, and can be confined to a safe mode (read-only / edit-only / commands-allowed) so they never overstep your limits.
55
+ - **Bot Mode (`/bot`)** — unattended execution: reversible work (reads, in-workspace edits, read-only commands) runs freely, while irreversible actions (push / publish / delete / sensitive files / unclassified operations) are automatically denied and queued for your review — with the reason fed back to the model so it stops retrying.
54
56
  - **Persistent Memory** — structured pain-point memory with FTS5 full-text + tag + vector retrieval, shared across sessions.
55
57
  - **Local Knowledge Graph** — SAG-based visual knowledge base for multi-hop reasoning; import your own docs anytime.
56
58
  - **RLM Mode** — persistent Python workspace for long-running tasks, with unlimited recursive sub-agents.
@@ -63,7 +65,7 @@ When Scream wants to modify files or run commands, an approval panel pops up —
63
65
 
64
66
  ### Slash Commands
65
67
 
66
- Type `/` in the input to browse. All 47 commands:
68
+ Type `/` in the input to browse. All 48 commands:
67
69
 
68
70
  <details>
69
71
  <summary>Full command reference (click to expand)</summary>
@@ -74,6 +76,7 @@ Type `/` in the input to browse. All 47 commands:
74
76
  | `/auto` | Toggle auto permission mode |
75
77
  | `/yes` (`/yolo`) | Toggle auto-approve mode |
76
78
  | `/ask` | Toggle read-only Q&A mode |
79
+ | `/bot` | Unattended bot mode: reversible actions auto-approve, irreversible ones park for review |
77
80
  | `/goal [objective]` | View/manage auto goals |
78
81
  | `/wolfpack` (`/wp`) | Toggle wolfpack mode — auto-approve + batch concurrency |
79
82
  | `/rlm` | RLM mode: persistent Python workspace, unlimited recursive subagents |
@@ -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 formatErrorMessage, A as renderDiffLinesClustered, An as getDataDir, At as ENABLE_TERMINAL_FOCUS_REPORTING, B as BackgroundAgentStatusComponent, Bn as saveCatalogCache, Bt as TERMINAL_THEME_LIGHT, Cn as PIXEL_PULSE_FRAMES, Ct as createThemeStyles, D as toggleEmptySessionHint, Dn as loadTuiConfig, Dt as parseOsc11BackgroundTheme, E as isTurnElapsedEnabled, En as TuiLikePreferencesSchema, Et as detectTerminalTheme, F as estimateTokens, Fn as CLI_UI_MODE, Ft as OSC11_RESPONSE_PREFIX_NO_ESC, G as getBreathingFrame, Gn as flushDiagnosticLogs, H as AgentGroupComponent, Ht as isStreaming, I as getSharedSpeedTracker, In as CLI_USER_AGENT_PRODUCT, It as QUERY_TERMINAL_THEME, J as refineGoal, Jn as isScreamError, K as resetBreathingClock, Kn as log, L as SkillActivationComponent, Ln as PRODUCT_NAME, Lt as TERMINAL_FOCUS_IN, M as langFromPath, Mn as getLogDir, Mt as OSC11_QUERY, N as CachedContainer, Nn as detectInstallSource, Nt as OSC11_RESPONSE, O as ToolCallComponent, On as saveTuiConfig, Ot as DISABLE_TERMINAL_FOCUS_REPORTING, P as ThinkingComponent, Pn as CLI_COMMAND_NAME, Pt as OSC11_RESPONSE_PREFIX, Qt as argsRecord, R as ReadGroupComponent, Rn as DEFAULT_CATALOG_URL, Rt as TERMINAL_FOCUS_OUT, S as getDaemonInstructions, Sn as startManualEmbeddingDownload, St as createMarkdownTheme, T as isEmptySessionHintDismissed, Tn as TuiConfigParseError, Tt as getColorPalette, U as WelcomeComponent, Un as resolveScreamHome, Ut as FooterComponent, V as AssistantMessageComponent, Vn as ScreamHarness, Vt as isBusy, W as BREATHE_CYCLE_MS, Wn as MemoryMemoStore, Wt as lerpGradient, Xn as ErrorCodes, Xt as STATUS_BULLET, Yn as isOrphanedToolCallError, Yt as printableChar, Zn as SCREAM_ERROR_INFO, Zt as appendStreamingArgsPreview, _ as refreshUpdateCache, _n as sortSlashCommands, _t as clearInfoPanelState, an as CHARS_PER_TOKEN, b as readJsonlFile, bn as getKnowledgeStore, bt as resolveThemeSync, c as hasDispose, cn as MAIN_AGENT_ID, ct as handlePlanCommand, d as formatMemoryMemoForInjection, dn as getCtrlCHint, en as isTodoItemShape, et as toTerminalHyperlink, fn as getCtrlDHint, g as selectUpdateTarget, gn as BUILTIN_SLASH_COMMANDS, gt as supportsBalance, hn as buildSkillSlashCommands, ht as refreshProviderBalance, i as buildRoleAdditionalText, in as truncateErrorMessage, j as highlightLines, jn as getInputHistoryFile, jt as ENABLE_TERMINAL_THEME_REPORTING, k as renderDiffLines, kn as detectShellEnvironment, kt as DISABLE_TERMINAL_THEME_REPORTING, l as isPlanExpandable, ln as SESSION_TIPS, mn as getNoActiveSessionMessage, n as clearEvalPanelState, nn as serializeToolResultOutput, nt as getModelCycleLevel, on as EMPTY_SESSION_HINT_URL, ot as handleFusionPlanCommand, pn as getLlmNotSetMessage, q as clearGoalState, qn as resolveGlobalLogPath, r as openUrl, rn as stringValue, s as disposeChildren, sn as EXIT_CONFIRM_WINDOW_MS, t as dispatchInput, tn as parseStreamingArgs, tt as changeThinkingLevel, u as MoonLoader, un as TIP_ROTATION_INTERVAL_MS, v as readUpdateCache, vn as isExperimentalFlagEnabled, w as UserMessageComponent, wn as PULSE_WAVE_FRAMES, wt as contrastTextHex, xn as isEmbeddingModelCached, xt as createEditorTheme, y as appendJsonlLine, yn as setExperimentalFlags, z as parseReadGroupOutput, zn as fetchCatalog, zt as TERMINAL_THEME_DARK } from "./dispatch-jQiqBKV2.mjs";
8
- import { a as setLocale, i as getLocale, o as t } from "./text-input-dialog-LOMBSusF.mjs";
7
+ import { $t as argsRecord, A as renderDiffLinesClustered, An as detectShellEnvironment, At as DISABLE_TERMINAL_THEME_REPORTING, B as BackgroundAgentStatusComponent, Bn as fetchCatalog, Bt as TERMINAL_THEME_DARK, Cn as startManualEmbeddingDownload, Ct as createMarkdownTheme, D as toggleEmptySessionHint, Dn as TuiLikePreferencesSchema, Dt as detectTerminalTheme, E as isTurnElapsedEnabled, En as TuiConfigParseError, Et as getColorPalette, F as estimateTokens, Fn as CLI_COMMAND_NAME, Ft as OSC11_RESPONSE_PREFIX, G as getBreathingFrame, Gn as MemoryMemoStore, Gt as lerpGradient, H as AgentGroupComponent, Hn as ScreamHarness, Ht as isBusy, I as getSharedSpeedTracker, In as CLI_UI_MODE, It as OSC11_RESPONSE_PREFIX_NO_ESC, J as refineGoal, Jn as resolveGlobalLogPath, K as resetBreathingClock, Kn as flushDiagnosticLogs, L as SkillActivationComponent, Ln as CLI_USER_AGENT_PRODUCT, Lt as QUERY_TERMINAL_THEME, M as langFromPath, Mn as getInputHistoryFile, Mt as ENABLE_TERMINAL_THEME_REPORTING, N as CachedContainer, Nn as getLogDir, Nt as OSC11_QUERY, O as ToolCallComponent, On as loadTuiConfig, Ot as parseOsc11BackgroundTheme, P as ThinkingComponent, Pn as detectInstallSource, Pt as OSC11_RESPONSE, Qn as SCREAM_ERROR_INFO, Qt as appendStreamingArgsPreview, R as ReadGroupComponent, Rn as PRODUCT_NAME, Rt as TERMINAL_FOCUS_IN, S as getDaemonInstructions, Sn as isEmbeddingModelCached, St as createEditorTheme, T as isEmptySessionHintDismissed, Tn as PULSE_WAVE_FRAMES, Tt as contrastTextHex, U as WelcomeComponent, Ut as isStreaming, V as AssistantMessageComponent, Vn as saveCatalogCache, Vt as TERMINAL_THEME_LIGHT, W as BREATHE_CYCLE_MS, Wn as resolveScreamHome, Wt as FooterComponent, Xn as isOrphanedToolCallError, Xt as printableChar, Yn as isScreamError, Zn as ErrorCodes, Zt as STATUS_BULLET, _ as refreshUpdateCache, _n as BUILTIN_SLASH_COMMANDS, _t as supportsBalance, an as truncateErrorMessage, b as readJsonlFile, bn as setExperimentalFlags, c as hasDispose, cn as EXIT_CONFIRM_WINDOW_MS, d as formatMemoryMemoForInjection, dn as TIP_ROTATION_INTERVAL_MS, en as formatErrorMessage, et as toTerminalHyperlink, fn as getCtrlCHint, g as selectUpdateTarget, gn as buildSkillSlashCommands, gt as refreshProviderBalance, hn as getNoActiveSessionMessage, i as buildRoleAdditionalText, in as stringValue, j as highlightLines, jn as getDataDir, jt as ENABLE_TERMINAL_FOCUS_REPORTING, k as renderDiffLines, kn as saveTuiConfig, kt as DISABLE_TERMINAL_FOCUS_REPORTING, l as isPlanExpandable, ln as MAIN_AGENT_ID, lt as handlePlanCommand, mn as getLlmNotSetMessage, n as clearEvalPanelState, nn as parseStreamingArgs, nt as getModelCycleLevel, on as CHARS_PER_TOKEN, pn as getCtrlDHint, q as clearGoalState, qn as log, r as openUrl, rn as serializeToolResultOutput, s as disposeChildren, sn as EMPTY_SESSION_HINT_URL, st as handleFusionPlanCommand, t as dispatchInput, tn as isTodoItemShape, tt as changeThinkingLevel, u as MoonLoader, un as SESSION_TIPS, v as readUpdateCache, vn as sortSlashCommands, vt as clearInfoPanelState, w as UserMessageComponent, wn as PIXEL_PULSE_FRAMES, wt as createThemeStyles, xn as getKnowledgeStore, xt as resolveThemeSync, y as appendJsonlLine, yn as isExperimentalFlagEnabled, z as parseReadGroupOutput, zn as DEFAULT_CATALOG_URL, zt as TERMINAL_FOCUS_OUT } from "./dispatch-BJ6GyqMS.mjs";
8
+ import { a as setLocale, i as getLocale, o as t } from "./text-input-dialog-CnQM0DYj.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.6"),
35
+ version: optionalBuildString("0.15.7"),
36
36
  channel: optionalBuildString(""),
37
37
  commit: optionalBuildString(""),
38
38
  buildTarget: optionalBuildString("darwin-arm64")
@@ -13572,7 +13572,7 @@ var ScreamTUI = class {
13572
13572
  const card = new OnboardingCardComponent({
13573
13573
  colors: this.state.theme.colors,
13574
13574
  onConfigure: () => {
13575
- import("./dispatch-CkPcMk4b.mjs").then(({ handleConnectCommand }) => handleConnectCommand(this, "")).finally(() => {
13575
+ import("./dispatch-CPK1Lkxu.mjs").then(({ handleConnectCommand }) => handleConnectCommand(this, "")).finally(() => {
13576
13576
  this.restoreEditor();
13577
13577
  onDone?.();
13578
13578
  });
@@ -16674,8 +16674,9 @@ var WebSession = class {
16674
16674
  }
16675
16675
  return;
16676
16676
  case "auto":
16677
- case "yes": {
16678
- const mode = command === "auto" ? "auto" : "yolo";
16677
+ case "yes":
16678
+ case "bot": {
16679
+ const mode = command === "auto" ? "auto" : command === "bot" ? "bot" : "yolo";
16679
16680
  try {
16680
16681
  await this.session.setPermission(mode);
16681
16682
  this.permission = mode;
@@ -17412,9 +17413,10 @@ var SessionManager = class {
17412
17413
  list() {
17413
17414
  return Array.from(this.sessions.values()).map((s) => s.getListItem()).toSorted((a, b) => b.createdAt - a.createdAt);
17414
17415
  }
17415
- /** True when any session has an agent turn (main or subagent) in flight (used to defer idle exit). */
17416
+ /** True when any session has an agent turn (main or subagent) in flight, or
17417
+ * any session runs in unattended bot mode (defers idle exit). */
17416
17418
  anyBusy() {
17417
- return Array.from(this.sessions.values()).some((s) => s.isTurnActive);
17419
+ return Array.from(this.sessions.values()).some((s) => s.isTurnActive || s.permission === "bot");
17418
17420
  }
17419
17421
  async delete(sessionId) {
17420
17422
  const ws = this.sessions.get(sessionId);