@qduc/term2 0.10.0 → 0.11.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.
Files changed (207) hide show
  1. package/dist/agent.d.ts +7 -0
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +20 -14
  4. package/dist/agent.js.map +1 -1
  5. package/dist/app.d.ts.map +1 -1
  6. package/dist/app.js +10 -11
  7. package/dist/app.js.map +1 -1
  8. package/dist/components/layout/BackgroundTasksPanel.d.ts +10 -0
  9. package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -0
  10. package/dist/components/layout/BackgroundTasksPanel.js +60 -0
  11. package/dist/components/layout/BackgroundTasksPanel.js.map +1 -0
  12. package/dist/components/layout/BottomArea.d.ts +3 -0
  13. package/dist/components/layout/BottomArea.d.ts.map +1 -1
  14. package/dist/components/layout/BottomArea.js +3 -1
  15. package/dist/components/layout/BottomArea.js.map +1 -1
  16. package/dist/components/layout/StatusBar.d.ts.map +1 -1
  17. package/dist/components/layout/StatusBar.js +33 -30
  18. package/dist/components/layout/StatusBar.js.map +1 -1
  19. package/dist/components/message/CommandMessage.d.ts +1 -0
  20. package/dist/components/message/CommandMessage.d.ts.map +1 -1
  21. package/dist/components/message/CommandMessage.js +27 -4
  22. package/dist/components/message/CommandMessage.js.map +1 -1
  23. package/dist/components/message/MessageList.js +1 -1
  24. package/dist/components/message/MessageList.js.map +1 -1
  25. package/dist/components/message/SubagentActivityMessage.d.ts +1 -0
  26. package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
  27. package/dist/components/message/SubagentActivityMessage.js +3 -3
  28. package/dist/components/message/SubagentActivityMessage.js.map +1 -1
  29. package/dist/components/message/command-message-helpers.d.ts.map +1 -1
  30. package/dist/components/message/command-message-helpers.js +10 -0
  31. package/dist/components/message/command-message-helpers.js.map +1 -1
  32. package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
  33. package/dist/components/prompt/ApprovalPrompt.js +35 -8
  34. package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
  35. package/dist/hooks/settings-completion-config.d.ts.map +1 -1
  36. package/dist/hooks/settings-completion-config.js +4 -0
  37. package/dist/hooks/settings-completion-config.js.map +1 -1
  38. package/dist/hooks/use-conversation.d.ts +3 -0
  39. package/dist/hooks/use-conversation.d.ts.map +1 -1
  40. package/dist/hooks/use-conversation.js +23 -1
  41. package/dist/hooks/use-conversation.js.map +1 -1
  42. package/dist/lib/agent-client.d.ts +16 -1
  43. package/dist/lib/agent-client.d.ts.map +1 -1
  44. package/dist/lib/agent-client.js +22 -1
  45. package/dist/lib/agent-client.js.map +1 -1
  46. package/dist/lib/agent-configuration.d.ts.map +1 -1
  47. package/dist/lib/agent-configuration.js +2 -0
  48. package/dist/lib/agent-configuration.js.map +1 -1
  49. package/dist/lib/agent-factory.d.ts +7 -0
  50. package/dist/lib/agent-factory.d.ts.map +1 -1
  51. package/dist/lib/agent-factory.js +2 -0
  52. package/dist/lib/agent-factory.js.map +1 -1
  53. package/dist/lib/subagent-bridge.d.ts +37 -3
  54. package/dist/lib/subagent-bridge.d.ts.map +1 -1
  55. package/dist/lib/subagent-bridge.js +115 -8
  56. package/dist/lib/subagent-bridge.js.map +1 -1
  57. package/dist/prompts/async-subagent-delegation.d.ts +9 -0
  58. package/dist/prompts/async-subagent-delegation.d.ts.map +1 -0
  59. package/dist/prompts/async-subagent-delegation.js +36 -0
  60. package/dist/prompts/async-subagent-delegation.js.map +1 -0
  61. package/dist/prompts/async-subagent-delegation.ts +45 -0
  62. package/dist/prompts/orchestrator.md +16 -3
  63. package/dist/prompts/prompt-constructor.d.ts +1 -0
  64. package/dist/prompts/prompt-constructor.d.ts.map +1 -1
  65. package/dist/prompts/prompt-constructor.js +5 -1
  66. package/dist/prompts/prompt-constructor.js.map +1 -1
  67. package/dist/prompts/prompt-constructor.test.ts +51 -0
  68. package/dist/prompts/prompt-constructor.ts +7 -0
  69. package/dist/prompts/subagent-delegation.d.ts.map +1 -1
  70. package/dist/prompts/subagent-delegation.js +2 -1
  71. package/dist/prompts/subagent-delegation.js.map +1 -1
  72. package/dist/prompts/subagent-delegation.ts +2 -1
  73. package/dist/services/agent-runtime/execution-budget.d.ts +6 -0
  74. package/dist/services/agent-runtime/execution-budget.d.ts.map +1 -1
  75. package/dist/services/agent-runtime/execution-budget.js +32 -24
  76. package/dist/services/agent-runtime/execution-budget.js.map +1 -1
  77. package/dist/services/agent-runtime/permission-resolver.js +1 -1
  78. package/dist/services/agent-runtime/permission-resolver.js.map +1 -1
  79. package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
  80. package/dist/services/approval/approval-flow-coordinator.js +12 -2
  81. package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
  82. package/dist/services/approval/shell-sandbox-approval.d.ts.map +1 -1
  83. package/dist/services/approval/shell-sandbox-approval.js +5 -4
  84. package/dist/services/approval/shell-sandbox-approval.js.map +1 -1
  85. package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
  86. package/dist/services/conversation/conversation-adapter.js +2 -0
  87. package/dist/services/conversation/conversation-adapter.js.map +1 -1
  88. package/dist/services/conversation/conversation-events.d.ts +12 -1
  89. package/dist/services/conversation/conversation-events.d.ts.map +1 -1
  90. package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
  91. package/dist/services/conversation/conversation-orchestrator.js +138 -22
  92. package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
  93. package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
  94. package/dist/services/conversation/conversation-replay.js +1 -0
  95. package/dist/services/conversation/conversation-replay.js.map +1 -1
  96. package/dist/services/conversation/conversation-service.d.ts +22 -0
  97. package/dist/services/conversation/conversation-service.d.ts.map +1 -1
  98. package/dist/services/conversation/conversation-service.js +40 -0
  99. package/dist/services/conversation/conversation-service.js.map +1 -1
  100. package/dist/services/conversation/conversation-store.d.ts +6 -0
  101. package/dist/services/conversation/conversation-store.d.ts.map +1 -1
  102. package/dist/services/conversation/conversation-store.js +17 -0
  103. package/dist/services/conversation/conversation-store.js.map +1 -1
  104. package/dist/services/conversation-agent-client.d.ts +13 -0
  105. package/dist/services/conversation-agent-client.d.ts.map +1 -1
  106. package/dist/services/logging/conversation-log-events.d.ts +1 -0
  107. package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
  108. package/dist/services/logging/conversation-log-events.js.map +1 -1
  109. package/dist/services/logging/conversation-logger.d.ts.map +1 -1
  110. package/dist/services/logging/conversation-logger.js +1 -0
  111. package/dist/services/logging/conversation-logger.js.map +1 -1
  112. package/dist/services/plan-mode-interceptor.js +2 -2
  113. package/dist/services/plan-mode-interceptor.js.map +1 -1
  114. package/dist/services/session/session-composition.d.ts +23 -0
  115. package/dist/services/session/session-composition.d.ts.map +1 -1
  116. package/dist/services/session/session-composition.js +65 -1
  117. package/dist/services/session/session-composition.js.map +1 -1
  118. package/dist/services/session/turn-workflow.d.ts.map +1 -1
  119. package/dist/services/session/turn-workflow.js +7 -1
  120. package/dist/services/session/turn-workflow.js.map +1 -1
  121. package/dist/services/settings/settings-merger.d.ts.map +1 -1
  122. package/dist/services/settings/settings-merger.js +2 -0
  123. package/dist/services/settings/settings-merger.js.map +1 -1
  124. package/dist/services/settings/settings-schema.d.ts +15 -0
  125. package/dist/services/settings/settings-schema.d.ts.map +1 -1
  126. package/dist/services/settings/settings-schema.js +23 -0
  127. package/dist/services/settings/settings-schema.js.map +1 -1
  128. package/dist/services/subagents/execution-runner.d.ts +3 -0
  129. package/dist/services/subagents/execution-runner.d.ts.map +1 -1
  130. package/dist/services/subagents/execution-runner.js +33 -7
  131. package/dist/services/subagents/execution-runner.js.map +1 -1
  132. package/dist/services/subagents/mentor-runner.d.ts +5 -1
  133. package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
  134. package/dist/services/subagents/mentor-runner.js +40 -2
  135. package/dist/services/subagents/mentor-runner.js.map +1 -1
  136. package/dist/services/subagents/runtime.d.ts +2 -0
  137. package/dist/services/subagents/runtime.d.ts.map +1 -1
  138. package/dist/services/subagents/runtime.js +20 -0
  139. package/dist/services/subagents/runtime.js.map +1 -1
  140. package/dist/services/subagents/subagent-async-registry.d.ts +39 -0
  141. package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -0
  142. package/dist/services/subagents/subagent-async-registry.js +233 -0
  143. package/dist/services/subagents/subagent-async-registry.js.map +1 -0
  144. package/dist/services/subagents/subagent-manager.d.ts +17 -0
  145. package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
  146. package/dist/services/subagents/subagent-manager.js +45 -1
  147. package/dist/services/subagents/subagent-manager.js.map +1 -1
  148. package/dist/services/subagents/subagent-notification-store.d.ts +89 -0
  149. package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -0
  150. package/dist/services/subagents/subagent-notification-store.js +167 -0
  151. package/dist/services/subagents/subagent-notification-store.js.map +1 -0
  152. package/dist/services/subagents/subagent-session.d.ts +12 -1
  153. package/dist/services/subagents/subagent-session.d.ts.map +1 -1
  154. package/dist/services/subagents/subagent-session.js +29 -6
  155. package/dist/services/subagents/subagent-session.js.map +1 -1
  156. package/dist/services/subagents/types.d.ts +11 -0
  157. package/dist/services/subagents/types.d.ts.map +1 -1
  158. package/dist/services/subagents/types.js +1 -0
  159. package/dist/services/subagents/types.js.map +1 -1
  160. package/dist/services/subagents/utils.d.ts +6 -0
  161. package/dist/services/subagents/utils.d.ts.map +1 -1
  162. package/dist/services/subagents/utils.js +21 -0
  163. package/dist/services/subagents/utils.js.map +1 -1
  164. package/dist/tools/agent/run-subagent-async.d.ts +25 -0
  165. package/dist/tools/agent/run-subagent-async.d.ts.map +1 -0
  166. package/dist/tools/agent/run-subagent-async.js +178 -0
  167. package/dist/tools/agent/run-subagent-async.js.map +1 -0
  168. package/dist/tools/system/shell.d.ts +1 -3
  169. package/dist/tools/system/shell.d.ts.map +1 -1
  170. package/dist/tools/system/shell.js +32 -15
  171. package/dist/tools/system/shell.js.map +1 -1
  172. package/dist/tools/types.d.ts +1 -0
  173. package/dist/tools/types.d.ts.map +1 -1
  174. package/dist/types/message.d.ts +1 -0
  175. package/dist/types/message.d.ts.map +1 -1
  176. package/dist/types/message.js.map +1 -1
  177. package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
  178. package/dist/utils/conversation/conversation-event-handler.js +1 -0
  179. package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
  180. package/dist/utils/settings-command.d.ts.map +1 -1
  181. package/dist/utils/settings-command.js +10 -0
  182. package/dist/utils/settings-command.js.map +1 -1
  183. package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts +8 -0
  184. package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts.map +1 -1
  185. package/dist/utils/shell/sandbox/docker-host-control-grants.js +21 -0
  186. package/dist/utils/shell/sandbox/docker-host-control-grants.js.map +1 -1
  187. package/dist/utils/shell/sandbox/docker-host-control.d.ts +21 -0
  188. package/dist/utils/shell/sandbox/docker-host-control.d.ts.map +1 -1
  189. package/dist/utils/shell/sandbox/docker-host-control.js +132 -0
  190. package/dist/utils/shell/sandbox/docker-host-control.js.map +1 -1
  191. package/dist/utils/shell/sandbox/sandbox-failure-classifier.d.ts +8 -1
  192. package/dist/utils/shell/sandbox/sandbox-failure-classifier.d.ts.map +1 -1
  193. package/dist/utils/shell/sandbox/sandbox-failure-classifier.js +13 -1
  194. package/dist/utils/shell/sandbox/sandbox-failure-classifier.js.map +1 -1
  195. package/dist/utils/shell/sandbox/sandbox-network-approval.d.ts +2 -1
  196. package/dist/utils/shell/sandbox/sandbox-network-approval.d.ts.map +1 -1
  197. package/dist/utils/shell/sandbox/sandbox-network-approval.js +17 -1
  198. package/dist/utils/shell/sandbox/sandbox-network-approval.js.map +1 -1
  199. package/dist/utils/shell/sandbox/sandbox-network-store.d.ts +20 -0
  200. package/dist/utils/shell/sandbox/sandbox-network-store.d.ts.map +1 -0
  201. package/dist/utils/shell/sandbox/sandbox-network-store.js +99 -0
  202. package/dist/utils/shell/sandbox/sandbox-network-store.js.map +1 -0
  203. package/dist/utils/streaming/extract-command-messages.d.ts +2 -0
  204. package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
  205. package/dist/utils/streaming/extract-command-messages.js +26 -4
  206. package/dist/utils/streaming/extract-command-messages.js.map +1 -1
  207. package/package.json +1 -1
@@ -4,11 +4,13 @@ import { isAbortLike, safeEmit } from './utils.js';
4
4
  import { normalizeAgentRunUsage, extractUsage } from '../../utils/ai/token-usage.js';
5
5
  import { adaptLegacyRole, adaptLegacyDefinition } from '../agent-runtime/legacy-adapter.js';
6
6
  import { createAgentRuntimeFromSubagentRuntime } from '../agent-runtime/compose-agent-runtime.js';
7
+ import { SubagentRegistryError } from './subagent-async-registry.js';
7
8
  export class SubagentManager {
8
9
  #logger;
9
10
  #settings;
10
11
  #onEvent;
11
12
  #runtime;
13
+ #mentorActive = false;
12
14
  constructor(deps) {
13
15
  this.#logger = deps.logger;
14
16
  this.#settings = deps.settings;
@@ -17,6 +19,7 @@ export class SubagentManager {
17
19
  }
18
20
  resetMentorSession() {
19
21
  this.#runtime.mentorRunner.reset();
22
+ this.#runtime.asyncRegistry.reset();
20
23
  }
21
24
  clearCache() {
22
25
  this.#runtime.nestedRunner.clearCache();
@@ -67,8 +70,14 @@ export class SubagentManager {
67
70
  parentTool: request.parentTool,
68
71
  });
69
72
  try {
73
+ if (request.role === 'mentor') {
74
+ if (this.#mentorActive || this.#runtime.asyncRegistry.hasActiveRunForRole('mentor')) {
75
+ throw new SubagentRegistryError('already_active', 'Mentor session is already active');
76
+ }
77
+ this.#mentorActive = true;
78
+ }
70
79
  const result = request.role === 'mentor'
71
- ? await this.#runtime.mentorRunner.run(agentId, request.task, request.signal)
80
+ ? await this.#runtime.mentorRunner.run(agentId, request.task, request.signal, undefined, request.executionBudget)
72
81
  : await this.#runtime.executionRunner.run(agentId, request, this.#resolveRoleDefinition(request.role));
73
82
  safeEmit(this.#logger, this.#onEvent, { type: 'subagent_completed', result });
74
83
  return result;
@@ -95,6 +104,41 @@ export class SubagentManager {
95
104
  safeEmit(this.#logger, this.#onEvent, { type: 'subagent_completed', result });
96
105
  return result;
97
106
  }
107
+ finally {
108
+ if (request.role === 'mentor')
109
+ this.#mentorActive = false;
110
+ }
111
+ }
112
+ /**
113
+ * Start an asynchronous subagent run.
114
+ *
115
+ * Delegates to the SubagentAsyncRegistry, which owns the live session and
116
+ * run lifecycle. The returned handle exposes only the live-run contract.
117
+ */
118
+ startRunAsync(request) {
119
+ if (request.role === 'mentor' && this.#mentorActive) {
120
+ throw new SubagentRegistryError('already_active', 'Mentor session is already active');
121
+ }
122
+ return this.#runtime.asyncRegistry.startRun(request);
123
+ }
124
+ /**
125
+ * Retrieve the result of a previously started asynchronous subagent run.
126
+ */
127
+ getRunResult(runId, signal) {
128
+ return this.#runtime.asyncRegistry.getResult(runId, signal);
129
+ }
130
+ abortAsyncRun(runId) {
131
+ this.#runtime.asyncRegistry.abortRun(runId);
132
+ }
133
+ resetAsyncRuns() {
134
+ this.#runtime.asyncRegistry.reset();
135
+ }
136
+ /** Cancel all live asynchronous runs for an explicit parent abort. */
137
+ cancelAllAsyncRuns() {
138
+ this.#runtime.asyncRegistry.cancelAllRuns();
139
+ }
140
+ dispose() {
141
+ this.#runtime.asyncRegistry.dispose();
98
142
  }
99
143
  }
100
144
  //# sourceMappingURL=subagent-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-manager.js","sourceRoot":"","sources":["../../../source/services/subagents/subagent-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,OAAO,EAAE,qBAAqB,EAAwB,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,qCAAqC,EAAE,MAAM,2CAA2C,CAAC;AAIlG,MAAM,OAAO,eAAe;IAC1B,OAAO,CAAkB;IACzB,SAAS,CAAmB;IAC5B,QAAQ,CAAsC;IAC9C,QAAQ,CAAkB;IAE1B,YAAY,IASX;QACC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,UAAU;QACR,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IAC1C,CAAC;IAED,gBAAgB,CAAC,IAA2B;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,YAAY,CAAC,IAA2B;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAwB,EAAE,OAAiB,EAAE,OAAiB;QAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;OAMG;IACH,eAAe;QACb,OAAO,qCAAqC,CAAC;YAC3C,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC9C,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;YACxC,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,IAAY;QACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAwB;QAChC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAE7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5G,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;YACpC,IAAI,EAAE,kBAAkB;YACxB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,KAAK,QAAQ;gBACvB,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;gBAC7E,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3G,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBACxC,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,KAAK,EAAE,OAAO;gBACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACxD,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;YAEjF,MAAM,MAAM,GAAmB;gBAC7B,OAAO;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;gBACxC,SAAS,EAAE,EAAE;gBACb,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,EAAE;gBACb,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;gBACtC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5B,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"subagent-manager.js","sourceRoot":"","sources":["../../../source/services/subagents/subagent-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import type { ConversationEvent } from '../conversation/conversation-events.js';
2
+ /** A background subagent run that finished and still owes the main agent a notification. */
3
+ export interface BackgroundSubagentNotification {
4
+ runId: string;
5
+ role: string;
6
+ status: 'completed' | 'failed' | 'cancelled';
7
+ preview: string;
8
+ error?: string;
9
+ completedAt: number;
10
+ }
11
+ export type BackgroundSubagentTaskStatus = 'running' | 'completed' | 'failed' | 'cancelled';
12
+ /** Conversation-scoped projection of one background subagent lifecycle. */
13
+ export interface BackgroundSubagentTask {
14
+ runId: string;
15
+ role: string;
16
+ task: string;
17
+ status: BackgroundSubagentTaskStatus;
18
+ startedAt: number;
19
+ completedAt?: number;
20
+ }
21
+ /**
22
+ * The delivery half of {@link SubagentNotificationStore}, for callers that hand
23
+ * pending notifications to the main agent but never produce them.
24
+ */
25
+ export interface BackgroundSubagentNotificationPort {
26
+ readonly pendingCount: number;
27
+ drain(): BackgroundSubagentNotification[];
28
+ retain(notifications: readonly BackgroundSubagentNotification[]): void;
29
+ }
30
+ /** Read-only lifecycle projection used by the background-tasks UI. */
31
+ export interface BackgroundSubagentTaskPort {
32
+ getSnapshot(): readonly BackgroundSubagentTask[];
33
+ setObserver(observer: (() => void) | null): void;
34
+ }
35
+ export interface SubagentNotificationStoreDeps {
36
+ /** Injectable clock so completion timestamps stay deterministic under test. */
37
+ now?: () => number;
38
+ /** How long terminal tasks remain visible in the background overview. */
39
+ recentTaskRetentionMs?: number;
40
+ /**
41
+ * Upper bound on remembered run ids. The async registry caps sessions at 50
42
+ * and TTLs terminal runs out after 30 minutes, so a few hundred ids covers
43
+ * every run that could still be replayed while staying O(1) in memory.
44
+ */
45
+ deliveredIdCap?: number;
46
+ }
47
+ export declare const BACKGROUND_TASK_RECENT_RETENTION_MS = 5000;
48
+ /**
49
+ * Pending notifications for background (async) subagent runs.
50
+ *
51
+ * Owns three invariants the callers must not have to re-derive:
52
+ * - Only `subagent_completed` events flagged `async: true` are notifiable.
53
+ * Foreground and nested runs emit the same event type without the flag and
54
+ * must never surface a notification.
55
+ * - A run is announced at most once, ever. The registry already guards against
56
+ * double-settling a run, so the duplicates guarded here come from buffered
57
+ * event flushes and conversation replay, which can re-present an event long
58
+ * after it was first seen — including after it was already delivered.
59
+ * - Delivery is confirmed by the caller, not by reading. `drain()` hands over
60
+ * the pending batch and clears it; a caller whose delivery failed calls
61
+ * `retain()` to put the batch back at the front of the queue. Drain/retain
62
+ * was chosen over peek/commit because the common path (delivery succeeds) is
63
+ * then a single call, and because retained notifications are handed back as
64
+ * values rather than leaving the store holding provisional state. A run id
65
+ * stays deduped across both paths, so a retained notification is redelivered
66
+ * exactly once and a replayed event for it is still dropped.
67
+ */
68
+ export declare class SubagentNotificationStore implements BackgroundSubagentNotificationPort {
69
+ #private;
70
+ constructor(deps?: SubagentNotificationStoreDeps);
71
+ /**
72
+ * Updates the read-only task projection for async starts and completions.
73
+ * Internal tool events intentionally do not enter this state.
74
+ */
75
+ recordLifecycle(event: ConversationEvent): boolean;
76
+ getTaskSnapshot(): readonly BackgroundSubagentTask[];
77
+ /**
78
+ * Records a completion event when it belongs to a background run that has not
79
+ * been seen before. Returns whether the notification was novel, so a caller
80
+ * can act (wake a turn) only on first sight.
81
+ */
82
+ enqueue(event: ConversationEvent): boolean;
83
+ get pendingCount(): number;
84
+ /** Hands over every pending notification in completion order and clears them. */
85
+ drain(): BackgroundSubagentNotification[];
86
+ /** Returns undelivered notifications to the queue, ahead of anything newer. */
87
+ retain(notifications: readonly BackgroundSubagentNotification[]): void;
88
+ }
89
+ //# sourceMappingURL=subagent-notification-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-notification-store.d.ts","sourceRoot":"","sources":["../../../source/services/subagents/subagent-notification-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAIhF,4FAA4F;AAC5F,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,4BAA4B,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5F,2EAA2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,4BAA4B,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,KAAK,IAAI,8BAA8B,EAAE,CAAC;IAC1C,MAAM,CAAC,aAAa,EAAE,SAAS,8BAA8B,EAAE,GAAG,IAAI,CAAC;CACxE;AAED,sEAAsE;AACtE,MAAM,WAAW,0BAA0B;IACzC,WAAW,IAAI,SAAS,sBAAsB,EAAE,CAAC;IACjD,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,6BAA6B;IAC5C,+EAA+E;IAC/E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAGD,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,yBAA0B,YAAW,kCAAkC;;IASlF,YAAY,IAAI,GAAE,6BAAkC,EAInD;IAED;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CA2CjD;IAED,eAAe,IAAI,SAAS,sBAAsB,EAAE,CAQnD;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAkBzC;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,iFAAiF;IACjF,KAAK,IAAI,8BAA8B,EAAE,CAOxC;IAED,+EAA+E;IAC/E,MAAM,CAAC,aAAa,EAAE,SAAS,8BAA8B,EAAE,GAAG,IAAI,CASrE;CAiBF"}
@@ -0,0 +1,167 @@
1
+ import { truncatePreview } from './utils.js';
2
+ const DEFAULT_DELIVERED_ID_CAP = 256;
3
+ export const BACKGROUND_TASK_RECENT_RETENTION_MS = 5_000;
4
+ /**
5
+ * Pending notifications for background (async) subagent runs.
6
+ *
7
+ * Owns three invariants the callers must not have to re-derive:
8
+ * - Only `subagent_completed` events flagged `async: true` are notifiable.
9
+ * Foreground and nested runs emit the same event type without the flag and
10
+ * must never surface a notification.
11
+ * - A run is announced at most once, ever. The registry already guards against
12
+ * double-settling a run, so the duplicates guarded here come from buffered
13
+ * event flushes and conversation replay, which can re-present an event long
14
+ * after it was first seen — including after it was already delivered.
15
+ * - Delivery is confirmed by the caller, not by reading. `drain()` hands over
16
+ * the pending batch and clears it; a caller whose delivery failed calls
17
+ * `retain()` to put the batch back at the front of the queue. Drain/retain
18
+ * was chosen over peek/commit because the common path (delivery succeeds) is
19
+ * then a single call, and because retained notifications are handed back as
20
+ * values rather than leaving the store holding provisional state. A run id
21
+ * stays deduped across both paths, so a retained notification is redelivered
22
+ * exactly once and a replayed event for it is still dropped.
23
+ */
24
+ export class SubagentNotificationStore {
25
+ #pending = new Map();
26
+ #seen = new Set();
27
+ #tasks = new Map();
28
+ #settledTaskIds = new Set();
29
+ #now;
30
+ #deliveredIdCap;
31
+ #recentTaskRetentionMs;
32
+ constructor(deps = {}) {
33
+ this.#now = deps.now ?? Date.now;
34
+ this.#deliveredIdCap = Math.max(1, deps.deliveredIdCap ?? DEFAULT_DELIVERED_ID_CAP);
35
+ this.#recentTaskRetentionMs = Math.max(0, deps.recentTaskRetentionMs ?? BACKGROUND_TASK_RECENT_RETENTION_MS);
36
+ }
37
+ /**
38
+ * Updates the read-only task projection for async starts and completions.
39
+ * Internal tool events intentionally do not enter this state.
40
+ */
41
+ recordLifecycle(event) {
42
+ if (event.type === 'subagent_started' && event.async === true) {
43
+ if (this.#settledTaskIds.has(event.agentId))
44
+ return false;
45
+ const existing = this.#tasks.get(event.agentId);
46
+ if (existing && existing.status !== 'running')
47
+ return false;
48
+ if (existing?.status === 'running' && existing.role === event.role && existing.task === event.task) {
49
+ return false;
50
+ }
51
+ this.#tasks.set(event.agentId, {
52
+ runId: event.agentId,
53
+ role: event.role,
54
+ task: event.task,
55
+ status: 'running',
56
+ startedAt: existing?.startedAt ?? this.#now(),
57
+ });
58
+ return true;
59
+ }
60
+ if (event.type !== 'subagent_completed' || event.async !== true)
61
+ return false;
62
+ const result = event.result;
63
+ if (!result?.agentId)
64
+ return false;
65
+ if (this.#settledTaskIds.has(result.agentId))
66
+ return false;
67
+ const existing = this.#tasks.get(result.agentId);
68
+ if (existing && existing.status !== 'running')
69
+ return false;
70
+ const completedAt = this.#now();
71
+ this.#tasks.set(result.agentId, {
72
+ runId: result.agentId,
73
+ role: existing?.role ?? result.role,
74
+ task: existing?.task ?? '',
75
+ status: result.status,
76
+ startedAt: existing?.startedAt ?? completedAt,
77
+ completedAt,
78
+ });
79
+ this.#settledTaskIds.add(result.agentId);
80
+ while (this.#settledTaskIds.size > this.#deliveredIdCap) {
81
+ const oldest = this.#settledTaskIds.values().next().value;
82
+ if (oldest === undefined)
83
+ break;
84
+ this.#settledTaskIds.delete(oldest);
85
+ }
86
+ return true;
87
+ }
88
+ getTaskSnapshot() {
89
+ const now = this.#now();
90
+ for (const [runId, task] of this.#tasks) {
91
+ if (task.completedAt !== undefined && now - task.completedAt >= this.#recentTaskRetentionMs) {
92
+ this.#tasks.delete(runId);
93
+ }
94
+ }
95
+ return [...this.#tasks.values()];
96
+ }
97
+ /**
98
+ * Records a completion event when it belongs to a background run that has not
99
+ * been seen before. Returns whether the notification was novel, so a caller
100
+ * can act (wake a turn) only on first sight.
101
+ */
102
+ enqueue(event) {
103
+ if (event?.type !== 'subagent_completed' || event.async !== true)
104
+ return false;
105
+ const result = event.result;
106
+ const runId = result?.agentId;
107
+ if (!result || !runId)
108
+ return false;
109
+ if (this.#seen.has(runId))
110
+ return false;
111
+ this.#pending.set(runId, {
112
+ runId,
113
+ role: result.role,
114
+ status: result.status,
115
+ preview: truncatePreview(result.finalText || result.error),
116
+ ...(result.error ? { error: result.error } : {}),
117
+ completedAt: this.#now(),
118
+ });
119
+ this.#seen.add(runId);
120
+ this.#evictOldestSeen();
121
+ return true;
122
+ }
123
+ get pendingCount() {
124
+ return this.#pending.size;
125
+ }
126
+ /** Hands over every pending notification in completion order and clears them. */
127
+ drain() {
128
+ const drained = [...this.#pending.values()];
129
+ this.#pending.clear();
130
+ // Handing the batch over is the point at which old ids become evictable:
131
+ // nothing is owed a notification any more, only replay protection.
132
+ this.#evictOldestSeen();
133
+ return drained;
134
+ }
135
+ /** Returns undelivered notifications to the queue, ahead of anything newer. */
136
+ retain(notifications) {
137
+ if (notifications.length === 0)
138
+ return;
139
+ const newer = [...this.#pending.values()];
140
+ this.#pending.clear();
141
+ for (const notification of notifications) {
142
+ this.#pending.set(notification.runId, notification);
143
+ this.#seen.add(notification.runId);
144
+ }
145
+ for (const notification of newer)
146
+ this.#pending.set(notification.runId, notification);
147
+ }
148
+ /**
149
+ * Drops the oldest remembered ids once the cap is exceeded, skipping runs that
150
+ * still owe a notification: correctness of an undelivered notification wins
151
+ * over the memory bound, and the pending queue is itself bounded by the number
152
+ * of runs the registry will retain. Forgetting an id only costs replay
153
+ * protection for a run that was delivered long ago.
154
+ */
155
+ #evictOldestSeen() {
156
+ if (this.#seen.size <= this.#deliveredIdCap)
157
+ return;
158
+ for (const runId of this.#seen) {
159
+ if (this.#seen.size <= this.#deliveredIdCap)
160
+ return;
161
+ if (this.#pending.has(runId))
162
+ continue;
163
+ this.#seen.delete(runId);
164
+ }
165
+ }
166
+ }
167
+ //# sourceMappingURL=subagent-notification-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-notification-store.js","sourceRoot":"","sources":["../../../source/services/subagents/subagent-notification-store.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
- import type { Agent, Runner } from '@openai/agents';
1
+ import type { Agent, Runner, AgentInputItem } from '@openai/agents';
2
+ import type { SavedToolExecution } from '../tool-execution-ledger.js';
2
3
  /**
3
4
  * General-purpose subagent session. Replaces the private MentorSession shape.
4
5
  *
5
6
  * For persistent sessions (e.g. mentor): reuse across calls, track store and previousResponseId.
6
7
  * For one-shot runs (e.g. run_subagent): create a new session per call, discard after.
7
8
  */
9
+ export type SubagentSessionState = {
10
+ history: AgentInputItem[];
11
+ previousResponseId: string | null;
12
+ toolLedger: SavedToolExecution[];
13
+ };
8
14
  export declare class SubagentSession {
9
15
  #private;
10
16
  readonly id: string;
@@ -15,6 +21,10 @@ export declare class SubagentSession {
15
21
  get agent(): Agent | null;
16
22
  get previousResponseId(): string | null;
17
23
  reset(): void;
24
+ exportState(): SubagentSessionState;
25
+ importState(state: SubagentSessionState): void;
26
+ getUserTurnCount(): number;
27
+ trimHistory(maxUserTurns: number): void;
18
28
  switchProvider(provider: string): void;
19
29
  ensureRunner(provider: string, createRunner: (providerId: string) => Runner | null): Runner | null;
20
30
  ensureAgent(createAgent: () => Agent): Agent;
@@ -22,5 +32,6 @@ export declare class SubagentSession {
22
32
  getInput(task: string, supportsConversationChaining: boolean): any;
23
33
  getRunOptions(supportsConversationChaining: boolean, maxTurns: number): Record<string, any>;
24
34
  appendOutput(result: any): void;
35
+ setToolLedger(toolLedger: SavedToolExecution[]): void;
25
36
  }
26
37
  //# sourceMappingURL=subagent-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-session.d.ts","sourceRoot":"","sources":["../../../source/services/subagents/subagent-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGpD;;;;;GAKG;AACH,qBAAa,eAAe;;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAOtB,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAGnC;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAExB;IAED,IAAI,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEtC;IAED,KAAK,IAAI,IAAI,CASZ;IAED,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQrC;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAKjG;IAED,WAAW,CAAC,WAAW,EAAE,MAAM,KAAK,GAAG,KAAK,CAM3C;IAED,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpC;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,OAAO,GAAG,GAAG,CAEjE;IAED,aAAa,CAAC,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAQ1F;IAED,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAK9B;CACF"}
1
+ {"version":3,"file":"subagent-session.d.ts","sourceRoot":"","sources":["../../../source/services/subagents/subagent-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC,CAAC;AAEF,qBAAa,eAAe;;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAQtB,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAGnC;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAExB;IAED,IAAI,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEtC;IAED,KAAK,IAAI,IAAI,CAUZ;IAED,WAAW,IAAI,oBAAoB,CAMlC;IAED,WAAW,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAU7C;IAED,gBAAgB,IAAI,MAAM,CAEzB;IAED,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAEtC;IAED,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQrC;IAED,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAKjG;IAED,WAAW,CAAC,WAAW,EAAE,MAAM,KAAK,GAAG,KAAK,CAM3C;IAED,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpC;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,EAAE,OAAO,GAAG,GAAG,CAEjE;IAED,aAAa,CAAC,4BAA4B,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAQ1F;IAED,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAK9B;IAED,aAAa,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAEpD;CACF"}
@@ -1,10 +1,4 @@
1
1
  import { ConversationStore } from '../conversation/conversation-store.js';
2
- /**
3
- * General-purpose subagent session. Replaces the private MentorSession shape.
4
- *
5
- * For persistent sessions (e.g. mentor): reuse across calls, track store and previousResponseId.
6
- * For one-shot runs (e.g. run_subagent): create a new session per call, discard after.
7
- */
8
2
  export class SubagentSession {
9
3
  id;
10
4
  role;
@@ -13,6 +7,7 @@ export class SubagentSession {
13
7
  #agent = null;
14
8
  #store = null;
15
9
  #previousResponseId = null;
10
+ #toolLedger = [];
16
11
  constructor(id, role) {
17
12
  this.id = id;
18
13
  this.role = role;
@@ -34,11 +29,36 @@ export class SubagentSession {
34
29
  this.#store.clear();
35
30
  }
36
31
  this.#previousResponseId = null;
32
+ this.#toolLedger = [];
37
33
  this.#store = null;
38
34
  this.#runner = null;
39
35
  this.#provider = null;
40
36
  this.#agent = null;
41
37
  }
38
+ exportState() {
39
+ return {
40
+ history: this.#store?.getHistory() ?? [],
41
+ previousResponseId: this.#previousResponseId,
42
+ toolLedger: [...this.#toolLedger],
43
+ };
44
+ }
45
+ importState(state) {
46
+ this.#store?.clear();
47
+ if (!this.#store) {
48
+ this.#store = new ConversationStore();
49
+ }
50
+ for (const item of state.history ?? []) {
51
+ this.#store.addImportedItem(item);
52
+ }
53
+ this.#previousResponseId = state.previousResponseId ?? null;
54
+ this.#toolLedger = state.toolLedger ? [...state.toolLedger] : [];
55
+ }
56
+ getUserTurnCount() {
57
+ return this.#store?.listUserTurns().length ?? 0;
58
+ }
59
+ trimHistory(maxUserTurns) {
60
+ this.#store?.trimUserTurns(maxUserTurns);
61
+ }
42
62
  switchProvider(provider) {
43
63
  if (this.#provider !== provider) {
44
64
  this.#agent = null;
@@ -82,5 +102,8 @@ export class SubagentSession {
82
102
  this.#previousResponseId = result.responseId;
83
103
  }
84
104
  }
105
+ setToolLedger(toolLedger) {
106
+ this.#toolLedger = [...toolLedger];
107
+ }
85
108
  }
86
109
  //# sourceMappingURL=subagent-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subagent-session.js","sourceRoot":"","sources":["../../../source/services/subagents/subagent-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IACjB,EAAE,CAAS;IACX,IAAI,CAAS;IACtB,SAAS,GAAkB,IAAI,CAAC;IAChC,OAAO,GAAkB,IAAI,CAAC;IAC9B,MAAM,GAAiB,IAAI,CAAC;IAC5B,MAAM,GAA6B,IAAI,CAAC;IACxC,mBAAmB,GAAkB,IAAI,CAAC;IAE1C,YAAY,EAAU,EAAE,IAAY;QAClC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,cAAc,CAAC,QAAgB;QAC7B,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,YAAmD;QAChF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,WAAwB;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,cAAc,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,4BAAqC;QAC1D,OAAO,4BAA4B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,UAAU,EAAE,CAAC;IACzE,CAAC;IAED,aAAa,CAAC,4BAAqC,EAAE,QAAgB;QACnE,OAAO;YACL,MAAM,EAAE,KAAK;YACb,QAAQ;YACR,GAAG,CAAC,4BAA4B,IAAI,IAAI,CAAC,mBAAmB;gBAC1D,CAAC,CAAC,EAAE,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBAClD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAW;QACtB,IAAI,CAAC,MAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/C,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"subagent-session.js","sourceRoot":"","sources":["../../../source/services/subagents/subagent-session.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import type { NormalizedUsage } from '../../utils/ai/token-usage.js';
2
2
  import type { ExecutionBudget } from '../agent-runtime/execution-budget.js';
3
3
  export declare const SUBAGENT_ROLES: readonly ['explorer', 'worker', 'researcher', 'mentor', 'librarian'];
4
+ export declare const PHASE_1_ASYNC_SUBAGENT_ROLES: readonly ['explorer', 'researcher', 'mentor'];
4
5
  export type SupportedSubagentRole = (typeof SUBAGENT_ROLES)[number];
6
+ export type Phase1AsyncSubagentRole = (typeof PHASE_1_ASYNC_SUBAGENT_ROLES)[number];
5
7
  export type SubagentRole = SupportedSubagentRole | string;
6
8
  export interface SubagentRequest {
7
9
  role: SubagentRole;
@@ -14,6 +16,8 @@ export interface SubagentRequest {
14
16
  parentTool?: string;
15
17
  /** Execution-tree budget for tracking aggregate resource usage. */
16
18
  executionBudget?: ExecutionBudget;
19
+ /** Continue a completed async session. */
20
+ continueRunId?: string;
17
21
  }
18
22
  export interface SubagentDefinition {
19
23
  role: SubagentRole;
@@ -78,4 +82,11 @@ export interface SubagentResult {
78
82
  /** SDK nested run result used to propagate/resume delegated approvals. */
79
83
  nestedRunResult?: unknown;
80
84
  }
85
+ /** The only state exposed while an asynchronous run is live. */
86
+ export interface SubagentRunHandle {
87
+ runId: string;
88
+ role: string;
89
+ status: 'running';
90
+ task: string;
91
+ }
81
92
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../source/services/subagents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,eAAO,MAAM,cAAc,YAAI,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AACnG,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../source/services/subagents/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAE5E,eAAO,MAAM,cAAc,YAAI,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AACnG,eAAO,MAAM,4BAA4B,YAAI,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAC1F,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AACpF,MAAM,MAAM,YAAY,GAAG,qBAAqB,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -1,2 +1,3 @@
1
1
  export const SUBAGENT_ROLES = ['explorer', 'worker', 'researcher', 'mentor', 'librarian'];
2
+ export const PHASE_1_ASYNC_SUBAGENT_ROLES = ['explorer', 'researcher', 'mentor'];
2
3
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/services/subagents/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/services/subagents/types.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AACnG,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC"}
@@ -22,5 +22,11 @@ export declare function createCompositeAbortSignal(...signals: (AbortSignal | un
22
22
  signal: AbortSignal;
23
23
  cleanup: () => void;
24
24
  } | undefined;
25
+ export declare const MAX_PREVIEW_LENGTH = 300;
26
+ /**
27
+ * Condenses subagent output into a single-line, length-bounded preview: the
28
+ * first paragraph with whitespace collapsed, ellipsised at MAX_PREVIEW_LENGTH.
29
+ */
30
+ export declare function truncatePreview(text: unknown): string;
25
31
  export declare function createAbortError(message?: string): Error;
26
32
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../source/services/subagents/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAK/E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAInD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAWrD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CA2BpD;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAiBnH;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAE9G;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAE5C;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAMpE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,OAAO,EAAE,CAAC,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAC7C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,SAAS,CAqC1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAkC,GAAG,KAAK,CAIjF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../source/services/subagents/utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAK/E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAInD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAWrD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CA2BpD;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAiBnH;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAE9G;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAE5C;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAMpE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,OAAO,EAAE,CAAC,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAC7C;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,SAAS,CAqC1D;AAED,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAmBrD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAkC,GAAG,KAAK,CAIjF"}
@@ -120,6 +120,27 @@ export function createCompositeAbortSignal(...signals) {
120
120
  }
121
121
  return { signal: controller.signal, cleanup };
122
122
  }
123
+ export const MAX_PREVIEW_LENGTH = 300;
124
+ /**
125
+ * Condenses subagent output into a single-line, length-bounded preview: the
126
+ * first paragraph with whitespace collapsed, ellipsised at MAX_PREVIEW_LENGTH.
127
+ */
128
+ export function truncatePreview(text) {
129
+ if (typeof text !== 'string') {
130
+ return '';
131
+ }
132
+ const firstParagraph = text
133
+ .split(/\n\s*\n/)[0]
134
+ ?.replace(/\s+/g, ' ')
135
+ .trim() || '';
136
+ if (!firstParagraph) {
137
+ return '';
138
+ }
139
+ if (firstParagraph.length <= MAX_PREVIEW_LENGTH) {
140
+ return firstParagraph;
141
+ }
142
+ return `${firstParagraph.slice(0, MAX_PREVIEW_LENGTH - 3)}...`;
143
+ }
123
144
  export function createAbortError(message = 'The subagent run was aborted.') {
124
145
  const error = new Error(message);
125
146
  error.name = 'AbortError';
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../source/services/subagents/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../source/services/subagents/utils.ts"],"names":[],"mappings":"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"}