@xpert-ai/xpert-sdk 0.21.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.
Files changed (70) hide show
  1. package/dist/artifact-presentation-types.d.ts +43 -0
  2. package/dist/artifact-presentation-types.js +2 -0
  3. package/dist/artifact-presentation-types.js.map +1 -0
  4. package/dist/artifact-presentation-types.mjs +2 -0
  5. package/dist/artifact-presentation-types.mjs.map +1 -0
  6. package/dist/conversation-resource-types.d.ts +10 -0
  7. package/dist/conversation-resource-types.js +3 -0
  8. package/dist/conversation-resource-types.js.map +1 -0
  9. package/dist/conversation-resource-types.mjs +3 -0
  10. package/dist/conversation-resource-types.mjs.map +1 -0
  11. package/dist/group-artifact-types.d.ts +95 -0
  12. package/dist/group-artifact-types.js +2 -0
  13. package/dist/group-artifact-types.js.map +1 -0
  14. package/dist/group-artifact-types.mjs +2 -0
  15. package/dist/group-artifact-types.mjs.map +1 -0
  16. package/dist/group-artifacts.d.ts +42 -0
  17. package/dist/group-artifacts.js +43 -0
  18. package/dist/group-artifacts.js.map +1 -0
  19. package/dist/group-artifacts.mjs +43 -0
  20. package/dist/group-artifacts.mjs.map +1 -0
  21. package/dist/group-resource-links.d.ts +34 -0
  22. package/dist/group-resource-links.js +71 -0
  23. package/dist/group-resource-links.js.map +1 -0
  24. package/dist/group-resource-links.mjs +71 -0
  25. package/dist/group-resource-links.mjs.map +1 -0
  26. package/dist/group-types.d.ts +64 -0
  27. package/dist/groups.d.ts +6 -1
  28. package/dist/groups.js +64 -11
  29. package/dist/groups.js.map +1 -1
  30. package/dist/groups.mjs +64 -11
  31. package/dist/groups.mjs.map +1 -1
  32. package/dist/index.d.ts +25 -20
  33. package/dist/index.js +2 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/index.mjs +2 -0
  36. package/dist/index.mjs.map +1 -1
  37. package/dist/resource-analysis-types.d.ts +40 -0
  38. package/dist/resource-analysis-types.js +2 -0
  39. package/dist/resource-analysis-types.js.map +1 -0
  40. package/dist/resource-analysis-types.mjs +2 -0
  41. package/dist/resource-analysis-types.mjs.map +1 -0
  42. package/dist/tests/group-artifacts.test.d.ts +1 -0
  43. package/dist/tests/group-artifacts.test.js +38 -0
  44. package/dist/tests/group-artifacts.test.js.map +1 -0
  45. package/dist/tests/group-artifacts.test.mjs +38 -0
  46. package/dist/tests/group-artifacts.test.mjs.map +1 -0
  47. package/dist/tests/group-reply-stages.test.d.ts +1 -0
  48. package/dist/tests/group-reply-stages.test.js +50 -0
  49. package/dist/tests/group-reply-stages.test.js.map +1 -0
  50. package/dist/tests/group-reply-stages.test.mjs +50 -0
  51. package/dist/tests/group-reply-stages.test.mjs.map +1 -0
  52. package/dist/tests/group-resource-links.test.d.ts +1 -0
  53. package/dist/tests/group-resource-links.test.js +94 -0
  54. package/dist/tests/group-resource-links.test.js.map +1 -0
  55. package/dist/tests/group-resource-links.test.mjs +94 -0
  56. package/dist/tests/group-resource-links.test.mjs.map +1 -0
  57. package/dist/tests/groups.test.js +92 -2
  58. package/dist/tests/groups.test.js.map +1 -1
  59. package/dist/tests/groups.test.mjs +92 -2
  60. package/dist/tests/groups.test.mjs.map +1 -1
  61. package/dist/tests/workbench-open.test.js +14 -0
  62. package/dist/tests/workbench-open.test.js.map +1 -1
  63. package/dist/tests/workbench-open.test.mjs +14 -0
  64. package/dist/tests/workbench-open.test.mjs.map +1 -1
  65. package/dist/workbench-open.d.ts +16 -1
  66. package/dist/workbench-open.js +16 -1
  67. package/dist/workbench-open.js.map +1 -1
  68. package/dist/workbench-open.mjs +16 -1
  69. package/dist/workbench-open.mjs.map +1 -1
  70. package/package.json +1 -1
@@ -0,0 +1,38 @@
1
+ import { expect, it, vi } from 'vitest';
2
+ import { Client } from "../client.mjs";
3
+ it('uses the group transport for all reference operations, including auth hooks, encoding and cancellation', async () => {
4
+ const fetch = vi
5
+ .fn()
6
+ .mockImplementation(async () => new Response('{}', { headers: { 'content-type': 'application/json' } }));
7
+ const client = new Client({
8
+ apiUrl: 'https://example.test/api/ai',
9
+ callerOptions: { fetch, maxRetries: 0 },
10
+ onRequest: (_url, init) => ({ ...init, headers: { Authorization: 'Bearer group-session' } }),
11
+ });
12
+ const api = client.groups.artifacts, signal = new AbortController().signal;
13
+ await api.offers('g/1', { offset: 50, limit: 25 }, { signal });
14
+ await api.list('g/1', {}, { signal });
15
+ await api.accept('g/1', { grantId: 'grant', expectedRevision: 1 }, { signal });
16
+ await api.read('g/1', 'r/2', { signal });
17
+ await api.query('g/1', 'r/2', { target: { artifactId: 'a', versionId: 'v1' }, operation: 'query', input: { filter: 3 } }, { signal });
18
+ await api.remove('g/1', 'r/2', { expectedRevision: 2 }, { signal });
19
+ expect(fetch.mock.calls.map(([url]) => new URL(String(url)).pathname)).toEqual([
20
+ '/api/ai/groups/g%2F1/artifacts/offers',
21
+ '/api/ai/groups/g%2F1/artifacts/references',
22
+ '/api/ai/groups/g%2F1/artifacts/references',
23
+ '/api/ai/groups/g%2F1/artifacts/references/r%2F2',
24
+ '/api/ai/groups/g%2F1/artifacts/references/r%2F2/query',
25
+ '/api/ai/groups/g%2F1/artifacts/references/r%2F2/remove',
26
+ ]);
27
+ expect(new URL(String(fetch.mock.calls[0][0])).searchParams.get('offset')).toBe('50');
28
+ for (const [, init] of fetch.mock.calls) {
29
+ expect(new Headers(init?.headers).get('Authorization')).toBe('Bearer group-session');
30
+ expect(init?.signal).toBeDefined();
31
+ }
32
+ expect(JSON.parse(String(fetch.mock.calls[4][1]?.body))).toEqual({
33
+ target: { artifactId: 'a', versionId: 'v1' },
34
+ operation: 'query',
35
+ input: { filter: 3 },
36
+ });
37
+ });
38
+ //# sourceMappingURL=group-artifacts.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-artifacts.test.mjs","sourceRoot":"","sources":["../../src/tests/group-artifacts.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,50 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { isGroupEvent } from "../groups.js";
3
+ const event = (stage) => ({
4
+ type: 'snapshot',
5
+ snapshot: {
6
+ id: 'group',
7
+ threadId: 'thread',
8
+ title: 'Group',
9
+ viewerParticipantId: 'human',
10
+ xpertId: 'assistant',
11
+ revision: 1,
12
+ members: [],
13
+ hasMore: false,
14
+ runs: [],
15
+ messages: [
16
+ {
17
+ id: 'reply',
18
+ clientMessageId: 'call',
19
+ sequence: 2,
20
+ text: 'Answer',
21
+ createdAt: '2026-11-09T00:00:00Z',
22
+ deliveries: [],
23
+ communication: {
24
+ intent: 'reply',
25
+ senderId: 'assistant',
26
+ recipientIds: ['human'],
27
+ replyToMessageId: 'request',
28
+ rootMessageId: 'request',
29
+ rootUserId: 'user',
30
+ hop: 1,
31
+ ...stage,
32
+ },
33
+ },
34
+ ],
35
+ },
36
+ });
37
+ describe('group reply-stage event compatibility', () => {
38
+ it.each([{}, { replyStage: 'progress' }, { replyStage: 'final' }])('accepts legacy and staged reply snapshots: %j', (stage) => {
39
+ expect(isGroupEvent(event(stage))).toBe(true);
40
+ });
41
+ it.each([
42
+ { replyStage: 'done' },
43
+ { replyStage: null },
44
+ { intent: 'message', replyStage: 'final' },
45
+ { intent: 'request', replyStage: 'progress' },
46
+ ])('rejects invalid stages instead of accepting an ambiguous completion: %j', (stage) => {
47
+ expect(isGroupEvent(event(stage))).toBe(false);
48
+ });
49
+ });
50
+ //# sourceMappingURL=group-reply-stages.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-reply-stages.test.js","sourceRoot":"","sources":["../../src/tests/group-reply-stages.test.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ;OACtC,EAAE,YAAY,EAAE;AAEvB,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,OAAO;QACd,mBAAmB,EAAE,OAAO;QAC5B,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE;YACR;gBACE,EAAE,EAAE,OAAO;gBACX,eAAe,EAAE,MAAM;gBACvB,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE;oBACb,MAAM,EAAE,OAAO;oBACf,QAAQ,EAAE,WAAW;oBACrB,YAAY,EAAE,CAAC,OAAO,CAAC;oBACvB,gBAAgB,EAAE,SAAS;oBAC3B,aAAa,EAAE,SAAS;oBACxB,UAAU,EAAE,MAAM;oBAClB,GAAG,EAAE,CAAC;oBACN,GAAG,KAAK;iBACT;aACF;SACF;KACF;CACF,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAChE,+CAA+C,EAC/C,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CACF,CAAC;IACF,EAAE,CAAC,IAAI,CAAC;QACN,EAAE,UAAU,EAAE,MAAM,EAAE;QACtB,EAAE,UAAU,EAAE,IAAI,EAAE;QACpB,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;QAC1C,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE;KAC9C,CAAC,CAAC,yEAAyE,EAAE,CAAC,KAAK,EAAE,EAAE;QACtF,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { isGroupEvent } from "../groups.mjs";
3
+ const event = (stage) => ({
4
+ type: 'snapshot',
5
+ snapshot: {
6
+ id: 'group',
7
+ threadId: 'thread',
8
+ title: 'Group',
9
+ viewerParticipantId: 'human',
10
+ xpertId: 'assistant',
11
+ revision: 1,
12
+ members: [],
13
+ hasMore: false,
14
+ runs: [],
15
+ messages: [
16
+ {
17
+ id: 'reply',
18
+ clientMessageId: 'call',
19
+ sequence: 2,
20
+ text: 'Answer',
21
+ createdAt: '2026-11-09T00:00:00Z',
22
+ deliveries: [],
23
+ communication: {
24
+ intent: 'reply',
25
+ senderId: 'assistant',
26
+ recipientIds: ['human'],
27
+ replyToMessageId: 'request',
28
+ rootMessageId: 'request',
29
+ rootUserId: 'user',
30
+ hop: 1,
31
+ ...stage,
32
+ },
33
+ },
34
+ ],
35
+ },
36
+ });
37
+ describe('group reply-stage event compatibility', () => {
38
+ it.each([{}, { replyStage: 'progress' }, { replyStage: 'final' }])('accepts legacy and staged reply snapshots: %j', (stage) => {
39
+ expect(isGroupEvent(event(stage))).toBe(true);
40
+ });
41
+ it.each([
42
+ { replyStage: 'done' },
43
+ { replyStage: null },
44
+ { intent: 'message', replyStage: 'final' },
45
+ { intent: 'request', replyStage: 'progress' },
46
+ ])('rejects invalid stages instead of accepting an ambiguous completion: %j', (stage) => {
47
+ expect(isGroupEvent(event(stage))).toBe(false);
48
+ });
49
+ });
50
+ //# sourceMappingURL=group-reply-stages.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-reply-stages.test.mjs","sourceRoot":"","sources":["../../src/tests/group-reply-stages.test.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ;OACtC,EAAE,YAAY,EAAE;AAEvB,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,EAAE,EAAE,OAAO;QACX,QAAQ,EAAE,QAAQ;QAClB,KAAK,EAAE,OAAO;QACd,mBAAmB,EAAE,OAAO;QAC5B,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE;YACR;gBACE,EAAE,EAAE,OAAO;gBACX,eAAe,EAAE,MAAM;gBACvB,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,sBAAsB;gBACjC,UAAU,EAAE,EAAE;gBACd,aAAa,EAAE;oBACb,MAAM,EAAE,OAAO;oBACf,QAAQ,EAAE,WAAW;oBACrB,YAAY,EAAE,CAAC,OAAO,CAAC;oBACvB,gBAAgB,EAAE,SAAS;oBAC3B,aAAa,EAAE,SAAS;oBACxB,UAAU,EAAE,MAAM;oBAClB,GAAG,EAAE,CAAC;oBACN,GAAG,KAAK;iBACT;aACF;SACF;KACF;CACF,CAAC,CAAC;AAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC,CAChE,+CAA+C,EAC/C,CAAC,KAAK,EAAE,EAAE;QACR,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CACF,CAAC;IACF,EAAE,CAAC,IAAI,CAAC;QACN,EAAE,UAAU,EAAE,MAAM,EAAE;QACtB,EAAE,UAAU,EAAE,IAAI,EAAE;QACpB,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE;QAC1C,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE;KAC9C,CAAC,CAAC,yEAAyE,EAAE,CAAC,KAAK,EAAE,EAAE;QACtF,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,94 @@
1
+ import { expect, it, vi } from 'vitest';
2
+ import { Client } from "../client.js";
3
+ import { isGroupEvent, parseGroupEvent } from "../groups.js";
4
+ import { parseGroupResourceLink } from "../group-resource-links.js";
5
+ const id = '11a11111-1111-4111-8111-111111111111';
6
+ const base = { projectId: id, title: 'Inventory' };
7
+ const versions = [
8
+ { input: { ...base, referenceId: id }, kind: 'group-reference' },
9
+ { input: { ...base, kind: 'group-reference', referenceId: id }, kind: 'group-reference' },
10
+ { input: { ...base, kind: 'project-content', contentId: id }, kind: 'project-content' },
11
+ { input: { ...base, resource: { kind: 'group-reference', id } }, kind: 'group-reference' },
12
+ { input: { ...base, resource: { kind: 'project-content', id } }, kind: 'project-content' },
13
+ ];
14
+ it.each(versions)('normalizes resource links at HTTP history, send and SSE boundaries ($kind)', async ({ input, kind }) => {
15
+ const link = { ...base, resource: { kind, id } };
16
+ const message = {
17
+ id,
18
+ clientMessageId: id,
19
+ sequence: 1,
20
+ text: 'Inventory',
21
+ createdAt: '2026-11-10T00:00:00Z',
22
+ deliveries: [],
23
+ communication: {
24
+ intent: 'message',
25
+ senderId: id,
26
+ recipientIds: [],
27
+ rootMessageId: id,
28
+ rootUserId: id,
29
+ hop: 0,
30
+ resourceLinks: [input],
31
+ },
32
+ };
33
+ const snapshot = {
34
+ id,
35
+ threadId: id,
36
+ title: 'Group',
37
+ viewerParticipantId: id,
38
+ xpertId: id,
39
+ revision: 1,
40
+ members: [],
41
+ messages: [message],
42
+ hasMore: false,
43
+ runs: [],
44
+ };
45
+ const navigation = {
46
+ type: 'resource_open',
47
+ request: { ...input, requestId: id, clientMessageId: id },
48
+ };
49
+ const fetch = vi
50
+ .fn()
51
+ .mockResolvedValueOnce(new Response(JSON.stringify(snapshot)))
52
+ .mockResolvedValueOnce(new Response(JSON.stringify(message)))
53
+ .mockResolvedValueOnce(new Response(`event: group\ndata: ${JSON.stringify({ type: 'snapshot', snapshot })}\n\nevent: group\ndata: ${JSON.stringify(navigation)}\n\n`, { headers: { 'content-type': 'text/event-stream' } }));
54
+ const client = new Client({ apiUrl: 'https://example.test/api/ai', callerOptions: { fetch } });
55
+ expect((await client.groups.get(id)).messages[0].communication.resourceLinks).toEqual([link]);
56
+ expect((await client.groups.send(id, { clientMessageId: id, text: 'Hi' })).communication
57
+ .resourceLinks).toEqual([link]);
58
+ const events = [];
59
+ for await (const event of client.groups.stream(id))
60
+ events.push(event.data);
61
+ expect(events).toEqual([
62
+ {
63
+ type: 'snapshot',
64
+ snapshot: {
65
+ ...snapshot,
66
+ messages: [
67
+ { ...message, communication: { ...message.communication, resourceLinks: [link] } },
68
+ ],
69
+ },
70
+ },
71
+ { type: 'resource_open', request: { ...link, requestId: id, clientMessageId: id } },
72
+ ]);
73
+ expect(events.every(isGroupEvent)).toBe(true);
74
+ // A legacy wire shape must not masquerade as the canonical public type.
75
+ expect(isGroupEvent(navigation)).toBe('resource' in input);
76
+ });
77
+ it('rejects malformed and ambiguous locators instead of guessing their identity', () => {
78
+ for (const input of [
79
+ { ...base, resource: { kind: 'dashboard', id } },
80
+ { ...base, resource: { kind: 'group-reference', id: '../source' } },
81
+ { ...base, resource: { kind: 'group-reference', id, groupId: id } },
82
+ { ...base, resource: { kind: 'project-content', id }, referenceId: id },
83
+ { ...base, kind: 'project-content', referenceId: id },
84
+ { ...base, referenceId: id, contentId: id },
85
+ { ...base, referenceId: id, projectId: '../other' },
86
+ ]) {
87
+ expect(parseGroupResourceLink(input)).toBeNull();
88
+ expect(parseGroupEvent({
89
+ type: 'resource_open',
90
+ request: { ...input, requestId: id, clientMessageId: id },
91
+ })).toBeNull();
92
+ }
93
+ });
94
+ //# sourceMappingURL=group-resource-links.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-resource-links.test.js","sourceRoot":"","sources":["../../src/tests/group-resource-links.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { expect, it, vi } from 'vitest';
2
+ import { Client } from "../client.mjs";
3
+ import { isGroupEvent, parseGroupEvent } from "../groups.mjs";
4
+ import { parseGroupResourceLink } from "../group-resource-links.mjs";
5
+ const id = '11a11111-1111-4111-8111-111111111111';
6
+ const base = { projectId: id, title: 'Inventory' };
7
+ const versions = [
8
+ { input: { ...base, referenceId: id }, kind: 'group-reference' },
9
+ { input: { ...base, kind: 'group-reference', referenceId: id }, kind: 'group-reference' },
10
+ { input: { ...base, kind: 'project-content', contentId: id }, kind: 'project-content' },
11
+ { input: { ...base, resource: { kind: 'group-reference', id } }, kind: 'group-reference' },
12
+ { input: { ...base, resource: { kind: 'project-content', id } }, kind: 'project-content' },
13
+ ];
14
+ it.each(versions)('normalizes resource links at HTTP history, send and SSE boundaries ($kind)', async ({ input, kind }) => {
15
+ const link = { ...base, resource: { kind, id } };
16
+ const message = {
17
+ id,
18
+ clientMessageId: id,
19
+ sequence: 1,
20
+ text: 'Inventory',
21
+ createdAt: '2026-11-10T00:00:00Z',
22
+ deliveries: [],
23
+ communication: {
24
+ intent: 'message',
25
+ senderId: id,
26
+ recipientIds: [],
27
+ rootMessageId: id,
28
+ rootUserId: id,
29
+ hop: 0,
30
+ resourceLinks: [input],
31
+ },
32
+ };
33
+ const snapshot = {
34
+ id,
35
+ threadId: id,
36
+ title: 'Group',
37
+ viewerParticipantId: id,
38
+ xpertId: id,
39
+ revision: 1,
40
+ members: [],
41
+ messages: [message],
42
+ hasMore: false,
43
+ runs: [],
44
+ };
45
+ const navigation = {
46
+ type: 'resource_open',
47
+ request: { ...input, requestId: id, clientMessageId: id },
48
+ };
49
+ const fetch = vi
50
+ .fn()
51
+ .mockResolvedValueOnce(new Response(JSON.stringify(snapshot)))
52
+ .mockResolvedValueOnce(new Response(JSON.stringify(message)))
53
+ .mockResolvedValueOnce(new Response(`event: group\ndata: ${JSON.stringify({ type: 'snapshot', snapshot })}\n\nevent: group\ndata: ${JSON.stringify(navigation)}\n\n`, { headers: { 'content-type': 'text/event-stream' } }));
54
+ const client = new Client({ apiUrl: 'https://example.test/api/ai', callerOptions: { fetch } });
55
+ expect((await client.groups.get(id)).messages[0].communication.resourceLinks).toEqual([link]);
56
+ expect((await client.groups.send(id, { clientMessageId: id, text: 'Hi' })).communication
57
+ .resourceLinks).toEqual([link]);
58
+ const events = [];
59
+ for await (const event of client.groups.stream(id))
60
+ events.push(event.data);
61
+ expect(events).toEqual([
62
+ {
63
+ type: 'snapshot',
64
+ snapshot: {
65
+ ...snapshot,
66
+ messages: [
67
+ { ...message, communication: { ...message.communication, resourceLinks: [link] } },
68
+ ],
69
+ },
70
+ },
71
+ { type: 'resource_open', request: { ...link, requestId: id, clientMessageId: id } },
72
+ ]);
73
+ expect(events.every(isGroupEvent)).toBe(true);
74
+ // A legacy wire shape must not masquerade as the canonical public type.
75
+ expect(isGroupEvent(navigation)).toBe('resource' in input);
76
+ });
77
+ it('rejects malformed and ambiguous locators instead of guessing their identity', () => {
78
+ for (const input of [
79
+ { ...base, resource: { kind: 'dashboard', id } },
80
+ { ...base, resource: { kind: 'group-reference', id: '../source' } },
81
+ { ...base, resource: { kind: 'group-reference', id, groupId: id } },
82
+ { ...base, resource: { kind: 'project-content', id }, referenceId: id },
83
+ { ...base, kind: 'project-content', referenceId: id },
84
+ { ...base, referenceId: id, contentId: id },
85
+ { ...base, referenceId: id, projectId: '../other' },
86
+ ]) {
87
+ expect(parseGroupResourceLink(input)).toBeNull();
88
+ expect(parseGroupEvent({
89
+ type: 'resource_open',
90
+ request: { ...input, requestId: id, clientMessageId: id },
91
+ })).toBeNull();
92
+ }
93
+ });
94
+ //# sourceMappingURL=group-resource-links.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-resource-links.test.mjs","sourceRoot":"","sources":["../../src/tests/group-resource-links.test.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,62 @@ import { describe, expect, it, vi } from 'vitest';
2
2
  import { Client } from "../client.js";
3
3
  import { isGroupEvent } from "../groups.js";
4
4
  describe('group client', () => {
5
+ it('preserves card-only group display snapshots through history and SSE without requiring a renderer dependency', async () => {
6
+ const display = [
7
+ {
8
+ id: 'card',
9
+ type: 'component',
10
+ data: { type: 'McpApp', toolResult: { content: [{ type: 'text', text: '42' }] } },
11
+ },
12
+ ];
13
+ const snapshot = {
14
+ id: 'group',
15
+ threadId: 'thread',
16
+ title: 'Group',
17
+ viewerParticipantId: 'viewer',
18
+ xpertId: 'assistant',
19
+ members: [],
20
+ revision: 2,
21
+ runs: [],
22
+ hasMore: false,
23
+ messages: [
24
+ {
25
+ id: 'message',
26
+ clientMessageId: 'client',
27
+ sequence: 1,
28
+ text: '',
29
+ display,
30
+ createdAt: '2026-11-09T00:00:00Z',
31
+ deliveries: [],
32
+ communication: {
33
+ intent: 'message',
34
+ senderId: 'member',
35
+ recipientIds: [],
36
+ rootMessageId: 'root',
37
+ rootUserId: 'viewer',
38
+ hop: 1,
39
+ },
40
+ },
41
+ ],
42
+ };
43
+ const fetch = vi
44
+ .fn()
45
+ .mockResolvedValueOnce(new Response(JSON.stringify(snapshot), { headers: { 'content-type': 'application/json' } }))
46
+ .mockResolvedValueOnce(new Response(`event: group\ndata: ${JSON.stringify({ type: 'snapshot', snapshot })}\n\n`, {
47
+ headers: { 'content-type': 'text/event-stream' },
48
+ }));
49
+ const client = new Client({ apiUrl: 'https://example.test/api/ai', callerOptions: { fetch } });
50
+ expect((await client.groups.get('group')).messages[0].display).toEqual(display);
51
+ const event = (await client.groups.stream('group').next()).value;
52
+ expect(event).toMatchObject({ data: { type: 'snapshot', snapshot } });
53
+ });
54
+ it('surfaces an SSE error so the observer can reconnect instead of silently losing live events', async () => {
55
+ const fetch = vi.fn().mockResolvedValue(new Response('event: error\ndata: {"message":"stream_failed"}\n\n', {
56
+ headers: { 'content-type': 'text/event-stream' },
57
+ }));
58
+ const client = new Client({ apiUrl: 'https://example.test/api/ai', callerOptions: { fetch } });
59
+ await expect(client.groups.stream('group').next()).rejects.toThrow('Group stream failed');
60
+ });
5
61
  it('passes candidate pagination, group scope, search and cancellation without changing the array response', async () => {
6
62
  const fetch = vi
7
63
  .fn()
@@ -57,7 +113,10 @@ describe('group client', () => {
57
113
  expect(JSON.parse(fetch.mock.calls[0][1]?.body)).toEqual(input);
58
114
  expect(fetch.mock.calls[1][1]?.body).toBe(fetch.mock.calls[0][1]?.body);
59
115
  expect(fetch.mock.calls[2][1]?.method ?? 'GET').toBe('GET');
60
- const reuse = { project: { mode: 'existing', projectId: 'p', reuse: true }, participantIds: ['a'] };
116
+ const reuse = {
117
+ project: { mode: 'existing', projectId: 'p', reuse: true },
118
+ participantIds: ['a'],
119
+ };
61
120
  await client.groups.setProject('g/1', reuse);
62
121
  expect(JSON.parse(fetch.mock.calls[3][1]?.body)).toEqual(reuse);
63
122
  });
@@ -99,7 +158,22 @@ describe('group client', () => {
99
158
  expect(new Headers(fileInit?.headers).has('x-group-session')).toBe(false);
100
159
  });
101
160
  it('routes structured messages through configured authentication without author fields', async () => {
102
- const fetch = vi.fn().mockResolvedValue(new Response(JSON.stringify({ id: 'm' }), {
161
+ const fetch = vi.fn().mockResolvedValue(new Response(JSON.stringify({
162
+ id: 'm',
163
+ clientMessageId: 'retry-id',
164
+ sequence: 1,
165
+ text: '@E hello',
166
+ createdAt: '2026-11-10T00:00:00Z',
167
+ deliveries: [],
168
+ communication: {
169
+ intent: 'request',
170
+ senderId: 'viewer',
171
+ recipientIds: ['e'],
172
+ rootMessageId: 'm',
173
+ rootUserId: 'viewer',
174
+ hop: 0,
175
+ },
176
+ }), {
103
177
  headers: { 'content-type': 'application/json' },
104
178
  }));
105
179
  const client = new Client({
@@ -195,4 +269,20 @@ describe('group client', () => {
195
269
  expect(isGroupEvent({ type: 'resync' })).toBe(true);
196
270
  });
197
271
  });
272
+ it('validates resource navigation targets without trusting partial events', () => {
273
+ const id = '11a11111-1111-4111-8111-111111111111';
274
+ const request = {
275
+ requestId: id,
276
+ clientMessageId: id,
277
+ resource: { kind: 'group-reference', id },
278
+ projectId: id,
279
+ title: 'Inventory',
280
+ };
281
+ expect(isGroupEvent({ type: 'resource_open', request })).toBe(true);
282
+ expect(isGroupEvent({
283
+ type: 'resource_open',
284
+ request: { ...request, resource: { kind: 'group-reference', id: '../foreign' } },
285
+ })).toBe(false);
286
+ expect(isGroupEvent({ type: 'resource_open', request: { title: 'Inventory' } })).toBe(false);
287
+ });
198
288
  //# sourceMappingURL=groups.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"groups.test.js","sourceRoot":"","sources":["../../src/tests/groups.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"groups.test.js","sourceRoot":"","sources":["../../src/tests/groups.test.ts"],"names":[],"mappings":"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"}