@xpert-ai/xpert-sdk 0.4.3 → 0.4.4
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 +2 -1
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -0
- package/dist/mcp/apps.js +5 -5
- package/dist/mcp/apps.js.map +1 -1
- package/dist/mcp/apps.mjs +5 -5
- package/dist/mcp/apps.mjs.map +1 -1
- package/dist/mcp/apps.test.js +13 -4
- package/dist/mcp/apps.test.js.map +1 -1
- package/dist/mcp/apps.test.mjs +13 -4
- package/dist/mcp/apps.test.mjs.map +1 -1
- package/dist/tests/workbench-open.test.d.ts +1 -0
- package/dist/tests/workbench-open.test.js +104 -0
- package/dist/tests/workbench-open.test.js.map +1 -0
- package/dist/tests/workbench-open.test.mjs +104 -0
- package/dist/tests/workbench-open.test.mjs.map +1 -0
- package/dist/view-extension.d.ts +15 -0
- package/dist/view-extension.js.map +1 -1
- package/dist/view-extension.mjs.map +1 -1
- package/dist/workbench-open.d.ts +10 -0
- package/dist/workbench-open.js +51 -0
- package/dist/workbench-open.js.map +1 -0
- package/dist/workbench-open.mjs +51 -0
- package/dist/workbench-open.mjs.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -8,5 +8,6 @@ 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";
|
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(`/
|
|
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(`/
|
|
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(`/
|
|
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(`/
|
|
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(`/
|
|
41
|
+
await this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}`, {
|
|
42
42
|
method: 'DELETE',
|
|
43
43
|
params: params(query),
|
|
44
44
|
emptyResponse: undefined,
|
package/dist/mcp/apps.js.map
CHANGED
|
@@ -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,
|
|
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(`/
|
|
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(`/
|
|
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(`/
|
|
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(`/
|
|
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(`/
|
|
41
|
+
await this.transport.request(`/ai/mcp-apps/${id(appInstanceId)}`, {
|
|
42
42
|
method: 'DELETE',
|
|
43
43
|
params: params(query),
|
|
44
44
|
emptyResponse: undefined,
|
package/dist/mcp/apps.mjs.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/mcp/apps.test.js
CHANGED
|
@@ -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: '/
|
|
30
|
+
path: '/ai/mcp-apps/app%2F1/resource',
|
|
31
31
|
options: { params: reviveQuery, signal: undefined },
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
path: '/
|
|
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: '/
|
|
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: '/
|
|
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":"OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ;OACtC,EAAE,aAAa,EAAE;AAGxB,MAAM,kBAAkB;IACb,QAAQ,GAGZ,EAAE,CAAC;IACC,SAAS,GAAc,EAAE,CAAC;IAEnC,OAAO,CAAI,IAAY,EAAE,OAAoC;QAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAO,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,yBAAyB;IACtC,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,eAAe;IACtB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5C,SAAS,CAAC,SAAS,CAAC,IAAI,CACtB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,EACvD,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAC5C,CAAC;QAEF,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;QAE9F,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACjC;gBACE,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"apps.test.js","sourceRoot":"","sources":["../../src/mcp/apps.test.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/apps.test.mjs
CHANGED
|
@@ -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: '/
|
|
30
|
+
path: '/ai/mcp-apps/app%2F1/resource',
|
|
31
31
|
options: { params: reviveQuery, signal: undefined },
|
|
32
32
|
},
|
|
33
33
|
{
|
|
34
|
-
path: '/
|
|
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: '/
|
|
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: '/
|
|
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":"OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ;OACtC,EAAE,aAAa,EAAE;AAGxB,MAAM,kBAAkB;IACb,QAAQ,GAGZ,EAAE,CAAC;IACC,SAAS,GAAc,EAAE,CAAC;IAEnC,OAAO,CAAI,IAAY,EAAE,OAAoC;QAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAO,CAAC,CAAC;IACtD,CAAC;CACF;AAED,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,WAAW;IACvB,QAAQ,EAAE,QAAQ;IAClB,UAAU,EAAE,QAAQ;IACpB,WAAW,EAAE,yBAAyB;IACtC,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,eAAe;IACtB,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;QAC5C,SAAS,CAAC,SAAS,CAAC,IAAI,CACtB,EAAE,GAAG,EAAE,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,EACvD,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAC5C,CAAC;QAEF,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;QAE9F,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACjC;gBACE,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"apps.test.mjs","sourceRoot":"","sources":["../../src/mcp/apps.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
package/dist/view-extension.d.ts
CHANGED
|
@@ -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;
|
|
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;
|
|
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"}
|