@xpert-ai/xpert-sdk 0.4.3 → 0.5.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/index.d.ts CHANGED
@@ -8,5 +8,7 @@ export type { Command, OnConflictBehavior, RunsInvokePayload, } from "./types.js
8
8
  export type { AIMessage, ChatSkillUsage, ChatTaskSummaryOutputKind, ChatTaskSummaryOutputStatus, ChatTaskSummarySourceKind, ChatTaskSummaryTodoItem, ChatTaskSummaryTodoStatus, FileChangeLineStats, FileChangeResource, FileChangeSetResource, FileRevision, FunctionMessage, HumanMessage, Message, MessageFileChangeStats, RemoveMessage, SystemMessage, ToolMessage, } from "./types.messages.js";
9
9
  export type { CustomStreamEvent, DebugStreamEvent, ErrorStreamEvent, EventsStreamEvent, FeedbackStreamEvent, MessagesStreamEvent, MessagesTupleStreamEvent, MetadataStreamEvent, StreamMode, UpdatesStreamEvent, ValuesStreamEvent, } from "./types.stream.js";
10
10
  export { ASSISTANT_CHAT_SEND_MESSAGE_COMMAND, ASSISTANT_CITATION_OPEN_EVENT, ASSISTANT_CONTEXT_SET_COMMAND, KNOWLEDGEBASE_OPEN_CITATION_EFFECT, WORKBENCH_ASSISTANT_CONVERSATION_TARGET, WORKBENCH_FILE_OPEN_COMMAND, WORKBENCH_KNOWLEDGEBASE_DOCUMENTS_TARGET, WORKBENCH_NAVIGATION_OPEN_COMMAND, XPERT_REMOTE_COMPONENT_INVOKE_CLIENT_COMMAND_MESSAGE_TYPE, XPERT_VIEW_CONVERSATION_ID_HEADER, XPERT_VIEW_PROJECT_ID_HEADER, } from "./view-extension.js";
11
- export type { XpertExtensionViewManifest, XpertI18nObject, XpertRemoteComponentEntry, XpertRemoteComponentInvokeClientCommandRequest, XpertRemoteComponentRuntime, XpertRemoteComponentViewSchema, XpertRemoteViewHostEventMessage, XpertResolvedViewHostContext, XpertViewActionDefinition, XpertViewActionPlacement, XpertViewActionRequest, XpertViewActionResult, XpertViewActionTransport, XpertViewActionType, XpertViewActivation, XpertViewBadge, XpertViewCachePolicy, XpertViewClientCommandDefinition, XpertViewColumnDataType, XpertViewDataResult, XpertViewDataSource, XpertDetailViewSchema, XpertViewFile, XpertViewFileAccessDefinition, XpertViewFileAccessGrantResult, XpertViewFileAccessPurpose, XpertViewFileAccessRequest, XpertViewFileAccessSessionResult, XpertViewFileActionRequest, XpertViewFilter, XpertViewFilterOperator, XpertViewHostCapabilities, XpertViewFeatureProvider, XpertViewHostAccessLevel, XpertViewHostContext, XpertViewHostEventMessage, XpertViewHostEventSubscription, XpertViewHostEventSubscriptionActionType, XpertViewHostEventVisualization, XpertViewHostEvents, XpertViewHostState, XpertViewHostType, XpertViewJsonSchema, XpertViewJsonSchemaNode, XpertViewJsonSchemaValue, XpertListViewSchema, XpertViewParameterDefinition, XpertViewParameterOption, XpertViewParameterOptionsQuery, XpertViewParameterOptionsResult, XpertViewPolling, XpertViewQuery, XpertViewQuerySchema, XpertRawJsonViewSchema, XpertViewRequestOptions, XpertViewRuntimeScope, XpertViewRuntimeScopeInput, XpertViewProjectAccess, XpertViewWorkspaceFilesScope, XpertViewScalar, XpertViewSchema, XpertViewSchemaType, XpertViewSlot, XpertViewSlotMode, XpertViewSortDirection, XpertViewSource, XpertStatsViewSchema, XpertTableViewSchema, XpertViewValueType, XpertWorkbenchViewOptions, WorkbenchAssistantConversationOpenRequest, WorkbenchNavigationOpenPayload, WorkbenchNavigationOpenTarget, WorkbenchOpenFile, WorkbenchOpenFileEvidence, WorkbenchOpenFileEvidenceBox, } from "./view-extension.js";
11
+ export type { XpertExtensionViewManifest, XpertI18nObject, XpertRemoteComponentEntry, XpertRemoteComponentInvokeClientCommandRequest, XpertRemoteComponentRuntime, XpertRemoteComponentViewSchema, XpertRemoteViewHostEventMessage, XpertResolvedViewHostContext, XpertViewActionDefinition, XpertViewActionPlacement, XpertViewActionRequest, XpertViewActionResult, XpertViewActionTransport, XpertViewActionType, XpertViewActivation, XpertViewBadge, XpertViewCachePolicy, XpertViewClientCommandDefinition, XpertViewColumnDataType, XpertViewDataResult, XpertViewDataSource, XpertDetailViewSchema, XpertViewFile, XpertViewFileAccessDefinition, XpertViewFileAccessGrantResult, XpertViewFileAccessPurpose, XpertViewFileAccessRequest, XpertViewFileAccessSessionResult, XpertViewFileActionRequest, XpertViewFilter, XpertViewFilterOperator, XpertViewHostCapabilities, XpertViewFeatureProvider, XpertViewHostAccessLevel, XpertViewHostContext, XpertViewHostEventMessage, XpertViewHostEventSubscription, XpertViewHostEventSubscriptionActionType, XpertViewHostEventVisualization, XpertViewHostEvents, XpertViewHostState, XpertViewHostType, XpertViewJsonSchema, XpertViewJsonSchemaNode, XpertViewJsonSchemaValue, XpertListViewSchema, XpertViewParameterDefinition, XpertViewParameterOption, XpertViewParameterOptionsQuery, XpertViewParameterOptionsResult, XpertViewPolling, XpertViewQuery, XpertViewQuerySchema, XpertRawJsonViewSchema, XpertViewRequestOptions, XpertViewRuntimeScope, XpertViewRuntimeScopeInput, XpertViewProjectAccess, XpertViewWorkspaceFilesScope, XpertViewScalar, XpertViewSchema, XpertViewSchemaType, XpertViewSlot, XpertViewSlotMode, XpertViewSortDirection, XpertViewSource, XpertStatsViewSchema, XpertTableViewSchema, XpertViewValueType, XpertWorkbenchViewOptions, WorkbenchAssistantConversationOpenRequest, WorkbenchExtensionViewOpenRequest, WorkbenchNavigationOpenPayload, WorkbenchNavigationOpenTarget, WorkbenchOpenFile, WorkbenchOpenFileEvidence, WorkbenchOpenFileEvidenceBox, } from "./view-extension.js";
12
12
  export type * from "./runtime-resources.js";
13
+ export * from "./workbench-open.js";
14
+ export type { ConversationResourceCard, ResourceCardOpenTarget, TMessageContentResourceCard } from './resource-card.js';
package/dist/index.js CHANGED
@@ -2,4 +2,5 @@ export { Client, ConnectorsClient, ProjectsClient, WorkspacesClient, XpertsClien
2
2
  export { McpClient, McpAppsClient, McpPublicationsClient } from "./mcp/index.js";
3
3
  export { overrideFetchImplementation } from "./singletons/fetch.js";
4
4
  export { ASSISTANT_CHAT_SEND_MESSAGE_COMMAND, ASSISTANT_CITATION_OPEN_EVENT, ASSISTANT_CONTEXT_SET_COMMAND, KNOWLEDGEBASE_OPEN_CITATION_EFFECT, WORKBENCH_ASSISTANT_CONVERSATION_TARGET, WORKBENCH_FILE_OPEN_COMMAND, WORKBENCH_KNOWLEDGEBASE_DOCUMENTS_TARGET, WORKBENCH_NAVIGATION_OPEN_COMMAND, XPERT_REMOTE_COMPONENT_INVOKE_CLIENT_COMMAND_MESSAGE_TYPE, XPERT_VIEW_CONVERSATION_ID_HEADER, XPERT_VIEW_PROJECT_ID_HEADER, } from "./view-extension.js";
5
+ export * from "./workbench-open.js";
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -2,4 +2,5 @@ export { Client, ConnectorsClient, ProjectsClient, WorkspacesClient, XpertsClien
2
2
  export { McpClient, McpAppsClient, McpPublicationsClient } from "./mcp/index.mjs";
3
3
  export { overrideFetchImplementation } from "./singletons/fetch.mjs";
4
4
  export { ASSISTANT_CHAT_SEND_MESSAGE_COMMAND, ASSISTANT_CITATION_OPEN_EVENT, ASSISTANT_CONTEXT_SET_COMMAND, KNOWLEDGEBASE_OPEN_CITATION_EFFECT, WORKBENCH_ASSISTANT_CONVERSATION_TARGET, WORKBENCH_FILE_OPEN_COMMAND, WORKBENCH_KNOWLEDGEBASE_DOCUMENTS_TARGET, WORKBENCH_NAVIGATION_OPEN_COMMAND, XPERT_REMOTE_COMPONENT_INVOKE_CLIENT_COMMAND_MESSAGE_TYPE, XPERT_VIEW_CONVERSATION_ID_HEADER, XPERT_VIEW_PROJECT_ID_HEADER, } from "./view-extension.mjs";
5
+ export * from "./workbench-open.mjs";
5
6
  //# sourceMappingURL=index.mjs.map
package/dist/mcp/apps.js CHANGED
@@ -21,10 +21,10 @@ export class McpAppsClient {
21
21
  this.transport = transport;
22
22
  }
23
23
  getResource(appInstanceId, query, options) {
24
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/resource`, { params: params(query), signal: options?.signal });
24
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/resource`, { params: params(query), signal: options?.signal });
25
25
  }
26
26
  rpc(appInstanceId, request, query, options) {
27
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/rpc`, {
27
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/rpc`, {
28
28
  method: 'POST',
29
29
  json: request,
30
30
  params: params(query),
@@ -32,13 +32,13 @@ export class McpAppsClient {
32
32
  });
33
33
  }
34
34
  approve(appInstanceId, approvalId, query, options) {
35
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/approve`, { method: 'POST', params: params(query), signal: options?.signal });
35
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/approve`, { method: 'POST', params: params(query), signal: options?.signal });
36
36
  }
37
37
  reject(appInstanceId, approvalId, query, options) {
38
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/reject`, { method: 'POST', params: params(query), signal: options?.signal });
38
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/reject`, { method: 'POST', params: params(query), signal: options?.signal });
39
39
  }
40
40
  async teardown(appInstanceId, query, options) {
41
- await this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}`, {
41
+ await this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}`, {
42
42
  method: 'DELETE',
43
43
  params: params(query),
44
44
  emptyResponse: undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/mcp/apps.ts"],"names":[],"mappings":"AAQA,SAAS,EAAE,CAAC,KAAa;IACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,MAAM,CAAC,KAAyB;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAExD,WAAW,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QACvF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,2BAA2B,EAAE,CAAC,aAAa,CAAC,WAAW,EACvD,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,GAAG,CACD,aAAqB,EACrB,OAAgB,EAChB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAI,2BAA2B,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE;YACnF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,2BAA2B,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,UAAU,EAClF,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,2BAA2B,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,SAAS,EACjF,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QAC1F,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE;YAC3E,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,aAAa,EAAE,SAAS;YACxB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/mcp/apps.ts"],"names":[],"mappings":"AAQA,SAAS,EAAE,CAAC,KAAa;IACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,MAAM,CAAC,KAAyB;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAExD,WAAW,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QACvF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC,WAAW,EAC5C,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,GAAG,CACD,aAAqB,EACrB,OAAgB,EAChB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAI,gBAAgB,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,UAAU,EACvE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,SAAS,EACtE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QAC1F,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE;YAChE,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,aAAa,EAAE,SAAS;YACxB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;CACF"}
package/dist/mcp/apps.mjs CHANGED
@@ -21,10 +21,10 @@ export class McpAppsClient {
21
21
  this.transport = transport;
22
22
  }
23
23
  getResource(appInstanceId, query, options) {
24
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/resource`, { params: params(query), signal: options?.signal });
24
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/resource`, { params: params(query), signal: options?.signal });
25
25
  }
26
26
  rpc(appInstanceId, request, query, options) {
27
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/rpc`, {
27
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/rpc`, {
28
28
  method: 'POST',
29
29
  json: request,
30
30
  params: params(query),
@@ -32,13 +32,13 @@ export class McpAppsClient {
32
32
  });
33
33
  }
34
34
  approve(appInstanceId, approvalId, query, options) {
35
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/approve`, { method: 'POST', params: params(query), signal: options?.signal });
35
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/approve`, { method: 'POST', params: params(query), signal: options?.signal });
36
36
  }
37
37
  reject(appInstanceId, approvalId, query, options) {
38
- return this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/reject`, { method: 'POST', params: params(query), signal: options?.signal });
38
+ return this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}/approvals/${id(approvalId)}/reject`, { method: 'POST', params: params(query), signal: options?.signal });
39
39
  }
40
40
  async teardown(appInstanceId, query, options) {
41
- await this.transport.request(`/xpert-toolset/mcp-apps/${id(appInstanceId)}`, {
41
+ await this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}`, {
42
42
  method: 'DELETE',
43
43
  params: params(query),
44
44
  emptyResponse: undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"apps.mjs","sourceRoot":"","sources":["../../src/mcp/apps.ts"],"names":[],"mappings":"AAQA,SAAS,EAAE,CAAC,KAAa;IACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,MAAM,CAAC,KAAyB;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAExD,WAAW,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QACvF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,2BAA2B,EAAE,CAAC,aAAa,CAAC,WAAW,EACvD,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,GAAG,CACD,aAAqB,EACrB,OAAgB,EAChB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAI,2BAA2B,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE;YACnF,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,2BAA2B,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,UAAU,EAClF,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,2BAA2B,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,SAAS,EACjF,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QAC1F,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE;YAC3E,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,aAAa,EAAE,SAAS;YACxB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"apps.mjs","sourceRoot":"","sources":["../../src/mcp/apps.ts"],"names":[],"mappings":"AAQA,SAAS,EAAE,CAAC,KAAa;IACvB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,MAAM,CAAC,KAAyB;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAAG,CAAC;IAExD,WAAW,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QACvF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC,WAAW,EAC5C,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnD,CAAC;IACJ,CAAC;IAED,GAAG,CACD,aAAqB,EACrB,OAAgB,EAChB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAI,gBAAgB,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CACL,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,UAAU,EACvE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,CACJ,aAAqB,EACrB,UAAkB,EAClB,KAAyB,EACzB,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAC3B,gBAAgB,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,UAAU,CAAC,SAAS,EACtE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,aAAqB,EAAE,KAAyB,EAAE,OAA2B;QAC1F,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE;YAChE,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;YACrB,aAAa,EAAE,SAAS;YACxB,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -27,11 +27,11 @@ describe('McpAppsClient', () => {
27
27
  await client.rpc('app/1', { jsonrpc: '2.0', id: 'rpc-1', method: 'tools/call' }, reviveQuery);
28
28
  expect(transport.requests).toEqual([
29
29
  {
30
- path: '/xpert-toolset/mcp-apps/app%2F1/resource',
30
+ path: '/ai/mcp-apps/app%2F1/resource',
31
31
  options: { params: reviveQuery, signal: undefined },
32
32
  },
33
33
  {
34
- path: '/xpert-toolset/mcp-apps/app%2F1/rpc',
34
+ path: '/ai/mcp-apps/app%2F1/rpc',
35
35
  options: {
36
36
  method: 'POST',
37
37
  json: { jsonrpc: '2.0', id: 'rpc-1', method: 'tools/call' },
@@ -52,10 +52,11 @@ describe('McpAppsClient', () => {
52
52
  risk: 'write',
53
53
  }, undefined);
54
54
  await client.approve('app/1', 'approval/1', reviveQuery);
55
+ await client.reject('app/1', 'approval/1', reviveQuery);
55
56
  await client.teardown('app/1', reviveQuery);
56
57
  expect(transport.requests).toEqual([
57
58
  {
58
- path: '/xpert-toolset/mcp-apps/app%2F1/approvals/approval%2F1/approve',
59
+ path: '/ai/mcp-apps/app%2F1/approvals/approval%2F1/approve',
59
60
  options: {
60
61
  method: 'POST',
61
62
  params: reviveQuery,
@@ -63,7 +64,15 @@ describe('McpAppsClient', () => {
63
64
  },
64
65
  },
65
66
  {
66
- path: '/xpert-toolset/mcp-apps/app%2F1',
67
+ path: '/ai/mcp-apps/app%2F1/approvals/approval%2F1/reject',
68
+ options: {
69
+ method: 'POST',
70
+ params: reviveQuery,
71
+ signal: undefined,
72
+ },
73
+ },
74
+ {
75
+ path: '/ai/mcp-apps/app%2F1',
67
76
  options: {
68
77
  method: 'DELETE',
69
78
  params: reviveQuery,
@@ -1 +1 @@
1
- {"version":3,"file":"apps.test.js","sourceRoot":"","sources":["../../src/mcp/apps.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.test.js","sourceRoot":"","sources":["../../src/mcp/apps.test.ts"],"names":[],"mappings":"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"}
@@ -27,11 +27,11 @@ describe('McpAppsClient', () => {
27
27
  await client.rpc('app/1', { jsonrpc: '2.0', id: 'rpc-1', method: 'tools/call' }, reviveQuery);
28
28
  expect(transport.requests).toEqual([
29
29
  {
30
- path: '/xpert-toolset/mcp-apps/app%2F1/resource',
30
+ path: '/ai/mcp-apps/app%2F1/resource',
31
31
  options: { params: reviveQuery, signal: undefined },
32
32
  },
33
33
  {
34
- path: '/xpert-toolset/mcp-apps/app%2F1/rpc',
34
+ path: '/ai/mcp-apps/app%2F1/rpc',
35
35
  options: {
36
36
  method: 'POST',
37
37
  json: { jsonrpc: '2.0', id: 'rpc-1', method: 'tools/call' },
@@ -52,10 +52,11 @@ describe('McpAppsClient', () => {
52
52
  risk: 'write',
53
53
  }, undefined);
54
54
  await client.approve('app/1', 'approval/1', reviveQuery);
55
+ await client.reject('app/1', 'approval/1', reviveQuery);
55
56
  await client.teardown('app/1', reviveQuery);
56
57
  expect(transport.requests).toEqual([
57
58
  {
58
- path: '/xpert-toolset/mcp-apps/app%2F1/approvals/approval%2F1/approve',
59
+ path: '/ai/mcp-apps/app%2F1/approvals/approval%2F1/approve',
59
60
  options: {
60
61
  method: 'POST',
61
62
  params: reviveQuery,
@@ -63,7 +64,15 @@ describe('McpAppsClient', () => {
63
64
  },
64
65
  },
65
66
  {
66
- path: '/xpert-toolset/mcp-apps/app%2F1',
67
+ path: '/ai/mcp-apps/app%2F1/approvals/approval%2F1/reject',
68
+ options: {
69
+ method: 'POST',
70
+ params: reviveQuery,
71
+ signal: undefined,
72
+ },
73
+ },
74
+ {
75
+ path: '/ai/mcp-apps/app%2F1',
67
76
  options: {
68
77
  method: 'DELETE',
69
78
  params: reviveQuery,
@@ -1 +1 @@
1
- {"version":3,"file":"apps.test.mjs","sourceRoot":"","sources":["../../src/mcp/apps.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.test.mjs","sourceRoot":"","sources":["../../src/mcp/apps.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { XpertViewScalar } from './view-extension.js';
2
+ import type { IconDefinition } from './schema.js';
3
+ /** Public chat resource-card wire contract, synchronized with chatkit-types. */
4
+ export type ResourceCardOpenTarget = {
5
+ viewKey: string;
6
+ selectionId?: string;
7
+ parameters?: Record<string, XpertViewScalar | XpertViewScalar[]>;
8
+ } & ({
9
+ target: 'workbench.view';
10
+ } | {
11
+ target: 'assistant.project';
12
+ projectId: string;
13
+ });
14
+ export interface ConversationResourceCard {
15
+ resource: {
16
+ namespace: string;
17
+ type: string;
18
+ id: string;
19
+ artifactId?: string;
20
+ };
21
+ title: string;
22
+ description?: string;
23
+ icon?: IconDefinition;
24
+ open: ResourceCardOpenTarget;
25
+ }
26
+ export type TMessageContentResourceCard = {
27
+ type: 'resource_card';
28
+ id: string;
29
+ data: ConversationResourceCard;
30
+ messageId?: string;
31
+ executionId?: string;
32
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resource-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-card.js","sourceRoot":"","sources":["../src/resource-card.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=resource-card.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-card.mjs","sourceRoot":"","sources":["../src/resource-card.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,104 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { parseWorkbenchViewOpenEvent, WORKBENCH_VIEW_OPEN_EVENT } from "../index.js";
3
+ function event(overrides = {}) {
4
+ return {
5
+ type: WORKBENCH_VIEW_OPEN_EVENT,
6
+ viewKey: 'pipeline-board',
7
+ projectId: 'project-1',
8
+ ...overrides,
9
+ };
10
+ }
11
+ describe('workbench view open events', () => {
12
+ it('parses a minimal live request scoped to a project', () => {
13
+ expect(parseWorkbenchViewOpenEvent(event())).toEqual({
14
+ type: WORKBENCH_VIEW_OPEN_EVENT,
15
+ viewKey: 'pipeline-board',
16
+ projectId: 'project-1',
17
+ });
18
+ });
19
+ it('keeps the conversation scope, selection and scalar parameters', () => {
20
+ expect(parseWorkbenchViewOpenEvent(event({
21
+ conversationId: 'conversation-1',
22
+ selectionId: 'selection-1',
23
+ parameters: {
24
+ stage: 'bid',
25
+ pinned: true,
26
+ ratio: 0.35,
27
+ missing: null,
28
+ bidders: ['acme', 'globex'],
29
+ empty: [],
30
+ },
31
+ }))).toEqual({
32
+ type: WORKBENCH_VIEW_OPEN_EVENT,
33
+ viewKey: 'pipeline-board',
34
+ projectId: 'project-1',
35
+ conversationId: 'conversation-1',
36
+ selectionId: 'selection-1',
37
+ parameters: {
38
+ stage: 'bid',
39
+ pinned: true,
40
+ ratio: 0.35,
41
+ missing: null,
42
+ bidders: ['acme', 'globex'],
43
+ empty: [],
44
+ },
45
+ });
46
+ });
47
+ it('drops unknown fields so arbitrary log payloads cannot smuggle state', () => {
48
+ expect(parseWorkbenchViewOpenEvent(event({ extra: 'ignored', nested: { deep: true } }))).toEqual({
49
+ type: WORKBENCH_VIEW_OPEN_EVENT,
50
+ viewKey: 'pipeline-board',
51
+ projectId: 'project-1',
52
+ });
53
+ });
54
+ it('rejects non-object payloads, other event types and missing scope', () => {
55
+ for (const value of [
56
+ null,
57
+ undefined,
58
+ 'workbench.view.open',
59
+ 42,
60
+ [event()],
61
+ event({ type: 'assistant.citation.open' }),
62
+ { viewKey: 'pipeline-board', projectId: 'project-1' },
63
+ event({ viewKey: '' }),
64
+ event({ viewKey: ' ' }),
65
+ event({ projectId: '' }),
66
+ event({ projectId: ' ' }),
67
+ ]) {
68
+ expect(parseWorkbenchViewOpenEvent(value)).toBeNull();
69
+ }
70
+ });
71
+ it('rejects mistyped optional identifiers and parameter containers', () => {
72
+ for (const value of [
73
+ event({ conversationId: 7 }),
74
+ event({ selectionId: {} }),
75
+ event({ parameters: null }),
76
+ event({ parameters: ['bid'] }),
77
+ event({ parameters: 'bid' }),
78
+ ]) {
79
+ expect(parseWorkbenchViewOpenEvent(value)).toBeNull();
80
+ }
81
+ });
82
+ it('rejects parameter values that are not scalars or arrays of scalars', () => {
83
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { filter: { stage: 'bid' } } }))).toBeNull();
84
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { bidders: ['acme', 3, true] } }))).toEqual({
85
+ type: WORKBENCH_VIEW_OPEN_EVENT,
86
+ viewKey: 'pipeline-board',
87
+ projectId: 'project-1',
88
+ parameters: { bidders: ['acme', 3, true] },
89
+ });
90
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { bidders: ['acme', {}] } }))).toBeNull();
91
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { ratio: Number.NaN } }))).toBeNull();
92
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { ratio: Number.POSITIVE_INFINITY } }))).toBeNull();
93
+ });
94
+ it('accepts empty optional identifiers as-is (current behavior)', () => {
95
+ expect(parseWorkbenchViewOpenEvent(event({ conversationId: '', selectionId: '' }))).toEqual({
96
+ type: WORKBENCH_VIEW_OPEN_EVENT,
97
+ viewKey: 'pipeline-board',
98
+ projectId: 'project-1',
99
+ conversationId: '',
100
+ selectionId: '',
101
+ });
102
+ });
103
+ });
104
+ //# sourceMappingURL=workbench-open.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-open.test.js","sourceRoot":"","sources":["../../src/tests/workbench-open.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { parseWorkbenchViewOpenEvent, WORKBENCH_VIEW_OPEN_EVENT } from "../index.mjs";
3
+ function event(overrides = {}) {
4
+ return {
5
+ type: WORKBENCH_VIEW_OPEN_EVENT,
6
+ viewKey: 'pipeline-board',
7
+ projectId: 'project-1',
8
+ ...overrides,
9
+ };
10
+ }
11
+ describe('workbench view open events', () => {
12
+ it('parses a minimal live request scoped to a project', () => {
13
+ expect(parseWorkbenchViewOpenEvent(event())).toEqual({
14
+ type: WORKBENCH_VIEW_OPEN_EVENT,
15
+ viewKey: 'pipeline-board',
16
+ projectId: 'project-1',
17
+ });
18
+ });
19
+ it('keeps the conversation scope, selection and scalar parameters', () => {
20
+ expect(parseWorkbenchViewOpenEvent(event({
21
+ conversationId: 'conversation-1',
22
+ selectionId: 'selection-1',
23
+ parameters: {
24
+ stage: 'bid',
25
+ pinned: true,
26
+ ratio: 0.35,
27
+ missing: null,
28
+ bidders: ['acme', 'globex'],
29
+ empty: [],
30
+ },
31
+ }))).toEqual({
32
+ type: WORKBENCH_VIEW_OPEN_EVENT,
33
+ viewKey: 'pipeline-board',
34
+ projectId: 'project-1',
35
+ conversationId: 'conversation-1',
36
+ selectionId: 'selection-1',
37
+ parameters: {
38
+ stage: 'bid',
39
+ pinned: true,
40
+ ratio: 0.35,
41
+ missing: null,
42
+ bidders: ['acme', 'globex'],
43
+ empty: [],
44
+ },
45
+ });
46
+ });
47
+ it('drops unknown fields so arbitrary log payloads cannot smuggle state', () => {
48
+ expect(parseWorkbenchViewOpenEvent(event({ extra: 'ignored', nested: { deep: true } }))).toEqual({
49
+ type: WORKBENCH_VIEW_OPEN_EVENT,
50
+ viewKey: 'pipeline-board',
51
+ projectId: 'project-1',
52
+ });
53
+ });
54
+ it('rejects non-object payloads, other event types and missing scope', () => {
55
+ for (const value of [
56
+ null,
57
+ undefined,
58
+ 'workbench.view.open',
59
+ 42,
60
+ [event()],
61
+ event({ type: 'assistant.citation.open' }),
62
+ { viewKey: 'pipeline-board', projectId: 'project-1' },
63
+ event({ viewKey: '' }),
64
+ event({ viewKey: ' ' }),
65
+ event({ projectId: '' }),
66
+ event({ projectId: ' ' }),
67
+ ]) {
68
+ expect(parseWorkbenchViewOpenEvent(value)).toBeNull();
69
+ }
70
+ });
71
+ it('rejects mistyped optional identifiers and parameter containers', () => {
72
+ for (const value of [
73
+ event({ conversationId: 7 }),
74
+ event({ selectionId: {} }),
75
+ event({ parameters: null }),
76
+ event({ parameters: ['bid'] }),
77
+ event({ parameters: 'bid' }),
78
+ ]) {
79
+ expect(parseWorkbenchViewOpenEvent(value)).toBeNull();
80
+ }
81
+ });
82
+ it('rejects parameter values that are not scalars or arrays of scalars', () => {
83
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { filter: { stage: 'bid' } } }))).toBeNull();
84
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { bidders: ['acme', 3, true] } }))).toEqual({
85
+ type: WORKBENCH_VIEW_OPEN_EVENT,
86
+ viewKey: 'pipeline-board',
87
+ projectId: 'project-1',
88
+ parameters: { bidders: ['acme', 3, true] },
89
+ });
90
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { bidders: ['acme', {}] } }))).toBeNull();
91
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { ratio: Number.NaN } }))).toBeNull();
92
+ expect(parseWorkbenchViewOpenEvent(event({ parameters: { ratio: Number.POSITIVE_INFINITY } }))).toBeNull();
93
+ });
94
+ it('accepts empty optional identifiers as-is (current behavior)', () => {
95
+ expect(parseWorkbenchViewOpenEvent(event({ conversationId: '', selectionId: '' }))).toEqual({
96
+ type: WORKBENCH_VIEW_OPEN_EVENT,
97
+ viewKey: 'pipeline-board',
98
+ projectId: 'project-1',
99
+ conversationId: '',
100
+ selectionId: '',
101
+ });
102
+ });
103
+ });
104
+ //# sourceMappingURL=workbench-open.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-open.test.mjs","sourceRoot":"","sources":["../../src/tests/workbench-open.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { TMessageContentResourceCard } from './resource-card.js';
1
2
  type ImageDetail = "auto" | "low" | "high";
2
3
  type MessageContentImageUrl = {
3
4
  type: "image_url";
@@ -10,7 +11,7 @@ type MessageContentText = {
10
11
  type: "text";
11
12
  text: string;
12
13
  };
13
- type MessageContentComplex = MessageContentText | MessageContentImageUrl;
14
+ type MessageContentComplex = MessageContentText | MessageContentImageUrl | TMessageContentResourceCard;
14
15
  type MessageContent = string | MessageContentComplex[];
15
16
  /**
16
17
  * Model-specific additional kwargs, which is passed back to the underlying LLM.
@@ -123,8 +123,18 @@ export interface XpertViewActivation {
123
123
  requiredFeatures?: string[];
124
124
  }
125
125
  export interface XpertWorkbenchViewOptions {
126
+ /**
127
+ * @deprecated Use the manifest's `visible` field for visibility and `openMode`
128
+ * for initial tab behavior. Retained for compatibility; false hides the view.
129
+ */
126
130
  fixed?: boolean;
131
+ /**
132
+ * Initial tab behavior; defaults to auto. On-demand views open through a
133
+ * menu, navigation or live Agent request. This does not grant view access.
134
+ */
135
+ openMode?: 'auto' | 'on-demand';
127
136
  menu?: {
137
+ /** Controls the manual entry only; does not disable the view or navigation. */
128
138
  enabled?: boolean;
129
139
  label?: string | XpertI18nObject;
130
140
  order?: number;
@@ -472,3 +482,8 @@ export interface XpertViewRequestOptions {
472
482
  signal?: AbortSignal;
473
483
  runtimeScope?: XpertViewRuntimeScopeInput;
474
484
  }
485
+ export interface WorkbenchExtensionViewOpenRequest {
486
+ viewKey: string;
487
+ selectionId?: string;
488
+ parameters?: Record<string, XpertViewScalar | XpertViewScalar[]>;
489
+ }
@@ -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;AA6WhF,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
+ {"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;AAuXhF,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;AA6WhF,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
+ {"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;AAuXhF,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"}
@@ -0,0 +1,10 @@
1
+ import type { WorkbenchExtensionViewOpenRequest } from './view-extension.js';
2
+ /** Live-only UI request. Project scope is mandatory; history playback must not reopen Views. */
3
+ export declare const WORKBENCH_VIEW_OPEN_EVENT = "workbench.view.open";
4
+ export interface WorkbenchViewOpenEvent extends WorkbenchExtensionViewOpenRequest {
5
+ type: typeof WORKBENCH_VIEW_OPEN_EVENT;
6
+ projectId: string;
7
+ conversationId?: string;
8
+ }
9
+ /** Parse the public lg.chat.event boundary, keeping arbitrary logs out of navigation. */
10
+ export declare function parseWorkbenchViewOpenEvent(value: unknown): WorkbenchViewOpenEvent | null;
@@ -0,0 +1,51 @@
1
+ /** Live-only UI request. Project scope is mandatory; history playback must not reopen Views. */
2
+ export const WORKBENCH_VIEW_OPEN_EVENT = 'workbench.view.open';
3
+ /** Parse the public lg.chat.event boundary, keeping arbitrary logs out of navigation. */
4
+ export function parseWorkbenchViewOpenEvent(value) {
5
+ if (!value ||
6
+ typeof value !== 'object' ||
7
+ Array.isArray(value) ||
8
+ !('type' in value) ||
9
+ value.type !== WORKBENCH_VIEW_OPEN_EVENT ||
10
+ !('viewKey' in value) ||
11
+ typeof value.viewKey !== 'string' ||
12
+ !value.viewKey.trim() ||
13
+ !('projectId' in value) ||
14
+ typeof value.projectId !== 'string' ||
15
+ !value.projectId.trim())
16
+ return null;
17
+ if ('conversationId' in value && typeof value.conversationId !== 'string')
18
+ return null;
19
+ if ('selectionId' in value && typeof value.selectionId !== 'string')
20
+ return null;
21
+ const parameters = {};
22
+ if ('parameters' in value) {
23
+ if (!value.parameters ||
24
+ typeof value.parameters !== 'object' ||
25
+ Array.isArray(value.parameters))
26
+ return null;
27
+ for (const [key, item] of Object.entries(value.parameters)) {
28
+ if (isViewScalar(item))
29
+ parameters[key] = item;
30
+ else if (Array.isArray(item) && item.every(isViewScalar))
31
+ parameters[key] = item;
32
+ else
33
+ return null;
34
+ }
35
+ }
36
+ return {
37
+ type: WORKBENCH_VIEW_OPEN_EVENT,
38
+ viewKey: value.viewKey,
39
+ projectId: value.projectId,
40
+ ...('conversationId' in value ? { conversationId: value.conversationId } : {}),
41
+ ...('selectionId' in value ? { selectionId: value.selectionId } : {}),
42
+ ...('parameters' in value ? { parameters } : {}),
43
+ };
44
+ }
45
+ function isViewScalar(value) {
46
+ return (value === null ||
47
+ typeof value === 'string' ||
48
+ typeof value === 'boolean' ||
49
+ (typeof value === 'number' && Number.isFinite(value)));
50
+ }
51
+ //# sourceMappingURL=workbench-open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-open.js","sourceRoot":"","sources":["../src/workbench-open.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAO/D,yFAAyF;AACzF,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IACE,CAAC,KAAK;QACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAClB,KAAK,CAAC,IAAI,KAAK,yBAAyB;QACxC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC;QACvB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;QAEvB,OAAO,IAAI,CAAC;IACd,IAAI,gBAAgB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvF,IAAI,aAAa,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjF,MAAM,UAAU,GAAiE,EAAE,CAAC;IACpF,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;QAC1B,IACE,CAAC,KAAK,CAAC,UAAU;YACjB,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;YACpC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YAE/B,OAAO,IAAI,CAAC;QACd,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,YAAY,CAAC,IAAI,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;iBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;gBAC5E,OAAO,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AACD,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,51 @@
1
+ /** Live-only UI request. Project scope is mandatory; history playback must not reopen Views. */
2
+ export const WORKBENCH_VIEW_OPEN_EVENT = 'workbench.view.open';
3
+ /** Parse the public lg.chat.event boundary, keeping arbitrary logs out of navigation. */
4
+ export function parseWorkbenchViewOpenEvent(value) {
5
+ if (!value ||
6
+ typeof value !== 'object' ||
7
+ Array.isArray(value) ||
8
+ !('type' in value) ||
9
+ value.type !== WORKBENCH_VIEW_OPEN_EVENT ||
10
+ !('viewKey' in value) ||
11
+ typeof value.viewKey !== 'string' ||
12
+ !value.viewKey.trim() ||
13
+ !('projectId' in value) ||
14
+ typeof value.projectId !== 'string' ||
15
+ !value.projectId.trim())
16
+ return null;
17
+ if ('conversationId' in value && typeof value.conversationId !== 'string')
18
+ return null;
19
+ if ('selectionId' in value && typeof value.selectionId !== 'string')
20
+ return null;
21
+ const parameters = {};
22
+ if ('parameters' in value) {
23
+ if (!value.parameters ||
24
+ typeof value.parameters !== 'object' ||
25
+ Array.isArray(value.parameters))
26
+ return null;
27
+ for (const [key, item] of Object.entries(value.parameters)) {
28
+ if (isViewScalar(item))
29
+ parameters[key] = item;
30
+ else if (Array.isArray(item) && item.every(isViewScalar))
31
+ parameters[key] = item;
32
+ else
33
+ return null;
34
+ }
35
+ }
36
+ return {
37
+ type: WORKBENCH_VIEW_OPEN_EVENT,
38
+ viewKey: value.viewKey,
39
+ projectId: value.projectId,
40
+ ...('conversationId' in value ? { conversationId: value.conversationId } : {}),
41
+ ...('selectionId' in value ? { selectionId: value.selectionId } : {}),
42
+ ...('parameters' in value ? { parameters } : {}),
43
+ };
44
+ }
45
+ function isViewScalar(value) {
46
+ return (value === null ||
47
+ typeof value === 'string' ||
48
+ typeof value === 'boolean' ||
49
+ (typeof value === 'number' && Number.isFinite(value)));
50
+ }
51
+ //# sourceMappingURL=workbench-open.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench-open.mjs","sourceRoot":"","sources":["../src/workbench-open.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAO/D,yFAAyF;AACzF,MAAM,UAAU,2BAA2B,CAAC,KAAc;IACxD,IACE,CAAC,KAAK;QACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAClB,KAAK,CAAC,IAAI,KAAK,yBAAyB;QACxC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QACrB,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC;QACvB,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACnC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;QAEvB,OAAO,IAAI,CAAC;IACd,IAAI,gBAAgB,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvF,IAAI,aAAa,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjF,MAAM,UAAU,GAAiE,EAAE,CAAC;IACpF,IAAI,YAAY,IAAI,KAAK,EAAE,CAAC;QAC1B,IACE,CAAC,KAAK,CAAC,UAAU;YACjB,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;YACpC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YAE/B,OAAO,IAAI,CAAC;QACd,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,IAAI,YAAY,CAAC,IAAI,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;iBAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;gBAC5E,OAAO,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,GAAG,CAAC,aAAa,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AACD,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS;QAC1B,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xpert-ai/xpert-sdk",
3
- "version": "0.4.3",
3
+ "version": "0.5.0",
4
4
  "description": "SDK Core functionality package",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",