@memberjunction/ai-agents 5.41.0 → 5.43.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.
Files changed (41) hide show
  1. package/README.md +10 -0
  2. package/dist/agent-types/flow-agent-type.d.ts.map +1 -1
  3. package/dist/agent-types/flow-agent-type.js +10 -2
  4. package/dist/agent-types/flow-agent-type.js.map +1 -1
  5. package/dist/base-agent.d.ts +57 -51
  6. package/dist/base-agent.d.ts.map +1 -1
  7. package/dist/base-agent.js +239 -187
  8. package/dist/base-agent.js.map +1 -1
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/memory-manager-agent.d.ts +44 -2
  14. package/dist/memory-manager-agent.d.ts.map +1 -1
  15. package/dist/memory-manager-agent.js +133 -100
  16. package/dist/memory-manager-agent.js.map +1 -1
  17. package/dist/realtime/bridge-realtime-session-factory.d.ts +111 -0
  18. package/dist/realtime/bridge-realtime-session-factory.d.ts.map +1 -0
  19. package/dist/realtime/bridge-realtime-session-factory.js +163 -0
  20. package/dist/realtime/bridge-realtime-session-factory.js.map +1 -0
  21. package/dist/realtime/bridge-room-transcript-sink.d.ts +63 -0
  22. package/dist/realtime/bridge-room-transcript-sink.d.ts.map +1 -0
  23. package/dist/realtime/bridge-room-transcript-sink.js +151 -0
  24. package/dist/realtime/bridge-room-transcript-sink.js.map +1 -0
  25. package/dist/realtime/realtime-client-session-service.d.ts +148 -6
  26. package/dist/realtime/realtime-client-session-service.d.ts.map +1 -1
  27. package/dist/realtime/realtime-client-session-service.js +241 -35
  28. package/dist/realtime/realtime-client-session-service.js.map +1 -1
  29. package/dist/realtime/realtime-coagent-config.d.ts +142 -7
  30. package/dist/realtime/realtime-coagent-config.d.ts.map +1 -1
  31. package/dist/realtime/realtime-coagent-config.js +176 -8
  32. package/dist/realtime/realtime-coagent-config.js.map +1 -1
  33. package/dist/realtime/realtime-tool-broker.d.ts +15 -0
  34. package/dist/realtime/realtime-tool-broker.d.ts.map +1 -1
  35. package/dist/realtime/realtime-tool-broker.js +22 -0
  36. package/dist/realtime/realtime-tool-broker.js.map +1 -1
  37. package/dist/realtime/realtime-turn-moderator.d.ts +103 -0
  38. package/dist/realtime/realtime-turn-moderator.d.ts.map +1 -0
  39. package/dist/realtime/realtime-turn-moderator.js +266 -0
  40. package/dist/realtime/realtime-turn-moderator.js.map +1 -0
  41. package/package.json +17 -17
@@ -64,12 +64,109 @@ export interface RealtimeNarrationConfig {
64
64
  /** Minimum gap (ms) between spoken progress updates. Must be a positive finite number. */
65
65
  paceMs?: number;
66
66
  }
67
+ /**
68
+ * Video configuration: whether the realtime session carries a synced VIDEO track (a talking-head /
69
+ * avatar out, and the camera in) alongside audio. Absent / `enabled !== true` ⇒ audio-only (today's
70
+ * behavior). The video track reuses the entire realtime contract — this just opts a co-agent into it
71
+ * and names the avatar to use.
72
+ */
73
+ export interface RealtimeVideoConfig {
74
+ /**
75
+ * Whether the session should carry video. Default (absent / non-boolean): `false`. When `true`,
76
+ * resolution prefers a video-capable model and the client captures the camera + renders the
77
+ * model/avatar video; degrades to audio-only when no video-capable model resolves.
78
+ */
79
+ enabled?: boolean;
80
+ /**
81
+ * Preferred video model/avatar provider — an `MJ: AI Models` Name OR ID of a video-capable realtime
82
+ * model (e.g. a Runway avatar). Optional; absent ⇒ the default video-capable model is resolved.
83
+ */
84
+ provider?: string;
85
+ /**
86
+ * Provider-specific avatar/character identifier (e.g. a Runway preset or custom avatar id). OPAQUE
87
+ * — passed through to the matching video driver (its shape is a private pact with that driver).
88
+ */
89
+ avatarId?: string;
90
+ /**
91
+ * Per-provider native video settings keyed by provider, merged into the matching driver's open
92
+ * config bag — an OPAQUE private pact with that driver (mirrors {@link RealtimeVoiceConfig.providers}).
93
+ */
94
+ providers?: Record<string, JSONObjectLike>;
95
+ }
96
+ /**
97
+ * Turn-taking configuration for a multi-agent realtime room — how an agent participates, and (room-wide)
98
+ * which **turn moderator** decides who speaks each turn. See the "Turn moderator" sections of the Realtime
99
+ * Co-Agents / Bridges guides.
100
+ *
101
+ * Informally this is the multi-agent meeting's **moderator** — and note it does NOT merely restrain agents
102
+ * (that would be "nanny mode"); its larger job is to *bring the right agents in* so a multi-party voice room
103
+ * feels like a real panel discussion: route a question to Sage AND Skip when both are relevant, let a
104
+ * productive agent↔agent exchange run, and only go quiet when nobody should speak or a loop turns unproductive.
105
+ *
106
+ * Two layers of the effective-config cascade carry different parts:
107
+ * - **Per target agent** (the voiced agent's `TypeConfiguration`): {@link RealtimeTurnTakingConfig.mode}.
108
+ * - **Room-wide** (the Realtime agent TYPE's `DefaultConfiguration`): {@link RealtimeTurnTakingConfig.moderator}.
109
+ */
110
+ export interface RealtimeTurnTakingConfig {
111
+ /**
112
+ * This agent's participation style in a MULTI-agent room:
113
+ * - `'proactive'` (default): may jump in unaddressed when the moderator judges it relevant.
114
+ * - `'addressed-only'`: speaks only when directly addressed by name.
115
+ * Single-agent rooms ignore this entirely (a lone agent is a normal 1:1 voice with auto-response).
116
+ */
117
+ mode?: 'proactive' | 'addressed-only';
118
+ /**
119
+ * The room-level **turn moderator**: a fast LLM that — once per turn — decides which agent(s) (0+) should
120
+ * speak next, routes to all of them (spoken serially via the floor so they never overlap), respects each
121
+ * agent's {@link RealtimeTurnTakingConfig.mode}, and lets a *productive* agent↔agent discussion continue
122
+ * while suppressing unproductive ping-pong. It runs as a PROMPT (not an agent run) tied to the co-agent's
123
+ * `AIAgentRun` for observability. Configured ONCE on the Realtime agent type's default configuration — a
124
+ * room has one moderator brain.
125
+ */
126
+ moderator?: RealtimeModeratorConfig;
127
+ }
128
+ /** The room-wide turn-moderator settings (see {@link RealtimeTurnTakingConfig.moderator}). Absent fields fall back to {@link REALTIME_MODERATOR_DEFAULTS}. */
129
+ export interface RealtimeModeratorConfig {
130
+ /** The moderator AI Prompt — an `MJ: AI Prompts` **ID** (authored as `@lookup:` in metadata, stored as the resolved ID). */
131
+ promptId?: string;
132
+ /** How many recent diarized turns the moderator sees. Default 30; clamped to ≤ 50. */
133
+ contextWindowTurns?: number;
134
+ /** Each lookback turn is clipped to this many characters (token savings + a stable, cacheable prompt prefix). Default 240. */
135
+ maxCharsPerTurn?: number;
136
+ /**
137
+ * OPTIONAL hard backstop on consecutive agent-only turns (no human turn between) before the room goes
138
+ * quiet. `null`/absent (default) = **no cap** — rely on the moderator's own progress assessment to end
139
+ * unproductive loops, so genuine agent↔agent discussion is never gated by a counter.
140
+ */
141
+ maxConsecutiveAgentOnlyTurns?: number | null;
142
+ /** Moderator call budget in ms; exceeding it triggers {@link RealtimeModeratorConfig.onError}. Default 800. */
143
+ timeoutMs?: number;
144
+ /** Behavior when the moderator errors/times out: `'silent'` (no one speaks — never spiral) or `'addressed-only'` (cheap name-contains fallback). Default `'silent'`. */
145
+ onError?: 'silent' | 'addressed-only';
146
+ /**
147
+ * When `true` (default), run the NEXT moderator decision DURING the current agent's audio playback — the
148
+ * model emits its full response text seconds before the user finishes hearing it, so the agent→agent
149
+ * hand-off pays ~zero added latency. A human barge-in discards the pre-staged decision.
150
+ */
151
+ prestageOnAgentSpeech?: boolean;
152
+ }
153
+ /** Default moderator settings, applied per-field when a {@link RealtimeModeratorConfig} omits a value. */
154
+ export declare const REALTIME_MODERATOR_DEFAULTS: {
155
+ readonly contextWindowTurns: 30;
156
+ readonly maxCharsPerTurn: 240;
157
+ readonly maxConsecutiveAgentOnlyTurns: number | null;
158
+ readonly timeoutMs: 800;
159
+ readonly onError: "silent" | "addressed-only";
160
+ readonly prestageOnAgentSpeech: true;
161
+ };
67
162
  /** The `realtime` section of a co-agent's effective configuration. */
68
163
  export interface RealtimeConfigSection {
69
164
  /** Preferred realtime model — an `MJ: AI Models` Name OR ID. Degrades gracefully when unsatisfiable. */
70
165
  modelPreference?: string;
71
166
  /** Voice persona + per-provider voice settings. */
72
167
  voice?: RealtimeVoiceConfig;
168
+ /** Video/avatar configuration — opt a co-agent into a synced video track. Absent ⇒ audio-only. */
169
+ video?: RealtimeVideoConfig;
73
170
  /**
74
171
  * Whether an (authorized) caller may override the realtime model per session.
75
172
  * `false` blocks explicit model overrides even for callers holding the
@@ -79,6 +176,8 @@ export interface RealtimeConfigSection {
79
176
  allowUserModelOverride?: boolean;
80
177
  /** Progress-narration tuning. */
81
178
  narration?: RealtimeNarrationConfig;
179
+ /** Multi-agent turn-taking: this agent's participation {@link RealtimeTurnTakingConfig.mode} + the room-wide moderator. */
180
+ turnTaking?: RealtimeTurnTakingConfig;
82
181
  }
83
182
  /** The fully-normalized effective configuration for a Realtime co-agent. */
84
183
  export interface RealtimeCoAgentConfig {
@@ -135,18 +234,39 @@ export declare function DeepMergeConfigs(...layers: Array<JSONObjectLike | null
135
234
  */
136
235
  export declare function ParseRealtimeTypeConfiguration(json: string | null | undefined): JSONObjectLike | null;
137
236
  /**
138
- * Resolves the EFFECTIVE realtime configuration from the three layers of the contract —
139
- * `AIAgentType.DefaultConfiguration` ← `AIAgent.TypeConfiguration` ← runtime overrides — by
140
- * tolerantly parsing each (see {@link ParseRealtimeTypeConfiguration}), deep-merging them
141
- * (later wins per key, see {@link DeepMergeConfigs}), and normalizing the result into the typed
142
- * {@link RealtimeCoAgentConfig} shape (wrong-typed fields dropped, never thrown on).
237
+ * Resolves the EFFECTIVE realtime configuration from the layers of the contract by tolerantly parsing
238
+ * each (see {@link ParseRealtimeTypeConfiguration}), deep-merging them (later wins per key, see
239
+ * {@link DeepMergeConfigs}), and normalizing into the typed {@link RealtimeCoAgentConfig} shape
240
+ * (wrong-typed fields dropped, never thrown on).
241
+ *
242
+ * **Precedence (lowest → highest):**
243
+ * `AIAgentType.DefaultConfiguration` < **co-agent** `AIAgent.TypeConfiguration` < **target agent**
244
+ * `AIAgent.TypeConfiguration` < runtime override. This is the single, surface-agnostic precedence cascade
245
+ * for model + voice + persona across EVERY realtime host (native chat, LiveKit, future Zoom/Teams) — see
246
+ * `plans/realtime/realtime-core-host-convergence.md`. The **target** layer is what lets a voiced agent
247
+ * (Sage, Marketing Agent, …) carry its own persisted voice/model that the shared co-agent then speaks with;
248
+ * it wins over the co-agent's defaults but yields to an explicit per-session runtime override.
143
249
  *
144
250
  * @param typeDefaultJson The agent TYPE's `DefaultConfiguration` JSON (base layer).
145
- * @param agentJson The agent's `TypeConfiguration` JSON (per-agent layer).
251
+ * @param agentJson The CO-AGENT's `TypeConfiguration` JSON (shared per-co-agent layer).
146
252
  * @param overridesJson Runtime overrides JSON (per-session layer; already authorization-gated by the caller).
253
+ * @param targetAgentJson Optional TARGET agent's `TypeConfiguration` JSON (per-voiced-agent layer). Merged
254
+ * ABOVE the co-agent and BELOW the runtime override regardless of argument position. Omit when there is
255
+ * no distinct target (e.g. the co-agent voicing itself).
147
256
  * @returns The normalized effective configuration. `realtime` is absent when no layer supplied a usable section.
148
257
  */
149
- export declare function ResolveEffectiveRealtimeConfig(typeDefaultJson: string | null | undefined, agentJson: string | null | undefined, overridesJson: string | null | undefined): RealtimeCoAgentConfig;
258
+ export declare function ResolveEffectiveRealtimeConfig(typeDefaultJson: string | null | undefined, agentJson: string | null | undefined, overridesJson: string | null | undefined, targetAgentJson?: string | null | undefined): RealtimeCoAgentConfig;
259
+ /**
260
+ * Reads the effective {@link RealtimeModeratorConfig} from a resolved config, filling absent fields from
261
+ * {@link REALTIME_MODERATOR_DEFAULTS}. Returns `null` when no moderator is configured at all (e.g. no
262
+ * `promptId`), which the engine treats as "no moderator — fall back to per-agent matchers".
263
+ *
264
+ * @param config The normalized effective configuration.
265
+ * @returns The fully-defaulted moderator settings, or `null` when none is configured.
266
+ */
267
+ export declare function GetEffectiveModeratorConfig(config: RealtimeCoAgentConfig | null | undefined): Required<RealtimeModeratorConfig> | null;
268
+ /** The per-target-agent participation mode from a resolved config (default `'proactive'`). */
269
+ export declare function GetEffectiveTurnMode(config: RealtimeCoAgentConfig | null | undefined): 'proactive' | 'addressed-only';
150
270
  /**
151
271
  * Picks the provider-specific voice settings for a resolved realtime driver.
152
272
  *
@@ -171,6 +291,21 @@ export declare function GetProviderVoiceSettings(config: RealtimeCoAgentConfig |
171
291
  * @returns The prompt section text, or `''`.
172
292
  */
173
293
  export declare function BuildVoiceMannerSection(config: RealtimeCoAgentConfig | null | undefined): string;
294
+ /**
295
+ * Builds the runtime-override `ConfigOverridesJson` envelope (the highest-precedence cascade layer) from a
296
+ * per-session model and/or voice choice — the **single, surface-agnostic** shape every realtime host uses
297
+ * to carry a dev's pick into {@link ResolveEffectiveRealtimeConfig}. The native-chat picker produces the
298
+ * same shape client-side (`BuildRealtimeConfigOverridesJson` in `@memberjunction/ng-conversations`); the
299
+ * server-bridged hosts (LiveKit, Zoom/Teams) build it here so both funnel into the one override slot.
300
+ *
301
+ * Envelope: `{"realtime":{"modelPreference":"<id>","voice":{"providers":{"openai":{"voice":"<v>"}}}}}`.
302
+ * `openai` is the realtime provider today; add providers here when others ship realtime voices.
303
+ *
304
+ * @param modelId The `MJ: AI Models` Name or ID to prefer, or null/empty for none.
305
+ * @param voice The provider-native voice id (e.g. `echo`), or null/empty for none.
306
+ * @returns The JSON string, or `null` when nothing was overridden (keeps the cascade at its lower layers).
307
+ */
308
+ export declare function BuildRealtimeOverridesJson(modelId?: string | null, voice?: string | null): string | null;
174
309
  /**
175
310
  * Reads the effective narration pace (minimum gap in ms between spoken progress updates), or
176
311
  * `null` when not configured. Already sanity-checked by normalization (positive finite integer).
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-coagent-config.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime-coagent-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-coagent-config.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime-coagent-config.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,15 @@
39
39
  * co-agent's metadata-configured preference. Seeded in `metadata/authorizations/.realtime.json`.
40
40
  */
41
41
  export const REALTIME_ADVANCED_SESSION_CONTROLS_AUTHORIZATION = 'Realtime: Advanced Session Controls';
42
+ /** Default moderator settings, applied per-field when a {@link RealtimeModeratorConfig} omits a value. */
43
+ export const REALTIME_MODERATOR_DEFAULTS = {
44
+ contextWindowTurns: 30,
45
+ maxCharsPerTurn: 240,
46
+ maxConsecutiveAgentOnlyTurns: null,
47
+ timeoutMs: 800,
48
+ onError: 'silent',
49
+ prestageOnAgentSpeech: true,
50
+ };
42
51
  /** True for a plain JSON object (not null, not an array). */
43
52
  function isPlainObject(value) {
44
53
  return value !== null && typeof value === 'object' && !Array.isArray(value);
@@ -120,19 +129,30 @@ export function ParseRealtimeTypeConfiguration(json) {
120
129
  }
121
130
  }
122
131
  /**
123
- * Resolves the EFFECTIVE realtime configuration from the three layers of the contract —
124
- * `AIAgentType.DefaultConfiguration` ← `AIAgent.TypeConfiguration` ← runtime overrides — by
125
- * tolerantly parsing each (see {@link ParseRealtimeTypeConfiguration}), deep-merging them
126
- * (later wins per key, see {@link DeepMergeConfigs}), and normalizing the result into the typed
127
- * {@link RealtimeCoAgentConfig} shape (wrong-typed fields dropped, never thrown on).
132
+ * Resolves the EFFECTIVE realtime configuration from the layers of the contract by tolerantly parsing
133
+ * each (see {@link ParseRealtimeTypeConfiguration}), deep-merging them (later wins per key, see
134
+ * {@link DeepMergeConfigs}), and normalizing into the typed {@link RealtimeCoAgentConfig} shape
135
+ * (wrong-typed fields dropped, never thrown on).
136
+ *
137
+ * **Precedence (lowest → highest):**
138
+ * `AIAgentType.DefaultConfiguration` < **co-agent** `AIAgent.TypeConfiguration` < **target agent**
139
+ * `AIAgent.TypeConfiguration` < runtime override. This is the single, surface-agnostic precedence cascade
140
+ * for model + voice + persona across EVERY realtime host (native chat, LiveKit, future Zoom/Teams) — see
141
+ * `plans/realtime/realtime-core-host-convergence.md`. The **target** layer is what lets a voiced agent
142
+ * (Sage, Marketing Agent, …) carry its own persisted voice/model that the shared co-agent then speaks with;
143
+ * it wins over the co-agent's defaults but yields to an explicit per-session runtime override.
128
144
  *
129
145
  * @param typeDefaultJson The agent TYPE's `DefaultConfiguration` JSON (base layer).
130
- * @param agentJson The agent's `TypeConfiguration` JSON (per-agent layer).
146
+ * @param agentJson The CO-AGENT's `TypeConfiguration` JSON (shared per-co-agent layer).
131
147
  * @param overridesJson Runtime overrides JSON (per-session layer; already authorization-gated by the caller).
148
+ * @param targetAgentJson Optional TARGET agent's `TypeConfiguration` JSON (per-voiced-agent layer). Merged
149
+ * ABOVE the co-agent and BELOW the runtime override regardless of argument position. Omit when there is
150
+ * no distinct target (e.g. the co-agent voicing itself).
132
151
  * @returns The normalized effective configuration. `realtime` is absent when no layer supplied a usable section.
133
152
  */
134
- export function ResolveEffectiveRealtimeConfig(typeDefaultJson, agentJson, overridesJson) {
135
- const merged = DeepMergeConfigs(ParseRealtimeTypeConfiguration(typeDefaultJson), ParseRealtimeTypeConfiguration(agentJson), ParseRealtimeTypeConfiguration(overridesJson));
153
+ export function ResolveEffectiveRealtimeConfig(typeDefaultJson, agentJson, overridesJson, targetAgentJson) {
154
+ // Merge order = precedence (later wins): type-default < co-agent < target < runtime-override.
155
+ const merged = DeepMergeConfigs(ParseRealtimeTypeConfiguration(typeDefaultJson), ParseRealtimeTypeConfiguration(agentJson), ParseRealtimeTypeConfiguration(targetAgentJson), ParseRealtimeTypeConfiguration(overridesJson));
136
156
  return normalizeConfig(merged);
137
157
  }
138
158
  /** Normalizes a merged raw config object into the typed, sanity-checked shape. */
@@ -157,8 +177,127 @@ function normalizeConfig(merged) {
157
177
  if (narration) {
158
178
  section.narration = narration;
159
179
  }
180
+ const video = normalizeVideo(rawRealtime['video']);
181
+ if (video) {
182
+ section.video = video;
183
+ }
184
+ const turnTaking = normalizeTurnTaking(rawRealtime['turnTaking']);
185
+ if (turnTaking) {
186
+ section.turnTaking = turnTaking;
187
+ }
160
188
  return Object.keys(section).length > 0 ? { realtime: section } : { realtime: {} };
161
189
  }
190
+ /** Normalizes the `turnTaking` block (participation mode + room moderator); returns `null` when nothing usable survives. */
191
+ function normalizeTurnTaking(raw) {
192
+ if (!isPlainObject(raw)) {
193
+ return null;
194
+ }
195
+ const tt = {};
196
+ const mode = raw['mode'];
197
+ if (mode === 'proactive' || mode === 'addressed-only') {
198
+ tt.mode = mode;
199
+ }
200
+ const moderator = normalizeModerator(raw['moderator']);
201
+ if (moderator) {
202
+ tt.moderator = moderator;
203
+ }
204
+ return Object.keys(tt).length > 0 ? tt : null;
205
+ }
206
+ /** Normalizes the `moderator` block; returns `null` when nothing usable survives. The window is clamped to ≤ 50. */
207
+ function normalizeModerator(raw) {
208
+ if (!isPlainObject(raw)) {
209
+ return null;
210
+ }
211
+ const m = {};
212
+ if (typeof raw['promptId'] === 'string' && raw['promptId'].trim().length > 0) {
213
+ m.promptId = raw['promptId'].trim();
214
+ }
215
+ const window = raw['contextWindowTurns'];
216
+ if (typeof window === 'number' && Number.isFinite(window) && window > 0) {
217
+ m.contextWindowTurns = Math.min(50, Math.floor(window));
218
+ }
219
+ const clip = raw['maxCharsPerTurn'];
220
+ if (typeof clip === 'number' && Number.isFinite(clip) && clip > 0) {
221
+ m.maxCharsPerTurn = Math.floor(clip);
222
+ }
223
+ const cap = raw['maxConsecutiveAgentOnlyTurns'];
224
+ if (cap === null) {
225
+ m.maxConsecutiveAgentOnlyTurns = null; // explicit "no cap"
226
+ }
227
+ else if (typeof cap === 'number' && Number.isFinite(cap) && cap > 0) {
228
+ m.maxConsecutiveAgentOnlyTurns = Math.floor(cap);
229
+ }
230
+ const timeout = raw['timeoutMs'];
231
+ if (typeof timeout === 'number' && Number.isFinite(timeout) && timeout > 0) {
232
+ m.timeoutMs = Math.floor(timeout);
233
+ }
234
+ if (raw['onError'] === 'silent' || raw['onError'] === 'addressed-only') {
235
+ m.onError = raw['onError'];
236
+ }
237
+ if (typeof raw['prestageOnAgentSpeech'] === 'boolean') {
238
+ m.prestageOnAgentSpeech = raw['prestageOnAgentSpeech'];
239
+ }
240
+ return Object.keys(m).length > 0 ? m : null;
241
+ }
242
+ /**
243
+ * Reads the effective {@link RealtimeModeratorConfig} from a resolved config, filling absent fields from
244
+ * {@link REALTIME_MODERATOR_DEFAULTS}. Returns `null` when no moderator is configured at all (e.g. no
245
+ * `promptId`), which the engine treats as "no moderator — fall back to per-agent matchers".
246
+ *
247
+ * @param config The normalized effective configuration.
248
+ * @returns The fully-defaulted moderator settings, or `null` when none is configured.
249
+ */
250
+ export function GetEffectiveModeratorConfig(config) {
251
+ const m = config?.realtime?.turnTaking?.moderator;
252
+ if (!m || !m.promptId) {
253
+ return null;
254
+ }
255
+ return {
256
+ promptId: m.promptId,
257
+ contextWindowTurns: m.contextWindowTurns ?? REALTIME_MODERATOR_DEFAULTS.contextWindowTurns,
258
+ maxCharsPerTurn: m.maxCharsPerTurn ?? REALTIME_MODERATOR_DEFAULTS.maxCharsPerTurn,
259
+ maxConsecutiveAgentOnlyTurns: m.maxConsecutiveAgentOnlyTurns === undefined
260
+ ? REALTIME_MODERATOR_DEFAULTS.maxConsecutiveAgentOnlyTurns
261
+ : m.maxConsecutiveAgentOnlyTurns,
262
+ timeoutMs: m.timeoutMs ?? REALTIME_MODERATOR_DEFAULTS.timeoutMs,
263
+ onError: m.onError ?? REALTIME_MODERATOR_DEFAULTS.onError,
264
+ prestageOnAgentSpeech: m.prestageOnAgentSpeech ?? REALTIME_MODERATOR_DEFAULTS.prestageOnAgentSpeech,
265
+ };
266
+ }
267
+ /** The per-target-agent participation mode from a resolved config (default `'proactive'`). */
268
+ export function GetEffectiveTurnMode(config) {
269
+ return config?.realtime?.turnTaking?.mode ?? 'proactive';
270
+ }
271
+ /** Normalizes the `video` block; returns `null` when nothing usable survives. */
272
+ function normalizeVideo(raw) {
273
+ if (!isPlainObject(raw)) {
274
+ return null;
275
+ }
276
+ const video = {};
277
+ if (typeof raw['enabled'] === 'boolean') {
278
+ video.enabled = raw['enabled'];
279
+ }
280
+ if (typeof raw['provider'] === 'string' && raw['provider'].trim().length > 0) {
281
+ video.provider = raw['provider'].trim();
282
+ }
283
+ if (typeof raw['avatarId'] === 'string' && raw['avatarId'].trim().length > 0) {
284
+ video.avatarId = raw['avatarId'].trim();
285
+ }
286
+ const rawProviders = raw['providers'];
287
+ if (isPlainObject(rawProviders)) {
288
+ const providers = {};
289
+ for (const key of Object.keys(rawProviders)) {
290
+ const settings = rawProviders[key];
291
+ if (isPlainObject(settings) && key.trim().length > 0) {
292
+ providers[key] = settings;
293
+ }
294
+ }
295
+ if (Object.keys(providers).length > 0) {
296
+ video.providers = providers;
297
+ }
298
+ }
299
+ return Object.keys(video).length > 0 ? video : null;
300
+ }
162
301
  /** Normalizes the `voice` block; returns `null` when nothing usable survives. */
163
302
  function normalizeVoice(raw) {
164
303
  if (!isPlainObject(raw)) {
@@ -268,6 +407,35 @@ export function BuildVoiceMannerSection(config) {
268
407
  }
269
408
  return `Voice & manner:\n${lines.join('\n')}`;
270
409
  }
410
+ /**
411
+ * Builds the runtime-override `ConfigOverridesJson` envelope (the highest-precedence cascade layer) from a
412
+ * per-session model and/or voice choice — the **single, surface-agnostic** shape every realtime host uses
413
+ * to carry a dev's pick into {@link ResolveEffectiveRealtimeConfig}. The native-chat picker produces the
414
+ * same shape client-side (`BuildRealtimeConfigOverridesJson` in `@memberjunction/ng-conversations`); the
415
+ * server-bridged hosts (LiveKit, Zoom/Teams) build it here so both funnel into the one override slot.
416
+ *
417
+ * Envelope: `{"realtime":{"modelPreference":"<id>","voice":{"providers":{"openai":{"voice":"<v>"}}}}}`.
418
+ * `openai` is the realtime provider today; add providers here when others ship realtime voices.
419
+ *
420
+ * @param modelId The `MJ: AI Models` Name or ID to prefer, or null/empty for none.
421
+ * @param voice The provider-native voice id (e.g. `echo`), or null/empty for none.
422
+ * @returns The JSON string, or `null` when nothing was overridden (keeps the cascade at its lower layers).
423
+ */
424
+ export function BuildRealtimeOverridesJson(modelId, voice) {
425
+ const m = modelId?.trim() ?? '';
426
+ const v = voice?.trim() ?? '';
427
+ if (m.length === 0 && v.length === 0) {
428
+ return null;
429
+ }
430
+ const realtime = {};
431
+ if (m.length > 0) {
432
+ realtime.modelPreference = m;
433
+ }
434
+ if (v.length > 0) {
435
+ realtime.voice = { providers: { openai: { voice: v } } };
436
+ }
437
+ return JSON.stringify({ realtime });
438
+ }
271
439
  /**
272
440
  * Reads the effective narration pace (minimum gap in ms between spoken progress updates), or
273
441
  * `null` when not configured. Already sanity-checked by normalization (positive finite integer).
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-coagent-config.js","sourceRoot":"","sources":["../../src/realtime/realtime-coagent-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-coagent-config.js","sourceRoot":"","sources":["../../src/realtime/realtime-coagent-config.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,21 @@ import { AgentExecutionProgressCallback } from '@memberjunction/ai-core-plus';
33
33
  * provider like Eleven Labs fit the same model later).
34
34
  */
35
35
  export declare const INVOKE_TARGET_AGENT_TOOL_NAME = "invoke-target-agent";
36
+ /**
37
+ * **The single producer of the realtime co-agent's identity framing.** Builds the opening of the companion
38
+ * system prompt that makes the agent speak first-person **AS the target agent** (Sage, Marketing Agent, …),
39
+ * delegating real work through `invoke-target-agent`. EVERY host (native chat, LiveKit, future Zoom/Teams)
40
+ * uses this — so the agent's identity is byte-for-byte the same everywhere. Do NOT inline this framing in a
41
+ * host; that is exactly the drift the convergence removed. See
42
+ * `plans/realtime/realtime-core-host-convergence.md`.
43
+ *
44
+ * @param targetName The TARGET agent's display name (what the agent identifies AS). Callers pass a clear
45
+ * fallback (e.g. "the configured target agent") when no distinct target is resolved.
46
+ * @param interactiveSurfaceClause Optional trailing clause for host UX tools the co-agent drives itself
47
+ * (browser/whiteboard); empty for pure-voice hosts. Appended verbatim (lead with a space).
48
+ * @returns The identity framing paragraph.
49
+ */
50
+ export declare function BuildRealtimeAgentFraming(targetName: string, interactiveSurfaceClause?: string): string;
36
51
  /**
37
52
  * A request to delegate work to the target agent, derived from an `invoke-target-agent` tool call.
38
53
  */
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-tool-broker.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime-tool-broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-tool-broker.d.ts","sourceRoot":"","sources":["../../src/realtime/realtime-tool-broker.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,28 @@
31
31
  * provider like Eleven Labs fit the same model later).
32
32
  */
33
33
  export const INVOKE_TARGET_AGENT_TOOL_NAME = 'invoke-target-agent';
34
+ /**
35
+ * **The single producer of the realtime co-agent's identity framing.** Builds the opening of the companion
36
+ * system prompt that makes the agent speak first-person **AS the target agent** (Sage, Marketing Agent, …),
37
+ * delegating real work through `invoke-target-agent`. EVERY host (native chat, LiveKit, future Zoom/Teams)
38
+ * uses this — so the agent's identity is byte-for-byte the same everywhere. Do NOT inline this framing in a
39
+ * host; that is exactly the drift the convergence removed. See
40
+ * `plans/realtime/realtime-core-host-convergence.md`.
41
+ *
42
+ * @param targetName The TARGET agent's display name (what the agent identifies AS). Callers pass a clear
43
+ * fallback (e.g. "the configured target agent") when no distinct target is resolved.
44
+ * @param interactiveSurfaceClause Optional trailing clause for host UX tools the co-agent drives itself
45
+ * (browser/whiteboard); empty for pure-voice hosts. Appended verbatim (lead with a space).
46
+ * @returns The identity framing paragraph.
47
+ */
48
+ export function BuildRealtimeAgentFraming(targetName, interactiveSurfaceClause = '') {
49
+ return (`You are the real-time voice for the agent "${targetName}". Hold a natural, low-latency ` +
50
+ `conversation with the user, always speaking in the FIRST PERSON as ${targetName} — own the work ` +
51
+ `("I'm pulling that up", "I found three matches"); never refer to ${targetName} or the work in the ` +
52
+ `third person. When actual work is required, call the '${INVOKE_TARGET_AGENT_TOOL_NAME}' ` +
53
+ `tool and narrate progress while it runs — do not attempt to do the work yourself.` +
54
+ interactiveSurfaceClause);
55
+ }
34
56
  /**
35
57
  * Executes a single realtime tool call server-side, identically across both audio topologies.
36
58
  *
@@ -1 +1 @@
1
- {"version":3,"file":"realtime-tool-broker.js","sourceRoot":"","sources":["../../src/realtime/realtime-tool-broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"realtime-tool-broker.js","sourceRoot":"","sources":["../../src/realtime/realtime-tool-broker.ts"],"names":[],"mappings":"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"}