@xpert-ai/xpert-sdk 0.15.0 → 0.17.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/client.d.ts +16 -5
- package/dist/client.js +24 -10
- package/dist/client.js.map +1 -1
- package/dist/client.mjs +24 -10
- package/dist/client.mjs.map +1 -1
- package/dist/content.d.ts +117 -0
- package/dist/content.js +26 -0
- package/dist/content.js.map +1 -0
- package/dist/content.mjs +26 -0
- package/dist/content.mjs.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/schema.d.ts +4 -0
- package/dist/schema.js.map +1 -1
- package/dist/schema.mjs.map +1 -1
- package/dist/tests/content.test.d.ts +1 -0
- package/dist/tests/content.test.js +50 -0
- package/dist/tests/content.test.js.map +1 -0
- package/dist/tests/content.test.mjs +50 -0
- package/dist/tests/content.test.mjs.map +1 -0
- package/dist/tests/recovery-read.test.d.ts +1 -0
- package/dist/tests/recovery-read.test.js +39 -0
- package/dist/tests/recovery-read.test.js.map +1 -0
- package/dist/tests/recovery-read.test.mjs +39 -0
- package/dist/tests/recovery-read.test.mjs.map +1 -0
- package/dist/tests/run-display-snapshot.test.d.ts +1 -0
- package/dist/tests/run-display-snapshot.test.js +20 -0
- package/dist/tests/run-display-snapshot.test.js.map +1 -0
- package/dist/tests/run-display-snapshot.test.mjs +20 -0
- package/dist/tests/run-display-snapshot.test.mjs.map +1 -0
- package/dist/tests/run-status.test.d.ts +1 -0
- package/dist/tests/run-status.test.js +13 -0
- package/dist/tests/run-status.test.js.map +1 -0
- package/dist/tests/run-status.test.mjs +13 -0
- package/dist/tests/run-status.test.mjs.map +1 -0
- package/dist/tests/thread-control.test.js +8 -0
- package/dist/tests/thread-control.test.js.map +1 -1
- package/dist/tests/thread-control.test.mjs +8 -0
- package/dist/tests/thread-control.test.mjs.map +1 -1
- package/dist/utils/async_caller.d.ts +13 -0
- package/dist/utils/async_caller.js +14 -5
- package/dist/utils/async_caller.js.map +1 -1
- package/dist/utils/async_caller.mjs +14 -5
- package/dist/utils/async_caller.mjs.map +1 -1
- package/dist/view-extension.d.ts +2 -0
- package/dist/view-extension.js.map +1 -1
- package/dist/view-extension.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Client } from "../index.js";
|
|
3
|
+
describe('ContentClient', () => {
|
|
4
|
+
it('uses the configured SDK transport and scoped credentials for every operation', async () => {
|
|
5
|
+
const fetch = vi
|
|
6
|
+
.fn()
|
|
7
|
+
.mockImplementation(async () => new Response('{}', { headers: { 'content-type': 'application/json' } }));
|
|
8
|
+
const client = new Client({
|
|
9
|
+
apiUrl: 'https://example.test/api/ai',
|
|
10
|
+
callerOptions: { fetch },
|
|
11
|
+
onRequest: (_url, init) => ({
|
|
12
|
+
...init,
|
|
13
|
+
headers: { ...init.headers, 'x-client-secret': 'test-secret', 'organization-id': 'org' },
|
|
14
|
+
}),
|
|
15
|
+
});
|
|
16
|
+
const scope = { assistantId: 'a/1', projectId: 'p' };
|
|
17
|
+
const abort = new AbortController();
|
|
18
|
+
await client.content.resolve(scope, { resourceId: 'r', providerKey: 'files' }, { signal: abort.signal });
|
|
19
|
+
await client.content.review(scope, 'r');
|
|
20
|
+
await client.content.preview(scope, 'r', 'rev');
|
|
21
|
+
await client.content.mutate(scope, 'r', {
|
|
22
|
+
operation: 'restore',
|
|
23
|
+
revisionId: 'rev',
|
|
24
|
+
epoch: 2,
|
|
25
|
+
expectedSequence: 4,
|
|
26
|
+
});
|
|
27
|
+
expect(fetch.mock.calls.map(([url]) => new URL(String(url)).pathname)).toEqual(['open', 'review', 'preview', 'restore'].map((operation) => `/api/ai/assistants/a%2F1/projects/p/content/r/${operation}`));
|
|
28
|
+
expect(fetch.mock.calls[0][1]?.signal).toBe(abort.signal);
|
|
29
|
+
expect(JSON.parse(String(fetch.mock.calls[0][1]?.body))).toEqual({ providerKey: 'files' });
|
|
30
|
+
expect(JSON.parse(String(fetch.mock.calls[3][1]?.body))).toEqual({
|
|
31
|
+
revisionId: 'rev',
|
|
32
|
+
epoch: 2,
|
|
33
|
+
expectedSequence: 4,
|
|
34
|
+
});
|
|
35
|
+
for (const [, init] of fetch.mock.calls)
|
|
36
|
+
expect(new Headers(init?.headers).get('x-client-secret')).toBe('test-secret');
|
|
37
|
+
});
|
|
38
|
+
it('does not bypass a server authorization rejection', async () => {
|
|
39
|
+
const fetch = vi
|
|
40
|
+
.fn()
|
|
41
|
+
.mockImplementation(async () => new Response('Forbidden', { status: 403 }));
|
|
42
|
+
const client = new Client({
|
|
43
|
+
apiUrl: 'https://example.test/api/ai',
|
|
44
|
+
callerOptions: { fetch, maxRetries: 0 },
|
|
45
|
+
});
|
|
46
|
+
await expect(client.content.resolve({ assistantId: 'a', projectId: 'p' }, { resourceId: 'r' })).rejects.toThrow();
|
|
47
|
+
expect(fetch).toHaveBeenCalledOnce();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=content.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.test.js","sourceRoot":"","sources":["../../src/tests/content.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Client } from "../index.mjs";
|
|
3
|
+
describe('ContentClient', () => {
|
|
4
|
+
it('uses the configured SDK transport and scoped credentials for every operation', async () => {
|
|
5
|
+
const fetch = vi
|
|
6
|
+
.fn()
|
|
7
|
+
.mockImplementation(async () => new Response('{}', { headers: { 'content-type': 'application/json' } }));
|
|
8
|
+
const client = new Client({
|
|
9
|
+
apiUrl: 'https://example.test/api/ai',
|
|
10
|
+
callerOptions: { fetch },
|
|
11
|
+
onRequest: (_url, init) => ({
|
|
12
|
+
...init,
|
|
13
|
+
headers: { ...init.headers, 'x-client-secret': 'test-secret', 'organization-id': 'org' },
|
|
14
|
+
}),
|
|
15
|
+
});
|
|
16
|
+
const scope = { assistantId: 'a/1', projectId: 'p' };
|
|
17
|
+
const abort = new AbortController();
|
|
18
|
+
await client.content.resolve(scope, { resourceId: 'r', providerKey: 'files' }, { signal: abort.signal });
|
|
19
|
+
await client.content.review(scope, 'r');
|
|
20
|
+
await client.content.preview(scope, 'r', 'rev');
|
|
21
|
+
await client.content.mutate(scope, 'r', {
|
|
22
|
+
operation: 'restore',
|
|
23
|
+
revisionId: 'rev',
|
|
24
|
+
epoch: 2,
|
|
25
|
+
expectedSequence: 4,
|
|
26
|
+
});
|
|
27
|
+
expect(fetch.mock.calls.map(([url]) => new URL(String(url)).pathname)).toEqual(['open', 'review', 'preview', 'restore'].map((operation) => `/api/ai/assistants/a%2F1/projects/p/content/r/${operation}`));
|
|
28
|
+
expect(fetch.mock.calls[0][1]?.signal).toBe(abort.signal);
|
|
29
|
+
expect(JSON.parse(String(fetch.mock.calls[0][1]?.body))).toEqual({ providerKey: 'files' });
|
|
30
|
+
expect(JSON.parse(String(fetch.mock.calls[3][1]?.body))).toEqual({
|
|
31
|
+
revisionId: 'rev',
|
|
32
|
+
epoch: 2,
|
|
33
|
+
expectedSequence: 4,
|
|
34
|
+
});
|
|
35
|
+
for (const [, init] of fetch.mock.calls)
|
|
36
|
+
expect(new Headers(init?.headers).get('x-client-secret')).toBe('test-secret');
|
|
37
|
+
});
|
|
38
|
+
it('does not bypass a server authorization rejection', async () => {
|
|
39
|
+
const fetch = vi
|
|
40
|
+
.fn()
|
|
41
|
+
.mockImplementation(async () => new Response('Forbidden', { status: 403 }));
|
|
42
|
+
const client = new Client({
|
|
43
|
+
apiUrl: 'https://example.test/api/ai',
|
|
44
|
+
callerOptions: { fetch, maxRetries: 0 },
|
|
45
|
+
});
|
|
46
|
+
await expect(client.content.resolve({ assistantId: 'a', projectId: 'p' }, { resourceId: 'r' })).rejects.toThrow();
|
|
47
|
+
expect(fetch).toHaveBeenCalledOnce();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=content.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.test.mjs","sourceRoot":"","sources":["../../src/tests/content.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Client, HTTPError } from "../index.js";
|
|
3
|
+
describe('caller-managed recovery reads', () => {
|
|
4
|
+
it.each(['30', new Date(Date.now() + 60_000).toUTCString()])('exposes Retry-After %s after exactly one configured attempt', async (retryAfter) => {
|
|
5
|
+
const fetch = vi
|
|
6
|
+
.fn()
|
|
7
|
+
.mockResolvedValue(new Response('temporary outage', { status: 503, headers: { 'Retry-After': retryAfter } }));
|
|
8
|
+
const client = new Client({
|
|
9
|
+
apiUrl: 'https://test.example',
|
|
10
|
+
callerOptions: { fetch, maxRetries: 0 },
|
|
11
|
+
});
|
|
12
|
+
const error = await client.threads.get('thread').catch((error) => error);
|
|
13
|
+
expect(error).toBeInstanceOf(HTTPError);
|
|
14
|
+
expect(error.retryAfterMs).toBeGreaterThan(29_000);
|
|
15
|
+
expect(fetch).toHaveBeenCalledTimes(1);
|
|
16
|
+
});
|
|
17
|
+
it('forwards cancellation on status and final-message reads without starting a run', async () => {
|
|
18
|
+
const fetch = vi
|
|
19
|
+
.fn()
|
|
20
|
+
.mockImplementation(async () => Response.json({}));
|
|
21
|
+
const client = new Client({
|
|
22
|
+
apiUrl: 'https://test.example',
|
|
23
|
+
callerOptions: { fetch, maxRetries: 0 },
|
|
24
|
+
});
|
|
25
|
+
const signal = new AbortController().signal;
|
|
26
|
+
await client.threads.get('thread', { signal });
|
|
27
|
+
await client.runs.get('thread', 'run', { signal });
|
|
28
|
+
await client.conversations.get('conversation', { signal });
|
|
29
|
+
await client.conversations.searchMessages('conversation', { where: { executionId: 'run' } }, { signal });
|
|
30
|
+
expect(fetch.mock.calls.every(([, options]) => options?.signal === signal)).toBe(true);
|
|
31
|
+
expect(fetch.mock.calls.map(([url]) => new URL(String(url)).pathname)).toEqual([
|
|
32
|
+
'/threads/thread',
|
|
33
|
+
'/threads/thread/runs/run',
|
|
34
|
+
'/conversations/conversation',
|
|
35
|
+
'/conversations/conversation/messages/search',
|
|
36
|
+
]);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=recovery-read.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery-read.test.js","sourceRoot":"","sources":["../../src/tests/recovery-read.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Client, HTTPError } from "../index.mjs";
|
|
3
|
+
describe('caller-managed recovery reads', () => {
|
|
4
|
+
it.each(['30', new Date(Date.now() + 60_000).toUTCString()])('exposes Retry-After %s after exactly one configured attempt', async (retryAfter) => {
|
|
5
|
+
const fetch = vi
|
|
6
|
+
.fn()
|
|
7
|
+
.mockResolvedValue(new Response('temporary outage', { status: 503, headers: { 'Retry-After': retryAfter } }));
|
|
8
|
+
const client = new Client({
|
|
9
|
+
apiUrl: 'https://test.example',
|
|
10
|
+
callerOptions: { fetch, maxRetries: 0 },
|
|
11
|
+
});
|
|
12
|
+
const error = await client.threads.get('thread').catch((error) => error);
|
|
13
|
+
expect(error).toBeInstanceOf(HTTPError);
|
|
14
|
+
expect(error.retryAfterMs).toBeGreaterThan(29_000);
|
|
15
|
+
expect(fetch).toHaveBeenCalledTimes(1);
|
|
16
|
+
});
|
|
17
|
+
it('forwards cancellation on status and final-message reads without starting a run', async () => {
|
|
18
|
+
const fetch = vi
|
|
19
|
+
.fn()
|
|
20
|
+
.mockImplementation(async () => Response.json({}));
|
|
21
|
+
const client = new Client({
|
|
22
|
+
apiUrl: 'https://test.example',
|
|
23
|
+
callerOptions: { fetch, maxRetries: 0 },
|
|
24
|
+
});
|
|
25
|
+
const signal = new AbortController().signal;
|
|
26
|
+
await client.threads.get('thread', { signal });
|
|
27
|
+
await client.runs.get('thread', 'run', { signal });
|
|
28
|
+
await client.conversations.get('conversation', { signal });
|
|
29
|
+
await client.conversations.searchMessages('conversation', { where: { executionId: 'run' } }, { signal });
|
|
30
|
+
expect(fetch.mock.calls.every(([, options]) => options?.signal === signal)).toBe(true);
|
|
31
|
+
expect(fetch.mock.calls.map(([url]) => new URL(String(url)).pathname)).toEqual([
|
|
32
|
+
'/threads/thread',
|
|
33
|
+
'/threads/thread/runs/run',
|
|
34
|
+
'/conversations/conversation',
|
|
35
|
+
'/conversations/conversation/messages/search',
|
|
36
|
+
]);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=recovery-read.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery-read.test.mjs","sourceRoot":"","sources":["../../src/tests/recovery-read.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Client } from "../index.js";
|
|
3
|
+
describe('run display snapshot transport', () => {
|
|
4
|
+
it.each([false, true])('opts into display snapshots explicitly: %s', async (enabled) => {
|
|
5
|
+
const payload = { type: 'stream_snapshot', snapshot: { cursor: '30-0' }, continuous: true };
|
|
6
|
+
const fetch = vi.fn().mockResolvedValue(new Response(`id: 30-0\nevent: message\ndata: ${JSON.stringify(payload)}\n\nid: 31-0\nevent: message\ndata: {"type":"message","data":"tail"}\n\n`, { headers: { 'content-type': 'text/event-stream' } }));
|
|
7
|
+
const client = new Client({ apiUrl: 'https://xpert.example/api/ai', callerOptions: { fetch } });
|
|
8
|
+
const events = [];
|
|
9
|
+
for await (const event of client.runs.joinStream('thread', 'run', { lastEventId: '10-0', displaySnapshot: enabled }))
|
|
10
|
+
events.push(event);
|
|
11
|
+
expect(events.map((e) => e.id)).toEqual(['30-0', '31-0']);
|
|
12
|
+
expect(events[0].data).toEqual(payload);
|
|
13
|
+
const headers = new Headers(fetch.mock.calls[0][1]?.headers);
|
|
14
|
+
expect(headers.get('Last-Event-ID')).toBe('10-0');
|
|
15
|
+
expect(headers.get('X-Xpert-Display-Snapshot')).toBe(enabled ? '1' : null);
|
|
16
|
+
expect(fetch).toHaveBeenCalledTimes(1);
|
|
17
|
+
expect(fetch.mock.calls[0][1]?.method).toBe('GET');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=run-display-snapshot.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-display-snapshot.test.js","sourceRoot":"","sources":["../../src/tests/run-display-snapshot.test.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ;OAC1C,EAAE,MAAM,EAAE;AAEjB,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,4CAA4C,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACrF,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAC3E,mCAAmC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,0EAA0E,EACpI,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAE,CACrD,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { Client } from "../index.mjs";
|
|
3
|
+
describe('run display snapshot transport', () => {
|
|
4
|
+
it.each([false, true])('opts into display snapshots explicitly: %s', async (enabled) => {
|
|
5
|
+
const payload = { type: 'stream_snapshot', snapshot: { cursor: '30-0' }, continuous: true };
|
|
6
|
+
const fetch = vi.fn().mockResolvedValue(new Response(`id: 30-0\nevent: message\ndata: ${JSON.stringify(payload)}\n\nid: 31-0\nevent: message\ndata: {"type":"message","data":"tail"}\n\n`, { headers: { 'content-type': 'text/event-stream' } }));
|
|
7
|
+
const client = new Client({ apiUrl: 'https://xpert.example/api/ai', callerOptions: { fetch } });
|
|
8
|
+
const events = [];
|
|
9
|
+
for await (const event of client.runs.joinStream('thread', 'run', { lastEventId: '10-0', displaySnapshot: enabled }))
|
|
10
|
+
events.push(event);
|
|
11
|
+
expect(events.map((e) => e.id)).toEqual(['30-0', '31-0']);
|
|
12
|
+
expect(events[0].data).toEqual(payload);
|
|
13
|
+
const headers = new Headers(fetch.mock.calls[0][1]?.headers);
|
|
14
|
+
expect(headers.get('Last-Event-ID')).toBe('10-0');
|
|
15
|
+
expect(headers.get('X-Xpert-Display-Snapshot')).toBe(enabled ? '1' : null);
|
|
16
|
+
expect(fetch).toHaveBeenCalledTimes(1);
|
|
17
|
+
expect(fetch.mock.calls[0][1]?.method).toBe('GET');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=run-display-snapshot.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-display-snapshot.test.mjs","sourceRoot":"","sources":["../../src/tests/run-display-snapshot.test.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ;OAC1C,EAAE,MAAM,EAAE;AAEjB,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,4CAA4C,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACrF,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC5F,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAC3E,mCAAmC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,0EAA0E,EACpI,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAE,CACrD,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,8BAA8B,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { Client } from "../client.js";
|
|
3
|
+
describe('compact run status', () => {
|
|
4
|
+
it('uses the lifecycle endpoint without changing full get()', async () => {
|
|
5
|
+
const fetch = vi.fn().mockImplementation(async () => new Response(JSON.stringify({ run_id: 'run', status: 'running' }), { headers: { 'Content-Type': 'application/json' } }));
|
|
6
|
+
const client = new Client({ apiUrl: 'https://example.test/api/ai', callerOptions: { fetch } });
|
|
7
|
+
expect((await client.runs.getStatus('thread', 'run')).status).toBe('running');
|
|
8
|
+
await client.runs.get('thread', 'run');
|
|
9
|
+
expect(String(fetch.mock.calls[0][0])).toContain('/threads/thread/runs/run/status');
|
|
10
|
+
expect(String(fetch.mock.calls[1][0])).toMatch(/\/threads\/thread\/runs\/run$/);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=run-status.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-status.test.js","sourceRoot":"","sources":["../../src/tests/run-status.test.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ;OAC1C,EAAE,MAAM,EAAE;AAEjB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAA;QACtM,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QAC9F,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC7E,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAA;QACnF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { Client } from "../client.mjs";
|
|
3
|
+
describe('compact run status', () => {
|
|
4
|
+
it('uses the lifecycle endpoint without changing full get()', async () => {
|
|
5
|
+
const fetch = vi.fn().mockImplementation(async () => new Response(JSON.stringify({ run_id: 'run', status: 'running' }), { headers: { 'Content-Type': 'application/json' } }));
|
|
6
|
+
const client = new Client({ apiUrl: 'https://example.test/api/ai', callerOptions: { fetch } });
|
|
7
|
+
expect((await client.runs.getStatus('thread', 'run')).status).toBe('running');
|
|
8
|
+
await client.runs.get('thread', 'run');
|
|
9
|
+
expect(String(fetch.mock.calls[0][0])).toContain('/threads/thread/runs/run/status');
|
|
10
|
+
expect(String(fetch.mock.calls[1][0])).toMatch(/\/threads\/thread\/runs\/run$/);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=run-status.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-status.test.mjs","sourceRoot":"","sources":["../../src/tests/run-status.test.ts"],"names":[],"mappings":"OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ;OAC1C,EAAE,MAAM,EAAE;AAEjB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,EAA2B,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAA;QACtM,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,6BAA6B,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;QAC9F,MAAM,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC7E,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QACtC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAA;QACnF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAA;IACjF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { describe, expect, it, vi } from 'vitest';
|
|
2
2
|
import { Client } from "../index.js";
|
|
3
3
|
describe('thread run control', () => {
|
|
4
|
+
it.each([true, false])('reads retry availability (%s) without submitting a run', async (canRetry) => {
|
|
5
|
+
const fetch = vi.fn().mockImplementation(async () => new Response(JSON.stringify({ canRetry })));
|
|
6
|
+
const client = new Client({ apiUrl: 'https://xpert.example/api/ai', callerOptions: { fetch } });
|
|
7
|
+
expect(await client.threads.getCapabilities('branch/id')).toEqual({ canRetry });
|
|
8
|
+
expect(fetch.mock.calls.map(([url, init]) => [url.pathname, init?.method ?? 'GET', init?.body])).toEqual([
|
|
9
|
+
['/api/ai/threads/branch%2Fid/capabilities', 'GET', undefined],
|
|
10
|
+
]);
|
|
11
|
+
});
|
|
4
12
|
it('keeps the sealed side-chat mode and retry key in the copy request', async () => {
|
|
5
13
|
const fetch = vi
|
|
6
14
|
.fn()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-control.test.js","sourceRoot":"","sources":["../../src/tests/thread-control.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread-control.test.js","sourceRoot":"","sources":["../../src/tests/thread-control.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { describe, expect, it, vi } from 'vitest';
|
|
2
2
|
import { Client } from "../index.mjs";
|
|
3
3
|
describe('thread run control', () => {
|
|
4
|
+
it.each([true, false])('reads retry availability (%s) without submitting a run', async (canRetry) => {
|
|
5
|
+
const fetch = vi.fn().mockImplementation(async () => new Response(JSON.stringify({ canRetry })));
|
|
6
|
+
const client = new Client({ apiUrl: 'https://xpert.example/api/ai', callerOptions: { fetch } });
|
|
7
|
+
expect(await client.threads.getCapabilities('branch/id')).toEqual({ canRetry });
|
|
8
|
+
expect(fetch.mock.calls.map(([url, init]) => [url.pathname, init?.method ?? 'GET', init?.body])).toEqual([
|
|
9
|
+
['/api/ai/threads/branch%2Fid/capabilities', 'GET', undefined],
|
|
10
|
+
]);
|
|
11
|
+
});
|
|
4
12
|
it('keeps the sealed side-chat mode and retry key in the copy request', async () => {
|
|
5
13
|
const fetch = vi
|
|
6
14
|
.fn()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-control.test.mjs","sourceRoot":"","sources":["../../src/tests/thread-control.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread-control.test.mjs","sourceRoot":"","sources":["../../src/tests/thread-control.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,19 @@ export interface AsyncCallerParams {
|
|
|
21
21
|
export interface AsyncCallerCallOptions {
|
|
22
22
|
signal?: AbortSignal;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Utility error to properly handle failed requests
|
|
26
|
+
*/
|
|
27
|
+
export declare class HTTPError extends Error {
|
|
28
|
+
readonly retryAfterMs?: number;
|
|
29
|
+
status: number;
|
|
30
|
+
text: string;
|
|
31
|
+
response?: Response;
|
|
32
|
+
constructor(status: number, message: string, response?: Response, includeResponse?: boolean);
|
|
33
|
+
static fromResponse(response: Response, options?: {
|
|
34
|
+
includeResponse?: boolean;
|
|
35
|
+
}): Promise<HTTPError>;
|
|
36
|
+
}
|
|
24
37
|
/**
|
|
25
38
|
* A class that can be used to make async calls with concurrency and retry logic.
|
|
26
39
|
*
|
|
@@ -27,22 +27,31 @@ function isResponse(x) {
|
|
|
27
27
|
/**
|
|
28
28
|
* Utility error to properly handle failed requests
|
|
29
29
|
*/
|
|
30
|
-
class HTTPError extends Error {
|
|
30
|
+
export class HTTPError extends Error {
|
|
31
|
+
retryAfterMs;
|
|
31
32
|
status;
|
|
32
33
|
text;
|
|
33
34
|
response;
|
|
34
|
-
constructor(status, message, response) {
|
|
35
|
+
constructor(status, message, response, includeResponse = true) {
|
|
35
36
|
super(`HTTP ${status}: ${message}`);
|
|
36
37
|
this.status = status;
|
|
37
38
|
this.text = message;
|
|
38
|
-
this.response = response;
|
|
39
|
+
this.response = includeResponse ? response : undefined;
|
|
40
|
+
const retryAfter = response?.headers.get("Retry-After");
|
|
41
|
+
if (retryAfter) {
|
|
42
|
+
const duration = /^\d+(\.\d+)?$/.test(retryAfter)
|
|
43
|
+
? Number(retryAfter) * 1000
|
|
44
|
+
: Date.parse(retryAfter) - Date.now();
|
|
45
|
+
if (Number.isFinite(duration))
|
|
46
|
+
this.retryAfterMs = Math.max(0, duration);
|
|
47
|
+
}
|
|
39
48
|
}
|
|
40
49
|
static async fromResponse(response, options) {
|
|
41
50
|
try {
|
|
42
|
-
return new HTTPError(response.status, await response.text(), options?.includeResponse
|
|
51
|
+
return new HTTPError(response.status, await response.text(), response, options?.includeResponse === true);
|
|
43
52
|
}
|
|
44
53
|
catch {
|
|
45
|
-
return new HTTPError(response.status, response.statusText, options?.includeResponse
|
|
54
|
+
return new HTTPError(response.status, response.statusText, response, options?.includeResponse === true);
|
|
46
55
|
}
|
|
47
56
|
}
|
|
48
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async_caller.js","sourceRoot":"","sources":["../../src/utils/async_caller.ts"],"names":[],"mappings":"OAAO,MAAM,MAAM,SAAS;OACrB,SAAS,MAAM,SAAS;OACxB,EAAE,uBAAuB,EAAE;AAElC,MAAM,eAAe,GAAG;IACtB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,gCAAgC;IACrC,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,8EAA8E;IACnF,GAAG,EAAE,uBAAuB;CAC7B,CAAC;AA8BF;;;GAGG;AACH,SAAS,UAAU,CAAC,CAAU;IAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,QAAQ,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,SAAU,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"async_caller.js","sourceRoot":"","sources":["../../src/utils/async_caller.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,22 +27,31 @@ function isResponse(x) {
|
|
|
27
27
|
/**
|
|
28
28
|
* Utility error to properly handle failed requests
|
|
29
29
|
*/
|
|
30
|
-
class HTTPError extends Error {
|
|
30
|
+
export class HTTPError extends Error {
|
|
31
|
+
retryAfterMs;
|
|
31
32
|
status;
|
|
32
33
|
text;
|
|
33
34
|
response;
|
|
34
|
-
constructor(status, message, response) {
|
|
35
|
+
constructor(status, message, response, includeResponse = true) {
|
|
35
36
|
super(`HTTP ${status}: ${message}`);
|
|
36
37
|
this.status = status;
|
|
37
38
|
this.text = message;
|
|
38
|
-
this.response = response;
|
|
39
|
+
this.response = includeResponse ? response : undefined;
|
|
40
|
+
const retryAfter = response?.headers.get("Retry-After");
|
|
41
|
+
if (retryAfter) {
|
|
42
|
+
const duration = /^\d+(\.\d+)?$/.test(retryAfter)
|
|
43
|
+
? Number(retryAfter) * 1000
|
|
44
|
+
: Date.parse(retryAfter) - Date.now();
|
|
45
|
+
if (Number.isFinite(duration))
|
|
46
|
+
this.retryAfterMs = Math.max(0, duration);
|
|
47
|
+
}
|
|
39
48
|
}
|
|
40
49
|
static async fromResponse(response, options) {
|
|
41
50
|
try {
|
|
42
|
-
return new HTTPError(response.status, await response.text(), options?.includeResponse
|
|
51
|
+
return new HTTPError(response.status, await response.text(), response, options?.includeResponse === true);
|
|
43
52
|
}
|
|
44
53
|
catch {
|
|
45
|
-
return new HTTPError(response.status, response.statusText, options?.includeResponse
|
|
54
|
+
return new HTTPError(response.status, response.statusText, response, options?.includeResponse === true);
|
|
46
55
|
}
|
|
47
56
|
}
|
|
48
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"async_caller.mjs","sourceRoot":"","sources":["../../src/utils/async_caller.ts"],"names":[],"mappings":"OAAO,MAAM,MAAM,SAAS;OACrB,SAAS,MAAM,SAAS;OACxB,EAAE,uBAAuB,EAAE;AAElC,MAAM,eAAe,GAAG;IACtB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,gCAAgC;IACrC,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,8EAA8E;IACnF,GAAG,EAAE,uBAAuB;CAC7B,CAAC;AA8BF;;;GAGG;AACH,SAAS,UAAU,CAAC,CAAU;IAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,QAAQ,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,SAAU,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"async_caller.mjs","sourceRoot":"","sources":["../../src/utils/async_caller.ts"],"names":[],"mappings":"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"}
|
package/dist/view-extension.d.ts
CHANGED
|
@@ -297,6 +297,8 @@ export interface XpertViewActionDefinition {
|
|
|
297
297
|
requiredHostAccess?: XpertViewHostAccessLevel;
|
|
298
298
|
}
|
|
299
299
|
export interface XpertViewClientCommandDefinition {
|
|
300
|
+
/** A host must implement this command before mounting the view. Optional actions may omit this. */
|
|
301
|
+
required?: boolean;
|
|
300
302
|
key: string;
|
|
301
303
|
label?: XpertI18nObject;
|
|
302
304
|
description?: XpertI18nObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-extension.js","sourceRoot":"","sources":["../src/view-extension.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AACtE,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"view-extension.js","sourceRoot":"","sources":["../src/view-extension.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AACtE,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAA8B,CAAC;AA0XhF,MAAM,CAAC,MAAM,mCAAmC,GAC9C,6BAA6B,CAAC;AAChC,MAAM,CAAC,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;AACrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AACjE,MAAM,CAAC,MAAM,iCAAiC,GAAG,2BAA2B,CAAC;AAC7E,MAAM,CAAC,MAAM,wCAAwC,GACnD,yBAAyB,CAAC;AAC5B,MAAM,CAAC,MAAM,uCAAuC,GAAG,wBAAwB,CAAC;AAChF,MAAM,CAAC,MAAM,yDAAyD,GACpE,qBAAqB,CAAC;AAiExB,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AACvE,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-extension.mjs","sourceRoot":"","sources":["../src/view-extension.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AACtE,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"view-extension.mjs","sourceRoot":"","sources":["../src/view-extension.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAC,MAAM,4BAA4B,GAAG,yBAAyB,CAAC;AACtE,MAAM,CAAC,MAAM,iCAAiC,GAAG,8BAA8B,CAAC;AA0XhF,MAAM,CAAC,MAAM,mCAAmC,GAC9C,6BAA6B,CAAC;AAChC,MAAM,CAAC,MAAM,6BAA6B,GAAG,uBAAuB,CAAC;AACrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AACjE,MAAM,CAAC,MAAM,iCAAiC,GAAG,2BAA2B,CAAC;AAC7E,MAAM,CAAC,MAAM,wCAAwC,GACnD,yBAAyB,CAAC;AAC5B,MAAM,CAAC,MAAM,uCAAuC,GAAG,wBAAwB,CAAC;AAChF,MAAM,CAAC,MAAM,yDAAyD,GACpE,qBAAqB,CAAC;AAiExB,MAAM,CAAC,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AACvE,MAAM,CAAC,MAAM,kCAAkC,GAAG,6BAA6B,CAAC"}
|