@xpert-ai/xpert-sdk 0.22.0 → 0.23.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.
- package/dist/conversation-resource-types.d.ts +10 -0
- package/dist/conversation-resource-types.js +3 -0
- package/dist/conversation-resource-types.js.map +1 -0
- package/dist/conversation-resource-types.mjs +3 -0
- package/dist/conversation-resource-types.mjs.map +1 -0
- package/dist/group-resource-links.d.ts +34 -0
- package/dist/group-resource-links.js +71 -0
- package/dist/group-resource-links.js.map +1 -0
- package/dist/group-resource-links.mjs +71 -0
- package/dist/group-resource-links.mjs.map +1 -0
- package/dist/group-types.d.ts +31 -5
- package/dist/groups.d.ts +3 -1
- package/dist/groups.js +52 -26
- package/dist/groups.js.map +1 -1
- package/dist/groups.mjs +52 -26
- package/dist/groups.mjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -0
- package/dist/tests/group-reply-stages.test.d.ts +1 -0
- package/dist/tests/group-reply-stages.test.js +50 -0
- package/dist/tests/group-reply-stages.test.js.map +1 -0
- package/dist/tests/group-reply-stages.test.mjs +50 -0
- package/dist/tests/group-reply-stages.test.mjs.map +1 -0
- package/dist/tests/group-resource-links.test.d.ts +1 -0
- package/dist/tests/group-resource-links.test.js +94 -0
- package/dist/tests/group-resource-links.test.js.map +1 -0
- package/dist/tests/group-resource-links.test.mjs +94 -0
- package/dist/tests/group-resource-links.test.mjs.map +1 -0
- package/dist/tests/groups.test.js +70 -3
- package/dist/tests/groups.test.js.map +1 -1
- package/dist/tests/groups.test.mjs +70 -3
- package/dist/tests/groups.test.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Stable locator in the current authorized conversation. IDs never carry permissions or change Project scope. */
|
|
2
|
+
export type ConversationResourceTarget = {
|
|
3
|
+
kind: 'project-content';
|
|
4
|
+
id: string;
|
|
5
|
+
} | {
|
|
6
|
+
kind: 'group-reference';
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
/** Host-owned navigation through the target's native authorization adapter; no arbitrary URLs or source Project IDs. */
|
|
10
|
+
export declare const WORKBENCH_RESOURCE_OPEN_COMMAND = "workbench.resource.open";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-resource-types.js","sourceRoot":"","sources":["../src/conversation-resource-types.ts"],"names":[],"mappings":"AAKA,wHAAwH;AACxH,MAAM,CAAC,MAAM,+BAA+B,GAAG,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-resource-types.mjs","sourceRoot":"","sources":["../src/conversation-resource-types.ts"],"names":[],"mappings":"AAKA,wHAAwH;AACxH,MAAM,CAAC,MAAM,+BAA+B,GAAG,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ChatGroupEvent, ChatGroupMessage, ChatGroupResourceLink, ChatGroupResourceOpenRequest, ChatGroupSnapshot } from './group-types.js';
|
|
2
|
+
type LegacyResourceLink = Pick<ChatGroupResourceLink, 'projectId' | 'title'> & ({
|
|
3
|
+
kind?: 'group-reference';
|
|
4
|
+
referenceId: string;
|
|
5
|
+
} | {
|
|
6
|
+
kind: 'project-content';
|
|
7
|
+
contentId: string;
|
|
8
|
+
});
|
|
9
|
+
export type GroupResourceLinkWire = ChatGroupResourceLink | LegacyResourceLink;
|
|
10
|
+
export type GroupMessageWire = Omit<ChatGroupMessage, 'communication'> & {
|
|
11
|
+
communication: Omit<ChatGroupMessage['communication'], 'resourceLinks'> & {
|
|
12
|
+
resourceLinks?: GroupResourceLinkWire[];
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export type GroupSnapshotWire = Omit<ChatGroupSnapshot, 'messages'> & {
|
|
16
|
+
messages: GroupMessageWire[];
|
|
17
|
+
};
|
|
18
|
+
export type GroupEventWire = Exclude<ChatGroupEvent, {
|
|
19
|
+
type: 'snapshot' | 'resource_open';
|
|
20
|
+
}> | {
|
|
21
|
+
type: 'snapshot';
|
|
22
|
+
snapshot: GroupSnapshotWire;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'resource_open';
|
|
25
|
+
request: GroupResourceLinkWire & Pick<ChatGroupResourceOpenRequest, 'requestId' | 'clientMessageId'>;
|
|
26
|
+
};
|
|
27
|
+
export declare function isResourceUuid(value: unknown): value is string;
|
|
28
|
+
/** Reject ambiguous locators instead of choosing between old and new identities. */
|
|
29
|
+
export declare function parseGroupResourceLink(value: unknown): ChatGroupResourceLink | null;
|
|
30
|
+
export declare function isGroupResourceLinkWire(value: unknown): value is GroupResourceLinkWire;
|
|
31
|
+
export declare function isCanonicalResourceLink(value: GroupResourceLinkWire): value is ChatGroupResourceLink;
|
|
32
|
+
export declare function normalizeGroupMessage(message: GroupMessageWire): ChatGroupMessage;
|
|
33
|
+
export declare function normalizeGroupSnapshot(snapshot: GroupSnapshotWire): ChatGroupSnapshot;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export function isResourceUuid(value) {
|
|
2
|
+
return (typeof value === 'string' &&
|
|
3
|
+
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value));
|
|
4
|
+
}
|
|
5
|
+
/** Reject ambiguous locators instead of choosing between old and new identities. */
|
|
6
|
+
export function parseGroupResourceLink(value) {
|
|
7
|
+
if (!value ||
|
|
8
|
+
typeof value !== 'object' ||
|
|
9
|
+
!('projectId' in value) ||
|
|
10
|
+
!isResourceUuid(value.projectId) ||
|
|
11
|
+
!('title' in value) ||
|
|
12
|
+
typeof value.title !== 'string' ||
|
|
13
|
+
value.title.length > 200)
|
|
14
|
+
return null;
|
|
15
|
+
const base = { projectId: value.projectId, title: value.title };
|
|
16
|
+
if ('resource' in value) {
|
|
17
|
+
if ('kind' in value || 'referenceId' in value || 'contentId' in value)
|
|
18
|
+
return null;
|
|
19
|
+
const resource = value.resource;
|
|
20
|
+
if (!resource ||
|
|
21
|
+
typeof resource !== 'object' ||
|
|
22
|
+
!('kind' in resource) ||
|
|
23
|
+
!('id' in resource) ||
|
|
24
|
+
!isResourceUuid(resource.id) ||
|
|
25
|
+
(resource.kind !== 'group-reference' && resource.kind !== 'project-content') ||
|
|
26
|
+
Object.keys(resource).some((key) => key !== 'kind' && key !== 'id'))
|
|
27
|
+
return null;
|
|
28
|
+
return { ...base, resource: { kind: resource.kind, id: resource.id } };
|
|
29
|
+
}
|
|
30
|
+
if ((!('kind' in value) || value.kind === 'group-reference') &&
|
|
31
|
+
'referenceId' in value &&
|
|
32
|
+
isResourceUuid(value.referenceId) &&
|
|
33
|
+
!('contentId' in value))
|
|
34
|
+
return { ...base, resource: { kind: 'group-reference', id: value.referenceId } };
|
|
35
|
+
if ('kind' in value &&
|
|
36
|
+
value.kind === 'project-content' &&
|
|
37
|
+
'contentId' in value &&
|
|
38
|
+
isResourceUuid(value.contentId) &&
|
|
39
|
+
!('referenceId' in value))
|
|
40
|
+
return { ...base, resource: { kind: 'project-content', id: value.contentId } };
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
export function isGroupResourceLinkWire(value) {
|
|
44
|
+
return parseGroupResourceLink(value) !== null;
|
|
45
|
+
}
|
|
46
|
+
export function isCanonicalResourceLink(value) {
|
|
47
|
+
return 'resource' in value;
|
|
48
|
+
}
|
|
49
|
+
export function normalizeGroupMessage(message) {
|
|
50
|
+
const { resourceLinks, ...communication } = message.communication;
|
|
51
|
+
if (resourceLinks === undefined)
|
|
52
|
+
return { ...message, communication };
|
|
53
|
+
if (!Array.isArray(resourceLinks))
|
|
54
|
+
throw new Error('Invalid group resource links');
|
|
55
|
+
return {
|
|
56
|
+
...message,
|
|
57
|
+
communication: {
|
|
58
|
+
...communication,
|
|
59
|
+
resourceLinks: resourceLinks.map((link) => {
|
|
60
|
+
const parsed = parseGroupResourceLink(link);
|
|
61
|
+
if (!parsed)
|
|
62
|
+
throw new Error('Invalid group resource link');
|
|
63
|
+
return parsed;
|
|
64
|
+
}),
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export function normalizeGroupSnapshot(snapshot) {
|
|
69
|
+
return { ...snapshot, messages: snapshot.messages.map(normalizeGroupMessage) };
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=group-resource-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-resource-links.js","sourceRoot":"","sources":["../src/group-resource-links.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export function isResourceUuid(value) {
|
|
2
|
+
return (typeof value === 'string' &&
|
|
3
|
+
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(value));
|
|
4
|
+
}
|
|
5
|
+
/** Reject ambiguous locators instead of choosing between old and new identities. */
|
|
6
|
+
export function parseGroupResourceLink(value) {
|
|
7
|
+
if (!value ||
|
|
8
|
+
typeof value !== 'object' ||
|
|
9
|
+
!('projectId' in value) ||
|
|
10
|
+
!isResourceUuid(value.projectId) ||
|
|
11
|
+
!('title' in value) ||
|
|
12
|
+
typeof value.title !== 'string' ||
|
|
13
|
+
value.title.length > 200)
|
|
14
|
+
return null;
|
|
15
|
+
const base = { projectId: value.projectId, title: value.title };
|
|
16
|
+
if ('resource' in value) {
|
|
17
|
+
if ('kind' in value || 'referenceId' in value || 'contentId' in value)
|
|
18
|
+
return null;
|
|
19
|
+
const resource = value.resource;
|
|
20
|
+
if (!resource ||
|
|
21
|
+
typeof resource !== 'object' ||
|
|
22
|
+
!('kind' in resource) ||
|
|
23
|
+
!('id' in resource) ||
|
|
24
|
+
!isResourceUuid(resource.id) ||
|
|
25
|
+
(resource.kind !== 'group-reference' && resource.kind !== 'project-content') ||
|
|
26
|
+
Object.keys(resource).some((key) => key !== 'kind' && key !== 'id'))
|
|
27
|
+
return null;
|
|
28
|
+
return { ...base, resource: { kind: resource.kind, id: resource.id } };
|
|
29
|
+
}
|
|
30
|
+
if ((!('kind' in value) || value.kind === 'group-reference') &&
|
|
31
|
+
'referenceId' in value &&
|
|
32
|
+
isResourceUuid(value.referenceId) &&
|
|
33
|
+
!('contentId' in value))
|
|
34
|
+
return { ...base, resource: { kind: 'group-reference', id: value.referenceId } };
|
|
35
|
+
if ('kind' in value &&
|
|
36
|
+
value.kind === 'project-content' &&
|
|
37
|
+
'contentId' in value &&
|
|
38
|
+
isResourceUuid(value.contentId) &&
|
|
39
|
+
!('referenceId' in value))
|
|
40
|
+
return { ...base, resource: { kind: 'project-content', id: value.contentId } };
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
export function isGroupResourceLinkWire(value) {
|
|
44
|
+
return parseGroupResourceLink(value) !== null;
|
|
45
|
+
}
|
|
46
|
+
export function isCanonicalResourceLink(value) {
|
|
47
|
+
return 'resource' in value;
|
|
48
|
+
}
|
|
49
|
+
export function normalizeGroupMessage(message) {
|
|
50
|
+
const { resourceLinks, ...communication } = message.communication;
|
|
51
|
+
if (resourceLinks === undefined)
|
|
52
|
+
return { ...message, communication };
|
|
53
|
+
if (!Array.isArray(resourceLinks))
|
|
54
|
+
throw new Error('Invalid group resource links');
|
|
55
|
+
return {
|
|
56
|
+
...message,
|
|
57
|
+
communication: {
|
|
58
|
+
...communication,
|
|
59
|
+
resourceLinks: resourceLinks.map((link) => {
|
|
60
|
+
const parsed = parseGroupResourceLink(link);
|
|
61
|
+
if (!parsed)
|
|
62
|
+
throw new Error('Invalid group resource link');
|
|
63
|
+
return parsed;
|
|
64
|
+
}),
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export function normalizeGroupSnapshot(snapshot) {
|
|
69
|
+
return { ...snapshot, messages: snapshot.messages.map(normalizeGroupMessage) };
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=group-resource-links.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-resource-links.mjs","sourceRoot":"","sources":["../src/group-resource-links.ts"],"names":[],"mappings":"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"}
|
package/dist/group-types.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
import type { ConversationResourceTarget } from './conversation-resource-types.js';
|
|
1
2
|
import type { ChatMessage } from './schema.js';
|
|
2
3
|
import type { XpertProjectTypeRef } from './schema.js';
|
|
3
4
|
import type { RuntimeCapabilitiesSelection } from './schema.js';
|
|
4
5
|
import type { RuntimeResourcesSelection } from './runtime-resources.js';
|
|
5
6
|
/** Snapshots expose public messages; runtime details require workspace read access. */
|
|
6
7
|
export type ChatGroupIntent = 'request' | 'reply' | 'message';
|
|
8
|
+
/**
|
|
9
|
+
* Completion intent for one sender's answer to one request, independent of delivery/run status.
|
|
10
|
+
* Progress is a partial answer and does not wake the requester; final completes the answer only
|
|
11
|
+
* after successful publication. Neither stage accepts or completes a Project task.
|
|
12
|
+
*/
|
|
13
|
+
export type ChatGroupReplyStage = 'progress' | 'final';
|
|
7
14
|
export type ChatGroupDeliveryStatus = 'pending' | 'starting' | 'steering' | 'consumed' | 'blocked' | 'canceled' | 'failed';
|
|
8
15
|
export interface ChatGroupParticipant {
|
|
9
16
|
id: string;
|
|
@@ -42,14 +49,14 @@ export interface ChatGroupComposerInput {
|
|
|
42
49
|
}
|
|
43
50
|
/**
|
|
44
51
|
* Server-authored clickable entry persisted in message history, not an open-on-load instruction.
|
|
45
|
-
* Clicking
|
|
52
|
+
* Clicking reauthorizes the resource through the current conversation's host adapter.
|
|
46
53
|
*/
|
|
47
54
|
export interface ChatGroupResourceLink {
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
/** Receiving group's runtime Project;
|
|
55
|
+
/** Canonical locator shared with discovery and Workbench. Contains no access grant. */
|
|
56
|
+
resource: ConversationResourceTarget;
|
|
57
|
+
/** Receiving group's runtime Project; checked before opening, never a source Project override. */
|
|
51
58
|
projectId: string;
|
|
52
|
-
/** Display label only;
|
|
59
|
+
/** Display label only; never use it to infer resource identity or type. */
|
|
53
60
|
title: string;
|
|
54
61
|
}
|
|
55
62
|
/** Live, requester-addressed navigation event; consumers match the local send and deduplicate it. */
|
|
@@ -97,6 +104,12 @@ export interface ChatGroupCommunication {
|
|
|
97
104
|
senderId: string;
|
|
98
105
|
recipientIds: string[];
|
|
99
106
|
replyToMessageId?: string;
|
|
107
|
+
/**
|
|
108
|
+
* Only valid on replies. Missing on legacy replies means final; new publications include it.
|
|
109
|
+
* A successfully published final tool reply suppresses the automatic final answer for the same
|
|
110
|
+
* request and sender. Progress, message and request publications do not suppress that answer.
|
|
111
|
+
*/
|
|
112
|
+
replyStage?: ChatGroupReplyStage;
|
|
100
113
|
causedByMessageId?: string;
|
|
101
114
|
rootMessageId: string;
|
|
102
115
|
rootUserId: string;
|
|
@@ -107,6 +120,19 @@ export interface ChatGroupMessage {
|
|
|
107
120
|
clientMessageId: string;
|
|
108
121
|
sequence: number;
|
|
109
122
|
text: string;
|
|
123
|
+
/**
|
|
124
|
+
* Optional server-filtered result snapshots. May be present with empty text.
|
|
125
|
+
* IDs are stable within this public message; repeated snapshots replace rather than append blocks.
|
|
126
|
+
* Known forms use existing ChatKit `resource_card` or `component` (Widget / McpApp) payloads.
|
|
127
|
+
* Payloads stay opaque at this transport boundary: renderers must validate the concrete type,
|
|
128
|
+
* ignore unknown forms and never reconnect a copied MCP result to the originating App session.
|
|
129
|
+
* These blocks confer no resource permissions, do not wake recipients and do not complete replies.
|
|
130
|
+
*/
|
|
131
|
+
display?: {
|
|
132
|
+
id: string;
|
|
133
|
+
type: 'component' | 'resource_card';
|
|
134
|
+
data: unknown;
|
|
135
|
+
}[];
|
|
110
136
|
createdAt: string;
|
|
111
137
|
communication: ChatGroupCommunication;
|
|
112
138
|
runtimeParticipantIds?: string[];
|
package/dist/groups.d.ts
CHANGED
|
@@ -88,5 +88,7 @@ export declare class GroupsClient {
|
|
|
88
88
|
data: ChatGroupEvent;
|
|
89
89
|
}>;
|
|
90
90
|
}
|
|
91
|
-
/**
|
|
91
|
+
/** Decode compatibility payloads before they enter typed group state or UI navigation. */
|
|
92
|
+
export declare function parseGroupEvent(value: unknown): ChatGroupEvent | null;
|
|
93
|
+
/** Type guard for the canonical contract; legacy wire messages must go through parseGroupEvent. */
|
|
92
94
|
export declare function isGroupEvent(value: unknown): value is ChatGroupEvent;
|
package/dist/groups.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isCanonicalResourceLink, isGroupResourceLinkWire, isResourceUuid, normalizeGroupMessage, normalizeGroupSnapshot, parseGroupResourceLink, } from "./group-resource-links.js";
|
|
1
2
|
import { GroupArtifactsClient } from "./group-artifacts.js";
|
|
2
3
|
/**
|
|
3
4
|
* Group APIs reuse the client's configured ChatKit authentication/refresh hooks.
|
|
@@ -46,11 +47,11 @@ export class GroupsClient {
|
|
|
46
47
|
create(input, options) {
|
|
47
48
|
return this.transport.json('/groups', { ...options, method: 'POST', json: input });
|
|
48
49
|
}
|
|
49
|
-
get(groupId, options) {
|
|
50
|
-
return this.transport.json(`/groups/${encodeURIComponent(groupId)}`, {
|
|
50
|
+
async get(groupId, options) {
|
|
51
|
+
return normalizeGroupSnapshot(await this.transport.json(`/groups/${encodeURIComponent(groupId)}`, {
|
|
51
52
|
signal: options?.signal,
|
|
52
53
|
params: { before: options?.before, limit: options?.limit },
|
|
53
|
-
});
|
|
54
|
+
}));
|
|
54
55
|
}
|
|
55
56
|
runtime(groupId, messageId, participantId, options) {
|
|
56
57
|
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/messages/${encodeURIComponent(messageId)}/runtime/${encodeURIComponent(participantId)}`, options);
|
|
@@ -58,12 +59,12 @@ export class GroupsClient {
|
|
|
58
59
|
composerContext(groupId, participantId, options) {
|
|
59
60
|
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/members/${encodeURIComponent(participantId)}/composer/context`, options);
|
|
60
61
|
}
|
|
61
|
-
send(groupId, input, options) {
|
|
62
|
-
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/messages`, {
|
|
62
|
+
async send(groupId, input, options) {
|
|
63
|
+
return normalizeGroupMessage(await this.transport.json(`/groups/${encodeURIComponent(groupId)}/messages`, {
|
|
63
64
|
...options,
|
|
64
65
|
method: 'POST',
|
|
65
66
|
json: input,
|
|
66
|
-
});
|
|
67
|
+
}));
|
|
67
68
|
}
|
|
68
69
|
addMember(groupId, input, options) {
|
|
69
70
|
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/members`, {
|
|
@@ -100,16 +101,17 @@ export class GroupsClient {
|
|
|
100
101
|
throw new Error('Group stream failed');
|
|
101
102
|
if (item.event !== 'group')
|
|
102
103
|
continue;
|
|
103
|
-
|
|
104
|
+
const data = parseGroupEvent(item.data);
|
|
105
|
+
if (!data)
|
|
104
106
|
throw new Error('Invalid group stream event');
|
|
105
|
-
if (
|
|
107
|
+
if (data.type === 'snapshot' && data.snapshot.id !== groupId)
|
|
106
108
|
throw new Error('Group stream scope mismatch');
|
|
107
|
-
yield { id: item.id, data
|
|
109
|
+
yield { id: item.id, data };
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
112
|
}
|
|
111
|
-
/** Validate
|
|
112
|
-
|
|
113
|
+
/** Validate legacy wire payloads only at the transport boundary. */
|
|
114
|
+
function isGroupEventWire(value) {
|
|
113
115
|
if (!value || typeof value !== 'object' || !('type' in value))
|
|
114
116
|
return false;
|
|
115
117
|
if (value.type === 'resync')
|
|
@@ -118,22 +120,11 @@ export function isGroupEvent(value) {
|
|
|
118
120
|
if (!('request' in value) || !value.request || typeof value.request !== 'object')
|
|
119
121
|
return false;
|
|
120
122
|
const r = value.request;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
uuid.test(r.requestId) &&
|
|
123
|
+
return (isGroupResourceLinkWire(r) &&
|
|
124
|
+
'requestId' in r &&
|
|
125
|
+
isResourceUuid(r.requestId) &&
|
|
125
126
|
'clientMessageId' in r &&
|
|
126
|
-
|
|
127
|
-
uuid.test(r.clientMessageId) &&
|
|
128
|
-
'referenceId' in r &&
|
|
129
|
-
typeof r.referenceId === 'string' &&
|
|
130
|
-
uuid.test(r.referenceId) &&
|
|
131
|
-
'projectId' in r &&
|
|
132
|
-
typeof r.projectId === 'string' &&
|
|
133
|
-
uuid.test(r.projectId) &&
|
|
134
|
-
'title' in r &&
|
|
135
|
-
typeof r.title === 'string' &&
|
|
136
|
-
r.title.length <= 200);
|
|
127
|
+
isResourceUuid(r.clientMessageId));
|
|
137
128
|
}
|
|
138
129
|
if (value.type === 'text')
|
|
139
130
|
return ('participantId' in value &&
|
|
@@ -246,6 +237,10 @@ function isMessage(v) {
|
|
|
246
237
|
'hop' in c &&
|
|
247
238
|
typeof c.hop === 'number' &&
|
|
248
239
|
(!('replyToMessageId' in c) || typeof c.replyToMessageId === 'string') &&
|
|
240
|
+
(!('replyStage' in c) ||
|
|
241
|
+
(c.intent === 'reply' && (c.replyStage === 'progress' || c.replyStage === 'final'))) &&
|
|
242
|
+
(!('resourceLinks' in c) ||
|
|
243
|
+
(Array.isArray(c.resourceLinks) && c.resourceLinks.every(isGroupResourceLinkWire))) &&
|
|
249
244
|
'deliveries' in v &&
|
|
250
245
|
Array.isArray(v.deliveries) &&
|
|
251
246
|
v.deliveries.every((d) => !!d &&
|
|
@@ -256,4 +251,35 @@ function isMessage(v) {
|
|
|
256
251
|
typeof d.status === 'string' &&
|
|
257
252
|
['pending', 'starting', 'steering', 'consumed', 'blocked', 'canceled', 'failed'].includes(d.status)));
|
|
258
253
|
}
|
|
254
|
+
/** Decode compatibility payloads before they enter typed group state or UI navigation. */
|
|
255
|
+
export function parseGroupEvent(value) {
|
|
256
|
+
if (!isGroupEventWire(value))
|
|
257
|
+
return null;
|
|
258
|
+
if (value.type === 'snapshot')
|
|
259
|
+
return { type: 'snapshot', snapshot: normalizeGroupSnapshot(value.snapshot) };
|
|
260
|
+
if (value.type === 'resource_open') {
|
|
261
|
+
const link = parseGroupResourceLink(value.request);
|
|
262
|
+
return link
|
|
263
|
+
? {
|
|
264
|
+
type: 'resource_open',
|
|
265
|
+
request: {
|
|
266
|
+
...link,
|
|
267
|
+
requestId: value.request.requestId,
|
|
268
|
+
clientMessageId: value.request.clientMessageId,
|
|
269
|
+
},
|
|
270
|
+
}
|
|
271
|
+
: null;
|
|
272
|
+
}
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
/** Type guard for the canonical contract; legacy wire messages must go through parseGroupEvent. */
|
|
276
|
+
export function isGroupEvent(value) {
|
|
277
|
+
if (!isGroupEventWire(value))
|
|
278
|
+
return false;
|
|
279
|
+
if (value.type === 'resource_open')
|
|
280
|
+
return isCanonicalResourceLink(value.request);
|
|
281
|
+
if (value.type === 'snapshot')
|
|
282
|
+
return value.snapshot.messages.every((message) => message.communication.resourceLinks?.every(isCanonicalResourceLink) ?? true);
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
259
285
|
//# sourceMappingURL=groups.js.map
|
package/dist/groups.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../src/groups.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../src/groups.ts"],"names":[],"mappings":"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"}
|
package/dist/groups.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isCanonicalResourceLink, isGroupResourceLinkWire, isResourceUuid, normalizeGroupMessage, normalizeGroupSnapshot, parseGroupResourceLink, } from "./group-resource-links.mjs";
|
|
1
2
|
import { GroupArtifactsClient } from "./group-artifacts.mjs";
|
|
2
3
|
/**
|
|
3
4
|
* Group APIs reuse the client's configured ChatKit authentication/refresh hooks.
|
|
@@ -46,11 +47,11 @@ export class GroupsClient {
|
|
|
46
47
|
create(input, options) {
|
|
47
48
|
return this.transport.json('/groups', { ...options, method: 'POST', json: input });
|
|
48
49
|
}
|
|
49
|
-
get(groupId, options) {
|
|
50
|
-
return this.transport.json(`/groups/${encodeURIComponent(groupId)}`, {
|
|
50
|
+
async get(groupId, options) {
|
|
51
|
+
return normalizeGroupSnapshot(await this.transport.json(`/groups/${encodeURIComponent(groupId)}`, {
|
|
51
52
|
signal: options?.signal,
|
|
52
53
|
params: { before: options?.before, limit: options?.limit },
|
|
53
|
-
});
|
|
54
|
+
}));
|
|
54
55
|
}
|
|
55
56
|
runtime(groupId, messageId, participantId, options) {
|
|
56
57
|
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/messages/${encodeURIComponent(messageId)}/runtime/${encodeURIComponent(participantId)}`, options);
|
|
@@ -58,12 +59,12 @@ export class GroupsClient {
|
|
|
58
59
|
composerContext(groupId, participantId, options) {
|
|
59
60
|
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/members/${encodeURIComponent(participantId)}/composer/context`, options);
|
|
60
61
|
}
|
|
61
|
-
send(groupId, input, options) {
|
|
62
|
-
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/messages`, {
|
|
62
|
+
async send(groupId, input, options) {
|
|
63
|
+
return normalizeGroupMessage(await this.transport.json(`/groups/${encodeURIComponent(groupId)}/messages`, {
|
|
63
64
|
...options,
|
|
64
65
|
method: 'POST',
|
|
65
66
|
json: input,
|
|
66
|
-
});
|
|
67
|
+
}));
|
|
67
68
|
}
|
|
68
69
|
addMember(groupId, input, options) {
|
|
69
70
|
return this.transport.json(`/groups/${encodeURIComponent(groupId)}/members`, {
|
|
@@ -100,16 +101,17 @@ export class GroupsClient {
|
|
|
100
101
|
throw new Error('Group stream failed');
|
|
101
102
|
if (item.event !== 'group')
|
|
102
103
|
continue;
|
|
103
|
-
|
|
104
|
+
const data = parseGroupEvent(item.data);
|
|
105
|
+
if (!data)
|
|
104
106
|
throw new Error('Invalid group stream event');
|
|
105
|
-
if (
|
|
107
|
+
if (data.type === 'snapshot' && data.snapshot.id !== groupId)
|
|
106
108
|
throw new Error('Group stream scope mismatch');
|
|
107
|
-
yield { id: item.id, data
|
|
109
|
+
yield { id: item.id, data };
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
112
|
}
|
|
111
|
-
/** Validate
|
|
112
|
-
|
|
113
|
+
/** Validate legacy wire payloads only at the transport boundary. */
|
|
114
|
+
function isGroupEventWire(value) {
|
|
113
115
|
if (!value || typeof value !== 'object' || !('type' in value))
|
|
114
116
|
return false;
|
|
115
117
|
if (value.type === 'resync')
|
|
@@ -118,22 +120,11 @@ export function isGroupEvent(value) {
|
|
|
118
120
|
if (!('request' in value) || !value.request || typeof value.request !== 'object')
|
|
119
121
|
return false;
|
|
120
122
|
const r = value.request;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
uuid.test(r.requestId) &&
|
|
123
|
+
return (isGroupResourceLinkWire(r) &&
|
|
124
|
+
'requestId' in r &&
|
|
125
|
+
isResourceUuid(r.requestId) &&
|
|
125
126
|
'clientMessageId' in r &&
|
|
126
|
-
|
|
127
|
-
uuid.test(r.clientMessageId) &&
|
|
128
|
-
'referenceId' in r &&
|
|
129
|
-
typeof r.referenceId === 'string' &&
|
|
130
|
-
uuid.test(r.referenceId) &&
|
|
131
|
-
'projectId' in r &&
|
|
132
|
-
typeof r.projectId === 'string' &&
|
|
133
|
-
uuid.test(r.projectId) &&
|
|
134
|
-
'title' in r &&
|
|
135
|
-
typeof r.title === 'string' &&
|
|
136
|
-
r.title.length <= 200);
|
|
127
|
+
isResourceUuid(r.clientMessageId));
|
|
137
128
|
}
|
|
138
129
|
if (value.type === 'text')
|
|
139
130
|
return ('participantId' in value &&
|
|
@@ -246,6 +237,10 @@ function isMessage(v) {
|
|
|
246
237
|
'hop' in c &&
|
|
247
238
|
typeof c.hop === 'number' &&
|
|
248
239
|
(!('replyToMessageId' in c) || typeof c.replyToMessageId === 'string') &&
|
|
240
|
+
(!('replyStage' in c) ||
|
|
241
|
+
(c.intent === 'reply' && (c.replyStage === 'progress' || c.replyStage === 'final'))) &&
|
|
242
|
+
(!('resourceLinks' in c) ||
|
|
243
|
+
(Array.isArray(c.resourceLinks) && c.resourceLinks.every(isGroupResourceLinkWire))) &&
|
|
249
244
|
'deliveries' in v &&
|
|
250
245
|
Array.isArray(v.deliveries) &&
|
|
251
246
|
v.deliveries.every((d) => !!d &&
|
|
@@ -256,4 +251,35 @@ function isMessage(v) {
|
|
|
256
251
|
typeof d.status === 'string' &&
|
|
257
252
|
['pending', 'starting', 'steering', 'consumed', 'blocked', 'canceled', 'failed'].includes(d.status)));
|
|
258
253
|
}
|
|
254
|
+
/** Decode compatibility payloads before they enter typed group state or UI navigation. */
|
|
255
|
+
export function parseGroupEvent(value) {
|
|
256
|
+
if (!isGroupEventWire(value))
|
|
257
|
+
return null;
|
|
258
|
+
if (value.type === 'snapshot')
|
|
259
|
+
return { type: 'snapshot', snapshot: normalizeGroupSnapshot(value.snapshot) };
|
|
260
|
+
if (value.type === 'resource_open') {
|
|
261
|
+
const link = parseGroupResourceLink(value.request);
|
|
262
|
+
return link
|
|
263
|
+
? {
|
|
264
|
+
type: 'resource_open',
|
|
265
|
+
request: {
|
|
266
|
+
...link,
|
|
267
|
+
requestId: value.request.requestId,
|
|
268
|
+
clientMessageId: value.request.clientMessageId,
|
|
269
|
+
},
|
|
270
|
+
}
|
|
271
|
+
: null;
|
|
272
|
+
}
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
/** Type guard for the canonical contract; legacy wire messages must go through parseGroupEvent. */
|
|
276
|
+
export function isGroupEvent(value) {
|
|
277
|
+
if (!isGroupEventWire(value))
|
|
278
|
+
return false;
|
|
279
|
+
if (value.type === 'resource_open')
|
|
280
|
+
return isCanonicalResourceLink(value.request);
|
|
281
|
+
if (value.type === 'snapshot')
|
|
282
|
+
return value.snapshot.messages.every((message) => message.communication.resourceLinks?.every(isCanonicalResourceLink) ?? true);
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
259
285
|
//# sourceMappingURL=groups.mjs.map
|