@memberjunction/graphql-dataprovider 6.2.0-edge.1 → 6.2.0-edge.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/index.cjs +338 -80
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +677 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +677 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +395 -137
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -8
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { GraphQLClient } from 'graphql-request';
|
|
2
2
|
export { gql } from 'graphql-request';
|
|
3
|
-
import { ProviderBase, IEntityDataProvider, IMetadataProvider,
|
|
3
|
+
import { ProviderConfigDataBase, ProviderBase, IEntityDataProvider, IMetadataProvider, QueryExecutionSpec, UserInfo, RunQueryResult, RunQueryParams, RunQueryEnrichment, RunQueryWithCacheCheckParams, RunQueriesWithCacheCheckResponse, RunViewParams, RunViewResult, RunViewWithCacheCheckParams, RunViewsWithCacheCheckResponse, EntityInfo, ProviderType, CompositeKey, RecordChange, RecordDependency, KeyValuePair, PotentialDuplicateRequest, PotentialDuplicateResponse, SearchEntityParams, EntitySearchResult, ScoredCandidate, RemoteOpInvokeOptions, RemoteOpResult, RecordMergeRequest, EntityMergeOptions, RecordMergeResult, BaseEntity, EntitySaveOptions, EntityDeleteOptions, DatasetItemFilterType, DatasetResultType, DatasetStatusResultType, TransactionGroupBase, EntityRecordNameInput, EntityRecordNameResult, ILocalStorageProvider, TransactionResult, PlatformSQL } from '@memberjunction/core';
|
|
4
4
|
import { MJUserViewEntityExtended } from '@memberjunction/core-entities';
|
|
5
5
|
import { Observable } from 'rxjs';
|
|
6
6
|
import { ExecuteAgentParams, ExecuteAgentResult } from '@memberjunction/ai-core-plus';
|
|
7
|
+
import { DecisionQuestion, DecisionAnswer } from '@memberjunction/ai';
|
|
7
8
|
import { ActionParam, ActionResult, EntityActionInvocationParams, EntityActionResult } from '@memberjunction/actions-base';
|
|
8
9
|
import { ListSource, ListRefreshMode, ListDelta, ApplyResult, MaterializeOptions, SetOpKind, ShareTarget, SharePermissionLevel, ShareResult, InviteResult, AcceptInvitationResult, ListShareSummary, SharedListSummary } from '@memberjunction/lists-base';
|
|
9
10
|
import { ComponentSpec } from '@memberjunction/interactive-component-types';
|
|
@@ -95,6 +96,60 @@ declare class GraphQLAIClient {
|
|
|
95
96
|
* @private
|
|
96
97
|
*/
|
|
97
98
|
private handlePromptError;
|
|
99
|
+
/**
|
|
100
|
+
* Run a typed decision (Likelihood, Choice, Score) on the server in one round trip.
|
|
101
|
+
*
|
|
102
|
+
* This calls the `RunDecision` mutation, the fast path for browser features with a tight latency
|
|
103
|
+
* budget such as routing a message or checking for a duplicate: it carries none of the
|
|
104
|
+
* `Run Decision` action's execution overhead. The questions and the state are serialized for the
|
|
105
|
+
* wire and the answers parsed back.
|
|
106
|
+
*
|
|
107
|
+
* The method never throws. A failure on the server or in transport is `Success: false` with an
|
|
108
|
+
* `ErrorMessage` and empty `Answers`.
|
|
109
|
+
*
|
|
110
|
+
* @param params The questions, the state, and optionally the prompt and a timeout
|
|
111
|
+
* @returns A Promise that resolves to the answers by question key, or the reason there are none
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* const result = await aiClient.RunDecision({
|
|
116
|
+
* State: { message: "Show me last quarter's renewals" },
|
|
117
|
+
* Questions: {
|
|
118
|
+
* route: {
|
|
119
|
+
* Kind: 'Choice',
|
|
120
|
+
* Instructions: 'Which agent should answer this message?',
|
|
121
|
+
* Options: [
|
|
122
|
+
* { Value: 'sage', Description: 'General questions about the product' },
|
|
123
|
+
* { Value: 'analyst', Description: 'Questions about data and reports' }
|
|
124
|
+
* ]
|
|
125
|
+
* }
|
|
126
|
+
* },
|
|
127
|
+
* TimeoutMS: 250
|
|
128
|
+
* });
|
|
129
|
+
*
|
|
130
|
+
* const route = result.Answers.route;
|
|
131
|
+
* if (result.Success && route?.Kind === 'Choice') {
|
|
132
|
+
* console.log(`Route to ${route.Value} (confidence ${route.Confidence})`);
|
|
133
|
+
* }
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
RunDecision(params: RunDecisionParams): Promise<RunDecisionResult>;
|
|
137
|
+
/**
|
|
138
|
+
* Prepares the variables for the decision mutation: the questions as JSON, and the state as-is
|
|
139
|
+
* when it is text or as JSON when it is an object.
|
|
140
|
+
*/
|
|
141
|
+
private prepareDecisionVariables;
|
|
142
|
+
/**
|
|
143
|
+
* Maps the decision mutation's result. The answers are returned only on success, so a caller
|
|
144
|
+
* never acts on partial ones; answers that cannot be read turn the result into a failure.
|
|
145
|
+
*/
|
|
146
|
+
private processDecisionResult;
|
|
147
|
+
/** Parses the answers the server sent, or returns why they cannot be used. */
|
|
148
|
+
private parseDecisionAnswers;
|
|
149
|
+
/** Whether a parsed value has the shape of a Likelihood, Choice or Score answer. */
|
|
150
|
+
private isDecisionAnswer;
|
|
151
|
+
/** Maps a transport or parsing error to a failed decision result. */
|
|
152
|
+
private handleDecisionError;
|
|
98
153
|
/**
|
|
99
154
|
* Run an AI agent with the specified parameters.
|
|
100
155
|
*
|
|
@@ -207,6 +262,22 @@ declare class GraphQLAIClient {
|
|
|
207
262
|
* Used by RunAIAgentFromConversationDetail which correlates by conversationDetailId.
|
|
208
263
|
*/
|
|
209
264
|
private isConversationDetailCompletionEvent;
|
|
265
|
+
/**
|
|
266
|
+
* Does this PubSub message belong to the operation watching `conversationDetailId`?
|
|
267
|
+
*
|
|
268
|
+
* FAILS OPEN by design (see `FireAndForgetConfig.isRelevantMessage`): a message carrying no
|
|
269
|
+
* operation identifier at all — a server-wide notice, a shape we do not recognise — counts as
|
|
270
|
+
* activity, preserving the pre-#4222 behaviour. Only a message that positively identifies a
|
|
271
|
+
* DIFFERENT conversation detail or a different agent run is ignored.
|
|
272
|
+
*/
|
|
273
|
+
private isMessageForConversationDetail;
|
|
274
|
+
/**
|
|
275
|
+
* Does this PubSub message belong to the agent run tracked by `ref`?
|
|
276
|
+
*
|
|
277
|
+
* Before any run id has been observed the operation has no identity to compare against, so
|
|
278
|
+
* everything counts (fail open). Once known, a message naming a different run is ignored.
|
|
279
|
+
*/
|
|
280
|
+
private isMessageForAgentRun;
|
|
210
281
|
/**
|
|
211
282
|
* Capture the agent run id from any PubSub message so the reconciliation hook has a
|
|
212
283
|
* handle even before progress flows. Used only by the plain RunAIAgent path, which
|
|
@@ -369,6 +440,43 @@ declare class GraphQLAIClient {
|
|
|
369
440
|
* @returns A Promise that resolves to a FetchEntityVectorsResult
|
|
370
441
|
*/
|
|
371
442
|
FetchEntityVectors(params: FetchEntityVectorsParams): Promise<FetchEntityVectorsResult>;
|
|
443
|
+
/**
|
|
444
|
+
* Check the values a person is entering for a new record against the entity's existing records,
|
|
445
|
+
* and get back the ones to flag as possible duplicates.
|
|
446
|
+
*
|
|
447
|
+
* This calls the `CheckDuplicateEntry` mutation. The server finds vector candidates for the
|
|
448
|
+
* values, keeps those the current user can read, and asks a typed decision about them. It only
|
|
449
|
+
* flags: nothing is saved, merged or blocked. An entity whose documents do not turn the check on
|
|
450
|
+
* answers `NotConfigured`; a caller who may not run the check answers `NotAuthorized`.
|
|
451
|
+
*
|
|
452
|
+
* The method never throws. A failure on the server or in transport is `Status: 'Failed'` with an
|
|
453
|
+
* `ErrorMessage` and no candidates. It sets no timeout of its own: a caller with a latency budget
|
|
454
|
+
* abandons the promise when the budget runs out. The server bounds each check with its own
|
|
455
|
+
* budget, a little above the form's, so it stops working on an abandoned check soon after.
|
|
456
|
+
*
|
|
457
|
+
* @param params The entity and the values entered so far
|
|
458
|
+
* @returns The flagged candidates, most probable first, or why there are none
|
|
459
|
+
*
|
|
460
|
+
* @example
|
|
461
|
+
* ```typescript
|
|
462
|
+
* const result = await aiClient.CheckDuplicateEntry({
|
|
463
|
+
* EntityName: 'Accounts',
|
|
464
|
+
* Values: { Name: 'Acme', City: 'Boston' }
|
|
465
|
+
* });
|
|
466
|
+
* if (result.Status === 'Checked') {
|
|
467
|
+
* result.Candidates.forEach(c => console.log(`${c.DisplayName} (${c.Probability})`));
|
|
468
|
+
* }
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
471
|
+
CheckDuplicateEntry(params: DuplicateEntryCheckParams): Promise<DuplicateEntryCheckResult>;
|
|
472
|
+
/**
|
|
473
|
+
* Maps the entry-check mutation's result. A status the client does not know is a failure, so a
|
|
474
|
+
* caller never acts on a result it cannot read.
|
|
475
|
+
*/
|
|
476
|
+
private processDuplicateEntryCheckResult;
|
|
477
|
+
private isDuplicateEntryCheckStatus;
|
|
478
|
+
/** Maps a transport or parsing error to a failed entry-check result. */
|
|
479
|
+
private handleDuplicateEntryCheckError;
|
|
372
480
|
}
|
|
373
481
|
/** Result from RunAutotagPipeline */
|
|
374
482
|
interface AutotagPipelineResult {
|
|
@@ -445,6 +553,72 @@ interface FetchEntityVectorsResult {
|
|
|
445
553
|
ElapsedMs: number;
|
|
446
554
|
ErrorMessage?: string;
|
|
447
555
|
}
|
|
556
|
+
/**
|
|
557
|
+
* Parameters for {@link GraphQLAIClient.CheckDuplicateEntry}
|
|
558
|
+
*/
|
|
559
|
+
interface DuplicateEntryCheckParams {
|
|
560
|
+
/**
|
|
561
|
+
* The entity the new record belongs to
|
|
562
|
+
*/
|
|
563
|
+
EntityName: string;
|
|
564
|
+
/**
|
|
565
|
+
* The values entered so far, by field name (sent as JSON). The server ignores fields the entity
|
|
566
|
+
* does not have.
|
|
567
|
+
*/
|
|
568
|
+
Values: Record<string, unknown>;
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* How an entry-time duplicate check ended.
|
|
572
|
+
* - `Checked`: the check ran; `Candidates` holds the flagged records, and may be empty.
|
|
573
|
+
* - `NotConfigured`: the entity's documents do not turn the check on. Nothing else ran.
|
|
574
|
+
* - `NotAuthorized`: the caller may not run the check (an API key without the scopes, or a user who
|
|
575
|
+
* cannot read the entity). Nothing else ran; `ErrorMessage` says why.
|
|
576
|
+
* - `Failed`: the check could not finish; `ErrorMessage` says why, and nothing is flagged.
|
|
577
|
+
*/
|
|
578
|
+
type DuplicateEntryCheckStatus = 'Checked' | 'NotConfigured' | 'NotAuthorized' | 'Failed';
|
|
579
|
+
/**
|
|
580
|
+
* An existing record flagged as a possible duplicate of the values being entered
|
|
581
|
+
*/
|
|
582
|
+
interface DuplicateEntryCandidate {
|
|
583
|
+
/**
|
|
584
|
+
* The candidate's primary key as a compact URL segment. `CompositeKey.FromURLSegment` reads it back.
|
|
585
|
+
*/
|
|
586
|
+
RecordID: string;
|
|
587
|
+
/**
|
|
588
|
+
* The candidate's name, or its key when the current user may not read a name
|
|
589
|
+
*/
|
|
590
|
+
DisplayName: string;
|
|
591
|
+
/**
|
|
592
|
+
* The vector similarity score that surfaced the candidate
|
|
593
|
+
*/
|
|
594
|
+
VectorScore: number;
|
|
595
|
+
/**
|
|
596
|
+
* The decision's probability that the candidate is the same real-world entity, or null when it
|
|
597
|
+
* gave no answer for it
|
|
598
|
+
*/
|
|
599
|
+
Probability: number | null;
|
|
600
|
+
}
|
|
601
|
+
/**
|
|
602
|
+
* Result from {@link GraphQLAIClient.CheckDuplicateEntry}
|
|
603
|
+
*/
|
|
604
|
+
interface DuplicateEntryCheckResult {
|
|
605
|
+
/**
|
|
606
|
+
* How the check ended
|
|
607
|
+
*/
|
|
608
|
+
Status: DuplicateEntryCheckStatus;
|
|
609
|
+
/**
|
|
610
|
+
* Why the check failed, when `Status` is `Failed`
|
|
611
|
+
*/
|
|
612
|
+
ErrorMessage?: string;
|
|
613
|
+
/**
|
|
614
|
+
* The flagged candidates, most probable first. Empty unless `Status` is `Checked`.
|
|
615
|
+
*/
|
|
616
|
+
Candidates: DuplicateEntryCandidate[];
|
|
617
|
+
/**
|
|
618
|
+
* How long the check took on the server, in milliseconds, when the server answered
|
|
619
|
+
*/
|
|
620
|
+
ElapsedMs?: number;
|
|
621
|
+
}
|
|
448
622
|
/**
|
|
449
623
|
* Parameters for executing a simple prompt
|
|
450
624
|
*/
|
|
@@ -673,6 +847,72 @@ interface RunAIPromptResult {
|
|
|
673
847
|
*/
|
|
674
848
|
chatResult?: any;
|
|
675
849
|
}
|
|
850
|
+
/**
|
|
851
|
+
* Parameters for {@link GraphQLAIClient.RunDecision}
|
|
852
|
+
*/
|
|
853
|
+
interface RunDecisionParams {
|
|
854
|
+
/**
|
|
855
|
+
* The questions, keyed by a short label for code, answered together in one call.
|
|
856
|
+
* Write the instructions and option descriptions for the model: it never reads the keys.
|
|
857
|
+
*/
|
|
858
|
+
Questions: Record<string, DecisionQuestion>;
|
|
859
|
+
/**
|
|
860
|
+
* The state the questions are about: text, or an object (sent as JSON).
|
|
861
|
+
* Keep it to what the questions need.
|
|
862
|
+
*/
|
|
863
|
+
State: string | Record<string, unknown>;
|
|
864
|
+
/**
|
|
865
|
+
* The ID of the Decision-typed prompt to run. Takes precedence over `PromptName`.
|
|
866
|
+
*/
|
|
867
|
+
PromptID?: string;
|
|
868
|
+
/**
|
|
869
|
+
* The name of the Decision-typed prompt to run, matched case-insensitively.
|
|
870
|
+
* The server uses `Default Decision` when neither this nor `PromptID` is set.
|
|
871
|
+
*/
|
|
872
|
+
PromptName?: string;
|
|
873
|
+
/**
|
|
874
|
+
* Bounds each model call on the server, in milliseconds. Unset or not positive, the server uses
|
|
875
|
+
* its default, `RunDecisionResolver.DEFAULT_TIMEOUT_MS`; a value over
|
|
876
|
+
* `RunDecisionResolver.MAX_TIMEOUT_MS` is cut to it. A call is never unbounded.
|
|
877
|
+
*/
|
|
878
|
+
TimeoutMS?: number;
|
|
879
|
+
}
|
|
880
|
+
/**
|
|
881
|
+
* Result from {@link GraphQLAIClient.RunDecision}
|
|
882
|
+
*/
|
|
883
|
+
interface RunDecisionResult {
|
|
884
|
+
/**
|
|
885
|
+
* Whether the decision ran and its answers were read
|
|
886
|
+
*/
|
|
887
|
+
Success: boolean;
|
|
888
|
+
/**
|
|
889
|
+
* Why the decision failed, when `Success` is false
|
|
890
|
+
*/
|
|
891
|
+
ErrorMessage?: string;
|
|
892
|
+
/**
|
|
893
|
+
* The answers by question key. Empty on failure, so a caller never acts on partial answers.
|
|
894
|
+
*/
|
|
895
|
+
Answers: Record<string, DecisionAnswer>;
|
|
896
|
+
/**
|
|
897
|
+
* ID of the `MJ: AI Prompt Runs` record the server wrote, when the run got that far
|
|
898
|
+
*/
|
|
899
|
+
PromptRunID?: string;
|
|
900
|
+
/**
|
|
901
|
+
* The model that answered, or the one selected when the call failed
|
|
902
|
+
*/
|
|
903
|
+
ModelName?: string;
|
|
904
|
+
/**
|
|
905
|
+
* The exact model behind `ModelName`, as its driver reports it: the vendor's dated model for a
|
|
906
|
+
* vendor decision model (`typesafe/jev-1.13-20260917`), the chat model for LLM Decision
|
|
907
|
+
* (`GPT-OSS-120B`). A calibration fitted on one model applies only to that model's answers, so a
|
|
908
|
+
* consumer that calibrates needs both names. Absent when the driver reports none.
|
|
909
|
+
*/
|
|
910
|
+
ResolvedModel?: string;
|
|
911
|
+
/**
|
|
912
|
+
* Server-side execution time in milliseconds
|
|
913
|
+
*/
|
|
914
|
+
ExecutionTimeMs?: number;
|
|
915
|
+
}
|
|
676
916
|
/**
|
|
677
917
|
* Parameters for running an AI agent from an existing conversation detail.
|
|
678
918
|
* This is the optimized method that loads conversation history server-side.
|
|
@@ -987,6 +1227,27 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
|
|
|
987
1227
|
* @returns
|
|
988
1228
|
*/
|
|
989
1229
|
Config(configData: GraphQLProviderConfigData, providerToUse?: IMetadataProvider, separateConnection?: boolean, forceRefreshSessionId?: boolean): Promise<boolean>;
|
|
1230
|
+
/**
|
|
1231
|
+
* The authenticate-only half of {@link Config}, for embedded/anonymous surfaces that only make
|
|
1232
|
+
* their own GraphQL calls. After it resolves, {@link ExecuteGQL} works. No metadata is fetched,
|
|
1233
|
+
* so entity metadata (`Entities`, `EntityByName`, `RunView`, `GetEntityObject`) is NOT available
|
|
1234
|
+
* until the full boot runs (`SetupGraphQLClient`, or {@link Config}) on this same instance.
|
|
1235
|
+
* Uses the shared singleton connection (a secondary instance keeps its own). A later Connect/Config with a different URL,
|
|
1236
|
+
* token or API key rebuilds that connection's client (keeping the session id).
|
|
1237
|
+
*/
|
|
1238
|
+
Connect(configData: GraphQLProviderConfigData): Promise<void>;
|
|
1239
|
+
/**
|
|
1240
|
+
* The connection half of {@link Config}: stores the config, resolves the session id and creates the
|
|
1241
|
+
* GraphQL client (this instance's own client when separateConnection is true or this is not the
|
|
1242
|
+
* global singleton, otherwise the shared singleton client, which is reused unless the credentials
|
|
1243
|
+
* changed). Loads no metadata.
|
|
1244
|
+
*/
|
|
1245
|
+
private connectClient;
|
|
1246
|
+
/**
|
|
1247
|
+
* True when `client` was built with a URL or credentials other than `configData`'s. A client this
|
|
1248
|
+
* class did not record (a subclass's own CreateNewGraphQLClient, a test harness) is kept as-is.
|
|
1249
|
+
*/
|
|
1250
|
+
private isBuiltWithOtherCredentials;
|
|
990
1251
|
get sessionId(): string;
|
|
991
1252
|
protected get AllowRefresh(): boolean;
|
|
992
1253
|
/**
|
|
@@ -1203,6 +1464,17 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
|
|
|
1203
1464
|
CreateTransactionGroup(): Promise<TransactionGroupBase>;
|
|
1204
1465
|
GetRecordFavoriteStatus(userId: string, entityName: string, primaryKey: CompositeKey): Promise<boolean>;
|
|
1205
1466
|
SetRecordFavoriteStatus(userId: string, entityName: string, primaryKey: CompositeKey, isFavorite: boolean, contextUser: UserInfo): Promise<void>;
|
|
1467
|
+
/**
|
|
1468
|
+
* Record names this connection has seen, for synchronous display code. Safe to keep here
|
|
1469
|
+
* because every request on a connection is answered as the same user.
|
|
1470
|
+
*/
|
|
1471
|
+
private readonly _recordNames;
|
|
1472
|
+
GetCachedRecordName(entityName: string, compositeKey: CompositeKey, loadIfNeeded?: boolean): Promise<string | undefined>;
|
|
1473
|
+
HasCachedRecordName(entityName: string, compositeKey: CompositeKey): boolean;
|
|
1474
|
+
GetCachedRecordNameOnlyIfCached(entityName: string, compositeKey: CompositeKey): string | undefined;
|
|
1475
|
+
SetCachedRecordName(entityName: string, compositeKey: CompositeKey, recordName: string): void;
|
|
1476
|
+
GetEntityRecordName(entityName: string, compositeKey: CompositeKey, contextUser?: UserInfo, forceRefresh?: boolean): Promise<string>;
|
|
1477
|
+
GetEntityRecordNames(info: EntityRecordNameInput[], contextUser?: UserInfo, forceRefresh?: boolean): Promise<EntityRecordNameResult[]>;
|
|
1206
1478
|
protected InternalGetEntityRecordName(entityName: string, primaryKey: CompositeKey): Promise<string>;
|
|
1207
1479
|
protected InternalGetEntityRecordNames(info: EntityRecordNameInput[]): Promise<EntityRecordNameResult[]>;
|
|
1208
1480
|
/**
|
|
@@ -1290,7 +1562,16 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
|
|
|
1290
1562
|
private _wsClient;
|
|
1291
1563
|
private _wsClientCreatedAt;
|
|
1292
1564
|
private _socketStateSubject;
|
|
1565
|
+
private _socketReconnectedSubject;
|
|
1293
1566
|
private _isDisposingSocketIntentionally;
|
|
1567
|
+
/** Disarms the current client's pong watchdog. Each client owns its own timer. */
|
|
1568
|
+
private _disarmPongWatchdog;
|
|
1569
|
+
/**
|
|
1570
|
+
* Fires each time the socket comes back up after having dropped — never on the first
|
|
1571
|
+
* connect. Subscribers should treat it as "you may have missed events while you were
|
|
1572
|
+
* away; re-read authoritative state", because the push topic has no replay buffer.
|
|
1573
|
+
*/
|
|
1574
|
+
get SocketReconnected$(): Observable<void>;
|
|
1294
1575
|
/**
|
|
1295
1576
|
* Observable of the WebSocket (graphql-ws) connection state. Used by
|
|
1296
1577
|
* connectivity monitors as the primary signal for server reachability,
|
|
@@ -1301,6 +1582,11 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
|
|
|
1301
1582
|
* Current WebSocket connection state (synchronous snapshot).
|
|
1302
1583
|
*/
|
|
1303
1584
|
get SocketConnectionState(): SocketConnectionState;
|
|
1585
|
+
/**
|
|
1586
|
+
* How many WebSocket subscriptions are currently open. Zero means nothing is waiting on
|
|
1587
|
+
* push frames, so a socket that is down is delivering nothing and costing nothing.
|
|
1588
|
+
*/
|
|
1589
|
+
get ActiveSubscriptionCount(): number;
|
|
1304
1590
|
/**
|
|
1305
1591
|
* Force-dispose the current WebSocket client so the next subscription
|
|
1306
1592
|
* creates a fresh connection. Called by ServerConnectivityService after
|
|
@@ -1496,10 +1782,24 @@ declare class GraphQLDataProvider extends ProviderBase implements IEntityDataPro
|
|
|
1496
1782
|
* Setup the GraphQL client for the project using the provided configuration data.
|
|
1497
1783
|
*/
|
|
1498
1784
|
declare function SetupGraphQLClient(config: GraphQLProviderConfigData): Promise<GraphQLDataProvider>;
|
|
1785
|
+
/**
|
|
1786
|
+
* Connects and registers the GraphQL provider WITHOUT booting metadata. For anonymous/embedded
|
|
1787
|
+
* surfaces that only make their own GraphQL calls (and MJ's realtime runtime): no metadata
|
|
1788
|
+
* download, no current-user fetch, no LoggedIn event, no startup engines. Call
|
|
1789
|
+
* {@link SetupGraphQLClient} later to finish the full boot on the same instance.
|
|
1790
|
+
*
|
|
1791
|
+
* If the global provider already has metadata loaded this is a no-op that returns it, so it can
|
|
1792
|
+
* never downgrade a fully booted provider. Called again on a connected but unbooted provider, it
|
|
1793
|
+
* replaces `ConfigData` and keeps the session id; when the URL, token or API keys differ from the
|
|
1794
|
+
* ones the current client was built with, it rebuilds the client so requests carry the new
|
|
1795
|
+
* identity. The same applies when {@link SetupGraphQLClient} later runs with a login's config
|
|
1796
|
+
* (an anonymous connect upgraded to a signed-in user).
|
|
1797
|
+
*/
|
|
1798
|
+
declare function ConnectGraphQLClient(config: GraphQLProviderConfigData): Promise<GraphQLDataProvider>;
|
|
1499
1799
|
/** @deprecated Use {@link SetupGraphQLClient}. */
|
|
1500
1800
|
declare function setupGraphQLClient(config: GraphQLProviderConfigData): Promise<GraphQLDataProvider>;
|
|
1501
1801
|
|
|
1502
|
-
declare const PACKAGE_VERSION = "6.2.0-edge.
|
|
1802
|
+
declare const PACKAGE_VERSION = "6.2.0-edge.3";
|
|
1503
1803
|
|
|
1504
1804
|
declare class GraphQLTransactionGroup extends TransactionGroupBase {
|
|
1505
1805
|
private _provider;
|
|
@@ -2822,6 +3122,11 @@ interface RunViewSystemUserInput {
|
|
|
2822
3122
|
* Starting row number for pagination (optional, 0-based)
|
|
2823
3123
|
*/
|
|
2824
3124
|
StartRow?: number;
|
|
3125
|
+
/**
|
|
3126
|
+
* When true, binary fields (varbinary / bytea columns) are returned as base64 strings.
|
|
3127
|
+
* They are omitted by default; a binary field named in `Fields` is always returned. (optional)
|
|
3128
|
+
*/
|
|
3129
|
+
IncludeBinaryFields?: boolean;
|
|
2825
3130
|
}
|
|
2826
3131
|
/**
|
|
2827
3132
|
* Result row type for view execution results - represents a single data row
|
|
@@ -4030,6 +4335,16 @@ interface StartLiveKitAgentRoomSessionInput {
|
|
|
4030
4335
|
AgentSessionID?: string;
|
|
4031
4336
|
/** Turn-taking mode. */
|
|
4032
4337
|
TurnMode?: 'Passive' | 'Active' | 'Hybrid';
|
|
4338
|
+
/**
|
|
4339
|
+
* Start the agent able to bring someone into this room (a person who is offered the conversation, a phone number, or another
|
|
4340
|
+
* agent). Opt-in; honoured only when the server is configured for handoffs, otherwise the agent starts as usual.
|
|
4341
|
+
*/
|
|
4342
|
+
EnableHandoff?: boolean;
|
|
4343
|
+
/**
|
|
4344
|
+
* How the agent decides it was addressed: `Auto` (default — the model's own judgement when it is full-duplex,
|
|
4345
|
+
* name matching otherwise), `ModelSide`, or `Regex`.
|
|
4346
|
+
*/
|
|
4347
|
+
TurnAddressing?: 'Auto' | 'ModelSide' | 'Regex';
|
|
4033
4348
|
}
|
|
4034
4349
|
/** Result of starting an agent room session (includes a client token so the caller can immediately join). */
|
|
4035
4350
|
interface LiveKitAgentRoomSessionResult {
|
|
@@ -4081,6 +4396,76 @@ interface LiveKitRecordingResult {
|
|
|
4081
4396
|
*/
|
|
4082
4397
|
RecordingFileID?: string;
|
|
4083
4398
|
}
|
|
4399
|
+
/** The kinds of events a room's turn-taking log records. */
|
|
4400
|
+
type LiveKitTurnEventType = 'FloorGranted' | 'FloorReleased' | 'FloorDenied' | 'Yielded' | 'Backchannel' | 'HumanSpeech' | 'HumanPreempted' | 'LoopCapReached';
|
|
4401
|
+
/** One recorded turn-taking event. */
|
|
4402
|
+
interface LiveKitRoomTurnEvent {
|
|
4403
|
+
/** Monotonic per-room sequence number — poll with the last `Seq` seen to render only what is new. */
|
|
4404
|
+
Seq: number;
|
|
4405
|
+
/** Epoch-ms the event happened (server clock). */
|
|
4406
|
+
AtMs: number;
|
|
4407
|
+
/** What happened. */
|
|
4408
|
+
Type: LiveKitTurnEventType;
|
|
4409
|
+
/** The agent session the event is about, when it concerns one. */
|
|
4410
|
+
AgentSessionId?: string;
|
|
4411
|
+
/** For `Yielded`: the agent the floor was handed to. */
|
|
4412
|
+
ToAgentSessionId?: string;
|
|
4413
|
+
/** A short machine-readable reason (e.g. `HeldByOtherAgent`, `HumanSpeaking`, `LoopCapReached`). */
|
|
4414
|
+
Reason?: string;
|
|
4415
|
+
}
|
|
4416
|
+
/** One agent seated in a room, as the turn-taking state describes it. */
|
|
4417
|
+
interface LiveKitRoomTurnAgent {
|
|
4418
|
+
/** The agent's `MJ: AI Agent Sessions` id (matches the ids in {@link LiveKitRoomTurnState}). */
|
|
4419
|
+
AgentSessionID: string;
|
|
4420
|
+
/** The bridge row id (what {@link GraphQLLiveKitClient.StopAgentRoomSession} removes it by). */
|
|
4421
|
+
SessionBridgeID: string;
|
|
4422
|
+
/** The names the agent answers to; the first is its display name. */
|
|
4423
|
+
Names: string[];
|
|
4424
|
+
/** The configured turn-taking mode. */
|
|
4425
|
+
TurnMode: 'Passive' | 'Active' | 'Hybrid';
|
|
4426
|
+
/** How it decides it was addressed (after the model's capability was taken into account). */
|
|
4427
|
+
Addressing: 'ModelSide' | 'Regex';
|
|
4428
|
+
/** Whether its model is full-duplex (its speech runs through the floor gate). */
|
|
4429
|
+
FullDuplex: boolean;
|
|
4430
|
+
}
|
|
4431
|
+
/** A room's live turn-taking state. */
|
|
4432
|
+
interface LiveKitRoomTurnState {
|
|
4433
|
+
/** The room. */
|
|
4434
|
+
RoomId: string;
|
|
4435
|
+
/** The agent session ids seated in the room. */
|
|
4436
|
+
AgentSessionIds: string[];
|
|
4437
|
+
/** The facilitator's agent session id, or `null`. */
|
|
4438
|
+
FacilitatorAgentSessionId: string | null;
|
|
4439
|
+
/** The agent session holding the floor, or `null` when it is free. */
|
|
4440
|
+
FloorHolderAgentSessionId: string | null;
|
|
4441
|
+
/** Epoch-ms the holder took the floor, or `null`. */
|
|
4442
|
+
FloorHeldSinceMs: number | null;
|
|
4443
|
+
/** Whether a person is speaking right now. */
|
|
4444
|
+
HumanSpeaking: boolean;
|
|
4445
|
+
/** The agent session the floor is reserved for after a hand-off, or `null`. */
|
|
4446
|
+
PendingHandoffToAgentSessionId: string | null;
|
|
4447
|
+
/** Consecutive agent turns since a person last spoke. */
|
|
4448
|
+
ConsecutiveAgentTurns: number;
|
|
4449
|
+
/** The cap on consecutive agent turns for this room. */
|
|
4450
|
+
MaxConsecutiveAgentTurns: number;
|
|
4451
|
+
/** Whether the loop cap is reached — agents are passive until a person speaks. */
|
|
4452
|
+
LoopCapReached: boolean;
|
|
4453
|
+
/** How many backchannels the room has recorded. */
|
|
4454
|
+
BackchannelCount: number;
|
|
4455
|
+
/** The most recent events, oldest first. */
|
|
4456
|
+
RecentEvents: LiveKitRoomTurnEvent[];
|
|
4457
|
+
/** The agents seated in the room. */
|
|
4458
|
+
Agents: LiveKitRoomTurnAgent[];
|
|
4459
|
+
}
|
|
4460
|
+
/** Result of {@link GraphQLLiveKitClient.GetRoomTurnState}. */
|
|
4461
|
+
interface LiveKitRoomTurnStateResult {
|
|
4462
|
+
/** Whether the query succeeded. */
|
|
4463
|
+
Success: boolean;
|
|
4464
|
+
/** Error detail when {@link Success} is false. */
|
|
4465
|
+
ErrorMessage?: string;
|
|
4466
|
+
/** The room's turn-taking state, or `null` when the room holds no agents. */
|
|
4467
|
+
State: LiveKitRoomTurnState | null;
|
|
4468
|
+
}
|
|
4084
4469
|
/** Typed wrapper over the LiveKit room GraphQL mutations. */
|
|
4085
4470
|
declare class GraphQLLiveKitClient {
|
|
4086
4471
|
private _dataProvider;
|
|
@@ -4123,6 +4508,14 @@ declare class GraphQLLiveKitClient {
|
|
|
4123
4508
|
* @returns `true` when at least one invite was delivered.
|
|
4124
4509
|
*/
|
|
4125
4510
|
InviteUsers(roomName: string, userIDs: string[]): Promise<boolean>;
|
|
4511
|
+
/**
|
|
4512
|
+
* Reads a room's live turn-taking state — who holds the floor, whether a person is speaking, any pending
|
|
4513
|
+
* hand-off, the agent-to-agent loop-cap progress, the most recent floor events, and who is seated. Poll it
|
|
4514
|
+
* (about once a second) to drive a turn-taking display. Never throws; a failure resolves `{ Success: false }`.
|
|
4515
|
+
*
|
|
4516
|
+
* @param roomName The LiveKit room.
|
|
4517
|
+
*/
|
|
4518
|
+
GetRoomTurnState(roomName: string): Promise<LiveKitRoomTurnStateResult>;
|
|
4126
4519
|
/**
|
|
4127
4520
|
* Fetches active Realtime models with each driver's supported voices — populates the dev model/voice
|
|
4128
4521
|
* picker. Best-effort: any failure resolves to `[]` so the picker simply offers no overrides.
|
|
@@ -4149,6 +4542,96 @@ declare class GraphQLLiveKitClient {
|
|
|
4149
4542
|
private runRecordingMutation;
|
|
4150
4543
|
}
|
|
4151
4544
|
|
|
4545
|
+
/**
|
|
4546
|
+
* Typed client for the **human handoff** GraphQL surface (MJServer `HumanHandoffResolver`): the person-at-a-console side of a
|
|
4547
|
+
* room handoff. An AI agent in a LiveKit room (a phone call that arrived through SIP, or a web room) can ask for a person to
|
|
4548
|
+
* take the conversation over; that person is OFFERED it and may accept or decline. Every call is scoped to the signed-in
|
|
4549
|
+
* user server-side, so a user lists, accepts and declines only their own offers.
|
|
4550
|
+
*
|
|
4551
|
+
* Accepting returns the room to join; the console then joins it through the same LiveKit token path the Meet room uses
|
|
4552
|
+
* (`GraphQLLiveKitClient.MintClientToken`), and the AI leaves once the person is in the room.
|
|
4553
|
+
*
|
|
4554
|
+
* @example
|
|
4555
|
+
* ```typescript
|
|
4556
|
+
* const handoff = new GraphQLHandoffClient(GraphQLDataProvider.Instance);
|
|
4557
|
+
* const offers = await handoff.GetMyOffers();
|
|
4558
|
+
* handoff.ObserveOfferChanges().subscribe((change) => refresh(change));
|
|
4559
|
+
* const accepted = await handoff.AcceptOffer(offers[0].OfferID);
|
|
4560
|
+
* if (accepted.Success) { joinRoom(accepted.RoomName); }
|
|
4561
|
+
* ```
|
|
4562
|
+
*/
|
|
4563
|
+
/** Where an offer stands. */
|
|
4564
|
+
type HandoffOfferStatus = 'Pending' | 'Accepted' | 'Declined' | 'Expired' | 'Cancelled';
|
|
4565
|
+
/** One conversation offered to the signed-in user. */
|
|
4566
|
+
interface HandoffOfferInfo {
|
|
4567
|
+
OfferID: string;
|
|
4568
|
+
RoomName: string;
|
|
4569
|
+
/** `warm` (the AI introduces you, then leaves) or `blind` (the AI leaves as soon as you join). */
|
|
4570
|
+
Mode: string;
|
|
4571
|
+
/** The AI's summary of the conversation so far. */
|
|
4572
|
+
Summary: string;
|
|
4573
|
+
/** Who is on the other end (a masked number, "Web visitor"). */
|
|
4574
|
+
CallerLabel: string;
|
|
4575
|
+
/** The AI agent that is in the room. */
|
|
4576
|
+
AgentName: string;
|
|
4577
|
+
Status: HandoffOfferStatus;
|
|
4578
|
+
/** ISO-8601 UTC. */
|
|
4579
|
+
CreatedAt: string;
|
|
4580
|
+
/** ISO-8601 UTC; after this the offer can no longer be accepted. */
|
|
4581
|
+
ExpiresAt: string;
|
|
4582
|
+
/** The MJ interaction ID associated with this conversation/room, if known. */
|
|
4583
|
+
InteractionID?: string | null;
|
|
4584
|
+
}
|
|
4585
|
+
/** One change to an offer, pushed live. */
|
|
4586
|
+
interface HandoffOfferChange {
|
|
4587
|
+
/** `offered` for a new offer; `updated` when it was accepted, declined, expired or cancelled. */
|
|
4588
|
+
Kind: 'offered' | 'updated';
|
|
4589
|
+
Offer: HandoffOfferInfo;
|
|
4590
|
+
}
|
|
4591
|
+
/** Result of accepting an offer. */
|
|
4592
|
+
interface AcceptHandoffOfferResult {
|
|
4593
|
+
Success: boolean;
|
|
4594
|
+
ErrorMessage?: string;
|
|
4595
|
+
/** The room to join. Empty on failure. */
|
|
4596
|
+
RoomName: string;
|
|
4597
|
+
Offer?: HandoffOfferInfo;
|
|
4598
|
+
}
|
|
4599
|
+
/** Result of declining an offer. */
|
|
4600
|
+
interface DeclineHandoffOfferResult {
|
|
4601
|
+
Success: boolean;
|
|
4602
|
+
ErrorMessage?: string;
|
|
4603
|
+
}
|
|
4604
|
+
declare class GraphQLHandoffClient {
|
|
4605
|
+
private readonly _dataProvider;
|
|
4606
|
+
/**
|
|
4607
|
+
* @param dataProvider The GraphQL data provider that carries the requests (it holds the signed-in session).
|
|
4608
|
+
*/
|
|
4609
|
+
constructor(dataProvider: GraphQLDataProvider);
|
|
4610
|
+
/**
|
|
4611
|
+
* The signed-in user's offers: pending ones, plus ones that resolved recently enough to still be shown. Best-effort: a
|
|
4612
|
+
* transport failure is logged and resolves to an empty list so the console shows "nothing waiting" rather than throwing.
|
|
4613
|
+
*/
|
|
4614
|
+
GetMyOffers(): Promise<HandoffOfferInfo[]>;
|
|
4615
|
+
/**
|
|
4616
|
+
* Accepts an offer. The server authorises it against the offer's target, so another user's offer (or a missing, expired or
|
|
4617
|
+
* cancelled one) answers `Success: false`. Never throws.
|
|
4618
|
+
*
|
|
4619
|
+
* @param offerID The offer to accept.
|
|
4620
|
+
*/
|
|
4621
|
+
AcceptOffer(offerID: string): Promise<AcceptHandoffOfferResult>;
|
|
4622
|
+
/**
|
|
4623
|
+
* Declines an offer, so the AI can fall back (the person's phone, or carrying on). Never throws.
|
|
4624
|
+
*
|
|
4625
|
+
* @param offerID The offer to decline.
|
|
4626
|
+
*/
|
|
4627
|
+
DeclineOffer(offerID: string): Promise<DeclineHandoffOfferResult>;
|
|
4628
|
+
/**
|
|
4629
|
+
* Live changes to the signed-in user's offers. The server delivers only this user's. The stream completes when the session's
|
|
4630
|
+
* token is refreshed (re-subscribe to continue), as every MJ subscription does.
|
|
4631
|
+
*/
|
|
4632
|
+
ObserveOfferChanges(): Observable<HandoffOfferChange>;
|
|
4633
|
+
}
|
|
4634
|
+
|
|
4152
4635
|
/**
|
|
4153
4636
|
* Input for the `GenerateSeedTaxonomy` GraphQL mutation.
|
|
4154
4637
|
*
|
|
@@ -4472,6 +4955,21 @@ interface FireAndForgetConfig<TResult> {
|
|
|
4472
4955
|
* Use this to forward progress updates to UI callbacks.
|
|
4473
4956
|
*/
|
|
4474
4957
|
onMessage?: (parsed: Record<string, unknown>) => void;
|
|
4958
|
+
/**
|
|
4959
|
+
* Optional predicate deciding whether a PubSub message belongs to THIS operation.
|
|
4960
|
+
*
|
|
4961
|
+
* The push-status subscription is per-SESSION, not per-operation, so without this every
|
|
4962
|
+
* message for every concurrent run resets every pending operation's idle timer. With
|
|
4963
|
+
* several agents in flight, one chatty run holds a dead run's timer open indefinitely —
|
|
4964
|
+
* the "idle" window silently means "the whole session went quiet", which is not what any
|
|
4965
|
+
* caller intends (MJ #4222).
|
|
4966
|
+
*
|
|
4967
|
+
* MUST FAIL OPEN: return `true` for anything not positively identifiable as another
|
|
4968
|
+
* operation's. Wrongly ignoring a message that IS ours shortens the window and causes a
|
|
4969
|
+
* spurious reconcile; wrongly accepting one that is not merely preserves the old
|
|
4970
|
+
* behaviour. When omitted, every message counts as activity, exactly as before.
|
|
4971
|
+
*/
|
|
4972
|
+
isRelevantMessage?: (parsed: Record<string, unknown>) => boolean;
|
|
4475
4973
|
/**
|
|
4476
4974
|
* Optional reconciliation hook invoked when the idle timer expires (no message
|
|
4477
4975
|
* received within the idle window) or the PubSub stream drops. Should query the
|
|
@@ -5469,6 +5967,11 @@ declare class BrowserStorageProviderBase implements ILocalStorageProvider {
|
|
|
5469
5967
|
* See {@link ILocalStorageProvider.SharesReferences}.
|
|
5470
5968
|
*/
|
|
5471
5969
|
get SharesReferences(): boolean;
|
|
5970
|
+
/**
|
|
5971
|
+
* `false` — the base tier is a `Map` on the heap, which dies with the page. Subclasses with a
|
|
5972
|
+
* real backend override this. See {@link ILocalStorageProvider.SupportsCrossProcessPersistence}.
|
|
5973
|
+
*/
|
|
5974
|
+
get SupportsCrossProcessPersistence(): boolean;
|
|
5472
5975
|
private _storage;
|
|
5473
5976
|
/**
|
|
5474
5977
|
* Gets or creates a category map
|
|
@@ -5538,6 +6041,13 @@ declare class BrowserIndexedDBStorageProvider extends BrowserStorageProviderBase
|
|
|
5538
6041
|
* the DB is unreachable), so there is no fallback path that could reintroduce sharing.
|
|
5539
6042
|
*/
|
|
5540
6043
|
get SharesReferences(): boolean;
|
|
6044
|
+
/**
|
|
6045
|
+
* `true` — IndexedDB outlives the page. Unlike the localStorage provider this class never
|
|
6046
|
+
* defers to the in-memory base tier, so there is no fallback that would make a stored
|
|
6047
|
+
* snapshot unreadable on the next load.
|
|
6048
|
+
* See {@link ILocalStorageProvider.SupportsCrossProcessPersistence}.
|
|
6049
|
+
*/
|
|
6050
|
+
get SupportsCrossProcessPersistence(): boolean;
|
|
5541
6051
|
private dbPromise;
|
|
5542
6052
|
private _dbReady;
|
|
5543
6053
|
constructor();
|
|
@@ -5942,6 +6452,169 @@ declare class GraphQLIntegrationClient {
|
|
|
5942
6452
|
private handleError;
|
|
5943
6453
|
}
|
|
5944
6454
|
|
|
5945
|
-
|
|
5946
|
-
|
|
6455
|
+
/** One persisted step of an agent run, as returned by the durable tail query. */
|
|
6456
|
+
interface ConversationRunEvent {
|
|
6457
|
+
/** Monotonic position within the run — the cursor value to page from. */
|
|
6458
|
+
Seq: number;
|
|
6459
|
+
StepType: string;
|
|
6460
|
+
StepName: string;
|
|
6461
|
+
Status: string;
|
|
6462
|
+
Success?: boolean;
|
|
6463
|
+
ErrorMessage?: string;
|
|
6464
|
+
StartedAt: string;
|
|
6465
|
+
CompletedAt?: string;
|
|
6466
|
+
}
|
|
6467
|
+
/** Result of one tail call. */
|
|
6468
|
+
interface ConversationTailResult {
|
|
6469
|
+
Success: boolean;
|
|
6470
|
+
Message: string;
|
|
6471
|
+
Events: ConversationRunEvent[];
|
|
6472
|
+
/** Cursor to pass as `sinceSeq` next time. Never rewinds. */
|
|
6473
|
+
LatestSeq: number;
|
|
6474
|
+
/** True while the run is still executing. False means terminal — stop tailing. */
|
|
6475
|
+
IsInFlight: boolean;
|
|
6476
|
+
RunID?: string;
|
|
6477
|
+
RunStatus?: string;
|
|
6478
|
+
/** The run's persisted result, populated only once the run is terminal. */
|
|
6479
|
+
FinalPayload?: string;
|
|
6480
|
+
/** `ConversationDetail.Status` — what the chat UI renders from. */
|
|
6481
|
+
DetailStatus?: string;
|
|
6482
|
+
}
|
|
6483
|
+
/**
|
|
6484
|
+
* Client for the durable, resumable read of a conversation's agent-run progress (MJ #4222).
|
|
6485
|
+
*
|
|
6486
|
+
* The `statusUpdates` subscription is the only live path a conversation has and it has no replay:
|
|
6487
|
+
* the server topic is an in-memory PubSub and the client subject is unbuffered. Anything published
|
|
6488
|
+
* while the socket was half-open is gone, and the client cannot tell "nothing happened" from
|
|
6489
|
+
* "I missed everything". This query is the durable counterpart — a client keeps the `LatestSeq`
|
|
6490
|
+
* it has seen and re-reads from there after any interruption.
|
|
6491
|
+
*
|
|
6492
|
+
* Runs over plain HTTP, so it works while the WebSocket is still dead. That is the property the
|
|
6493
|
+
* whole recovery path depends on.
|
|
6494
|
+
*/
|
|
6495
|
+
declare class GraphQLConversationClient {
|
|
6496
|
+
private _dataProvider;
|
|
6497
|
+
constructor(dataProvider: GraphQLDataProvider);
|
|
6498
|
+
/**
|
|
6499
|
+
* Read agent-run events for a conversation detail from a cursor forward.
|
|
6500
|
+
*
|
|
6501
|
+
* @param conversationDetailID The message to tail.
|
|
6502
|
+
* @param sinceSeq Highest `Seq` already seen; 0 or omitted reads from the start.
|
|
6503
|
+
* @returns Never throws — a transport failure comes back as `Success: false` with the caller's
|
|
6504
|
+
* cursor preserved, because this IS the recovery path and throwing from it would break the
|
|
6505
|
+
* reconciliation it exists to serve.
|
|
6506
|
+
*/
|
|
6507
|
+
TailConversationEvents(conversationDetailID: string, sinceSeq?: number): Promise<ConversationTailResult>;
|
|
6508
|
+
private failure;
|
|
6509
|
+
}
|
|
6510
|
+
|
|
6511
|
+
interface MeetingParticipantInfo {
|
|
6512
|
+
ID: string;
|
|
6513
|
+
MeetingID: string;
|
|
6514
|
+
UserID?: string;
|
|
6515
|
+
UserName?: string;
|
|
6516
|
+
UserEmail?: string;
|
|
6517
|
+
AgentID?: string;
|
|
6518
|
+
AgentName?: string;
|
|
6519
|
+
ExternalName?: string;
|
|
6520
|
+
ExternalEmail?: string;
|
|
6521
|
+
ExternalPhone?: string;
|
|
6522
|
+
Role: 'Host' | 'CoHost' | 'Attendee' | 'Agent';
|
|
6523
|
+
InviteStatus: 'Accepted' | 'Declined' | 'Invited' | 'Tentative';
|
|
6524
|
+
JoinedAt?: string;
|
|
6525
|
+
LeftAt?: string;
|
|
6526
|
+
}
|
|
6527
|
+
interface MeetingInfo {
|
|
6528
|
+
ID: string;
|
|
6529
|
+
Title: string;
|
|
6530
|
+
Description?: string;
|
|
6531
|
+
HostUserID: string;
|
|
6532
|
+
HostUserName?: string;
|
|
6533
|
+
RoomName: string;
|
|
6534
|
+
Status: 'Scheduled' | 'Live' | 'Ended' | 'Cancelled';
|
|
6535
|
+
ScheduledStartAt?: string;
|
|
6536
|
+
ScheduledEndAt?: string;
|
|
6537
|
+
StartedAt?: string;
|
|
6538
|
+
EndedAt?: string;
|
|
6539
|
+
AllowPhoneDialIn: boolean;
|
|
6540
|
+
DialInPhoneNumberID?: string;
|
|
6541
|
+
DialInPhoneNumber?: string;
|
|
6542
|
+
DialInCode?: string;
|
|
6543
|
+
RecordingPolicy: 'Off' | 'Allowed' | 'Automatic';
|
|
6544
|
+
ConversationID?: string;
|
|
6545
|
+
Participants?: MeetingParticipantInfo[];
|
|
6546
|
+
CreatedAt: string;
|
|
6547
|
+
UpdatedAt: string;
|
|
6548
|
+
}
|
|
6549
|
+
interface DialInPhoneNumberInfo {
|
|
6550
|
+
ID: string;
|
|
6551
|
+
Number: string;
|
|
6552
|
+
Label?: string;
|
|
6553
|
+
}
|
|
6554
|
+
interface MeetingParticipantInput {
|
|
6555
|
+
UserID?: string;
|
|
6556
|
+
AgentID?: string;
|
|
6557
|
+
ExternalName?: string;
|
|
6558
|
+
ExternalEmail?: string;
|
|
6559
|
+
ExternalPhone?: string;
|
|
6560
|
+
Role?: string;
|
|
6561
|
+
}
|
|
6562
|
+
interface CreateMeetingInput {
|
|
6563
|
+
Title: string;
|
|
6564
|
+
Description?: string;
|
|
6565
|
+
ScheduledStartAt?: Date;
|
|
6566
|
+
ScheduledEndAt?: Date;
|
|
6567
|
+
AllowPhoneDialIn?: boolean;
|
|
6568
|
+
DialInPhoneNumberID?: string;
|
|
6569
|
+
RecordingPolicy?: string;
|
|
6570
|
+
Participants?: MeetingParticipantInput[];
|
|
6571
|
+
}
|
|
6572
|
+
interface UpdateMeetingInput {
|
|
6573
|
+
MeetingID: string;
|
|
6574
|
+
Title?: string;
|
|
6575
|
+
Description?: string;
|
|
6576
|
+
ScheduledStartAt?: Date;
|
|
6577
|
+
ScheduledEndAt?: Date;
|
|
6578
|
+
AllowPhoneDialIn?: boolean;
|
|
6579
|
+
DialInPhoneNumberID?: string;
|
|
6580
|
+
RecordingPolicy?: string;
|
|
6581
|
+
Participants?: MeetingParticipantInput[];
|
|
6582
|
+
}
|
|
6583
|
+
interface RSVPMeetingInput {
|
|
6584
|
+
MeetingID: string;
|
|
6585
|
+
InviteStatus: 'Accepted' | 'Declined' | 'Tentative';
|
|
6586
|
+
}
|
|
6587
|
+
interface MeetingResult {
|
|
6588
|
+
Success: boolean;
|
|
6589
|
+
ErrorMessage?: string;
|
|
6590
|
+
Meeting?: MeetingInfo;
|
|
6591
|
+
}
|
|
6592
|
+
interface StartMeetingResult {
|
|
6593
|
+
Success: boolean;
|
|
6594
|
+
ErrorMessage?: string;
|
|
6595
|
+
Meeting?: MeetingInfo;
|
|
6596
|
+
RoomName?: string;
|
|
6597
|
+
ClientToken?: string;
|
|
6598
|
+
}
|
|
6599
|
+
/**
|
|
6600
|
+
* Typed client for the MemberJunction **Meeting** GraphQL surface (MJServer `MeetingResolver`).
|
|
6601
|
+
*/
|
|
6602
|
+
declare class GraphQLMeetingClient {
|
|
6603
|
+
private _dataProvider;
|
|
6604
|
+
constructor(dataProvider?: GraphQLDataProvider | IMetadataProvider);
|
|
6605
|
+
GetMeeting(id: string): Promise<MeetingInfo | null>;
|
|
6606
|
+
MyMeetings(status?: string): Promise<MeetingInfo[]>;
|
|
6607
|
+
Meeting(id: string): Promise<MeetingInfo | null>;
|
|
6608
|
+
MeetingParticipants(meetingID: string): Promise<MeetingParticipantInfo[]>;
|
|
6609
|
+
AvailableDialInPhoneNumbers(): Promise<DialInPhoneNumberInfo[]>;
|
|
6610
|
+
CreateMeeting(input: CreateMeetingInput): Promise<MeetingResult>;
|
|
6611
|
+
UpdateMeeting(input: UpdateMeetingInput): Promise<MeetingResult>;
|
|
6612
|
+
StartMeeting(meetingID: string): Promise<StartMeetingResult>;
|
|
6613
|
+
EndMeeting(meetingID: string): Promise<MeetingResult>;
|
|
6614
|
+
CancelMeeting(meetingID: string): Promise<MeetingResult>;
|
|
6615
|
+
RSVPMeeting(input: RSVPMeetingInput): Promise<MeetingResult>;
|
|
6616
|
+
}
|
|
6617
|
+
|
|
6618
|
+
export { ActionItemInput, ActionItemOutput, BrowserIndexedDBStorageProvider, BrowserStorageProviderBase, ConnectGraphQLClient, FieldMapper, FireAndForgetHelper, GetDataOutput, GraphQLAIClient, GraphQLActionClient, GraphQLClassifyClient, GraphQLClusterClient, GraphQLComponentRegistryClient, GraphQLConversationClient, GraphQLDataProvider, GraphQLEncryptionClient, GraphQLFileStorageClient, GraphQLHandoffClient, GraphQLIntegrationClient, GraphQLListsClient, GraphQLLiveKitClient, GraphQLMeetingClient, GraphQLProviderConfigData, GraphQLSearchClient, GraphQLSystemUserClient, GraphQLTestingClient, GraphQLTransactionGroup, GraphQLVersionHistoryClient, PACKAGE_VERSION, RoleInput, RolesAndUsersInput, SafeGraphQLError, SanitizeGraphQLError, SetupGraphQLClient, SimpleRemoteEntity, SimpleRemoteEntityField, SimpleRemoteEntityOutput, SyncDataAction, SyncDataResult, SyncRolesAndUsersResult, ToSafeGraphQLError, UserInput, setupGraphQLClient };
|
|
6619
|
+
export type { AcceptHandoffOfferResult, AccountSearchResult, ApplyAllEntityMapCreated, ApplyAllResult, AuthenticationErrorCallback, AutotagPipelineResult, CheckEntityPermissionsResult, ClusterAnalysisInfo, ClusterAnalysisMetrics, ClusterAnalysisPoint, ComponentDependencyTree, ComponentSpecWithHash, ConnectionTestGraphQLResult, ConversationRunEvent, ConversationTailResult, CopyBetweenAccountsResult, CreateAPIKeyParams, CreateAPIKeyResult, CreateMeetingInput, CreatePreAuthUploadUrlResult, CreateQueryInput, CreateQueryResult, CreateVersionLabelParams, CreateVersionLabelProgress, CreateVersionLabelResult, DeclineHandoffOfferResult, DefaultConfigResult, DefaultFieldMappingResult, DefaultObjectConfigResult, DeleteQueryOptionsInput, DeleteQueryResult, DialInPhoneNumberInfo, DiscoveredFieldResult, DiscoveredObjectResult, DiscoveryResult, DuplicateEntryCandidate, DuplicateEntryCheckParams, DuplicateEntryCheckResult, DuplicateEntryCheckStatus, EmbedTextParams, EmbedTextResult, EntityPermissionResultItem, ExecuteSimplePromptParams, FileSearchOptions, FileSearchResult, FireAndForgetConfig, GenerateSeedTaxonomyInput, GetQueryDataByNameSystemUserInput, GetQueryDataSystemUserInput, GetRegistryComponentParams, HandoffOfferChange, HandoffOfferInfo, HandoffOfferStatus, LiveKitAgentRoomSessionResult, LiveKitClientTokenResult, LiveKitRecordingResult, LiveKitRoomTurnAgent, LiveKitRoomTurnEvent, LiveKitRoomTurnState, LiveKitRoomTurnStateResult, LiveKitTurnEventType, MJMetadataDB, MJQueryEntity, MJ_MetadataDB, MeetingInfo, MeetingParticipantInfo, MeetingParticipantInput, MeetingResult, MintLiveKitClientTokenInput, PreviewDataResult, PreviewRecordResult, PreviewSearchSystemUserInput, QueryDependencySpecClientInput, QueryField, QueryMutationQueryData, QueryMutationResult, QueryParameter, QueryParameterHintInput, QueryPermission, QueryPermissionInput, RSVPMeetingInput, RealtimeModelVoices, RealtimeVoiceOption, RegistryComponentSearchResult, RevokeAPIKeyResult, RunAIAgentFromConversationDetailParams, RunAIPromptParams, RunAIPromptResult, RunClusterAnalysisInput, RunClusterAnalysisResult, RunDecisionParams, RunDecisionResult, RunDynamicViewSystemUserInput, RunQuerySystemUserResult, RunTestParams, RunTestResult, RunTestSuiteParams, RunTestSuiteResult, RunViewByIDSystemUserInput, RunViewByNameSystemUserInput, RunViewSystemUserInput, RunViewSystemUserResult, RunViewSystemUserResultRow, SanitizedGraphQLError, SanitizedGraphQLErrorDetail, SchemaPreviewFile, SchemaPreviewObjectInput, SchemaPreviewResult, SearchAcrossAccountsResult, SearchClientFilters, SearchClientParams, SearchClientProviderInfo, SearchClientResponse, SearchClientResultItem, SearchKnowledgeSystemUserInput, SearchRegistryComponentsParams, SearchScoreBreakdown, SearchSourceCounts, SeedTaxonomyNode, SeedTaxonomyResult, SimplePromptResult, SocketConnectionState, SourceObjectListItem, SourceObjectSelectionInput, StartLiveKitAgentRoomSessionInput, StartMeetingResult, StorageListResult, StorageObjectMetadata, TaskGraphFrameEvent, TestExecutionProgress, TestQuerySQLClientInput, TestQuerySQLClientResult, UpdateMeetingInput, UpdateQueryInput, UpdateQueryResult, UploadFileInput, UploadFileResult, VariableShape, VectorizeEntityParams, VectorizeEntityResult };
|
|
5947
6620
|
//# sourceMappingURL=index.d.cts.map
|