@forestadmin/workflow-executor 1.14.0 → 1.16.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.
@@ -21,6 +21,9 @@ const SELECT_FIELDS_SYSTEM_PROMPT = `You are an AI agent selecting the most rele
21
21
  Choose the fields that are most useful for determining which record best matches the user request.`;
22
22
  const SELECT_RECORD_SYSTEM_PROMPT = `You are an AI agent selecting the most relevant related record from a list of candidates.
23
23
  Choose the record that best matches the user request based on the provided field values.`;
24
+ // Only appended when -1 is a valid answer. The base prompt tells the AI to always pick, so without
25
+ // this it forces a weak match on an impossible request instead of declining.
26
+ const SELECT_RECORD_NONE_ALLOWED_PROMPT = `If the request states a specific requirement that NO candidate satisfies, return -1 instead of forcing an arbitrary or loosely-related match. Do NOT return -1 merely because a match is imperfect — only when no candidate genuinely fits the request.`;
24
27
  // Bound only what is sent to the AI in selectBestRecordIndex — the full candidate list is
25
28
  // always returned to the front via availableRecordIds. These cap the prompt size, not the data.
26
29
  const MAX_RELEVANT_FIELDS = 6;
@@ -52,39 +55,71 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
52
55
  return this.handleFirstCall();
53
56
  }
54
57
  async refreshCandidatesForField(execution, fieldName) {
55
- if (!execution.pendingData) {
58
+ if (!execution.pendingData || !execution.selectedRecordRef) {
56
59
  throw new errors_1.StepStateError(`Step at index ${this.context.stepIndex} has no pending data`);
57
60
  }
61
+ const useAi = this.context.stepDefinition.executionType !== step_definition_1.StepExecutionMode.Manual;
58
62
  const schema = await this.getCollectionSchema(execution.selectedRecordRef.collectionName);
59
63
  const target = await this.buildTarget(schema, fieldName, execution.selectedRecordRef);
60
- const { availableRecordIds, suggestedRecord } = await this.collectCandidateIds(target);
64
+ // AI failure while re-listing → degrade to the no-AI list, not a run error (see AiAssistUnavailableError).
65
+ let aiSuggested = useAi;
66
+ let candidates;
67
+ try {
68
+ candidates = await this.collectCandidateIds(target, useAi);
69
+ }
70
+ catch (error) {
71
+ if (!(useAi && error instanceof errors_1.AiAssistUnavailableError))
72
+ throw error;
73
+ this.logAiDegrade(error.reason);
74
+ aiSuggested = false;
75
+ candidates = await this.collectCandidateIds(target, false);
76
+ }
77
+ const { availableRecordIds, suggestedRecord } = candidates;
61
78
  await this.context.runStore.saveStepExecution(this.context.runId, {
62
79
  ...execution,
63
80
  userConfirmation: undefined,
81
+ // Rebuild pendingData for the new relation from scratch (retain only the immutable field list)
82
+ // so no stale suggestion state — suggestedRecord or suggestNoRecord — survives the field switch.
64
83
  pendingData: {
65
- ...execution.pendingData,
84
+ availableFields: execution.pendingData.availableFields,
66
85
  suggestedField: { name: target.name, displayName: target.displayName },
67
86
  availableRecordIds,
68
87
  suggestedRecord,
88
+ ...(aiSuggested && !suggestedRecord && { suggestNoRecord: true }),
69
89
  },
70
90
  });
71
91
  return this.buildOutcomeResult({ status: 'awaiting-input' });
72
92
  }
73
93
  async handleFirstCall() {
74
94
  const { stepDefinition: step } = this.context;
75
- const target = await this.resolveTarget();
76
- // Branch B -- fully automated execution
77
- if (step.executionType === step_definition_1.StepExecutionMode.FullyAutomated) {
78
- return this.resolveAndLoadAutomatic(target);
95
+ const useAi = step.executionType !== step_definition_1.StepExecutionMode.Manual;
96
+ try {
97
+ if (step.executionType === step_definition_1.StepExecutionMode.FullyAutomated) {
98
+ return await this.resolveAndLoadAutomatic();
99
+ }
100
+ const target = await this.resolveTarget(useAi);
101
+ const sourceSchema = await this.getCollectionSchema(target.selectedRecordRef.collectionName);
102
+ return await this.saveAndAwaitInput(target, sourceSchema, useAi);
103
+ }
104
+ catch (error) {
105
+ // AI failure in any AI mode → degrade to Manual (see AiAssistUnavailableError).
106
+ if (useAi && error instanceof errors_1.AiAssistUnavailableError) {
107
+ this.logAiDegrade(error.reason);
108
+ return this.degradeToManualAwaitInput();
109
+ }
110
+ throw error;
79
111
  }
80
- // Branch C -- pre-fetch candidates, await user confirmation
112
+ }
113
+ // The re-run is AI-free (first eligible relation, no-AI list), so it can't re-trigger the failure.
114
+ async degradeToManualAwaitInput() {
115
+ const target = await this.resolveTarget(false);
81
116
  const sourceSchema = await this.getCollectionSchema(target.selectedRecordRef.collectionName);
82
- return this.saveAndAwaitInput(target, sourceSchema);
117
+ return this.saveAndAwaitInput(target, sourceSchema, false);
83
118
  }
84
119
  // Picks the (record, relation) pair to follow. Unlike a separate record-then-relation choice,
85
120
  // this lets the AI decide by what each relation LEADS TO — so "load the dvd" follows
86
121
  // store→dvds rather than latching onto a previously-loaded dvd whose collection just matches.
87
- async resolveTarget() {
122
+ async resolveTarget(useAi) {
88
123
  const { preRecordedArgs } = this.context.stepDefinition;
89
124
  const sourceRecords = preRecordedArgs?.selectedRecordStepId !== undefined
90
125
  ? [await this.resolveSourceRecordRef(preRecordedArgs.selectedRecordStepId)]
@@ -100,7 +135,9 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
100
135
  // Relations exist, but the pre-recorded one doesn't match any of them.
101
136
  throw new errors_1.InvalidPreRecordedArgsError(`No relation matching "${pinned}" on the selected record`);
102
137
  }
103
- const chosen = eligible.length === 1 ? eligible[0] : await this.selectRelationToFollow(eligible);
138
+ // No-AI path picks eligible[0] — the base record's first relation (getAvailableRecordRefs lists
139
+ // it first). The user switches relation at runtime; a non-base source needs selectedRecordStepId pinning.
140
+ const chosen = eligible.length > 1 && useAi ? await this.selectRelationToFollow(eligible) : eligible[0];
104
141
  return this.targetFromCandidate(chosen);
105
142
  }
106
143
  targetFromCandidate(candidate) {
@@ -170,11 +207,19 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
170
207
  relatedCollectionName,
171
208
  };
172
209
  }
173
- // Branch C: AI suggests the best candidate, then awaits user confirmation. Save errors
174
- // propagate directly — the relation-load hasn't run yet, so the step can be safely retried.
175
- async saveAndAwaitInput(target, sourceSchema) {
210
+ // Save errors propagate directly — the relation-load hasn't run yet, so the step can be retried.
211
+ async saveAndAwaitInput(target, sourceSchema, suggestViaAi) {
212
+ const { availableRecordIds, suggestedRecord } = await this.collectCandidateIds(target, suggestViaAi);
213
+ return this.persistAwaitInput(target, sourceSchema, {
214
+ availableRecordIds,
215
+ suggestedRecord,
216
+ // An AI pass that yields no record is a deliberate "nothing relevant" → pre-check "No X to load".
217
+ // A Manual pass with no suggestion just means the user picks, so no pre-check.
218
+ suggestNoRecord: suggestViaAi && !suggestedRecord,
219
+ });
220
+ }
221
+ async persistAwaitInput(target, sourceSchema, pending) {
176
222
  const { selectedRecordRef, name, displayName } = target;
177
- const { availableRecordIds, suggestedRecord } = await this.collectCandidateIds(target);
178
223
  const availableFields = sourceSchema.fields
179
224
  .filter(isFollowableRelation)
180
225
  .map(f => ({ name: f.fieldName, displayName: f.displayName }));
@@ -184,23 +229,27 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
184
229
  pendingData: {
185
230
  availableFields,
186
231
  suggestedField: { name, displayName },
187
- availableRecordIds,
188
- suggestedRecord,
232
+ availableRecordIds: pending.availableRecordIds,
233
+ suggestedRecord: pending.suggestedRecord,
234
+ ...(pending.suggestNoRecord && { suggestNoRecord: true }),
189
235
  },
190
236
  selectedRecordRef,
191
237
  });
192
238
  return this.buildOutcomeResult({ status: 'awaiting-input' });
193
239
  }
194
- async collectCandidateIds(target) {
240
+ async collectCandidateIds(target, suggestViaAi) {
195
241
  if (target.relationType === 'BelongsTo' || target.relationType === 'HasOne') {
196
242
  const candidate = await this.fetchXToOneCandidate(target);
197
243
  return candidate
198
- ? { availableRecordIds: [candidate], suggestedRecord: candidate }
199
- : { availableRecordIds: [] };
244
+ ? { availableRecordIds: [candidate], suggestedRecord: candidate, ambiguous: false }
245
+ : { availableRecordIds: [], ambiguous: false };
200
246
  }
201
- const { relatedData, bestIndex, relatedSchema } = await this.selectBestFromRelatedData(target, 50);
247
+ const { relatedData, bestIndex, confident, relatedSchema } = await this.selectBestFromRelatedData(target, 50,
248
+ // allowNone: the AI may judge no candidate relevant (→ "No X to load"); only meaningful when
249
+ // ranking (Manual passes rank=false and never calls the AI).
250
+ suggestViaAi ? { rank: true, allowNone: true } : { rank: false });
202
251
  if (relatedData.length === 0) {
203
- return { availableRecordIds: [] };
252
+ return { availableRecordIds: [], ambiguous: false };
204
253
  }
205
254
  const referenceField = relatedSchema.referenceField ?? null;
206
255
  const toCandidate = (r) => ({
@@ -211,37 +260,35 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
211
260
  });
212
261
  return {
213
262
  availableRecordIds: relatedData.map(toCandidate),
214
- suggestedRecord: toCandidate(relatedData[bestIndex]),
263
+ suggestedRecord: bestIndex >= 0 ? toCandidate(relatedData[bestIndex]) : undefined,
264
+ // -1 (none relevant) is not ambiguity; only a low-confidence positive pick is.
265
+ ambiguous: bestIndex >= 0 && !confident,
215
266
  };
216
267
  }
217
268
  extractReferenceFieldValue(values, referenceField) {
218
269
  const v = values[referenceField];
219
270
  return v === undefined || v === null ? null : String(v);
220
271
  }
221
- /** Branch B: fully automated. xToOne loads the linked record; HasMany ranks candidates via AI; BelongsToMany takes the first. */
222
- async resolveAndLoadAutomatic(target) {
223
- const record = await this.fetchRecordForRelation(target);
224
- return this.persistAndReturn(record, target, undefined);
225
- }
226
- async fetchRecordForRelation(target) {
227
- if (target.relationType === 'BelongsTo' || target.relationType === 'HasOne') {
228
- return this.fetchXToOneRecordRef(target);
229
- }
230
- if (target.relationType === 'HasMany') {
231
- return this.selectBestRelatedRecord(target);
232
- }
233
- return this.fetchFirstCandidate(target);
234
- }
235
- async fetchXToOneRecordRef(target) {
236
- const candidate = await this.fetchXToOneCandidate(target);
237
- if (!candidate) {
238
- throw new errors_1.RelatedRecordNotFoundError(target.selectedRecordRef.collectionName, target.name);
272
+ async resolveAndLoadAutomatic() {
273
+ // No source record throws (like Manual/AI-assisted) → the front offers "continue without".
274
+ const target = await this.resolveTarget(true);
275
+ const { availableRecordIds, suggestedRecord, ambiguous } = await this.collectCandidateIds(target, true);
276
+ // Full AI auto-loads only a confident single pick; otherwise it degrades to an AI-assisted
277
+ // confirmation — "No X to load" pre-checked when nothing fits, else its best guess pre-selected.
278
+ if (!suggestedRecord || ambiguous) {
279
+ const sourceSchema = await this.getCollectionSchema(target.selectedRecordRef.collectionName);
280
+ return this.persistAwaitInput(target, sourceSchema, {
281
+ availableRecordIds,
282
+ suggestedRecord,
283
+ suggestNoRecord: !suggestedRecord,
284
+ });
239
285
  }
240
- return {
286
+ const record = {
241
287
  collectionName: target.relatedCollectionName,
242
- recordId: candidate.recordId,
288
+ recordId: suggestedRecord.recordId,
243
289
  stepIndex: this.context.stepIndex,
244
290
  };
291
+ return this.persistAndReturn(record, target, undefined);
245
292
  }
246
293
  async fetchXToOneCandidate(target) {
247
294
  const relatedSchema = await this.getCollectionSchema(target.relatedCollectionName);
@@ -265,7 +312,7 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
265
312
  // Branch A: builds RecordRef from the user-confirmed selection without a new getRelatedData call.
266
313
  async resolveFromSelection(execution) {
267
314
  const { selectedRecordRef, pendingData, userConfirmation } = execution;
268
- if (!pendingData) {
315
+ if (!pendingData || !selectedRecordRef) {
269
316
  throw new errors_1.StepStateError(`Step at index ${this.context.stepIndex} has no pending data`);
270
317
  }
271
318
  const relationRef = userConfirmation?.fieldName
@@ -294,39 +341,33 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
294
341
  };
295
342
  return this.persistAndReturn(record, { selectedRecordRef, name, displayName }, execution);
296
343
  }
297
- async selectBestFromRelatedData(target, limit) {
344
+ async selectBestFromRelatedData(target, limit,
345
+ // allowNone is meaningful only when ranking, so it's absent from the rank:false variant.
346
+ opts = { rank: true, allowNone: false }) {
298
347
  const relatedSchema = await this.getCollectionSchema(target.relatedCollectionName);
299
348
  const relatedData = await this.fetchRelatedData(target, relatedSchema, limit);
300
- // Empty (bestIndex unused — callers guard on length) or single → no ranking needed.
301
- if (relatedData.length <= 1) {
302
- return { relatedData, bestIndex: 0, suggestedFields: [], relatedSchema };
303
- }
304
- // The final record stays AI-suggested + user-confirmed — only the source + relation are
305
- // pinned deterministically. Index-based record pinning was removed (not revise-safe).
306
- const suggestedFields = await this.selectRelevantFields(relatedSchema, this.context.stepDefinition.prompt);
307
- const bestIndex = await this.selectBestRecordIndex(relatedData, suggestedFields, this.context.stepDefinition.prompt);
308
- return { relatedData, bestIndex, suggestedFields, relatedSchema };
309
- }
310
- /** HasMany + fully automated execution: fetch top 50, then AI calls to select the best record. */
311
- async selectBestRelatedRecord(target) {
312
- const { relatedData, bestIndex } = await this.selectBestFromRelatedData(target, 50);
349
+ // Empty lists have nothing to rank or pre-select.
313
350
  if (relatedData.length === 0) {
314
- throw new errors_1.RelatedRecordNotFoundError(target.selectedRecordRef.collectionName, target.name);
351
+ return { relatedData, bestIndex: -1, confident: true, suggestedFields: [], relatedSchema };
315
352
  }
316
- return this.toRecordRef(relatedData[bestIndex]);
317
- }
318
- async fetchFirstCandidate(target) {
319
- const candidates = await this.fetchCandidates(target, 1);
320
- return candidates[0];
321
- }
322
- async fetchCandidates(target, limit) {
323
- const { selectedRecordRef, name } = target;
324
- const relatedSchema = await this.getCollectionSchema(target.relatedCollectionName);
325
- const relatedData = await this.fetchRelatedData(target, relatedSchema, limit);
326
- if (relatedData.length === 0) {
327
- throw new errors_1.RelatedRecordNotFoundError(selectedRecordRef.collectionName, name);
353
+ // Manual: no AI. A sole candidate is pre-selected (the only possible choice, as for an xToOne
354
+ // relation); with several, the user picks from the list.
355
+ if (!opts.rank) {
356
+ return {
357
+ relatedData,
358
+ bestIndex: relatedData.length === 1 ? 0 : -1,
359
+ confident: true,
360
+ suggestedFields: [],
361
+ relatedSchema,
362
+ };
328
363
  }
329
- return relatedData.map(r => this.toRecordRef(r));
364
+ // Ranking (AI-assisted / Full AI): even a lone candidate goes through the AI so Full AI can
365
+ // decline it (-1 → "No X to load") rather than auto-loading a possibly-irrelevant sole record.
366
+ // The final record stays AI-suggested + user-confirmed (or AI-decided in Full AI): only the
367
+ // source and relation are pinned deterministically, not the record index (not revise-safe).
368
+ const suggestedFields = await this.withAiAssist(() => this.selectRelevantFields(relatedSchema, this.context.stepDefinition.prompt));
369
+ const { index: bestIndex, confident } = await this.withAiAssist(() => this.selectBestRecordIndex(relatedData, suggestedFields, this.context.stepDefinition.prompt, opts.allowNone));
370
+ return { relatedData, bestIndex, confident, suggestedFields, relatedSchema };
330
371
  }
331
372
  async fetchRelatedData(target, relatedSchema, limit) {
332
373
  return this.context.agent.getRelatedData({
@@ -375,12 +416,16 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
375
416
  new ai_proxy_1.SystemMessage(SELECT_RELATION_SYSTEM_PROMPT),
376
417
  new ai_proxy_1.HumanMessage(`**Request**: ${this.context.stepDefinition.prompt ?? 'Load the relevant related record.'}`),
377
418
  ];
378
- const { relation } = await this.invokeWithTool(messages, tool);
379
- const index = labels.indexOf(relation);
380
- if (index === -1) {
381
- throw new errors_1.InvalidAIResponseError(`AI selected relation "${relation}" which does not match any available option`);
382
- }
383
- return candidates[index];
419
+ // Wrap only the AI call + response validation: buildPreviousStepsMessages above reads the run
420
+ // store, and a store failure must surface, not be mistagged as an AI failure and degraded.
421
+ return this.withAiAssist(async () => {
422
+ const { relation } = await this.invokeWithTool(messages, tool);
423
+ const index = labels.indexOf(relation);
424
+ if (index === -1) {
425
+ throw new errors_1.InvalidAIResponseError(`AI selected relation "${relation}" which does not match any available option`);
426
+ }
427
+ return candidates[index];
428
+ });
384
429
  }
385
430
  /** AI call 1 for HasMany: selects the most relevant fields to compare candidates. */
386
431
  async selectRelevantFields(schema, prompt) {
@@ -421,8 +466,7 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
421
466
  .slice(0, MAX_RELEVANT_FIELDS)
422
467
  .map(dn => nonRelationFields.find(f => f.displayName === dn)?.fieldName ?? dn);
423
468
  }
424
- /** AI call 2 for HasMany: selects the best record by index from the candidate list. */
425
- async selectBestRecordIndex(candidates, fieldNames, prompt) {
469
+ async selectBestRecordIndex(candidates, fieldNames, prompt, allowNone = false) {
426
470
  const filteredCandidates = candidates.map((c, i) => {
427
471
  const entries = Object.entries(c.values).filter(([k]) => fieldNames.length === 0 || fieldNames.includes(k));
428
472
  return {
@@ -442,14 +486,19 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
442
486
  usedChars += line.length + 1;
443
487
  }
444
488
  const shown = lines.length;
445
- if (shown < candidates.length) {
489
+ const truncated = shown < candidates.length;
490
+ if (truncated) {
446
491
  this.context.logger('Warn', 'load-related-record: candidate list truncated for AI prompt', {
447
492
  ...this.logCtx,
448
493
  shown,
449
494
  total: candidates.length,
450
495
  });
451
496
  }
497
+ // "None relevant" (-1) is only trustworthy when the AI saw the whole list. If it was truncated,
498
+ // force a pick from what was shown — otherwise a match in the unseen tail would be silently skipped.
499
+ const noneAllowed = allowNone && !truncated;
452
500
  const maxIndex = shown - 1;
501
+ const minIndex = noneAllowed ? -1 : 0;
453
502
  const tool = new ai_proxy_1.DynamicStructuredTool({
454
503
  name: 'select-record-by-content',
455
504
  description: 'Select the most relevant related record by its index.',
@@ -457,34 +506,37 @@ class LoadRelatedRecordStepExecutor extends record_step_executor_1.default {
457
506
  recordIndex: zod_1.z
458
507
  .number()
459
508
  .int()
460
- .min(0)
509
+ .min(minIndex)
461
510
  .max(maxIndex)
462
- .describe(`0-based index of the most relevant record (0 to ${maxIndex})`),
463
- reasoning: zod_1.z.string().describe('Why this record was chosen'),
511
+ .describe(noneAllowed
512
+ ? `0-based index of the most relevant record (0 to ${maxIndex}), or -1 if none of the candidates is relevant`
513
+ : `0-based index of the most relevant record (0 to ${maxIndex})`),
514
+ confident: zod_1.z
515
+ .boolean()
516
+ .describe('true when one candidate clearly best matches the request; false when several ' +
517
+ 'candidates fit similarly well and you cannot confidently single one out'),
518
+ reasoning: zod_1.z.string().describe('Why this record was chosen (or why none is relevant)'),
464
519
  }),
465
520
  func: undefined,
466
521
  });
467
522
  const messages = [
468
523
  this.buildContextMessage(),
469
524
  new ai_proxy_1.SystemMessage(SELECT_RECORD_SYSTEM_PROMPT),
525
+ ...(noneAllowed ? [new ai_proxy_1.SystemMessage(SELECT_RECORD_NONE_ALLOWED_PROMPT)] : []),
470
526
  new ai_proxy_1.SystemMessage(`Candidates:\n${lines.join('\n')}`),
471
527
  new ai_proxy_1.HumanMessage(`**Request**: ${prompt ?? 'Select the most relevant record.'}`),
472
528
  ];
473
- const { recordIndex } = await this.invokeWithTool(messages, tool);
474
- // NOTE: The Zod schema's .min(0).max(maxIndex) shapes the tool prompt only — it is NOT
475
- // validated against the AI response. This guard is the sole runtime enforcement.
476
- if (!Number.isInteger(recordIndex) || recordIndex < 0 || recordIndex > maxIndex) {
477
- throw new errors_1.InvalidAIResponseError(`AI selected record index ${recordIndex} which is out of range (0-${maxIndex}) or not an integer`);
529
+ const { recordIndex, confident: rawConfident } = await this.invokeWithTool(messages, tool);
530
+ // The Zod .min().max() shapes the tool prompt only — NOT validated against the AI response; this
531
+ // guard is the sole runtime enforcement. -1 is accepted only when noneAllowed (allowNone && !truncated).
532
+ if (!Number.isInteger(recordIndex) || recordIndex < minIndex || recordIndex > maxIndex) {
533
+ throw new errors_1.InvalidAIResponseError(`AI selected record index ${recordIndex} which is out of range (${minIndex}-${maxIndex}) or not an integer`);
478
534
  }
479
- return recordIndex;
480
- }
481
- toRecordRef(data) {
482
- return {
483
- collectionName: data.collectionName,
484
- recordId: data.recordId,
485
- stepIndex: this.context.stepIndex,
486
- };
535
+ // A definitive -1 ("none relevant") is not ambiguity. For a positive pick, honour the AI's
536
+ // confidence flag, defaulting to confident when omitted so a missing flag still auto-loads.
537
+ const confident = recordIndex < 0 ? true : rawConfident !== false;
538
+ return { index: recordIndex, confident };
487
539
  }
488
540
  }
489
541
  exports.default = LoadRelatedRecordStepExecutor;
490
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1yZWxhdGVkLXJlY29yZC1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9sb2FkLXJlbGF0ZWQtcmVjb3JkLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSxvREFBMkY7QUFDM0YsNkJBQXdCO0FBRXhCLHNDQU9tQjtBQUNuQixrRkFBd0Q7QUFDeEQsd0VBQXVFO0FBRXZFLE1BQU0sNkJBQTZCLEdBQUc7Ozs7Ozs7O3NGQVFnRCxDQUFDO0FBRXZGLE1BQU0sMkJBQTJCLEdBQUc7bUdBQytELENBQUM7QUFFcEcsTUFBTSwyQkFBMkIsR0FBRzt5RkFDcUQsQ0FBQztBQUUxRiwwRkFBMEY7QUFDMUYsZ0dBQWdHO0FBQ2hHLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxDQUFDLENBQUMsZ0RBQWdEO0FBQ25GLE1BQU0sdUJBQXVCLEdBQUcsS0FBTSxDQUFDLENBQUMseURBQXlEO0FBRWpHLFNBQVMsZUFBZSxDQUFDLEtBQWM7SUFDckMsTUFBTSxVQUFVLEdBQUcsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25GLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxzQkFBc0I7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU5RCxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsZUFBZSxDQUFDO0FBQ3ZFLENBQUM7QUFpQkQsbUdBQW1HO0FBQ25HLG9HQUFvRztBQUNwRyxTQUFTLG9CQUFvQixDQUFDLEtBQWtCO0lBQzlDLE9BQU8sS0FBSyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixJQUFJ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
542
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1yZWxhdGVkLXJlY29yZC1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9sb2FkLXJlbGF0ZWQtcmVjb3JkLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFjQSxvREFBMkY7QUFDM0YsNkJBQXdCO0FBRXhCLHNDQVFtQjtBQUNuQixrRkFBd0Q7QUFDeEQsd0VBQXVFO0FBRXZFLE1BQU0sNkJBQTZCLEdBQUc7Ozs7Ozs7O3NGQVFnRCxDQUFDO0FBRXZGLE1BQU0sMkJBQTJCLEdBQUc7bUdBQytELENBQUM7QUFFcEcsTUFBTSwyQkFBMkIsR0FBRzt5RkFDcUQsQ0FBQztBQUUxRixtR0FBbUc7QUFDbkcsNkVBQTZFO0FBQzdFLE1BQU0saUNBQWlDLEdBQUcseVBBQXlQLENBQUM7QUFFcFMsMEZBQTBGO0FBQzFGLGdHQUFnRztBQUNoRyxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5QixNQUFNLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxDQUFDLGdEQUFnRDtBQUNuRixNQUFNLHVCQUF1QixHQUFHLEtBQU0sQ0FBQyxDQUFDLHlEQUF5RDtBQUVqRyxTQUFTLGVBQWUsQ0FBQyxLQUFjO0lBQ3JDLE1BQU0sVUFBVSxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNuRixJQUFJLFVBQVUsQ0FBQyxNQUFNLElBQUksc0JBQXNCO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFOUQsT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLGVBQWUsQ0FBQztBQUN2RSxDQUFDO0FBaUJELG1HQUFtRztBQUNuRyxvR0FBb0c7QUFDcEcsU0FBUyxvQkFBb0IsQ0FBQyxLQUFrQjtJ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
@@ -58,9 +58,13 @@ class StepExecutionFormatters {
58
58
  return ` Executed: ${toolName} (result not summarized)`;
59
59
  }
60
60
  static formatGuidance(execution) {
61
- if (!execution.executionResult?.userInput)
61
+ const { userInput, generatedByAi } = execution.executionResult ?? {};
62
+ if (!userInput)
62
63
  return null;
63
- return ` The user provided the following input: "${execution.executionResult.userInput}"`;
64
+ // Don't attribute a Full AI response to the operator — a later AI step reads this summary.
65
+ return generatedByAi
66
+ ? ` The AI generated the following response: "${userInput}"`
67
+ : ` The user provided the following input: "${userInput}"`;
64
68
  }
65
69
  static formatLoadRelatedRecord(execution) {
66
70
  const { executionResult } = execution;
@@ -76,4 +80,4 @@ class StepExecutionFormatters {
76
80
  }
77
81
  }
78
82
  exports.default = StepExecutionFormatters;
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1leGVjdXRpb24tZm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGVjdXRvcnMvc3VtbWFyeS9zdGVwLWV4ZWN1dGlvbi1mb3JtYXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsTUFBcUIsdUJBQXVCO0lBQzFDLHlGQUF5RjtJQUN6Rix5RkFBeUY7SUFDekYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUE0QjtRQUN4QyxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixLQUFLLHFCQUFxQjtnQkFDeEIsT0FBTyx1QkFBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRSxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsU0FBaUMsQ0FBQyxDQUFDO1lBQzlFLEtBQUssVUFBVTtnQkFDYixPQUFPLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxTQUFzQyxDQUFDLENBQUM7WUFDeEYsS0FBSyxnQkFBZ0I7Z0JBQ25CLE9BQU8sdUJBQXVCLENBQUMsbUJBQW1CLENBQ2hELFNBQWlELENBQ2xELENBQUM7WUFDSjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVELG1GQUFtRjtJQUNuRix1RkFBdUY7SUFDdkYsd0NBQXdDO0lBQ2hDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FDaEMsU0FBK0M7UUFFL0MsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxJQUFJLFNBQVMsSUFBSSxlQUFlO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLGVBQWUsRUFBRSxXQUFXLElBQUksWUFBWSxDQUFDO1FBQ3RFLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENB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
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1leGVjdXRpb24tZm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9leGVjdXRvcnMvc3VtbWFyeS9zdGVwLWV4ZWN1dGlvbi1mb3JtYXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsTUFBcUIsdUJBQXVCO0lBQzFDLHlGQUF5RjtJQUN6Rix5RkFBeUY7SUFDekYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUE0QjtRQUN4QyxRQUFRLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2QixLQUFLLHFCQUFxQjtnQkFDeEIsT0FBTyx1QkFBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwRSxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyx1QkFBdUIsQ0FBQyxTQUFTLENBQUMsU0FBaUMsQ0FBQyxDQUFDO1lBQzlFLEtBQUssVUFBVTtnQkFDYixPQUFPLHVCQUF1QixDQUFDLGNBQWMsQ0FBQyxTQUFzQyxDQUFDLENBQUM7WUFDeEYsS0FBSyxnQkFBZ0I7Z0JBQ25CLE9BQU8sdUJBQXVCLENBQUMsbUJBQW1CLENBQ2hELFNBQWlELENBQ2xELENBQUM7WUFDSjtnQkFDRSxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVELG1GQUFtRjtJQUNuRix1RkFBdUY7SUFDdkYsd0NBQXdDO0lBQ2hDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FDaEMsU0FBK0M7UUFFL0MsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsZUFBZSxJQUFJLFNBQVMsSUFBSSxlQUFlO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFFbEUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLGVBQWUsRUFBRSxXQUFXLElBQUksWUFBWSxDQUFDO1FBQ3RFLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENB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
@@ -12,9 +12,12 @@ function serializeStepForWire(step) {
12
12
  case 'trigger-action':
13
13
  return { ...step, selectedRecordRef: serializeRecordRef(step.selectedRecordRef) };
14
14
  case 'load-related-record': {
15
+ // Omit selectedRecordRef when absent — serializing undefined throws.
15
16
  const result = {
16
17
  ...step,
17
- selectedRecordRef: serializeRecordRef(step.selectedRecordRef),
18
+ ...(step.selectedRecordRef && {
19
+ selectedRecordRef: serializeRecordRef(step.selectedRecordRef),
20
+ }),
18
21
  };
19
22
  if (step.pendingData) {
20
23
  const { availableRecordIds, suggestedRecord } = step.pendingData;
@@ -44,4 +47,4 @@ function serializeStepForWire(step) {
44
47
  return step;
45
48
  }
46
49
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvc3RlcC1zZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsdUNBNENDO0FBbERELDJFQUFxRTtBQUVyRSxTQUFTLGtCQUFrQixDQUFDLEdBQWM7SUFDeEMsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFBLHdDQUFpQixFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUF3QixvQkFBb0IsQ0FBQyxJQUF1QjtJQUNsRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLGFBQWEsQ0FBQztRQUNuQixLQUFLLGVBQWUsQ0FBQztRQUNyQixLQUFLLGdCQUFnQjtZQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUVwRixLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBNEI7Z0JBQ3RDLEdBQUcsSUFBSTtnQkFDUCxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDOUQsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFFakUsTUFBTSxDQUFDLFdBQVcsR0FBRztvQkFDbkIsR0FBRyxJQUFJLENBQUMsV0FBVztvQkFDbkIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDL0MsR0FBRyxDQUFDO3dCQUNKLFFBQVEsRUFBRSxJQUFBLHdDQUFpQixFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsZUFBZSxJQUFJO3dCQUNyQixlQUFlLEVBQUU7NEJBQ2YsR0FBRyxlQUFlOzRCQUNsQixRQUFRLEVBQUUsSUFBQSx3Q0FBaUIsRUFBQyxlQUFlLENBQUMsUUFBUSxDQUFDO3lCQUN0RDtxQkFDRixDQUFDO2lCQUNILENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzdELE1BQU0sQ0FBQyxlQUFlLEdBQUc7b0JBQ3ZCLEdBQUcsSUFBSSxDQUFDLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztpQkFDeEQsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQ7WUFDRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyJ9
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zZXJpYWxpemVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAvc3RlcC1zZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0EsdUNBK0NDO0FBckRELDJFQUFxRTtBQUVyRSxTQUFTLGtCQUFrQixDQUFDLEdBQWM7SUFDeEMsT0FBTyxFQUFFLEdBQUcsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFBLHdDQUFpQixFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUF3QixvQkFBb0IsQ0FBQyxJQUF1QjtJQUNsRSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQixLQUFLLGFBQWEsQ0FBQztRQUNuQixLQUFLLGVBQWUsQ0FBQztRQUNyQixLQUFLLGdCQUFnQjtZQUNuQixPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUVwRixLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQztZQUMzQixxRUFBcUU7WUFDckUsTUFBTSxNQUFNLEdBQTRCO2dCQUN0QyxHQUFHLElBQUk7Z0JBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSTtvQkFDNUIsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO2lCQUM5RCxDQUFDO2FBQ0gsQ0FBQztZQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsZUFBZSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQkFFakUsTUFBTSxDQUFDLFdBQVcsR0FBRztvQkFDbkIsR0FBRyxJQUFJLENBQUMsV0FBVztvQkFDbkIsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDL0MsR0FBRyxDQUFDO3dCQUNKLFFBQVEsRUFBRSxJQUFBLHdDQUFpQixFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7cUJBQ3hDLENBQUMsQ0FBQztvQkFDSCxHQUFHLENBQUMsZUFBZSxJQUFJO3dCQUNyQixlQUFlLEVBQUU7NEJBQ2YsR0FBRyxlQUFlOzRCQUNsQixRQUFRLEVBQUUsSUFBQSx3Q0FBaUIsRUFBQyxlQUFlLENBQUMsUUFBUSxDQUFDO3lCQUN0RDtxQkFDRixDQUFDO2lCQUNILENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzdELE1BQU0sQ0FBQyxlQUFlLEdBQUc7b0JBQ3ZCLEdBQUcsSUFBSSxDQUFDLGVBQWU7b0JBQ3ZCLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztpQkFDeEQsQ0FBQztZQUNKLENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQ7WUFDRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyJ9
@@ -127,11 +127,12 @@ export interface LoadRelatedRecordPendingData {
127
127
  suggestedField: RelationRef;
128
128
  availableRecordIds: LoadRelatedRecordCandidate[];
129
129
  suggestedRecord?: LoadRelatedRecordCandidate;
130
+ suggestNoRecord?: boolean;
130
131
  }
131
132
  export interface LoadRelatedRecordStepExecutionData extends BaseStepExecutionData, WithUserConfirmation<LoadRelatedRecordConfirmation> {
132
133
  type: 'load-related-record';
133
134
  pendingData?: LoadRelatedRecordPendingData;
134
- selectedRecordRef: RecordRef;
135
+ selectedRecordRef?: RecordRef;
135
136
  executionParams?: RelationRef;
136
137
  executionResult?: {
137
138
  relation: RelationRef;
@@ -144,9 +145,11 @@ export interface GuidanceStepExecutionData extends BaseStepExecutionData {
144
145
  type: 'guidance';
145
146
  pendingData?: {
146
147
  userInput?: string;
148
+ aiGenerated?: boolean;
147
149
  };
148
150
  executionResult?: {
149
151
  userInput?: string;
152
+ generatedByAi?: boolean;
150
153
  };
151
154
  }
152
155
  export type ConfirmableStepExecutionData = UpdateRecordStepExecutionData | TriggerRecordActionStepExecutionData | McpStepExecutionData | LoadRelatedRecordStepExecutionData;