@reasoningco/infer 0.0.4 → 0.1.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.
@@ -5,16 +5,30 @@ import { allowlistedMetricIds, allowlistedGroupByColumns } from './types.js';
5
5
  export function validateQueryPlan(rawPlan, catalog, options) {
6
6
  const maxLimit = options?.maxLimit ?? 200;
7
7
  const defaultLimit = options?.defaultLimit ?? 200;
8
+ const warnings = options?.warnings ?? [];
8
9
  // 1. Parse through Zod
9
10
  const parseResult = SmartQueryPlanSchema.safeParse(rawPlan);
10
11
  if (!parseResult.success) {
11
- throw new InferError('PLAN_INVALID', 'validator', 'Invalid query plan structure', {
12
- zodErrors: parseResult.error.flatten(),
12
+ const flat = parseResult.error.flatten();
13
+ const fieldErrors = Object.entries(flat.fieldErrors)
14
+ .map(([field, msgs]) => `${field}: ${msgs.join(', ')}`)
15
+ .join('; ');
16
+ const formErrors = flat.formErrors.join('; ');
17
+ const detail = [fieldErrors, formErrors].filter(Boolean).join('; ');
18
+ throw new InferError('PLAN_INVALID', 'validator', `Invalid query plan: ${detail || 'structure validation failed'}`, {
19
+ zodErrors: flat,
13
20
  });
14
21
  }
15
22
  const plan = parseResult.data;
16
- // 2. Validate dataset exists in catalog
17
- const dataset = catalog.datasets[plan.dataset];
23
+ // 2. Validate dataset exists in catalog (strip schema prefix for LLM compatibility)
24
+ let datasetId = plan.dataset;
25
+ if (datasetId.includes('.') && !catalog.datasets[datasetId]) {
26
+ const stripped = datasetId.split('.').pop();
27
+ if (catalog.datasets[stripped]) {
28
+ datasetId = stripped;
29
+ }
30
+ }
31
+ const dataset = catalog.datasets[datasetId];
18
32
  if (!dataset) {
19
33
  throw new InferError('PLAN_OUT_OF_SCOPE', 'validator', `Unknown dataset: ${plan.dataset}`);
20
34
  }
@@ -27,9 +41,10 @@ export function validateQueryPlan(rawPlan, catalog, options) {
27
41
  if (!dataset.selectableColumns.includes(col)) {
28
42
  throw new InferError('PLAN_INVALID', 'validator', `Column not selectable: ${col}`);
29
43
  }
30
- // Check sensitive columns
44
+ // Check sensitive columns — skip and warn instead of throwing
31
45
  if (dataset.sensitiveColumns.includes(col)) {
32
- throw new InferError('PLAN_SENSITIVE_COLUMN', 'validator', `Access to sensitive column denied`);
46
+ warnings.push(`Sensitive column "${col}" was removed from select`);
47
+ continue;
33
48
  }
34
49
  select.push(col);
35
50
  }
@@ -47,20 +62,74 @@ export function validateQueryPlan(rawPlan, catalog, options) {
47
62
  metrics.push(metricDef);
48
63
  }
49
64
  }
50
- // 6. Validate groupBy columns
65
+ // 6. Validate groupBy columns (including cross-table via joins)
51
66
  const allowedGroupBy = allowlistedGroupByColumns(dataset);
52
67
  const groupBy = [];
68
+ const resolvedJoins = [];
53
69
  if (plan.groupBy && plan.groupBy.length > 0) {
54
70
  for (const col of plan.groupBy) {
71
+ // Check for dot-notation cross-table reference: "table.column"
72
+ if (col.includes('.')) {
73
+ const [joinTable, joinCol] = col.split('.', 2);
74
+ const resolved = resolveJoinGroupBy(dataset, joinTable, joinCol, catalog);
75
+ if (resolved) {
76
+ // Add to resolved joins (dedup by table)
77
+ if (!resolvedJoins.some(j => j.targetTable.name === resolved.targetTable.name)) {
78
+ resolvedJoins.push(resolved);
79
+ }
80
+ groupBy.push(col); // Keep dot-notation — SQL builder will handle it
81
+ continue;
82
+ }
83
+ throw new InferError('PLAN_INVALID', 'validator', `Column not groupable: ${col} — no matching join found`);
84
+ }
55
85
  if (!allowedGroupBy.has(col)) {
86
+ // Auto-resolve: check if column exists on any joined table
87
+ if (dataset.joins) {
88
+ let autoResolved = false;
89
+ for (const joinDef of dataset.joins) {
90
+ const joinTableParts = joinDef.table.split('.');
91
+ const bareJoinTable = joinTableParts[joinTableParts.length - 1];
92
+ const targetDataset = Object.values(catalog.datasets).find(ds => ds.table.name === bareJoinTable || ds.id === bareJoinTable);
93
+ if (targetDataset) {
94
+ const dim = targetDataset.dimensions.find(d => d.column === col && d.groupable);
95
+ if (dim) {
96
+ const resolved = resolveJoinGroupBy(dataset, bareJoinTable, col, catalog);
97
+ if (resolved) {
98
+ if (!resolvedJoins.some(j => j.targetTable.name === resolved.targetTable.name)) {
99
+ resolvedJoins.push(resolved);
100
+ }
101
+ groupBy.push(`${bareJoinTable}.${col}`);
102
+ autoResolved = true;
103
+ warnings.push(`Column "${col}" auto-resolved to "${bareJoinTable}.${col}" via join`);
104
+ break;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ if (autoResolved)
110
+ continue;
111
+ }
56
112
  throw new InferError('PLAN_INVALID', 'validator', `Column not groupable: ${col}`);
57
113
  }
58
114
  if (dataset.sensitiveColumns.includes(col)) {
59
- throw new InferError('PLAN_SENSITIVE_COLUMN', 'validator', `Access to sensitive column denied`);
115
+ warnings.push(`Sensitive column "${col}" was removed from groupBy`);
116
+ continue;
60
117
  }
61
118
  groupBy.push(col);
62
119
  }
63
120
  }
121
+ // 6b. Resolve timeBucket — auto-detect if grouping by a date/timestamp column
122
+ let timeBucket = plan.timeBucket;
123
+ if (!timeBucket && groupBy.length > 0) {
124
+ for (const col of groupBy) {
125
+ const colType = dataset.columnTypes[col];
126
+ if (colType === 'date' || colType === 'timestamp') {
127
+ // Auto-detect bucket from date range or default to 'month'
128
+ timeBucket = 'month';
129
+ break;
130
+ }
131
+ }
132
+ }
64
133
  // 7. Validate filters
65
134
  const filters = [];
66
135
  let paramIndex = 1;
@@ -72,6 +141,13 @@ export function validateQueryPlan(rawPlan, catalog, options) {
72
141
  if (dataset.sensitiveColumns.includes(filter.field)) {
73
142
  throw new InferError('PLAN_SENSITIVE_COLUMN', 'validator', `Access to sensitive column denied`);
74
143
  }
144
+ // Reject SQL injection via subquery strings in filter values
145
+ validateFilterValue(filter.value, filter.op);
146
+ // Type check filter value against column type
147
+ const colType = dataset.columnTypes[filter.field];
148
+ if (colType && filter.op !== 'is_null' && filter.op !== 'is_not_null') {
149
+ validateFilterValueType(filter.value, colType, filter.field, warnings);
150
+ }
75
151
  filters.push({
76
152
  field: filter.field,
77
153
  op: filter.op,
@@ -80,6 +156,19 @@ export function validateQueryPlan(rawPlan, catalog, options) {
80
156
  });
81
157
  }
82
158
  }
159
+ // 7b. Validate having filters (post-aggregation)
160
+ const having = [];
161
+ if (plan.having && plan.having.length > 0) {
162
+ for (const filter of plan.having) {
163
+ const validField = metrics.some(m => m.id === filter.field) || groupBy.includes(filter.field);
164
+ if (!validField) {
165
+ warnings.push(`HAVING field "${filter.field}" is not a valid metric/group column and was dropped`);
166
+ continue;
167
+ }
168
+ validateFilterValue(filter.value, filter.op);
169
+ having.push({ field: filter.field, op: filter.op, value: filter.value, paramIndex: paramIndex++ });
170
+ }
171
+ }
83
172
  // 8. Resolve date range
84
173
  let dateRange;
85
174
  let timeMode = dataset.timeConfig.defaultMode;
@@ -111,12 +200,25 @@ export function validateQueryPlan(rawPlan, catalog, options) {
111
200
  groupBy.includes(ob.field) ||
112
201
  metrics.some(m => m.id === ob.field);
113
202
  if (!validField) {
114
- // Silently skip invalid orderBy rather than throwing
203
+ warnings.push(`orderBy field "${ob.field}" is not a valid column/metric and was dropped`);
115
204
  continue;
116
205
  }
117
206
  orderBy.push({ field: ob.field, dir: ob.dir === 'desc' ? 'desc' : 'asc' });
118
207
  }
119
208
  }
209
+ // 9b. Auto-sort time-bucketed queries chronologically
210
+ if (timeBucket && orderBy.length === 0 && groupBy.length > 0) {
211
+ for (const col of groupBy) {
212
+ const baseCol = col.includes('.') ? col.split('.', 2)[1] : col;
213
+ const colType = dataset.columnTypes[baseCol];
214
+ if (colType === 'date' || colType === 'timestamp') {
215
+ orderBy.push({ field: baseCol, dir: 'asc' });
216
+ break;
217
+ }
218
+ }
219
+ }
220
+ // Resolve extractBucket
221
+ const extractBucket = plan.extractBucket;
120
222
  // 10. Cap limit
121
223
  const limit = Math.min(plan.limit ?? defaultLimit, maxLimit);
122
224
  return {
@@ -125,7 +227,11 @@ export function validateQueryPlan(rawPlan, catalog, options) {
125
227
  select,
126
228
  metrics,
127
229
  groupBy,
230
+ timeBucket,
231
+ extractBucket,
232
+ joins: resolvedJoins.length > 0 ? resolvedJoins : undefined,
128
233
  filters,
234
+ having,
129
235
  resolvedEntities: [], // populated later by entity resolver
130
236
  dateRange,
131
237
  timeMode,
@@ -133,4 +239,94 @@ export function validateQueryPlan(rawPlan, catalog, options) {
133
239
  limit,
134
240
  };
135
241
  }
242
+ // ── Filter value safety ──
243
+ const SQL_INJECTION_PATTERN = /\b(SELECT|INSERT|UPDATE|DELETE|DROP|ALTER|CREATE|UNION|FROM\s+\w+|WHERE\s+\w+|JOIN\s+\w+|HAVING|EXEC|EXECUTE)\b/i;
244
+ function validateFilterValue(value, op) {
245
+ // For in/not_in operators, value must be an array of primitives
246
+ if (op === 'in' || op === 'not_in') {
247
+ if (!Array.isArray(value)) {
248
+ throw new InferError('PLAN_INVALID', 'validator', `Filter operator "${op}" requires an array value, got ${typeof value}`);
249
+ }
250
+ for (const item of value) {
251
+ if (typeof item === 'string') {
252
+ assertNotSQLString(item);
253
+ }
254
+ }
255
+ return;
256
+ }
257
+ // Scalar value checks
258
+ if (typeof value === 'string') {
259
+ assertNotSQLString(value);
260
+ }
261
+ }
262
+ function assertNotSQLString(value) {
263
+ if (SQL_INJECTION_PATTERN.test(value)) {
264
+ throw new InferError('PLAN_INVALID', 'validator', 'Filter value contains SQL keywords — subqueries are not allowed in filter values');
265
+ }
266
+ }
267
+ // ── Filter value type checking ──
268
+ function validateFilterValueType(value, colType, field, warnings) {
269
+ const checkSingle = (v) => {
270
+ if (colType === 'numeric' && typeof v === 'string' && isNaN(Number(v))) {
271
+ warnings.push(`Filter on numeric column "${field}" has non-numeric value: "${v}"`);
272
+ }
273
+ if (colType === 'boolean' && typeof v !== 'boolean') {
274
+ warnings.push(`Filter on boolean column "${field}" has non-boolean value: "${v}"`);
275
+ }
276
+ if ((colType === 'date' || colType === 'timestamp') && typeof v === 'string') {
277
+ if (isNaN(Date.parse(v))) {
278
+ warnings.push(`Filter on ${colType} column "${field}" has invalid date value: "${v}"`);
279
+ }
280
+ }
281
+ };
282
+ if (Array.isArray(value)) {
283
+ for (const item of value)
284
+ checkSingle(item);
285
+ }
286
+ else {
287
+ checkSingle(value);
288
+ }
289
+ }
290
+ // ── Cross-table join resolution ──
291
+ function resolveJoinGroupBy(dataset, joinTableName, joinColumn, catalog) {
292
+ if (!dataset.joins)
293
+ return null;
294
+ // Find a join definition that matches the target table
295
+ for (const joinDef of dataset.joins) {
296
+ // Match by table name (could be "products" matching join.table "products" or "public.products")
297
+ const joinTableParts = joinDef.table.split('.');
298
+ const bareJoinTable = joinTableParts[joinTableParts.length - 1];
299
+ if (bareJoinTable === joinTableName || joinDef.table === joinTableName) {
300
+ // Find the target dataset in the catalog to verify the column exists and is groupable
301
+ const targetDataset = Object.values(catalog.datasets).find(ds => ds.table.name === bareJoinTable || ds.id === joinTableName);
302
+ if (targetDataset) {
303
+ // Verify the column exists on the target table
304
+ if (!targetDataset.selectableColumns.includes(joinColumn)) {
305
+ throw new InferError('PLAN_INVALID', 'validator', `Column "${joinColumn}" does not exist on joined table "${joinTableName}"`);
306
+ }
307
+ // Verify it's groupable
308
+ const isGroupable = targetDataset.dimensions.some(d => d.column === joinColumn && d.groupable);
309
+ if (!isGroupable) {
310
+ throw new InferError('PLAN_INVALID', 'validator', `Column "${joinTableName}.${joinColumn}" is not groupable`);
311
+ }
312
+ return {
313
+ targetTable: targetDataset.table,
314
+ localColumn: joinDef.localColumn,
315
+ foreignColumn: joinDef.foreignColumn,
316
+ columns: [joinColumn],
317
+ type: joinDef.type,
318
+ };
319
+ }
320
+ // If target dataset isn't in catalog, still allow if join is defined
321
+ return {
322
+ targetTable: { schema: 'public', name: bareJoinTable },
323
+ localColumn: joinDef.localColumn,
324
+ foreignColumn: joinDef.foreignColumn,
325
+ columns: [joinColumn],
326
+ type: joinDef.type,
327
+ };
328
+ }
329
+ }
330
+ return null;
331
+ }
136
332
  //# sourceMappingURL=query-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query-validator.js","sourceRoot":"","sources":["../src/query-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-validator.js","sourceRoot":"","sources":["../src/query-validator.ts"],"names":[],"mappings":"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"}
package/dist/schemas.d.ts CHANGED
@@ -1,16 +1,16 @@
1
1
  import { z } from "zod";
2
2
  export declare const FilterSchema: z.ZodObject<{
3
3
  field: z.ZodString;
4
- op: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "in", "not_in", "like", "ilike"]>;
4
+ op: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "in", "not_in", "like", "ilike", "is_null", "is_not_null"]>;
5
5
  value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">]>;
6
6
  }, "strip", z.ZodTypeAny, {
7
7
  value: string | number | boolean | (string | number)[];
8
8
  field: string;
9
- op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike";
9
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
10
10
  }, {
11
11
  value: string | number | boolean | (string | number)[];
12
12
  field: string;
13
- op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike";
13
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
14
14
  }>;
15
15
  export declare const EntityFilterSchema: z.ZodObject<{
16
16
  resolver: z.ZodString;
@@ -56,19 +56,38 @@ export declare const SmartQueryPlanSchema: z.ZodObject<{
56
56
  select: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
57
57
  metrics: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
58
58
  groupBy: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
59
+ timeBucket: z.ZodEffects<z.ZodOptional<z.ZodEnum<["hour", "day", "week", "month", "quarter", "year"]>>, "month" | "day" | "week" | "quarter" | "year" | "hour" | undefined, unknown>;
60
+ extractBucket: z.ZodEffects<z.ZodOptional<z.ZodEnum<["hour_of_day", "day_of_week", "month_of_year", "quarter", "year", "week"]>>, "week" | "quarter" | "year" | "hour_of_day" | "day_of_week" | "month_of_year" | undefined, unknown>;
59
61
  filters: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
60
62
  field: z.ZodString;
61
- op: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "in", "not_in", "like", "ilike"]>;
63
+ op: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "in", "not_in", "like", "ilike", "is_null", "is_not_null"]>;
62
64
  value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">]>;
63
65
  }, "strip", z.ZodTypeAny, {
64
66
  value: string | number | boolean | (string | number)[];
65
67
  field: string;
66
- op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike";
68
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
67
69
  }, {
68
70
  value: string | number | boolean | (string | number)[];
69
71
  field: string;
70
- op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike";
72
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
71
73
  }>, "many">>>;
74
+ having: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
75
+ field: z.ZodString;
76
+ op: z.ZodEnum<["=", "!=", ">", "<", ">=", "<=", "in", "not_in", "like", "ilike", "is_null", "is_not_null"]>;
77
+ value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">]>;
78
+ }, "strip", z.ZodTypeAny, {
79
+ value: string | number | boolean | (string | number)[];
80
+ field: string;
81
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
82
+ }, {
83
+ value: string | number | boolean | (string | number)[];
84
+ field: string;
85
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
86
+ }>, "many">>>, {
87
+ value: string | number | boolean | (string | number)[];
88
+ field: string;
89
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
90
+ }[], unknown>;
72
91
  entityFilters: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
73
92
  resolver: z.ZodString;
74
93
  input: z.ZodString;
@@ -82,7 +101,7 @@ export declare const SmartQueryPlanSchema: z.ZodObject<{
82
101
  resolver: string;
83
102
  outputColumn: string;
84
103
  }>, "many">>>;
85
- dateRange: z.ZodOptional<z.ZodObject<{
104
+ dateRange: z.ZodEffects<z.ZodOptional<z.ZodObject<{
86
105
  mode: z.ZodEnum<["relative", "explicit", "latest", "none"]>;
87
106
  phrase: z.ZodOptional<z.ZodString>;
88
107
  startDate: z.ZodOptional<z.ZodString>;
@@ -97,7 +116,12 @@ export declare const SmartQueryPlanSchema: z.ZodObject<{
97
116
  startDate?: string | undefined;
98
117
  endDate?: string | undefined;
99
118
  phrase?: string | undefined;
100
- }>>;
119
+ }>>, {
120
+ mode: "relative" | "latest" | "none" | "explicit";
121
+ startDate?: string | undefined;
122
+ endDate?: string | undefined;
123
+ phrase?: string | undefined;
124
+ } | undefined, unknown>;
101
125
  orderBy: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
102
126
  field: z.ZodString;
103
127
  dir: z.ZodDefault<z.ZodEnum<["asc", "desc"]>>;
@@ -108,17 +132,22 @@ export declare const SmartQueryPlanSchema: z.ZodObject<{
108
132
  field: string;
109
133
  dir?: "desc" | "asc" | undefined;
110
134
  }>, "many">>>;
111
- limit: z.ZodOptional<z.ZodNumber>;
112
- answerMode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["rows", "aggregate_table", "scalar"]>>>;
135
+ limit: z.ZodEffects<z.ZodOptional<z.ZodNumber>, number | undefined, unknown>;
136
+ answerMode: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodEnum<["rows", "aggregate_table", "scalar"]>>>, "aggregate_table" | "rows" | "scalar", unknown>;
113
137
  }, "strip", z.ZodTypeAny, {
114
138
  select: string[];
139
+ having: {
140
+ value: string | number | boolean | (string | number)[];
141
+ field: string;
142
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
143
+ }[];
115
144
  dataset: string;
116
145
  metrics: string[];
117
146
  groupBy: string[];
118
147
  filters: {
119
148
  value: string | number | boolean | (string | number)[];
120
149
  field: string;
121
- op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike";
150
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
122
151
  }[];
123
152
  entityFilters: {
124
153
  input: string;
@@ -130,6 +159,8 @@ export declare const SmartQueryPlanSchema: z.ZodObject<{
130
159
  dir: "desc" | "asc";
131
160
  }[];
132
161
  answerMode: "aggregate_table" | "rows" | "scalar";
162
+ timeBucket?: "month" | "day" | "week" | "quarter" | "year" | "hour" | undefined;
163
+ extractBucket?: "week" | "quarter" | "year" | "hour_of_day" | "day_of_week" | "month_of_year" | undefined;
133
164
  dateRange?: {
134
165
  mode: "relative" | "latest" | "none" | "explicit";
135
166
  startDate?: string | undefined;
@@ -140,30 +171,28 @@ export declare const SmartQueryPlanSchema: z.ZodObject<{
140
171
  }, {
141
172
  dataset: string;
142
173
  select?: string[] | undefined;
174
+ having?: unknown;
143
175
  metrics?: string[] | undefined;
144
176
  groupBy?: string[] | undefined;
177
+ timeBucket?: unknown;
178
+ extractBucket?: unknown;
145
179
  filters?: {
146
180
  value: string | number | boolean | (string | number)[];
147
181
  field: string;
148
- op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike";
182
+ op: "=" | ">" | "!=" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike" | "is_null" | "is_not_null";
149
183
  }[] | undefined;
150
184
  entityFilters?: {
151
185
  input: string;
152
186
  resolver: string;
153
187
  outputColumn: string;
154
188
  }[] | undefined;
155
- dateRange?: {
156
- mode: "relative" | "latest" | "none" | "explicit";
157
- startDate?: string | undefined;
158
- endDate?: string | undefined;
159
- phrase?: string | undefined;
160
- } | undefined;
189
+ dateRange?: unknown;
161
190
  orderBy?: {
162
191
  field: string;
163
192
  dir?: "desc" | "asc" | undefined;
164
193
  }[] | undefined;
165
- limit?: number | undefined;
166
- answerMode?: "aggregate_table" | "rows" | "scalar" | undefined;
194
+ limit?: unknown;
195
+ answerMode?: unknown;
167
196
  }>;
168
197
  export type SmartQueryPlanInput = z.input<typeof SmartQueryPlanSchema>;
169
198
  export type SmartQueryPlanOutput = z.output<typeof SmartQueryPlanSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;EASvB,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;EAK1B,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAIH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW/B,CAAC;AAIH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;EASvB,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAIH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;EAK1B,CAAC;AAIH,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAIH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC/B,CAAC;AAIH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
package/dist/schemas.js CHANGED
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  // ── Filter schema ──
3
3
  export const FilterSchema = z.object({
4
4
  field: z.string(),
5
- op: z.enum(["=", "!=", ">", "<", ">=", "<=", "in", "not_in", "like", "ilike"]),
5
+ op: z.enum(["=", "!=", ">", "<", ">=", "<=", "in", "not_in", "like", "ilike", "is_null", "is_not_null"]),
6
6
  value: z.union([
7
7
  z.string(),
8
8
  z.number(),
@@ -34,11 +34,14 @@ export const SmartQueryPlanSchema = z.object({
34
34
  select: z.array(z.string()).optional().default([]),
35
35
  metrics: z.array(z.string()).optional().default([]),
36
36
  groupBy: z.array(z.string()).optional().default([]),
37
+ timeBucket: z.preprocess((v) => (v === null ? undefined : v), z.enum(["hour", "day", "week", "month", "quarter", "year"]).optional()),
38
+ extractBucket: z.preprocess((v) => (v === null ? undefined : v), z.enum(["hour_of_day", "day_of_week", "month_of_year", "quarter", "year", "week"]).optional()),
37
39
  filters: z.array(FilterSchema).optional().default([]),
40
+ having: z.preprocess((v) => (v === null ? [] : v), z.array(FilterSchema).optional().default([])),
38
41
  entityFilters: z.array(EntityFilterSchema).optional().default([]),
39
- dateRange: DateRangeSchema.optional(),
42
+ dateRange: z.preprocess((v) => (v === null ? undefined : v), DateRangeSchema.optional()),
40
43
  orderBy: z.array(OrderBySchema).optional().default([]),
41
- limit: z.number().int().positive().max(200).optional(),
42
- answerMode: z.enum(["rows", "aggregate_table", "scalar"]).optional().default("rows"),
44
+ limit: z.preprocess((v) => (v === null ? undefined : v), z.number().int().positive().max(200).optional()),
45
+ answerMode: z.preprocess((v) => (v === null ? undefined : v), z.enum(["rows", "aggregate_table", "scalar"]).optional().default("rows")),
43
46
  });
44
47
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,sBAAsB;AAEtB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACxG,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC;QACb,CAAC,CAAC,MAAM,EAAE;QACV,CAAC,CAAC,MAAM,EAAE;QACV,CAAC,CAAC,OAAO,EAAE;QACX,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;KAC3C,CAAC;CACH,CAAC,CAAC;AAEH,6BAA6B;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;CACzB,CAAC,CAAC;AAEH,0BAA0B;AAE1B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,wBAAwB;AAExB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;CAC5C,CAAC,CAAC;AAEH,gCAAgC;AAEhC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,UAAU,EAAE,CAAC,CAAC,UAAU,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACnC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CACvE;IACD,aAAa,EAAE,CAAC,CAAC,UAAU,CACzB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACnC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAC9F;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,MAAM,EAAE,CAAC,CAAC,UAAU,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5B,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAC7C;IACD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjE,SAAS,EAAE,CAAC,CAAC,UAAU,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACnC,eAAe,CAAC,QAAQ,EAAE,CAC3B;IACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,KAAK,EAAE,CAAC,CAAC,UAAU,CACjB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACnC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAChD;IACD,UAAU,EAAE,CAAC,CAAC,UAAU,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EACnC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CACzE;CACF,CAAC,CAAC"}
@@ -5,5 +5,6 @@ export type ClassificationResult = {
5
5
  reason?: string;
6
6
  };
7
7
  export declare function classifyInjection(input: string): ClassificationResult;
8
- export declare function sanitizeResult(rows: Record<string, unknown>[], sensitiveColumns: readonly string[]): Record<string, unknown>[];
8
+ export type SensitiveColumnMode = 'remove' | 'mask' | 'hash';
9
+ export declare function sanitizeResult(rows: Record<string, unknown>[], sensitiveColumns: readonly string[], mode?: SensitiveColumnMode): Record<string, unknown>[];
9
10
  //# sourceMappingURL=security.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAaA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAkBjD;AAGD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAuCF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAkBrE;AAGD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAY3B"}
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAaA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAkBjD;AAGD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAuCF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAkBrE;AAGD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,IAAI,GAAE,mBAA8B,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAiB3B"}
package/dist/security.js CHANGED
@@ -79,8 +79,7 @@ export function classifyInjection(input) {
79
79
  }
80
80
  return { safe: true, confidence: 0.95 };
81
81
  }
82
- // ── Result sanitization ──
83
- export function sanitizeResult(rows, sensitiveColumns) {
82
+ export function sanitizeResult(rows, sensitiveColumns, mode = 'remove') {
84
83
  if (sensitiveColumns.length === 0)
85
84
  return rows;
86
85
  const sensitiveSet = new Set(sensitiveColumns);
@@ -90,8 +89,30 @@ export function sanitizeResult(rows, sensitiveColumns) {
90
89
  if (!sensitiveSet.has(key)) {
91
90
  sanitized[key] = value;
92
91
  }
92
+ else if (mode === 'mask') {
93
+ sanitized[key] = maskValue(value);
94
+ }
95
+ else if (mode === 'hash') {
96
+ sanitized[key] = hashValue(value);
97
+ }
98
+ // mode === 'remove': omit entirely (default)
93
99
  }
94
100
  return sanitized;
95
101
  });
96
102
  }
103
+ function maskValue(value) {
104
+ const str = String(value ?? '');
105
+ if (str.length <= 2)
106
+ return '***';
107
+ return str[0] + '*'.repeat(Math.min(str.length - 2, 8)) + str[str.length - 1];
108
+ }
109
+ function hashValue(value) {
110
+ // Simple deterministic hash for redaction — NOT cryptographic
111
+ const str = String(value ?? '');
112
+ let hash = 0;
113
+ for (let i = 0; i < str.length; i++) {
114
+ hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;
115
+ }
116
+ return `[redacted:${(hash >>> 0).toString(16).padStart(8, '0')}]`;
117
+ }
97
118
  //# sourceMappingURL=security.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { ValidatedSmartPlan, ExecutionContext, CompiledSQL } from './types.js';
2
2
  declare function quoteIdentifier(id: string): string;
3
3
  export { quoteIdentifier };
4
- export declare function compileSQL(plan: ValidatedSmartPlan, ctx: ExecutionContext): CompiledSQL;
4
+ export declare function compileSQL(plan: ValidatedSmartPlan, ctx: ExecutionContext, catalog?: import('./types.js').InferCatalog): CompiledSQL;
5
5
  //# sourceMappingURL=sql-builder.d.ts.map