@schoolai/shipyard 3.6.0-rc.20260507.0 → 3.6.0

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/index.js CHANGED
@@ -112,7 +112,7 @@ async function handleSubcommand() {
112
112
  return true;
113
113
  }
114
114
  if (subcommand === "start") {
115
- const { startCommand } = await import("./start-VNYBVNI7.js");
115
+ const { startCommand } = await import("./start-6SCOMMSU.js");
116
116
  await startCommand();
117
117
  return true;
118
118
  }
@@ -129,7 +129,7 @@ async function main() {
129
129
  const args = parseCliArgs();
130
130
  if (args.serve) {
131
131
  await loadAuthFromConfig(env);
132
- const { serve } = await import("./serve-IWCW4D3N.js");
132
+ const { serve } = await import("./serve-QRYOK5U4.js");
133
133
  return serve({ isDev: env.SHIPYARD_DEV });
134
134
  }
135
135
  logger.error("Use `shipyard start` to run the daemon. Use --help for usage.");
@@ -34193,7 +34193,7 @@ function getHandlerTimingTracker(channel) {
34193
34193
  import { spawn } from "child_process";
34194
34194
  var KEEP_AWAKE_GRACE_PERIOD_MS = 15 * 60 * 1e3;
34195
34195
  var darwinStrategy = {
34196
- spawn: () => spawn("caffeinate", ["-di"], { stdio: ["ignore", "ignore", "ignore"] })
34196
+ spawn: () => spawn("caffeinate", ["-dis"], { stdio: ["ignore", "ignore", "ignore"] })
34197
34197
  };
34198
34198
  var linuxStrategy = {
34199
34199
  spawn: () => spawn(
@@ -98743,7 +98743,19 @@ var AnthropicAgentSubprocess = class _AnthropicAgentSubprocess {
98743
98743
  canUseTool: options.canUseTool,
98744
98744
  stderr: options.stderr,
98745
98745
  mcpServers: options.mcpServers,
98746
- env: options.env,
98746
+ /**
98747
+ * `DISABLE_AUTO_COMPACT=1` disables the SDK runtime's autonomous
98748
+ * compaction. Without it, resuming a near-full session triggers an
98749
+ * unprompted "Compacting…" on the user's first turn — a trust-breaking
98750
+ * surprise. Compaction stays available via the slash command and
98751
+ * context-indicator button (user-initiated only).
98752
+ *
98753
+ * The SDK treats a non-null `env` as a complete replacement for
98754
+ * `process.env` (sdk.mjs ternary `a6 ? { ...a6 } : { ...process.env }`),
98755
+ * so we must spread `process.env` first or the agent subprocess loses
98756
+ * PATH/HOME/USER/GIT_* and everything else.
98757
+ */
98758
+ env: { ...process.env, ...options.env, DISABLE_AUTO_COMPACT: "1" },
98747
98759
  disallowedTools: options.disallowedTools,
98748
98760
  skills: options.skills,
98749
98761
  extraArgs: { ...options.extraArgs, "replay-user-messages": null },
@@ -110034,14 +110046,10 @@ function handleWarmIdle(snapshot, event) {
110034
110046
  effects: b2.effects
110035
110047
  };
110036
110048
  }
110037
- if (event.type === "idle_timeout" || event.type === "subprocess_died") {
110049
+ if (event.type === "subprocess_died") {
110038
110050
  b2.log("warm_idle", "resumable_idle", event.type);
110039
110051
  b2.taskStatus("input_required");
110040
- if (event.type === "idle_timeout") {
110041
- b2.effects.push({ type: "close" });
110042
- } else {
110043
- b2.emitError("Agent process exited unexpectedly", "subprocess_died");
110044
- }
110052
+ b2.emitError("Agent process exited unexpectedly", "subprocess_died");
110045
110053
  b2.effects.push({ type: "clear_queue" });
110046
110054
  return {
110047
110055
  state: "resumable_idle",
@@ -110362,7 +110370,6 @@ function transition3(snapshot, event) {
110362
110370
  }
110363
110371
 
110364
110372
  // src/services/session/agent-session-manager.ts
110365
- var IDLE_TIMEOUT_MS = 2 * 60 * 60 * 1e3;
110366
110373
  var STOP_TIMEOUT_MS = 15e3;
110367
110374
  var AgentSessionManager = class {
110368
110375
  #config;
@@ -110371,7 +110378,6 @@ var AgentSessionManager = class {
110371
110378
  #rewindAtMessageId = null;
110372
110379
  #queue = [];
110373
110380
  #pendingInputs = /* @__PURE__ */ new Map();
110374
- #idleTimer = null;
110375
110381
  #stopTimer = null;
110376
110382
  #eventQueue = [];
110377
110383
  #dispatching = false;
@@ -110487,7 +110493,6 @@ var AgentSessionManager = class {
110487
110493
  return count;
110488
110494
  }
110489
110495
  dispose() {
110490
- this.#clearIdleTimer();
110491
110496
  this.#clearStopTimer();
110492
110497
  this.#queue = [];
110493
110498
  this.#pendingInputs.clear();
@@ -110608,17 +110613,6 @@ var AgentSessionManager = class {
110608
110613
  }
110609
110614
  }
110610
110615
  #manageTimers() {
110611
- if (this.#state === "warm_idle") {
110612
- this.#clearStopTimer();
110613
- if (!this.#idleTimer) {
110614
- this.#idleTimer = setTimeout(() => {
110615
- this.#idleTimer = null;
110616
- this.#dispatch({ type: "idle_timeout" });
110617
- }, IDLE_TIMEOUT_MS);
110618
- }
110619
- } else {
110620
- this.#clearIdleTimer();
110621
- }
110622
110616
  if (this.#state === "stopping") {
110623
110617
  if (!this.#stopTimer) {
110624
110618
  this.#stopTimer = setTimeout(() => {
@@ -110630,12 +110624,6 @@ var AgentSessionManager = class {
110630
110624
  this.#clearStopTimer();
110631
110625
  }
110632
110626
  }
110633
- #clearIdleTimer() {
110634
- if (this.#idleTimer) {
110635
- clearTimeout(this.#idleTimer);
110636
- this.#idleTimer = null;
110637
- }
110638
- }
110639
110627
  #clearStopTimer() {
110640
110628
  if (this.#stopTimer) {
110641
110629
  clearTimeout(this.#stopTimer);
@@ -121786,11 +121774,19 @@ var TaskManager = class {
121786
121774
  get size() {
121787
121775
  return this.#tasks.size;
121788
121776
  }
121777
+ /**
121778
+ * Count of tasks with a live subprocess. Includes `warm_idle` —
121779
+ * a session waiting between turns of a `/loop` or scheduled-wake pattern
121780
+ * is still active work; if we exclude it, keep-awake `during-tasks` mode
121781
+ * lets the laptop sleep mid-loop and the OS suspends our subprocess.
121782
+ */
121789
121783
  get activeCount() {
121790
121784
  let count = 0;
121791
121785
  for (const task of this.#tasks.values()) {
121792
121786
  const s2 = task.orchestrator.state;
121793
- if (s2 === "spawning" || s2 === "running" || s2 === "stopping") count++;
121787
+ if (s2 === "spawning" || s2 === "running" || s2 === "stopping" || s2 === "warm_idle") {
121788
+ count++;
121789
+ }
121794
121790
  }
121795
121791
  return count;
121796
121792
  }
@@ -126794,4 +126790,4 @@ export {
126794
126790
  decideWorkspaceScope,
126795
126791
  serve
126796
126792
  };
126797
- //# sourceMappingURL=serve-IWCW4D3N.js.map
126793
+ //# sourceMappingURL=serve-QRYOK5U4.js.map