@object-ui/app-shell 7.1.0 → 7.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +320 -0
  2. package/dist/components/ManagedByBadge.js +1 -1
  3. package/dist/console/AppContent.js +9 -15
  4. package/dist/console/ConsoleShell.d.ts +16 -0
  5. package/dist/console/ConsoleShell.js +43 -2
  6. package/dist/console/ai/AiChatPage.js +64 -14
  7. package/dist/console/ai/BuildDebugDrawer.d.ts +20 -0
  8. package/dist/console/ai/BuildDebugDrawer.js +75 -0
  9. package/dist/console/ai/buildDebugApi.d.ts +94 -0
  10. package/dist/console/ai/buildDebugApi.js +16 -0
  11. package/dist/console/home/HomeLayout.js +5 -7
  12. package/dist/console/home/HomePage.js +1 -9
  13. package/dist/console/organizations/CreateWorkspaceDialog.js +15 -1
  14. package/dist/console/organizations/OrganizationsPage.js +32 -4
  15. package/dist/console/organizations/manage/OrganizationLayout.js +1 -1
  16. package/dist/console/organizations/provisionEnvironment.d.ts +53 -0
  17. package/dist/console/organizations/provisionEnvironment.js +64 -0
  18. package/dist/environment/EnvironmentEntitlementDialog.d.ts +34 -0
  19. package/dist/environment/EnvironmentEntitlementDialog.js +37 -0
  20. package/dist/environment/EnvironmentListToolbar.d.ts +33 -0
  21. package/dist/environment/EnvironmentListToolbar.js +59 -0
  22. package/dist/environment/entitlements.d.ts +90 -0
  23. package/dist/environment/entitlements.js +91 -0
  24. package/dist/environment/useEnvironmentEntitlements.d.ts +32 -0
  25. package/dist/environment/useEnvironmentEntitlements.js +108 -0
  26. package/dist/hooks/useActionModal.js +15 -1
  27. package/dist/hooks/useAiSurface.d.ts +59 -0
  28. package/dist/hooks/useAiSurface.js +78 -0
  29. package/dist/hooks/useConsoleActionRuntime.d.ts +3 -0
  30. package/dist/hooks/useConsoleActionRuntime.js +36 -8
  31. package/dist/index.d.ts +3 -1
  32. package/dist/index.js +5 -1
  33. package/dist/layout/AppHeader.js +30 -5
  34. package/dist/layout/ConsoleFloatingChatbot.js +22 -4
  35. package/dist/layout/ConsoleLayout.js +5 -6
  36. package/dist/layout/ContextSelectors.js +0 -19
  37. package/dist/layout/WorkspaceSwitcher.d.ts +14 -0
  38. package/dist/layout/WorkspaceSwitcher.js +76 -0
  39. package/dist/preview/DraftPreviewBar.js +20 -7
  40. package/dist/providers/ExpressionProvider.js +9 -3
  41. package/dist/utils/index.d.ts +2 -2
  42. package/dist/utils/index.js +1 -1
  43. package/dist/utils/managedByEmptyState.d.ts +1 -1
  44. package/dist/utils/managedByEmptyState.js +20 -2
  45. package/dist/utils/recordFormNavigation.d.ts +60 -0
  46. package/dist/utils/recordFormNavigation.js +35 -0
  47. package/dist/utils/resolvePageVarTokens.d.ts +31 -0
  48. package/dist/utils/resolvePageVarTokens.js +72 -0
  49. package/dist/views/CreateViewDialog.js +14 -1
  50. package/dist/views/ObjectView.js +27 -13
  51. package/dist/views/metadata-admin/AssignedUsersSection.d.ts +28 -0
  52. package/dist/views/metadata-admin/AssignedUsersSection.js +151 -0
  53. package/dist/views/metadata-admin/PackagesPage.d.ts +5 -0
  54. package/dist/views/metadata-admin/PackagesPage.js +49 -4
  55. package/dist/views/metadata-admin/PermissionMatrixEditor.js +2 -1
  56. package/dist/views/metadata-admin/ResourceEditPage.js +36 -4
  57. package/dist/views/metadata-admin/ResourceListPage.js +25 -10
  58. package/dist/views/metadata-admin/StudioHomePage.js +1 -5
  59. package/dist/views/metadata-admin/createBody.d.ts +26 -0
  60. package/dist/views/metadata-admin/createBody.js +30 -0
  61. package/dist/views/metadata-admin/i18n.js +20 -2
  62. package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.d.ts +8 -0
  63. package/dist/views/metadata-admin/inspectors/DatasetDefaultInspector.js +17 -3
  64. package/dist/views/metadata-admin/inspectors/FlowEdgeInspector.js +16 -2
  65. package/dist/views/metadata-admin/inspectors/FlowExprIssue.d.ts +21 -0
  66. package/dist/views/metadata-admin/inspectors/FlowExprIssue.js +13 -0
  67. package/dist/views/metadata-admin/inspectors/FlowKeyValueField.d.ts +20 -2
  68. package/dist/views/metadata-admin/inspectors/FlowKeyValueField.js +71 -28
  69. package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.d.ts +4 -1
  70. package/dist/views/metadata-admin/inspectors/FlowNodeConfigField.js +24 -9
  71. package/dist/views/metadata-admin/inspectors/FlowNodeInspector.js +15 -3
  72. package/dist/views/metadata-admin/inspectors/FlowObjectListField.d.ts +4 -1
  73. package/dist/views/metadata-admin/inspectors/FlowObjectListField.js +8 -3
  74. package/dist/views/metadata-admin/inspectors/VariableTextInput.d.ts +47 -0
  75. package/dist/views/metadata-admin/inspectors/VariableTextInput.js +95 -0
  76. package/dist/views/metadata-admin/inspectors/datasetFilterCondition.js +6 -1
  77. package/dist/views/metadata-admin/inspectors/flow-node-config.d.ts +16 -1
  78. package/dist/views/metadata-admin/inspectors/flow-node-config.js +21 -10
  79. package/dist/views/metadata-admin/inspectors/flow-ref-check.d.ts +39 -0
  80. package/dist/views/metadata-admin/inspectors/flow-ref-check.js +114 -0
  81. package/dist/views/metadata-admin/inspectors/flow-scope.d.ts +109 -0
  82. package/dist/views/metadata-admin/inspectors/flow-scope.js +199 -0
  83. package/dist/views/metadata-admin/inspectors/useDatasetFields.d.ts +14 -3
  84. package/dist/views/metadata-admin/inspectors/useDatasetFields.js +0 -0
  85. package/dist/views/metadata-admin/inspectors/useFlowScope.d.ts +23 -0
  86. package/dist/views/metadata-admin/inspectors/useFlowScope.js +45 -0
  87. package/dist/views/metadata-admin/package-scope.d.ts +9 -19
  88. package/dist/views/metadata-admin/package-scope.js +11 -25
  89. package/dist/views/metadata-admin/preview-registry.d.ts +12 -0
  90. package/dist/views/metadata-admin/previews/FlowCanvas.d.ts +22 -3
  91. package/dist/views/metadata-admin/previews/FlowCanvas.js +45 -6
  92. package/dist/views/metadata-admin/previews/FlowPreview.d.ts +1 -1
  93. package/dist/views/metadata-admin/previews/FlowPreview.js +42 -30
  94. package/dist/views/metadata-admin/previews/ObjectFormCanvas.js +9 -4
  95. package/dist/views/metadata-admin/previews/ProblemsPanel.d.ts +18 -0
  96. package/dist/views/metadata-admin/previews/ProblemsPanel.js +27 -0
  97. package/dist/views/metadata-admin/previews/ReportPreview.d.ts +9 -8
  98. package/dist/views/metadata-admin/previews/ReportPreview.js +33 -16
  99. package/dist/views/metadata-admin/previews/flow-canvas-parts.d.ts +9 -1
  100. package/dist/views/metadata-admin/previews/flow-canvas-parts.js +5 -3
  101. package/dist/views/metadata-admin/previews/flow-expr-problems.d.ts +19 -0
  102. package/dist/views/metadata-admin/previews/flow-expr-problems.js +97 -0
  103. package/dist/views/metadata-admin/previews/flow-problems.d.ts +84 -0
  104. package/dist/views/metadata-admin/previews/flow-problems.js +209 -0
  105. package/dist/views/metadata-admin/previews/simulator/flow-sim-types.d.ts +9 -0
  106. package/dist/views/metadata-admin/previews/simulator/flow-sim-validate.js +4 -2
  107. package/package.json +38 -38
@@ -0,0 +1,209 @@
1
+ // Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
2
+ /**
3
+ * flow-problems — unify the two flow-validation sources into one flat,
4
+ * per-element issue list that the canvas badges and the Problems panel both
5
+ * render.
6
+ *
7
+ * 1. `validateFlowDraft` (client, structural): no resolvable entry,
8
+ * unreachable nodes, a decision with no default branch, duplicate node
9
+ * ids, dangling edges, un-declared cycles.
10
+ * 2. The server `_diagnostics` already attached to the layered record
11
+ * (schema validation), each keyed by a dotted JSON path.
12
+ *
13
+ * "Surfacing, not detection": detection already exists. This module only maps
14
+ * each detected issue onto a concrete canvas element — a node id or a stable
15
+ * edge key — so a badge can sit on the offending element and a Problems-panel
16
+ * row can select + reveal it. Flow-level issues (no specific element) are kept
17
+ * too: listed in the panel, but without a badge.
18
+ */
19
+ import { validateFlowDraft } from './simulator/flow-sim-validate';
20
+ import { edgeKey } from './flow-canvas-layout';
21
+ import { flowExpressionProblems } from './flow-expr-problems';
22
+ /** Stable `source->target` key matching an edge problem to a rendered edge. */
23
+ export function edgeProblemKey(source, target) {
24
+ return `${source}->${target}`;
25
+ }
26
+ /** Resolve an edge's selection key (`edgeKey`) from its endpoints. */
27
+ function resolveEdgeKey(edges, source, target) {
28
+ const idx = edges.findIndex((e) => e.source === source && e.target === target);
29
+ return idx >= 0 ? edgeKey(edges[idx], idx) : `${source}->${target}#-1`;
30
+ }
31
+ /** Normalize a dotted/array JSON path to segments (numbers stay numeric). */
32
+ function pathSegments(path) {
33
+ if (Array.isArray(path))
34
+ return path;
35
+ if (typeof path !== 'string' || !path)
36
+ return [];
37
+ return path.split('.').map((seg) => {
38
+ const n = Number(seg);
39
+ return Number.isInteger(n) && String(n) === seg ? n : seg;
40
+ });
41
+ }
42
+ /**
43
+ * Map a structural diagnostic's optional anchors (`edge`, `cycle`, `nodeId`)
44
+ * onto a badge target. A cycle points its badge at the *closing* hop — the edge
45
+ * the author marks as a back-edge to resolve it — but flags EVERY hop (nodes +
46
+ * edges) for the red error highlight so the whole loop reads as the problem.
47
+ */
48
+ function structuralMapping(diag, edges) {
49
+ if (diag.edge) {
50
+ const { source, target } = diag.edge;
51
+ return { target: { kind: 'edge', source, target, edgeKey: resolveEdgeKey(edges, source, target) } };
52
+ }
53
+ if (diag.cycle && diag.cycle.length >= 2) {
54
+ const c = diag.cycle;
55
+ const source = c[c.length - 2];
56
+ const target = c[c.length - 1];
57
+ const nodeIds = [];
58
+ const hops = [];
59
+ for (let i = 0; i < c.length - 1; i++) {
60
+ nodeIds.push(c[i]);
61
+ hops.push({ source: c[i], target: c[i + 1] });
62
+ }
63
+ return {
64
+ target: { kind: 'edge', source, target, edgeKey: resolveEdgeKey(edges, source, target) },
65
+ highlight: { nodeIds, edges: hops },
66
+ };
67
+ }
68
+ if (diag.nodeId)
69
+ return { target: { kind: 'node', nodeId: diag.nodeId } };
70
+ return { target: { kind: 'flow' } };
71
+ }
72
+ /** Map a server diagnostic's JSON path onto a node/edge/flow target. */
73
+ function serverTarget(path, nodes, edges) {
74
+ const segs = pathSegments(path);
75
+ if (segs.length >= 2 && typeof segs[1] === 'number') {
76
+ const idx = segs[1];
77
+ if (segs[0] === 'nodes' && nodes[idx]?.id)
78
+ return { kind: 'node', nodeId: nodes[idx].id };
79
+ if (segs[0] === 'edges' && edges[idx]) {
80
+ const e = edges[idx];
81
+ return { kind: 'edge', source: e.source, target: e.target, edgeKey: edgeKey(e, idx) };
82
+ }
83
+ }
84
+ return { kind: 'flow' };
85
+ }
86
+ /** Short stable token for a target, used in a problem's React key. */
87
+ function targetKey(t) {
88
+ if (t.kind === 'node')
89
+ return `n:${t.nodeId}`;
90
+ if (t.kind === 'edge')
91
+ return `e:${t.source}->${t.target}`;
92
+ return 'flow';
93
+ }
94
+ /**
95
+ * Build the unified problem list from structural validation + server
96
+ * diagnostics. Errors are listed before warnings; within a level each source
97
+ * keeps its own emit order (structural before server).
98
+ */
99
+ export function buildFlowProblems({ nodes, edges, serverDiagnostics, variables }) {
100
+ const problems = [];
101
+ const v = validateFlowDraft(nodes, edges);
102
+ const pushStructural = (level, list) => {
103
+ list.forEach((diag, i) => {
104
+ const { target, highlight } = structuralMapping(diag, edges);
105
+ problems.push({
106
+ id: `structural:${level}:${i}:${targetKey(target)}`,
107
+ level,
108
+ message: diag.message,
109
+ target,
110
+ source: 'structural',
111
+ ...(highlight ? { highlight } : {}),
112
+ });
113
+ });
114
+ };
115
+ pushStructural('error', v.errors);
116
+ pushStructural('warning', v.warnings);
117
+ (serverDiagnostics ?? []).forEach((diag, i) => {
118
+ const level = diag.severity === 'warning' ? 'warning' : 'error';
119
+ const target = serverTarget(diag.path, nodes, edges);
120
+ problems.push({
121
+ id: `server:${i}:${targetKey(target)}`,
122
+ level,
123
+ message: diag.message,
124
+ target,
125
+ source: 'server',
126
+ });
127
+ });
128
+ // Client-side EXPRESSION issues (ADR-0032 braces + scope-aware unknown refs),
129
+ // resolved onto node / edge targets — see flow-expr-problems.
130
+ flowExpressionProblems({ nodes, edges, variables: variables ?? [] }).forEach((ep, i) => {
131
+ const target = ep.target.kind === 'edge'
132
+ ? {
133
+ kind: 'edge',
134
+ source: ep.target.source,
135
+ target: ep.target.target,
136
+ edgeKey: resolveEdgeKey(edges, ep.target.source, ep.target.target),
137
+ }
138
+ : { kind: 'node', nodeId: ep.target.nodeId };
139
+ problems.push({
140
+ id: `expression:${ep.level}:${i}:${targetKey(target)}`,
141
+ level: ep.level,
142
+ message: ep.message,
143
+ target,
144
+ source: 'expression',
145
+ });
146
+ });
147
+ // Errors first so the panel + counts lead with blockers (stable within level).
148
+ return problems
149
+ .map((p, i) => [p, i])
150
+ .sort((a, b) => {
151
+ if (a[0].level !== b[0].level)
152
+ return a[0].level === 'error' ? -1 : 1;
153
+ return a[1] - b[1];
154
+ })
155
+ .map(([p]) => p);
156
+ }
157
+ function foldBadge(list) {
158
+ const level = list.some((p) => p.level === 'error') ? 'error' : 'warning';
159
+ return { level, title: list.map((p) => p.message).join('\n'), count: list.length };
160
+ }
161
+ /** Group problems into per-node / per-edge badges for the canvas overlay. */
162
+ export function indexProblemBadges(problems) {
163
+ const nodeLists = new Map();
164
+ const edgeLists = new Map();
165
+ for (const p of problems) {
166
+ if (p.target.kind === 'node') {
167
+ const l = nodeLists.get(p.target.nodeId) ?? [];
168
+ l.push(p);
169
+ nodeLists.set(p.target.nodeId, l);
170
+ }
171
+ else if (p.target.kind === 'edge') {
172
+ const k = edgeProblemKey(p.target.source, p.target.target);
173
+ const l = edgeLists.get(k) ?? [];
174
+ l.push(p);
175
+ edgeLists.set(k, l);
176
+ }
177
+ }
178
+ const byNode = new Map();
179
+ for (const [id, list] of nodeLists)
180
+ byNode.set(id, foldBadge(list));
181
+ const byEdge = new Map();
182
+ for (const [k, list] of edgeLists)
183
+ byEdge.set(k, foldBadge(list));
184
+ return { byNode, byEdge };
185
+ }
186
+ /**
187
+ * Error elements to paint with the red ring/stroke, derived from the unified
188
+ * problem list. ERRORS ONLY — warnings get an amber badge but no ring. Includes
189
+ * each error's `highlight` set, so a cycle paints its whole loop (every hop node
190
+ * + edge) red while its badge still sits on the closing edge. Lets the preview
191
+ * derive the red sets from `problems` instead of a second validateFlowDraft pass.
192
+ */
193
+ export function deriveInvalidElements(problems) {
194
+ const nodeSet = new Set();
195
+ const edgeSet = new Set();
196
+ for (const p of problems) {
197
+ if (p.level !== 'error')
198
+ continue;
199
+ if (p.target.kind === 'node')
200
+ nodeSet.add(p.target.nodeId);
201
+ else if (p.target.kind === 'edge')
202
+ edgeSet.add(edgeProblemKey(p.target.source, p.target.target));
203
+ for (const id of p.highlight?.nodeIds ?? [])
204
+ nodeSet.add(id);
205
+ for (const e of p.highlight?.edges ?? [])
206
+ edgeSet.add(edgeProblemKey(e.source, e.target));
207
+ }
208
+ return { invalidNodeIds: [...nodeSet], invalidEdges: edgeSet };
209
+ }
@@ -80,7 +80,16 @@ export interface SimState {
80
80
  export type DiagnosticLevel = 'error' | 'warning';
81
81
  export interface Diagnostic {
82
82
  level: DiagnosticLevel;
83
+ /** The node this diagnostic points at (for an inline badge + click-to-reveal). */
83
84
  nodeId?: string;
85
+ /**
86
+ * The edge this diagnostic points at (e.g. a dangling endpoint). Carries the
87
+ * endpoints so the designer can key the inline badge by `source->target`.
88
+ */
89
+ edge?: {
90
+ source: string;
91
+ target: string;
92
+ };
84
93
  message: string;
85
94
  /**
86
95
  * For a cycle error: the node path that closes the loop (e.g. `['a','b','a']`),
@@ -101,10 +101,12 @@ export function validateFlowDraft(nodes, edges) {
101
101
  idSet.add(id);
102
102
  }
103
103
  for (const e of edges) {
104
+ // Attach the endpoints so a dangling-edge error can badge the offending
105
+ // connection on the canvas (not just appear as a flow-level message).
104
106
  if (!idSet.has(e.source))
105
- errors.push({ level: 'error', message: `Edge source "${e.source}" does not exist.` });
107
+ errors.push({ level: 'error', edge: { source: e.source, target: e.target }, message: `Edge source "${e.source}" does not exist.` });
106
108
  if (!idSet.has(e.target))
107
- errors.push({ level: 'error', message: `Edge target "${e.target}" does not exist.` });
109
+ errors.push({ level: 'error', edge: { source: e.source, target: e.target }, message: `Edge target "${e.target}" does not exist.` });
108
110
  }
109
111
  // Entry resolution: prefer an explicit `start` node, else a node with no
110
112
  // incoming edge. Zero or many → the author must fix it before running.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/app-shell",
3
- "version": "7.1.0",
3
+ "version": "7.3.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Minimal application shell for ObjectUI - framework-agnostic rendering engine",
@@ -33,36 +33,36 @@
33
33
  "qrcode": "^1.5.4",
34
34
  "sonner": "^2.0.7",
35
35
  "zod": "^4.4.3",
36
- "@object-ui/auth": "7.1.0",
37
- "@object-ui/collaboration": "7.1.0",
38
- "@object-ui/components": "7.1.0",
39
- "@object-ui/core": "7.1.0",
40
- "@object-ui/data-objectstack": "7.1.0",
41
- "@object-ui/fields": "7.1.0",
42
- "@object-ui/i18n": "7.1.0",
43
- "@object-ui/layout": "7.1.0",
44
- "@object-ui/permissions": "7.1.0",
45
- "@object-ui/plugin-editor": "7.1.0",
46
- "@object-ui/providers": "7.1.0",
47
- "@object-ui/react": "7.1.0",
48
- "@object-ui/types": "7.1.0"
36
+ "@object-ui/auth": "7.3.0",
37
+ "@object-ui/collaboration": "7.3.0",
38
+ "@object-ui/components": "7.3.0",
39
+ "@object-ui/core": "7.3.0",
40
+ "@object-ui/fields": "7.3.0",
41
+ "@object-ui/data-objectstack": "7.3.0",
42
+ "@object-ui/i18n": "7.3.0",
43
+ "@object-ui/layout": "7.3.0",
44
+ "@object-ui/permissions": "7.3.0",
45
+ "@object-ui/plugin-editor": "7.3.0",
46
+ "@object-ui/providers": "7.3.0",
47
+ "@object-ui/react": "7.3.0",
48
+ "@object-ui/types": "7.3.0"
49
49
  },
50
50
  "peerDependencies": {
51
51
  "react": "^18.0.0 || ^19.0.0",
52
52
  "react-dom": "^18.0.0 || ^19.0.0",
53
53
  "react-router-dom": "^6.0.0 || ^7.0.0",
54
- "@object-ui/plugin-calendar": "^7.1.0",
55
- "@object-ui/plugin-charts": "^7.1.0",
56
- "@object-ui/plugin-chatbot": "^7.1.0",
57
- "@object-ui/plugin-dashboard": "^7.1.0",
58
- "@object-ui/plugin-designer": "^7.1.0",
59
- "@object-ui/plugin-detail": "^7.1.0",
60
- "@object-ui/plugin-form": "^7.1.0",
61
- "@object-ui/plugin-grid": "^7.1.0",
62
- "@object-ui/plugin-kanban": "^7.1.0",
63
- "@object-ui/plugin-list": "^7.1.0",
64
- "@object-ui/plugin-report": "^7.1.0",
65
- "@object-ui/plugin-view": "^7.1.0"
54
+ "@object-ui/plugin-calendar": "^7.3.0",
55
+ "@object-ui/plugin-chatbot": "^7.3.0",
56
+ "@object-ui/plugin-charts": "^7.3.0",
57
+ "@object-ui/plugin-dashboard": "^7.3.0",
58
+ "@object-ui/plugin-designer": "^7.3.0",
59
+ "@object-ui/plugin-detail": "^7.3.0",
60
+ "@object-ui/plugin-form": "^7.3.0",
61
+ "@object-ui/plugin-kanban": "^7.3.0",
62
+ "@object-ui/plugin-grid": "^7.3.0",
63
+ "@object-ui/plugin-list": "^7.3.0",
64
+ "@object-ui/plugin-report": "^7.3.0",
65
+ "@object-ui/plugin-view": "^7.3.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@types/node": "^26.0.0",
@@ -75,18 +75,18 @@
75
75
  "sonner": "^2.0.7",
76
76
  "typescript": "^6.0.3",
77
77
  "vite": "^8.0.16",
78
- "@object-ui/plugin-calendar": "7.1.0",
79
- "@object-ui/plugin-charts": "7.1.0",
80
- "@object-ui/plugin-chatbot": "7.1.0",
81
- "@object-ui/plugin-dashboard": "7.1.0",
82
- "@object-ui/plugin-designer": "7.1.0",
83
- "@object-ui/plugin-detail": "7.1.0",
84
- "@object-ui/plugin-form": "7.1.0",
85
- "@object-ui/plugin-grid": "7.1.0",
86
- "@object-ui/plugin-kanban": "7.1.0",
87
- "@object-ui/plugin-list": "7.1.0",
88
- "@object-ui/plugin-report": "7.1.0",
89
- "@object-ui/plugin-view": "7.1.0"
78
+ "@object-ui/plugin-calendar": "7.3.0",
79
+ "@object-ui/plugin-charts": "7.3.0",
80
+ "@object-ui/plugin-chatbot": "7.3.0",
81
+ "@object-ui/plugin-dashboard": "7.3.0",
82
+ "@object-ui/plugin-designer": "7.3.0",
83
+ "@object-ui/plugin-detail": "7.3.0",
84
+ "@object-ui/plugin-form": "7.3.0",
85
+ "@object-ui/plugin-grid": "7.3.0",
86
+ "@object-ui/plugin-kanban": "7.3.0",
87
+ "@object-ui/plugin-list": "7.3.0",
88
+ "@object-ui/plugin-report": "7.3.0",
89
+ "@object-ui/plugin-view": "7.3.0"
90
90
  },
91
91
  "keywords": [
92
92
  "objectui",