@objectstack/cli 8.0.1 → 9.0.1

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.
@@ -0,0 +1,285 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { validateWidgetBindings, TABLE_COUNT_ONLY, WIDGET_DATASET_UNKNOWN, WIDGET_DIMENSION_UNKNOWN, WIDGET_MEASURE_UNKNOWN, CHART_FIELD_UNKNOWN, CHART_CONFIG_MISSING, } from './validate-widget-bindings.js';
3
+ /** The downstream repro from issue #1719 — dataset with a count AND a sum
4
+ * measure plus a dimension; the widget selects only the count, no dims. */
5
+ function reproStack(widgetOverrides = {}) {
6
+ return {
7
+ datasets: [{
8
+ name: 'expense_report_metrics',
9
+ label: 'Expense report metrics',
10
+ object: 'expense_report',
11
+ measures: [
12
+ { name: 'report_count', label: 'report_count', aggregate: 'count' },
13
+ { name: 'total_amount', label: 'total_amount', aggregate: 'sum', field: 'total_amount' },
14
+ ],
15
+ dimensions: [{ name: 'cost_center', field: 'cost_center' }],
16
+ }],
17
+ dashboards: [{
18
+ name: 'expenses_overview_dashboard',
19
+ label: 'Expenses Overview',
20
+ widgets: [{
21
+ id: 'pending_reports_table',
22
+ type: 'table',
23
+ dataset: 'expense_report_metrics',
24
+ values: ['report_count'],
25
+ filter: { status: 'submitted' },
26
+ layout: { x: 0, y: 0, w: 6, h: 4 },
27
+ ...widgetOverrides,
28
+ }],
29
+ }],
30
+ };
31
+ }
32
+ /** The minimal repro from issue #1721 — dataset measure is `sum_amount`, but
33
+ * the chart's yAxis still names the old base column `amount`. */
34
+ function chartStack(widgetOverrides = {}) {
35
+ return {
36
+ datasets: [{
37
+ name: 'expense_line_metrics',
38
+ label: 'Expense line metrics',
39
+ object: 'expense_line',
40
+ dimensions: [{ name: 'category', field: 'category' }],
41
+ measures: [
42
+ { name: 'sum_amount', label: 'sum_amount', aggregate: 'sum', field: 'amount', certified: true },
43
+ { name: 'ticket_count', label: 'ticket_count', aggregate: 'count' },
44
+ ],
45
+ }],
46
+ dashboards: [{
47
+ name: 'spend_dashboard',
48
+ label: 'Spend',
49
+ widgets: [{
50
+ id: 'spend_by_category',
51
+ type: 'bar',
52
+ dataset: 'expense_line_metrics',
53
+ dimensions: ['category'],
54
+ values: ['sum_amount'],
55
+ chartConfig: {
56
+ type: 'bar',
57
+ xAxis: { field: 'category' },
58
+ yAxis: [{ field: 'sum_amount' }],
59
+ },
60
+ layout: { x: 0, y: 0, w: 6, h: 4 },
61
+ ...widgetOverrides,
62
+ }],
63
+ }],
64
+ };
65
+ }
66
+ describe('validateWidgetBindings (reference integrity, issue #1721)', () => {
67
+ it('a fully resolved chart widget is clean', () => {
68
+ expect(validateWidgetBindings(chartStack())).toHaveLength(0);
69
+ });
70
+ it('(a) errors on a dataset reference that does not resolve', () => {
71
+ const findings = validateWidgetBindings(chartStack({ dataset: 'expense_line_metric' }));
72
+ expect(findings).toHaveLength(1);
73
+ expect(findings[0].severity).toBe('error');
74
+ expect(findings[0].rule).toBe(WIDGET_DATASET_UNKNOWN);
75
+ expect(findings[0].message).toContain('expense_line_metric');
76
+ expect(findings[0].hint).toContain('Did you mean "expense_line_metrics"?');
77
+ });
78
+ it('(b) errors on a dimension name the dataset does not declare', () => {
79
+ const findings = validateWidgetBindings(chartStack({ dimensions: ['categry'] }));
80
+ expect(findings).toHaveLength(1);
81
+ expect(findings[0].severity).toBe('error');
82
+ expect(findings[0].rule).toBe(WIDGET_DIMENSION_UNKNOWN);
83
+ expect(findings[0].message).toContain('"categry"');
84
+ expect(findings[0].message).toContain('declared dimensions: category');
85
+ expect(findings[0].hint).toContain('Did you mean "category"?');
86
+ });
87
+ it('(c) errors on a measure name the dataset does not declare', () => {
88
+ const findings = validateWidgetBindings(chartStack({
89
+ type: 'metric',
90
+ values: ['amount'],
91
+ chartConfig: undefined,
92
+ }));
93
+ expect(findings).toHaveLength(1);
94
+ expect(findings[0].severity).toBe('error');
95
+ expect(findings[0].rule).toBe(WIDGET_MEASURE_UNKNOWN);
96
+ expect(findings[0].message).toContain('declared measures: sum_amount, ticket_count');
97
+ expect(findings[0].hint).toContain('Did you mean "sum_amount"?');
98
+ });
99
+ it('(d) errors on the issue repro: yAxis.field naming the stale base column', () => {
100
+ const findings = validateWidgetBindings(chartStack({
101
+ chartConfig: {
102
+ type: 'bar',
103
+ xAxis: { field: 'category' },
104
+ yAxis: [{ field: 'amount' }],
105
+ },
106
+ }));
107
+ expect(findings).toHaveLength(1);
108
+ expect(findings[0].severity).toBe('error');
109
+ expect(findings[0].rule).toBe(CHART_FIELD_UNKNOWN);
110
+ expect(findings[0].where).toContain('spend_by_category');
111
+ expect(findings[0].message).toContain('chartConfig.yAxis[0].field "amount"');
112
+ expect(findings[0].message).toContain('declared measures: sum_amount, ticket_count');
113
+ expect(findings[0].hint).toContain('Did you mean "sum_amount"?');
114
+ });
115
+ it('(d) errors on xAxis.field that is not a dataset dimension', () => {
116
+ const findings = validateWidgetBindings(chartStack({
117
+ chartConfig: {
118
+ type: 'bar',
119
+ xAxis: { field: 'categories' },
120
+ yAxis: [{ field: 'sum_amount' }],
121
+ },
122
+ }));
123
+ expect(findings).toHaveLength(1);
124
+ expect(findings[0].rule).toBe(CHART_FIELD_UNKNOWN);
125
+ expect(findings[0].message).toContain('chartConfig.xAxis.field "categories"');
126
+ expect(findings[0].hint).toContain('Did you mean "category"?');
127
+ });
128
+ it('(d) errors on series[].name that resolves to no selected measure', () => {
129
+ const findings = validateWidgetBindings(chartStack({
130
+ chartConfig: {
131
+ type: 'bar',
132
+ series: [{ name: 'value' }],
133
+ },
134
+ }));
135
+ expect(findings).toHaveLength(1);
136
+ expect(findings[0].rule).toBe(CHART_FIELD_UNKNOWN);
137
+ expect(findings[0].message).toContain('chartConfig.series[0].name "value"');
138
+ });
139
+ it('(d) a declared-but-unselected measure gets the targeted message', () => {
140
+ const findings = validateWidgetBindings(chartStack({
141
+ chartConfig: {
142
+ type: 'bar',
143
+ xAxis: { field: 'category' },
144
+ yAxis: [{ field: 'ticket_count' }],
145
+ },
146
+ }));
147
+ expect(findings).toHaveLength(1);
148
+ expect(findings[0].rule).toBe(CHART_FIELD_UNKNOWN);
149
+ expect(findings[0].message).toContain('not selected in the widget\'s values');
150
+ expect(findings[0].hint).toContain('Add "ticket_count" to the widget\'s values');
151
+ });
152
+ it('(d) warns when a chart-type widget has no chartConfig at all', () => {
153
+ const findings = validateWidgetBindings(chartStack({ chartConfig: undefined }));
154
+ expect(findings).toHaveLength(1);
155
+ expect(findings[0].severity).toBe('warning');
156
+ expect(findings[0].rule).toBe(CHART_CONFIG_MISSING);
157
+ expect(findings[0].message).toContain("'bar'");
158
+ expect(findings[0].hint).toContain(`suppressWarnings: ['${CHART_CONFIG_MISSING}']`);
159
+ });
160
+ it('(d) missing chartConfig is suppressible per widget', () => {
161
+ expect(validateWidgetBindings(chartStack({
162
+ chartConfig: undefined,
163
+ suppressWarnings: [CHART_CONFIG_MISSING],
164
+ }))).toHaveLength(0);
165
+ });
166
+ it('(d) non-chart types do not warn on missing chartConfig', () => {
167
+ for (const type of ['metric', 'kpi', 'gauge', 'table']) {
168
+ expect(validateWidgetBindings(chartStack({ type, chartConfig: undefined }))).toHaveLength(0);
169
+ }
170
+ });
171
+ it('errors are NOT suppressible via suppressWarnings', () => {
172
+ const findings = validateWidgetBindings(chartStack({
173
+ dataset: 'no_such_dataset',
174
+ suppressWarnings: [WIDGET_DATASET_UNKNOWN],
175
+ }));
176
+ expect(findings).toHaveLength(1);
177
+ expect(findings[0].severity).toBe('error');
178
+ });
179
+ it('does not double-report a chartConfig field that names an already-errored selection entry', () => {
180
+ const findings = validateWidgetBindings(chartStack({
181
+ values: ['amount'],
182
+ chartConfig: {
183
+ type: 'bar',
184
+ xAxis: { field: 'category' },
185
+ yAxis: [{ field: 'amount' }],
186
+ },
187
+ }));
188
+ expect(findings).toHaveLength(1);
189
+ expect(findings[0].rule).toBe(WIDGET_MEASURE_UNKNOWN);
190
+ });
191
+ it('a dangling dataset reports once and skips the name checks', () => {
192
+ const findings = validateWidgetBindings(chartStack({
193
+ dataset: 'nope',
194
+ dimensions: ['whatever'],
195
+ values: ['also_whatever'],
196
+ }));
197
+ expect(findings).toHaveLength(1);
198
+ expect(findings[0].rule).toBe(WIDGET_DATASET_UNKNOWN);
199
+ });
200
+ });
201
+ describe('validateWidgetBindings (table-count-only, issue #1719)', () => {
202
+ it('warns on the issue repro: count-only table widget without dimensions', () => {
203
+ const warnings = validateWidgetBindings(reproStack());
204
+ expect(warnings).toHaveLength(1);
205
+ expect(warnings[0].severity).toBe('warning');
206
+ expect(warnings[0].rule).toBe(TABLE_COUNT_ONLY);
207
+ expect(warnings[0].where).toContain('expenses_overview_dashboard');
208
+ expect(warnings[0].where).toContain('pending_reports_table');
209
+ expect(warnings[0].path).toBe('dashboards[0].widgets[0]');
210
+ expect(warnings[0].message).toContain('report_count');
211
+ expect(warnings[0].message).toContain('single summary row');
212
+ expect(warnings[0].hint).toContain('ListView (ADR-0017)');
213
+ expect(warnings[0].hint).toContain(`suppressWarnings: ['${TABLE_COUNT_ONLY}']`);
214
+ });
215
+ it('warns for pivot widgets too', () => {
216
+ const warnings = validateWidgetBindings(reproStack({ type: 'pivot' }));
217
+ expect(warnings).toHaveLength(1);
218
+ expect(warnings[0].message).toContain("'pivot' widget");
219
+ });
220
+ it('is keyed on the WIDGET binding — selecting the sum measure is clean', () => {
221
+ expect(validateWidgetBindings(reproStack({ values: ['total_amount'] }))).toHaveLength(0);
222
+ });
223
+ it('mixed count + non-count selection is clean', () => {
224
+ expect(validateWidgetBindings(reproStack({ values: ['report_count', 'total_amount'] }))).toHaveLength(0);
225
+ });
226
+ it('declaring a dimension on the widget is clean', () => {
227
+ expect(validateWidgetBindings(reproStack({ dimensions: ['cost_center'] }))).toHaveLength(0);
228
+ });
229
+ it('metric widgets are exactly what a count-only binding wants — clean', () => {
230
+ expect(validateWidgetBindings(reproStack({ type: 'metric' }))).toHaveLength(0);
231
+ });
232
+ it('suppressWarnings opts a deliberate single-row table out', () => {
233
+ expect(validateWidgetBindings(reproStack({ suppressWarnings: [TABLE_COUNT_ONLY] }))).toHaveLength(0);
234
+ });
235
+ it('unrelated suppressWarnings entries do not suppress', () => {
236
+ expect(validateWidgetBindings(reproStack({ suppressWarnings: ['some-other-rule'] }))).toHaveLength(1);
237
+ });
238
+ it('a dangling dataset reference is the cross-reference error, not this rule', () => {
239
+ const findings = validateWidgetBindings(reproStack({ dataset: 'no_such_dataset' }));
240
+ expect(findings).toHaveLength(1);
241
+ expect(findings[0].severity).toBe('error');
242
+ expect(findings[0].rule).toBe(WIDGET_DATASET_UNKNOWN);
243
+ });
244
+ it('an unresolvable measure name is the cross-reference error, not this rule', () => {
245
+ const findings = validateWidgetBindings(reproStack({ values: ['no_such_measure'] }));
246
+ expect(findings).toHaveLength(1);
247
+ expect(findings[0].severity).toBe('error');
248
+ expect(findings[0].rule).toBe(WIDGET_MEASURE_UNKNOWN);
249
+ });
250
+ it('treats derived measures as non-count even when aggregate says count', () => {
251
+ const stack = reproStack({ values: ['count_ratio'] });
252
+ stack.datasets[0].measures.push({
253
+ name: 'count_ratio',
254
+ aggregate: 'count',
255
+ derived: { op: 'ratio', of: ['report_count', 'report_count'] },
256
+ });
257
+ expect(validateWidgetBindings(stack)).toHaveLength(0);
258
+ });
259
+ it('count_distinct is a deliberate analytic — clean', () => {
260
+ const stack = reproStack({ values: ['unique_requesters'] });
261
+ stack.datasets[0].measures.push({
262
+ name: 'unique_requesters',
263
+ aggregate: 'count_distinct',
264
+ field: 'requester',
265
+ });
266
+ expect(validateWidgetBindings(stack)).toHaveLength(0);
267
+ });
268
+ it('handles map-keyed datasets/dashboards collections', () => {
269
+ const arrayForm = reproStack();
270
+ const { name: _dsName, ...dsRest } = arrayForm.datasets[0];
271
+ const { name: _dashName, ...dashRest } = arrayForm.dashboards[0];
272
+ const stack = {
273
+ datasets: { expense_report_metrics: dsRest },
274
+ dashboards: { expenses_overview_dashboard: dashRest },
275
+ };
276
+ const warnings = validateWidgetBindings(stack);
277
+ expect(warnings).toHaveLength(1);
278
+ expect(warnings[0].where).toContain('expenses_overview_dashboard');
279
+ });
280
+ it('is silent on stacks without dashboards or datasets', () => {
281
+ expect(validateWidgetBindings({})).toHaveLength(0);
282
+ expect(validateWidgetBindings({ dashboards: [], datasets: [] })).toHaveLength(0);
283
+ });
284
+ });
285
+ //# sourceMappingURL=validate-widget-bindings.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-widget-bindings.test.js","sourceRoot":"","sources":["../../src/utils/validate-widget-bindings.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/cli",
3
- "version": "8.0.1",
3
+ "version": "9.0.1",
4
4
  "description": "Command Line Interface for ObjectStack Protocol",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,10 @@
33
33
  "topicSeparator": " "
34
34
  },
35
35
  "dependencies": {
36
- "@ai-sdk/gateway": "^3.0.121",
36
+ "@ai-sdk/anthropic": "^3.0.81",
37
+ "@ai-sdk/gateway": "^3.0.126",
38
+ "@ai-sdk/google": "^3.0.80",
39
+ "@ai-sdk/openai": "^3.0.68",
37
40
  "@oclif/core": "^4.11.4",
38
41
  "bundle-require": "^5.1.0",
39
42
  "chalk": "^5.6.2",
@@ -44,53 +47,53 @@
44
47
  "tsx": "^4.22.4",
45
48
  "yaml": "^2.9.0",
46
49
  "zod": "^4.4.3",
47
- "@objectstack/account": "8.0.1",
48
- "@objectstack/client": "8.0.1",
49
- "@objectstack/console": "8.0.1",
50
- "@objectstack/core": "^8.0.1",
51
- "@objectstack/driver-memory": "^8.0.1",
52
- "@objectstack/driver-mongodb": "^8.0.1",
53
- "@objectstack/driver-sql": "^8.0.1",
54
- "@objectstack/driver-sqlite-wasm": "^8.0.1",
55
- "@objectstack/formula": "8.0.1",
56
- "@objectstack/objectql": "^8.0.1",
57
- "@objectstack/observability": "^8.0.1",
58
- "@objectstack/platform-objects": "8.0.1",
59
- "@objectstack/plugin-approvals": "8.0.1",
60
- "@objectstack/plugin-audit": "8.0.1",
61
- "@objectstack/plugin-auth": "8.0.1",
62
- "@objectstack/plugin-email": "8.0.1",
63
- "@objectstack/plugin-hono-server": "8.0.1",
64
- "@objectstack/mcp": "8.0.1",
65
- "@objectstack/plugin-org-scoping": "8.0.1",
66
- "@objectstack/plugin-reports": "8.0.1",
67
- "@objectstack/plugin-security": "8.0.1",
68
- "@objectstack/plugin-sharing": "8.0.1",
69
- "@objectstack/plugin-trigger-record-change": "8.0.1",
70
- "@objectstack/plugin-trigger-schedule": "8.0.1",
71
- "@objectstack/plugin-webhooks": "8.0.1",
72
- "@objectstack/rest": "8.0.1",
73
- "@objectstack/runtime": "^8.0.1",
74
- "@objectstack/service-ai": "8.0.1",
75
- "@objectstack/service-analytics": "8.0.1",
76
- "@objectstack/service-automation": "8.0.1",
77
- "@objectstack/service-cache": "8.0.1",
78
- "@objectstack/service-datasource": "8.0.1",
79
- "@objectstack/service-feed": "8.0.1",
80
- "@objectstack/service-job": "8.0.1",
81
- "@objectstack/service-messaging": "8.0.1",
82
- "@objectstack/service-package": "8.0.1",
83
- "@objectstack/service-queue": "8.0.1",
84
- "@objectstack/service-realtime": "8.0.1",
85
- "@objectstack/service-settings": "8.0.1",
86
- "@objectstack/service-storage": "8.0.1",
87
- "@objectstack/spec": "8.0.1",
88
- "@objectstack/types": "8.0.1"
50
+ "@objectstack/account": "9.0.1",
51
+ "@objectstack/client": "9.0.1",
52
+ "@objectstack/console": "9.0.1",
53
+ "@objectstack/core": "^9.0.1",
54
+ "@objectstack/driver-memory": "^9.0.1",
55
+ "@objectstack/driver-mongodb": "^9.0.1",
56
+ "@objectstack/driver-sql": "^9.0.1",
57
+ "@objectstack/driver-sqlite-wasm": "^9.0.1",
58
+ "@objectstack/formula": "9.0.1",
59
+ "@objectstack/objectql": "^9.0.1",
60
+ "@objectstack/observability": "^9.0.1",
61
+ "@objectstack/platform-objects": "9.0.1",
62
+ "@objectstack/plugin-approvals": "9.0.1",
63
+ "@objectstack/plugin-audit": "9.0.1",
64
+ "@objectstack/plugin-auth": "9.0.1",
65
+ "@objectstack/plugin-email": "9.0.1",
66
+ "@objectstack/plugin-hono-server": "9.0.1",
67
+ "@objectstack/mcp": "9.0.1",
68
+ "@objectstack/plugin-org-scoping": "9.0.1",
69
+ "@objectstack/plugin-reports": "9.0.1",
70
+ "@objectstack/plugin-security": "9.0.1",
71
+ "@objectstack/plugin-sharing": "9.0.1",
72
+ "@objectstack/plugin-trigger-record-change": "9.0.1",
73
+ "@objectstack/plugin-trigger-schedule": "9.0.1",
74
+ "@objectstack/plugin-webhooks": "9.0.1",
75
+ "@objectstack/rest": "9.0.1",
76
+ "@objectstack/runtime": "^9.0.1",
77
+ "@objectstack/service-ai": "9.0.1",
78
+ "@objectstack/service-analytics": "9.0.1",
79
+ "@objectstack/service-automation": "9.0.1",
80
+ "@objectstack/service-cache": "9.0.1",
81
+ "@objectstack/service-datasource": "9.0.1",
82
+ "@objectstack/service-feed": "9.0.1",
83
+ "@objectstack/service-job": "9.0.1",
84
+ "@objectstack/service-messaging": "9.0.1",
85
+ "@objectstack/service-package": "9.0.1",
86
+ "@objectstack/service-queue": "9.0.1",
87
+ "@objectstack/service-realtime": "9.0.1",
88
+ "@objectstack/service-settings": "9.0.1",
89
+ "@objectstack/service-storage": "9.0.1",
90
+ "@objectstack/spec": "9.0.1",
91
+ "@objectstack/types": "9.0.1"
89
92
  },
90
93
  "devDependencies": {
91
94
  "@oclif/plugin-help": "^6.2.50",
92
- "@oclif/plugin-plugins": "^5.4.72",
93
- "@types/node": "^25.9.1",
95
+ "@oclif/plugin-plugins": "^5.4.73",
96
+ "@types/node": "^25.9.2",
94
97
  "tsup": "^8.5.1",
95
98
  "typescript": "^6.0.3",
96
99
  "vitest": "^4.1.8"