@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.
- package/README.md +6 -0
- package/dist/AgentDecisionService.d.ts +8 -1
- package/dist/AgentDecisionService.d.ts.map +1 -1
- package/dist/AgentDecisionService.js +4 -0
- package/dist/AgentDecisionService.js.map +1 -1
- package/dist/AgentRunner.d.ts +51 -2
- package/dist/AgentRunner.d.ts.map +1 -1
- package/dist/AgentRunner.js +121 -23
- package/dist/AgentRunner.js.map +1 -1
- package/dist/ConversationCompactionManager.d.ts +9 -1
- package/dist/ConversationCompactionManager.d.ts.map +1 -1
- package/dist/ConversationCompactionManager.js +6 -3
- package/dist/ConversationCompactionManager.js.map +1 -1
- package/dist/ConversationToolManager.d.ts +13 -2
- package/dist/ConversationToolManager.d.ts.map +1 -1
- package/dist/ConversationToolManager.js +19 -3
- package/dist/ConversationToolManager.js.map +1 -1
- package/dist/KnowledgeAgent.d.ts.map +1 -1
- package/dist/KnowledgeAgent.js +6 -1
- package/dist/KnowledgeAgent.js.map +1 -1
- package/dist/MJAIAgentRequestEntityServer.d.ts +6 -0
- package/dist/MJAIAgentRequestEntityServer.d.ts.map +1 -1
- package/dist/MJAIAgentRequestEntityServer.js +26 -1
- package/dist/MJAIAgentRequestEntityServer.js.map +1 -1
- package/dist/PayloadFeedbackManager.d.ts +3 -0
- package/dist/PayloadFeedbackManager.d.ts.map +1 -1
- package/dist/PayloadFeedbackManager.js +2 -1
- package/dist/PayloadFeedbackManager.js.map +1 -1
- package/dist/agent-run-watchdog.d.ts +65 -5
- package/dist/agent-run-watchdog.d.ts.map +1 -1
- package/dist/agent-run-watchdog.js +143 -28
- package/dist/agent-run-watchdog.js.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.d.ts +7 -0
- package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-prompt-params.js +1 -0
- package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
- package/dist/agent-types/loop-agent-type.d.ts +20 -0
- package/dist/agent-types/loop-agent-type.d.ts.map +1 -1
- package/dist/agent-types/loop-agent-type.js +73 -2
- package/dist/agent-types/loop-agent-type.js.map +1 -1
- package/dist/artifact-tools/SearchResultSetToolLibrary.js +4 -4
- package/dist/artifact-tools/SearchResultSetToolLibrary.js.map +1 -1
- package/dist/base-agent.d.ts +310 -26
- package/dist/base-agent.d.ts.map +1 -1
- package/dist/base-agent.js +867 -244
- package/dist/base-agent.js.map +1 -1
- package/dist/client-tool-results.d.ts +45 -0
- package/dist/client-tool-results.d.ts.map +1 -0
- package/dist/client-tool-results.js +94 -0
- package/dist/client-tool-results.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/native-tools/action-tool-builder.d.ts +14 -0
- package/dist/native-tools/action-tool-builder.d.ts.map +1 -1
- package/dist/native-tools/action-tool-builder.js +62 -7
- package/dist/native-tools/action-tool-builder.js.map +1 -1
- package/dist/native-tools/control-tools.d.ts +17 -1
- package/dist/native-tools/control-tools.d.ts.map +1 -1
- package/dist/native-tools/control-tools.js +40 -3
- package/dist/native-tools/control-tools.js.map +1 -1
- package/dist/prior-turn-tool-result-cache.d.ts +31 -12
- package/dist/prior-turn-tool-result-cache.d.ts.map +1 -1
- package/dist/prior-turn-tool-result-cache.js +59 -16
- package/dist/prior-turn-tool-result-cache.js.map +1 -1
- package/dist/realtime/bridge-host-params.d.ts +22 -0
- package/dist/realtime/bridge-host-params.d.ts.map +1 -0
- package/dist/realtime/bridge-host-params.js +53 -0
- package/dist/realtime/bridge-host-params.js.map +1 -0
- package/dist/realtime/bridge-realtime-session-factory.d.ts +63 -3
- package/dist/realtime/bridge-realtime-session-factory.d.ts.map +1 -1
- package/dist/realtime/bridge-realtime-session-factory.js +83 -22
- package/dist/realtime/bridge-realtime-session-factory.js.map +1 -1
- package/dist/realtime/bridge-realtime-usage-recorder.d.ts +81 -0
- package/dist/realtime/bridge-realtime-usage-recorder.d.ts.map +1 -0
- package/dist/realtime/bridge-realtime-usage-recorder.js +194 -0
- package/dist/realtime/bridge-realtime-usage-recorder.js.map +1 -0
- package/dist/realtime/bridge-session-transcript-sink.d.ts +37 -0
- package/dist/realtime/bridge-session-transcript-sink.d.ts.map +1 -0
- package/dist/realtime/bridge-session-transcript-sink.js +58 -0
- package/dist/realtime/bridge-session-transcript-sink.js.map +1 -0
- package/dist/realtime/client-only-channel-server.d.ts +83 -0
- package/dist/realtime/client-only-channel-server.d.ts.map +1 -0
- package/dist/realtime/client-only-channel-server.js +107 -0
- package/dist/realtime/client-only-channel-server.js.map +1 -0
- package/dist/realtime/identity-verification-channel-server.d.ts +50 -0
- package/dist/realtime/identity-verification-channel-server.d.ts.map +1 -0
- package/dist/realtime/identity-verification-channel-server.js +66 -0
- package/dist/realtime/identity-verification-channel-server.js.map +1 -0
- package/dist/realtime/interactive-component-channel-server.d.ts +39 -0
- package/dist/realtime/interactive-component-channel-server.d.ts.map +1 -0
- package/dist/realtime/interactive-component-channel-server.js +55 -0
- package/dist/realtime/interactive-component-channel-server.js.map +1 -0
- package/dist/realtime/realtime-avatar-resolution.d.ts +194 -0
- package/dist/realtime/realtime-avatar-resolution.d.ts.map +1 -0
- package/dist/realtime/realtime-avatar-resolution.js +208 -0
- package/dist/realtime/realtime-avatar-resolution.js.map +1 -0
- package/dist/realtime/realtime-channel-policy.d.ts +81 -0
- package/dist/realtime/realtime-channel-policy.d.ts.map +1 -0
- package/dist/realtime/realtime-channel-policy.js +91 -0
- package/dist/realtime/realtime-channel-policy.js.map +1 -0
- package/dist/realtime/realtime-channel-server-host.d.ts +14 -0
- package/dist/realtime/realtime-channel-server-host.d.ts.map +1 -1
- package/dist/realtime/realtime-channel-server-host.js +35 -0
- package/dist/realtime/realtime-channel-server-host.js.map +1 -1
- package/dist/realtime/realtime-client-session-service.d.ts +493 -30
- package/dist/realtime/realtime-client-session-service.d.ts.map +1 -1
- package/dist/realtime/realtime-client-session-service.js +825 -98
- package/dist/realtime/realtime-client-session-service.js.map +1 -1
- package/dist/realtime/realtime-coagent-config.d.ts +94 -15
- package/dist/realtime/realtime-coagent-config.d.ts.map +1 -1
- package/dist/realtime/realtime-coagent-config.js +109 -4
- package/dist/realtime/realtime-coagent-config.js.map +1 -1
- package/dist/realtime/realtime-coagent-resolution.d.ts +90 -0
- package/dist/realtime/realtime-coagent-resolution.d.ts.map +1 -0
- package/dist/realtime/realtime-coagent-resolution.js +186 -0
- package/dist/realtime/realtime-coagent-resolution.js.map +1 -0
- package/dist/realtime/realtime-delegation-narrator.d.ts +97 -0
- package/dist/realtime/realtime-delegation-narrator.d.ts.map +1 -0
- package/dist/realtime/realtime-delegation-narrator.js +162 -0
- package/dist/realtime/realtime-delegation-narrator.js.map +1 -0
- package/dist/realtime/realtime-recording-store.d.ts +136 -16
- package/dist/realtime/realtime-recording-store.d.ts.map +1 -1
- package/dist/realtime/realtime-recording-store.js +505 -39
- package/dist/realtime/realtime-recording-store.js.map +1 -1
- package/dist/realtime/realtime-session-runner.d.ts +2 -82
- package/dist/realtime/realtime-session-runner.d.ts.map +1 -1
- package/dist/realtime/realtime-session-runner.js +16 -191
- package/dist/realtime/realtime-session-runner.js.map +1 -1
- package/dist/realtime/realtime-vendor-resolution.d.ts +9 -0
- package/dist/realtime/realtime-vendor-resolution.d.ts.map +1 -1
- package/dist/realtime/realtime-vendor-resolution.js +16 -5
- package/dist/realtime/realtime-vendor-resolution.js.map +1 -1
- package/dist/realtime/realtime-video-output-gate.d.ts +83 -0
- package/dist/realtime/realtime-video-output-gate.d.ts.map +1 -0
- package/dist/realtime/realtime-video-output-gate.js +79 -0
- package/dist/realtime/realtime-video-output-gate.js.map +1 -0
- package/dist/rubric-evaluation-agent-runner.js +17 -8
- package/dist/rubric-evaluation-agent-runner.js.map +1 -1
- package/dist/self-check.d.ts +6 -3
- package/dist/self-check.d.ts.map +1 -1
- package/dist/self-check.js +3 -3
- package/dist/self-check.js.map +1 -1
- package/dist/tool-result-format.d.ts +14 -0
- package/dist/tool-result-format.d.ts.map +1 -1
- package/dist/tool-result-format.js.map +1 -1
- 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(
|
|
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
|
-
|
|
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.
|
|
213
|
-
*
|
|
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.
|
|
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
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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()
|
|
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;
|
|
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;
|
|
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
|
|
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
|
|
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 });
|