@memberjunction/ai-agents 6.2.0-edge.2 → 6.2.0-edge.4

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 (148) hide show
  1. package/README.md +6 -0
  2. package/dist/AgentDecisionService.d.ts +8 -1
  3. package/dist/AgentDecisionService.d.ts.map +1 -1
  4. package/dist/AgentDecisionService.js +4 -0
  5. package/dist/AgentDecisionService.js.map +1 -1
  6. package/dist/AgentRunner.d.ts +51 -2
  7. package/dist/AgentRunner.d.ts.map +1 -1
  8. package/dist/AgentRunner.js +121 -23
  9. package/dist/AgentRunner.js.map +1 -1
  10. package/dist/ConversationCompactionManager.d.ts +9 -1
  11. package/dist/ConversationCompactionManager.d.ts.map +1 -1
  12. package/dist/ConversationCompactionManager.js +6 -3
  13. package/dist/ConversationCompactionManager.js.map +1 -1
  14. package/dist/ConversationToolManager.d.ts +13 -2
  15. package/dist/ConversationToolManager.d.ts.map +1 -1
  16. package/dist/ConversationToolManager.js +19 -3
  17. package/dist/ConversationToolManager.js.map +1 -1
  18. package/dist/KnowledgeAgent.d.ts.map +1 -1
  19. package/dist/KnowledgeAgent.js +6 -1
  20. package/dist/KnowledgeAgent.js.map +1 -1
  21. package/dist/MJAIAgentRequestEntityServer.d.ts +6 -0
  22. package/dist/MJAIAgentRequestEntityServer.d.ts.map +1 -1
  23. package/dist/MJAIAgentRequestEntityServer.js +26 -1
  24. package/dist/MJAIAgentRequestEntityServer.js.map +1 -1
  25. package/dist/PayloadFeedbackManager.d.ts +3 -0
  26. package/dist/PayloadFeedbackManager.d.ts.map +1 -1
  27. package/dist/PayloadFeedbackManager.js +2 -1
  28. package/dist/PayloadFeedbackManager.js.map +1 -1
  29. package/dist/agent-run-watchdog.d.ts +65 -5
  30. package/dist/agent-run-watchdog.d.ts.map +1 -1
  31. package/dist/agent-run-watchdog.js +143 -28
  32. package/dist/agent-run-watchdog.js.map +1 -1
  33. package/dist/agent-types/loop-agent-prompt-params.d.ts +7 -0
  34. package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
  35. package/dist/agent-types/loop-agent-prompt-params.js +1 -0
  36. package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
  37. package/dist/agent-types/loop-agent-type.d.ts +20 -0
  38. package/dist/agent-types/loop-agent-type.d.ts.map +1 -1
  39. package/dist/agent-types/loop-agent-type.js +73 -2
  40. package/dist/agent-types/loop-agent-type.js.map +1 -1
  41. package/dist/artifact-tools/SearchResultSetToolLibrary.js +4 -4
  42. package/dist/artifact-tools/SearchResultSetToolLibrary.js.map +1 -1
  43. package/dist/base-agent.d.ts +310 -26
  44. package/dist/base-agent.d.ts.map +1 -1
  45. package/dist/base-agent.js +867 -244
  46. package/dist/base-agent.js.map +1 -1
  47. package/dist/client-tool-results.d.ts +45 -0
  48. package/dist/client-tool-results.d.ts.map +1 -0
  49. package/dist/client-tool-results.js +94 -0
  50. package/dist/client-tool-results.js.map +1 -0
  51. package/dist/index.d.ts +9 -0
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +9 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/native-tools/action-tool-builder.d.ts +14 -0
  56. package/dist/native-tools/action-tool-builder.d.ts.map +1 -1
  57. package/dist/native-tools/action-tool-builder.js +62 -7
  58. package/dist/native-tools/action-tool-builder.js.map +1 -1
  59. package/dist/native-tools/control-tools.d.ts +17 -1
  60. package/dist/native-tools/control-tools.d.ts.map +1 -1
  61. package/dist/native-tools/control-tools.js +40 -3
  62. package/dist/native-tools/control-tools.js.map +1 -1
  63. package/dist/prior-turn-tool-result-cache.d.ts +31 -12
  64. package/dist/prior-turn-tool-result-cache.d.ts.map +1 -1
  65. package/dist/prior-turn-tool-result-cache.js +59 -16
  66. package/dist/prior-turn-tool-result-cache.js.map +1 -1
  67. package/dist/realtime/bridge-host-params.d.ts +22 -0
  68. package/dist/realtime/bridge-host-params.d.ts.map +1 -0
  69. package/dist/realtime/bridge-host-params.js +53 -0
  70. package/dist/realtime/bridge-host-params.js.map +1 -0
  71. package/dist/realtime/bridge-realtime-session-factory.d.ts +63 -3
  72. package/dist/realtime/bridge-realtime-session-factory.d.ts.map +1 -1
  73. package/dist/realtime/bridge-realtime-session-factory.js +83 -22
  74. package/dist/realtime/bridge-realtime-session-factory.js.map +1 -1
  75. package/dist/realtime/bridge-realtime-usage-recorder.d.ts +81 -0
  76. package/dist/realtime/bridge-realtime-usage-recorder.d.ts.map +1 -0
  77. package/dist/realtime/bridge-realtime-usage-recorder.js +194 -0
  78. package/dist/realtime/bridge-realtime-usage-recorder.js.map +1 -0
  79. package/dist/realtime/bridge-session-transcript-sink.d.ts +37 -0
  80. package/dist/realtime/bridge-session-transcript-sink.d.ts.map +1 -0
  81. package/dist/realtime/bridge-session-transcript-sink.js +58 -0
  82. package/dist/realtime/bridge-session-transcript-sink.js.map +1 -0
  83. package/dist/realtime/client-only-channel-server.d.ts +83 -0
  84. package/dist/realtime/client-only-channel-server.d.ts.map +1 -0
  85. package/dist/realtime/client-only-channel-server.js +107 -0
  86. package/dist/realtime/client-only-channel-server.js.map +1 -0
  87. package/dist/realtime/identity-verification-channel-server.d.ts +50 -0
  88. package/dist/realtime/identity-verification-channel-server.d.ts.map +1 -0
  89. package/dist/realtime/identity-verification-channel-server.js +66 -0
  90. package/dist/realtime/identity-verification-channel-server.js.map +1 -0
  91. package/dist/realtime/interactive-component-channel-server.d.ts +39 -0
  92. package/dist/realtime/interactive-component-channel-server.d.ts.map +1 -0
  93. package/dist/realtime/interactive-component-channel-server.js +55 -0
  94. package/dist/realtime/interactive-component-channel-server.js.map +1 -0
  95. package/dist/realtime/realtime-avatar-resolution.d.ts +194 -0
  96. package/dist/realtime/realtime-avatar-resolution.d.ts.map +1 -0
  97. package/dist/realtime/realtime-avatar-resolution.js +208 -0
  98. package/dist/realtime/realtime-avatar-resolution.js.map +1 -0
  99. package/dist/realtime/realtime-channel-policy.d.ts +81 -0
  100. package/dist/realtime/realtime-channel-policy.d.ts.map +1 -0
  101. package/dist/realtime/realtime-channel-policy.js +91 -0
  102. package/dist/realtime/realtime-channel-policy.js.map +1 -0
  103. package/dist/realtime/realtime-channel-server-host.d.ts +14 -0
  104. package/dist/realtime/realtime-channel-server-host.d.ts.map +1 -1
  105. package/dist/realtime/realtime-channel-server-host.js +35 -0
  106. package/dist/realtime/realtime-channel-server-host.js.map +1 -1
  107. package/dist/realtime/realtime-client-session-service.d.ts +493 -30
  108. package/dist/realtime/realtime-client-session-service.d.ts.map +1 -1
  109. package/dist/realtime/realtime-client-session-service.js +825 -98
  110. package/dist/realtime/realtime-client-session-service.js.map +1 -1
  111. package/dist/realtime/realtime-coagent-config.d.ts +94 -15
  112. package/dist/realtime/realtime-coagent-config.d.ts.map +1 -1
  113. package/dist/realtime/realtime-coagent-config.js +109 -4
  114. package/dist/realtime/realtime-coagent-config.js.map +1 -1
  115. package/dist/realtime/realtime-coagent-resolution.d.ts +90 -0
  116. package/dist/realtime/realtime-coagent-resolution.d.ts.map +1 -0
  117. package/dist/realtime/realtime-coagent-resolution.js +186 -0
  118. package/dist/realtime/realtime-coagent-resolution.js.map +1 -0
  119. package/dist/realtime/realtime-delegation-narrator.d.ts +97 -0
  120. package/dist/realtime/realtime-delegation-narrator.d.ts.map +1 -0
  121. package/dist/realtime/realtime-delegation-narrator.js +162 -0
  122. package/dist/realtime/realtime-delegation-narrator.js.map +1 -0
  123. package/dist/realtime/realtime-recording-store.d.ts +136 -16
  124. package/dist/realtime/realtime-recording-store.d.ts.map +1 -1
  125. package/dist/realtime/realtime-recording-store.js +505 -39
  126. package/dist/realtime/realtime-recording-store.js.map +1 -1
  127. package/dist/realtime/realtime-session-runner.d.ts +2 -82
  128. package/dist/realtime/realtime-session-runner.d.ts.map +1 -1
  129. package/dist/realtime/realtime-session-runner.js +16 -191
  130. package/dist/realtime/realtime-session-runner.js.map +1 -1
  131. package/dist/realtime/realtime-vendor-resolution.d.ts +9 -0
  132. package/dist/realtime/realtime-vendor-resolution.d.ts.map +1 -1
  133. package/dist/realtime/realtime-vendor-resolution.js +16 -5
  134. package/dist/realtime/realtime-vendor-resolution.js.map +1 -1
  135. package/dist/realtime/realtime-video-output-gate.d.ts +83 -0
  136. package/dist/realtime/realtime-video-output-gate.d.ts.map +1 -0
  137. package/dist/realtime/realtime-video-output-gate.js +79 -0
  138. package/dist/realtime/realtime-video-output-gate.js.map +1 -0
  139. package/dist/rubric-evaluation-agent-runner.js +17 -8
  140. package/dist/rubric-evaluation-agent-runner.js.map +1 -1
  141. package/dist/self-check.d.ts +6 -3
  142. package/dist/self-check.d.ts.map +1 -1
  143. package/dist/self-check.js +3 -3
  144. package/dist/self-check.js.map +1 -1
  145. package/dist/tool-result-format.d.ts +14 -0
  146. package/dist/tool-result-format.d.ts.map +1 -1
  147. package/dist/tool-result-format.js.map +1 -1
  148. package/package.json +19 -19
@@ -1,9 +1,11 @@
1
1
  import { BaseSingleton, ShutdownRegistry } from '@memberjunction/global';
2
- import { LogError, LogStatus } from '@memberjunction/core';
2
+ import { LogError, LogStatus, RunView } from '@memberjunction/core';
3
+ import { MJAIAgentRunEntityExtended } from '@memberjunction/ai-core-plus';
3
4
  const DEFAULT_CONFIG = {
4
5
  heartbeatIntervalMs: 30_000,
5
6
  sweepIntervalMs: 5 * 60_000,
6
7
  staleThresholdMinutes: 5,
8
+ cancellationPollIntervalMs: 3_000,
7
9
  };
8
10
  /** Matches a canonical UUID. Tracked IDs come from provider-generated PKs, but we validate
9
11
  * before ever interpolating into SQL so a proc argument can never become an injection vector. */
@@ -32,6 +34,14 @@ const SP_CANCEL = 'spCancelAIAgentRun';
32
34
  * boot (closes restart-orphans) and on a timer (closes mid-life orphans).
33
35
  * 3. **Graceful shutdown** — on SIGTERM/SIGINT (via {@link ShutdownRegistry}) this process marks
34
36
  * the runs *it* owns `Cancelled` via {@link SP_CANCEL}, closing the deploy case instantly.
37
+ * 4. **Stop relay** — the database row is also the control channel in the OTHER direction. A Stop
38
+ * button (or anything else) marks a Running row `Cancelled`; every
39
+ * {@link AgentRunWatchdogConfig.cancellationPollIntervalMs} this process reads back which of
40
+ * ITS runs were cancelled and aborts the `AbortController` the owning agent registered with
41
+ * {@link Track}. BaseAgent already checks that signal throughout its loop and forwards it into
42
+ * prompts and actions, so the in-flight step ends and the run finalizes as Cancelled. Because
43
+ * the row is the channel, the replica that owns the run is the one that reacts, with no
44
+ * cross-process messaging.
35
45
  *
36
46
  * Every proc filters `Status='Running'` only — `Paused` and `AwaitingFeedback` are
37
47
  * legitimately-not-progressing states and are never touched. The watchdog accesses the DB only
@@ -41,14 +51,26 @@ const SP_CANCEL = 'spCancelAIAgentRun';
41
51
  * PostgreSQL unchanged.
42
52
  */
43
53
  export class AgentRunWatchdog extends BaseSingleton {
54
+ /**
55
+ * The abort reason the stop relay raises when a run's row was marked `Cancelled` with
56
+ * `CancellationReason = 'User Request'` (the Stop button). BaseAgent maps it back to the same
57
+ * reason on the run it finalizes, so the row the UI wrote and the row the agent writes agree.
58
+ */
59
+ static { this.UserCancelAbortReason = 'Cancelled by user request'; }
60
+ /** The abort reason the stop relay raises for a row cancelled with any other reason. */
61
+ static { this.ExternalCancelAbortReason = 'Cancelled externally'; }
44
62
  constructor() {
45
63
  super();
46
64
  this._config = DEFAULT_CONFIG;
47
65
  this._trackedRuns = new Set();
66
+ /** The abort controller each tracked run registered, keyed by lowercased run ID. */
67
+ this._abortControllers = new Map();
48
68
  this._provider = null;
49
69
  this._contextUser = null;
50
70
  this._heartbeatTimer = null;
51
71
  this._sweepTimer = null;
72
+ this._cancellationPollTimer = null;
73
+ this._cancellationPollInFlight = false;
52
74
  this._registered = false;
53
75
  this.ShutdownName = 'AgentRunWatchdog';
54
76
  }
@@ -63,22 +85,53 @@ export class AgentRunWatchdog extends BaseSingleton {
63
85
  * Begin guarding a run. The owning agent calls this immediately after the run row is saved
64
86
  * (so it has a stable ID). Idempotent per run ID. Capturing the provider/user lets the
65
87
  * central heartbeat + shutdown statements run without each run re-supplying them.
88
+ *
89
+ * @param abortController The run's own abort controller. When supplied, the stop relay aborts
90
+ * it as soon as the run's row is seen marked `Cancelled` by someone else (the Stop button),
91
+ * with {@link UserCancelAbortReason} when the row says `User Request`. Without it the run
92
+ * is still heart-beaten and swept, but a stop cannot reach it.
66
93
  */
67
- Track(runID, provider, contextUser) {
94
+ Track(runID, provider, contextUser, abortController) {
68
95
  if (!runID || !UUID_RE.test(runID)) {
69
96
  return;
70
97
  }
98
+ const key = runID.toLowerCase();
71
99
  this._provider = provider;
72
100
  this._contextUser = contextUser;
73
- this._trackedRuns.add(runID.toLowerCase());
101
+ this._trackedRuns.add(key);
102
+ if (abortController) {
103
+ this._abortControllers.set(key, abortController);
104
+ }
74
105
  this.ensureStarted();
75
106
  }
76
107
  /** Stop guarding a run. Optional — the periodic prune drops terminal runs automatically — but
77
108
  * callers may invoke it for prompt cleanup right after writing a terminal state. */
78
109
  Untrack(runID) {
79
110
  if (runID) {
80
- this._trackedRuns.delete(runID.toLowerCase());
111
+ const key = runID.toLowerCase();
112
+ this._trackedRuns.delete(key);
113
+ this._abortControllers.delete(key);
114
+ }
115
+ }
116
+ /**
117
+ * Abort a run this process owns, right now, without waiting for the poll. The in-process
118
+ * counterpart of the row-driven relay: a caller that already knows the run was cancelled (a
119
+ * resolver on the same replica, a test) can fire the signal directly.
120
+ *
121
+ * @returns true when a controller was registered for the run and had not already fired.
122
+ */
123
+ RequestCancel(runID, reason = AgentRunWatchdog.UserCancelAbortReason) {
124
+ const controller = runID ? this._abortControllers.get(runID.toLowerCase()) : undefined;
125
+ if (!controller || controller.signal.aborted) {
126
+ return false;
81
127
  }
128
+ controller.abort(reason);
129
+ this.Untrack(runID);
130
+ return true;
131
+ }
132
+ /** Whether a stop can reach this run from this process (a controller is registered for it). */
133
+ IsStoppable(runID) {
134
+ return !!runID && this._abortControllers.has(runID.toLowerCase());
82
135
  }
83
136
  /** Number of runs this process is currently guarding (primarily for tests/diagnostics). */
84
137
  get TrackedCount() {
@@ -93,6 +146,7 @@ export class AgentRunWatchdog extends BaseSingleton {
93
146
  this.stopTimers();
94
147
  const ids = this.trackedIds();
95
148
  this._trackedRuns.clear();
149
+ this._abortControllers.clear();
96
150
  if (!ids.length || !this._provider) {
97
151
  return;
98
152
  }
@@ -164,6 +218,10 @@ export class AgentRunWatchdog extends BaseSingleton {
164
218
  this._sweepTimer = setInterval(() => void this.periodicSweep(), this._config.sweepIntervalMs);
165
219
  this._sweepTimer.unref?.();
166
220
  }
221
+ if (!this._cancellationPollTimer) {
222
+ this._cancellationPollTimer = setInterval(() => void this.pollCancellations(), this._config.cancellationPollIntervalMs);
223
+ this._cancellationPollTimer.unref?.();
224
+ }
167
225
  }
168
226
  stopTimers() {
169
227
  if (this._heartbeatTimer) {
@@ -174,6 +232,10 @@ export class AgentRunWatchdog extends BaseSingleton {
174
232
  clearInterval(this._sweepTimer);
175
233
  this._sweepTimer = null;
176
234
  }
235
+ if (this._cancellationPollTimer) {
236
+ clearInterval(this._cancellationPollTimer);
237
+ this._cancellationPollTimer = null;
238
+ }
177
239
  }
178
240
  /** Stamp LastHeartbeatAt for every run this process is guarding, via {@link SP_HEARTBEAT}.
179
241
  * Never throws (runs on a timer); a per-run failure is logged and the rest still beat. */
@@ -207,35 +269,93 @@ export class AgentRunWatchdog extends BaseSingleton {
207
269
  await AgentRunWatchdog.SweepOrphanedRuns(this._provider, this._contextUser, this._config);
208
270
  await this.pruneTerminalRuns();
209
271
  }
272
+ /**
273
+ * The stop relay's read side. One RunView over the AI Agent Runs entity for the tracked runs
274
+ * that have a registered controller and whose row is now `Cancelled`; each one has its
275
+ * controller aborted with a reason derived from the row's `CancellationReason`, and leaves the
276
+ * tracked set (the agent's own cancelled-result save follows). Runs without a controller are
277
+ * left to the prune. Never throws (runs on a timer); overlapping ticks are skipped rather than
278
+ * stacked.
279
+ */
280
+ async pollCancellations() {
281
+ if (this._cancellationPollInFlight || !this._provider || this._abortControllers.size === 0) {
282
+ return;
283
+ }
284
+ const ids = AgentRunWatchdog.idList(Array.from(this._abortControllers.keys()));
285
+ if (!ids) {
286
+ return;
287
+ }
288
+ this._cancellationPollInFlight = true;
289
+ try {
290
+ const rows = await this.readTrackedRuns(MJAIAgentRunEntityExtended.CancelledStatus, ids, ['ID', 'CancellationReason'], 'AgentRunWatchdog cancellation poll');
291
+ for (const row of rows) {
292
+ if (typeof row?.ID !== 'string') {
293
+ continue;
294
+ }
295
+ const reason = AgentRunWatchdog.abortReasonFor(row.CancellationReason);
296
+ if (this.RequestCancel(row.ID, reason)) {
297
+ LogStatus(`[AgentRunWatchdog] Run ${row.ID} was marked Cancelled (${row.CancellationReason ?? 'no reason'}); aborting the in-flight agent`);
298
+ }
299
+ }
300
+ }
301
+ catch (err) {
302
+ LogError(`AgentRunWatchdog cancellation poll failed: ${err instanceof Error ? err.message : String(err)}`);
303
+ }
304
+ finally {
305
+ this._cancellationPollInFlight = false;
306
+ }
307
+ }
308
+ /**
309
+ * The tracked runs (among `ids`) whose row carries `status`, read through RunView against the
310
+ * entity so the read goes where every other entity read goes: the entity's view, under the
311
+ * tracked user's read permission, with the fields named. `ids` is the quoted, UUID-validated
312
+ * list from {@link idList}. Reads the database, not the cache: the rows this looks for were
313
+ * written moments ago by a Stop button or by the finishing agent.
314
+ */
315
+ async readTrackedRuns(status, ids, fields, description) {
316
+ if (!this._provider || !this._contextUser) {
317
+ return [];
318
+ }
319
+ const rv = RunView.FromMetadataProvider(this._provider);
320
+ const result = await rv.RunView({
321
+ EntityName: AGENT_RUN_ENTITY,
322
+ ExtraFilter: `Status='${status}' AND ID IN (${ids})`,
323
+ Fields: fields,
324
+ ResultType: 'simple',
325
+ IgnoreMaxRows: true,
326
+ BypassCache: true,
327
+ }, this._contextUser);
328
+ if (!result.Success) {
329
+ throw new Error(result.ErrorMessage || `${description}: RunView failed`);
330
+ }
331
+ return Array.isArray(result.Results) ? result.Results : [];
332
+ }
333
+ /** Maps a run row's `CancellationReason` to the abort reason the owning agent will see. */
334
+ static abortReasonFor(cancellationReason) {
335
+ return cancellationReason === MJAIAgentRunEntityExtended.UserRequestCancellationReason ? AgentRunWatchdog.UserCancelAbortReason : AgentRunWatchdog.ExternalCancelAbortReason;
336
+ }
210
337
  /**
211
338
  * Drop any tracked run that is no longer `Running` so the in-memory set can't grow unbounded
212
- * over a long-lived process. A single SELECT (against the base VIEW — the runtime user has no
213
- * table access) of the still-running subset; the rest are pruned.
339
+ * over a long-lived process. One RunView (through the entity, so the view the runtime user
340
+ * can read) of the still-running subset; the rest are pruned.
214
341
  */
215
342
  async pruneTerminalRuns() {
216
343
  const ids = this.trackedIdList();
217
344
  if (!ids || !this._provider) {
218
345
  return;
219
346
  }
220
- const view = AgentRunWatchdog.viewOf(this._provider);
221
- if (!view) {
222
- return;
223
- }
224
- const d = this._provider.Dialect;
225
347
  try {
226
- const rows = await this._provider.ExecuteSQL(`SELECT ${d.QuoteIdentifier('ID')} FROM ${view} ` +
227
- `WHERE ${d.QuoteIdentifier('Status')} = 'Running' AND ${d.QuoteIdentifier('ID')} IN (${ids});`, undefined, { ignoreLogging: true, description: 'AgentRunWatchdog tracked-set prune' }, this._contextUser ?? undefined);
348
+ const rows = await this.readTrackedRuns('Running', ids, ['ID'], 'AgentRunWatchdog tracked-set prune');
228
349
  const stillRunning = new Set();
229
- if (Array.isArray(rows)) {
230
- for (const row of rows) {
231
- if (typeof row?.ID === 'string') {
232
- stillRunning.add(row.ID.toLowerCase());
233
- }
350
+ for (const row of rows) {
351
+ if (typeof row?.ID === 'string') {
352
+ stillRunning.add(row.ID.toLowerCase());
234
353
  }
235
354
  }
236
355
  for (const tracked of Array.from(this._trackedRuns)) {
237
356
  if (!stillRunning.has(tracked)) {
238
357
  this._trackedRuns.delete(tracked);
358
+ this._abortControllers.delete(tracked);
239
359
  }
240
360
  }
241
361
  }
@@ -258,21 +378,16 @@ export class AgentRunWatchdog extends BaseSingleton {
258
378
  }
259
379
  /** Comma-joined, quoted, validated UUID list for an `ID IN (...)` clause, or '' if none. */
260
380
  trackedIdList() {
261
- return this.trackedIds().map(id => `'${id}'`).join(',');
381
+ return AgentRunWatchdog.idList(this.trackedIds());
382
+ }
383
+ /** `ids` as a quoted SQL list, keeping only well-formed UUIDs: the values reach a filter string. */
384
+ static idList(ids) {
385
+ return ids.filter(id => UUID_RE.test(id)).map(id => `'${id}'`).join(',');
262
386
  }
263
387
  /** Schema that owns the AIAgentRun objects (for qualifying proc calls), or null if unresolved. */
264
388
  static schemaOf(provider) {
265
389
  const entity = provider.EntityByName(AGENT_RUN_ENTITY);
266
390
  return entity?.SchemaName || null;
267
391
  }
268
- /** Fully-qualified, dialect-quoted base VIEW for AIAgentRun reads, or null if unresolved. */
269
- static viewOf(provider) {
270
- const entity = provider.EntityByName(AGENT_RUN_ENTITY);
271
- if (!entity || !entity.BaseView) {
272
- return null;
273
- }
274
- const d = provider.Dialect;
275
- return entity.SchemaName ? d.QuoteSchema(entity.SchemaName, entity.BaseView) : d.QuoteIdentifier(entity.BaseView);
276
- }
277
392
  }
278
393
  //# sourceMappingURL=agent-run-watchdog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-run-watchdog.js","sourceRoot":"","sources":["../src/agent-run-watchdog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-run-watchdog.js","sourceRoot":"","sources":["../src/agent-run-watchdog.ts"],"names":[],"mappings":"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"}
@@ -509,6 +509,13 @@ export interface LoopAgentTypePromptParams {
509
509
  * @default -1
510
510
  */
511
511
  maxActionsInPrompt?: number;
512
+ /**
513
+ * Character cap for one client tool result in the conversation. -1 (the default) or 0 keeps
514
+ * the whole result. A positive N keeps the first N characters and adds a note saying how much
515
+ * was cut. Compaction and expiration still apply either way.
516
+ * @default -1
517
+ */
518
+ clientToolResultMaxChars?: number;
512
519
  /**
513
520
  * Decision discovery (plan Task 3.1): suggest the agent to delegate to before the first prompt.
514
521
  * When true, and the run answers its conversation's opening request (its messages hold one user
@@ -1 +1 @@
1
- {"version":3,"file":"loop-agent-prompt-params.d.ts","sourceRoot":"","sources":["../../src/agent-types/loop-agent-prompt-params.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop-agent-prompt-params.d.ts","sourceRoot":"","sources":["../../src/agent-types/loop-agent-prompt-params.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,7 @@ export const DEFAULT_LOOP_AGENT_PROMPT_PARAMS = {
104
104
  enableTaskGraphs: false,
105
105
  maxSubAgentsInPrompt: -1,
106
106
  maxActionsInPrompt: -1,
107
+ clientToolResultMaxChars: -1,
107
108
  decisionDiscovery: false
108
109
  };
109
110
  //# sourceMappingURL=loop-agent-prompt-params.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop-agent-prompt-params.js","sourceRoot":"","sources":["../../src/agent-types/loop-agent-prompt-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA2GH;;;GAGG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAyC;IACvF,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;IAChB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,mEAAmE;IACnE,KAAK,EAAE,KAAK;CACf,CAAC;AAkcF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IACzC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAC9C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAwC;IACjF,6BAA6B,EAAE,EAAE,GAAG,qCAAqC,EAAE;IAC3E,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,IAAI;IAC7B,kBAAkB,EAAE,IAAI;IACxB,2BAA2B,EAAE,IAAI;IACjC,uBAAuB,EAAE,IAAI;IAC7B,sBAAsB,EAAE,IAAI;IAC5B,uBAAuB,EAAE,IAAI;IAC7B,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,MAAM;IAC/B,iBAAiB,EAAE,MAAM;IACzB,kBAAkB,EAAE,EAAE;IACtB,wBAAwB,EAAE,IAAI;IAC9B,4BAA4B,EAAE,IAAI;IAClC,mBAAmB,EAAE,IAAI;IACzB,mGAAmG;IACnG,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,KAAK;IAC3B,iBAAiB,EAAE,GAAG;IACtB,oBAAoB,EAAE,8BAA8B;IACpD,wBAAwB,EAAE,2BAA2B;IACrD,kBAAkB,EAAE,kBAAkB;IACtC,YAAY,EAAE,KAAK;IACnB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,GAAG;IACtB,8EAA8E;IAC9E,oBAAoB,EAAE,KAAK;IAC3B,yEAAyE;IACzE,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,CAAC,CAAC;IACxB,kBAAkB,EAAE,CAAC,CAAC;IACtB,iBAAiB,EAAE,KAAK;CAC3B,CAAC"}
1
+ {"version":3,"file":"loop-agent-prompt-params.js","sourceRoot":"","sources":["../../src/agent-types/loop-agent-prompt-params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA2GH;;;GAGG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAyC;IACvF,OAAO,EAAE,IAAI;IACb,aAAa,EAAE,IAAI;IACnB,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI;IACX,UAAU,EAAE,IAAI;IAChB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,mEAAmE;IACnE,KAAK,EAAE,KAAK;CACf,CAAC;AA0cF;;;;GAIG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAE/C,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAA4B,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IACzC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAC9C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAwC;IACjF,6BAA6B,EAAE,EAAE,GAAG,qCAAqC,EAAE;IAC3E,kBAAkB,EAAE,IAAI;IACxB,gBAAgB,EAAE,IAAI;IACtB,uBAAuB,EAAE,IAAI;IAC7B,kBAAkB,EAAE,IAAI;IACxB,2BAA2B,EAAE,IAAI;IACjC,uBAAuB,EAAE,IAAI;IAC7B,sBAAsB,EAAE,IAAI;IAC5B,uBAAuB,EAAE,IAAI;IAC7B,qBAAqB,EAAE,IAAI;IAC3B,uBAAuB,EAAE,MAAM;IAC/B,iBAAiB,EAAE,MAAM;IACzB,kBAAkB,EAAE,EAAE;IACtB,wBAAwB,EAAE,IAAI;IAC9B,4BAA4B,EAAE,IAAI;IAClC,mBAAmB,EAAE,IAAI;IACzB,mGAAmG;IACnG,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,KAAK;IAC3B,iBAAiB,EAAE,GAAG;IACtB,oBAAoB,EAAE,8BAA8B;IACpD,wBAAwB,EAAE,2BAA2B;IACrD,kBAAkB,EAAE,kBAAkB;IACtC,YAAY,EAAE,KAAK;IACnB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,GAAG;IACtB,8EAA8E;IAC9E,oBAAoB,EAAE,KAAK;IAC3B,yEAAyE;IACzE,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,CAAC,CAAC;IACxB,kBAAkB,EAAE,CAAC,CAAC;IACtB,wBAAwB,EAAE,CAAC,CAAC;IAC5B,iBAAiB,EAAE,KAAK;CAC3B,CAAC"}
@@ -97,6 +97,26 @@ export declare class LoopAgentType extends BaseAgentType {
97
97
  private routeResolvedCalls;
98
98
  /** `ask_user` ends the run as Chat / AwaitingFeedback; it must travel alone and carry a message. */
99
99
  private askUserStep;
100
+ /**
101
+ * `complete_task` → Success, carrying its payload change — the native twin of the envelope's
102
+ * `taskComplete: true` + `payloadChangeRequest`, so finishing costs one turn, not two.
103
+ *
104
+ * The call id rides on `payloadToolCallId`: if Success validation turns the step into a Retry,
105
+ * the loop answers this call with the validation feedback, exactly as it answers a
106
+ * payload-only turn.
107
+ */
108
+ private completeTaskStep;
109
+ /**
110
+ * Text that opens a JSON object with a quoted key, bare or in a json fence — an attempted
111
+ * structured answer, not prose. A code block or a sentence that merely starts with a brace
112
+ * is prose and still completes the task.
113
+ */
114
+ private looksLikeEnvelopeAttempt;
115
+ /**
116
+ * Reads `complete_task.payloadChangeRequest`: undefined when absent, null when unusable. Models
117
+ * occasionally JSON-encode a nested object argument, so a string that parses to one is accepted.
118
+ */
119
+ private decodePayloadChangeArgument;
100
120
  /** One sub-agent tool → `subAgent`; several → the parallel `subAgents[]` form. */
101
121
  private subAgentStep;
102
122
  /** Action calls → the Actions step, with any same-turn payload change attached. */
@@ -1 +1 @@
1
- {"version":3,"file":"loop-agent-type.d.ts","sourceRoot":"","sources":["../../src/agent-types/loop-agent-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAIvE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAElE,MAAM,8BAA8B,CAAC;AAErF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAqDxE,qBACa,aAAc,SAAQ,aAAa;IAC5C,4GAA4G;IAC5G,IAAoB,uBAAuB,IAAI,OAAO,CAErD;IAED,OAAO,CAAC,UAAU,CAAiC;IAEnD;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B,CAAK;IAE3C;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,2BAA2B;IAoCnC;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAkEtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAgBP,wBAAwB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAM3G;;;;;;;;;;;OAWG;IACH;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,2BAA2B,CACjC,YAAY,EAAE,iBAAiB,EAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAClD,iBAAiB,GAAG,IAAI;IAmC3B,wGAAwG;IACxG,OAAO,CAAC,kBAAkB;IAkB1B,+DAA+D;IAC/D,OAAO,CAAC,kBAAkB;IA+B1B,oGAAoG;IACpG,OAAO,CAAC,WAAW;IAoBnB,kFAAkF;IAClF,OAAO,CAAC,YAAY;IAmBpB,mFAAmF;IACnF,OAAO,CAAC,WAAW;IAoBnB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAUV,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC7C,YAAY,EAAE,iBAAiB,GAAG,IAAI,EACtC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAClC,OAAO,EAAE,CAAC,EACV,cAAc,EAAE,GAAG,EACnB,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAC5D,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAoThC,gGAAgG;IAChG,OAAO,CAAC,WAAW;IAOnB,gGAAgG;IAChG,OAAO,CAAC,aAAa;IAcrB,mGAAmG;IACnG,OAAO,CAAC,eAAe;IAIvB;;;;;;;OAOG;IACH,SAAS,CAAC,mBAAmB,CAAC,cAAc,EAAE,OAAO,GAAG;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC;IAmJ5F;;;;;;;OAOG;IACU,aAAa,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EACzC,OAAO,EAAE,CAAC,EACV,cAAc,EAAE,GAAG,EACnB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GACpD,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;;;;;OAUG;IACU,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAK/G;;;;;;;;;;;OAWG;IACU,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC9C,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC7B,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC1B,OAAO,EAAE,CAAC,EACV,cAAc,EAAE,GAAG,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAKvC;;;;;;;;;;;OAWG;IACU,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAC5C,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAE,CAAC,EACV,cAAc,EAAE,GAAG,EACnB,gBAAgB,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAC/C,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAK3C;;;;;;;;;;;;;;;;;OAiBG;IACU,oBAAoB,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAChD,OAAO,EAAE,WAAW,EAAE,EACtB,cAAc,EAAE,CAAC,EACjB,cAAc,EAAE,GAAG,EACnB,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACjC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,6BAA6B;CAyBxC"}
1
+ {"version":3,"file":"loop-agent-type.d.ts","sourceRoot":"","sources":["../../src/agent-types/loop-agent-type.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
18
18
  import { CHAT_FINISH_REASON_MALFORMED_TOOL_CALL } from '@memberjunction/ai';
19
19
  import { RegisterClass, SafeExpressionEvaluator } from '@memberjunction/global';
20
20
  import { BaseAgentType } from './base-agent-type.js';
21
+ import { CoerceActionArguments } from '../native-tools/action-tool-builder.js';
21
22
  import { GetToolCallingDecision } from '@memberjunction/ai-prompts';
22
23
  import { FormatValidationErrors, ValidateTaskGraphSpec, ConfigOf } from '@memberjunction/ai-core-plus';
23
24
  import { LogError, LogStatusEx } from '@memberjunction/core';
@@ -313,6 +314,10 @@ let LoopAgentType = class LoopAgentType extends BaseAgentType {
313
314
  if (askUser.length > 0) {
314
315
  return this.askUserStep(askUser[0], resolved.length);
315
316
  }
317
+ const completes = ofKind('complete');
318
+ if (completes.length > 0) {
319
+ return this.completeTaskStep(completes[0], resolved.length);
320
+ }
316
321
  if (payloads.length > 1) {
317
322
  return this.createRetryStep('Call payload_change_request at most once per turn; combine your changes into one call.');
318
323
  }
@@ -352,6 +357,62 @@ let LoopAgentType = class LoopAgentType extends BaseAgentType {
352
357
  }
353
358
  return this.createNextStep('Chat', { message, terminate: true });
354
359
  }
360
+ /**
361
+ * `complete_task` → Success, carrying its payload change — the native twin of the envelope's
362
+ * `taskComplete: true` + `payloadChangeRequest`, so finishing costs one turn, not two.
363
+ *
364
+ * The call id rides on `payloadToolCallId`: if Success validation turns the step into a Retry,
365
+ * the loop answers this call with the validation feedback, exactly as it answers a
366
+ * payload-only turn.
367
+ */
368
+ completeTaskStep(complete, totalCalls) {
369
+ if (totalCalls > 1) {
370
+ return this.createRetryStep('complete_task must be the only call on its turn. Finish any other tool calls first, then call complete_task on its own.');
371
+ }
372
+ const message = typeof complete.call.arguments?.message === 'string' ? complete.call.arguments.message.trim() : '';
373
+ const payloadChangeRequest = this.decodePayloadChangeArgument(complete.call.arguments?.payloadChangeRequest);
374
+ if (payloadChangeRequest === null) {
375
+ return this.createRetryStep('complete_task.payloadChangeRequest must be an object (newElements / updateElements / replaceElements / removeElements), or be omitted.');
376
+ }
377
+ return this.createSuccessStep({
378
+ ...(message ? { message } : {}),
379
+ payloadChangeRequest,
380
+ payloadToolCallId: complete.call.id
381
+ });
382
+ }
383
+ /**
384
+ * Text that opens a JSON object with a quoted key, bare or in a json fence — an attempted
385
+ * structured answer, not prose. A code block or a sentence that merely starts with a brace
386
+ * is prose and still completes the task.
387
+ */
388
+ looksLikeEnvelopeAttempt(text) {
389
+ return /^(?:```(?:json)?\s*)?\{\s*(?:"|$)/i.test(text);
390
+ }
391
+ /**
392
+ * Reads `complete_task.payloadChangeRequest`: undefined when absent, null when unusable. Models
393
+ * occasionally JSON-encode a nested object argument, so a string that parses to one is accepted.
394
+ */
395
+ decodePayloadChangeArgument(value) {
396
+ if (value === undefined || value === null) {
397
+ return undefined;
398
+ }
399
+ // An empty or "null" string is the argument left out, not a malformed one.
400
+ if (typeof value === 'string' && (value.trim() === '' || value.trim() === 'null')) {
401
+ return undefined;
402
+ }
403
+ let candidate = value;
404
+ if (typeof value === 'string') {
405
+ try {
406
+ candidate = JSON.parse(value);
407
+ }
408
+ catch {
409
+ return null;
410
+ }
411
+ }
412
+ return candidate !== null && typeof candidate === 'object' && !Array.isArray(candidate)
413
+ ? candidate
414
+ : null;
415
+ }
355
416
  /** One sub-agent tool → `subAgent`; several → the parallel `subAgents[]` form. */
356
417
  subAgentStep(subAgents, payloadChangeRequest, payloadToolCallId) {
357
418
  const requests = subAgents.map(({ call, binding }) => ({
@@ -376,7 +437,9 @@ let LoopAgentType = class LoopAgentType extends BaseAgentType {
376
437
  // Downstream dispatch resolves Actions by NAME, so hand back the Action's real
377
438
  // name rather than the sanitized tool name the model used.
378
439
  name: binding.action.Name,
379
- params: call.arguments ?? {},
440
+ // Object params the model sent JSON-encoded are decoded here, so the Action sees
441
+ // the same shape the envelope path would have given it.
442
+ params: CoerceActionArguments(binding.params, call.arguments),
380
443
  toolCallId: call.id
381
444
  })),
382
445
  payloadChangeRequest,
@@ -393,7 +456,7 @@ let LoopAgentType = class LoopAgentType extends BaseAgentType {
393
456
  payloadChangeRequest,
394
457
  payloadToolCallId,
395
458
  retryReason: 'Payload change applied',
396
- retryInstructions: 'Your payload change was applied. Continue: call another tool if there is more to do, or reply in plain text when the task is complete.'
459
+ retryInstructions: 'Your payload change was applied. Continue: call another tool if there is more to do, or call complete_task when the task is complete.'
397
460
  });
398
461
  }
399
462
  async DetermineNextStep(promptResult, params, payload, agentTypeState, nativeToolBindings) {
@@ -432,6 +495,14 @@ let LoopAgentType = class LoopAgentType extends BaseAgentType {
432
495
  if (promptResult.promptRun?.ToolCallingMode === 'NativeImplicit') {
433
496
  const text = typeof promptResult.result === 'string' ? promptResult.result.trim()
434
497
  : typeof promptResult.rawResult === 'string' ? promptResult.rawResult.trim() : '';
498
+ if (this.looksLikeEnvelopeAttempt(text)) {
499
+ // JSON the envelope parser could not read is an attempted structured answer, not
500
+ // prose. Accepting it as the final answer would end the run with any payload it
501
+ // carried silently dropped.
502
+ return this.createRetryStep('Your reply looks like a JSON response, but it could not be read and plain text ends the task. ' +
503
+ 'To finish, call complete_task with your answer in message and any payload writes in payloadChangeRequest. ' +
504
+ 'Write JSON only for the nextStep types listed in the response format.');
505
+ }
435
506
  if (text.length > 0) {
436
507
  LogStatusEx({ message: '✅ Loop Agent (implicit): plain-text completion. ' + text.slice(0, 120), verboseOnly: true });
437
508
  return this.createSuccessStep({ message: text });