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

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 (214) hide show
  1. package/README.md +43 -0
  2. package/dist/AgentDataPreloader.d.ts +4 -0
  3. package/dist/AgentDataPreloader.d.ts.map +1 -1
  4. package/dist/AgentDataPreloader.js +10 -2
  5. package/dist/AgentDataPreloader.js.map +1 -1
  6. package/dist/AgentDecisionService.d.ts +83 -0
  7. package/dist/AgentDecisionService.d.ts.map +1 -0
  8. package/dist/AgentDecisionService.js +155 -0
  9. package/dist/AgentDecisionService.js.map +1 -0
  10. package/dist/AgentRunner.d.ts +16 -4
  11. package/dist/AgentRunner.d.ts.map +1 -1
  12. package/dist/AgentRunner.js +55 -32
  13. package/dist/AgentRunner.js.map +1 -1
  14. package/dist/ArtifactToolManager.d.ts +4 -4
  15. package/dist/ArtifactToolManager.js +10 -10
  16. package/dist/ConversationToolManager.d.ts +16 -3
  17. package/dist/ConversationToolManager.d.ts.map +1 -1
  18. package/dist/ConversationToolManager.js +28 -5
  19. package/dist/ConversationToolManager.js.map +1 -1
  20. package/dist/KnowledgeAgent.d.ts.map +1 -1
  21. package/dist/KnowledgeAgent.js +6 -6
  22. package/dist/KnowledgeAgent.js.map +1 -1
  23. package/dist/PayloadChangeAnalyzer.d.ts +4 -0
  24. package/dist/PayloadChangeAnalyzer.d.ts.map +1 -1
  25. package/dist/PayloadChangeAnalyzer.js +10 -2
  26. package/dist/PayloadChangeAnalyzer.js.map +1 -1
  27. package/dist/PayloadFeedbackManager.d.ts +120 -13
  28. package/dist/PayloadFeedbackManager.d.ts.map +1 -1
  29. package/dist/PayloadFeedbackManager.js +244 -88
  30. package/dist/PayloadFeedbackManager.js.map +1 -1
  31. package/dist/PayloadManager.d.ts +27 -0
  32. package/dist/PayloadManager.d.ts.map +1 -1
  33. package/dist/PayloadManager.js +47 -15
  34. package/dist/PayloadManager.js.map +1 -1
  35. package/dist/agent-context-injector.d.ts +47 -3
  36. package/dist/agent-context-injector.d.ts.map +1 -1
  37. package/dist/agent-context-injector.js +77 -10
  38. package/dist/agent-context-injector.js.map +1 -1
  39. package/dist/agent-memory-context-builder.d.ts +13 -0
  40. package/dist/agent-memory-context-builder.d.ts.map +1 -1
  41. package/dist/agent-memory-context-builder.js +24 -5
  42. package/dist/agent-memory-context-builder.js.map +1 -1
  43. package/dist/agent-types/base-agent-type.d.ts +16 -0
  44. package/dist/agent-types/base-agent-type.d.ts.map +1 -1
  45. package/dist/agent-types/base-agent-type.js +20 -1
  46. package/dist/agent-types/base-agent-type.js.map +1 -1
  47. package/dist/agent-types/flow-agent-type.d.ts +106 -0
  48. package/dist/agent-types/flow-agent-type.d.ts.map +1 -1
  49. package/dist/agent-types/flow-agent-type.js +299 -29
  50. package/dist/agent-types/flow-agent-type.js.map +1 -1
  51. package/dist/agent-types/flow-graph-executor.d.ts +12 -1
  52. package/dist/agent-types/flow-graph-executor.d.ts.map +1 -1
  53. package/dist/agent-types/flow-graph-executor.js +25 -1
  54. package/dist/agent-types/flow-graph-executor.js.map +1 -1
  55. package/dist/agent-types/loop-agent-prompt-params.d.ts +258 -11
  56. package/dist/agent-types/loop-agent-prompt-params.d.ts.map +1 -1
  57. package/dist/agent-types/loop-agent-prompt-params.js +49 -2
  58. package/dist/agent-types/loop-agent-prompt-params.js.map +1 -1
  59. package/dist/agent-types/loop-agent-response-type.d.ts +12 -1
  60. package/dist/agent-types/loop-agent-response-type.d.ts.map +1 -1
  61. package/dist/agent-types/loop-agent-response-type.js.map +1 -1
  62. package/dist/agent-types/loop-agent-type.d.ts +6 -0
  63. package/dist/agent-types/loop-agent-type.d.ts.map +1 -1
  64. package/dist/agent-types/loop-agent-type.js +42 -3
  65. package/dist/agent-types/loop-agent-type.js.map +1 -1
  66. package/dist/artifact-target-plan.d.ts +2 -0
  67. package/dist/artifact-target-plan.d.ts.map +1 -1
  68. package/dist/artifact-target-plan.js +5 -1
  69. package/dist/artifact-target-plan.js.map +1 -1
  70. package/dist/base-agent.d.ts +886 -5
  71. package/dist/base-agent.d.ts.map +1 -1
  72. package/dist/base-agent.js +2567 -164
  73. package/dist/base-agent.js.map +1 -1
  74. package/dist/catalog-narrowing.d.ts +136 -0
  75. package/dist/catalog-narrowing.d.ts.map +1 -0
  76. package/dist/catalog-narrowing.js +212 -0
  77. package/dist/catalog-narrowing.js.map +1 -0
  78. package/dist/constants.d.ts +57 -0
  79. package/dist/constants.d.ts.map +1 -0
  80. package/dist/constants.js +70 -0
  81. package/dist/constants.js.map +1 -0
  82. package/dist/decision-discovery.d.ts +401 -0
  83. package/dist/decision-discovery.d.ts.map +1 -0
  84. package/dist/decision-discovery.js +511 -0
  85. package/dist/decision-discovery.js.map +1 -0
  86. package/dist/finish-if-mode-warnings.d.ts +39 -0
  87. package/dist/finish-if-mode-warnings.d.ts.map +1 -0
  88. package/dist/finish-if-mode-warnings.js +78 -0
  89. package/dist/finish-if-mode-warnings.js.map +1 -0
  90. package/dist/finish-if-state.d.ts +72 -0
  91. package/dist/finish-if-state.d.ts.map +1 -0
  92. package/dist/finish-if-state.js +109 -0
  93. package/dist/finish-if-state.js.map +1 -0
  94. package/dist/index.d.ts +9 -0
  95. package/dist/index.d.ts.map +1 -1
  96. package/dist/index.js +10 -0
  97. package/dist/index.js.map +1 -1
  98. package/dist/memory-manager-agent.d.ts +119 -13
  99. package/dist/memory-manager-agent.d.ts.map +1 -1
  100. package/dist/memory-manager-agent.js +237 -74
  101. package/dist/memory-manager-agent.js.map +1 -1
  102. package/dist/memory-note-gate.d.ts +208 -0
  103. package/dist/memory-note-gate.d.ts.map +1 -0
  104. package/dist/memory-note-gate.js +294 -0
  105. package/dist/memory-note-gate.js.map +1 -0
  106. package/dist/native-tools/action-tool-builder.d.ts +8 -0
  107. package/dist/native-tools/action-tool-builder.d.ts.map +1 -1
  108. package/dist/native-tools/action-tool-builder.js +22 -6
  109. package/dist/native-tools/action-tool-builder.js.map +1 -1
  110. package/dist/native-tools/control-tools.d.ts +8 -0
  111. package/dist/native-tools/control-tools.d.ts.map +1 -1
  112. package/dist/native-tools/control-tools.js +25 -9
  113. package/dist/native-tools/control-tools.js.map +1 -1
  114. package/dist/native-tools/dual-channel.d.ts +2 -0
  115. package/dist/native-tools/dual-channel.d.ts.map +1 -1
  116. package/dist/native-tools/dual-channel.js +5 -1
  117. package/dist/native-tools/dual-channel.js.map +1 -1
  118. package/dist/native-tools/tool-result-turns.d.ts +9 -0
  119. package/dist/native-tools/tool-result-turns.d.ts.map +1 -1
  120. package/dist/native-tools/tool-result-turns.js +15 -3
  121. package/dist/native-tools/tool-result-turns.js.map +1 -1
  122. package/dist/pipeline/coerce.d.ts +14 -0
  123. package/dist/pipeline/coerce.d.ts.map +1 -1
  124. package/dist/pipeline/coerce.js +37 -9
  125. package/dist/pipeline/coerce.js.map +1 -1
  126. package/dist/pipeline/jsonpath-eval.d.ts +4 -0
  127. package/dist/pipeline/jsonpath-eval.d.ts.map +1 -1
  128. package/dist/pipeline/jsonpath-eval.js +10 -2
  129. package/dist/pipeline/jsonpath-eval.js.map +1 -1
  130. package/dist/pipeline/operators.js +16 -16
  131. package/dist/pipeline/path.d.ts +6 -0
  132. package/dist/pipeline/path.d.ts.map +1 -1
  133. package/dist/pipeline/path.js +17 -5
  134. package/dist/pipeline/path.js.map +1 -1
  135. package/dist/pipeline/pipeline-executor.js +10 -10
  136. package/dist/pipeline/predicate.d.ts +4 -0
  137. package/dist/pipeline/predicate.d.ts.map +1 -1
  138. package/dist/pipeline/predicate.js +15 -7
  139. package/dist/pipeline/predicate.js.map +1 -1
  140. package/dist/pipeline/providers/action-provider.js +2 -2
  141. package/dist/pipeline/providers/artifact-tool-provider.js +2 -2
  142. package/dist/pipeline/providers/serialize.d.ts +4 -0
  143. package/dist/pipeline/providers/serialize.d.ts.map +1 -1
  144. package/dist/pipeline/providers/serialize.js +10 -2
  145. package/dist/pipeline/providers/serialize.js.map +1 -1
  146. package/dist/pipeline/template.d.ts +4 -0
  147. package/dist/pipeline/template.d.ts.map +1 -1
  148. package/dist/pipeline/template.js +15 -7
  149. package/dist/pipeline/template.js.map +1 -1
  150. package/dist/realtime/agent-media-library.d.ts +10 -0
  151. package/dist/realtime/agent-media-library.d.ts.map +1 -1
  152. package/dist/realtime/agent-media-library.js +29 -9
  153. package/dist/realtime/agent-media-library.js.map +1 -1
  154. package/dist/realtime/bridge-realtime-session-factory.d.ts +5 -2
  155. package/dist/realtime/bridge-realtime-session-factory.d.ts.map +1 -1
  156. package/dist/realtime/bridge-realtime-session-factory.js +7 -4
  157. package/dist/realtime/bridge-realtime-session-factory.js.map +1 -1
  158. package/dist/realtime/bridge-room-transcript-sink.d.ts.map +1 -1
  159. package/dist/realtime/bridge-room-transcript-sink.js +15 -9
  160. package/dist/realtime/bridge-room-transcript-sink.js.map +1 -1
  161. package/dist/realtime/media-channel-server.js +2 -2
  162. package/dist/realtime/meeting-controls-state.d.ts +2 -0
  163. package/dist/realtime/meeting-controls-state.d.ts.map +1 -1
  164. package/dist/realtime/meeting-controls-state.js +6 -2
  165. package/dist/realtime/meeting-controls-state.js.map +1 -1
  166. package/dist/realtime/realtime-channel-server-data-context.d.ts +2 -0
  167. package/dist/realtime/realtime-channel-server-data-context.d.ts.map +1 -1
  168. package/dist/realtime/realtime-channel-server-data-context.js +5 -1
  169. package/dist/realtime/realtime-channel-server-data-context.js.map +1 -1
  170. package/dist/realtime/realtime-channel-server-host.js +2 -2
  171. package/dist/realtime/realtime-client-session-service.d.ts +58 -12
  172. package/dist/realtime/realtime-client-session-service.d.ts.map +1 -1
  173. package/dist/realtime/realtime-client-session-service.js +91 -31
  174. package/dist/realtime/realtime-client-session-service.js.map +1 -1
  175. package/dist/realtime/realtime-coagent-config.d.ts +2 -0
  176. package/dist/realtime/realtime-coagent-config.d.ts.map +1 -1
  177. package/dist/realtime/realtime-coagent-config.js +6 -2
  178. package/dist/realtime/realtime-coagent-config.js.map +1 -1
  179. package/dist/realtime/realtime-recording-store.d.ts +15 -0
  180. package/dist/realtime/realtime-recording-store.d.ts.map +1 -1
  181. package/dist/realtime/realtime-recording-store.js +31 -7
  182. package/dist/realtime/realtime-recording-store.js.map +1 -1
  183. package/dist/realtime/realtime-session-runner.d.ts +4 -4
  184. package/dist/realtime/realtime-session-runner.js +9 -9
  185. package/dist/realtime/realtime-session-runner.js.map +1 -1
  186. package/dist/realtime/realtime-vendor-resolution.d.ts +8 -3
  187. package/dist/realtime/realtime-vendor-resolution.d.ts.map +1 -1
  188. package/dist/realtime/realtime-vendor-resolution.js +3 -3
  189. package/dist/realtime/realtime-vendor-resolution.js.map +1 -1
  190. package/dist/rubric-evaluation-agent-runner.d.ts +2 -0
  191. package/dist/rubric-evaluation-agent-runner.d.ts.map +1 -0
  192. package/dist/rubric-evaluation-agent-runner.js +38 -0
  193. package/dist/rubric-evaluation-agent-runner.js.map +1 -0
  194. package/dist/runtime-state-fragment.d.ts +101 -0
  195. package/dist/runtime-state-fragment.d.ts.map +1 -0
  196. package/dist/runtime-state-fragment.js +173 -0
  197. package/dist/runtime-state-fragment.js.map +1 -0
  198. package/dist/self-check.d.ts +98 -0
  199. package/dist/self-check.d.ts.map +1 -0
  200. package/dist/self-check.js +74 -0
  201. package/dist/self-check.js.map +1 -0
  202. package/dist/types/payload-operations.d.ts +8 -0
  203. package/dist/types/payload-operations.d.ts.map +1 -1
  204. package/dist/types/payload-operations.js +21 -5
  205. package/dist/types/payload-operations.js.map +1 -1
  206. package/dist/utils/ConversationMessageResolver.d.ts +4 -0
  207. package/dist/utils/ConversationMessageResolver.d.ts.map +1 -1
  208. package/dist/utils/ConversationMessageResolver.js +10 -2
  209. package/dist/utils/ConversationMessageResolver.js.map +1 -1
  210. package/dist/volatile-child-prompt.d.ts +33 -0
  211. package/dist/volatile-child-prompt.d.ts.map +1 -0
  212. package/dist/volatile-child-prompt.js +76 -0
  213. package/dist/volatile-child-prompt.js.map +1 -0
  214. package/package.json +21 -18
@@ -30,8 +30,9 @@
30
30
  * @author MemberJunction.com
31
31
  */
32
32
  import { UserInfo, IMetadataProvider } from '@memberjunction/core';
33
+ import { MJLruCache } from '@memberjunction/global';
33
34
  import { MJActionEntityExtended } from '@memberjunction/actions-base';
34
- import { BaseRealtimeModel, ChatMessage, ClientRealtimeSessionConfig, IRealtimeSession, JSONObject, RealtimeSessionParams, RealtimeToolCall, RealtimeToolDefinition } from '@memberjunction/ai';
35
+ import { BaseRealtimeModel, ChatMessage, ClientRealtimeSessionConfig, AIAPIKey, AIAPIKeyResolver, IRealtimeSession, JSONObject, RealtimeSessionParams, RealtimeToolCall, RealtimeToolDefinition } from '@memberjunction/ai';
35
36
  import { MJAIAgentEntityExtended, MJAIModelEntityExtended, MJAIAgentRunEntityExtended, AgentExecutionProgressCallback, ExecuteAgentResult, AppContextSnapshot } from '@memberjunction/ai-core-plus';
36
37
  import { RealtimeToolBroker, RealtimeColleague, DelegateToTargetRequest, DelegatedResult, DelegatedRunArtifact, ToolExecutionResult } from './realtime-tool-broker.js';
37
38
  import { RealtimeAllowedAgent, RealtimeCoAgentConfig, RealtimeDirectActionsConfig } from './realtime-coagent-config.js';
@@ -44,6 +45,17 @@ import { RealtimeVendorSelection } from './realtime-vendor-resolution.js';
44
45
  * id — it is a runtime choice made when the voice session starts.
45
46
  */
46
47
  export interface PrepareClientSessionInput {
48
+ /**
49
+ * The run's runtime API keys, when the session is prepared from an agent run that carries them
50
+ * (`ExecuteAgentParams.apiKeys`, set by `BaseAgent.StartBridgeRealtimeSession`). Vendor selection
51
+ * and the minted session try these first, per driver class; for a class they do not key, this
52
+ * service's {@link RealtimeClientSessionService.getAPIKeyForDriver} seam answers (by default the
53
+ * `AI_VENDOR_API_KEY__<driver>` environment key). That is the same order as `GetAIAPIKey` — the
54
+ * legacy tier of prompt key resolution. MJ Credentials / `AICredentialBinding`s, which a prompt
55
+ * consults first, are not consulted by realtime. Absent ⇒ the seam alone, which is every
56
+ * client-initiated session today.
57
+ */
58
+ APIKeys?: AIAPIKey[];
47
59
  /** The Realtime Co-Agent entity. Provide this OR {@link PrepareClientSessionInput.CoAgentID}. */
48
60
  CoAgent?: MJAIAgentEntityExtended;
49
61
  /** The Realtime Co-Agent id (resolved from cached metadata). Provide this OR {@link PrepareClientSessionInput.CoAgent}. */
@@ -405,12 +417,18 @@ export declare class ToolArgumentsError extends Error {
405
417
  * reaches for the global default provider, so it is safe in multi-provider/multi-tenant servers.
406
418
  */
407
419
  export declare class RealtimeClientSessionService {
408
- /** Maps session id -> (wireName -> MJActionEntityExtended) built during tool projection. */
409
- protected readonly sessionWireActionMaps: Map<string, Map<string, MJActionEntityExtended>>;
410
- /** Maps targetAgentID -> (wireName -> MJActionEntityExtended) fallback built during tool projection. */
411
- protected readonly targetWireActionMaps: Map<string, Map<string, MJActionEntityExtended>>;
412
- /** Maps session id -> direct actions config resolved during session prep. */
413
- protected readonly sessionDirectConfigs: Map<string, RealtimeDirectActionsConfig>;
420
+ /**
421
+ * Maps session id -> (wireName -> MJActionEntityExtended) built during tool projection.
422
+ * Bounded with `MJLruCache` (rather than a plain `Map`): the resolver holds ONE shared service
423
+ * instance for the process lifetime (see class doc above), and there is no "session ended" hook
424
+ * this service can key eviction off — every voice session ever prepared would otherwise leave an
425
+ * entry here forever. Same TTL/maxSize rationale as {@link promptRunWriteChains} below.
426
+ */
427
+ protected readonly sessionWireActionMaps: MJLruCache<string, Map<string, MJActionEntityExtended>>;
428
+ /** Maps targetAgentID -> (wireName -> MJActionEntityExtended) fallback built during tool projection. Bounded for the same reason as {@link sessionWireActionMaps}. */
429
+ protected readonly targetWireActionMaps: MJLruCache<string, Map<string, MJActionEntityExtended>>;
430
+ /** Maps session id -> direct actions config resolved during session prep. Bounded for the same reason as {@link sessionWireActionMaps}. */
431
+ protected readonly sessionDirectConfigs: MJLruCache<string, RealtimeDirectActionsConfig>;
414
432
  /**
415
433
  * Builds a wire-name to action map from candidate actions, sanitizing each
416
434
  * action's name and deduplicating collisions (first action wins).
@@ -418,6 +436,8 @@ export declare class RealtimeClientSessionService {
418
436
  * @param actions The action entities to index by wire name.
419
437
  * @returns Map of wire-name to action entity.
420
438
  */
439
+ BuildWireActionMap(actions: MJActionEntityExtended[]): Map<string, MJActionEntityExtended>;
440
+ /** @deprecated Use {@link BuildWireActionMap}. */
421
441
  buildWireActionMap(actions: MJActionEntityExtended[]): Map<string, MJActionEntityExtended>;
422
442
  /**
423
443
  * The seeded name of the `MJ: AI Prompts` row whose `TemplateText` carries the first-person
@@ -784,6 +804,16 @@ export declare class RealtimeClientSessionService {
784
804
  * @returns The resolution outcome (resolution or failure reason).
785
805
  */
786
806
  protected resolveModelForSession(input: PrepareClientSessionInput, coAgent: MJAIAgentEntityExtended, effectiveConfig?: RealtimeCoAgentConfig): Promise<RealtimeModelResolutionOutcome>;
807
+ /**
808
+ * The session's run-scoped keys as a resolver: the key for a driver class when the run carries
809
+ * one, else `undefined` — no platform fallback. The fallback belongs to
810
+ * {@link getAPIKeyForDriver}, which {@link resolveVendorAndInstantiate} consults for any class
811
+ * this does not key.
812
+ *
813
+ * @param apiKeys The session's run keys ({@link PrepareClientSessionInput.APIKeys}), if any.
814
+ * @returns A resolver over those keys only.
815
+ */
816
+ private buildRunKeyResolver;
787
817
  /**
788
818
  * Resolves the effective config's `realtime.modelPreference` (an `MJ: AI Models` Name OR ID)
789
819
  * into a usable realtime model. TOLERANT by design — this is a METADATA preference, so any
@@ -792,9 +822,10 @@ export declare class RealtimeClientSessionService {
792
822
  * explicit runtime choice ({@link resolvePreferredRealtimeModel}), which fails loud.
793
823
  *
794
824
  * @param effectiveConfig The resolved effective configuration.
825
+ * @param resolve The session's run-scoped key resolver (run keys only; see {@link resolveVendorAndInstantiate}).
795
826
  * @returns The resolution, or `null` when no preference is configured or it can't be satisfied.
796
827
  */
797
- protected resolveConfiguredModelPreference(effectiveConfig?: RealtimeCoAgentConfig): RealtimeModelResolution | null;
828
+ protected resolveConfiguredModelPreference(effectiveConfig?: RealtimeCoAgentConfig, resolve?: AIAPIKeyResolver): RealtimeModelResolution | null;
798
829
  /**
799
830
  * Looks up a model by ID (UUID-insensitive) or, failing that, by case/whitespace-insensitive
800
831
  * Name in {@link AIEngine}'s cached models. **Overridable seam**; tolerant of an unloaded cache.
@@ -809,9 +840,10 @@ export declare class RealtimeClientSessionService {
809
840
  * the caller's user explicitly chose this one.
810
841
  *
811
842
  * @param preferredModelID The `MJ: AI Models.ID` the user chose.
843
+ * @param resolve The session's run-scoped key resolver (run keys only; see {@link resolveVendorAndInstantiate}).
812
844
  * @returns The resolution outcome (resolution or a specific failure reason).
813
845
  */
814
- protected resolvePreferredRealtimeModel(preferredModelID: string): RealtimeModelResolutionOutcome;
846
+ protected resolvePreferredRealtimeModel(preferredModelID: string, resolve?: AIAPIKeyResolver): RealtimeModelResolutionOutcome;
815
847
  /**
816
848
  * Looks up a model by id in {@link AIEngine}'s cached models. **Overridable seam** for tests.
817
849
  *
@@ -831,20 +863,31 @@ export declare class RealtimeClientSessionService {
831
863
  * step can't be satisfied.
832
864
  *
833
865
  * @param coAgent The co-agent being voiced (reserved for future per-agent model preference).
866
+ * @param resolve The session's run-scoped key resolver (run keys only; see {@link resolveVendorAndInstantiate}).
834
867
  * @returns The resolved model + identifiers, or `null`.
835
868
  */
836
- protected resolveRealtimeModel(coAgent: MJAIAgentEntityExtended): Promise<RealtimeModelResolution | null>;
869
+ protected resolveRealtimeModel(coAgent: MJAIAgentEntityExtended, resolve?: AIAPIKeyResolver): Promise<RealtimeModelResolution | null>;
837
870
  /**
838
871
  * Shared tail of model resolution: picks the vendor (with a usable API key) for an
839
872
  * already-chosen model entity and instantiates its realtime driver.
840
873
  *
874
+ * Key precedence, per driver class: `resolve` (the session's run keys), then this service's
875
+ * {@link getAPIKeyForDriver} seam, whose default is the environment key. Vendor selection and the
876
+ * mint use that one chain, so a session is never routed to a vendor it cannot then be minted on.
877
+ *
841
878
  * @param model The chosen model entity.
879
+ * @param resolve The session's run-scoped key resolver. Expected to answer with run keys only:
880
+ * one that falls back to the environment itself answers before {@link getAPIKeyForDriver} and
881
+ * so bypasses an override of it.
842
882
  * @returns The full resolution, or `null` when no vendor/key/driver can be satisfied.
843
883
  */
844
- protected resolveVendorAndInstantiate(model: MJAIModelEntityExtended): RealtimeModelResolution | null;
884
+ protected resolveVendorAndInstantiate(model: MJAIModelEntityExtended, resolve?: AIAPIKeyResolver): RealtimeModelResolution | null;
845
885
  /**
846
886
  * Resolves the API key for a vendor driver class. **Overridable seam** (wraps the module-level
847
887
  * {@link GetAIAPIKey}) so tests can simulate present/absent keys without environment setup.
888
+ * Consulted for every driver class the session's run keys do not cover, so an override (a vault,
889
+ * a different key, or `undefined` to disable a vendor) applies whether or not the environment
890
+ * also holds a key.
848
891
  *
849
892
  * @param driverClass The vendor's `DriverClass`.
850
893
  * @returns The API key, or a falsy value when none is configured.
@@ -875,9 +918,10 @@ export declare class RealtimeClientSessionService {
875
918
  * THIS service's {@link getAPIKeyForDriver} so subclasses and tests keep their key-resolution seam.
876
919
  *
877
920
  * @param modelID The chosen model's id.
921
+ * @param resolve The complete key chain to select against; defaults to {@link getAPIKeyForDriver}.
878
922
  * @returns The vendor driver/api identifiers, or `null` when none has a usable key.
879
923
  */
880
- protected selectRealtimeVendor(modelID: string): RealtimeVendorSelection | null;
924
+ protected selectRealtimeVendor(modelID: string, resolve?: AIAPIKeyResolver): RealtimeVendorSelection | null;
881
925
  /**
882
926
  * Resolves the DB-driven progress-narration instruction template: the Active `MJ: AI Prompts`
883
927
  * row named {@link RealtimeClientSessionService.NarrationPromptName}, read from
@@ -1235,6 +1279,8 @@ export declare class RealtimeClientSessionService {
1235
1279
  * @param driverClass The resolved vendor's DriverClass.
1236
1280
  * @returns The array of projected direct action tools (empty if unsupported or disabled).
1237
1281
  */
1282
+ BuildDirectActionTools(targetAgentID: string | undefined, effectiveConfig?: RealtimeCoAgentConfig, driverClass?: string, agentSessionID?: string): RealtimeToolDefinition[];
1283
+ /** @deprecated Use {@link BuildDirectActionTools}. */
1238
1284
  buildDirectActionTools(targetAgentID: string | undefined, effectiveConfig?: RealtimeCoAgentConfig, driverClass?: string, agentSessionID?: string): RealtimeToolDefinition[];
1239
1285
  /**
1240
1286
  * Maps an action entity and its metadata parameters to a RealtimeToolDefinition.
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-client-session-service.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime-client-session-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-client-session-service.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime-client-session-service.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,7 @@ import { MJGlobal, MJLruCache, UUIDsEqual, EscapeSQLString } from '@memberjuncti
34
34
  import { ActionEngineServer } from '@memberjunction/actions';
35
35
  import { RunActionParams } from '@memberjunction/actions-base';
36
36
  import { BaseRealtimeModel, GetAIAPIKey } from '@memberjunction/ai';
37
- import { FormatAppContextNote } from '@memberjunction/ai-core-plus';
37
+ import { FormatAppContextNote, ResolvePromptRunUserID } from '@memberjunction/ai-core-plus';
38
38
  import { AIEngine } from '@memberjunction/aiengine';
39
39
  import { AgentMemoryContextBuilder } from '../agent-memory-context-builder.js';
40
40
  import { AgentRunner } from '../AgentRunner.js';
@@ -115,12 +115,27 @@ export class ToolArgumentsError extends Error {
115
115
  */
116
116
  export class RealtimeClientSessionService {
117
117
  constructor() {
118
- /** Maps session id -> (wireName -> MJActionEntityExtended) built during tool projection. */
119
- this.sessionWireActionMaps = new Map();
120
- /** Maps targetAgentID -> (wireName -> MJActionEntityExtended) fallback built during tool projection. */
121
- this.targetWireActionMaps = new Map();
122
- /** Maps session id -> direct actions config resolved during session prep. */
123
- this.sessionDirectConfigs = new Map();
118
+ /**
119
+ * Maps session id -> (wireName -> MJActionEntityExtended) built during tool projection.
120
+ * Bounded with `MJLruCache` (rather than a plain `Map`): the resolver holds ONE shared service
121
+ * instance for the process lifetime (see class doc above), and there is no "session ended" hook
122
+ * this service can key eviction off — every voice session ever prepared would otherwise leave an
123
+ * entry here forever. Same TTL/maxSize rationale as {@link promptRunWriteChains} below.
124
+ */
125
+ this.sessionWireActionMaps = new MJLruCache({
126
+ maxSize: 5_000,
127
+ ttlMs: 4 * 60 * 60 * 1000, // 4h — generous vs. any realistic voice-session duration
128
+ });
129
+ /** Maps targetAgentID -> (wireName -> MJActionEntityExtended) fallback built during tool projection. Bounded for the same reason as {@link sessionWireActionMaps}. */
130
+ this.targetWireActionMaps = new MJLruCache({
131
+ maxSize: 5_000,
132
+ ttlMs: 4 * 60 * 60 * 1000,
133
+ });
134
+ /** Maps session id -> direct actions config resolved during session prep. Bounded for the same reason as {@link sessionWireActionMaps}. */
135
+ this.sessionDirectConfigs = new MJLruCache({
136
+ maxSize: 5_000,
137
+ ttlMs: 4 * 60 * 60 * 1000,
138
+ });
124
139
  /**
125
140
  * IN-FLIGHT DELEGATION REGISTRY — the server half of the client-direct CANCEL channel.
126
141
  *
@@ -166,7 +181,7 @@ export class RealtimeClientSessionService {
166
181
  * @param actions The action entities to index by wire name.
167
182
  * @returns Map of wire-name to action entity.
168
183
  */
169
- buildWireActionMap(actions) {
184
+ BuildWireActionMap(actions) {
170
185
  const map = new Map();
171
186
  const seen = new Map();
172
187
  for (const action of actions) {
@@ -186,6 +201,10 @@ export class RealtimeClientSessionService {
186
201
  }
187
202
  return map;
188
203
  }
204
+ /** @deprecated Use {@link BuildWireActionMap}. */
205
+ buildWireActionMap(actions) {
206
+ return this.BuildWireActionMap(actions);
207
+ }
189
208
  /**
190
209
  * The seeded name of the `MJ: AI Prompts` row whose `TemplateText` carries the first-person
191
210
  * progress-narration instructions (with a `{{ progressMessage }}` placeholder). Resolved at
@@ -550,6 +569,7 @@ export class RealtimeClientSessionService {
550
569
  promptRun.VendorID = vendorID;
551
570
  }
552
571
  promptRun.AgentID = coAgent.ID;
572
+ promptRun.UserID = ResolvePromptRunUserID({ ContextUser: contextUser });
553
573
  promptRun.RunAt = new Date();
554
574
  promptRun.RunType = 'Single';
555
575
  promptRun.Status = 'Running';
@@ -1019,16 +1039,35 @@ export class RealtimeClientSessionService {
1019
1039
  * @returns The resolution outcome (resolution or failure reason).
1020
1040
  */
1021
1041
  async resolveModelForSession(input, coAgent, effectiveConfig) {
1042
+ // One resolver for every branch below, built here rather than per branch so the requested-model,
1043
+ // configured-preference and default paths cannot disagree about which credentials the session
1044
+ // may use. It answers with the session's RUN keys only: resolveVendorAndInstantiate layers this
1045
+ // service's getAPIKeyForDriver seam under it, giving run key → seam → (the seam's default) env.
1046
+ // A resolver that fell back to the environment itself would answer before the seam, so a
1047
+ // subclass that overrides the seam would lose to AI_VENDOR_API_KEY__<driver>.
1048
+ const resolveRunKey = this.buildRunKeyResolver(input.APIKeys);
1022
1049
  if (input.PreferredModelID) {
1023
- return this.resolvePreferredRealtimeModel(input.PreferredModelID);
1050
+ return this.resolvePreferredRealtimeModel(input.PreferredModelID, resolveRunKey);
1024
1051
  }
1025
- const fromConfig = this.resolveConfiguredModelPreference(effectiveConfig);
1052
+ const fromConfig = this.resolveConfiguredModelPreference(effectiveConfig, resolveRunKey);
1026
1053
  if (fromConfig) {
1027
1054
  return { Resolution: fromConfig };
1028
1055
  }
1029
- const resolution = await this.resolveRealtimeModel(coAgent);
1056
+ const resolution = await this.resolveRealtimeModel(coAgent, resolveRunKey);
1030
1057
  return resolution ? { Resolution: resolution } : { ErrorMessage: this.noModelMessage() };
1031
1058
  }
1059
+ /**
1060
+ * The session's run-scoped keys as a resolver: the key for a driver class when the run carries
1061
+ * one, else `undefined` — no platform fallback. The fallback belongs to
1062
+ * {@link getAPIKeyForDriver}, which {@link resolveVendorAndInstantiate} consults for any class
1063
+ * this does not key.
1064
+ *
1065
+ * @param apiKeys The session's run keys ({@link PrepareClientSessionInput.APIKeys}), if any.
1066
+ * @returns A resolver over those keys only.
1067
+ */
1068
+ buildRunKeyResolver(apiKeys) {
1069
+ return (driverClass) => apiKeys?.find(k => k.driverClass === driverClass)?.apiKey || undefined;
1070
+ }
1032
1071
  /**
1033
1072
  * Resolves the effective config's `realtime.modelPreference` (an `MJ: AI Models` Name OR ID)
1034
1073
  * into a usable realtime model. TOLERANT by design — this is a METADATA preference, so any
@@ -1037,9 +1076,10 @@ export class RealtimeClientSessionService {
1037
1076
  * explicit runtime choice ({@link resolvePreferredRealtimeModel}), which fails loud.
1038
1077
  *
1039
1078
  * @param effectiveConfig The resolved effective configuration.
1079
+ * @param resolve The session's run-scoped key resolver (run keys only; see {@link resolveVendorAndInstantiate}).
1040
1080
  * @returns The resolution, or `null` when no preference is configured or it can't be satisfied.
1041
1081
  */
1042
- resolveConfiguredModelPreference(effectiveConfig) {
1082
+ resolveConfiguredModelPreference(effectiveConfig, resolve) {
1043
1083
  const preference = effectiveConfig?.realtime?.modelPreference;
1044
1084
  if (!preference) {
1045
1085
  return null;
@@ -1055,7 +1095,7 @@ export class RealtimeClientSessionService {
1055
1095
  `'${model.Name}' but it is not an Active Realtime model — falling through to default resolution.`);
1056
1096
  return null;
1057
1097
  }
1058
- const resolution = this.resolveVendorAndInstantiate(model);
1098
+ const resolution = this.resolveVendorAndInstantiate(model, resolve);
1059
1099
  if (!resolution) {
1060
1100
  LogError(`RealtimeClientSessionService: configured realtime model preference '${model.Name}' has no usable ` +
1061
1101
  'vendor DriverClass/API key — falling through to default resolution.');
@@ -1087,9 +1127,10 @@ export class RealtimeClientSessionService {
1087
1127
  * the caller's user explicitly chose this one.
1088
1128
  *
1089
1129
  * @param preferredModelID The `MJ: AI Models.ID` the user chose.
1130
+ * @param resolve The session's run-scoped key resolver (run keys only; see {@link resolveVendorAndInstantiate}).
1090
1131
  * @returns The resolution outcome (resolution or a specific failure reason).
1091
1132
  */
1092
- resolvePreferredRealtimeModel(preferredModelID) {
1133
+ resolvePreferredRealtimeModel(preferredModelID, resolve) {
1093
1134
  const model = this.findModelByID(preferredModelID);
1094
1135
  if (!model) {
1095
1136
  return { ErrorMessage: `The requested realtime model (id '${preferredModelID}') was not found in AI model metadata.` };
@@ -1100,7 +1141,7 @@ export class RealtimeClientSessionService {
1100
1141
  if (!this.isRealtimeModel(model)) {
1101
1142
  return { ErrorMessage: `The requested model '${model.Name}' is not a Realtime model (its type is '${model.AIModelType}').` };
1102
1143
  }
1103
- const resolution = this.resolveVendorAndInstantiate(model);
1144
+ const resolution = this.resolveVendorAndInstantiate(model, resolve);
1104
1145
  if (!resolution) {
1105
1146
  return {
1106
1147
  ErrorMessage: `The requested model '${model.Name}' has no active vendor with a usable DriverClass/API key ` +
@@ -1132,9 +1173,10 @@ export class RealtimeClientSessionService {
1132
1173
  * step can't be satisfied.
1133
1174
  *
1134
1175
  * @param coAgent The co-agent being voiced (reserved for future per-agent model preference).
1176
+ * @param resolve The session's run-scoped key resolver (run keys only; see {@link resolveVendorAndInstantiate}).
1135
1177
  * @returns The resolved model + identifiers, or `null`.
1136
1178
  */
1137
- async resolveRealtimeModel(coAgent) {
1179
+ async resolveRealtimeModel(coAgent, resolve) {
1138
1180
  // Walk candidates in descending PowerRank, returning the FIRST that fully resolves to a usable
1139
1181
  // client-direct driver (active vendor + API key + ClassFactory driver + SupportsClientDirect).
1140
1182
  // Single-pick dead-ended whenever the highest-power model lacked a key or client-direct support
@@ -1142,7 +1184,7 @@ export class RealtimeClientSessionService {
1142
1184
  // surfaced "No usable Realtime model" instead of falling through to a model that works.
1143
1185
  const candidates = this.selectRealtimeModelCandidates(coAgent);
1144
1186
  for (const model of candidates) {
1145
- const resolution = this.resolveVendorAndInstantiate(model);
1187
+ const resolution = this.resolveVendorAndInstantiate(model, resolve);
1146
1188
  if (resolution && resolution.Model.SupportsClientDirect) {
1147
1189
  return resolution;
1148
1190
  }
@@ -1153,15 +1195,25 @@ export class RealtimeClientSessionService {
1153
1195
  * Shared tail of model resolution: picks the vendor (with a usable API key) for an
1154
1196
  * already-chosen model entity and instantiates its realtime driver.
1155
1197
  *
1198
+ * Key precedence, per driver class: `resolve` (the session's run keys), then this service's
1199
+ * {@link getAPIKeyForDriver} seam, whose default is the environment key. Vendor selection and the
1200
+ * mint use that one chain, so a session is never routed to a vendor it cannot then be minted on.
1201
+ *
1156
1202
  * @param model The chosen model entity.
1203
+ * @param resolve The session's run-scoped key resolver. Expected to answer with run keys only:
1204
+ * one that falls back to the environment itself answers before {@link getAPIKeyForDriver} and
1205
+ * so bypasses an override of it.
1157
1206
  * @returns The full resolution, or `null` when no vendor/key/driver can be satisfied.
1158
1207
  */
1159
- resolveVendorAndInstantiate(model) {
1160
- const vendor = this.selectRealtimeVendor(model.ID);
1208
+ resolveVendorAndInstantiate(model, resolve) {
1209
+ // The run's keys first, then this service's own seam (which subclasses and tests override) —
1210
+ // so a run-scoped credential wins without taking that seam away from anyone who replaced it.
1211
+ const resolveKey = (driverClass) => resolve?.(driverClass) ?? this.getAPIKeyForDriver(driverClass);
1212
+ const vendor = this.selectRealtimeVendor(model.ID, resolveKey);
1161
1213
  if (!vendor) {
1162
1214
  return null;
1163
1215
  }
1164
- const apiKey = this.getAPIKeyForDriver(vendor.DriverClass);
1216
+ const apiKey = resolveKey(vendor.DriverClass);
1165
1217
  if (!apiKey) {
1166
1218
  return null;
1167
1219
  }
@@ -1182,6 +1234,9 @@ export class RealtimeClientSessionService {
1182
1234
  /**
1183
1235
  * Resolves the API key for a vendor driver class. **Overridable seam** (wraps the module-level
1184
1236
  * {@link GetAIAPIKey}) so tests can simulate present/absent keys without environment setup.
1237
+ * Consulted for every driver class the session's run keys do not cover, so an override (a vault,
1238
+ * a different key, or `undefined` to disable a vendor) applies whether or not the environment
1239
+ * also holds a key.
1185
1240
  *
1186
1241
  * @param driverClass The vendor's `DriverClass`.
1187
1242
  * @returns The API key, or a falsy value when none is configured.
@@ -1220,10 +1275,11 @@ export class RealtimeClientSessionService {
1220
1275
  * THIS service's {@link getAPIKeyForDriver} so subclasses and tests keep their key-resolution seam.
1221
1276
  *
1222
1277
  * @param modelID The chosen model's id.
1278
+ * @param resolve The complete key chain to select against; defaults to {@link getAPIKeyForDriver}.
1223
1279
  * @returns The vendor driver/api identifiers, or `null` when none has a usable key.
1224
1280
  */
1225
- selectRealtimeVendor(modelID) {
1226
- return SelectRealtimeVendorForModel(modelID, (driverClass) => this.getAPIKeyForDriver(driverClass));
1281
+ selectRealtimeVendor(modelID, resolve) {
1282
+ return SelectRealtimeVendorForModel(modelID, resolve ?? ((driverClass) => this.getAPIKeyForDriver(driverClass)));
1227
1283
  }
1228
1284
  /**
1229
1285
  * Resolves the DB-driven progress-narration instruction template: the Active `MJ: AI Prompts`
@@ -1255,7 +1311,7 @@ export class RealtimeClientSessionService {
1255
1311
  * @returns The assembled session params.
1256
1312
  */
1257
1313
  async buildSessionParams(input, coAgent, modelApiName, contextUser, provider, effectiveConfig, driverClass, modelID, modelVendorID) {
1258
- const directTools = this.buildDirectActionTools(input.TargetAgentID, effectiveConfig, driverClass, input.AgentSessionID);
1314
+ const directTools = this.BuildDirectActionTools(input.TargetAgentID, effectiveConfig, driverClass, input.AgentSessionID);
1259
1315
  const hasDirectTools = directTools.length > 0 || (input.ExtraTools != null && input.ExtraTools.length > 0);
1260
1316
  const systemPrompt = await this.buildCompanionSystemPrompt(input, coAgent, contextUser, provider, effectiveConfig, hasDirectTools);
1261
1317
  const memoryContext = await this.assembleMemoryContext(input, coAgent, contextUser, provider);
@@ -2000,7 +2056,7 @@ export class RealtimeClientSessionService {
2000
2056
  * @param driverClass The resolved vendor's DriverClass.
2001
2057
  * @returns The array of projected direct action tools (empty if unsupported or disabled).
2002
2058
  */
2003
- buildDirectActionTools(targetAgentID, effectiveConfig, driverClass, agentSessionID) {
2059
+ BuildDirectActionTools(targetAgentID, effectiveConfig, driverClass, agentSessionID) {
2004
2060
  if (!targetAgentID || !this.driverSupportsDynamicToolSet(driverClass)) {
2005
2061
  return [];
2006
2062
  }
@@ -2010,20 +2066,24 @@ export class RealtimeClientSessionService {
2010
2066
  }
2011
2067
  const candidateActions = this.getTargetAgentActions(targetAgentID);
2012
2068
  const allowedActions = candidateActions.filter(action => IsActionAllowedForDirectInvocation(action.Name, directConfig));
2013
- const wireMap = this.buildWireActionMap(allowedActions);
2069
+ const wireMap = this.BuildWireActionMap(allowedActions);
2014
2070
  if (agentSessionID) {
2015
- this.sessionWireActionMaps.set(agentSessionID, wireMap);
2071
+ this.sessionWireActionMaps.Set(agentSessionID, wireMap);
2016
2072
  if (directConfig) {
2017
- this.sessionDirectConfigs.set(agentSessionID, directConfig);
2073
+ this.sessionDirectConfigs.Set(agentSessionID, directConfig);
2018
2074
  }
2019
2075
  }
2020
- this.targetWireActionMaps.set(targetAgentID, wireMap);
2076
+ this.targetWireActionMaps.Set(targetAgentID, wireMap);
2021
2077
  const tools = [];
2022
2078
  for (const [wireName, action] of wireMap.entries()) {
2023
2079
  tools.push(this.mapActionToToolDefinition(action, wireName));
2024
2080
  }
2025
2081
  return tools;
2026
2082
  }
2083
+ /** @deprecated Use {@link BuildDirectActionTools}. */
2084
+ buildDirectActionTools(targetAgentID, effectiveConfig, driverClass, agentSessionID) {
2085
+ return this.BuildDirectActionTools(targetAgentID, effectiveConfig, driverClass, agentSessionID);
2086
+ }
2027
2087
  /**
2028
2088
  * Maps an action entity and its metadata parameters to a RealtimeToolDefinition.
2029
2089
  *
@@ -2097,8 +2157,8 @@ export class RealtimeClientSessionService {
2097
2157
  };
2098
2158
  }
2099
2159
  const candidateActions = this.getTargetAgentActions(target.ID);
2100
- const candidateWireMap = this.buildWireActionMap(candidateActions);
2101
- const action = (input?.AgentSessionID ? this.sessionWireActionMaps.get(input.AgentSessionID)?.get(call.ToolName) : undefined)
2160
+ const candidateWireMap = this.BuildWireActionMap(candidateActions);
2161
+ const action = (input?.AgentSessionID ? this.sessionWireActionMaps.Get(input.AgentSessionID)?.get(call.ToolName) : undefined)
2102
2162
  ?? candidateWireMap.get(call.ToolName)
2103
2163
  ?? Array.from(candidateWireMap.entries()).find(([w]) => w.toLowerCase() === call.ToolName.trim().toLowerCase())?.[1];
2104
2164
  if (!action) {
@@ -2109,7 +2169,7 @@ export class RealtimeClientSessionService {
2109
2169
  };
2110
2170
  }
2111
2171
  const directConfig = input?.DirectActions
2112
- ?? (input?.AgentSessionID ? this.sessionDirectConfigs.get(input.AgentSessionID) : undefined)
2172
+ ?? (input?.AgentSessionID ? this.sessionDirectConfigs.Get(input.AgentSessionID) : undefined)
2113
2173
  ?? GetDirectActionsConfig(this.resolveEffectiveConfig(target, undefined, target));
2114
2174
  if (!IsActionAllowedForDirectInvocation(action.Name, directConfig)) {
2115
2175
  return {