@fses/workbench-app 0.2.18 → 0.2.21

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.
Files changed (126) hide show
  1. package/WORKBENCH-CLOSURE.json +14 -14
  2. package/dist/WorkbenchCardCenterDrawer-BxRFAZDG.js +421 -0
  3. package/dist/WorkbenchDiagnosticsFooter-BXQJLBMu.js +22 -0
  4. package/dist/WorkbenchDiagnosticsPage-OdYSvQ2O.js +72 -0
  5. package/dist/Workspace-C4Co3cIc.js +22678 -0
  6. package/dist/adapters/defaultAgentTransportAdapter.d.ts +6 -0
  7. package/dist/adapters/defaultBrowserAdapters.d.ts +22 -0
  8. package/dist/adapters/defaultPlatformRequestAdapter.d.ts +6 -0
  9. package/dist/adapters/defaultRealtimeAdapter.d.ts +6 -0
  10. package/dist/adapters/endpointResolver.d.ts +16 -0
  11. package/dist/adapters/index.d.ts +7 -1
  12. package/dist/adapters/servicePorts.d.ts +20 -0
  13. package/dist/adapters/types.d.ts +27 -1
  14. package/dist/canvas/api/index.js +1 -1
  15. package/dist/canvas/bridge/workbenchCanvasBus.d.ts +13 -1
  16. package/dist/canvas/persistence/canvasSnapshotStorage.d.ts +3 -2
  17. package/dist/{canvasFacade-B8jYm_aO.js → canvasFacade-ZFqB_i7z.js} +1 -1
  18. package/dist/{cardFactory-DmEBcCf4.js → cardFactory-D5dyYSC3.js} +197 -161
  19. package/dist/components/WorkbenchAppHost.vue.d.ts +5 -5
  20. package/dist/components/WorkbenchApplication.vue.d.ts +2 -2
  21. package/dist/components/WorkbenchCardCenterDrawer.vue.d.ts +2 -0
  22. package/dist/components/WorkbenchDiagnosticsFooter.vue.d.ts +2 -0
  23. package/dist/components/WorkbenchDiagnosticsPage.vue.d.ts +2 -0
  24. package/dist/components/WorkbenchDrawerOutlet.vue.d.ts +6 -0
  25. package/dist/components/WorkbenchFeatureOutlet.vue.d.ts +2 -0
  26. package/dist/components/WorkbenchSlotOutlet.vue.d.ts +5 -0
  27. package/dist/config/workbenchAppConfig.d.ts +4 -0
  28. package/dist/customCardCatalog-D8woQgB9.js +512 -0
  29. package/dist/extensions/index.d.ts +3 -54
  30. package/dist/extensions/index.js +7 -5
  31. package/dist/extensions/manifest.d.ts +27 -0
  32. package/dist/extensions/normalizeWorkbenchExtensions.d.ts +19 -0
  33. package/dist/extensions/types.d.ts +62 -0
  34. package/dist/fses-workbench-app.js +109 -89
  35. package/dist/i18n/index.d.ts +17 -0
  36. package/dist/i18n/index.js +14 -0
  37. package/dist/index-C1Y_OWV9.js +1772 -0
  38. package/dist/index-DkGYPLLJ.js +34 -0
  39. package/dist/index.d.ts +12 -1
  40. package/dist/internal/personal-workbench/components/workbench/WorkbenchCanvas.vue.d.ts +4 -4
  41. package/dist/internal/personal-workbench/components/workbench/WorkbenchCanvasSettingsMenu.vue.d.ts +4 -4
  42. package/dist/internal/personal-workbench/components/workbench/WorkbenchFdeImageComposeDrawer.vue.d.ts +19 -0
  43. package/dist/internal/personal-workbench/components/workbench/WorkbenchFdeToolbar.vue.d.ts +36 -0
  44. package/dist/internal/personal-workbench/components/workbench/WorkbenchStudio.vue.d.ts +2 -2
  45. package/dist/internal/personal-workbench/components/workbench/controllers/canvasConfigController.d.ts +23 -0
  46. package/dist/internal/personal-workbench/components/workbench/controllers/canvasLayoutController.d.ts +12 -0
  47. package/dist/internal/personal-workbench/components/workbench/controllers/canvasRefreshController.d.ts +11 -0
  48. package/dist/internal/personal-workbench/components/workbench/controllers/canvasSelectionController.d.ts +11 -0
  49. package/dist/internal/personal-workbench/components/workbench/showcase/WorkbenchShowcase.vue.d.ts +4 -4
  50. package/dist/internal/personal-workbench/controllers/workbenchBuiltinPluginBridge.d.ts +32 -0
  51. package/dist/internal/personal-workbench/controllers/workbenchChartConfigModel.d.ts +68 -0
  52. package/dist/internal/personal-workbench/controllers/workbenchChartDataSourceController.d.ts +100 -0
  53. package/dist/internal/personal-workbench/controllers/workbenchChartDrilldownController.d.ts +96 -0
  54. package/dist/internal/personal-workbench/controllers/workbenchChartDrilldownTable.d.ts +34 -0
  55. package/dist/internal/personal-workbench/controllers/workbenchFdeVersionController.d.ts +107 -0
  56. package/dist/internal/personal-workbench/controllers/workbenchRecommendationConfigModel.d.ts +82 -0
  57. package/dist/internal/personal-workbench/lib/deepAgentApi.d.ts +13 -9
  58. package/dist/internal/personal-workbench/lib/deepAgentQueueState.d.ts +3 -1
  59. package/dist/internal/personal-workbench/lib/fdeWorkbenchConfigClient.d.ts +6 -5
  60. package/dist/internal/personal-workbench/lib/runtimeIdentity.d.ts +5 -0
  61. package/dist/internal/personal-workbench/lib/runtimePrimitiveRegistry.d.ts +1 -1
  62. package/dist/internal/personal-workbench/lib/vueRuntimeAdapters.d.ts +4 -4
  63. package/dist/internal/personal-workbench/lib/workbenchApi.d.ts +61 -47
  64. package/dist/internal/personal-workbench/lib/workbenchMetricDetailApi.d.ts +2 -1
  65. package/dist/internal/personal-workbench/lib/workbenchRemoteClient.d.ts +3 -1
  66. package/dist/internal/personal-workbench/lib/workbenchRequestTransport.d.ts +24 -0
  67. package/dist/internal/personal-workbench/lib/workbenchStorage.d.ts +8 -7
  68. package/dist/internal/personal-workbench/pages/Workspace.vue.d.ts +2 -2
  69. package/dist/internal/personal-workbench/stores/domains/actionsRuntime.d.ts +35 -0
  70. package/dist/internal/personal-workbench/stores/domains/canvasRuntime.d.ts +44 -0
  71. package/dist/internal/personal-workbench/stores/domains/conversationRuntime.d.ts +29 -0
  72. package/dist/internal/personal-workbench/stores/domains/dataBindingRuntime.d.ts +27 -0
  73. package/dist/internal/personal-workbench/stores/domains/fdeRuntime.d.ts +38 -0
  74. package/dist/internal/personal-workbench/stores/domains/memoryRuntime.d.ts +53 -0
  75. package/dist/internal/personal-workbench/stores/workbenchRuntime.d.ts +28 -1
  76. package/dist/kernel/command/createCommandRegistry.d.ts +19 -0
  77. package/dist/kernel/createWorkbenchHostContext.d.ts +43 -0
  78. package/dist/kernel/createWorkbenchKernel.d.ts +7 -0
  79. package/dist/kernel/diagnostics/createWorkbenchDiagnostics.d.ts +35 -0
  80. package/dist/kernel/event/createEventBus.d.ts +16 -0
  81. package/dist/kernel/plugin/createPluginManager.d.ts +7 -0
  82. package/dist/kernel/plugin/registrationScope.d.ts +15 -0
  83. package/dist/kernel/plugin/types.d.ts +30 -0
  84. package/dist/kernel/registry/createRegistry.d.ts +42 -0
  85. package/dist/kernel/registry/resolveSlotContributions.d.ts +14 -0
  86. package/dist/kernel/types.d.ts +52 -0
  87. package/dist/kernel/workbenchHostContext.d.ts +14 -0
  88. package/dist/normalizeWorkbenchExtensions-Ccv3n3fC.js +425 -0
  89. package/dist/plugin/index.d.ts +7 -0
  90. package/dist/plugin/index.js +8 -0
  91. package/dist/plugin/types.d.ts +106 -0
  92. package/dist/plugins/defaultWorkbenchPlugins.d.ts +11 -0
  93. package/dist/plugins/workbenchCardCenterPlugin.d.ts +13 -0
  94. package/dist/plugins/workbenchDiagnosticsPlugin.d.ts +15 -0
  95. package/dist/plugins/workbenchDrawerCommands.d.ts +16 -0
  96. package/dist/plugins/workbenchSettingsPlugin.d.ts +19 -0
  97. package/dist/plugins/workbenchThemePlugin.d.ts +15 -0
  98. package/dist/routing/createWorkbenchFeatureRoute.d.ts +11 -0
  99. package/dist/routing/resolveWorkbenchFeatureRoute.d.ts +23 -0
  100. package/dist/runtime/index.d.ts +6 -1
  101. package/dist/runtime/index.js +6 -3
  102. package/dist/runtime/scope/createWorkbenchRuntimeScope.d.ts +10 -0
  103. package/dist/runtime/store/workbenchRuntimeContext.d.ts +12 -0
  104. package/dist/runtime/store/workbenchRuntimeFacade.d.ts +3 -0
  105. package/dist/style.css +1 -1
  106. package/dist/types/index.d.ts +2 -0
  107. package/dist/useWorkbenchRuntime-CJLqEtgU.js +24062 -0
  108. package/dist/version.d.ts +1 -1
  109. package/node_modules/@fses/ai-chat/dist/fses-ai-chat.js +28256 -7528
  110. package/node_modules/@fses/ai-chat/dist/fses-ai-chat.umd.cjs +17 -17
  111. package/node_modules/@fses/ai-chat/dist/style.css +1 -1
  112. package/node_modules/@fses/ai-chat/package.json +3 -3
  113. package/node_modules/@fses/workbench-card/dist/fses-workbench-card-renderers.js +5 -5
  114. package/node_modules/@fses/workbench-card/dist/fses-workbench-card.js +5 -5
  115. package/node_modules/@fses/workbench-card/dist/fses-workbench-card.umd.cjs +1 -1
  116. package/node_modules/@fses/workbench-card/dist/types/block.d.ts +4 -1
  117. package/node_modules/@fses/workbench-card/package.json +1 -1
  118. package/node_modules/@fses/workbench-card/src/registry/cardRegistry.ts +4 -4
  119. package/node_modules/@fses/workbench-card/src/registry/echartsTemplateRegistry.generated.js +1 -1
  120. package/node_modules/@fses/workbench-card/src/registry/echartsTemplateRegistry.generated.ts +1 -1
  121. package/node_modules/@fses/workbench-card/src/types/block.ts +4 -12
  122. package/package.json +11 -3
  123. package/dist/Workspace-JvnSC-w9.js +0 -23186
  124. package/dist/index-D-WW3bXH.js +0 -829
  125. package/dist/useWorkbenchRuntime-D_AtkXIX.js +0 -23865
  126. package/dist/workbenchCustomComponentRegistry-CWUPjCnJ.js +0 -267
@@ -8,15 +8,15 @@ type __VLS_Props = {
8
8
  extensions: WorkbenchAppExtensions;
9
9
  runtime: WorkbenchRuntimeFacade;
10
10
  };
11
- declare var __VLS_12: {}, __VLS_14: {}, __VLS_16: {}, __VLS_18: {};
11
+ declare var __VLS_18: {}, __VLS_26: {}, __VLS_31: {}, __VLS_36: {};
12
12
  type __VLS_Slots = {} & {
13
- left?: (props: typeof __VLS_12) => any;
13
+ left?: (props: typeof __VLS_18) => any;
14
14
  } & {
15
- right?: (props: typeof __VLS_14) => any;
15
+ right?: (props: typeof __VLS_26) => any;
16
16
  } & {
17
- 'collapsed-right'?: (props: typeof __VLS_16) => any;
17
+ 'collapsed-right'?: (props: typeof __VLS_31) => any;
18
18
  } & {
19
- drawer?: (props: typeof __VLS_18) => any;
19
+ drawer?: (props: typeof __VLS_36) => any;
20
20
  };
21
21
  declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
22
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
@@ -1,11 +1,11 @@
1
1
  import type { WorkbenchAppAdapters } from '../adapters/types';
2
2
  import type { WorkbenchAppConfig } from '../config/workbenchAppConfig';
3
- import type { WorkbenchAppExtensions } from '../extensions';
3
+ import { type WorkbenchExtensionInput } from '../extensions';
4
4
  type __VLS_Props = {
5
5
  adapters: Partial<WorkbenchAppAdapters>;
6
6
  config: WorkbenchAppConfig;
7
7
  embedInPortal?: boolean;
8
- extensions: WorkbenchAppExtensions;
8
+ extensions: WorkbenchExtensionInput;
9
9
  };
10
10
  type __VLS_Slots = {
11
11
  'before-workbench'(): unknown;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ type __VLS_Props = {
2
+ drawerId?: string;
3
+ onClose?: () => void;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
6
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,5 @@
1
+ type __VLS_Props = {
2
+ slotName: string;
3
+ };
4
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
5
+ export default _default;
@@ -39,10 +39,14 @@ export interface WorkbenchAppConfig {
39
39
  assets?: WorkbenchAppAssetsConfig;
40
40
  brand?: WorkbenchAppBrandConfig;
41
41
  defaults?: WorkbenchAppDefaults;
42
+ /** 插件可引用的 endpoint ID 到宿主相对路径映射。 */
43
+ endpoints?: Record<string, string>;
42
44
  features?: WorkbenchAppFeatureFlags;
43
45
  routes?: WorkbenchAppRouteConfig;
44
46
  theme?: {
45
47
  defaultThemeKey?: string;
46
48
  designSpecKey?: string;
47
49
  };
50
+ /** 包内 IO 迁移开关,默认走 legacy 兼容链路。 */
51
+ transportMode?: 'adapter' | 'legacy';
48
52
  }
@@ -0,0 +1,512 @@
1
+ import { defineComponent as z, useAttrs as N, ref as _, computed as g, watch as G, openBlock as s, createElementBlock as d, Fragment as E, createElementVNode as n, mergeProps as H, unref as m, renderSlot as ee, createBlock as B, Teleport as Q, normalizeStyle as te, normalizeClass as X, createCommentVNode as A, toDisplayString as b, reactive as U, withModifiers as ae, createVNode as $, renderList as V, createTextVNode as re, withDirectives as O, vModelSelect as ie, vModelDynamic as le } from "vue";
2
+ import { d as t, e as oe } from "./cardFactory-D5dyYSC3.js";
3
+ import "@fses/workbench-card";
4
+ import "@fses/workbench-card/registry";
5
+ import { WorkbenchBlockRenderer as se } from "@fses/workbench-card/renderers";
6
+ import { s as ne, e as de } from "./normalizeWorkbenchExtensions-Ccv3n3fC.js";
7
+ import { _ as ce } from "./index-C1Y_OWV9.js";
8
+ import { X as ue, AlertCircle as pe, Check as me } from "lucide-vue-next";
9
+ import { clsx as be } from "clsx";
10
+ import { twMerge as fe } from "tailwind-merge";
11
+ const ye = ["data-capability-id"], he = ["data-capability-id"], ve = ["src", "alt"], xe = ["data-preview-capability-id", "data-renderer-key", "data-data-shape"], ge = { class: "mt-2 flex min-w-0 items-center gap-2 px-0.5 text-[11px] leading-4" }, Ae = { class: "min-w-0 flex-1 truncate font-semibold text-slate-800" }, We = { class: "shrink-0 text-slate-400" }, we = /* @__PURE__ */ z({
12
+ inheritAttrs: !1,
13
+ __name: "SystemCardPreviewPopover",
14
+ props: {
15
+ capabilityId: {},
16
+ title: {},
17
+ previewUrl: {}
18
+ },
19
+ setup(e) {
20
+ const a = e, r = N(), v = _(null), c = _(!1), u = _({}), w = _(null), h = _("");
21
+ let k = 0;
22
+ const C = g(() => !!a.previewUrl), S = g(() => a.capabilityId.startsWith("card.echarts.")), l = g(() => a.previewUrl || ""), o = g(() => C.value ? null : S.value ? w.value : ne(a.capabilityId)), i = g(() => {
23
+ var p, y;
24
+ return ((y = (p = o.value) == null ? void 0 : p.meta) == null ? void 0 : y.dataShape) === "dashboardGrid";
25
+ }), f = g(() => i.value ? "h-[300px]" : "h-[240px]");
26
+ function T() {
27
+ const p = v.value;
28
+ if (!p) return;
29
+ const y = p.getBoundingClientRect(), x = 12, P = i.value ? 460 : 320, q = i.value ? 520 : 380, F = Math.min(q, Math.max(P, window.innerWidth - 32)), M = i.value ? 372 : 312, I = y.right + x, Y = y.left - F - x, J = I + F <= window.innerWidth - 12 ? I : Math.max(12, Y), Z = Math.min(
30
+ Math.max(12, y.top),
31
+ Math.max(12, window.innerHeight - M - 12)
32
+ );
33
+ u.value = {
34
+ left: `${J}px`,
35
+ top: `${Z}px`,
36
+ width: `${F}px`
37
+ };
38
+ }
39
+ async function j() {
40
+ const p = a.capabilityId;
41
+ if (T(), c.value = !0, S.value && h.value !== p) {
42
+ const y = ++k;
43
+ w.value = null, h.value = p;
44
+ const x = await de(p);
45
+ if (y !== k || h.value !== p) return;
46
+ w.value = x, T();
47
+ }
48
+ }
49
+ function L() {
50
+ c.value = !1;
51
+ }
52
+ return G(
53
+ () => a.capabilityId,
54
+ () => {
55
+ k += 1, w.value = null, h.value = "";
56
+ }
57
+ ), (p, y) => {
58
+ var x, P, q, F, M, I;
59
+ return s(), d(E, null, [
60
+ n("div", H({
61
+ ref_key: "triggerRef",
62
+ ref: v
63
+ }, m(r), {
64
+ class: "min-w-0",
65
+ "data-testid": "system-card-preview-trigger",
66
+ "data-capability-id": e.capabilityId,
67
+ onMouseenter: j,
68
+ onMousemove: T,
69
+ onMouseleave: L,
70
+ onFocusin: j,
71
+ onFocusout: L
72
+ }), [
73
+ ee(p.$slots, "default", {}, void 0, !0)
74
+ ], 16, ye),
75
+ (s(), B(Q, { to: "body" }, [
76
+ c.value ? (s(), d("div", {
77
+ key: 0,
78
+ class: "pointer-events-none fixed z-[90] rounded-lg border border-slate-200 bg-white p-2 shadow-[0_18px_48px_rgba(15,23,42,0.18)]",
79
+ style: te(u.value),
80
+ "data-testid": "system-card-preview-popover",
81
+ "data-capability-id": e.capabilityId
82
+ }, [
83
+ C.value ? (s(), d("img", {
84
+ key: 0,
85
+ class: "max-h-[240px] w-full rounded-md border border-slate-100 bg-slate-50 object-contain",
86
+ "data-testid": "system-card-static-preview",
87
+ src: l.value,
88
+ "data-i18n-alt": "FWA.c6371787570865109",
89
+ alt: m(t)("FWA.c6371787570865109", { p0: e.title }),
90
+ loading: "eager"
91
+ }, null, 8, ve)) : (s(), d("div", {
92
+ key: 1,
93
+ class: X(["system-card-live-preview overflow-hidden rounded-md border border-slate-100 bg-slate-50", f.value]),
94
+ "data-testid": "system-card-live-preview",
95
+ "data-preview-capability-id": ((P = (x = o.value) == null ? void 0 : x.meta) == null ? void 0 : P.capabilityId) || "",
96
+ "data-renderer-key": ((F = (q = o.value) == null ? void 0 : q.meta) == null ? void 0 : F.rendererKey) || "",
97
+ "data-data-shape": ((I = (M = o.value) == null ? void 0 : M.meta) == null ? void 0 : I.dataShape) || ""
98
+ }, [
99
+ o.value ? (s(), B(m(se), {
100
+ key: 0,
101
+ class: "workbench-block-renderer h-full",
102
+ "data-testid": "system-card-live-preview-renderer",
103
+ block: o.value,
104
+ density: "standard",
105
+ "role-id": "Admin",
106
+ "user-id": "sysadmin"
107
+ }, null, 8, ["block"])) : A("", !0)
108
+ ], 10, xe)),
109
+ n("div", ge, [
110
+ n("span", Ae, b(e.title), 1),
111
+ n("span", We, b(e.capabilityId), 1)
112
+ ])
113
+ ], 12, he)) : A("", !0)
114
+ ]))
115
+ ], 64);
116
+ };
117
+ }
118
+ }), ot = /* @__PURE__ */ ce(we, [["__scopeId", "data-v-d5202b0e"]]), Fe = /* @__PURE__ */ new Set([
119
+ "metricSummary",
120
+ "rows",
121
+ "singleSeries",
122
+ "multiSeries",
123
+ "pieSlices",
124
+ "funnelStages",
125
+ "scatterPoints",
126
+ "gaugeMetric",
127
+ "heatmapMatrix",
128
+ "radarMetrics",
129
+ "waterfallSteps",
130
+ "mapRegions",
131
+ "sankeyFlow",
132
+ "treeHierarchy",
133
+ "ganttTasks",
134
+ "candlestickSeries",
135
+ "boxplotSeries",
136
+ "paretoSeries",
137
+ "networkGraph",
138
+ "geoGlobe",
139
+ "ranking",
140
+ "taskSummary",
141
+ "insightNarrative",
142
+ "reportSummary",
143
+ "dashboardGrid"
144
+ ]);
145
+ function K(e) {
146
+ return e.capabilityId === "card.fde.templateWeather" || e.dataShape === "fdeCustomComponent" ? ke(e) : e.capabilityId.startsWith("card.echarts.") ? _e(e) : e.capabilityId.startsWith("card.entity.") ? Ce(e) : e.dataShape === "embeddedFrame" ? R(e, t("FWA.7e991787571595832"), t("FWA.a83f1787570275674")) : e.dataShape === "weatherCurrent" ? R(e, t("FWA.84001787571273327"), t("FWA.2a6e1787570571272")) : e.dataShape === "calendarCard" ? R(e, t("FWA.22621787571273850"), t("FWA.d11d1787570617413")) : e.category === "card.composite_cards" || e.capabilityId === "card.custom.blankCanvas" || e.dataShape === "customCanvas" ? Ie(e) : e.category === "card.metric_cards" ? {
147
+ capabilityId: e.capabilityId,
148
+ usageMode: "runtimeMetric",
149
+ usageLabel: t("FWA.df851787571596286"),
150
+ recommendedPrompt: t("FWA.83c21787570352870", { p0: W(e) }),
151
+ dataRequirement: t("FWA.98671787570446564"),
152
+ acceptanceTier: "metric_data"
153
+ } : Fe.has(e.dataShape) ? {
154
+ capabilityId: e.capabilityId,
155
+ usageMode: "realQuery",
156
+ usageLabel: t("FWA.cb021787571478789"),
157
+ recommendedPrompt: t("FWA.da791787570448061", { p0: W(e) }),
158
+ dataRequirement: t("FWA.5e751787570529383", { p0: e.dataShape }),
159
+ acceptanceTier: "real_data"
160
+ } : R(e, t("FWA.7e991787571595832"), t("FWA.66ea1787570369121"));
161
+ }
162
+ function ke(e) {
163
+ return {
164
+ capabilityId: e.capabilityId,
165
+ usageMode: "customComponent",
166
+ usageLabel: t("FWA.8dba1787571272809"),
167
+ recommendedPrompt: t("FWA.ddeb1787570467660", { p0: W(e) }),
168
+ dataRequirement: t("FWA.f24f1787570228950"),
169
+ limitationReason: t("FWA.bd071787570198554"),
170
+ acceptanceTier: "custom_component"
171
+ };
172
+ }
173
+ function Ie(e) {
174
+ return {
175
+ capabilityId: e.capabilityId,
176
+ usageMode: "template",
177
+ usageLabel: t("FWA.a3c81787571478793"),
178
+ recommendedPrompt: t("FWA.6e101787570491054", { p0: W(e) }),
179
+ dataRequirement: t("FWA.22f31787570469558"),
180
+ acceptanceTier: "template"
181
+ };
182
+ }
183
+ function _e(e) {
184
+ return {
185
+ capabilityId: e.capabilityId,
186
+ usageMode: "template",
187
+ usageLabel: t("FWA.a3c81787571478793"),
188
+ recommendedPrompt: t("FWA.520d1787570288888", { p0: W(e) }),
189
+ dataRequirement: t("FWA.831d1787570264556"),
190
+ acceptanceTier: "template"
191
+ };
192
+ }
193
+ function Ce(e) {
194
+ return {
195
+ capabilityId: e.capabilityId,
196
+ usageMode: "template",
197
+ usageLabel: t("FWA.a3c81787571478793"),
198
+ recommendedPrompt: t("FWA.63141787570391486", { p0: W(e) }),
199
+ dataRequirement: t("FWA.df0c1787570392563"),
200
+ acceptanceTier: "template"
201
+ };
202
+ }
203
+ function R(e, a, r) {
204
+ return {
205
+ capabilityId: e.capabilityId,
206
+ usageMode: "externalDependency",
207
+ usageLabel: a,
208
+ recommendedPrompt: t("FWA.7ea11787570417652", { p0: W(e) }),
209
+ dataRequirement: r,
210
+ limitationReason: r,
211
+ acceptanceTier: "limited"
212
+ };
213
+ }
214
+ function W(e) {
215
+ return e.title.trim() || t("FWA.13131787571398664");
216
+ }
217
+ const Se = [
218
+ { label: t("FWA.42011787571085626"), value: "allow-scripts allow-same-origin" },
219
+ { label: t("FWA.597e1787570953670"), value: "allow-scripts allow-forms allow-same-origin" },
220
+ { label: t("FWA.73921787571271752"), value: "allow-scripts" }
221
+ ];
222
+ function st(e) {
223
+ if (e.capabilityId.startsWith("card.entity."))
224
+ return {
225
+ capabilityId: e.capabilityId,
226
+ mode: "directInsert",
227
+ label: t("FWA.3b101787571272276"),
228
+ primaryAction: "insert",
229
+ fields: [],
230
+ requirementText: t("FWA.79601787570367411")
231
+ };
232
+ if (e.capabilityId === "card.custom.blankCanvas" || e.dataShape === "customCanvas")
233
+ return {
234
+ capabilityId: e.capabilityId,
235
+ mode: "directInsert",
236
+ label: t("FWA.3b101787571272276"),
237
+ primaryAction: "insert",
238
+ fields: [],
239
+ requirementText: t("FWA.38541787570588728")
240
+ };
241
+ if (e.capabilityId === "card.fde.templateWeather")
242
+ return {
243
+ capabilityId: e.capabilityId,
244
+ mode: "customComponent",
245
+ label: t("FWA.eb7a1787571272802"),
246
+ primaryAction: "configureAndInsert",
247
+ fields: [
248
+ {
249
+ key: "city",
250
+ label: t("FWA.a1061787571692229"),
251
+ type: "text",
252
+ required: !0,
253
+ defaultValue: t("FWA.53241787571692333"),
254
+ placeholder: t("FWA.29711787571086152")
255
+ }
256
+ ],
257
+ requirementText: t("FWA.cb451787570318661")
258
+ };
259
+ if (e.dataShape === "embeddedFrame")
260
+ return {
261
+ capabilityId: e.capabilityId,
262
+ mode: "configurable",
263
+ label: t("FWA.76731787571595828"),
264
+ primaryAction: "configureAndInsert",
265
+ fields: [
266
+ {
267
+ key: "title",
268
+ label: t("FWA.5e191787571478772"),
269
+ type: "text",
270
+ required: !0,
271
+ defaultValue: e.title.trim() || t("FWA.d7991787571453166"),
272
+ placeholder: t("FWA.1f4d1787571086340")
273
+ },
274
+ {
275
+ key: "srcUrl",
276
+ label: t("FWA.08781787571154985"),
277
+ type: "url",
278
+ required: !0,
279
+ placeholder: "https://example.com"
280
+ },
281
+ {
282
+ key: "sandbox",
283
+ label: "sandbox",
284
+ type: "select",
285
+ required: !0,
286
+ defaultValue: "allow-scripts allow-same-origin",
287
+ options: Se
288
+ }
289
+ ],
290
+ requirementText: t("FWA.13e71787570320652")
291
+ };
292
+ const a = K(e);
293
+ return a.usageMode === "realQuery" || a.usageMode === "runtimeMetric" ? {
294
+ capabilityId: e.capabilityId,
295
+ mode: "queryGenerated",
296
+ label: t("FWA.54201787571478776"),
297
+ primaryAction: "copyPrompt",
298
+ fields: [],
299
+ requirementText: a.dataRequirement
300
+ } : a.usageMode === "template" ? {
301
+ capabilityId: e.capabilityId,
302
+ mode: "directInsert",
303
+ label: t("FWA.3b101787571272276"),
304
+ primaryAction: "insert",
305
+ fields: [],
306
+ requirementText: a.dataRequirement
307
+ } : {
308
+ capabilityId: e.capabilityId,
309
+ mode: "externalDependency",
310
+ label: t("FWA.a55b1787571478780"),
311
+ primaryAction: "viewRequirement",
312
+ fields: [],
313
+ requirementText: a.limitationReason || a.dataRequirement
314
+ };
315
+ }
316
+ function Pe(e) {
317
+ return Object.fromEntries(e.fields.map((a) => [a.key, a.defaultValue || ""]));
318
+ }
319
+ function qe(...e) {
320
+ return fe(be(e));
321
+ }
322
+ const Me = ["aria-label"], Re = { class: "w-full max-w-[520px] rounded-lg border border-slate-200 bg-white shadow-xl" }, Te = { class: "flex items-start justify-between gap-3 border-b border-slate-100 px-5 py-4" }, $e = { class: "min-w-0" }, Ee = { class: "truncate text-sm font-semibold text-slate-950" }, Be = { class: "mt-1 text-xs leading-5 text-slate-500" }, De = ["aria-label"], je = { class: "space-y-4 px-5 py-4" }, Le = {
323
+ key: 0,
324
+ class: "flex gap-2 rounded border border-amber-200 bg-amber-50 px-3 py-2 text-xs leading-5 text-amber-800"
325
+ }, Ue = { class: "mb-1.5 block text-xs font-semibold text-slate-700" }, Ve = {
326
+ key: 0,
327
+ class: "text-red-500"
328
+ }, Oe = ["onUpdate:modelValue"], ze = ["value"], Ne = ["onUpdate:modelValue", "type", "placeholder"], Ge = {
329
+ key: 2,
330
+ class: "mt-1 block text-xs text-red-600"
331
+ }, He = { class: "flex items-center justify-end gap-2 border-t border-slate-100 px-5 py-3" }, Qe = { "data-i18n": "FWA.cd551787571253421" }, nt = /* @__PURE__ */ z({
332
+ inheritAttrs: !1,
333
+ __name: "WorkbenchCardConfigDialog",
334
+ props: {
335
+ open: { type: Boolean },
336
+ title: {},
337
+ profile: {}
338
+ },
339
+ emits: ["close", "submit"],
340
+ setup(e, { emit: a }) {
341
+ const r = e, v = a, c = U({}), u = U({}), w = N(), h = g(() => {
342
+ var l;
343
+ return ((l = r.profile) == null ? void 0 : l.primaryAction) === "viewRequirement";
344
+ });
345
+ G(
346
+ () => [r.open, r.profile],
347
+ () => {
348
+ Object.keys(c).forEach((l) => delete c[l]), Object.keys(u).forEach((l) => delete u[l]), !(!r.open || !r.profile) && Object.assign(c, Pe(r.profile));
349
+ },
350
+ { immediate: !0 }
351
+ );
352
+ function k(l) {
353
+ try {
354
+ const o = new URL(l);
355
+ return o.protocol === "http:" || o.protocol === "https:" ? "" : t("FWA.4ea11787570606925");
356
+ } catch {
357
+ return t("FWA.ff481787570981205");
358
+ }
359
+ }
360
+ function C() {
361
+ if (Object.keys(u).forEach((l) => delete u[l]), !r.profile) return !1;
362
+ for (const l of r.profile.fields) {
363
+ const o = (c[l.key] || "").trim();
364
+ if (l.required && !o) {
365
+ u[l.key] = t("FWA.16e91787570902823", { p0: l.label });
366
+ continue;
367
+ }
368
+ if (l.type === "url" && o) {
369
+ const i = k(o);
370
+ i && (u[l.key] = i);
371
+ }
372
+ }
373
+ return Object.keys(u).length === 0;
374
+ }
375
+ function S() {
376
+ !r.profile || h.value || C() && v("submit", {
377
+ capabilityId: r.profile.capabilityId,
378
+ mode: r.profile.mode,
379
+ values: Object.fromEntries(Object.entries(c).map(([l, o]) => [l, o.trim()]))
380
+ });
381
+ }
382
+ return (l, o) => (s(), B(Q, { to: "body" }, [
383
+ e.open && e.profile ? (s(), d("div", H({ key: 0 }, m(w), {
384
+ class: "fixed inset-0 z-[1200] flex items-center justify-center bg-slate-950/20 px-4 py-6",
385
+ role: "dialog",
386
+ "aria-modal": "true",
387
+ "data-i18n-aria-label": "FWA.d15c1787570942164",
388
+ "aria-label": m(t)("FWA.d15c1787570942164", { p0: e.title }),
389
+ onClick: o[2] || (o[2] = ae((i) => v("close"), ["self"]))
390
+ }), [
391
+ n("section", Re, [
392
+ n("header", Te, [
393
+ n("div", $e, [
394
+ n("h2", Ee, b(e.title), 1),
395
+ n("p", Be, b(e.profile.requirementText), 1)
396
+ ]),
397
+ n("button", {
398
+ type: "button",
399
+ class: "flex h-8 w-8 shrink-0 items-center justify-center rounded border border-slate-200 text-slate-500 transition hover:border-blue-200 hover:text-blue-700",
400
+ "data-i18n-aria-label": "FWA.c4801787571134941",
401
+ "aria-label": m(t)("FWA.c4801787571134941"),
402
+ onClick: o[0] || (o[0] = (i) => v("close"))
403
+ }, [
404
+ $(m(ue), { class: "h-4 w-4" })
405
+ ], 8, De)
406
+ ]),
407
+ n("div", je, [
408
+ h.value ? (s(), d("div", Le, [
409
+ $(m(pe), { class: "mt-0.5 h-4 w-4 shrink-0" }),
410
+ n("span", null, b(e.profile.requirementText), 1)
411
+ ])) : A("", !0),
412
+ (s(!0), d(E, null, V(e.profile.fields, (i) => (s(), d("label", {
413
+ key: i.key,
414
+ class: "block"
415
+ }, [
416
+ n("span", Ue, [
417
+ re(b(i.label), 1),
418
+ i.required ? (s(), d("span", Ve, " *")) : A("", !0)
419
+ ]),
420
+ i.type === "select" ? O((s(), d("select", {
421
+ key: 0,
422
+ "onUpdate:modelValue": (f) => c[i.key] = f,
423
+ class: "h-9 w-full rounded border border-slate-200 bg-white px-3 text-sm text-slate-900 outline-none transition focus:border-blue-300 focus:ring-2 focus:ring-blue-100"
424
+ }, [
425
+ (s(!0), d(E, null, V(i.options || [], (f) => (s(), d("option", {
426
+ key: f.value,
427
+ value: f.value
428
+ }, b(f.label), 9, ze))), 128))
429
+ ], 8, Oe)), [
430
+ [ie, c[i.key]]
431
+ ]) : O((s(), d("input", {
432
+ key: 1,
433
+ "onUpdate:modelValue": (f) => c[i.key] = f,
434
+ type: i.type === "url" ? "url" : "text",
435
+ placeholder: i.placeholder,
436
+ class: X(
437
+ m(qe)(
438
+ "h-9 w-full rounded border bg-white px-3 text-sm text-slate-900 outline-none transition placeholder:text-slate-400 focus:ring-2",
439
+ u[i.key] ? "border-red-300 focus:border-red-300 focus:ring-red-100" : "border-slate-200 focus:border-blue-300 focus:ring-blue-100"
440
+ )
441
+ )
442
+ }, null, 10, Ne)), [
443
+ [le, c[i.key]]
444
+ ]),
445
+ u[i.key] ? (s(), d("span", Ge, b(u[i.key]), 1)) : A("", !0)
446
+ ]))), 128))
447
+ ]),
448
+ n("footer", He, [
449
+ n("button", {
450
+ type: "button",
451
+ class: "h-8 rounded border border-slate-200 px-3 text-xs font-semibold text-slate-600 transition hover:border-slate-300 hover:text-slate-900",
452
+ onClick: o[1] || (o[1] = (i) => v("close")),
453
+ "data-i18n": "FWA.da851787571671360"
454
+ }, b(m(t)("FWA.da851787571671360")), 1),
455
+ h.value ? A("", !0) : (s(), d("button", {
456
+ key: 0,
457
+ type: "button",
458
+ class: "inline-flex h-8 items-center gap-1.5 rounded bg-blue-600 px-3 text-xs font-semibold text-white transition hover:bg-blue-700",
459
+ onClick: S
460
+ }, [
461
+ $(m(me), { class: "h-3.5 w-3.5" }),
462
+ n("span", Qe, b(m(t)("FWA.cd551787571253421")), 1)
463
+ ]))
464
+ ])
465
+ ])
466
+ ], 16, Me)) : A("", !0)
467
+ ]));
468
+ }
469
+ });
470
+ function Xe(e) {
471
+ const a = D(e.title), r = K({ ...e, title: a });
472
+ return r.usageMode === "externalDependency" || r.usageMode === "customComponent" ? t("FWA.a1e71787570337026", { p0: a, p1: r.dataRequirement }) : r.usageMode === "template" ? `用「${a}」生成布局:
473
+ 使用方式:${r.recommendedPrompt}
474
+ 布局说明:` : `用「${a}」展示:
475
+ 业务问题:`;
476
+ }
477
+ function dt(e) {
478
+ const a = D(e.title);
479
+ return t("FWA.ce361787570370505", { p0: a });
480
+ }
481
+ function ct(e) {
482
+ return {
483
+ prompt: Xe(e),
484
+ selectedSystemCard: {
485
+ ...e,
486
+ title: D(e.title)
487
+ }
488
+ };
489
+ }
490
+ function D(e) {
491
+ return e.trim() || t("FWA.01231787571398669");
492
+ }
493
+ function ut() {
494
+ var e;
495
+ return [...((e = oe().cards) == null ? void 0 : e.customCardCatalog) ?? []].filter((a) => a.status === "implemented");
496
+ }
497
+ const pt = (e, a = []) => [
498
+ { id: "default", name: t("FWA.dfbe1787571678270"), description: t("FWA.17831787570981961"), entries: [...a, ...e.filter((r) => r.sourceLabel !== "npm")] },
499
+ { id: "npm", name: t("FWA.e7fd1787571254977"), description: t("FWA.a9951787570904210"), entries: e.filter((r) => r.sourceLabel === "npm") }
500
+ ];
501
+ export {
502
+ ot as S,
503
+ nt as _,
504
+ dt as a,
505
+ pt as b,
506
+ qe as c,
507
+ ct as d,
508
+ st as e,
509
+ Xe as f,
510
+ K as r,
511
+ ut as w
512
+ };
@@ -3,59 +3,8 @@
3
3
  * @author seadon
4
4
  * @created 2026-08-11
5
5
  */
6
- import type { Component } from 'vue';
7
- import type { RouteRecordRaw } from 'vue-router';
8
- import type { CardRegistryEntry } from '@fses/workbench-card/registry';
9
- import type { WorkbenchRendererCustomComponentEntry, WorkbenchRendererCustomComponentRegistry } from '@fses/workbench-card/renderers';
10
- import type { FdeSkillCardIntent } from '../internal/personal-workbench/fde-skill-cards/runtime/fdeSkillCardTypes';
11
- import type { FdeSkillDashboardManifest } from '../internal/personal-workbench/fde-skill-cards/runtime/fdeSkillDashboardTypes';
12
- import type { FdeSkillTemplatePageManifest } from '../internal/personal-workbench/fde-skill-cards/runtime/fdeSkillTemplatePageTypes';
13
- import type { WorkbenchThemeSourceConfig } from '../internal/personal-workbench/themes/workbenchThemeDefinitions';
14
- export interface WorkbenchCustomComponentRegistryEntry {
15
- component: Component;
16
- componentName: string;
17
- componentRef: string;
18
- enabled?: boolean;
19
- exportName: string;
20
- packageName: string;
21
- validateProps?: (props: Record<string, unknown>, data?: unknown) => boolean | string;
22
- version: string;
23
- }
24
- export interface WorkbenchCustomCardCatalogEntry extends CardRegistryEntry {
25
- componentRef: string;
26
- defaultProps: Record<string, unknown>;
27
- exportName: string;
28
- insertionMode: 'host' | 'registered';
29
- packageName: string;
30
- packageVersion: string;
31
- previewUrl: string;
32
- sourceLabel: string;
33
- }
34
- export type FdeGeneratedCards = readonly FdeSkillCardIntent[];
35
- export type FdeGeneratedDashboard = FdeSkillDashboardManifest | null;
36
- export type FdeGeneratedTemplatePage = FdeSkillTemplatePageManifest | null;
37
- export type WorkbenchThemeDefinition = WorkbenchThemeSourceConfig;
38
- export type WorkbenchPageRouteExtension = RouteRecordRaw;
39
- export interface WorkbenchAppExtensions {
40
- assistantPersonaProfiles?: Record<string, unknown>;
41
- cards?: {
42
- customCardCatalog?: WorkbenchCustomCardCatalogEntry[];
43
- customComponentRegistry?: WorkbenchRendererCustomComponentRegistry;
44
- };
45
- fde?: {
46
- generatedCards?: FdeGeneratedCards;
47
- generatedDashboard?: FdeGeneratedDashboard;
48
- generatedTemplatePage?: FdeGeneratedTemplatePage;
49
- generatedTemplateShell?: Component;
50
- workbenchTheme?: WorkbenchThemeDefinition;
51
- };
52
- pages?: {
53
- routes?: readonly WorkbenchPageRouteExtension[];
54
- };
55
- quickEntryGroups?: unknown[];
56
- systemCardPromptSelections?: unknown[];
57
- themeDefinitions?: readonly WorkbenchThemeDefinition[];
58
- }
59
- export type { WorkbenchRendererCustomComponentEntry, WorkbenchRendererCustomComponentRegistry, };
6
+ export type { FdeGeneratedCards, FdeGeneratedDashboard, FdeGeneratedTemplatePage, WorkbenchAppExtensions, WorkbenchCustomCardCatalogEntry, WorkbenchCustomComponentRegistryEntry, WorkbenchPageRouteExtension, WorkbenchRendererCustomComponentEntry, WorkbenchRendererCustomComponentRegistry, WorkbenchThemeDefinition, } from './types';
60
7
  export { WORKBENCH_CUSTOM_CARD_CATALOG, WORKBENCH_TEMPLATE_WEATHER_CAPABILITY_ID, WORKBENCH_TEMPLATE_WEATHER_COMPONENT_REF, WORKBENCH_TEMPLATE_WEATHER_PREVIEW_URL, } from '../internal/personal-workbench/lib/workbenchCustomCardCatalog';
61
8
  export { customComponentRegistry } from '../internal/personal-workbench/lib/workbenchCustomComponentRegistry';
9
+ export { normalizeWorkbenchExtensions, workbenchAppExtensionsFromManifest, } from './normalizeWorkbenchExtensions';
10
+ export type { NormalizeWorkbenchExtensionsResult, WorkbenchExtensionInput, WorkbenchExtensionManifestV1, } from './manifest';