@reasoningco/infer 0.0.2

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/dist/catalog.d.ts +39 -0
  4. package/dist/catalog.d.ts.map +1 -0
  5. package/dist/catalog.js +249 -0
  6. package/dist/catalog.js.map +1 -0
  7. package/dist/connectors.d.ts +63 -0
  8. package/dist/connectors.d.ts.map +1 -0
  9. package/dist/connectors.js +263 -0
  10. package/dist/connectors.js.map +1 -0
  11. package/dist/dates.d.ts +35 -0
  12. package/dist/dates.d.ts.map +1 -0
  13. package/dist/dates.js +293 -0
  14. package/dist/dates.js.map +1 -0
  15. package/dist/entity-resolver.d.ts +29 -0
  16. package/dist/entity-resolver.d.ts.map +1 -0
  17. package/dist/entity-resolver.js +91 -0
  18. package/dist/entity-resolver.js.map +1 -0
  19. package/dist/errors.d.ts +10 -0
  20. package/dist/errors.d.ts.map +1 -0
  21. package/dist/errors.js +28 -0
  22. package/dist/errors.js.map +1 -0
  23. package/dist/index.d.ts +43 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +240 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/llm.d.ts +50 -0
  28. package/dist/llm.d.ts.map +1 -0
  29. package/dist/llm.js +311 -0
  30. package/dist/llm.js.map +1 -0
  31. package/dist/query-validator.d.ts +6 -0
  32. package/dist/query-validator.d.ts.map +1 -0
  33. package/dist/query-validator.js +136 -0
  34. package/dist/query-validator.js.map +1 -0
  35. package/dist/schemas.d.ts +170 -0
  36. package/dist/schemas.d.ts.map +1 -0
  37. package/dist/schemas.js +44 -0
  38. package/dist/schemas.js.map +1 -0
  39. package/dist/security.d.ts +9 -0
  40. package/dist/security.d.ts.map +1 -0
  41. package/dist/security.js +97 -0
  42. package/dist/security.js.map +1 -0
  43. package/dist/sql-builder.d.ts +5 -0
  44. package/dist/sql-builder.d.ts.map +1 -0
  45. package/dist/sql-builder.js +121 -0
  46. package/dist/sql-builder.js.map +1 -0
  47. package/dist/sql-validator.d.ts +8 -0
  48. package/dist/sql-validator.d.ts.map +1 -0
  49. package/dist/sql-validator.js +160 -0
  50. package/dist/sql-validator.js.map +1 -0
  51. package/dist/testing.d.ts +22 -0
  52. package/dist/testing.d.ts.map +1 -0
  53. package/dist/testing.js +78 -0
  54. package/dist/testing.js.map +1 -0
  55. package/dist/types.d.ts +214 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +27 -0
  58. package/dist/types.js.map +1 -0
  59. package/package.json +72 -0
@@ -0,0 +1,214 @@
1
+ import type { InferError } from "./errors.js";
2
+ export type ColumnType = "text" | "numeric" | "date" | "timestamp" | "boolean" | "json";
3
+ export type TimeMode = "required" | "optional" | "latest" | "none" | "relative" | "absolute";
4
+ export type TimeConfig = {
5
+ defaultMode: TimeMode;
6
+ allowedModes: readonly TimeMode[];
7
+ };
8
+ export type EntityDef = {
9
+ key: string;
10
+ column: string;
11
+ label: string;
12
+ resolver?: string;
13
+ };
14
+ export type DimensionDef = {
15
+ column: string;
16
+ label: string;
17
+ groupable: boolean;
18
+ };
19
+ export type MetricAgg = "sum" | "avg" | "min" | "max" | "count";
20
+ export type MetricDef = {
21
+ id: string;
22
+ label: string;
23
+ expression: string;
24
+ sourceColumns: readonly string[];
25
+ agg: MetricAgg;
26
+ timeConfig?: TimeConfig;
27
+ description: string;
28
+ };
29
+ export type JoinDef = {
30
+ table: string;
31
+ localColumn: string;
32
+ foreignColumn: string;
33
+ type: "one_to_one" | "one_to_many" | "many_to_one" | "many_to_many";
34
+ };
35
+ export type DatasetEntry = {
36
+ id: string;
37
+ table: {
38
+ schema: string;
39
+ name: string;
40
+ };
41
+ dateColumn: string;
42
+ estimatedRows?: number;
43
+ selectableColumns: readonly string[];
44
+ filterableColumns: readonly string[];
45
+ sensitiveColumns: readonly string[];
46
+ columnTypes: Record<string, ColumnType>;
47
+ entities: readonly EntityDef[];
48
+ dimensions: readonly DimensionDef[];
49
+ metrics: readonly MetricDef[];
50
+ timeConfig: TimeConfig;
51
+ joins?: readonly JoinDef[];
52
+ description?: string;
53
+ };
54
+ export type InferCatalog = {
55
+ datasets: Record<string, DatasetEntry>;
56
+ };
57
+ export declare function datasetHasColumn(entry: DatasetEntry, col: string): boolean;
58
+ export declare function getMetricDef(entry: DatasetEntry, metricId: string): MetricDef | undefined;
59
+ export declare function getDimensionDef(entry: DatasetEntry, column: string): DimensionDef | undefined;
60
+ export declare function allowlistedMetricIds(entry: DatasetEntry): Set<string>;
61
+ export declare function allowlistedGroupByColumns(entry: DatasetEntry): Set<string>;
62
+ export declare function effectiveTimeConfig(entry: DatasetEntry, metricId?: string): TimeConfig;
63
+ export type ColumnMeta = {
64
+ name: string;
65
+ type: ColumnType;
66
+ description?: string;
67
+ };
68
+ export type InferResult = {
69
+ rows: Record<string, unknown>[];
70
+ columns: ColumnMeta[];
71
+ sql?: string;
72
+ plan?: SmartQueryPlan;
73
+ warnings: string[];
74
+ executionTime: number;
75
+ };
76
+ export type SmartQueryPlan = {
77
+ dataset: string;
78
+ select?: string[];
79
+ metrics?: string[];
80
+ groupBy?: string[];
81
+ filters?: SmartFilter[];
82
+ entityFilters?: SmartEntityFilter[];
83
+ dateRange?: DateRange;
84
+ orderBy?: OrderByClause[];
85
+ limit?: number;
86
+ answerMode?: AnswerMode;
87
+ };
88
+ export type AnswerMode = "rows" | "aggregate_table" | "scalar";
89
+ export type SmartFilter = {
90
+ field: string;
91
+ op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not_in" | "like" | "ilike";
92
+ value: string | number | boolean | (string | number)[];
93
+ };
94
+ export type SmartEntityFilter = {
95
+ resolver: string;
96
+ input: string;
97
+ outputColumn: string;
98
+ };
99
+ export type DateRange = {
100
+ mode: "relative" | "explicit" | "latest" | "none";
101
+ phrase?: string;
102
+ startDate?: string;
103
+ endDate?: string;
104
+ };
105
+ export type OrderByClause = {
106
+ field: string;
107
+ dir: "asc" | "desc";
108
+ };
109
+ export type ExecutionContext = {
110
+ tenantId: string;
111
+ locationIds?: string[];
112
+ };
113
+ export type ValidatedSmartPlan = {
114
+ dataset: DatasetEntry;
115
+ answerMode: AnswerMode;
116
+ select: string[];
117
+ metrics: MetricDef[];
118
+ groupBy: string[];
119
+ filters: {
120
+ field: string;
121
+ op: string;
122
+ value: unknown;
123
+ paramIndex: number;
124
+ }[];
125
+ resolvedEntities: ResolvedEntity[];
126
+ dateRange?: {
127
+ startDate: string;
128
+ endDate: string;
129
+ };
130
+ timeMode: TimeMode;
131
+ orderBy: OrderByClause[];
132
+ limit: number;
133
+ };
134
+ export type ResolvedEntity = {
135
+ resolver: string;
136
+ input: string;
137
+ outputColumn: string;
138
+ resolvedIds: string[];
139
+ confidence: "exact" | "contains" | "none";
140
+ };
141
+ export type CompiledSQL = {
142
+ sql: string;
143
+ params: unknown[];
144
+ };
145
+ export type LLMMessage = {
146
+ role: "system" | "user" | "assistant";
147
+ content: string;
148
+ };
149
+ export type LLMOptions = {
150
+ temperature?: number;
151
+ maxTokens?: number;
152
+ timeout?: number;
153
+ };
154
+ export type IntrospectedColumn = {
155
+ name: string;
156
+ dataType: string;
157
+ typeCategory: string;
158
+ notNull: boolean;
159
+ defaultValue: string | null;
160
+ comment: string | null;
161
+ };
162
+ export type IntrospectedTable = {
163
+ schema: string;
164
+ name: string;
165
+ columns: IntrospectedColumn[];
166
+ estimatedRows: number;
167
+ primaryKey?: string[];
168
+ foreignKeys: {
169
+ column: string;
170
+ foreignTable: string;
171
+ foreignColumn: string;
172
+ }[];
173
+ indexes: string[];
174
+ };
175
+ export type IntrospectedSchema = {
176
+ tables: IntrospectedTable[];
177
+ enums: Record<string, string[]>;
178
+ };
179
+ export type InferConfig = {
180
+ connector: InferConnector;
181
+ llm: LLMProviderConfig;
182
+ catalog?: string | InferCatalog;
183
+ tenantId?: string;
184
+ maxRows?: number;
185
+ statementTimeout?: string;
186
+ includeSQL?: boolean;
187
+ debug?: boolean;
188
+ retries?: {
189
+ max: number;
190
+ backoff: "exponential" | "linear";
191
+ };
192
+ onPlan?: (plan: SmartQueryPlan) => void;
193
+ onSQL?: (sql: string, params: unknown[]) => void;
194
+ onValidation?: (warnings: string[]) => void;
195
+ onResult?: (result: InferResult) => void;
196
+ onError?: (error: InferError) => void;
197
+ };
198
+ export type LLMProviderConfig = {
199
+ provider: "openrouter" | "openai" | "anthropic" | "ollama" | "custom";
200
+ apiKey?: string;
201
+ model?: string;
202
+ baseUrl?: string;
203
+ endpoint?: string;
204
+ };
205
+ export interface InferConnector {
206
+ execute(sql: string, params: unknown[]): Promise<{
207
+ rows: Record<string, unknown>[];
208
+ columns: ColumnMeta[];
209
+ }>;
210
+ introspect(): Promise<IntrospectedSchema>;
211
+ close(): Promise<void>;
212
+ }
213
+ export type { InferError } from "./errors.js";
214
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,27 @@
1
+ // ── Helper functions ──
2
+ export function datasetHasColumn(entry, col) {
3
+ return (entry.selectableColumns.includes(col) ||
4
+ entry.filterableColumns.includes(col) ||
5
+ entry.sensitiveColumns.includes(col));
6
+ }
7
+ export function getMetricDef(entry, metricId) {
8
+ return entry.metrics.find((m) => m.id === metricId);
9
+ }
10
+ export function getDimensionDef(entry, column) {
11
+ return entry.dimensions.find((d) => d.column === column);
12
+ }
13
+ export function allowlistedMetricIds(entry) {
14
+ return new Set(entry.metrics.map((m) => m.id));
15
+ }
16
+ export function allowlistedGroupByColumns(entry) {
17
+ return new Set(entry.dimensions.filter((d) => d.groupable).map((d) => d.column));
18
+ }
19
+ export function effectiveTimeConfig(entry, metricId) {
20
+ if (metricId) {
21
+ const metric = getMetricDef(entry, metricId);
22
+ if (metric?.timeConfig)
23
+ return metric.timeConfig;
24
+ }
25
+ return entry.timeConfig;
26
+ }
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAqEA,yBAAyB;AAEzB,MAAM,UAAU,gBAAgB,CAAC,KAAmB,EAAE,GAAW;IAC/D,OAAO,CACL,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CACrC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAmB,EAAE,QAAgB;IAChE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAmB,EAAE,MAAc;IACjE,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAmB;IAC3D,OAAO,IAAI,GAAG,CACZ,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB,EAAE,QAAiB;IACxE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE,UAAU;YAAE,OAAO,MAAM,CAAC,UAAU,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC,UAAU,CAAC;AAC1B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "@reasoningco/infer",
3
+ "version": "0.0.2",
4
+ "description": "TypeScript SDK for natural language to SQL — secure, auto-introspecting, production-ready",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./schema": {
14
+ "types": "./dist/schemas.d.ts",
15
+ "import": "./dist/schemas.js"
16
+ },
17
+ "./security": {
18
+ "types": "./dist/security.d.ts",
19
+ "import": "./dist/security.js"
20
+ },
21
+ "./testing": {
22
+ "types": "./dist/testing.d.ts",
23
+ "import": "./dist/testing.js"
24
+ }
25
+ },
26
+ "files": [
27
+ "dist/",
28
+ "LICENSE",
29
+ "README.md"
30
+ ],
31
+ "sideEffects": false,
32
+ "scripts": {
33
+ "build": "tsc",
34
+ "lint": "tsc --noEmit",
35
+ "test": "vitest run",
36
+ "typecheck": "tsc --noEmit",
37
+ "prepublishOnly": "pnpm build && pnpm test"
38
+ },
39
+ "dependencies": {
40
+ "zod": "^3.23.0"
41
+ },
42
+ "devDependencies": {
43
+ "vitest": "^2.0.0",
44
+ "@types/node": "^20.0.0"
45
+ },
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ },
49
+ "author": "The Reasoning Company",
50
+ "license": "MIT",
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "https://github.com/reasoningco/infer.git",
54
+ "directory": "packages/core"
55
+ },
56
+ "homepage": "https://github.com/reasoningco/infer#readme",
57
+ "bugs": {
58
+ "url": "https://github.com/reasoningco/infer/issues"
59
+ },
60
+ "keywords": [
61
+ "sql",
62
+ "natural-language",
63
+ "nlp",
64
+ "database",
65
+ "query",
66
+ "typescript",
67
+ "ai"
68
+ ],
69
+ "publishConfig": {
70
+ "access": "public"
71
+ }
72
+ }