@stack-spot/portal-network 1.0.0-stg.1769692205877 → 1.0.0-stg.1770122183205

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.218.2](https://github.com/stack-spot/portal-commons/compare/portal-network@v0.218.1...portal-network@v0.218.2) (2026-01-29)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * change cloud platform prd api ([#2022](https://github.com/stack-spot/portal-commons/issues/2022)) ([7970ed6](https://github.com/stack-spot/portal-commons/commit/7970ed6c230e4ae332fd83884a284b62220f08fb))
9
+
3
10
  ## [0.218.1](https://github.com/stack-spot/portal-commons/compare/portal-network@v0.218.0...portal-network@v0.218.1) (2026-01-28)
4
11
 
5
12
 
@@ -1,12 +1,12 @@
1
1
  import { HttpError } from '@oazapfts/runtime';
2
- import { ChatResponse3, ConversationResponse } from '../api/ai.js';
2
+ import { ConversationResponse } from '../api/ai.js';
3
3
  import { AiChatRequest, GetOpportunityResponse } from '../api/discover.js';
4
4
  import { StackspotAPIError } from '../error/StackspotAPIError.js';
5
5
  import { ReactQueryNetworkClient } from '../network/ReactQueryNetworkClient.js';
6
6
  import { StreamedJson } from '../utils/StreamedJson.js';
7
- import { AgentInfo, ChatStep } from './types.js';
8
- export interface FixedDiscoveryChatResponse extends ChatResponse3 {
9
- agent_info: AgentInfo;
7
+ import { AgentInfo, ChatResponse, ChatStep } from './types.js';
8
+ export interface FixedDiscoveryChatResponse extends ChatResponse {
9
+ agent_info: AgentInfo[];
10
10
  tools?: string[];
11
11
  }
12
12
  export interface DiscoveryChatResponseWithSteps extends FixedDiscoveryChatResponse {
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/client/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG7C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAsL,sBAAsB,EAAmB,MAAM,iBAAiB,CAAA;AAG5Q,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIpD,OAAO,EAAE,SAAS,EAAiB,QAAQ,EAAgB,MAAM,SAAS,CAAA;AAE1E,MAAM,WAAW,0BAA2B,SAAQ,aAAa;IAC/D,UAAU,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,cAAM,cAAe,SAAQ,uBAAuB;;IAKlD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB;IAIlE,aAAa;;;;;;qEAAqB;IAElC,WAAW;;+BAAsB;IAEjC,UAAU;;0DAAsB;IAEhC,cAAc;;wDAAuB;IAErC,SAAS;;wDAAiC;IAE1C,QAAQ;;sDAAuB;IAE/B,SAAS;;wDAAsB;IAE/B,iBAAiB;;4DAAwB;IAEzC,gBAAgB;;2DAAyB;IAEzC,cAAc;;yDAAyB;IAEvC,iBAAiB;;cAA4B;IAE7C,gBAAgB;;cAA6B;IAE7C,cAAc;;cAA6B;IAE3C;;OAEG;IACH,QAAQ,0FAA4B;IACpC;;OAEG;IACH,eAAe,6FAAiC;IAChD;;OAEG;IACH,WAAW;;qDAA6B;IAExC,KAAK;iBAE4C,MAAM;eAAS,MAAM;eAAS,MAAM;kFAiCnF;mBAEmB,YAAY;IAkBjC,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,mBAAmB,CAAC,EAAE,MAAM,GACxF,YAAY,CAAC,8BAA8B,CAAC;CAiM/C;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/client/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAG7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,aAAa,EAAsL,sBAAsB,EAAmB,MAAM,iBAAiB,CAAA;AAG5Q,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAA;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIpD,OAAO,EAAE,SAAS,EAAiB,YAAY,EAAE,QAAQ,EAAgB,MAAM,SAAS,CAAA;AAExF,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,cAAM,cAAe,SAAQ,uBAAuB;;IAKlD,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,SAAS,GAAG,iBAAiB;IAIlE,aAAa;;;;;;qEAAqB;IAElC,WAAW;;+BAAsB;IAEjC,UAAU;;0DAAsB;IAEhC,cAAc;;wDAAuB;IAErC,SAAS;;wDAAiC;IAE1C,QAAQ;;sDAAuB;IAE/B,SAAS;;wDAAsB;IAE/B,iBAAiB;;4DAAwB;IAEzC,gBAAgB;;2DAAyB;IAEzC,cAAc;;yDAAyB;IAEvC,iBAAiB;;cAA4B;IAE7C,gBAAgB;;cAA6B;IAE7C,cAAc;;cAA6B;IAE3C;;OAEG;IACH,QAAQ,0FAA4B;IACpC;;OAEG;IACH,eAAe,6FAAiC;IAChD;;OAEG;IACH,WAAW;;qDAA6B;IAExC,KAAK;iBAE4C,MAAM;eAAS,MAAM;eAAS,MAAM;kFAiCnF;mBAEmB,YAAY;IAkBjC,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,mBAAmB,CAAC,EAAE,MAAM,GACxF,YAAY,CAAC,8BAA8B,CAAC;CAqM/C;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAA"}
@@ -183,166 +183,170 @@ class DiscoverClient extends ReactQueryNetworkClient {
183
183
  * StreamedJson object whenever an event is triggered.
184
184
  */
185
185
  async function transform(event, data) {
186
- const info = event.agent_info;
187
- if (!info)
186
+ const agentInfoList = event.agent_info;
187
+ if (!agentInfoList?.length)
188
188
  return;
189
189
  const tools = await DiscoverClient.toolsOfAgent(request.agentId);
190
190
  data.steps = data.steps ? [...data.steps] : [];
191
- if (info.type === 'planning' && info.action === 'end') {
192
- data.steps.push({
193
- id: 'planning',
194
- type: 'planning',
195
- status: 'success',
196
- duration: info.duration || 0,
197
- steps: info.data?.steps?.map(s => s.goal) ?? [],
198
- goal: info.data?.plan_goal ?? '',
199
- });
200
- info.data?.steps.forEach(s => data.steps?.push({
201
- id: s.id,
202
- type: 'step',
203
- status: 'pending',
204
- input: s.goal,
205
- attempts: [{
206
- tools: s.tools?.map(t => ({
207
- ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
208
- executionId: t.tool_execution_id,
209
- goal: t.goal,
210
- })),
211
- }],
212
- }));
213
- data.steps.push({ id: 'answer', type: 'answer', status: 'pending' });
214
- }
215
- if (info.type === 'planning' && info.action === 'awaiting_approval') {
216
- data.steps.push({
217
- id: 'planning',
218
- type: 'planning',
219
- status: 'awaiting_approval',
220
- user_question: info.data?.user_question,
221
- duration: info.duration || 0,
222
- steps: info.data?.steps?.map(s => s.goal) ?? [],
223
- goal: info.data?.plan_goal ?? '',
224
- });
225
- info.data?.steps.forEach(s => data.steps?.push({
226
- id: s.id,
227
- type: 'step',
228
- status: 'pending',
229
- input: s.goal,
230
- attempts: [{
231
- tools: s.tools?.map(t => ({
232
- ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
233
- executionId: t.tool_execution_id,
234
- goal: t.goal,
235
- })),
236
- }],
237
- }));
238
- data.steps.push({ id: 'answer', type: 'answer', status: 'pending' });
239
- }
240
- if (info.type === 'step' && info.action === 'start') {
241
- const step = data.steps.find(s => s.id === info.id);
242
- if (step)
243
- step.status = 'running';
244
- }
245
- if (info.type === 'step' && info.action === 'end') {
246
- const step = data.steps.find(s => s.id === info.id);
247
- if (step) {
248
- step.status = 'success';
249
- step.duration = info.duration;
250
- const lastToolId = last(step.attempts[0].tools)?.id;
251
- const lastAttemptOfLastTool = findLast(step.attempts.map(a => a.tools).flat(), t => t?.id === lastToolId);
252
- step.output = lastAttemptOfLastTool?.output;
191
+ for (const info of agentInfoList) {
192
+ if (!info)
193
+ continue;
194
+ if (info.type === 'planning' && info.action === 'end') {
195
+ data.steps.push({
196
+ id: 'planning',
197
+ type: 'planning',
198
+ status: 'success',
199
+ duration: info.duration || 0,
200
+ steps: info.data?.steps?.map(s => s.goal) ?? [],
201
+ goal: info.data?.plan_goal ?? '',
202
+ });
203
+ info.data?.steps.forEach(s => data.steps?.push({
204
+ id: s.id,
205
+ type: 'step',
206
+ status: 'pending',
207
+ input: s.goal,
208
+ attempts: [{
209
+ tools: s.tools?.map(t => ({
210
+ ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
211
+ executionId: t.tool_execution_id,
212
+ goal: t.goal,
213
+ })),
214
+ }],
215
+ }));
216
+ data.steps.push({ id: 'answer', type: 'answer', status: 'pending' });
253
217
  }
254
- }
255
- if (info.type === 'tool' && info.action === 'awaiting_approval') {
256
- const tool = tools.find(({ id }) => id === info.data?.tool_id);
257
- data.steps.push({
258
- id: info.id,
259
- type: 'tool',
260
- status: 'awaiting_approval',
261
- duration: info.duration || 0,
262
- input: info.data?.input,
263
- user_question: info.data?.user_question,
264
- attempts: [{
265
- tools: [{
266
- executionId: info.id,
267
- id: info.data?.tool_id ?? '',
268
- name: tool?.name ?? '',
269
- goal: tool?.goal,
270
- ...tool,
271
- }],
272
- }],
273
- });
274
- data.steps.push({ id: 'answer', type: 'answer', status: 'pending' });
275
- }
276
- if (info.type === 'tool' && info.action === 'start') {
277
- const currentStep = data.steps.find(s => s.status === 'running');
278
- if (!info.data)
279
- return;
280
- //There might be a tool with status awaiting_approval, so we want to inform tool has already started
281
- if (!currentStep || !currentStep.attempts[0].tools) {
282
- const input = formatJson(info.data.input);
283
- const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id };
218
+ if (info.type === 'planning' && info.action === 'awaiting_approval') {
219
+ data.steps.push({
220
+ id: 'planning',
221
+ type: 'planning',
222
+ status: 'awaiting_approval',
223
+ user_question: info.data?.user_question,
224
+ duration: info.duration || 0,
225
+ steps: info.data?.steps?.map(s => s.goal) ?? [],
226
+ goal: info.data?.plan_goal ?? '',
227
+ });
228
+ info.data?.steps.forEach(s => data.steps?.push({
229
+ id: s.id,
230
+ type: 'step',
231
+ status: 'pending',
232
+ input: s.goal,
233
+ attempts: [{
234
+ tools: s.tools?.map(t => ({
235
+ ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
236
+ executionId: t.tool_execution_id,
237
+ goal: t.goal,
238
+ })),
239
+ }],
240
+ }));
241
+ data.steps.push({ id: 'answer', type: 'answer', status: 'pending' });
242
+ }
243
+ if (info.type === 'step' && info.action === 'start') {
244
+ const step = data.steps.find(s => s.id === info.id);
245
+ if (step)
246
+ step.status = 'running';
247
+ }
248
+ if (info.type === 'step' && info.action === 'end') {
249
+ const step = data.steps.find(s => s.id === info.id);
250
+ if (step) {
251
+ step.status = 'success';
252
+ step.duration = info.duration;
253
+ const lastToolId = last(step.attempts[0].tools)?.id;
254
+ const lastAttemptOfLastTool = findLast(step.attempts.map(a => a.tools).flat(), t => t?.id === lastToolId);
255
+ step.output = lastAttemptOfLastTool?.output;
256
+ }
257
+ }
258
+ if (info.type === 'tool' && info.action === 'awaiting_approval') {
259
+ const tool = tools.find(({ id }) => id === info.data?.tool_id);
284
260
  data.steps.push({
285
261
  id: info.id,
286
262
  type: 'tool',
287
- status: 'running',
263
+ status: 'awaiting_approval',
288
264
  duration: info.duration || 0,
289
265
  input: info.data?.input,
290
266
  user_question: info.data?.user_question,
291
267
  attempts: [{
292
- tools: [{ ...tool, executionId: info.id, input }],
268
+ tools: [{
269
+ executionId: info.id,
270
+ id: info.data?.tool_id ?? '',
271
+ name: tool?.name ?? '',
272
+ goal: tool?.goal,
273
+ ...tool,
274
+ }],
293
275
  }],
294
276
  });
277
+ data.steps.push({ id: 'answer', type: 'answer', status: 'pending' });
295
278
  }
296
- else {
297
- const toolInFirstAttempt = currentStep.attempts[0].tools?.find(t => t.executionId === info.id);
298
- //One step might have multiple tools. When in an approval mode, we might not have all the tools in the array yet.
299
- //So we make sure to add any tools that are not in there.
300
- if (!toolInFirstAttempt) {
279
+ if (info.type === 'tool' && info.action === 'start') {
280
+ const currentStep = data.steps.find(s => s.status === 'running');
281
+ if (!info.data)
282
+ return;
283
+ //There might be a tool with status awaiting_approval, so we want to inform tool has already started
284
+ if (!currentStep || !currentStep.attempts[0].tools) {
301
285
  const input = formatJson(info.data.input);
302
- const tool = tools?.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id };
303
- currentStep.attempts[info.data.attempt - 1].tools?.push({
304
- ...tool,
305
- executionId: info.id,
306
- input,
286
+ const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id };
287
+ data.steps.push({
288
+ id: info.id,
289
+ type: 'tool',
290
+ status: 'running',
291
+ duration: info.duration || 0,
292
+ input: info.data?.input,
293
+ user_question: info.data?.user_question,
294
+ attempts: [{
295
+ tools: [{ ...tool, executionId: info.id, input }],
296
+ }],
307
297
  });
308
298
  }
309
299
  else {
310
- const input = formatJson(info.data.input);
311
- if (info.data.attempt === 1) {
312
- toolInFirstAttempt.input = input;
313
- }
314
- else {
315
- const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id };
316
- currentStep.attempts[info.data.attempt - 1] ??= { tools: [] };
300
+ const toolInFirstAttempt = currentStep.attempts[0].tools?.find(t => t.executionId === info.id);
301
+ //One step might have multiple tools. When in an approval mode, we might not have all the tools in the array yet.
302
+ //So we make sure to add any tools that are not in there.
303
+ if (!toolInFirstAttempt) {
304
+ const input = formatJson(info.data.input);
305
+ const tool = tools?.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id };
317
306
  currentStep.attempts[info.data.attempt - 1].tools?.push({
318
307
  ...tool,
319
308
  executionId: info.id,
320
309
  input,
321
310
  });
322
311
  }
312
+ else {
313
+ const input = formatJson(info.data.input);
314
+ if (info.data.attempt === 1) {
315
+ toolInFirstAttempt.input = input;
316
+ }
317
+ else {
318
+ const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id };
319
+ currentStep.attempts[info.data.attempt - 1] ??= { tools: [] };
320
+ currentStep.attempts[info.data.attempt - 1].tools?.push({
321
+ ...tool,
322
+ executionId: info.id,
323
+ input,
324
+ });
325
+ }
326
+ }
323
327
  }
324
328
  }
325
- }
326
- if (info.type === 'tool' && info.action === 'end') {
327
- const currentStep = data.steps.find(s => s.status === 'running');
328
- if (!currentStep || !info.data)
329
- return;
330
- const tool = currentStep.attempts[info.data.attempt - 1]?.tools?.find(t => t.executionId === info.id);
331
- if (tool) {
332
- tool.output = formatJson(info.data.output);
333
- tool.duration = info.duration;
329
+ if (info.type === 'tool' && info.action === 'end') {
330
+ const currentStep = data.steps.find(s => s.status === 'running');
331
+ if (!currentStep || !info.data)
332
+ return;
333
+ const tool = currentStep.attempts[info.data.attempt - 1]?.tools?.find(t => t.executionId === info.id);
334
+ if (tool) {
335
+ tool.output = formatJson(info.data.output);
336
+ tool.duration = info.duration;
337
+ }
334
338
  }
335
- }
336
- if (info.type === 'final_answer' && info.action === 'start') {
337
- const answerStep = last(data.steps);
338
- if (answerStep)
339
- answerStep.status = 'running';
340
- }
341
- if (info.type === 'chat' && info.action === 'end') {
342
- const answerStep = last(data.steps);
343
- if (answerStep) {
344
- answerStep.status = 'success';
345
- answerStep.duration = info.duration;
339
+ if (info.type === 'final_answer' && info.action === 'start') {
340
+ const answerStep = last(data.steps);
341
+ if (answerStep)
342
+ answerStep.status = 'running';
343
+ }
344
+ if (info.type === 'chat' && info.action === 'end') {
345
+ const answerStep = last(data.steps);
346
+ if (answerStep) {
347
+ answerStep.status = 'success';
348
+ answerStep.duration = info.duration;
349
+ }
346
350
  }
347
351
  }
348
352
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/client/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/client/discover.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stack-spot/portal-network",
3
- "version": "1.0.0-stg.1769692205877",
3
+ "version": "1.0.0-stg.1770122183205",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,7 +1,7 @@
1
1
  import { HttpError } from '@oazapfts/runtime'
2
2
  import { findLast, last } from 'lodash'
3
3
  import { getApiAddresses } from '../api-addresses'
4
- import { ChatResponse3, ConversationResponse } from '../api/ai'
4
+ import { ConversationResponse } from '../api/ai'
5
5
  import { AiChatRequest, create, create1, create2, defaults, deleteById, deleteById1, deleteById2, fetchInsights, getAll, getAll1, getAll2, getAllByHypothesis, getById, getById1, getById2, getInsightById, GetOpportunityResponse, refreshInsights } from '../api/discover'
6
6
  import { DefaultAPIError } from '../error/DefaultAPIError'
7
7
  import { baseDictionary } from '../error/dictionary/base'
@@ -11,10 +11,10 @@ import { StreamedJson } from '../utils/StreamedJson'
11
11
  import { formatJson } from '../utils/string'
12
12
  import { agentToolsClient } from './agent-tools'
13
13
  import { aiClient } from './ai'
14
- import { AgentInfo, ChatAgentTool, ChatStep, StepChatStep } from './types'
14
+ import { AgentInfo, ChatAgentTool, ChatResponse, ChatStep, StepChatStep } from './types'
15
15
 
16
- export interface FixedDiscoveryChatResponse extends ChatResponse3 {
17
- agent_info: AgentInfo,
16
+ export interface FixedDiscoveryChatResponse extends ChatResponse {
17
+ agent_info: AgentInfo[],
18
18
  tools?: string[],
19
19
  }
20
20
 
@@ -147,171 +147,175 @@ class DiscoverClient extends ReactQueryNetworkClient {
147
147
  * StreamedJson object whenever an event is triggered.
148
148
  */
149
149
  async function transform(event: Partial<FixedDiscoveryChatResponse>, data: Partial<DiscoveryChatResponseWithSteps>) {
150
- const info = event.agent_info
150
+ const agentInfoList = event.agent_info
151
151
 
152
- if (!info) return
152
+ if (!agentInfoList?.length) return
153
153
 
154
154
  const tools = await DiscoverClient.toolsOfAgent(request.agentId)
155
155
  data.steps = data.steps ? [...data.steps] : []
156
+
157
+ for (const info of agentInfoList) {
158
+ if (!info) continue
156
159
 
157
- if (info.type === 'planning' && info.action === 'end') {
158
- data.steps.push({
159
- id: 'planning',
160
- type: 'planning',
161
- status: 'success',
162
- duration: info.duration || 0,
163
- steps: info.data?.steps?.map(s => s.goal) ?? [],
164
- goal: info.data?.plan_goal ?? '',
165
- })
166
-
167
- info.data?.steps.forEach(s => data.steps?.push({
168
- id: s.id,
169
- type: 'step',
170
- status: 'pending',
171
- input: s.goal,
172
- attempts: [{
173
- tools: s.tools?.map(t => ({
174
- ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
175
- executionId: t.tool_execution_id,
176
- goal: t.goal,
177
- })),
178
- }],
179
- }))
180
- data.steps.push({ id: 'answer', type: 'answer', status: 'pending' })
181
- }
182
-
183
- if (info.type === 'planning' && info.action === 'awaiting_approval') {
184
- data.steps.push({
185
- id: 'planning',
186
- type: 'planning',
187
- status: 'awaiting_approval',
188
- user_question: info.data?.user_question,
189
- duration: info.duration || 0,
190
- steps: info.data?.steps?.map(s => s.goal) ?? [],
191
- goal: info.data?.plan_goal ?? '',
192
- })
193
- info.data?.steps.forEach(s => data.steps?.push({
194
- id: s.id,
195
- type: 'step',
196
- status: 'pending',
197
- input: s.goal,
198
- attempts: [{
199
- tools: s.tools?.map(t => ({
200
- ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
201
- executionId: t.tool_execution_id,
202
- goal: t.goal,
203
- })),
204
- }],
205
- }))
206
- data.steps.push({ id: 'answer', type: 'answer', status: 'pending' })
207
- }
208
-
209
- if (info.type === 'step' && info.action === 'start') {
210
- const step = data.steps.find(s => s.id === info.id)
211
- if (step) step.status = 'running'
212
- }
160
+ if (info.type === 'planning' && info.action === 'end') {
161
+ data.steps.push({
162
+ id: 'planning',
163
+ type: 'planning',
164
+ status: 'success',
165
+ duration: info.duration || 0,
166
+ steps: info.data?.steps?.map(s => s.goal) ?? [],
167
+ goal: info.data?.plan_goal ?? '',
168
+ })
213
169
 
214
- if (info.type === 'step' && info.action === 'end') {
215
- const step = data.steps.find(s => s.id === info.id) as StepChatStep
216
- if (step) {
217
- step.status = 'success'
218
- step.duration = info.duration
219
- const lastToolId = last(step.attempts[0].tools)?.id
220
- const lastAttemptOfLastTool = findLast(step.attempts.map(a => a.tools).flat(), t => t?.id === lastToolId)
221
- step.output = lastAttemptOfLastTool?.output
170
+ info.data?.steps.forEach(s => data.steps?.push({
171
+ id: s.id,
172
+ type: 'step',
173
+ status: 'pending',
174
+ input: s.goal,
175
+ attempts: [{
176
+ tools: s.tools?.map(t => ({
177
+ ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
178
+ executionId: t.tool_execution_id,
179
+ goal: t.goal,
180
+ })),
181
+ }],
182
+ }))
183
+ data.steps.push({ id: 'answer', type: 'answer', status: 'pending' })
222
184
  }
223
- }
224
185
 
225
- if (info.type === 'tool' && info.action === 'awaiting_approval') {
226
- const tool = tools.find(({ id }) => id === info.data?.tool_id)
227
- data.steps.push({
228
- id: info.id,
229
- type: 'tool',
230
- status: 'awaiting_approval',
231
- duration: info.duration || 0,
232
- input: info.data?.input,
233
- user_question: info.data?.user_question,
234
- attempts: [{
235
- tools: [{
236
- executionId: info.id,
237
- id: info.data?.tool_id ?? '',
238
- name: tool?.name ?? '',
239
- goal: tool?.goal,
240
- ...tool,
186
+ if (info.type === 'planning' && info.action === 'awaiting_approval') {
187
+ data.steps.push({
188
+ id: 'planning',
189
+ type: 'planning',
190
+ status: 'awaiting_approval',
191
+ user_question: info.data?.user_question,
192
+ duration: info.duration || 0,
193
+ steps: info.data?.steps?.map(s => s.goal) ?? [],
194
+ goal: info.data?.plan_goal ?? '',
195
+ })
196
+ info.data?.steps.forEach(s => data.steps?.push({
197
+ id: s.id,
198
+ type: 'step',
199
+ status: 'pending',
200
+ input: s.goal,
201
+ attempts: [{
202
+ tools: s.tools?.map(t => ({
203
+ ...(tools.find(({ id }) => id === t.tool_id) ?? { id: t.tool_id, name: t.tool_id }),
204
+ executionId: t.tool_execution_id,
205
+ goal: t.goal,
206
+ })),
241
207
  }],
242
- }],
243
- })
244
- data.steps.push({ id: 'answer', type: 'answer', status: 'pending' })
245
- }
208
+ }))
209
+ data.steps.push({ id: 'answer', type: 'answer', status: 'pending' })
210
+ }
246
211
 
247
- if (info.type === 'tool' && info.action === 'start') {
248
- const currentStep = data.steps.find(s => s.status === 'running') as StepChatStep
249
- if (!info.data) return
212
+ if (info.type === 'step' && info.action === 'start') {
213
+ const step = data.steps.find(s => s.id === info.id)
214
+ if (step) step.status = 'running'
215
+ }
250
216
 
251
- //There might be a tool with status awaiting_approval, so we want to inform tool has already started
252
- if (!currentStep || !currentStep.attempts[0].tools) {
253
- const input = formatJson(info.data.input)
254
- const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id }
217
+ if (info.type === 'step' && info.action === 'end') {
218
+ const step = data.steps.find(s => s.id === info.id) as StepChatStep
219
+ if (step) {
220
+ step.status = 'success'
221
+ step.duration = info.duration
222
+ const lastToolId = last(step.attempts[0].tools)?.id
223
+ const lastAttemptOfLastTool = findLast(step.attempts.map(a => a.tools).flat(), t => t?.id === lastToolId)
224
+ step.output = lastAttemptOfLastTool?.output
225
+ }
226
+ }
227
+
228
+ if (info.type === 'tool' && info.action === 'awaiting_approval') {
229
+ const tool = tools.find(({ id }) => id === info.data?.tool_id)
255
230
  data.steps.push({
256
231
  id: info.id,
257
232
  type: 'tool',
258
- status: 'running',
233
+ status: 'awaiting_approval',
259
234
  duration: info.duration || 0,
260
235
  input: info.data?.input,
261
236
  user_question: info.data?.user_question,
262
237
  attempts: [{
263
- tools: [{ ...tool, executionId: info.id, input }],
238
+ tools: [{
239
+ executionId: info.id,
240
+ id: info.data?.tool_id ?? '',
241
+ name: tool?.name ?? '',
242
+ goal: tool?.goal,
243
+ ...tool,
244
+ }],
264
245
  }],
265
246
  })
266
- } else {
267
- const toolInFirstAttempt = currentStep.attempts[0].tools?.find(t => t.executionId === info.id)
268
- //One step might have multiple tools. When in an approval mode, we might not have all the tools in the array yet.
269
- //So we make sure to add any tools that are not in there.
270
- if (!toolInFirstAttempt) {
247
+ data.steps.push({ id: 'answer', type: 'answer', status: 'pending' })
248
+ }
249
+
250
+ if (info.type === 'tool' && info.action === 'start') {
251
+ const currentStep = data.steps.find(s => s.status === 'running') as StepChatStep
252
+ if (!info.data) return
253
+
254
+ //There might be a tool with status awaiting_approval, so we want to inform tool has already started
255
+ if (!currentStep || !currentStep.attempts[0].tools) {
271
256
  const input = formatJson(info.data.input)
272
- const tool = tools?.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id }
273
- currentStep.attempts[info.data.attempt - 1].tools?.push({
274
- ...tool,
275
- executionId: info.id,
276
- input,
257
+ const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id }
258
+ data.steps.push({
259
+ id: info.id,
260
+ type: 'tool',
261
+ status: 'running',
262
+ duration: info.duration || 0,
263
+ input: info.data?.input,
264
+ user_question: info.data?.user_question,
265
+ attempts: [{
266
+ tools: [{ ...tool, executionId: info.id, input }],
267
+ }],
277
268
  })
278
269
  } else {
279
- const input = formatJson(info.data.input)
280
- if (info.data.attempt === 1) {
281
- toolInFirstAttempt.input = input
282
- } else {
283
- const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id }
284
- currentStep.attempts[info.data.attempt - 1] ??= { tools: [] }
270
+ const toolInFirstAttempt = currentStep.attempts[0].tools?.find(t => t.executionId === info.id)
271
+ //One step might have multiple tools. When in an approval mode, we might not have all the tools in the array yet.
272
+ //So we make sure to add any tools that are not in there.
273
+ if (!toolInFirstAttempt) {
274
+ const input = formatJson(info.data.input)
275
+ const tool = tools?.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id }
285
276
  currentStep.attempts[info.data.attempt - 1].tools?.push({
286
277
  ...tool,
287
278
  executionId: info.id,
288
279
  input,
289
280
  })
281
+ } else {
282
+ const input = formatJson(info.data.input)
283
+ if (info.data.attempt === 1) {
284
+ toolInFirstAttempt.input = input
285
+ } else {
286
+ const tool = tools.find(({ id }) => id === info.data?.tool_id) ?? { id: info.data?.tool_id, name: info.data?.tool_id }
287
+ currentStep.attempts[info.data.attempt - 1] ??= { tools: [] }
288
+ currentStep.attempts[info.data.attempt - 1].tools?.push({
289
+ ...tool,
290
+ executionId: info.id,
291
+ input,
292
+ })
293
+ }
290
294
  }
291
295
  }
292
296
  }
293
- }
294
297
 
295
- if (info.type === 'tool' && info.action === 'end') {
296
- const currentStep = data.steps.find(s => s.status === 'running') as StepChatStep
297
- if (!currentStep || !info.data) return
298
- const tool = currentStep.attempts[info.data.attempt - 1]?.tools?.find(t => t.executionId === info.id)
299
- if (tool) {
300
- tool.output = formatJson(info.data.output)
301
- tool.duration = info.duration
298
+ if (info.type === 'tool' && info.action === 'end') {
299
+ const currentStep = data.steps.find(s => s.status === 'running') as StepChatStep
300
+ if (!currentStep || !info.data) return
301
+ const tool = currentStep.attempts[info.data.attempt - 1]?.tools?.find(t => t.executionId === info.id)
302
+ if (tool) {
303
+ tool.output = formatJson(info.data.output)
304
+ tool.duration = info.duration
305
+ }
302
306
  }
303
- }
304
307
 
305
- if (info.type === 'final_answer' && info.action === 'start') {
306
- const answerStep = last(data.steps)
307
- if (answerStep) answerStep.status = 'running'
308
- }
308
+ if (info.type === 'final_answer' && info.action === 'start') {
309
+ const answerStep = last(data.steps)
310
+ if (answerStep) answerStep.status = 'running'
311
+ }
309
312
 
310
- if (info.type === 'chat' && info.action === 'end') {
311
- const answerStep = last(data.steps)
312
- if (answerStep) {
313
- answerStep.status = 'success'
314
- answerStep.duration = info.duration
313
+ if (info.type === 'chat' && info.action === 'end') {
314
+ const answerStep = last(data.steps)
315
+ if (answerStep) {
316
+ answerStep.status = 'success'
317
+ answerStep.duration = info.duration
318
+ }
315
319
  }
316
320
  }
317
321
  }