@genexus/genexus-ide-ui 3.2.8 → 3.2.10
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/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-db-instance-selector.cjs.entry.js +147 -0
- package/dist/cjs/gx-ide-db-instance-selector.cjs.entry.js.map +1 -0
- package/dist/cjs/gx-ide-mcp-server.cjs.entry.js +6 -20
- package/dist/cjs/gx-ide-mcp-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +261 -138
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/db-instance-selector/db-instance-selector.css +20 -0
- package/dist/collection/components/db-instance-selector/db-instance-selector.js +262 -0
- package/dist/collection/components/db-instance-selector/db-instance-selector.js.map +1 -0
- package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.en.json +14 -0
- package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.ja.json +14 -0
- package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.zh.json +14 -0
- package/dist/collection/components/db-instance-selector/gx-ide-assets/db-instance-selector/shortcuts.json +15 -0
- package/dist/collection/components/mcp-server/mcp-server.js +6 -20
- package/dist/collection/components/mcp-server/mcp-server.js.map +1 -1
- package/dist/collection/components/mcp-server/types.js.map +1 -1
- package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +17 -4
- package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +17 -4
- package/dist/collection/components/new-kb/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +17 -4
- package/dist/collection/components/new-kb/new-kb.css +122 -17
- package/dist/collection/components/new-kb/new-kb.js +320 -193
- package/dist/collection/components/new-kb/new-kb.js.map +1 -1
- package/dist/collection/components/new-kb/tests/new-kb.e2e.js +48 -60
- package/dist/collection/components/new-kb/tests/new-kb.e2e.js.map +1 -1
- package/dist/collection/testing/locale.e2e.js +1 -0
- package/dist/collection/testing/locale.e2e.js.map +1 -1
- package/dist/components/gx-ide-db-instance-selector.d.ts +11 -0
- package/dist/components/gx-ide-db-instance-selector.js +168 -0
- package/dist/components/gx-ide-db-instance-selector.js.map +1 -0
- package/dist/components/gx-ide-mcp-server.js +6 -20
- package/dist/components/gx-ide-mcp-server.js.map +1 -1
- package/dist/components/gx-ide-new-kb.js +281 -152
- package/dist/components/gx-ide-new-kb.js.map +1 -1
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-db-instance-selector.entry.js +143 -0
- package/dist/esm/gx-ide-db-instance-selector.entry.js.map +1 -0
- package/dist/esm/gx-ide-mcp-server.entry.js +6 -20
- package/dist/esm/gx-ide-mcp-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +261 -138
- package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.en.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.ja.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/langs/db-instance-selector.lang.zh.json +14 -0
- package/dist/genexus-ide-ui/gx-ide-assets/db-instance-selector/shortcuts.json +15 -0
- package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.en.json +17 -4
- package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.ja.json +17 -4
- package/dist/genexus-ide-ui/gx-ide-assets/new-kb/langs/new-kb.lang.zh.json +17 -4
- package/dist/genexus-ide-ui/{p-45b6dc45.entry.js → p-a456237f.entry.js} +7 -19
- package/dist/genexus-ide-ui/p-a456237f.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-c1db7f38.entry.js +182 -0
- package/dist/genexus-ide-ui/p-c1db7f38.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-eeae9dd5.entry.js +1020 -0
- package/dist/genexus-ide-ui/p-eeae9dd5.entry.js.map +1 -0
- package/dist/types/components/db-instance-selector/db-instance-selector.d.ts +39 -0
- package/dist/types/components/mcp-server/types.d.ts +0 -2
- package/dist/types/components/new-kb/new-kb.d.ts +51 -23
- package/dist/types/components.d.ts +135 -84
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-45b6dc45.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-76e1c357.entry.js +0 -802
- package/dist/genexus-ide-ui/p-76e1c357.entry.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"selector": "[part='button-confirm']",
|
|
4
|
+
"keyShortcuts": "Enter",
|
|
5
|
+
"action": "click",
|
|
6
|
+
"conditions": {
|
|
7
|
+
"focusExclude": "[part='button-cancel']"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"selector": "[part='button-cancel']",
|
|
12
|
+
"keyShortcuts": "Escape",
|
|
13
|
+
"action": "click"
|
|
14
|
+
}
|
|
15
|
+
]
|
|
@@ -44,22 +44,14 @@ export class GxIdeMcpServer {
|
|
|
44
44
|
var _a;
|
|
45
45
|
this.errorMessage = undefined;
|
|
46
46
|
this.actionInProgress = true;
|
|
47
|
-
this.status = "starting";
|
|
48
47
|
try {
|
|
49
48
|
const result = await this.startCallback();
|
|
50
|
-
if (result.success) {
|
|
51
|
-
this.status = "running";
|
|
52
|
-
this.serverPort = result.port;
|
|
53
|
-
this.serverEndpoint = result.endpoint;
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
this.status = "error";
|
|
49
|
+
if (!result.success) {
|
|
57
50
|
this.errorMessage =
|
|
58
51
|
(_a = result.errorMessage) !== null && _a !== void 0 ? _a : __classPrivateFieldGet(this, _GxIdeMcpServer_componentLocale, "f").errors.startFailed;
|
|
59
52
|
}
|
|
60
53
|
}
|
|
61
54
|
catch (_b) {
|
|
62
|
-
this.status = "error";
|
|
63
55
|
this.errorMessage = __classPrivateFieldGet(this, _GxIdeMcpServer_componentLocale, "f").errors.startFailed;
|
|
64
56
|
}
|
|
65
57
|
finally {
|
|
@@ -70,22 +62,14 @@ export class GxIdeMcpServer {
|
|
|
70
62
|
var _a;
|
|
71
63
|
this.errorMessage = undefined;
|
|
72
64
|
this.actionInProgress = true;
|
|
73
|
-
this.status = "stopping";
|
|
74
65
|
try {
|
|
75
66
|
const result = await this.stopCallback();
|
|
76
|
-
if (result.success) {
|
|
77
|
-
this.status = "stopped";
|
|
78
|
-
this.serverPort = undefined;
|
|
79
|
-
this.serverEndpoint = undefined;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
this.status = "error";
|
|
67
|
+
if (!result.success) {
|
|
83
68
|
this.errorMessage =
|
|
84
69
|
(_a = result.errorMessage) !== null && _a !== void 0 ? _a : __classPrivateFieldGet(this, _GxIdeMcpServer_componentLocale, "f").errors.stopFailed;
|
|
85
70
|
}
|
|
86
71
|
}
|
|
87
72
|
catch (_b) {
|
|
88
|
-
this.status = "error";
|
|
89
73
|
this.errorMessage = __classPrivateFieldGet(this, _GxIdeMcpServer_componentLocale, "f").errors.stopFailed;
|
|
90
74
|
}
|
|
91
75
|
finally {
|
|
@@ -364,9 +348,11 @@ _GxIdeMcpServer_componentLocale = new WeakMap(), _GxIdeMcpServer_chShortcutsEl =
|
|
|
364
348
|
return h("div", { class: "error-message body-regular-s" }, this.errorMessage);
|
|
365
349
|
}, _GxIdeMcpServer_renderPrimaryButton = function _GxIdeMcpServer_renderPrimaryButton() {
|
|
366
350
|
const isRunning = this.status === "running" || this.status === "stopping";
|
|
351
|
+
const isTransitioning = this.status === "starting" || this.status === "stopping";
|
|
352
|
+
const isDisabled = this.actionInProgress || isTransitioning;
|
|
367
353
|
if (isRunning) {
|
|
368
|
-
return (h("button", { class: "button-primary primary-action", type: "button", onClick: __classPrivateFieldGet(this, _GxIdeMcpServer_stopHandler, "f"), disabled:
|
|
354
|
+
return (h("button", { class: "button-primary primary-action", type: "button", onClick: __classPrivateFieldGet(this, _GxIdeMcpServer_stopHandler, "f"), disabled: isDisabled, part: "button-confirm" }, __classPrivateFieldGet(this, _GxIdeMcpServer_componentLocale, "f").buttons.stop));
|
|
369
355
|
}
|
|
370
|
-
return (h("button", { class: "button-primary primary-action", type: "button", onClick: __classPrivateFieldGet(this, _GxIdeMcpServer_startHandler, "f"), disabled:
|
|
356
|
+
return (h("button", { class: "button-primary primary-action", type: "button", onClick: __classPrivateFieldGet(this, _GxIdeMcpServer_startHandler, "f"), disabled: isDisabled, part: "button-confirm" }, __classPrivateFieldGet(this, _GxIdeMcpServer_componentLocale, "f").buttons.start));
|
|
371
357
|
};
|
|
372
358
|
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/components/mcp-server/mcp-server.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport {\n McpServerStatus,\n McpStartResult,\n McpStopResult\n} from \"./types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/elevation\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"primary\"\n});\n\n\n@Component({\n tag: \"gx-ide-mcp-server\",\n styleUrl: \"mcp-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/mcp-server\"]\n})\nexport class GxIdeMcpServer {\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/mcp-server/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeMcpServerElement;\n\n @State() actionInProgress: boolean = false;\n @State() errorMessage: string | undefined;\n @State() copying: boolean = false;\n\n /**\n * When `true` the component shows a loader instead of content.\n * The host sets this to `false` once the initial status is known.\n */\n @Prop({ mutable: true }) initialLoading: boolean = true;\n\n /**\n * Current MCP server status. The host is responsible for keeping\n * this prop up to date (e.g. via polling or event-driven updates).\n * The component only mutates it internally during start/stop\n * transitions (`starting`, `stopping`, result states).\n */\n @Prop({ mutable: true }) status!: McpServerStatus;\n\n /**\n * Port the MCP server is listening on (shown when running).\n */\n @Prop({ mutable: true }) serverPort: number | undefined;\n\n /**\n * Full endpoint URL (shown when running).\n */\n @Prop({ mutable: true }) serverEndpoint: string | undefined;\n\n /**\n * Callback to start the MCP server. Returns result with connection info.\n */\n @Prop() readonly startCallback!: StartCallback;\n\n /**\n * Callback to stop the MCP server.\n */\n @Prop() readonly stopCallback!: StopCallback;\n\n /**\n * Callback to copy text to the clipboard. Delegated to the IDE clipboard\n * service so the host environment controls the copy behavior.\n */\n @Prop() readonly copyCallback!: CopyCallback;\n\n /**\n * Callback to close/dismiss the dialog.\n */\n @Prop() readonly closeCallback!: CloseCallback;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /**\n * Suspends or reactivates the shortcuts.\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #startHandler = async () => {\n this.errorMessage = undefined;\n this.actionInProgress = true;\n this.status = \"starting\";\n\n try {\n const result = await this.startCallback();\n\n if (result.success) {\n this.status = \"running\";\n this.serverPort = result.port;\n this.serverEndpoint = result.endpoint;\n } else {\n this.status = \"error\";\n this.errorMessage =\n result.errorMessage ??\n this.#componentLocale.errors.startFailed;\n }\n } catch {\n this.status = \"error\";\n this.errorMessage = this.#componentLocale.errors.startFailed;\n } finally {\n this.actionInProgress = false;\n }\n };\n\n #stopHandler = async () => {\n this.errorMessage = undefined;\n this.actionInProgress = true;\n this.status = \"stopping\";\n\n try {\n const result = await this.stopCallback();\n\n if (result.success) {\n this.status = \"stopped\";\n this.serverPort = undefined;\n this.serverEndpoint = undefined;\n } else {\n this.status = \"error\";\n this.errorMessage =\n result.errorMessage ??\n this.#componentLocale.errors.stopFailed;\n }\n } catch {\n this.status = \"error\";\n this.errorMessage = this.#componentLocale.errors.stopFailed;\n } finally {\n this.actionInProgress = false;\n }\n };\n\n #closeHandler = () => {\n this.closeCallback?.();\n };\n\n #copyEndpointHandler = () => {\n if (this.serverEndpoint && this.copyCallback) {\n this.copying = true;\n this.copyCallback(this.serverEndpoint);\n setTimeout(() => {\n this.copying = false;\n }, 1000);\n }\n };\n\n #renderStatusBadge() {\n const statusText =\n this.#componentLocale.status[this.status] ?? this.status;\n\n const badgeClass = `status-badge status-badge--${this.status}`;\n const isAnimated =\n this.status === \"starting\" || this.status === \"stopping\";\n\n return (\n <span class={badgeClass}>\n <span\n class={`status-dot ${isAnimated ? \"status-dot--animated\" : \"\"}`}\n ></span>\n <span class=\"body-regular-s\">{statusText}</span>\n </span>\n );\n }\n\n #renderStatusCard() {\n if (this.status !== \"running\" && this.status !== \"stopping\") {\n return null;\n }\n\n const isDimmed = this.status === \"stopping\";\n\n return (\n <div\n class={`status-card elevation-1 ${isDimmed ? \"status-card--dimmed\" : \"\"}`}\n >\n <div class=\"status-card__row\">\n <span class=\"body-semi-bold-s\">\n {this.#componentLocale.statusCard.statusLabel}\n </span>\n <span class=\"body-regular-s\">\n {this.#componentLocale.status[this.status]}\n </span>\n </div>\n\n {this.serverPort !== undefined && (\n <div class=\"status-card__row\">\n <span class=\"body-semi-bold-s\">\n {this.#componentLocale.statusCard.portLabel}\n </span>\n <span class=\"body-regular-s\">{this.serverPort}</span>\n </div>\n )}\n\n {this.serverEndpoint && (\n <div class=\"status-card__row\">\n <span class=\"body-semi-bold-s\">\n {this.#componentLocale.statusCard.endpointLabel}\n </span>\n <span class=\"status-card__endpoint\">\n <span class=\"body-regular-s endpoint-value\">\n {this.serverEndpoint}\n </span>\n <button\n class=\"button-tertiary button-icon-only\"\n type=\"button\"\n onClick={this.#copyEndpointHandler}\n disabled={this.copying}\n aria-label={this.#componentLocale.statusCard.copyEndpoint}\n title={\n this.copying\n ? this.#componentLocale.statusCard.copiedEndpoint\n : this.#componentLocale.statusCard.copyEndpoint\n }\n >\n <ch-image class=\"icon-m\" src={COPY_ICON}></ch-image>\n </button>\n </span>\n </div>\n )}\n </div>\n );\n }\n\n #renderError() {\n if (!this.errorMessage) {\n return null;\n }\n\n return <div class=\"error-message body-regular-s\">{this.errorMessage}</div>;\n }\n\n #renderPrimaryButton() {\n const isRunning =\n this.status === \"running\" || this.status === \"stopping\";\n\n if (isRunning) {\n return (\n <button\n class=\"button-primary primary-action\"\n type=\"button\"\n onClick={this.#stopHandler}\n disabled={this.actionInProgress}\n part=\"button-confirm\"\n >\n {this.#componentLocale.buttons.stop}\n </button>\n );\n }\n\n return (\n <button\n class=\"button-primary primary-action\"\n type=\"button\"\n onClick={this.#startHandler}\n disabled={this.actionInProgress}\n part=\"button-confirm\"\n >\n {this.#componentLocale.buttons.start}\n </button>\n );\n }\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header dialog-header-with-border spacing-body-inline spacing-body-block-start\">\n <h1 class=\"heading-s title\">\n {this.#componentLocale.header.title}\n </h1>\n {!this.initialLoading && this.#renderStatusBadge()}\n </header>\n\n <div class=\"main spacing-body-inline\">\n {this.initialLoading ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n show\n class=\"loader\"\n ></gx-ide-loader>\n ) : ([\n <div class=\"info-section\">\n <p class=\"body-regular-m\">\n {this.#componentLocale.info.description}\n </p>\n <p class=\"body-regular-m\">\n {this.#componentLocale.info.details}\n </p>\n </div>,\n\n this.#renderStatusCard(),\n this.#renderError()\n ])}\n </div>\n\n <footer class=\"footer dialog-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#closeHandler}\n part=\"button-cancel\"\n >\n {this.#componentLocale.buttons.close}\n </button>\n {!this.initialLoading && this.#renderPrimaryButton()}\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type StartCallback = () => Promise<McpStartResult>;\nexport type StopCallback = () => Promise<McpStopResult>;\nexport type CopyCallback = (text: string) => void;\nexport type CloseCallback = () => void;\n"]}
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/components/mcp-server/mcp-server.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nimport { Locale } from \"../../common/locale\";\nimport {\n McpServerStatus,\n McpStartResult,\n McpStopResult\n} from \"./types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/icon\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/elevation\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"primary\"\n});\n\n\n@Component({\n tag: \"gx-ide-mcp-server\",\n styleUrl: \"mcp-server.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/mcp-server\"]\n})\nexport class GxIdeMcpServer {\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #chShortcutsEl: HTMLChShortcutsElement;\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/mcp-server/shortcuts.json`\n );\n\n @Element() el: HTMLGxIdeMcpServerElement;\n\n @State() actionInProgress: boolean = false;\n @State() errorMessage: string | undefined;\n @State() copying: boolean = false;\n\n /**\n * When `true` the component shows a loader instead of content.\n * The host sets this to `false` once the initial status is known.\n */\n @Prop({ mutable: true }) initialLoading: boolean = true;\n\n /**\n * Current MCP server status. The host is responsible for keeping\n * this prop up to date (e.g. via polling or event-driven updates).\n * The component only mutates it internally during start/stop\n * transitions (`starting`, `stopping`, result states).\n */\n @Prop({ mutable: true }) status!: McpServerStatus;\n\n /**\n * Port the MCP server is listening on (shown when running).\n */\n @Prop({ mutable: true }) serverPort: number | undefined;\n\n /**\n * Full endpoint URL (shown when running).\n */\n @Prop({ mutable: true }) serverEndpoint: string | undefined;\n\n /**\n * Callback to start the MCP server. Returns result with connection info.\n */\n @Prop() readonly startCallback!: StartCallback;\n\n /**\n * Callback to stop the MCP server.\n */\n @Prop() readonly stopCallback!: StopCallback;\n\n /**\n * Callback to copy text to the clipboard. Delegated to the IDE clipboard\n * service so the host environment controls the copy behavior.\n */\n @Prop() readonly copyCallback!: CopyCallback;\n\n /**\n * Callback to close/dismiss the dialog.\n */\n @Prop() readonly closeCallback!: CloseCallback;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /**\n * Suspends or reactivates the shortcuts.\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #startHandler = async () => {\n this.errorMessage = undefined;\n this.actionInProgress = true;\n\n try {\n const result = await this.startCallback();\n\n if (!result.success) {\n this.errorMessage =\n result.errorMessage ??\n this.#componentLocale.errors.startFailed;\n }\n } catch {\n this.errorMessage = this.#componentLocale.errors.startFailed;\n } finally {\n this.actionInProgress = false;\n }\n };\n\n #stopHandler = async () => {\n this.errorMessage = undefined;\n this.actionInProgress = true;\n\n try {\n const result = await this.stopCallback();\n\n if (!result.success) {\n this.errorMessage =\n result.errorMessage ??\n this.#componentLocale.errors.stopFailed;\n }\n } catch {\n this.errorMessage = this.#componentLocale.errors.stopFailed;\n } finally {\n this.actionInProgress = false;\n }\n };\n\n #closeHandler = () => {\n this.closeCallback?.();\n };\n\n #copyEndpointHandler = () => {\n if (this.serverEndpoint && this.copyCallback) {\n this.copying = true;\n this.copyCallback(this.serverEndpoint);\n setTimeout(() => {\n this.copying = false;\n }, 1000);\n }\n };\n\n #renderStatusBadge() {\n const statusText =\n this.#componentLocale.status[this.status] ?? this.status;\n\n const badgeClass = `status-badge status-badge--${this.status}`;\n const isAnimated =\n this.status === \"starting\" || this.status === \"stopping\";\n\n return (\n <span class={badgeClass}>\n <span\n class={`status-dot ${isAnimated ? \"status-dot--animated\" : \"\"}`}\n ></span>\n <span class=\"body-regular-s\">{statusText}</span>\n </span>\n );\n }\n\n #renderStatusCard() {\n if (this.status !== \"running\" && this.status !== \"stopping\") {\n return null;\n }\n\n const isDimmed = this.status === \"stopping\";\n\n return (\n <div\n class={`status-card elevation-1 ${isDimmed ? \"status-card--dimmed\" : \"\"}`}\n >\n <div class=\"status-card__row\">\n <span class=\"body-semi-bold-s\">\n {this.#componentLocale.statusCard.statusLabel}\n </span>\n <span class=\"body-regular-s\">\n {this.#componentLocale.status[this.status]}\n </span>\n </div>\n\n {this.serverPort !== undefined && (\n <div class=\"status-card__row\">\n <span class=\"body-semi-bold-s\">\n {this.#componentLocale.statusCard.portLabel}\n </span>\n <span class=\"body-regular-s\">{this.serverPort}</span>\n </div>\n )}\n\n {this.serverEndpoint && (\n <div class=\"status-card__row\">\n <span class=\"body-semi-bold-s\">\n {this.#componentLocale.statusCard.endpointLabel}\n </span>\n <span class=\"status-card__endpoint\">\n <span class=\"body-regular-s endpoint-value\">\n {this.serverEndpoint}\n </span>\n <button\n class=\"button-tertiary button-icon-only\"\n type=\"button\"\n onClick={this.#copyEndpointHandler}\n disabled={this.copying}\n aria-label={this.#componentLocale.statusCard.copyEndpoint}\n title={\n this.copying\n ? this.#componentLocale.statusCard.copiedEndpoint\n : this.#componentLocale.statusCard.copyEndpoint\n }\n >\n <ch-image class=\"icon-m\" src={COPY_ICON}></ch-image>\n </button>\n </span>\n </div>\n )}\n </div>\n );\n }\n\n #renderError() {\n if (!this.errorMessage) {\n return null;\n }\n\n return <div class=\"error-message body-regular-s\">{this.errorMessage}</div>;\n }\n\n #renderPrimaryButton() {\n const isRunning =\n this.status === \"running\" || this.status === \"stopping\";\n const isTransitioning =\n this.status === \"starting\" || this.status === \"stopping\";\n const isDisabled = this.actionInProgress || isTransitioning;\n\n if (isRunning) {\n return (\n <button\n class=\"button-primary primary-action\"\n type=\"button\"\n onClick={this.#stopHandler}\n disabled={isDisabled}\n part=\"button-confirm\"\n >\n {this.#componentLocale.buttons.stop}\n </button>\n );\n }\n\n return (\n <button\n class=\"button-primary primary-action\"\n type=\"button\"\n onClick={this.#startHandler}\n disabled={isDisabled}\n part=\"button-confirm\"\n >\n {this.#componentLocale.buttons.start}\n </button>\n );\n }\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"header dialog-header-with-border spacing-body-inline spacing-body-block-start\">\n <h1 class=\"heading-s title\">\n {this.#componentLocale.header.title}\n </h1>\n {!this.initialLoading && this.#renderStatusBadge()}\n </header>\n\n <div class=\"main spacing-body-inline\">\n {this.initialLoading ? (\n <gx-ide-loader\n loaderTitle={this.#componentLocale.loader.title}\n show\n class=\"loader\"\n ></gx-ide-loader>\n ) : ([\n <div class=\"info-section\">\n <p class=\"body-regular-m\">\n {this.#componentLocale.info.description}\n </p>\n <p class=\"body-regular-m\">\n {this.#componentLocale.info.details}\n </p>\n </div>,\n\n this.#renderStatusCard(),\n this.#renderError()\n ])}\n </div>\n\n <footer class=\"footer dialog-footer-with-border spacing-body-inline spacing-body-block-end\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n type=\"button\"\n onClick={this.#closeHandler}\n part=\"button-cancel\"\n >\n {this.#componentLocale.buttons.close}\n </button>\n {!this.initialLoading && this.#renderPrimaryButton()}\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type StartCallback = () => Promise<McpStartResult>;\nexport type StopCallback = () => Promise<McpStopResult>;\nexport type CopyCallback = (text: string) => void;\nexport type CloseCallback = () => void;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/mcp-server/types.ts"],"names":[],"mappings":"","sourcesContent":["export type McpServerStatus =\n | \"running\"\n | \"stopped\"\n | \"starting\"\n | \"stopping\"\n | \"error\";\n\nexport type McpStartResult = {\n success: boolean;\n
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/mcp-server/types.ts"],"names":[],"mappings":"","sourcesContent":["export type McpServerStatus =\n | \"running\"\n | \"stopped\"\n | \"starting\"\n | \"stopping\"\n | \"error\";\n\nexport type McpStartResult = {\n success: boolean;\n errorMessage?: string;\n};\n\nexport type McpStopResult = {\n success: boolean;\n errorMessage?: string;\n};\n"]}
|
|
@@ -39,20 +39,28 @@
|
|
|
39
39
|
"tabAdvanced": {
|
|
40
40
|
"tabLabel": "Advanced",
|
|
41
41
|
"tabTitle": "Knowledge Base Storage",
|
|
42
|
+
"tabSubtitle": "Where this KB's metadata and objects will live",
|
|
43
|
+
"connectionGroup": "Connection",
|
|
44
|
+
"authenticationGroup": "Authentication",
|
|
45
|
+
"databaseHint": "Will be created if it doesn't exist.",
|
|
46
|
+
"windowsAuthCalloutTitle": "Using current Windows credentials",
|
|
47
|
+
"windowsAuthCalloutDescription": "Your domain account will be used to connect. No username or password is required.",
|
|
42
48
|
"serverName": {
|
|
43
49
|
"label": "Server Name",
|
|
44
50
|
"placeholder": null,
|
|
45
|
-
"disabledPlaceholder": "There are no server names to display"
|
|
51
|
+
"disabledPlaceholder": "There are no server names to display",
|
|
52
|
+
"browseForMore": "Browse for more..."
|
|
46
53
|
},
|
|
47
54
|
"databaseName": {
|
|
48
|
-
"label": "Database",
|
|
55
|
+
"label": "Database Name",
|
|
49
56
|
"placeholder": null,
|
|
50
57
|
"disabledPlaceholder": null
|
|
51
58
|
},
|
|
52
59
|
"collation": {
|
|
53
60
|
"label": "Collation",
|
|
54
61
|
"placeholder": null,
|
|
55
|
-
"disabledPlaceholder": "There are no collations to display"
|
|
62
|
+
"disabledPlaceholder": "There are no collations to display",
|
|
63
|
+
"loadingPlaceholder": "Loading collations..."
|
|
56
64
|
},
|
|
57
65
|
"createDataFilesInKbFolder": "Create Data in Knowledge Base Folder",
|
|
58
66
|
"authenticationType": {
|
|
@@ -74,6 +82,11 @@
|
|
|
74
82
|
},
|
|
75
83
|
"footer": {
|
|
76
84
|
"btnCreate": "Create",
|
|
77
|
-
"btnCancel": "Cancel"
|
|
85
|
+
"btnCancel": "Cancel",
|
|
86
|
+
"connectionStatus": {
|
|
87
|
+
"connecting": "Connecting...",
|
|
88
|
+
"success": "Connection success",
|
|
89
|
+
"failed": "Connection failed"
|
|
90
|
+
}
|
|
78
91
|
}
|
|
79
92
|
}
|
|
@@ -39,20 +39,28 @@
|
|
|
39
39
|
"tabAdvanced": {
|
|
40
40
|
"tabLabel": "詳細",
|
|
41
41
|
"tabTitle": "ナレッジベースのストレージ",
|
|
42
|
+
"tabSubtitle": "この KB のメタデータとオブジェクトの保存先",
|
|
43
|
+
"connectionGroup": "接続",
|
|
44
|
+
"authenticationGroup": "認証",
|
|
45
|
+
"databaseHint": "存在しない場合は作成されます。",
|
|
46
|
+
"windowsAuthCalloutTitle": "現在の Windows 認証情報を使用",
|
|
47
|
+
"windowsAuthCalloutDescription": "ドメインアカウントを使用して接続します。ユーザー名とパスワードは必要ありません。",
|
|
42
48
|
"serverName": {
|
|
43
49
|
"label": "サーバー名",
|
|
44
50
|
"placeholder": null,
|
|
45
|
-
"disabledPlaceholder": "表示するサーバー名がありません"
|
|
51
|
+
"disabledPlaceholder": "表示するサーバー名がありません",
|
|
52
|
+
"browseForMore": "さらに参照..."
|
|
46
53
|
},
|
|
47
54
|
"databaseName": {
|
|
48
|
-
"label": "
|
|
55
|
+
"label": "データベース名",
|
|
49
56
|
"placeholder": null,
|
|
50
57
|
"disabledPlaceholder": null
|
|
51
58
|
},
|
|
52
59
|
"collation": {
|
|
53
60
|
"label": "照合順序",
|
|
54
61
|
"placeholder": null,
|
|
55
|
-
"disabledPlaceholder": "表示する照合順序がありません"
|
|
62
|
+
"disabledPlaceholder": "表示する照合順序がありません",
|
|
63
|
+
"loadingPlaceholder": "照合順序を読み込み中..."
|
|
56
64
|
},
|
|
57
65
|
"createDataFilesInKbFolder": "ナレッジベースのフォルダ内にデータを作成",
|
|
58
66
|
"authenticationType": {
|
|
@@ -74,6 +82,11 @@
|
|
|
74
82
|
},
|
|
75
83
|
"footer": {
|
|
76
84
|
"btnCreate": "作成",
|
|
77
|
-
"btnCancel": "キャンセル"
|
|
85
|
+
"btnCancel": "キャンセル",
|
|
86
|
+
"connectionStatus": {
|
|
87
|
+
"connecting": "接続中...",
|
|
88
|
+
"success": "接続に成功しました",
|
|
89
|
+
"failed": "接続に失敗しました"
|
|
90
|
+
}
|
|
78
91
|
}
|
|
79
92
|
}
|
|
@@ -39,20 +39,28 @@
|
|
|
39
39
|
"tabAdvanced": {
|
|
40
40
|
"tabLabel": "Advanced",
|
|
41
41
|
"tabTitle": "Knowledge Base Storage",
|
|
42
|
+
"tabSubtitle": "Where this KB's metadata and objects will live",
|
|
43
|
+
"connectionGroup": "Connection",
|
|
44
|
+
"authenticationGroup": "Authentication",
|
|
45
|
+
"databaseHint": "Will be created if it doesn't exist.",
|
|
46
|
+
"windowsAuthCalloutTitle": "Using current Windows credentials",
|
|
47
|
+
"windowsAuthCalloutDescription": "Your domain account will be used to connect. No username or password is required.",
|
|
42
48
|
"serverName": {
|
|
43
49
|
"label": "Server Name",
|
|
44
50
|
"placeholder": null,
|
|
45
|
-
"disabledPlaceholder": "There are no server names to display"
|
|
51
|
+
"disabledPlaceholder": "There are no server names to display",
|
|
52
|
+
"browseForMore": "Browse for more..."
|
|
46
53
|
},
|
|
47
54
|
"databaseName": {
|
|
48
|
-
"label": "Database",
|
|
55
|
+
"label": "Database Name",
|
|
49
56
|
"placeholder": null,
|
|
50
57
|
"disabledPlaceholder": null
|
|
51
58
|
},
|
|
52
59
|
"collation": {
|
|
53
60
|
"label": "Collation",
|
|
54
61
|
"placeholder": null,
|
|
55
|
-
"disabledPlaceholder": "There are no collations to display"
|
|
62
|
+
"disabledPlaceholder": "There are no collations to display",
|
|
63
|
+
"loadingPlaceholder": "加载排序规则中..."
|
|
56
64
|
},
|
|
57
65
|
"createDataFilesInKbFolder": "Create Data in Knowledge Base Folder",
|
|
58
66
|
"authenticationType": {
|
|
@@ -74,6 +82,11 @@
|
|
|
74
82
|
},
|
|
75
83
|
"footer": {
|
|
76
84
|
"btnCreate": "Create",
|
|
77
|
-
"btnCancel": "Cancel"
|
|
85
|
+
"btnCancel": "Cancel",
|
|
86
|
+
"connectionStatus": {
|
|
87
|
+
"connecting": "Connecting...",
|
|
88
|
+
"success": "Connection success",
|
|
89
|
+
"failed": "Connection failed"
|
|
90
|
+
}
|
|
78
91
|
}
|
|
79
92
|
}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
button.button-secondary {
|
|
2
|
-
border-color: var(--color-border-neutral-default);
|
|
3
|
-
}
|
|
4
|
-
|
|
5
1
|
:host {
|
|
6
2
|
display: grid;
|
|
7
3
|
block-size: 100%;
|
|
@@ -83,29 +79,114 @@ button.button-secondary {
|
|
|
83
79
|
overflow: auto;
|
|
84
80
|
}
|
|
85
81
|
|
|
86
|
-
.
|
|
87
|
-
|
|
82
|
+
.basic,
|
|
83
|
+
.advanced {
|
|
84
|
+
padding-block-start: 12px;
|
|
85
|
+
overflow: auto;
|
|
86
|
+
block-size: 100%;
|
|
88
87
|
}
|
|
89
88
|
|
|
90
|
-
.
|
|
91
|
-
|
|
89
|
+
.kb-storage-card {
|
|
90
|
+
display: flex;
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
gap: var(--spacing-gap-l);
|
|
93
|
+
padding-inline: var(--spacing-padding-xl);
|
|
92
94
|
}
|
|
93
95
|
|
|
94
|
-
.
|
|
95
|
-
|
|
96
|
+
.kb-storage-card__header {
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
gap: var(--spacing-gap-s);
|
|
100
|
+
padding-block-end: var(--spacing-padding-m);
|
|
101
|
+
border-bottom: 1px solid var(--color-border-surface-on-elevation-1);
|
|
96
102
|
}
|
|
97
103
|
|
|
98
|
-
.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
.kb-storage-card__heading {
|
|
105
|
+
display: flex;
|
|
106
|
+
flex-direction: column;
|
|
107
|
+
gap: var(--spacing-gap-xs);
|
|
108
|
+
min-inline-size: 0;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.kb-storage-card__title {
|
|
112
|
+
margin: 0;
|
|
113
|
+
color: var(--color-text-neutral-default);
|
|
103
114
|
}
|
|
104
115
|
|
|
105
|
-
.
|
|
116
|
+
.kb-storage-card__grid {
|
|
106
117
|
display: grid;
|
|
107
118
|
grid-template-columns: 1fr 1fr;
|
|
108
|
-
|
|
119
|
+
column-gap: var(--spacing-gap-xl);
|
|
120
|
+
row-gap: var(--spacing-gap-l);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.kb-storage-column {
|
|
124
|
+
display: flex;
|
|
125
|
+
flex-direction: column;
|
|
126
|
+
gap: var(--spacing-gap-m);
|
|
127
|
+
min-inline-size: 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.kb-storage-column__title {
|
|
131
|
+
display: flex;
|
|
132
|
+
align-items: center;
|
|
133
|
+
gap: var(--spacing-gap-s);
|
|
134
|
+
color: var(--color-text-neutral-disabled);
|
|
135
|
+
text-transform: uppercase;
|
|
136
|
+
letter-spacing: 0.04em;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.kb-storage-column__title-text {
|
|
140
|
+
white-space: nowrap;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.kb-storage-column__title-rule {
|
|
144
|
+
flex: 1;
|
|
145
|
+
block-size: 1px;
|
|
146
|
+
background-color: var(--color-border-surface-on-elevation-1);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.field-group--stacked {
|
|
150
|
+
display: flex;
|
|
151
|
+
flex-direction: column;
|
|
152
|
+
gap: var(--spacing-gap-m);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.server-name-wrapper {
|
|
156
|
+
display: grid;
|
|
157
|
+
grid-template-columns: 1fr max-content;
|
|
158
|
+
gap: var(--spacing-gap-xs);
|
|
159
|
+
min-inline-size: 0;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.kb-storage-credentials {
|
|
163
|
+
display: flex;
|
|
164
|
+
flex-direction: column;
|
|
165
|
+
gap: var(--spacing-gap-m);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.kb-storage-callout {
|
|
169
|
+
display: flex;
|
|
170
|
+
flex-direction: row;
|
|
171
|
+
gap: var(--spacing-gap-xs);
|
|
172
|
+
padding: var(--spacing-padding-m);
|
|
173
|
+
border: 1px solid var(--color-border-surface-on-elevation-2);
|
|
174
|
+
border-radius: var(--border-radius-s);
|
|
175
|
+
background-color: var(--color-accent-surface-elevation-2);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.kb-storage-callout-inner {
|
|
179
|
+
display: flex;
|
|
180
|
+
flex-direction: column;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.kb-storage-callout__title {
|
|
184
|
+
display: flex;
|
|
185
|
+
gap: var(--spacing-gap-xs);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.kb-storage-callout__description {
|
|
189
|
+
color: var(--color-text-neutral-disabled);
|
|
109
190
|
}
|
|
110
191
|
|
|
111
192
|
.text-align-center {
|
|
@@ -116,6 +197,30 @@ button.button-secondary {
|
|
|
116
197
|
scrollbar-width: thin;
|
|
117
198
|
}
|
|
118
199
|
|
|
200
|
+
.tab::part(tab-list block-start) {
|
|
201
|
+
padding-inline: var(--spacing-padding-xl);
|
|
202
|
+
}
|
|
203
|
+
|
|
119
204
|
.checkbox {
|
|
120
205
|
inline-size: max-content;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.footer.dialog-footer-with-border {
|
|
209
|
+
display: flex;
|
|
210
|
+
align-items: center;
|
|
211
|
+
justify-content: space-between;
|
|
212
|
+
gap: var(--spacing-gap-m);
|
|
213
|
+
}
|
|
214
|
+
.footer.dialog-footer-with-border > .buttons-spacer {
|
|
215
|
+
margin-inline-start: auto;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.connection-status--connecting {
|
|
219
|
+
color: var(--color-text-neutral-disabled);
|
|
220
|
+
}
|
|
221
|
+
.connection-status--success {
|
|
222
|
+
color: var(--color-text-success-default);
|
|
223
|
+
}
|
|
224
|
+
.connection-status--failed {
|
|
225
|
+
color: var(--color-text-error-default);
|
|
121
226
|
}
|