@memberjunction/ai-prompts 6.2.0-edge.1 → 6.2.0-edge.3

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 (96) hide show
  1. package/README.md +49 -0
  2. package/dist/AIModelRunner.d.ts +9 -88
  3. package/dist/AIModelRunner.d.ts.map +1 -1
  4. package/dist/AIModelRunner.js +11 -283
  5. package/dist/AIModelRunner.js.map +1 -1
  6. package/dist/AIPromptRunner.d.ts +21 -0
  7. package/dist/AIPromptRunner.d.ts.map +1 -1
  8. package/dist/AIPromptRunner.js +72 -29
  9. package/dist/AIPromptRunner.js.map +1 -1
  10. package/dist/BaseModelRunner.d.ts +61 -1
  11. package/dist/BaseModelRunner.d.ts.map +1 -1
  12. package/dist/BaseModelRunner.js +140 -14
  13. package/dist/BaseModelRunner.js.map +1 -1
  14. package/dist/ParallelExecution.d.ts +2 -2
  15. package/dist/ParallelExecution.d.ts.map +1 -1
  16. package/dist/ParallelExecutionCoordinator.d.ts +4 -2
  17. package/dist/ParallelExecutionCoordinator.d.ts.map +1 -1
  18. package/dist/ParallelExecutionCoordinator.js +7 -4
  19. package/dist/ParallelExecutionCoordinator.js.map +1 -1
  20. package/dist/audio/AISpeechToTextRunner.d.ts +46 -0
  21. package/dist/audio/AISpeechToTextRunner.d.ts.map +1 -0
  22. package/dist/audio/AISpeechToTextRunner.js +93 -0
  23. package/dist/audio/AISpeechToTextRunner.js.map +1 -0
  24. package/dist/audio/AITextToSpeechRunner.d.ts +43 -0
  25. package/dist/audio/AITextToSpeechRunner.d.ts.map +1 -0
  26. package/dist/audio/AITextToSpeechRunner.js +80 -0
  27. package/dist/audio/AITextToSpeechRunner.js.map +1 -0
  28. package/dist/audio/audio-description.d.ts +22 -0
  29. package/dist/audio/audio-description.d.ts.map +1 -0
  30. package/dist/audio/audio-description.js +52 -0
  31. package/dist/audio/audio-description.js.map +1 -0
  32. package/dist/audio/audio-runner.types.d.ts +46 -0
  33. package/dist/audio/audio-runner.types.d.ts.map +1 -0
  34. package/dist/audio/audio-runner.types.js +7 -0
  35. package/dist/audio/audio-runner.types.js.map +1 -0
  36. package/dist/decision/AIDecisionRunner.d.ts +134 -0
  37. package/dist/decision/AIDecisionRunner.d.ts.map +1 -0
  38. package/dist/decision/AIDecisionRunner.js +503 -0
  39. package/dist/decision/AIDecisionRunner.js.map +1 -0
  40. package/dist/decision/LLMDecision.d.ts +166 -0
  41. package/dist/decision/LLMDecision.d.ts.map +1 -0
  42. package/dist/decision/LLMDecision.js +496 -0
  43. package/dist/decision/LLMDecision.js.map +1 -0
  44. package/dist/decision/decision-questions.d.ts +28 -0
  45. package/dist/decision/decision-questions.d.ts.map +1 -0
  46. package/dist/decision/decision-questions.js +123 -0
  47. package/dist/decision/decision-questions.js.map +1 -0
  48. package/dist/decision/decision-runner.types.d.ts +29 -0
  49. package/dist/decision/decision-runner.types.d.ts.map +1 -0
  50. package/dist/decision/decision-runner.types.js +14 -0
  51. package/dist/decision/decision-runner.types.js.map +1 -0
  52. package/dist/embedding/AIEmbeddingRunner.d.ts +115 -0
  53. package/dist/embedding/AIEmbeddingRunner.d.ts.map +1 -0
  54. package/dist/embedding/AIEmbeddingRunner.js +462 -0
  55. package/dist/embedding/AIEmbeddingRunner.js.map +1 -0
  56. package/dist/embedding/embedding-runner.types.d.ts +72 -0
  57. package/dist/embedding/embedding-runner.types.d.ts.map +1 -0
  58. package/dist/embedding/embedding-runner.types.js +2 -0
  59. package/dist/embedding/embedding-runner.types.js.map +1 -0
  60. package/dist/image/AIImageGenerationRunner.d.ts +101 -0
  61. package/dist/image/AIImageGenerationRunner.d.ts.map +1 -0
  62. package/dist/image/AIImageGenerationRunner.js +356 -0
  63. package/dist/image/AIImageGenerationRunner.js.map +1 -0
  64. package/dist/image/image-runner.types.d.ts +96 -0
  65. package/dist/image/image-runner.types.d.ts.map +1 -0
  66. package/dist/image/image-runner.types.js +7 -0
  67. package/dist/image/image-runner.types.js.map +1 -0
  68. package/dist/index.d.ts +16 -1
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +15 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/media/BaseMediaRunner.d.ts +143 -0
  73. package/dist/media/BaseMediaRunner.d.ts.map +1 -0
  74. package/dist/media/BaseMediaRunner.js +449 -0
  75. package/dist/media/BaseMediaRunner.js.map +1 -0
  76. package/dist/media/media-runner.types.d.ts +134 -0
  77. package/dist/media/media-runner.types.d.ts.map +1 -0
  78. package/dist/media/media-runner.types.js +8 -0
  79. package/dist/media/media-runner.types.js.map +1 -0
  80. package/dist/media/media-usage.d.ts +13 -0
  81. package/dist/media/media-usage.d.ts.map +1 -0
  82. package/dist/media/media-usage.js +18 -0
  83. package/dist/media/media-usage.js.map +1 -0
  84. package/dist/nativeToolCallingGate.d.ts +17 -1
  85. package/dist/nativeToolCallingGate.d.ts.map +1 -1
  86. package/dist/nativeToolCallingGate.js +24 -0
  87. package/dist/nativeToolCallingGate.js.map +1 -1
  88. package/dist/video/AIVideoRunner.d.ts +46 -0
  89. package/dist/video/AIVideoRunner.d.ts.map +1 -0
  90. package/dist/video/AIVideoRunner.js +88 -0
  91. package/dist/video/AIVideoRunner.js.map +1 -0
  92. package/dist/video/video-runner.types.d.ts +29 -0
  93. package/dist/video/video-runner.types.d.ts.map +1 -0
  94. package/dist/video/video-runner.types.js +7 -0
  95. package/dist/video/video-runner.types.js.map +1 -0
  96. package/package.json +12 -12
package/README.md CHANGED
@@ -198,10 +198,59 @@ Hierarchical credential resolution for API keys:
198
198
  5. `AIPromptParams.apiKeys[]` (legacy runtime keys)
199
199
  6. `AI_VENDOR_API_KEY__<DRIVER>` environment variables (legacy)
200
200
 
201
+ **Credential scope.** `AIPromptParams.CredentialScope` (`'Any' | 'RuntimeOnly'`, default `'Any'`)
202
+ decides which of these tiers a run may use. Under `'RuntimeOnly'` only 1 and 5 count — the caller's
203
+ own `credentialId` and `apiKeys`. Credential bindings, the vendor default and environment keys are
204
+ skipped, a candidate the run has no key for is unavailable, so failover stays on the caller's
205
+ vendors, and a run the keys do not cover fails with *"… The credential scope is RuntimeOnly …"*
206
+ instead of running on the platform's account. Prompts the runner starts on a caller's behalf (JSON
207
+ repair, the result-selector judge, decisions' chat prompts) run under the caller's scope.
208
+
201
209
  ### Failover
202
210
 
203
211
  When a model fails due to rate limiting, authentication errors, or other transient issues, the runner can automatically retry with alternate models from the selection candidates.
204
212
 
213
+ ### Media Runners
214
+
215
+ Non-chat models run through runners built on the same `BaseModelRunner`, so they get the same model selection, credential resolution, failover and `MJ: AI Prompt Runs` row as a chat prompt. Each requires one model type, and uses a default carrier prompt, found by name, unless the caller passes a `PromptID`. A `ModelID` pins the model, and failover then stays within its vendors. The run row never holds media bytes.
216
+
217
+ | Runner | Model type | Method | Default prompt | Usage recorded |
218
+ |---|---|---|---|---|
219
+ | `AIImageGenerationRunner` | `Image Generator` | `RunImageGeneration`, `RunImageEdit` | `Default Image Generation` | the driver's, else images returned (`Images`) |
220
+ | `AITextToSpeechRunner` | `TTS` | `RunTextToSpeech` | `Default Text To Speech` | the driver's, else characters sent (`Characters`) |
221
+ | `AISpeechToTextRunner` | `Speech to Text` | `RunSpeechToText` | `Default Speech To Text` | the driver's: audio seconds (`Seconds`) when reported, otherwise nothing |
222
+ | `AIVideoRunner` | `Video` | `RunAvatarVideo` | `Default Video Generation` | the driver's: video seconds (`Seconds`) when reported, otherwise nothing |
223
+
224
+ The text-to-speech, speech-to-text and video runners share their lifecycle through `BaseMediaRunner`. It follows the carrier prompt's `FailoverStrategy`, narrowing `SameModelDifferentVendor` to the selected model's vendors.
225
+
226
+ Whether a failed call fails over is `ErrorAnalyzer`'s decision, as it is for chat prompts. The shipped audio and video drivers report it on `SpeechResult.errorInfo` / `VideoResult.errorInfo`, from the error their SDK threw, so it keeps the HTTP status:
227
+
228
+ - a rate limit, an outage, a server error or a timeout fails over;
229
+ - a request the vendor rejected as invalid (a 400 or 422, such as an unknown voice or an unsupported audio format) does not, since every other candidate would reject it too;
230
+ - a 400 whose message reads as vendor-specific validation (`required`, `must be`, …) fails over to another vendor, as it does for chat;
231
+ - a 401 stops failover, as it does for chat.
232
+
233
+ A driver that reports only `errorMessage` is classified from the message, which recognizes rate limits, outages and a few malformed requests; any other message reads as `Unknown`, which fails over. A driver should set `errorInfo` with `ErrorAnalyzer.AnalyzeError(error)` on the error it caught.
234
+
235
+ `TimeoutMS` and `CancellationToken` bound each driver call as `timeoutMS` and `cancellationToken` bound a chat call. A call that exceeds `TimeoutMS` fails with an `AIPromptTimeoutError` and fails over. A cancelled call ends at once, never fails over, and its run row is recorded as `Cancelled`. The media drivers take no abort signal, so in both cases the request already sent is abandoned rather than torn down.
236
+
237
+ Video generation is asynchronous at the provider, and the primitive offers no status call, so `AIVideoRunner` does not wait for a render. A successful run means the provider accepted the request; the row records the video ID (for HeyGen, the render job's ID) and records the video's length only if a driver reports it.
238
+
239
+ Usage is recorded with `BaseModelRunner.ApplyUsageToRunRecord`, which writes non-token quantities as `InputUnitsUsed` / `OutputUnitsUsed` with the `MJ: AI Usage Types` row that names their measure. The runners never set a cost. The row's save prices it from the model's cost rows, and declines when no price unit type claims the measure, as none yet does for `Characters`.
240
+
241
+ ```typescript
242
+ import { AITextToSpeechRunner } from '@memberjunction/ai-prompts';
243
+
244
+ const result = await new AITextToSpeechRunner().RunTextToSpeech({
245
+ text: 'Your report is ready.',
246
+ voice: 'alloy',
247
+ ContextUser: contextUser,
248
+ });
249
+ if (result.Success) {
250
+ const audio = result.SpeechResult?.data; // the run row describes the audio but never stores it
251
+ }
252
+ ```
253
+
205
254
  ## Usage
206
255
 
207
256
  ### Basic Prompt Execution
@@ -1,109 +1,30 @@
1
- import { UserInfo, IMetadataProvider } from '@memberjunction/core';
2
- /**
3
- * Result from an embedding execution via AIModelRunner.
4
- */
5
- export interface EmbeddingRunResult {
6
- /** Whether the embedding call succeeded */
7
- Success: boolean;
8
- /** The embedding vectors (one per input text) */
9
- Vectors: number[][];
10
- /** The AIPromptRun ID created for tracking */
11
- PromptRunID: string | null;
12
- /** Total tokens used */
13
- TokensUsed: number;
14
- /** Cost of the call */
15
- Cost: number;
16
- /** Error message if failed */
17
- ErrorMessage: string | null;
18
- /** Execution time in milliseconds */
19
- ExecutionTimeMs: number;
20
- }
21
- /**
22
- * Parameters for running an embedding via AIModelRunner.
23
- */
24
- export interface EmbeddingRunParams {
25
- /** The texts to embed */
26
- Texts: string[];
27
- /** Optional: specific AIPrompt ID for this embedding operation (type=Embedding).
28
- * If not provided, uses the first active Embedding prompt found. */
29
- PromptID?: string;
30
- /** Optional: specific model ID to use. If not provided, uses the prompt's model configuration. */
31
- ModelID?: string;
32
- /** The user context for permissions and audit */
33
- ContextUser: UserInfo;
34
- /** Optional: parent prompt run ID (e.g. parent parallel run) for hierarchical tracking */
35
- ParentRunID?: string;
36
- /** Optional: human-readable description for the AIPromptRun record */
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;
45
- }
1
+ import { IMetadataProvider } from '@memberjunction/core';
2
+ import { EmbeddingRunParams, EmbeddingRunResult } from './embedding/embedding-runner.types.js';
3
+ export type { EmbeddingRunResult, EmbeddingRunParams } from './embedding/embedding-runner.types.js';
46
4
  /**
47
5
  * AIModelRunner — Lightweight AI model execution tracker for non-LLM model types.
48
6
  *
49
- * Creates AIPromptRun records for embedding calls (and future: image, audio, video)
50
- * with full token/cost tracking. Uses the same model selection and vendor failover
51
- * infrastructure as AIPromptRunner but without template rendering or validation.
52
- *
53
- * Architecture:
54
- * - @memberjunction/ai (no MJ infra): BaseEmbeddings, ModelUsage
55
- * - @memberjunction/ai-core-plus (this class): AIModelRunner — creates AIPromptRun records
56
- * - @memberjunction/ai-prompts: AIPromptRunner — LLM-specific (template rendering, validation)
57
- *
58
- * Usage:
59
- * ```typescript
60
- * const runner = new AIModelRunner();
61
- * const result = await runner.RunEmbedding({
62
- * Texts: ['Hello world', 'How are you'],
63
- * ContextUser: currentUser,
64
- * Description: 'Content item vectorization'
65
- * });
66
- * // result.PromptRunID links to the AIPromptRun record with token/cost data
67
- * ```
7
+ * @deprecated Use {@link AIEmbeddingRunner} instead. AIModelRunner is retained for backward
8
+ * compatibility and delegates all execution and prompt-run queuing to AIEmbeddingRunner.
68
9
  */
69
10
  export declare class AIModelRunner {
70
- private _provider;
11
+ private _embeddingRunner;
71
12
  /**
72
- * Fire-and-forget AIPromptRun persistence via the shared {@link BaseEntitySaveQueue}. The
73
- * embedding/model run record is observability — the caller gets its vectors regardless of whether
74
- * the tracking row persists — so saves are queued, not awaited, and the embedding call is never
75
- * blocked on a DB round-trip. The queue sequences saves per entity (the initial 'Running' INSERT
76
- * always completes before the 'Completed'/'Failed' UPDATE). `PromptRunID` is returned immediately
77
- * because `NewRecord()` client-generates the UUID.
78
- */
79
- private _promptRunQueue;
80
- /**
81
- * Optional metadata provider override. Callers should set
82
- * `instance.Provider = providerToUse` before invoking run methods
83
- * in multi-provider contexts. Falls back to the global default provider when unset.
13
+ * Optional metadata provider override.
84
14
  */
85
15
  get Provider(): IMetadataProvider;
86
16
  set Provider(value: IMetadataProvider | null);
87
17
  /**
88
18
  * Execute an embedding call with full AIPromptRun tracking.
89
- *
90
- * Creates an AIPromptRun record before the call, invokes the embedding model,
91
- * stores tokens/cost/timing on the run record, and returns the result.
19
+ * Delegates to {@link AIEmbeddingRunner.RunEmbedding}.
92
20
  *
93
21
  * @param params - Embedding execution parameters
94
22
  * @returns Result with vectors, run ID, and usage metrics
95
23
  */
96
24
  RunEmbedding(params: EmbeddingRunParams): Promise<EmbeddingRunResult>;
97
- private resolveEmbeddingModel;
98
- private findBestVendor;
99
- private createRunRecord;
100
25
  /**
101
- * Awaits all in-flight prompt-run saves queued by this runner. The normal path does NOT
102
- * call this — persistence is intentionally fire-and-forget. For tests / durability needs.
26
+ * Awaits all in-flight prompt-run saves queued by this runner.
103
27
  */
104
28
  WaitForPendingPromptRunSaves(): Promise<void>;
105
- private completeRunRecord;
106
- private failRunRecord;
107
- private errorResult;
108
29
  }
109
30
  //# sourceMappingURL=AIModelRunner.d.ts.map
@@ -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,0FAA0F;IAC1F,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;IAiD7B;;;OAGG;IACU,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;YAI5C,iBAAiB;YA0CjB,aAAa;IAsB3B,OAAO,CAAC,WAAW;CAWtB"}
1
+ {"version":3,"file":"AIModelRunner.d.ts","sourceRoot":"","sources":["../src/AIModelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE5F,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAEjG;;;;;GAKG;AACH,qBAAa,aAAa;IACtB,OAAO,CAAC,gBAAgB,CAA2B;IAEnD;;OAEG;IACH,IAAW,QAAQ,IAAI,iBAAiB,CAEvC;IACD,IAAW,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAElD;IAED;;;;;;OAMG;IACU,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIlF;;OAEG;IACU,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7D"}
@@ -1,310 +1,38 @@
1
- import { BaseEntitySaveQueue, Metadata, LogError } from '@memberjunction/core';
2
- import { MJGlobal, UUIDsEqual } from '@memberjunction/global';
3
- import { BaseEmbeddings, GetAIAPIKey } from '@memberjunction/ai';
4
- import { AIEngineBase } from '@memberjunction/ai-engine-base';
5
- import { ResolvePromptRunUserID } from '@memberjunction/ai-core-plus';
1
+ import { AIEmbeddingRunner } from './embedding/AIEmbeddingRunner.js';
6
2
  /**
7
3
  * AIModelRunner — Lightweight AI model execution tracker for non-LLM model types.
8
4
  *
9
- * Creates AIPromptRun records for embedding calls (and future: image, audio, video)
10
- * with full token/cost tracking. Uses the same model selection and vendor failover
11
- * infrastructure as AIPromptRunner but without template rendering or validation.
12
- *
13
- * Architecture:
14
- * - @memberjunction/ai (no MJ infra): BaseEmbeddings, ModelUsage
15
- * - @memberjunction/ai-core-plus (this class): AIModelRunner — creates AIPromptRun records
16
- * - @memberjunction/ai-prompts: AIPromptRunner — LLM-specific (template rendering, validation)
17
- *
18
- * Usage:
19
- * ```typescript
20
- * const runner = new AIModelRunner();
21
- * const result = await runner.RunEmbedding({
22
- * Texts: ['Hello world', 'How are you'],
23
- * ContextUser: currentUser,
24
- * Description: 'Content item vectorization'
25
- * });
26
- * // result.PromptRunID links to the AIPromptRun record with token/cost data
27
- * ```
5
+ * @deprecated Use {@link AIEmbeddingRunner} instead. AIModelRunner is retained for backward
6
+ * compatibility and delegates all execution and prompt-run queuing to AIEmbeddingRunner.
28
7
  */
29
8
  export class AIModelRunner {
30
9
  constructor() {
31
- this._provider = null;
32
- /**
33
- * Fire-and-forget AIPromptRun persistence via the shared {@link BaseEntitySaveQueue}. The
34
- * embedding/model run record is observability — the caller gets its vectors regardless of whether
35
- * the tracking row persists — so saves are queued, not awaited, and the embedding call is never
36
- * blocked on a DB round-trip. The queue sequences saves per entity (the initial 'Running' INSERT
37
- * always completes before the 'Completed'/'Failed' UPDATE). `PromptRunID` is returned immediately
38
- * because `NewRecord()` client-generates the UUID.
39
- */
40
- this._promptRunQueue = new BaseEntitySaveQueue();
10
+ this._embeddingRunner = new AIEmbeddingRunner();
41
11
  }
42
12
  /**
43
- * Optional metadata provider override. Callers should set
44
- * `instance.Provider = providerToUse` before invoking run methods
45
- * in multi-provider contexts. Falls back to the global default provider when unset.
13
+ * Optional metadata provider override.
46
14
  */
47
15
  get Provider() {
48
- return this._provider ?? new Metadata();
16
+ return this._embeddingRunner.Provider;
49
17
  }
50
18
  set Provider(value) {
51
- this._provider = value;
19
+ this._embeddingRunner.Provider = value;
52
20
  }
53
21
  /**
54
22
  * Execute an embedding call with full AIPromptRun tracking.
55
- *
56
- * Creates an AIPromptRun record before the call, invokes the embedding model,
57
- * stores tokens/cost/timing on the run record, and returns the result.
23
+ * Delegates to {@link AIEmbeddingRunner.RunEmbedding}.
58
24
  *
59
25
  * @param params - Embedding execution parameters
60
26
  * @returns Result with vectors, run ID, and usage metrics
61
27
  */
62
28
  async RunEmbedding(params) {
63
- const startTime = Date.now();
64
- try {
65
- // Ensure AIEngine is loaded
66
- await AIEngineBase.Instance.Config(false, params.ContextUser);
67
- // Resolve the embedding prompt and model
68
- const { prompt, modelInfo } = await this.resolveEmbeddingModel(params);
69
- if (!modelInfo) {
70
- return this.errorResult('No embedding model available', startTime);
71
- }
72
- // Create AIPromptRun record (before the call)
73
- const promptRun = await this.createRunRecord(prompt, modelInfo.ModelID, modelInfo.VendorID, params, startTime);
74
- // Execute the embedding call
75
- const embeddingInstance = MJGlobal.Instance.ClassFactory.CreateInstance(BaseEmbeddings, modelInfo.DriverClass, GetAIAPIKey(modelInfo.DriverClass));
76
- if (!embeddingInstance) {
77
- await this.failRunRecord(promptRun, 'Failed to create embedding instance', startTime);
78
- return this.errorResult(`No embedding provider for driver: ${modelInfo.DriverClass}`, startTime);
79
- }
80
- const embedResult = await embeddingInstance.EmbedTexts({
81
- texts: params.Texts,
82
- model: modelInfo.APIName,
83
- dimensions: params.Dimensions
84
- });
85
- if (!embedResult || !embedResult.vectors || embedResult.vectors.length === 0) {
86
- await this.failRunRecord(promptRun, 'Embedding returned no vectors', startTime);
87
- return this.errorResult('Embedding returned no vectors', startTime);
88
- }
89
- // Update AIPromptRun with usage data
90
- await this.completeRunRecord(promptRun, embedResult, startTime);
91
- return {
92
- Success: true,
93
- Vectors: embedResult.vectors,
94
- PromptRunID: promptRun?.ID ?? null,
95
- TokensUsed: embedResult.ModelUsage?.totalTokens ?? 0,
96
- Cost: embedResult.ModelUsage?.cost ?? 0,
97
- ErrorMessage: null,
98
- ExecutionTimeMs: Date.now() - startTime,
99
- };
100
- }
101
- catch (error) {
102
- const msg = error instanceof Error ? error.message : String(error);
103
- LogError(`AIModelRunner.RunEmbedding failed: ${msg}`);
104
- return this.errorResult(msg, startTime);
105
- }
106
- }
107
- // ================================================================
108
- // Private: Model Resolution
109
- // ================================================================
110
- async resolveEmbeddingModel(params) {
111
- const aiEngine = AIEngineBase.Instance;
112
- // Find the embedding prompt
113
- let prompt = null;
114
- if (params.PromptID) {
115
- prompt = aiEngine.Prompts.find(p => UUIDsEqual(p.ID, params.PromptID)) ?? null;
116
- }
117
- else {
118
- // Find first active Embedding-type prompt
119
- prompt = aiEngine.Prompts.find(p => p.Type?.toLowerCase() === 'embedding' && p.Status === 'Active') ?? null;
120
- }
121
- // If explicit model ID provided, use it directly
122
- if (params.ModelID) {
123
- const model = aiEngine.Models.find(m => UUIDsEqual(m.ID, params.ModelID));
124
- if (model) {
125
- const vendor = this.findBestVendor(model.ID);
126
- if (vendor) {
127
- return {
128
- prompt,
129
- modelInfo: {
130
- ModelID: model.ID,
131
- VendorID: vendor.VendorID,
132
- DriverClass: vendor.DriverClass,
133
- APIName: vendor.APIName ?? model.APIName ?? model.Name,
134
- }
135
- };
136
- }
137
- }
138
- }
139
- // Use prompt's model configuration if available
140
- if (prompt) {
141
- const promptModels = aiEngine.PromptModels
142
- .filter(pm => pm.PromptID === prompt.ID)
143
- .sort((a, b) => (b.Priority ?? 0) - (a.Priority ?? 0));
144
- for (const pm of promptModels) {
145
- // Look up model vendor to get driver class
146
- const vendor = this.findBestVendor(pm.ModelID);
147
- if (vendor) {
148
- return {
149
- prompt,
150
- modelInfo: {
151
- ModelID: pm.ModelID,
152
- VendorID: vendor.VendorID,
153
- DriverClass: vendor.DriverClass,
154
- APIName: vendor.APIName ?? '',
155
- }
156
- };
157
- }
158
- }
159
- }
160
- // Fallback: find smallest active embedding model
161
- const embeddingModels = aiEngine.Models.filter(m => {
162
- const modelType = typeof m.AIModelType === 'string' ? m.AIModelType.trim().toLowerCase() : '';
163
- return modelType === 'embeddings';
164
- });
165
- if (embeddingModels.length === 0)
166
- return { prompt, modelInfo: null };
167
- const sorted = [...embeddingModels].sort((a, b) => (a.InputTokenLimit ?? Number.MAX_SAFE_INTEGER) - (b.InputTokenLimit ?? Number.MAX_SAFE_INTEGER));
168
- for (const model of sorted) {
169
- const vendor = this.findBestVendor(model.ID);
170
- if (vendor) {
171
- return {
172
- prompt,
173
- modelInfo: {
174
- ModelID: model.ID,
175
- VendorID: vendor.VendorID,
176
- DriverClass: vendor.DriverClass,
177
- APIName: vendor.APIName ?? model.APIName ?? model.Name,
178
- }
179
- };
180
- }
181
- }
182
- return { prompt, modelInfo: null };
183
- }
184
- findBestVendor(modelID) {
185
- const aiEngine = AIEngineBase.Instance;
186
- const vendors = aiEngine.ModelVendors
187
- .filter(mv => mv.ModelID === modelID && mv.Status === 'Active' && mv.DriverClass != null)
188
- .sort((a, b) => (b.Priority ?? 0) - (a.Priority ?? 0));
189
- for (const v of vendors) {
190
- const apiKey = GetAIAPIKey(v.DriverClass);
191
- if (apiKey) {
192
- return { VendorID: v.VendorID ?? '', DriverClass: v.DriverClass, APIName: v.APIName };
193
- }
194
- }
195
- return null;
196
- }
197
- // ================================================================
198
- // Private: AIPromptRun CRUD
199
- // ================================================================
200
- async createRunRecord(prompt, modelID, vendorID, params, startTime) {
201
- try {
202
- const md = this.Provider;
203
- const promptRun = await md.GetEntityObject('MJ: AI Prompt Runs', params.ContextUser);
204
- promptRun.NewRecord();
205
- if (prompt) {
206
- promptRun.PromptID = prompt.ID;
207
- }
208
- promptRun.ModelID = modelID;
209
- promptRun.VendorID = vendorID || null;
210
- promptRun.Status = 'Running';
211
- promptRun.RunAt = new Date(startTime);
212
- promptRun.Cancelled = false;
213
- promptRun.CacheHit = false;
214
- promptRun.StreamingEnabled = false;
215
- if (params.ParentRunID) {
216
- promptRun.ParentID = params.ParentRunID;
217
- }
218
- promptRun.UserID = ResolvePromptRunUserID({ ContextUser: params.ContextUser });
219
- // Store description in Messages field as context
220
- if (params.Description) {
221
- promptRun.Messages = JSON.stringify({
222
- description: params.Description,
223
- textCount: params.Texts.length,
224
- totalChars: params.Texts.reduce((sum, t) => sum + t.length, 0),
225
- });
226
- }
227
- // Fire-and-forget the initial 'Running' INSERT — ID is already assigned by NewRecord()
228
- // so the returned PromptRunID is valid immediately; the UPDATE chains after this.
229
- this._promptRunQueue.Insert(promptRun);
230
- return promptRun;
231
- }
232
- catch (error) {
233
- LogError(`AIModelRunner: Error creating AIPromptRun: ${error}`);
234
- return null;
235
- }
29
+ return this._embeddingRunner.RunEmbedding(params);
236
30
  }
237
31
  /**
238
- * Awaits all in-flight prompt-run saves queued by this runner. The normal path does NOT
239
- * call this — persistence is intentionally fire-and-forget. For tests / durability needs.
32
+ * Awaits all in-flight prompt-run saves queued by this runner.
240
33
  */
241
34
  async WaitForPendingPromptRunSaves() {
242
- await this._promptRunQueue.Flush();
243
- }
244
- async completeRunRecord(promptRun, embedResult, startTime) {
245
- if (!promptRun)
246
- return;
247
- try {
248
- promptRun.Status = 'Completed';
249
- promptRun.Success = true;
250
- promptRun.CompletedAt = new Date();
251
- promptRun.ExecutionTimeMS = Date.now() - startTime;
252
- // Store token/cost from ModelUsage
253
- if (embedResult.ModelUsage) {
254
- // TokensPrompt = UNCACHED ("net-new") input; cache reads/writes tracked separately.
255
- // TokensUsed = totalTokens = promptTokens + completionTokens (EXCLUDES cache), to
256
- // satisfy the AIPromptRun invariant TokensUsed === TokensPrompt + TokensCompletion.
257
- // (Embeddings don't cache, so cache buckets are 0 here regardless.)
258
- promptRun.TokensPrompt = embedResult.ModelUsage.promptTokens ?? 0;
259
- promptRun.TokensCompletion = embedResult.ModelUsage.completionTokens ?? 0;
260
- promptRun.TokensUsed = embedResult.ModelUsage.totalTokens ?? 0;
261
- promptRun.TokensCacheRead = embedResult.ModelUsage.cacheReadTokens ?? 0;
262
- promptRun.TokensCacheWrite = embedResult.ModelUsage.cacheWriteTokens ?? 0;
263
- promptRun.Cost = embedResult.ModelUsage.cost ?? 0;
264
- promptRun.CostCurrency = embedResult.ModelUsage.costCurrency ?? 'USD';
265
- promptRun.QueueTime = embedResult.ModelUsage.queueTime ?? 0;
266
- promptRun.PromptTime = embedResult.ModelUsage.promptTime ?? 0;
267
- promptRun.CompletionTime = embedResult.ModelUsage.completionTime ?? 0;
268
- }
269
- // Store vector count in Result
270
- promptRun.Result = JSON.stringify({
271
- vectorCount: embedResult.vectors?.length ?? 0,
272
- dimensions: embedResult.vectors?.[0]?.length ?? 0,
273
- });
274
- this._promptRunQueue.Update(promptRun); // fire-and-forget UPDATE; the INSERT landed during the embedding call
275
- }
276
- catch (error) {
277
- LogError(`AIModelRunner: Error completing AIPromptRun: ${error}`);
278
- }
279
- }
280
- async failRunRecord(promptRun, errorMessage, startTime) {
281
- if (!promptRun)
282
- return;
283
- try {
284
- promptRun.Status = 'Failed';
285
- promptRun.Success = false;
286
- promptRun.ErrorMessage = errorMessage;
287
- promptRun.CompletedAt = new Date();
288
- promptRun.ExecutionTimeMS = Date.now() - startTime;
289
- this._promptRunQueue.Update(promptRun); // fire-and-forget UPDATE; the INSERT landed during the embedding call
290
- }
291
- catch (error) {
292
- LogError(`AIModelRunner: Error failing AIPromptRun: ${error}`);
293
- }
294
- }
295
- // ================================================================
296
- // Private: Helpers
297
- // ================================================================
298
- errorResult(message, startTime) {
299
- return {
300
- Success: false,
301
- Vectors: [],
302
- PromptRunID: null,
303
- TokensUsed: 0,
304
- Cost: 0,
305
- ErrorMessage: message,
306
- ExecutionTimeMs: Date.now() - startTime,
307
- };
35
+ await this._embeddingRunner.WaitForPendingPromptRunSaves();
308
36
  }
309
37
  }
310
38
  //# sourceMappingURL=AIModelRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AIModelRunner.js","sourceRoot":"","sources":["../src/AIModelRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AIModelRunner.js","sourceRoot":"","sources":["../src/AIModelRunner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAKlE;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAA1B;QACY,qBAAgB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IA6BvD,CAAC;IA3BG;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAC1C,CAAC;IACD,IAAW,QAAQ,CAAC,KAA+B;QAC/C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,YAAY,CAAC,MAA0B;QAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,4BAA4B;QACrC,MAAM,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,CAAC;IAC/D,CAAC;CACJ"}
@@ -321,8 +321,29 @@ export declare class AIPromptRunner extends BaseModelRunner {
321
321
  * otherwise succeed, so any configuration problem resolves to the path that has always worked.
322
322
  */
323
323
  ResolveNativeToolCallingDecision(prompt: MJAIPromptEntityExtended, params: AIPromptParams, model: MJAIModelEntityExtended, vendorId: string | null, promptModelConfiguration?: AIPromptConfiguration | null): NativeToolCallingDecision;
324
+ /**
325
+ * Returns the template data with `_NATIVE_TOOL_CALLING` and `_NATIVE_CONTROL_FLOW` set.
326
+ *
327
+ * With a decision, both carry the gate's real answer. Without one (a run that declares no tools),
328
+ * they are set to the envelope path's values unless the caller already supplied them. The Loop
329
+ * system prompt reads both unconditionally, so template parameter extraction marks them required,
330
+ * and a run that left them unset failed to render.
331
+ *
332
+ * @param data The caller's template data, if any
333
+ * @param decision The resolved native tool-calling decision, or null when no tools were declared
334
+ */
335
+ protected ApplyNativeTemplateFlags(data: Record<string, unknown> | undefined, decision: NativeToolCallingDecision | null): Record<string, unknown>;
324
336
  /** @deprecated Use {@link ResolveNativeToolCallingDecision}. */
325
337
  resolveNativeToolCallingDecision(prompt: MJAIPromptEntityExtended, params: AIPromptParams, model: MJAIModelEntityExtended, vendorId: string | null, promptModelConfiguration?: AIPromptConfiguration | null): NativeToolCallingDecision;
338
+ /**
339
+ * The merged catalog configuration for the selected model on the selected vendor.
340
+ *
341
+ * Must resolve the INFERENCE PROVIDER row, not the Model Developer row: most models carry two
342
+ * AIModelVendor rows for the same VendorID, and ModelVendors has no guaranteed order. Picking the
343
+ * developer row merges an empty config layer and silently drops any per-serving-path LLM.* knob
344
+ * (notably the SupportsNativeToolCalling kill switch).
345
+ */
346
+ private catalogConfigurationFor;
326
347
  private applyNativeToolCalling;
327
348
  /**
328
349
  * Whether a failed result failed for a TOOLS-specific reason, and so is worth one retry with the
@@ -1 +1 @@
1
- {"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AIPromptRunner.d.ts","sourceRoot":"","sources":["../src/AIPromptRunner.ts"],"names":[],"mappings":"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"}