@memberjunction/conversations-runtime 6.2.0-edge.0 → 6.2.0-edge.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-runner/ConversationAgentRunner.d.ts +27 -1
- package/dist/agent-runner/ConversationAgentRunner.d.ts.map +1 -1
- package/dist/agent-runner/ConversationAgentRunner.js +26 -3
- package/dist/agent-runner/ConversationAgentRunner.js.map +1 -1
- package/dist/default-agent/DefaultAgentResolver.d.ts +2 -0
- package/dist/default-agent/DefaultAgentResolver.d.ts.map +1 -1
- package/dist/default-agent/DefaultAgentResolver.js +5 -1
- package/dist/default-agent/DefaultAgentResolver.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mentions/MentionAutocomplete.d.ts +29 -2
- package/dist/mentions/MentionAutocomplete.d.ts.map +1 -1
- package/dist/mentions/MentionAutocomplete.js +80 -41
- package/dist/mentions/MentionAutocomplete.js.map +1 -1
- package/dist/mentions/MentionParser.d.ts +10 -0
- package/dist/mentions/MentionParser.d.ts.map +1 -1
- package/dist/mentions/MentionParser.js +25 -5
- package/dist/mentions/MentionParser.js.map +1 -1
- package/dist/mentions/MentionSuggestion.d.ts +26 -0
- package/dist/mentions/MentionSuggestion.d.ts.map +1 -1
- package/dist/streaming/ConversationStreaming.d.ts +34 -1
- package/dist/streaming/ConversationStreaming.d.ts.map +1 -1
- package/dist/streaming/ConversationStreaming.js +58 -14
- package/dist/streaming/ConversationStreaming.js.map +1 -1
- package/dist/timeline/RealtimeSessionTimeline.d.ts +71 -3
- package/dist/timeline/RealtimeSessionTimeline.d.ts.map +1 -1
- package/dist/timeline/RealtimeSessionTimeline.js +123 -9
- package/dist/timeline/RealtimeSessionTimeline.js.map +1 -1
- package/package.json +8 -8
|
@@ -66,6 +66,16 @@ export interface RealtimeSessionTimelineMeta {
|
|
|
66
66
|
/** Why the session closed (`Error` | `Explicit` | `Janitor` | `Shutdown`), when closed. */
|
|
67
67
|
CloseReason: string | null;
|
|
68
68
|
ClosedAt: Date | null;
|
|
69
|
+
/**
|
|
70
|
+
* When the session row was created, which is when the call started. That is earlier than the
|
|
71
|
+
* first caption, so it measures the call better than the transcript does. Optional, so meta built
|
|
72
|
+
* before this field existed still type-checks.
|
|
73
|
+
*/
|
|
74
|
+
StartedAt?: Date | null;
|
|
75
|
+
/** The user whose call it was (`MJ: AI Agent Sessions.UserID`). */
|
|
76
|
+
UserID?: string | null;
|
|
77
|
+
/** That user's display name (the session view's denormalized `User`). */
|
|
78
|
+
UserName?: string | null;
|
|
69
79
|
}
|
|
70
80
|
/** One renderable timeline entry: a normal chat message OR a collapsed session block. */
|
|
71
81
|
export type ConversationTimelineItem<T extends RealtimeTimelineSourceDetail> = {
|
|
@@ -112,7 +122,9 @@ export interface RealtimeSessionStatusChip {
|
|
|
112
122
|
Tone: 'live' | 'idle' | 'error' | 'neutral';
|
|
113
123
|
}
|
|
114
124
|
/**
|
|
115
|
-
* The card's title
|
|
125
|
+
* The card's title, in the words the rest of the product uses for a realtime session ("Start a
|
|
126
|
+
* voice call with…", "End call"): "Voice call with Sage", or "Voice call" when the lookup did not
|
|
127
|
+
* name the agent.
|
|
116
128
|
*
|
|
117
129
|
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
118
130
|
*/
|
|
@@ -136,6 +148,56 @@ export declare function SessionCardStatusChip(meta: RealtimeSessionTimelineMeta
|
|
|
136
148
|
* @param group The collapsed session block.
|
|
137
149
|
*/
|
|
138
150
|
export declare function SessionCardIsSameDayRange(group: RealtimeSessionTimelineGroup | null | undefined): boolean;
|
|
151
|
+
/**
|
|
152
|
+
* When the call started: the session row's creation time when the lookup supplied it, else the
|
|
153
|
+
* first caption's. The row is the better answer, because the transcript only begins once somebody
|
|
154
|
+
* speaks.
|
|
155
|
+
*
|
|
156
|
+
* @param group The collapsed session block.
|
|
157
|
+
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
158
|
+
*/
|
|
159
|
+
export declare function SessionCardStartedAt(group: RealtimeSessionTimelineGroup | null | undefined, meta: RealtimeSessionTimelineMeta | null | undefined): Date | null;
|
|
160
|
+
/**
|
|
161
|
+
* How long the call lasted, as a person would say it: "Under a minute", "12 min", "1 hr 5 min".
|
|
162
|
+
*
|
|
163
|
+
* Measured from the session row's start and close when the lookup supplied them, since the
|
|
164
|
+
* transcript runs from the first thing said to the last and so comes up short. Otherwise it falls
|
|
165
|
+
* back to the transcript's own span.
|
|
166
|
+
*
|
|
167
|
+
* `null` while the call is still going (Active or Idle), and whenever there is no span to measure.
|
|
168
|
+
* A single caption says nothing about how long a call ran, so it gets no duration rather than a
|
|
169
|
+
* confident "Under a minute".
|
|
170
|
+
*
|
|
171
|
+
* @param group The collapsed session block.
|
|
172
|
+
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
173
|
+
*/
|
|
174
|
+
export declare function SessionCardDurationLabel(group: RealtimeSessionTimelineGroup | null | undefined, meta: RealtimeSessionTimelineMeta | null | undefined): string | null;
|
|
175
|
+
/**
|
|
176
|
+
* The card's message count: "No messages", "1 message", "12 messages".
|
|
177
|
+
*
|
|
178
|
+
* Counts the same visible turns review mode lists ({@link IsVisibleRealtimeTurn}), so the card and
|
|
179
|
+
* the transcript it opens agree.
|
|
180
|
+
*
|
|
181
|
+
* @param group The collapsed session block.
|
|
182
|
+
*/
|
|
183
|
+
export declare function SessionCardMessageCountLabel(group: RealtimeSessionTimelineGroup | null | undefined): string;
|
|
184
|
+
/**
|
|
185
|
+
* Who said the card's quoted line.
|
|
186
|
+
*
|
|
187
|
+
* An agent turn is labeled with the agent's name, or "Agent" when the lookup did not supply one.
|
|
188
|
+
* A user turn is labeled "You" on the viewer's own call and with the caller's name on anyone
|
|
189
|
+
* else's. When the session row doesn't say whose call it was, the label is the neutral "Caller",
|
|
190
|
+
* so a shared conversation never labels someone else's call as yours.
|
|
191
|
+
*
|
|
192
|
+
* `fallbackUserName` is used only when the caller passes no viewer id, and so can't tell whose
|
|
193
|
+
* call it was either way.
|
|
194
|
+
*
|
|
195
|
+
* @param role Who spoke the line (`RealtimeSessionTimelineGroup.LastTurnRole`).
|
|
196
|
+
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
197
|
+
* @param viewerUserID The signed-in user's id, or null when the caller does not know it.
|
|
198
|
+
* @param fallbackUserName Label for a user turn when the caller passes no viewer id.
|
|
199
|
+
*/
|
|
200
|
+
export declare function SessionCardSpeakerLabel(role: RealtimeSessionTimelineGroup['LastTurnRole'], meta: RealtimeSessionTimelineMeta | null | undefined, viewerUserID: string | null | undefined, fallbackUserName?: string): string;
|
|
139
201
|
/**
|
|
140
202
|
* The `MJ: AI Agent Sessions` row shape the meta lookup reads.
|
|
141
203
|
*
|
|
@@ -149,6 +211,12 @@ export interface RealtimeSessionMetaRow {
|
|
|
149
211
|
Status?: 'Active' | 'Closed' | 'Idle' | null;
|
|
150
212
|
CloseReason?: string | null;
|
|
151
213
|
ClosedAt?: Date | string | null;
|
|
214
|
+
/** The user whose call it was. */
|
|
215
|
+
UserID?: string | null;
|
|
216
|
+
/** Denormalized display name of that user from the session view. */
|
|
217
|
+
User?: string | null;
|
|
218
|
+
/** When the row was created, which is when the call started. */
|
|
219
|
+
__mj_CreatedAt?: Date | string | null;
|
|
152
220
|
}
|
|
153
221
|
/**
|
|
154
222
|
* The columns the meta lookup needs, so both surfaces ask for the same ones.
|
|
@@ -171,8 +239,8 @@ export declare function CollectRealtimeSessionIDs(details: readonly RealtimeTime
|
|
|
171
239
|
* Maps session rows to the card's meta, keyed by {@link NormalizeUUID} so lookups match however
|
|
172
240
|
* the database cased the id.
|
|
173
241
|
*
|
|
174
|
-
* Tolerant: an unparseable `ClosedAt` becomes `null` rather than an Invalid
|
|
175
|
-
* otherwise render as "Invalid Date" on the card.
|
|
242
|
+
* Tolerant: an unparseable `ClosedAt` or `__mj_CreatedAt` becomes `null` rather than an Invalid
|
|
243
|
+
* Date, which would otherwise render as "Invalid Date" on the card.
|
|
176
244
|
*
|
|
177
245
|
* @param rows Rows from `MJ: AI Agent Sessions` (see {@link REALTIME_SESSION_META_FIELDS}).
|
|
178
246
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeSessionTimeline.d.ts","sourceRoot":"","sources":["../../src/timeline/RealtimeSessionTimeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,wGAAwG;AACxG,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,uGAAuG;IACvG,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,6FAA6F;IAC7F,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iFAAiF;IACjF,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,uGAAuG;IACvG,SAAS,EAAE,MAAM,CAAC;IAClB,4FAA4F;IAC5F,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,iFAAiF;IACjF,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,yGAAyG;IACzG,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,YAAY,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAC1C,iFAAiF;IACjF,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5C,2FAA2F;IAC3F,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"RealtimeSessionTimeline.d.ts","sourceRoot":"","sources":["../../src/timeline/RealtimeSessionTimeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* that renders a conversation needs this, so it belongs with the engine they all share.
|
|
21
21
|
* `ng-conversations` re-exports it, so its own consumers are unaffected.
|
|
22
22
|
*/
|
|
23
|
-
import { NormalizeUUID } from '@memberjunction/global';
|
|
23
|
+
import { NormalizeUUID, UUIDsEqual } from '@memberjunction/global';
|
|
24
24
|
/**
|
|
25
25
|
* Builds the renderable conversation timeline from the loaded detail rows (chronological,
|
|
26
26
|
* as the engine returns them):
|
|
@@ -111,13 +111,15 @@ function toDate(value) {
|
|
|
111
111
|
return isNaN(date.getTime()) ? null : date;
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
114
|
-
* The card's title
|
|
114
|
+
* The card's title, in the words the rest of the product uses for a realtime session ("Start a
|
|
115
|
+
* voice call with…", "End call"): "Voice call with Sage", or "Voice call" when the lookup did not
|
|
116
|
+
* name the agent.
|
|
115
117
|
*
|
|
116
118
|
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
117
119
|
*/
|
|
118
120
|
export function SessionCardTitle(meta) {
|
|
119
121
|
const agent = meta?.AgentName?.trim();
|
|
120
|
-
return agent ? `
|
|
122
|
+
return agent ? `Voice call with ${agent}` : 'Voice call';
|
|
121
123
|
}
|
|
122
124
|
/**
|
|
123
125
|
* The card's status chip, or `null` to hide it entirely.
|
|
@@ -156,6 +158,106 @@ export function SessionCardIsSameDayRange(group) {
|
|
|
156
158
|
}
|
|
157
159
|
return start.toDateString() === end.toDateString();
|
|
158
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* When the call started: the session row's creation time when the lookup supplied it, else the
|
|
163
|
+
* first caption's. The row is the better answer, because the transcript only begins once somebody
|
|
164
|
+
* speaks.
|
|
165
|
+
*
|
|
166
|
+
* @param group The collapsed session block.
|
|
167
|
+
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
168
|
+
*/
|
|
169
|
+
export function SessionCardStartedAt(group, meta) {
|
|
170
|
+
return meta?.StartedAt ?? group?.StartedAt ?? null;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* How long the call lasted, as a person would say it: "Under a minute", "12 min", "1 hr 5 min".
|
|
174
|
+
*
|
|
175
|
+
* Measured from the session row's start and close when the lookup supplied them, since the
|
|
176
|
+
* transcript runs from the first thing said to the last and so comes up short. Otherwise it falls
|
|
177
|
+
* back to the transcript's own span.
|
|
178
|
+
*
|
|
179
|
+
* `null` while the call is still going (Active or Idle), and whenever there is no span to measure.
|
|
180
|
+
* A single caption says nothing about how long a call ran, so it gets no duration rather than a
|
|
181
|
+
* confident "Under a minute".
|
|
182
|
+
*
|
|
183
|
+
* @param group The collapsed session block.
|
|
184
|
+
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
185
|
+
*/
|
|
186
|
+
export function SessionCardDurationLabel(group, meta) {
|
|
187
|
+
if (meta?.Status === 'Active' || meta?.Status === 'Idle') {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
const start = SessionCardStartedAt(group, meta);
|
|
191
|
+
const end = meta?.ClosedAt ?? group?.EndedAt ?? null;
|
|
192
|
+
if (!start || !end) {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
const elapsedMs = end.getTime() - start.getTime();
|
|
196
|
+
// `> 0` rather than `<= 0` so a NaN from a bad date falls through to "no duration" too.
|
|
197
|
+
return elapsedMs > 0 ? formatCallDuration(elapsedMs) : null;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* The card's message count: "No messages", "1 message", "12 messages".
|
|
201
|
+
*
|
|
202
|
+
* Counts the same visible turns review mode lists ({@link IsVisibleRealtimeTurn}), so the card and
|
|
203
|
+
* the transcript it opens agree.
|
|
204
|
+
*
|
|
205
|
+
* @param group The collapsed session block.
|
|
206
|
+
*/
|
|
207
|
+
export function SessionCardMessageCountLabel(group) {
|
|
208
|
+
const count = group?.TurnCount ?? 0;
|
|
209
|
+
if (count === 0) {
|
|
210
|
+
return 'No messages';
|
|
211
|
+
}
|
|
212
|
+
return count === 1 ? '1 message' : `${count} messages`;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Who said the card's quoted line.
|
|
216
|
+
*
|
|
217
|
+
* An agent turn is labeled with the agent's name, or "Agent" when the lookup did not supply one.
|
|
218
|
+
* A user turn is labeled "You" on the viewer's own call and with the caller's name on anyone
|
|
219
|
+
* else's. When the session row doesn't say whose call it was, the label is the neutral "Caller",
|
|
220
|
+
* so a shared conversation never labels someone else's call as yours.
|
|
221
|
+
*
|
|
222
|
+
* `fallbackUserName` is used only when the caller passes no viewer id, and so can't tell whose
|
|
223
|
+
* call it was either way.
|
|
224
|
+
*
|
|
225
|
+
* @param role Who spoke the line (`RealtimeSessionTimelineGroup.LastTurnRole`).
|
|
226
|
+
* @param meta The session-row enrichment, or null when the lookup was unavailable.
|
|
227
|
+
* @param viewerUserID The signed-in user's id, or null when the caller does not know it.
|
|
228
|
+
* @param fallbackUserName Label for a user turn when the caller passes no viewer id.
|
|
229
|
+
*/
|
|
230
|
+
export function SessionCardSpeakerLabel(role, meta, viewerUserID, fallbackUserName = 'You') {
|
|
231
|
+
if (role === 'Assistant') {
|
|
232
|
+
return meta?.AgentName?.trim() || 'Agent';
|
|
233
|
+
}
|
|
234
|
+
const viewerID = viewerUserID?.trim();
|
|
235
|
+
if (!viewerID) {
|
|
236
|
+
return fallbackUserName;
|
|
237
|
+
}
|
|
238
|
+
const ownerID = meta?.UserID?.trim();
|
|
239
|
+
if (!ownerID) {
|
|
240
|
+
return 'Caller';
|
|
241
|
+
}
|
|
242
|
+
if (UUIDsEqual(ownerID, viewerID)) {
|
|
243
|
+
return 'You';
|
|
244
|
+
}
|
|
245
|
+
// Someone else's call: their name if the row carried it.
|
|
246
|
+
return meta?.UserName?.trim() || 'Caller';
|
|
247
|
+
}
|
|
248
|
+
/** Formats a positive span in milliseconds for {@link SessionCardDurationLabel}. */
|
|
249
|
+
function formatCallDuration(elapsedMs) {
|
|
250
|
+
if (elapsedMs < 60_000) {
|
|
251
|
+
return 'Under a minute';
|
|
252
|
+
}
|
|
253
|
+
const totalMinutes = Math.round(elapsedMs / 60_000);
|
|
254
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
255
|
+
const minutes = totalMinutes % 60;
|
|
256
|
+
if (hours === 0) {
|
|
257
|
+
return `${minutes} min`;
|
|
258
|
+
}
|
|
259
|
+
return minutes === 0 ? `${hours} hr` : `${hours} hr ${minutes} min`;
|
|
260
|
+
}
|
|
159
261
|
/** Maps a close reason to its chip. `Error` is the only one that reads as a failure. */
|
|
160
262
|
function closeReasonChip(reason) {
|
|
161
263
|
switch (reason) {
|
|
@@ -166,7 +268,8 @@ function closeReasonChip(reason) {
|
|
|
166
268
|
case 'Janitor':
|
|
167
269
|
return { Label: 'Timed out', Tone: 'neutral' };
|
|
168
270
|
case 'Shutdown':
|
|
169
|
-
|
|
271
|
+
// The server restarted under the call. Worded for the person on it, who never saw a server.
|
|
272
|
+
return { Label: 'Interrupted', Tone: 'neutral' };
|
|
170
273
|
default:
|
|
171
274
|
return { Label: 'Closed', Tone: 'neutral' };
|
|
172
275
|
}
|
|
@@ -177,7 +280,16 @@ function closeReasonChip(reason) {
|
|
|
177
280
|
* A host that trims this list gets cards missing their chips on that host only — the kind of
|
|
178
281
|
* divergence that is invisible until someone compares two screenshots.
|
|
179
282
|
*/
|
|
180
|
-
export const REALTIME_SESSION_META_FIELDS = [
|
|
283
|
+
export const REALTIME_SESSION_META_FIELDS = [
|
|
284
|
+
'ID',
|
|
285
|
+
'Agent',
|
|
286
|
+
'Status',
|
|
287
|
+
'CloseReason',
|
|
288
|
+
'ClosedAt',
|
|
289
|
+
'UserID',
|
|
290
|
+
'User',
|
|
291
|
+
'__mj_CreatedAt'
|
|
292
|
+
];
|
|
181
293
|
/**
|
|
182
294
|
* The DISTINCT session ids stamped across `details`, in first-seen order.
|
|
183
295
|
*
|
|
@@ -207,21 +319,23 @@ export function CollectRealtimeSessionIDs(details) {
|
|
|
207
319
|
* Maps session rows to the card's meta, keyed by {@link NormalizeUUID} so lookups match however
|
|
208
320
|
* the database cased the id.
|
|
209
321
|
*
|
|
210
|
-
* Tolerant: an unparseable `ClosedAt` becomes `null` rather than an Invalid
|
|
211
|
-
* otherwise render as "Invalid Date" on the card.
|
|
322
|
+
* Tolerant: an unparseable `ClosedAt` or `__mj_CreatedAt` becomes `null` rather than an Invalid
|
|
323
|
+
* Date, which would otherwise render as "Invalid Date" on the card.
|
|
212
324
|
*
|
|
213
325
|
* @param rows Rows from `MJ: AI Agent Sessions` (see {@link REALTIME_SESSION_META_FIELDS}).
|
|
214
326
|
*/
|
|
215
327
|
export function MapRealtimeSessionMeta(rows) {
|
|
216
328
|
const map = new Map();
|
|
217
329
|
for (const row of rows ?? []) {
|
|
218
|
-
const closedAt = toDate(row.ClosedAt);
|
|
219
330
|
map.set(NormalizeUUID(row.ID), {
|
|
220
331
|
SessionID: row.ID,
|
|
221
332
|
AgentName: row.Agent ?? null,
|
|
222
333
|
Status: row.Status ?? null,
|
|
223
334
|
CloseReason: row.CloseReason ?? null,
|
|
224
|
-
ClosedAt:
|
|
335
|
+
ClosedAt: toDate(row.ClosedAt),
|
|
336
|
+
StartedAt: toDate(row.__mj_CreatedAt),
|
|
337
|
+
UserID: row.UserID ?? null,
|
|
338
|
+
UserName: row.User ?? null
|
|
225
339
|
});
|
|
226
340
|
}
|
|
227
341
|
return map;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeSessionTimeline.js","sourceRoot":"","sources":["../../src/timeline/RealtimeSessionTimeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"RealtimeSessionTimeline.js","sourceRoot":"","sources":["../../src/timeline/RealtimeSessionTimeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAmEnE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAAqB;IAErB,MAAM,KAAK,GAAkC,EAAE,CAAC;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAwC,CAAC;IAE3E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAChD,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;YAC/B,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,SAAS,kBAAkB,CAAC,GAAkB;IAC5C,MAAM,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAClC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,6DAA6D;AAC7D,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO;QACL,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,SAAS,mBAAmB,CAAC,KAAmC,EAAE,MAAoC;IACpG,KAAK,CAAC,WAAW,EAAE,CAAC;IAEpB,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACzC,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7D,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC;QACjE,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvD,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAoC;IACxE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACrG,CAAC;AAED,wFAAwF;AACxF,SAAS,MAAM,CAAC,KAAuC;IACrD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAeD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAoD;IACnF,MAAM,KAAK,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACtC,OAAO,KAAK,CAAC,CAAC,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;AAC3D,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAoD;IAEpD,QAAQ,IAAI,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,KAAK,QAAQ;YACX,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC,KAAK,MAAM;YACT,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACzC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAsD;IAC9F,MAAM,KAAK,GAAG,KAAK,EAAE,SAAS,CAAC;IAC/B,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,CAAC;IAC3B,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAsD,EACtD,IAAoD;IAEpD,OAAO,IAAI,EAAE,SAAS,IAAI,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC;AACrD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAsD,EACtD,IAAoD;IAEpD,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,EAAE,QAAQ,IAAI,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC;IACrD,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAClD,wFAAwF;IACxF,OAAO,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAAsD;IACjG,MAAM,KAAK,GAAG,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC;AACzD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAkD,EAClD,IAAoD,EACpD,YAAuC,EACvC,gBAAgB,GAAG,KAAK;IAExB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;IAC5C,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,yDAAyD;IACzD,OAAO,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC;AAC5C,CAAC;AAED,oFAAoF;AACpF,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,IAAI,SAAS,GAAG,MAAM,EAAE,CAAC;QACvB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAClC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,OAAO,MAAM,CAAC;AACtE,CAAC;AAED,wFAAwF;AACxF,SAAS,eAAe,CAAC,MAAqB;IAC5C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,KAAK,OAAO;YACV,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3C,KAAK,SAAS;YACZ,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACjD,KAAK,UAAU;YACb,4FAA4F;YAC5F,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACnD;YACE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAChD,CAAC;AACH,CAAC;AAuBD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAsB;IAC7D,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,aAAa;IACb,UAAU;IACV,QAAQ;IACR,MAAM;IACN,gBAAgB;CACjB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgD;IACxF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAChD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA0D;IAE1D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuC,CAAC;IAC3D,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC7B,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAC7B,SAAS,EAAE,GAAG,CAAC,EAAE;YACjB,SAAS,EAAE,GAAG,CAAC,KAAK,IAAI,IAAI;YAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;YAC1B,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,IAAI;YACpC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC9B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;YACrC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,IAAI;YAC1B,QAAQ,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CACrC,OAA4E,EAC5E,SAAiB;IAEjB,OAAO,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC;AACxD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/conversations-runtime",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "6.2.0-edge.
|
|
4
|
+
"version": "6.2.0-edge.1",
|
|
5
5
|
"description": "MemberJunction: Framework-agnostic Conversations Runtime — orchestration, mention parsing, overlay/workspace bridge, default-agent resolution, client-tool registry, sessions observability. Pure TypeScript, zero UX dependencies. Consumable from browser (Angular widget, React, Vue, etc.) or server (Node workers, CLI tools, test harnesses).",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"author": "MemberJunction.com",
|
|
12
12
|
"license": "BUSL-1.1",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@memberjunction/ai-agent-client": "6.2.0-edge.
|
|
15
|
-
"@memberjunction/ai-core-plus": "6.2.0-edge.
|
|
16
|
-
"@memberjunction/ai-engine-base": "6.2.0-edge.
|
|
17
|
-
"@memberjunction/core": "6.2.0-edge.
|
|
18
|
-
"@memberjunction/core-entities": "6.2.0-edge.
|
|
19
|
-
"@memberjunction/global": "6.2.0-edge.
|
|
20
|
-
"@memberjunction/graphql-dataprovider": "6.2.0-edge.
|
|
14
|
+
"@memberjunction/ai-agent-client": "6.2.0-edge.1",
|
|
15
|
+
"@memberjunction/ai-core-plus": "6.2.0-edge.1",
|
|
16
|
+
"@memberjunction/ai-engine-base": "6.2.0-edge.1",
|
|
17
|
+
"@memberjunction/core": "6.2.0-edge.1",
|
|
18
|
+
"@memberjunction/core-entities": "6.2.0-edge.1",
|
|
19
|
+
"@memberjunction/global": "6.2.0-edge.1",
|
|
20
|
+
"@memberjunction/graphql-dataprovider": "6.2.0-edge.1",
|
|
21
21
|
"rxjs": "^7.8.2"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|