@xpert-ai/xpert-sdk 0.0.13 → 0.0.15

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.
@@ -0,0 +1,222 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { ASSISTANT_CHAT_SEND_MESSAGE_COMMAND, ASSISTANT_CITATION_OPEN_EVENT, ASSISTANT_CONTEXT_SET_COMMAND, Client, } from "../index.mjs";
3
+ function jsonResponse(value) {
4
+ return new Response(JSON.stringify(value), {
5
+ status: 200,
6
+ headers: { "content-type": "application/json" },
7
+ });
8
+ }
9
+ describe("ViewHostsClient", () => {
10
+ it("exports Remote View runtime constants and public contract types", () => {
11
+ const inputSchema = {
12
+ type: "object",
13
+ properties: {
14
+ approved: { type: "boolean" },
15
+ },
16
+ };
17
+ const manifest = {
18
+ key: "provider__view",
19
+ title: { en_US: "View" },
20
+ hostType: "agent",
21
+ slot: "agent.workbench.fixed",
22
+ source: { provider: "provider" },
23
+ view: { type: "raw_json" },
24
+ dataSource: { mode: "platform" },
25
+ actions: [
26
+ {
27
+ key: "approve",
28
+ label: { en_US: "Approve" },
29
+ actionType: "invoke",
30
+ inputSchema,
31
+ },
32
+ ],
33
+ };
34
+ expect(manifest.actions?.[0]?.inputSchema).toBe(inputSchema);
35
+ expect(ASSISTANT_CHAT_SEND_MESSAGE_COMMAND).toBe("assistant.chat.send_message");
36
+ expect(ASSISTANT_CONTEXT_SET_COMMAND).toBe("assistant.context.set");
37
+ expect(ASSISTANT_CITATION_OPEN_EVENT).toBe("assistant.citation.open");
38
+ });
39
+ it("loads slot manifests and an individual manifest", async () => {
40
+ const manifest = {
41
+ key: "provider__view",
42
+ title: { en_US: "View" },
43
+ hostType: "agent",
44
+ slot: "agent.workbench.fixed",
45
+ source: { provider: "provider" },
46
+ view: { type: "raw_json" },
47
+ dataSource: { mode: "platform" },
48
+ };
49
+ const fetchMock = vi
50
+ .fn()
51
+ .mockResolvedValueOnce(jsonResponse([manifest]))
52
+ .mockResolvedValueOnce(jsonResponse(manifest));
53
+ const client = new Client({
54
+ apiUrl: "https://xpert.example/api/ai",
55
+ callerOptions: { fetch: fetchMock },
56
+ });
57
+ await expect(client.viewHosts.listSlotViews("agent", "agent/1", "agent.workbench.fixed")).resolves.toEqual([manifest]);
58
+ await expect(client.viewHosts.getManifest("agent", "agent/1", "provider__view")).resolves.toEqual(manifest);
59
+ expect((fetchMock.mock.calls[0]?.[0]).pathname).toBe("/api/view-hosts/agent/agent%2F1/slots/agent.workbench.fixed/views");
60
+ expect((fetchMock.mock.calls[1]?.[0]).pathname).toBe("/api/view-hosts/agent/agent%2F1/views/provider__view/manifest");
61
+ });
62
+ it("derives service URLs, encodes path/query values, and preserves request hooks", async () => {
63
+ const signal = new AbortController().signal;
64
+ const fetchMock = vi.fn().mockResolvedValue(jsonResponse([]));
65
+ const onRequest = vi.fn((_url, init) => ({
66
+ ...init,
67
+ headers: { ...init.headers, "x-workspace": "workspace-1" },
68
+ }));
69
+ const client = new Client({
70
+ apiUrl: "https://xpert.example/api/ai/",
71
+ callerOptions: { fetch: fetchMock },
72
+ onRequest,
73
+ });
74
+ await client.viewHosts.getData("agent", "agent/1", "provider__view 1", {
75
+ page: 2,
76
+ pageSize: 25,
77
+ search: "quarterly report",
78
+ filters: [{ key: "status", operator: "eq", value: "ready" }],
79
+ parameters: { table: "documents", enabled: true },
80
+ }, { signal });
81
+ const [url, init] = fetchMock.mock.calls[0] ?? [];
82
+ expect(url).toBeInstanceOf(URL);
83
+ expect(url.origin).toBe("https://xpert.example");
84
+ expect(url.pathname).toBe("/api/view-hosts/agent/agent%2F1/views/provider__view%201/data");
85
+ expect(url.searchParams.get("page")).toBe("2");
86
+ expect(url.searchParams.get("pageSize")).toBe("25");
87
+ expect(url.searchParams.get("search")).toBe("quarterly report");
88
+ expect(JSON.parse(url.searchParams.get("filters") ?? "")).toEqual([
89
+ { key: "status", operator: "eq", value: "ready" },
90
+ ]);
91
+ expect(JSON.parse(url.searchParams.get("parameters") ?? "")).toEqual({
92
+ table: "documents",
93
+ enabled: true,
94
+ });
95
+ expect(init?.signal).toBe(signal);
96
+ expect(new Headers(init?.headers).get("x-workspace")).toBe("workspace-1");
97
+ expect(onRequest).toHaveBeenCalledOnce();
98
+ });
99
+ it("returns remote component entry HTML as text", async () => {
100
+ const fetchMock = vi
101
+ .fn()
102
+ .mockResolvedValue(new Response('<!doctype html><div id="root"></div>', { status: 200 }));
103
+ const client = new Client({
104
+ apiUrl: "https://xpert.example/api/ai",
105
+ callerOptions: { fetch: fetchMock },
106
+ });
107
+ await expect(client.viewHosts.getRemoteComponentEntry("agent", "agent-1", "view-1")).resolves.toContain('id="root"');
108
+ const [, init] = fetchMock.mock.calls[0] ?? [];
109
+ expect(new Headers(init?.headers).get("accept")).toBe("text/html");
110
+ });
111
+ it("serializes JSON actions and multipart file actions", async () => {
112
+ const fetchMock = vi
113
+ .fn()
114
+ .mockImplementation(async () => jsonResponse({ success: true }));
115
+ const client = new Client({
116
+ apiUrl: "https://xpert.example/api/ai",
117
+ callerOptions: { fetch: fetchMock },
118
+ });
119
+ await client.viewHosts.executeAction("agent", "agent-1", "view-1", "approve", {
120
+ targetId: "doc-1",
121
+ input: { approved: true },
122
+ parameters: { source: "review" },
123
+ });
124
+ await client.viewHosts.executeFileAction("agent", "agent-1", "view-1", "upload", {
125
+ file: new Uint8Array([1, 2, 3]),
126
+ fileName: "evidence.bin",
127
+ targetId: "doc-1",
128
+ input: { replace: true },
129
+ parameters: { source: "review" },
130
+ });
131
+ const [, jsonInit] = fetchMock.mock.calls[0] ?? [];
132
+ expect(jsonInit?.body).toBe(JSON.stringify({
133
+ targetId: "doc-1",
134
+ input: { approved: true },
135
+ parameters: { source: "review" },
136
+ }));
137
+ const [, fileInit] = fetchMock.mock.calls[1] ?? [];
138
+ expect(fileInit?.body).toBeInstanceOf(FormData);
139
+ const formData = fileInit?.body;
140
+ expect(formData.get("targetId")).toBe("doc-1");
141
+ expect(formData.get("input")).toBe(JSON.stringify({ replace: true }));
142
+ expect(formData.get("parameters")).toBe(JSON.stringify({ source: "review" }));
143
+ const file = formData.get("file");
144
+ expect(file).toBeInstanceOf(Blob);
145
+ expect(file.name).toBe("evidence.bin");
146
+ });
147
+ it("uses the workspace-files service and credentials for file sessions", async () => {
148
+ const fetchMock = vi
149
+ .fn()
150
+ .mockResolvedValueOnce(jsonResponse({
151
+ sessionId: "session/1",
152
+ expiresAt: "2030-01-01T00:00:00.000Z",
153
+ }))
154
+ .mockResolvedValueOnce(jsonResponse({
155
+ url: "/content/session-1/grant-1/report.pdf",
156
+ expiresAt: "2030-01-01T00:00:00.000Z",
157
+ fileName: "report.pdf",
158
+ mimeType: "application/pdf",
159
+ }))
160
+ .mockResolvedValueOnce(jsonResponse({ success: true }));
161
+ const client = new Client({
162
+ apiUrl: "https://xpert.example/api/ai",
163
+ callerOptions: { fetch: fetchMock },
164
+ });
165
+ await client.viewHosts.createFileAccessSession("agent", "agent-1", "view-1");
166
+ await client.viewHosts.createFileAccessGrant("session/1", {
167
+ fileKey: "report",
168
+ purpose: "preview",
169
+ });
170
+ await client.viewHosts.revokeFileAccessSession("session/1");
171
+ const [createUrl, createInit] = fetchMock.mock.calls[0] ?? [];
172
+ expect(createUrl.pathname).toBe("/api/workspace-files/view-sessions");
173
+ expect(createInit?.credentials).toBe("include");
174
+ const [grantUrl] = fetchMock.mock.calls[1] ?? [];
175
+ expect(grantUrl.pathname).toBe("/api/workspace-files/view-sessions/session%2F1/grants");
176
+ const [revokeUrl, revokeInit] = fetchMock.mock.calls[2] ?? [];
177
+ expect(revokeUrl.pathname).toBe("/api/workspace-files/view-sessions/session%2F1");
178
+ expect(revokeInit?.credentials).toBe("include");
179
+ expect(revokeInit?.method).toBe("DELETE");
180
+ });
181
+ it("reuses API key, authentication, and organization headers across both services", async () => {
182
+ const fetchMock = vi
183
+ .fn()
184
+ .mockResolvedValueOnce(jsonResponse([]))
185
+ .mockResolvedValueOnce(jsonResponse({
186
+ sessionId: "session-1",
187
+ expiresAt: "2030-01-01T00:00:00.000Z",
188
+ }));
189
+ const client = new Client({
190
+ apiUrl: "https://xpert.example/api/ai",
191
+ apiKey: "api-key-secret",
192
+ defaultHeaders: {
193
+ authorization: "Bearer secret",
194
+ "organization-id": "organization-1",
195
+ },
196
+ callerOptions: { fetch: fetchMock },
197
+ });
198
+ await client.viewHosts.listSlotViews("agent", "agent-1", "agent.workbench.fixed");
199
+ await client.viewHosts.createFileAccessSession("agent", "agent-1", "view-1");
200
+ for (const [, init] of fetchMock.mock.calls) {
201
+ const headers = new Headers(init?.headers);
202
+ expect(headers.get("authorization")).toBe("Bearer secret");
203
+ expect(headers.get("x-api-key")).toBe("api-key-secret");
204
+ expect(headers.get("organization-id")).toBe("organization-1");
205
+ }
206
+ });
207
+ it("converts remote entry HTTP errors through the shared caller", async () => {
208
+ const fetchMock = vi.fn().mockResolvedValue(new Response("remote entry unavailable", {
209
+ status: 503,
210
+ statusText: "Service Unavailable",
211
+ }));
212
+ const client = new Client({
213
+ apiUrl: "https://xpert.example/api/ai",
214
+ callerOptions: { fetch: fetchMock, maxRetries: 0 },
215
+ });
216
+ await expect(client.viewHosts.getRemoteComponentEntry("agent", "agent-1", "view-1")).rejects.toMatchObject({
217
+ status: 503,
218
+ message: expect.stringContaining("remote entry unavailable"),
219
+ });
220
+ });
221
+ });
222
+ //# sourceMappingURL=view-hosts.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-hosts.test.mjs","sourceRoot":"","sources":["../../src/tests/view-hosts.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,428 @@
1
+ import type { IconDefinition } from "./schema.js";
2
+ export type XpertViewHostType = "integration" | "knowledgebase" | "agent" | "project" | "sandbox" | (string & {});
3
+ export type XpertViewSlotMode = "tabs" | "sections" | "widgets" | "sidebar";
4
+ export type XpertViewSchemaType = "stats" | "table" | "list" | "detail" | "raw_json" | "remote_component";
5
+ export type XpertRemoteComponentRuntime = "react" | "vue" | "esm";
6
+ export type XpertViewValueType = "text" | "number" | "status" | "datetime" | "json";
7
+ export type XpertViewColumnDataType = "text" | "number" | "date" | "datetime" | "status" | "tag" | "avatar" | "link";
8
+ export type XpertViewActionPlacement = "toolbar" | "row";
9
+ export type XpertViewActionType = "invoke" | "navigate" | "open_detail" | "refresh";
10
+ export type XpertViewActionTransport = "json" | "file";
11
+ export type XpertViewFileAccessPurpose = "preview" | "download";
12
+ export type XpertViewSortDirection = "asc" | "desc";
13
+ export type XpertViewFilterOperator = "eq" | "neq" | "contains" | "starts_with" | "ends_with" | "in" | "gt" | "gte" | "lt" | "lte";
14
+ export type XpertViewScalar = string | number | boolean | null;
15
+ export interface XpertI18nObject {
16
+ en_US: string;
17
+ zh_Hans?: string;
18
+ }
19
+ export type XpertViewJsonSchemaValue = string | number | boolean | null | XpertViewJsonSchemaValue[] | {
20
+ [key: string]: XpertViewJsonSchemaValue;
21
+ };
22
+ export interface XpertViewJsonSchemaNode {
23
+ type?: string | string[];
24
+ title?: XpertI18nObject;
25
+ description?: XpertI18nObject;
26
+ default?: XpertViewJsonSchemaValue;
27
+ enum?: XpertViewJsonSchemaValue[];
28
+ properties?: Record<string, XpertViewJsonSchemaNode>;
29
+ items?: XpertViewJsonSchemaNode | XpertViewJsonSchemaNode[];
30
+ required?: string[];
31
+ additionalProperties?: boolean | XpertViewJsonSchemaNode;
32
+ [key: string]: XpertViewJsonSchemaValue | XpertViewJsonSchemaNode | XpertViewJsonSchemaNode[] | Record<string, XpertViewJsonSchemaNode> | XpertI18nObject | undefined;
33
+ }
34
+ export interface XpertViewJsonSchema extends XpertViewJsonSchemaNode {
35
+ type: "object";
36
+ properties: Record<string, XpertViewJsonSchemaNode>;
37
+ }
38
+ export interface XpertViewHostContext {
39
+ tenantId: string;
40
+ organizationId?: string | null;
41
+ workspaceId?: string | null;
42
+ userId: string;
43
+ hostType: XpertViewHostType;
44
+ hostId: string;
45
+ module?: string;
46
+ route?: string;
47
+ permissions?: string[];
48
+ locale?: string;
49
+ }
50
+ export interface XpertViewHostCapabilities {
51
+ features?: string[];
52
+ }
53
+ export type XpertViewHostState = Record<string, unknown>;
54
+ export interface XpertResolvedViewHostContext extends XpertViewHostContext {
55
+ slots: XpertViewSlot[];
56
+ hostSnapshot?: unknown;
57
+ capabilities?: XpertViewHostCapabilities;
58
+ hostState?: XpertViewHostState;
59
+ }
60
+ export interface XpertViewSlot {
61
+ key: string;
62
+ title?: XpertI18nObject;
63
+ mode: XpertViewSlotMode;
64
+ order?: number;
65
+ manifestPolicy?: {
66
+ requireFeatureActivation?: boolean;
67
+ };
68
+ }
69
+ export interface XpertViewSource {
70
+ provider: string;
71
+ plugin?: string;
72
+ version?: string;
73
+ }
74
+ export interface XpertViewBadge {
75
+ type: "count" | "status" | "text";
76
+ value?: string | number;
77
+ }
78
+ export interface XpertViewPolling {
79
+ enabled: boolean;
80
+ intervalMs?: number;
81
+ }
82
+ export interface XpertViewActivation {
83
+ requiredFeatures?: string[];
84
+ }
85
+ export interface XpertWorkbenchViewOptions {
86
+ fixed?: boolean;
87
+ menu?: {
88
+ enabled?: boolean;
89
+ label?: string | XpertI18nObject;
90
+ order?: number;
91
+ icon?: IconDefinition;
92
+ };
93
+ }
94
+ export interface XpertViewCachePolicy {
95
+ enabled?: boolean;
96
+ ttlMs?: number;
97
+ }
98
+ export interface XpertViewQuerySchema {
99
+ supportsPagination?: boolean;
100
+ supportsSearch?: boolean;
101
+ supportsSort?: boolean;
102
+ supportsFilter?: boolean;
103
+ supportsCursor?: boolean;
104
+ supportsSelection?: boolean;
105
+ supportsParameters?: boolean;
106
+ defaultPageSize?: number;
107
+ }
108
+ export interface XpertViewDataSource {
109
+ mode: "platform";
110
+ querySchema?: XpertViewQuerySchema;
111
+ cache?: XpertViewCachePolicy;
112
+ polling?: XpertViewPolling;
113
+ }
114
+ export interface XpertViewFilter {
115
+ key: string;
116
+ operator?: XpertViewFilterOperator;
117
+ value: XpertViewScalar | XpertViewScalar[];
118
+ }
119
+ export interface XpertViewQuery {
120
+ page?: number;
121
+ pageSize?: number;
122
+ cursor?: string;
123
+ search?: string;
124
+ sortBy?: string;
125
+ sortDirection?: XpertViewSortDirection;
126
+ filters?: XpertViewFilter[];
127
+ selectionId?: string;
128
+ parameters?: Record<string, XpertViewScalar | XpertViewScalar[]>;
129
+ }
130
+ export interface XpertStatsViewSchema {
131
+ type: "stats";
132
+ items: Array<{
133
+ key: string;
134
+ label: XpertI18nObject;
135
+ valueType?: XpertViewValueType;
136
+ }>;
137
+ }
138
+ export interface XpertTableViewSchema {
139
+ type: "table";
140
+ columns: Array<{
141
+ key: string;
142
+ label: XpertI18nObject;
143
+ dataType?: XpertViewColumnDataType;
144
+ width?: string;
145
+ sortable?: boolean;
146
+ searchable?: boolean;
147
+ }>;
148
+ pagination?: {
149
+ enabled: boolean;
150
+ pageSize?: number;
151
+ };
152
+ search?: {
153
+ enabled: boolean;
154
+ placeholder?: XpertI18nObject;
155
+ };
156
+ }
157
+ export interface XpertListViewSchema {
158
+ type: "list";
159
+ item: {
160
+ titleKey: string;
161
+ subtitleKey?: string;
162
+ descriptionKey?: string;
163
+ metaKeys?: string[];
164
+ };
165
+ pagination?: {
166
+ enabled: boolean;
167
+ pageSize?: number;
168
+ };
169
+ search?: {
170
+ enabled: boolean;
171
+ placeholder?: XpertI18nObject;
172
+ };
173
+ }
174
+ export interface XpertDetailViewSchema {
175
+ type: "detail";
176
+ fields: Array<{
177
+ key: string;
178
+ label: XpertI18nObject;
179
+ dataType?: XpertViewValueType;
180
+ }>;
181
+ }
182
+ export interface XpertRawJsonViewSchema {
183
+ type: "raw_json";
184
+ }
185
+ export interface XpertRemoteComponentViewSchema {
186
+ type: "remote_component";
187
+ runtime: XpertRemoteComponentRuntime;
188
+ protocolVersion: 1;
189
+ component: {
190
+ isolation: "iframe" | "module_federation";
191
+ entry: string;
192
+ module?: string;
193
+ exportName?: string;
194
+ integrity?: string;
195
+ propsSchema?: XpertViewJsonSchema;
196
+ };
197
+ dataSource: {
198
+ mode: "platform";
199
+ };
200
+ actions?: XpertViewActionDefinition[];
201
+ }
202
+ export interface XpertRemoteComponentEntry {
203
+ html: string;
204
+ contentType?: "text/html; charset=utf-8";
205
+ }
206
+ export type XpertViewSchema = XpertStatsViewSchema | XpertTableViewSchema | XpertListViewSchema | XpertDetailViewSchema | XpertRawJsonViewSchema | XpertRemoteComponentViewSchema;
207
+ export interface XpertViewParameterDefinition {
208
+ key: string;
209
+ label: XpertI18nObject;
210
+ description?: XpertI18nObject;
211
+ required?: boolean;
212
+ type?: "string" | "number" | "boolean";
213
+ optionSource?: {
214
+ mode: "provider";
215
+ searchable?: boolean;
216
+ preload?: boolean;
217
+ dependsOn?: string[];
218
+ };
219
+ }
220
+ export interface XpertViewParameterOption {
221
+ value: XpertViewScalar;
222
+ label: string;
223
+ description?: string | null;
224
+ disabled?: boolean;
225
+ }
226
+ export interface XpertViewParameterOptionsQuery {
227
+ search?: string;
228
+ parameters?: Record<string, XpertViewScalar | XpertViewScalar[]>;
229
+ }
230
+ export interface XpertViewParameterOptionsResult {
231
+ items: XpertViewParameterOption[];
232
+ }
233
+ export interface XpertViewActionDefinition {
234
+ key: string;
235
+ label: XpertI18nObject;
236
+ icon?: string;
237
+ placement?: XpertViewActionPlacement;
238
+ actionType: XpertViewActionType;
239
+ transport?: XpertViewActionTransport;
240
+ inputSchema?: XpertViewJsonSchema;
241
+ inputDefaults?: "target" | Record<string, unknown>;
242
+ confirm?: {
243
+ title?: XpertI18nObject;
244
+ message?: XpertI18nObject;
245
+ };
246
+ permissions?: string[];
247
+ }
248
+ export interface XpertViewClientCommandDefinition {
249
+ key: string;
250
+ label?: XpertI18nObject;
251
+ description?: XpertI18nObject;
252
+ permissions?: string[];
253
+ }
254
+ export interface XpertViewFileAccessDefinition {
255
+ purposes: XpertViewFileAccessPurpose[];
256
+ }
257
+ export interface XpertViewFileAccessRequest {
258
+ fileKey: string;
259
+ targetId?: string;
260
+ purpose: XpertViewFileAccessPurpose;
261
+ }
262
+ export interface XpertViewFileAccessSessionResult {
263
+ sessionId: string;
264
+ expiresAt: string;
265
+ }
266
+ export interface XpertViewFileAccessGrantResult {
267
+ url: string;
268
+ expiresAt: string;
269
+ fileName: string;
270
+ mimeType: string;
271
+ size?: number;
272
+ }
273
+ export declare const ASSISTANT_CHAT_SEND_MESSAGE_COMMAND = "assistant.chat.send_message";
274
+ export declare const ASSISTANT_CONTEXT_SET_COMMAND = "assistant.context.set";
275
+ export declare const WORKBENCH_FILE_OPEN_COMMAND = "workbench.file.open";
276
+ export declare const WORKBENCH_NAVIGATION_OPEN_COMMAND = "workbench.navigation.open";
277
+ export declare const WORKBENCH_KNOWLEDGEBASE_DOCUMENTS_TARGET = "knowledgebase.documents";
278
+ export declare const WORKBENCH_ASSISTANT_CONVERSATION_TARGET = "assistant.conversation";
279
+ export declare const XPERT_REMOTE_COMPONENT_INVOKE_CLIENT_COMMAND_MESSAGE_TYPE = "invokeClientCommand";
280
+ export interface WorkbenchOpenFileEvidenceBox {
281
+ x: number;
282
+ y: number;
283
+ width: number;
284
+ height: number;
285
+ }
286
+ export interface WorkbenchOpenFileEvidence {
287
+ observationId?: string;
288
+ attributeCode?: string;
289
+ displayValue?: string;
290
+ text?: string;
291
+ method?: string;
292
+ region?: string;
293
+ confidence?: number;
294
+ locator?: {
295
+ sourceType?: string;
296
+ page?: number;
297
+ coordinateSpace?: string;
298
+ recognitionRotation?: number;
299
+ orientationConfidence?: number;
300
+ box?: WorkbenchOpenFileEvidenceBox;
301
+ };
302
+ }
303
+ export interface WorkbenchOpenFile {
304
+ id?: string;
305
+ fileId?: string;
306
+ fileAssetId?: string;
307
+ storageFileId?: string;
308
+ name: string;
309
+ mimeType?: string;
310
+ size?: number;
311
+ url: string;
312
+ previewUrl?: string;
313
+ evidence?: WorkbenchOpenFileEvidence;
314
+ }
315
+ export type WorkbenchNavigationOpenTarget = typeof WORKBENCH_KNOWLEDGEBASE_DOCUMENTS_TARGET | typeof WORKBENCH_ASSISTANT_CONVERSATION_TARGET;
316
+ export interface WorkbenchNavigationOpenPayload {
317
+ target: WorkbenchNavigationOpenTarget;
318
+ knowledgebaseId?: string;
319
+ conversationId?: string;
320
+ threadId?: string;
321
+ executionId?: string;
322
+ }
323
+ export interface WorkbenchAssistantConversationOpenRequest {
324
+ conversationId: string;
325
+ threadId?: string;
326
+ executionId?: string;
327
+ }
328
+ export interface XpertRemoteComponentInvokeClientCommandRequest {
329
+ type: typeof XPERT_REMOTE_COMPONENT_INVOKE_CLIENT_COMMAND_MESSAGE_TYPE;
330
+ requestId: string;
331
+ commandKey: string;
332
+ payload?: unknown;
333
+ }
334
+ export declare const ASSISTANT_CITATION_OPEN_EVENT = "assistant.citation.open";
335
+ export declare const KNOWLEDGEBASE_OPEN_CITATION_EFFECT = "knowledgebase.open_citation";
336
+ export type XpertViewHostEventSubscriptionActionType = "refresh" | "forward" | "refresh-and-forward";
337
+ export interface XpertViewHostEventSubscription {
338
+ key: string;
339
+ event: string;
340
+ filter?: {
341
+ sources?: string[];
342
+ toolNames?: string[];
343
+ viewKeys?: string[];
344
+ visualizationTypes?: string[];
345
+ };
346
+ action?: {
347
+ type?: XpertViewHostEventSubscriptionActionType;
348
+ debounceMs?: number;
349
+ };
350
+ }
351
+ export interface XpertViewHostEvents {
352
+ subscriptions?: XpertViewHostEventSubscription[];
353
+ }
354
+ export interface XpertViewHostEventVisualization {
355
+ type?: string;
356
+ viewKey?: string;
357
+ title?: string;
358
+ slotKey?: string;
359
+ parameterKey?: string;
360
+ }
361
+ export interface XpertRemoteViewHostEventMessage {
362
+ id: string;
363
+ type: string;
364
+ source: string;
365
+ receivedAt: string;
366
+ threadId?: string;
367
+ toolName?: string;
368
+ toolCallId?: string;
369
+ runId?: string;
370
+ durationMs?: number;
371
+ data?: Record<string, unknown>;
372
+ visualization?: XpertViewHostEventVisualization;
373
+ }
374
+ export interface XpertViewHostEventMessage extends XpertRemoteViewHostEventMessage {
375
+ hostType?: string;
376
+ hostId?: string;
377
+ }
378
+ export interface XpertExtensionViewManifest {
379
+ key: string;
380
+ title: XpertI18nObject;
381
+ description?: XpertI18nObject;
382
+ icon?: IconDefinition;
383
+ hostType: XpertViewHostType;
384
+ slot: string;
385
+ order?: number;
386
+ visible?: boolean;
387
+ source: XpertViewSource;
388
+ permissions?: string[];
389
+ badge?: XpertViewBadge;
390
+ refreshable?: boolean;
391
+ polling?: XpertViewPolling;
392
+ activation?: XpertViewActivation;
393
+ workbench?: XpertWorkbenchViewOptions;
394
+ view: XpertViewSchema;
395
+ dataSource: XpertViewDataSource;
396
+ parameters?: XpertViewParameterDefinition[];
397
+ actions?: XpertViewActionDefinition[];
398
+ clientCommands?: XpertViewClientCommandDefinition[];
399
+ fileAccess?: XpertViewFileAccessDefinition;
400
+ hostEvents?: XpertViewHostEvents;
401
+ }
402
+ export interface XpertViewActionRequest {
403
+ targetId?: string;
404
+ input?: Record<string, unknown> | null;
405
+ parameters?: Record<string, XpertViewScalar | XpertViewScalar[]>;
406
+ }
407
+ export interface XpertViewDataResult<TItem = unknown, TSummary = unknown> {
408
+ items?: TItem[];
409
+ item?: TItem;
410
+ total?: number;
411
+ nextCursor?: string;
412
+ summary?: TSummary;
413
+ meta?: unknown;
414
+ }
415
+ export interface XpertViewActionResult<TData = unknown> {
416
+ success: boolean;
417
+ message?: XpertI18nObject;
418
+ data?: TData;
419
+ refresh?: boolean;
420
+ }
421
+ export type XpertViewFile = File | Blob | ArrayBuffer | ArrayBufferView;
422
+ export interface XpertViewFileActionRequest extends XpertViewActionRequest {
423
+ file: XpertViewFile;
424
+ fileName?: string;
425
+ }
426
+ export interface XpertViewRequestOptions {
427
+ signal?: AbortSignal;
428
+ }
@@ -0,0 +1,10 @@
1
+ export const ASSISTANT_CHAT_SEND_MESSAGE_COMMAND = "assistant.chat.send_message";
2
+ export const ASSISTANT_CONTEXT_SET_COMMAND = "assistant.context.set";
3
+ export const WORKBENCH_FILE_OPEN_COMMAND = "workbench.file.open";
4
+ export const WORKBENCH_NAVIGATION_OPEN_COMMAND = "workbench.navigation.open";
5
+ export const WORKBENCH_KNOWLEDGEBASE_DOCUMENTS_TARGET = "knowledgebase.documents";
6
+ export const WORKBENCH_ASSISTANT_CONVERSATION_TARGET = "assistant.conversation";
7
+ export const XPERT_REMOTE_COMPONENT_INVOKE_CLIENT_COMMAND_MESSAGE_TYPE = "invokeClientCommand";
8
+ export const ASSISTANT_CITATION_OPEN_EVENT = "assistant.citation.open";
9
+ export const KNOWLEDGEBASE_OPEN_CITATION_EFFECT = "knowledgebase.open_citation";
10
+ //# sourceMappingURL=view-extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-extension.js","sourceRoot":"","sources":["../src/view-extension.ts"],"names":[],"mappings":"AA+WA,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"}