@schoolai/shipyard 3.34.0 → 3.34.1-nightly.20260925.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.
@@ -3,7 +3,7 @@ import {
3
3
  detectCapabilities,
4
4
  refreshMcpServers,
5
5
  registerBuiltInProfiles
6
- } from "./chunk-ACNO5PVJ.js";
6
+ } from "./chunk-KU5J66LD.js";
7
7
  import "./chunk-BNPSL6S4.js";
8
8
  import "./chunk-EM3SPYXE.js";
9
9
  import "./chunk-OZVA4QIX.js";
@@ -16,8 +16,8 @@ import {
16
16
  } from "./chunk-LBIOF4SI.js";
17
17
  import "./chunk-VHPNDDB5.js";
18
18
  import "./chunk-ZFKJAYAN.js";
19
- import "./chunk-6PQS5HFO.js";
20
- import "./chunk-F67ZC5HO.js";
19
+ import "./chunk-OFTCIXVH.js";
20
+ import "./chunk-Q4FT4GMX.js";
21
21
  import "./chunk-TIW46SCK.js";
22
22
  import "./chunk-EHQITHQX.js";
23
23
  import {
@@ -34,7 +34,7 @@ import {
34
34
  parseShipyardDeliverableUrl,
35
35
  planEditorSerializer,
36
36
  toTaskIndexEntry
37
- } from "./chunk-F67ZC5HO.js";
37
+ } from "./chunk-Q4FT4GMX.js";
38
38
  import {
39
39
  logger
40
40
  } from "./chunk-5SURQQLD.js";
@@ -35355,4 +35355,4 @@ export {
35355
35355
  runPlanBackfill,
35356
35356
  buildTaskStateStore
35357
35357
  };
35358
- //# sourceMappingURL=chunk-JGHQSLAQ.js.map
35358
+ //# sourceMappingURL=chunk-74VJA3Y6.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getDaemonVersion
4
- } from "./chunk-O7PCPQ5T.js";
4
+ } from "./chunk-ZZHFRLKK.js";
5
5
  import {
6
6
  WorkerCommandCodec,
7
7
  WorkerReplyCodec
@@ -1116,4 +1116,4 @@ export {
1116
1116
  shutdownFileWatcherGuard,
1117
1117
  guardedSubscribe
1118
1118
  };
1119
- //# sourceMappingURL=chunk-ZGLXU6XJ.js.map
1119
+ //# sourceMappingURL=chunk-CRS3BMH4.js.map
@@ -42,7 +42,7 @@ import {
42
42
  formatTaskFeedback,
43
43
  toRecord,
44
44
  toSdkContent
45
- } from "./chunk-6PQS5HFO.js";
45
+ } from "./chunk-OFTCIXVH.js";
46
46
  import {
47
47
  AGENT_IDS,
48
48
  AGENT_SYSTEM_CLAUDE_CODE,
@@ -58,7 +58,7 @@ import {
58
58
  claudeDisplayPricing,
59
59
  inflateToolResultContent,
60
60
  isImageMimeType
61
- } from "./chunk-F67ZC5HO.js";
61
+ } from "./chunk-Q4FT4GMX.js";
62
62
  import {
63
63
  AnthropicAuthStatusSchema,
64
64
  CodexAuthStatusSchema,
@@ -822,6 +822,38 @@ function supportsAdaptiveThinking(model) {
822
822
  }
823
823
  var REDACTED_THINKING_PLACEHOLDER = "[Reasoning was filtered by Anthropic]";
824
824
 
825
+ // src/services/session/subagent-task-filter.ts
826
+ var NON_SUBAGENT_TASK_TYPES = /* @__PURE__ */ new Set(["local_bash"]);
827
+ var NON_AGENT_BACKGROUND_TASK_TYPES = /* @__PURE__ */ new Set([
828
+ ...NON_SUBAGENT_TASK_TYPES,
829
+ "monitor_mcp",
830
+ "monitor_ws"
831
+ ]);
832
+ function createSubagentTaskFilter() {
833
+ const suppressed = /* @__PURE__ */ new Set();
834
+ return {
835
+ shouldSuppress(message) {
836
+ if (message.type !== "system") return false;
837
+ switch (message.subtype) {
838
+ case "task_started": {
839
+ const taskType = message.task_type;
840
+ if (taskType && NON_SUBAGENT_TASK_TYPES.has(taskType)) {
841
+ suppressed.add(message.task_id);
842
+ return true;
843
+ }
844
+ return false;
845
+ }
846
+ case "task_progress":
847
+ case "task_updated":
848
+ case "task_notification":
849
+ return suppressed.has(message.task_id);
850
+ default:
851
+ return false;
852
+ }
853
+ }
854
+ };
855
+ }
856
+
825
857
  // src/services/session/message-classifiers.ts
826
858
  var usageBetaExtensionsSchema = external_exports.object({
827
859
  service_tier: external_exports.string().nullable().optional(),
@@ -902,6 +934,13 @@ function classifySystemMessage(message) {
902
934
  lastToolName: message.last_tool_name,
903
935
  usage: mapSubagentUsage(message.usage) ?? { totalTokens: 0, toolUses: 0, durationMs: 0 }
904
936
  };
937
+ case "background_tasks_changed":
938
+ return {
939
+ type: "background_tasks_replaced",
940
+ taskIds: message.tasks.filter(
941
+ (task) => task.ambient !== true && !NON_AGENT_BACKGROUND_TASK_TYPES.has(task.task_type)
942
+ ).map((task) => task.task_id)
943
+ };
905
944
  case "compact_boundary":
906
945
  return classifyCompactBoundary(message);
907
946
  case "status":
@@ -1745,6 +1784,7 @@ var claudeCodeProfile = {
1745
1784
  notYetWired("errorMapper.classify");
1746
1785
  }
1747
1786
  },
1787
+ backgroundActivity: "level",
1748
1788
  subagentBackend: {
1749
1789
  spawnTool: "Task",
1750
1790
  /**
@@ -2580,6 +2620,7 @@ function createTranslatorCtx(args) {
2580
2620
  proposedPlanStreamPending: "",
2581
2621
  emittedToolUseItemIds: /* @__PURE__ */ new Set(),
2582
2622
  emittedToolResultItemIds: /* @__PURE__ */ new Set(),
2623
+ emittedSubAgentActivityIds: /* @__PURE__ */ new Set(),
2583
2624
  lastStreamBlockType: null,
2584
2625
  latestContextFillTokens: null
2585
2626
  };
@@ -2735,6 +2776,7 @@ var KNOWN_ITEM_TYPES = /* @__PURE__ */ new Set([
2735
2776
  "mcpToolCall",
2736
2777
  "dynamicToolCall",
2737
2778
  "collabAgentToolCall",
2779
+ "subAgentActivity",
2738
2780
  "webSearch",
2739
2781
  "imageView",
2740
2782
  "imageGeneration",
@@ -2746,10 +2788,27 @@ function isKnownItem(item) {
2746
2788
  return KNOWN_ITEM_TYPES.has(item.type);
2747
2789
  }
2748
2790
  var SUBAGENT_TOOL_NAME = "Task";
2749
- function translateSpawnAgent(item, subagentId, ctx) {
2791
+ function translateSpawnAgent(item, ctx, log) {
2750
2792
  if (item.status !== "inProgress" && item.status !== "completed") return [];
2751
2793
  if (ctx.emittedToolUseItemIds.has(item.id)) return [];
2794
+ const subagentId = item.receiverThreadIds[0];
2795
+ if (subagentId !== void 0 && ctx.emittedSubAgentActivityIds.has(subagentId)) {
2796
+ ctx.emittedToolUseItemIds.add(item.id);
2797
+ return [];
2798
+ }
2799
+ if (subagentId === void 0) {
2800
+ if (item.status === "completed") {
2801
+ log({
2802
+ event: "codex_spawn_without_receiver",
2803
+ taskId: ctx.taskId,
2804
+ itemId: item.id
2805
+ });
2806
+ ctx.emittedToolUseItemIds.add(item.id);
2807
+ }
2808
+ return [];
2809
+ }
2752
2810
  ctx.emittedToolUseItemIds.add(item.id);
2811
+ ctx.emittedSubAgentActivityIds.add(subagentId);
2753
2812
  return [
2754
2813
  {
2755
2814
  type: "assistant_message",
@@ -2831,12 +2890,26 @@ function translateWaitAgent(item, subagentId, ctx) {
2831
2890
  }
2832
2891
  return events;
2833
2892
  }
2834
- function translateCollabAgentToolCall(item, ctx) {
2893
+ function translateCollabAgentToolCall(item, ctx, log) {
2894
+ if (item.tool === "spawnAgent") return translateSpawnAgent(item, ctx, log);
2835
2895
  const subagentId = item.receiverThreadIds[0] ?? item.id;
2836
- if (item.tool === "spawnAgent") return translateSpawnAgent(item, subagentId, ctx);
2837
2896
  if (item.tool === "wait") return translateWaitAgent(item, subagentId, ctx);
2838
2897
  return [];
2839
2898
  }
2899
+ function translateSubAgentActivity(item, ctx) {
2900
+ if (item.kind !== "started") return [];
2901
+ if (ctx.emittedSubAgentActivityIds.has(item.agentThreadId)) return [];
2902
+ ctx.emittedSubAgentActivityIds.add(item.agentThreadId);
2903
+ return [
2904
+ {
2905
+ type: "background_agent_started",
2906
+ taskId: item.agentThreadId,
2907
+ toolUseId: item.id,
2908
+ description: item.agentPath,
2909
+ agentType: "codex"
2910
+ }
2911
+ ];
2912
+ }
2840
2913
  function isRecord2(value) {
2841
2914
  return value !== null && typeof value === "object" && !Array.isArray(value);
2842
2915
  }
@@ -3149,7 +3222,9 @@ function translateCodexItem(item, ctx, log) {
3149
3222
  case "webSearch":
3150
3223
  return translateWebSearchItem(item, ctx);
3151
3224
  case "collabAgentToolCall":
3152
- return translateCollabAgentToolCall(item, ctx);
3225
+ return translateCollabAgentToolCall(item, ctx, log);
3226
+ case "subAgentActivity":
3227
+ return translateSubAgentActivity(item, ctx);
3153
3228
  case "plan":
3154
3229
  return translatePlanItem(item, ctx);
3155
3230
  case "contextCompaction":
@@ -3807,6 +3882,7 @@ var codexProfile = {
3807
3882
  * Codex spawn path assembles the AGENTS.md fragment in
3808
3883
  * codex-subprocess-spawn-helpers.ts; add the rendered section there.
3809
3884
  */
3885
+ backgroundActivity: "level",
3810
3886
  subagentBackend: {
3811
3887
  /**
3812
3888
  * Codex's native `spawn_agent` tool launches a sub-thread. It is built
@@ -5407,6 +5483,7 @@ var cursorProfile = {
5407
5483
  errorMapper: {
5408
5484
  classify: classifyCursorError
5409
5485
  },
5486
+ backgroundActivity: "none",
5410
5487
  subagentBackend: {
5411
5488
  /** Cursor's `task` tool spawns a sub-thread (matches Claude's Task tool). */
5412
5489
  spawnTool: "task",
@@ -5922,6 +5999,7 @@ var devinProfile = {
5922
5999
  detail: error instanceof Error ? error.message : String(error)
5923
6000
  })
5924
6001
  },
6002
+ backgroundActivity: "edges",
5925
6003
  subagentBackend: {
5926
6004
  spawnTool: "run_subagent",
5927
6005
  progressSource: "collab-tool-call-update",
@@ -8743,6 +8821,7 @@ export {
8743
8821
  detectAnthropicAuth,
8744
8822
  supportsAdaptiveThinking,
8745
8823
  REDACTED_THINKING_PLACEHOLDER,
8824
+ createSubagentTaskFilter,
8746
8825
  classifyMessage,
8747
8826
  convertAssistantContent,
8748
8827
  skipForMainChannel,
@@ -8861,4 +8940,4 @@ export {
8861
8940
  refreshInstalledAgents,
8862
8941
  refreshCodexAuthSlice
8863
8942
  };
8864
- //# sourceMappingURL=chunk-ACNO5PVJ.js.map
8943
+ //# sourceMappingURL=chunk-KU5J66LD.js.map