@memberjunction/ai-prompts 5.48.0 → 5.50.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.
- package/dist/AIModelRunner.d.ts +7 -0
- package/dist/AIModelRunner.d.ts.map +1 -1
- package/dist/AIModelRunner.js +2 -1
- package/dist/AIModelRunner.js.map +1 -1
- package/dist/AIPromptRunner.d.ts +77 -0
- package/dist/AIPromptRunner.d.ts.map +1 -1
- package/dist/AIPromptRunner.js +151 -30
- package/dist/AIPromptRunner.js.map +1 -1
- package/dist/AIPromptTimeoutError.d.ts +20 -0
- package/dist/AIPromptTimeoutError.d.ts.map +1 -0
- package/dist/AIPromptTimeoutError.js +24 -0
- package/dist/AIPromptTimeoutError.js.map +1 -0
- package/dist/ParallelExecution.d.ts +1 -1
- package/dist/ParallelExecution.d.ts.map +1 -1
- package/dist/ParallelExecutionCoordinator.d.ts +1 -8
- package/dist/ParallelExecutionCoordinator.d.ts.map +1 -1
- package/dist/ParallelExecutionCoordinator.js +25 -24
- package/dist/ParallelExecutionCoordinator.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
package/dist/AIModelRunner.d.ts
CHANGED
|
@@ -35,6 +35,13 @@ export interface EmbeddingRunParams {
|
|
|
35
35
|
ParentRunID?: string;
|
|
36
36
|
/** Optional: human-readable description for the AIPromptRun record */
|
|
37
37
|
Description?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Optional: reduced embedding dimensions. Forwarded to the embedding provider's EmbedTexts call
|
|
40
|
+
* for models that support dimension reduction (e.g. OpenAI text-embedding-3-*); ignored by
|
|
41
|
+
* models that don't. The authoritative source is `MJ: Vector Indexes.Dimensions` — callers
|
|
42
|
+
* should read it from there and pass it here.
|
|
43
|
+
*/
|
|
44
|
+
Dimensions?: number;
|
|
38
45
|
}
|
|
39
46
|
/**
|
|
40
47
|
* AIModelRunner — Lightweight AI model execution tracker for non-LLM model types.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIModelRunner.d.ts","sourceRoot":"","sources":["../src/AIModelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,QAAQ,EAAuB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMvH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IACpB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,yBAAyB;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;yEACqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,WAAW,EAAE,QAAQ,CAAC;IACtB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AIModelRunner.d.ts","sourceRoot":"","sources":["../src/AIModelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,QAAQ,EAAuB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAMvH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IACpB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,yBAAyB;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;yEACqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,WAAW,EAAE,QAAQ,CAAC;IACtB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,SAAS,CAAkC;IAEnD;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe,CAA6B;IAEpD;;;;OAIG;IACH,IAAW,QAAQ,IAAI,iBAAiB,CAEvC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAElD;IAED;;;;;;;;OAQG;IACU,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;YA+DpE,qBAAqB;IAyFnC,OAAO,CAAC,cAAc;YAmBR,eAAe;IAgD7B;;;OAGG;IACU,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;YAI5C,iBAAiB;YA0CjB,aAAa;IAsB3B,OAAO,CAAC,WAAW;CAWtB"}
|
package/dist/AIModelRunner.js
CHANGED
|
@@ -78,7 +78,8 @@ export class AIModelRunner {
|
|
|
78
78
|
}
|
|
79
79
|
const embedResult = await embeddingInstance.EmbedTexts({
|
|
80
80
|
texts: params.Texts,
|
|
81
|
-
model: modelInfo.APIName
|
|
81
|
+
model: modelInfo.APIName,
|
|
82
|
+
dimensions: params.Dimensions
|
|
82
83
|
});
|
|
83
84
|
if (!embedResult || !embedResult.vectors || embedResult.vectors.length === 0) {
|
|
84
85
|
await this.failRunRecord(promptRun, 'Embedding returned no vectors', startTime);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIModelRunner.js","sourceRoot":"","sources":["../src/AIModelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAY,QAAQ,EAAgC,MAAM,sBAAsB,CAAC;AACvH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAoB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"AIModelRunner.js","sourceRoot":"","sources":["../src/AIModelRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/AIPromptRunner.d.ts
CHANGED
|
@@ -5,6 +5,24 @@ import { IMetadataProvider } from '@memberjunction/core';
|
|
|
5
5
|
import { MJAIModelEntityExtended, MJAIPromptEntityExtended, MJAIPromptRunEntityExtended } from "@memberjunction/ai-core-plus";
|
|
6
6
|
import { type IParallelExecutionCoordinator } from './ParallelExecution.js';
|
|
7
7
|
import { TemplateMessageRole, AIPromptParams } from '@memberjunction/ai-core-plus';
|
|
8
|
+
/**
|
|
9
|
+
* The composed bound applied to a single model call: the caller's cancellation token (if any) merged
|
|
10
|
+
* with the prompt's configured `AIPrompt.TimeoutMS` (if any).
|
|
11
|
+
*
|
|
12
|
+
* Produced by `AIPromptRunner.createExecutionBound` and consumed by the bounded ChatCompletion race.
|
|
13
|
+
* `Dispose()` MUST be called when the call settles so the timeout timer and abort listener are
|
|
14
|
+
* released.
|
|
15
|
+
*/
|
|
16
|
+
export interface ExecutionBound {
|
|
17
|
+
/** Merged abort signal; `undefined` when there is neither a caller token nor a prompt timeout. */
|
|
18
|
+
Signal?: AbortSignal;
|
|
19
|
+
/** The prompt-configured timeout in ms, when one applies. */
|
|
20
|
+
TimeoutMS?: number;
|
|
21
|
+
/** True once the TIMEOUT (not the caller's token) fired — used to build the right error. */
|
|
22
|
+
TimedOut: () => boolean;
|
|
23
|
+
/** Releases the timer and the caller-token listener. Safe to call multiple times. */
|
|
24
|
+
Dispose: () => void;
|
|
25
|
+
}
|
|
8
26
|
/**
|
|
9
27
|
* Represents a model-vendor pair candidate for execution
|
|
10
28
|
*/
|
|
@@ -481,6 +499,65 @@ export declare class AIPromptRunner {
|
|
|
481
499
|
* all live here ONCE. Do not duplicate this logic elsewhere.
|
|
482
500
|
*/
|
|
483
501
|
protected executeModel(model: MJAIModelEntityExtended, renderedPrompt: string, prompt: MJAIPromptEntityExtended, params: AIPromptParams, vendorId: string | null, conversationMessages?: ChatMessage[], templateMessageRole?: TemplateMessageRole, cancellationToken?: AbortSignal, vendorDriverClass?: string, vendorApiName?: string, vendorSupportsEffortLevel?: boolean, modelEffortLevel?: number): Promise<ChatResult>;
|
|
502
|
+
/**
|
|
503
|
+
* Engine-level default model-call timeout, in milliseconds, applied when the caller supplies no
|
|
504
|
+
* `AIPromptParams.timeoutMS`. `undefined` (the default) means NO implicit bound — a prompt run
|
|
505
|
+
* with neither a timeout nor a cancellation token stays unbounded, exactly as before, so this
|
|
506
|
+
* change is behavior-preserving for existing callers.
|
|
507
|
+
*
|
|
508
|
+
* Subclasses (or a host application's runner subclass) can override this to impose a global
|
|
509
|
+
* safety ceiling on every prompt call.
|
|
510
|
+
*/
|
|
511
|
+
protected get DefaultPromptTimeoutMS(): number | undefined;
|
|
512
|
+
/**
|
|
513
|
+
* Resolves the per-model-call timeout: the caller's `AIPromptParams.timeoutMS`, else the runner's
|
|
514
|
+
* {@link DefaultPromptTimeoutMS}. Non-positive / non-numeric values mean "no timeout".
|
|
515
|
+
*
|
|
516
|
+
* The bound is applied PER MODEL CALL (not per prompt execution), which mirrors the parallel
|
|
517
|
+
* path's existing `taskTimeoutMS` semantics: each failover candidate / validation retry gets a
|
|
518
|
+
* fresh budget rather than sharing one wall-clock window.
|
|
519
|
+
*
|
|
520
|
+
* NOTE (issue #3064): there is deliberately NO prompt-entity source here yet — the `AIPrompt`
|
|
521
|
+
* table has no `TimeoutMS` column today. Once a migration adds one and CodeGen regenerates the
|
|
522
|
+
* entity, this becomes `prompt.TimeoutMS ?? params.timeoutMS ?? this.DefaultPromptTimeoutMS`
|
|
523
|
+
* and every bound below starts honoring the per-prompt configuration with no other change.
|
|
524
|
+
*/
|
|
525
|
+
protected getEffectiveTimeoutMS(params: AIPromptParams): number | undefined;
|
|
526
|
+
/**
|
|
527
|
+
* Composes the caller-supplied cancellation token with the resolved model-call timeout into a
|
|
528
|
+
* single {@link AbortSignal} that bounds one model call. NEITHER bound is discarded:
|
|
529
|
+
*
|
|
530
|
+
* - caller token only → the caller's signal is used directly (behavior unchanged)
|
|
531
|
+
* - timeout only → an internal controller aborts after the timeout elapses
|
|
532
|
+
* - both → an internal controller relays the caller's abort AND fires on timeout;
|
|
533
|
+
* whichever happens first wins
|
|
534
|
+
* - neither → `Signal` is undefined and the call runs unbounded (legacy behavior)
|
|
535
|
+
*
|
|
536
|
+
* Implemented with an AbortController + relay listener rather than `AbortSignal.any()` so it works
|
|
537
|
+
* on Node 18 (where `AbortSignal.any` does not exist — it landed in Node 20.3).
|
|
538
|
+
*/
|
|
539
|
+
protected createExecutionBound(prompt: MJAIPromptEntityExtended, params: AIPromptParams, cancellationToken?: AbortSignal): ExecutionBound;
|
|
540
|
+
/**
|
|
541
|
+
* Runs the model call, racing it against the composed execution bound so a hung provider surfaces
|
|
542
|
+
* as a rejected promise the caller's failover/retry logic can act on.
|
|
543
|
+
*
|
|
544
|
+
* A timeout rejects with a typed {@link AIPromptTimeoutError} (classified by ErrorAnalyzer as a
|
|
545
|
+
* retriable NetworkError); a caller cancellation rejects with the same
|
|
546
|
+
* `'Chat completion was cancelled'` error the previous implementation produced, so cancellation
|
|
547
|
+
* semantics are unchanged.
|
|
548
|
+
*
|
|
549
|
+
* NOTE: `Promise.race` ignores the losing `ChatCompletion()` promise's eventual result, but the
|
|
550
|
+
* underlying request IS torn down — the composed signal is on `ChatParams.cancellationToken`, and
|
|
551
|
+
* all 19 drivers now forward it to their SDK/HTTP layer, so aborting the signal (which is exactly
|
|
552
|
+
* what makes the model call lose the race on a timeout or cancellation) aborts the socket rather
|
|
553
|
+
* than leaving it open until the provider closes it.
|
|
554
|
+
*/
|
|
555
|
+
private runChatCompletionBounded;
|
|
556
|
+
/**
|
|
557
|
+
* Builds the rejection error for an aborted model call — a typed {@link AIPromptTimeoutError} when
|
|
558
|
+
* the prompt's TimeoutMS fired, otherwise the legacy cancellation error.
|
|
559
|
+
*/
|
|
560
|
+
private buildAbortError;
|
|
484
561
|
/**
|
|
485
562
|
* Walks every message in chatParams and rewrites media content blocks
|
|
486
563
|
* (image_url / audio_url / video_url / file_url) into visible text markers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAmB,WAAW,EAAqE,MAAM,oBAAoB,CAAC;AACtK,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAqB,iBAAiB,EAAwB,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAwG,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG/J,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/AIPromptRunner.js
CHANGED
|
@@ -6,10 +6,15 @@ import { CleanJSON, MJGlobal, JSONValidator, ValidationResult, ValidationErrorIn
|
|
|
6
6
|
import { CredentialEngine } from '@memberjunction/credentials';
|
|
7
7
|
import { TemplateEngineServer } from '@memberjunction/templates';
|
|
8
8
|
import { ExecutionPlanner } from './ExecutionPlanner.js';
|
|
9
|
+
import { AIPromptTimeoutError } from './AIPromptTimeoutError.js';
|
|
9
10
|
import { AIEngine } from '@memberjunction/aiengine';
|
|
10
11
|
import { AIEngineBase } from '@memberjunction/ai-engine-base';
|
|
11
12
|
import { SystemPlaceholderManager } from '@memberjunction/ai-core-plus';
|
|
12
|
-
|
|
13
|
+
// json5 is a CJS module: under this package's ESM output its import namespace has no
|
|
14
|
+
// `parse` — only the default export does. `import * as JSON5` made JSON5.parse
|
|
15
|
+
// undefined at runtime ("JSON5.parse is not a function"), silently disabling the
|
|
16
|
+
// local JSON-repair tier and forcing every malformed payload onto the AI-repair path.
|
|
17
|
+
import JSON5 from 'json5';
|
|
13
18
|
/**
|
|
14
19
|
* Best-guess MIME family for a ChatMessage content block type when the block
|
|
15
20
|
* doesn't carry its own mimeType. Used by stripUnsupportedMediaBlocks to
|
|
@@ -615,7 +620,10 @@ export class AIPromptRunner {
|
|
|
615
620
|
errorMessage: error.message,
|
|
616
621
|
promptRun,
|
|
617
622
|
executionTimeMS,
|
|
618
|
-
|
|
623
|
+
// Preserve the original exception on the ChatResult so typed failures (e.g.
|
|
624
|
+
// AIPromptTimeoutError from an exceeded AIPrompt.TimeoutMS) survive to the caller
|
|
625
|
+
// instead of being flattened into a string.
|
|
626
|
+
chatResult: { success: false, errorMessage: error.message, errorInfo, exception: error },
|
|
619
627
|
tokensUsed: 0,
|
|
620
628
|
combinedTokensUsed: 0
|
|
621
629
|
};
|
|
@@ -786,7 +794,7 @@ export class AIPromptRunner {
|
|
|
786
794
|
throw new Error('Parallel execution was cancelled before task execution');
|
|
787
795
|
}
|
|
788
796
|
// Execute tasks in parallel
|
|
789
|
-
const parallelResult = await this.ParallelCoordinator.executeTasksInParallel(params, executionTasks, undefined, undefined, params.cancellationToken
|
|
797
|
+
const parallelResult = await this.ParallelCoordinator.executeTasksInParallel(params, executionTasks, undefined, undefined, params.cancellationToken);
|
|
790
798
|
if (!parallelResult.success) {
|
|
791
799
|
throw new Error(`Parallel execution failed: ${parallelResult.errors.join(', ')}`);
|
|
792
800
|
}
|
|
@@ -2119,10 +2127,6 @@ export class AIPromptRunner {
|
|
|
2119
2127
|
}
|
|
2120
2128
|
promptRun.ConfigurationID = params.configurationId;
|
|
2121
2129
|
promptRun.RunAt = startTime;
|
|
2122
|
-
// Set AgentRunID if provided for agent-prompt execution tracking
|
|
2123
|
-
if (params.agentRunId) {
|
|
2124
|
-
promptRun.AgentRunID = params.agentRunId;
|
|
2125
|
-
}
|
|
2126
2130
|
// Resolve and save the effort level used (same precedence as ChatParams resolution)
|
|
2127
2131
|
if (params.effortLevel !== undefined && params.effortLevel !== null) {
|
|
2128
2132
|
promptRun.EffortLevel = params.effortLevel;
|
|
@@ -2573,6 +2577,11 @@ export class AIPromptRunner {
|
|
|
2573
2577
|
let apiName;
|
|
2574
2578
|
let llm;
|
|
2575
2579
|
let chatParams;
|
|
2580
|
+
// Compose the caller's cancellation token (if any) with the resolved model-call timeout (if any)
|
|
2581
|
+
// into a SINGLE signal that bounds this model call. Both bounds always apply — whichever fires
|
|
2582
|
+
// first aborts the call. This is the ONE place the timeout is enforced, so the single-model path
|
|
2583
|
+
// and the parallel path (which delegates here) can never diverge.
|
|
2584
|
+
const executionBound = this.createExecutionBound(prompt, params, cancellationToken);
|
|
2576
2585
|
try {
|
|
2577
2586
|
// Get verbose flag for logging
|
|
2578
2587
|
const verbose = params.verbose === true || IsVerboseLoggingEnabled();
|
|
@@ -2618,7 +2627,10 @@ export class AIPromptRunner {
|
|
|
2618
2627
|
throw new Error(`No API name found for model ${model.Name}. Please ensure the model or its vendor configuration includes an APIName.`);
|
|
2619
2628
|
}
|
|
2620
2629
|
chatParams.model = apiName;
|
|
2621
|
-
|
|
2630
|
+
// Hand the driver the COMPOSED signal (caller token ∪ prompt timeout), not the raw caller
|
|
2631
|
+
// token, so any driver that learns to honor ChatParams.cancellationToken aborts the HTTP
|
|
2632
|
+
// request on timeout too — not just on caller cancellation.
|
|
2633
|
+
chatParams.cancellationToken = executionBound.Signal;
|
|
2622
2634
|
// Apply scalar inference params (prompt defaults overridden by additionalParameters) via the
|
|
2623
2635
|
// shared resolver so ChatParams and the persisted AIPromptRun never drift.
|
|
2624
2636
|
const resolvedParams = this.resolveScalarInferenceParams(prompt, params.additionalParameters);
|
|
@@ -2721,27 +2733,8 @@ export class AIPromptRunner {
|
|
|
2721
2733
|
OnContent: (chunk, isComplete) => onStreaming({ content: chunk, isComplete, modelName: model.Name }),
|
|
2722
2734
|
};
|
|
2723
2735
|
}
|
|
2724
|
-
// Execute the model
|
|
2725
|
-
|
|
2726
|
-
// If cancellation token is provided, wrap the execution to handle cancellation
|
|
2727
|
-
return await Promise.race([
|
|
2728
|
-
llm.ChatCompletion(chatParams),
|
|
2729
|
-
new Promise((_, reject) => {
|
|
2730
|
-
if (cancellationToken.aborted) {
|
|
2731
|
-
reject(new Error('Chat completion was cancelled'));
|
|
2732
|
-
}
|
|
2733
|
-
else {
|
|
2734
|
-
cancellationToken.addEventListener('abort', () => {
|
|
2735
|
-
reject(new Error('Chat completion was cancelled'));
|
|
2736
|
-
});
|
|
2737
|
-
}
|
|
2738
|
-
}),
|
|
2739
|
-
]);
|
|
2740
|
-
}
|
|
2741
|
-
else {
|
|
2742
|
-
// No cancellation token, execute normally
|
|
2743
|
-
return await llm.ChatCompletion(chatParams);
|
|
2744
|
-
}
|
|
2736
|
+
// Execute the model bounded by the composed abort signal (caller cancellation + prompt TimeoutMS)
|
|
2737
|
+
return await this.runChatCompletionBounded(llm, chatParams, executionBound);
|
|
2745
2738
|
}
|
|
2746
2739
|
catch (error) {
|
|
2747
2740
|
const errorInfo = ErrorAnalyzer.analyzeError(error, driverClass);
|
|
@@ -2756,6 +2749,135 @@ export class AIPromptRunner {
|
|
|
2756
2749
|
});
|
|
2757
2750
|
throw error;
|
|
2758
2751
|
}
|
|
2752
|
+
finally {
|
|
2753
|
+
// Always release the timeout timer + abort listener, whether the call succeeded, failed,
|
|
2754
|
+
// timed out, or was cancelled. Without this a long-lived process would accumulate timers.
|
|
2755
|
+
executionBound.Dispose();
|
|
2756
|
+
}
|
|
2757
|
+
}
|
|
2758
|
+
/**
|
|
2759
|
+
* Engine-level default model-call timeout, in milliseconds, applied when the caller supplies no
|
|
2760
|
+
* `AIPromptParams.timeoutMS`. `undefined` (the default) means NO implicit bound — a prompt run
|
|
2761
|
+
* with neither a timeout nor a cancellation token stays unbounded, exactly as before, so this
|
|
2762
|
+
* change is behavior-preserving for existing callers.
|
|
2763
|
+
*
|
|
2764
|
+
* Subclasses (or a host application's runner subclass) can override this to impose a global
|
|
2765
|
+
* safety ceiling on every prompt call.
|
|
2766
|
+
*/
|
|
2767
|
+
get DefaultPromptTimeoutMS() {
|
|
2768
|
+
return undefined;
|
|
2769
|
+
}
|
|
2770
|
+
/**
|
|
2771
|
+
* Resolves the per-model-call timeout: the caller's `AIPromptParams.timeoutMS`, else the runner's
|
|
2772
|
+
* {@link DefaultPromptTimeoutMS}. Non-positive / non-numeric values mean "no timeout".
|
|
2773
|
+
*
|
|
2774
|
+
* The bound is applied PER MODEL CALL (not per prompt execution), which mirrors the parallel
|
|
2775
|
+
* path's existing `taskTimeoutMS` semantics: each failover candidate / validation retry gets a
|
|
2776
|
+
* fresh budget rather than sharing one wall-clock window.
|
|
2777
|
+
*
|
|
2778
|
+
* NOTE (issue #3064): there is deliberately NO prompt-entity source here yet — the `AIPrompt`
|
|
2779
|
+
* table has no `TimeoutMS` column today. Once a migration adds one and CodeGen regenerates the
|
|
2780
|
+
* entity, this becomes `prompt.TimeoutMS ?? params.timeoutMS ?? this.DefaultPromptTimeoutMS`
|
|
2781
|
+
* and every bound below starts honoring the per-prompt configuration with no other change.
|
|
2782
|
+
*/
|
|
2783
|
+
getEffectiveTimeoutMS(params) {
|
|
2784
|
+
const timeoutMS = params.timeoutMS ?? this.DefaultPromptTimeoutMS;
|
|
2785
|
+
return typeof timeoutMS === 'number' && timeoutMS > 0 ? timeoutMS : undefined;
|
|
2786
|
+
}
|
|
2787
|
+
/**
|
|
2788
|
+
* Composes the caller-supplied cancellation token with the resolved model-call timeout into a
|
|
2789
|
+
* single {@link AbortSignal} that bounds one model call. NEITHER bound is discarded:
|
|
2790
|
+
*
|
|
2791
|
+
* - caller token only → the caller's signal is used directly (behavior unchanged)
|
|
2792
|
+
* - timeout only → an internal controller aborts after the timeout elapses
|
|
2793
|
+
* - both → an internal controller relays the caller's abort AND fires on timeout;
|
|
2794
|
+
* whichever happens first wins
|
|
2795
|
+
* - neither → `Signal` is undefined and the call runs unbounded (legacy behavior)
|
|
2796
|
+
*
|
|
2797
|
+
* Implemented with an AbortController + relay listener rather than `AbortSignal.any()` so it works
|
|
2798
|
+
* on Node 18 (where `AbortSignal.any` does not exist — it landed in Node 20.3).
|
|
2799
|
+
*/
|
|
2800
|
+
createExecutionBound(prompt, params, cancellationToken) {
|
|
2801
|
+
const timeoutMS = this.getEffectiveTimeoutMS(params);
|
|
2802
|
+
if (timeoutMS === undefined) {
|
|
2803
|
+
// No prompt timeout: use the caller's token as-is (or nothing at all).
|
|
2804
|
+
return { Signal: cancellationToken, TimeoutMS: undefined, TimedOut: () => false, Dispose: () => { } };
|
|
2805
|
+
}
|
|
2806
|
+
const controller = new AbortController();
|
|
2807
|
+
let timedOut = false;
|
|
2808
|
+
const relayCallerAbort = () => {
|
|
2809
|
+
if (!controller.signal.aborted) {
|
|
2810
|
+
controller.abort(cancellationToken?.reason ?? 'Chat completion was cancelled');
|
|
2811
|
+
}
|
|
2812
|
+
};
|
|
2813
|
+
if (cancellationToken) {
|
|
2814
|
+
if (cancellationToken.aborted) {
|
|
2815
|
+
relayCallerAbort();
|
|
2816
|
+
}
|
|
2817
|
+
else {
|
|
2818
|
+
cancellationToken.addEventListener('abort', relayCallerAbort, { once: true });
|
|
2819
|
+
}
|
|
2820
|
+
}
|
|
2821
|
+
const timer = setTimeout(() => {
|
|
2822
|
+
if (!controller.signal.aborted) {
|
|
2823
|
+
timedOut = true;
|
|
2824
|
+
controller.abort(new AIPromptTimeoutError(prompt.Name, timeoutMS));
|
|
2825
|
+
}
|
|
2826
|
+
}, timeoutMS);
|
|
2827
|
+
return {
|
|
2828
|
+
Signal: controller.signal,
|
|
2829
|
+
TimeoutMS: timeoutMS,
|
|
2830
|
+
TimedOut: () => timedOut,
|
|
2831
|
+
Dispose: () => {
|
|
2832
|
+
clearTimeout(timer);
|
|
2833
|
+
cancellationToken?.removeEventListener('abort', relayCallerAbort);
|
|
2834
|
+
},
|
|
2835
|
+
};
|
|
2836
|
+
}
|
|
2837
|
+
/**
|
|
2838
|
+
* Runs the model call, racing it against the composed execution bound so a hung provider surfaces
|
|
2839
|
+
* as a rejected promise the caller's failover/retry logic can act on.
|
|
2840
|
+
*
|
|
2841
|
+
* A timeout rejects with a typed {@link AIPromptTimeoutError} (classified by ErrorAnalyzer as a
|
|
2842
|
+
* retriable NetworkError); a caller cancellation rejects with the same
|
|
2843
|
+
* `'Chat completion was cancelled'` error the previous implementation produced, so cancellation
|
|
2844
|
+
* semantics are unchanged.
|
|
2845
|
+
*
|
|
2846
|
+
* NOTE: `Promise.race` ignores the losing `ChatCompletion()` promise's eventual result, but the
|
|
2847
|
+
* underlying request IS torn down — the composed signal is on `ChatParams.cancellationToken`, and
|
|
2848
|
+
* all 19 drivers now forward it to their SDK/HTTP layer, so aborting the signal (which is exactly
|
|
2849
|
+
* what makes the model call lose the race on a timeout or cancellation) aborts the socket rather
|
|
2850
|
+
* than leaving it open until the provider closes it.
|
|
2851
|
+
*/
|
|
2852
|
+
async runChatCompletionBounded(llm, chatParams, bound) {
|
|
2853
|
+
const signal = bound.Signal;
|
|
2854
|
+
if (!signal) {
|
|
2855
|
+
// Neither a caller token nor a prompt timeout — execute unbounded (legacy behavior).
|
|
2856
|
+
return await llm.ChatCompletion(chatParams);
|
|
2857
|
+
}
|
|
2858
|
+
return await Promise.race([
|
|
2859
|
+
llm.ChatCompletion(chatParams),
|
|
2860
|
+
new Promise((_, reject) => {
|
|
2861
|
+
const fail = () => reject(this.buildAbortError(signal, bound));
|
|
2862
|
+
if (signal.aborted) {
|
|
2863
|
+
fail();
|
|
2864
|
+
}
|
|
2865
|
+
else {
|
|
2866
|
+
signal.addEventListener('abort', fail, { once: true });
|
|
2867
|
+
}
|
|
2868
|
+
}),
|
|
2869
|
+
]);
|
|
2870
|
+
}
|
|
2871
|
+
/**
|
|
2872
|
+
* Builds the rejection error for an aborted model call — a typed {@link AIPromptTimeoutError} when
|
|
2873
|
+
* the prompt's TimeoutMS fired, otherwise the legacy cancellation error.
|
|
2874
|
+
*/
|
|
2875
|
+
buildAbortError(signal, bound) {
|
|
2876
|
+
if (bound.TimedOut()) {
|
|
2877
|
+
const reason = signal.reason;
|
|
2878
|
+
return reason instanceof AIPromptTimeoutError ? reason : new Error('Chat completion timed out');
|
|
2879
|
+
}
|
|
2880
|
+
return new Error('Chat completion was cancelled');
|
|
2759
2881
|
}
|
|
2760
2882
|
/**
|
|
2761
2883
|
* Walks every message in chatParams and rewrites media content blocks
|
|
@@ -3844,7 +3966,6 @@ export class AIPromptRunner {
|
|
|
3844
3966
|
// Run the repair prompt
|
|
3845
3967
|
const repairResult = await this.ExecutePrompt({
|
|
3846
3968
|
parentPromptRunId: currentPromptRun.ID,
|
|
3847
|
-
agentRunId: currentPromptRun.AgentRunID,
|
|
3848
3969
|
contextUser: params.contextUser,
|
|
3849
3970
|
prompt: repairPrompt,
|
|
3850
3971
|
data: {
|