superdb-mcp 0.51231.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.
@@ -0,0 +1,220 @@
1
+ import { readFileSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { spawnSync } from 'child_process';
5
+ import { detectVersion, compareVersionInfo, checkDocsCompatibility, } from '../lib/version.js';
6
+ import { runSuper } from '../lib/super.js';
7
+ // Get docs directory path
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+ const docsDir = join(__dirname, '../../docs');
11
+ /**
12
+ * Get SuperDB version and environment info
13
+ */
14
+ export function superInfo(compareTo) {
15
+ try {
16
+ const runtime = detectVersion();
17
+ const compatibility = checkDocsCompatibility();
18
+ // Check for LSP
19
+ const lspPath = process.env.SUPERDB_LSP_PATH || null;
20
+ let lspAvailable = false;
21
+ if (lspPath) {
22
+ try {
23
+ const result = spawnSync(lspPath, ['--version'], { timeout: 2000, encoding: 'utf-8' });
24
+ lspAvailable = result.status === 0;
25
+ }
26
+ catch {
27
+ lspAvailable = false;
28
+ }
29
+ }
30
+ // Provide setup instructions if LSP is not configured
31
+ const lspSetup = lspAvailable
32
+ ? null
33
+ : {
34
+ recommendation: 'Install SuperDB LSP for enhanced query assistance',
35
+ benefits: [
36
+ 'Better query suggestions via code completions',
37
+ 'Function and keyword documentation lookup',
38
+ 'Enhanced error diagnostics with fix suggestions',
39
+ ],
40
+ releases_url: 'https://github.com/chrismo/superdb-lsp/releases',
41
+ platforms: {
42
+ 'macOS (Apple Silicon)': 'superdb-lsp-darwin-arm64',
43
+ 'macOS (Intel)': 'superdb-lsp-darwin-amd64',
44
+ 'Linux (x64)': 'superdb-lsp-linux-amd64',
45
+ 'Linux (ARM64)': 'superdb-lsp-linux-arm64',
46
+ 'Windows (x64)': 'superdb-lsp-windows-amd64.exe',
47
+ },
48
+ install_steps: [
49
+ 'Download the appropriate binary for your platform from the releases page',
50
+ 'Make it executable: chmod +x superdb-lsp-*',
51
+ 'Move it to a location in your PATH or note its full path',
52
+ 'Set the environment variable: export SUPERDB_LSP_PATH=/path/to/superdb-lsp',
53
+ 'Add the export to your shell profile (~/.bashrc, ~/.zshrc, etc.) for persistence',
54
+ ],
55
+ env_var: 'SUPERDB_LSP_PATH',
56
+ };
57
+ return {
58
+ success: true,
59
+ runtime,
60
+ docs_version: compatibility.docs,
61
+ lsp_available: lspAvailable,
62
+ lsp_path: lspPath,
63
+ lsp_setup: lspSetup,
64
+ compatibility: {
65
+ runtime_docs_match: compatibility.compatible,
66
+ warnings: compatibility.warnings,
67
+ },
68
+ error: null,
69
+ };
70
+ }
71
+ catch (e) {
72
+ return {
73
+ success: false,
74
+ runtime: {
75
+ version: 'unknown',
76
+ raw: '',
77
+ date: null,
78
+ sha: null,
79
+ timestamp: null,
80
+ path: 'super',
81
+ source: 'path',
82
+ },
83
+ docs_version: 'unknown',
84
+ lsp_available: false,
85
+ lsp_path: null,
86
+ lsp_setup: null,
87
+ compatibility: {
88
+ runtime_docs_match: false,
89
+ warnings: ['Failed to detect version info'],
90
+ },
91
+ error: e instanceof Error ? e.message : String(e),
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * Compare two SuperDB versions
97
+ */
98
+ export function superCompare(currentPath, compareToPath) {
99
+ try {
100
+ const comparison = compareVersionInfo(currentPath, compareToPath);
101
+ return {
102
+ success: true,
103
+ comparison,
104
+ error: null,
105
+ };
106
+ }
107
+ catch (e) {
108
+ return {
109
+ success: false,
110
+ comparison: null,
111
+ error: e instanceof Error ? e.message : String(e),
112
+ };
113
+ }
114
+ }
115
+ /**
116
+ * Get help documentation
117
+ */
118
+ export function superHelp(topic) {
119
+ const topics = {
120
+ 'expert': 'superdb-expert.md',
121
+ 'upgrade': 'zq-to-super-upgrades.md',
122
+ 'upgrade-guide': 'zq-to-super-upgrades.md',
123
+ 'migration': 'zq-to-super-upgrades.md',
124
+ };
125
+ const filename = topics[topic.toLowerCase()];
126
+ if (!filename) {
127
+ return {
128
+ success: false,
129
+ topic,
130
+ content: '',
131
+ error: `Unknown topic: ${topic}. Available topics: ${Object.keys(topics).join(', ')}`,
132
+ };
133
+ }
134
+ try {
135
+ const filepath = join(docsDir, filename);
136
+ const content = readFileSync(filepath, 'utf-8');
137
+ return {
138
+ success: true,
139
+ topic,
140
+ content,
141
+ error: null,
142
+ };
143
+ }
144
+ catch (e) {
145
+ return {
146
+ success: false,
147
+ topic,
148
+ content: '',
149
+ error: `Failed to read documentation: ${e instanceof Error ? e.message : String(e)}`,
150
+ };
151
+ }
152
+ }
153
+ /**
154
+ * Test query compatibility across multiple super versions
155
+ */
156
+ export async function superTestCompat(query, versions) {
157
+ if (versions.length === 0) {
158
+ return {
159
+ success: false,
160
+ query,
161
+ results: [],
162
+ breaking_change_detected: false,
163
+ error: 'No versions specified to test',
164
+ };
165
+ }
166
+ const results = [];
167
+ let hasSuccess = false;
168
+ let hasFailure = false;
169
+ for (const versionPath of versions) {
170
+ const versionInfo = detectVersion(versionPath);
171
+ try {
172
+ // Temporarily override SUPER_PATH
173
+ const originalPath = process.env.SUPER_PATH;
174
+ process.env.SUPER_PATH = versionPath;
175
+ const result = await runSuper(['-c', query]);
176
+ // Restore original
177
+ if (originalPath) {
178
+ process.env.SUPER_PATH = originalPath;
179
+ }
180
+ else {
181
+ delete process.env.SUPER_PATH;
182
+ }
183
+ if (result.exitCode === 0) {
184
+ hasSuccess = true;
185
+ results.push({
186
+ path: versionPath,
187
+ version: versionInfo.version,
188
+ success: true,
189
+ output: result.stdout.trim(),
190
+ });
191
+ }
192
+ else {
193
+ hasFailure = true;
194
+ results.push({
195
+ path: versionPath,
196
+ version: versionInfo.version,
197
+ success: false,
198
+ error: result.stderr.trim() || 'Query failed with no error message',
199
+ });
200
+ }
201
+ }
202
+ catch (e) {
203
+ hasFailure = true;
204
+ results.push({
205
+ path: versionPath,
206
+ version: versionInfo.version,
207
+ success: false,
208
+ error: e instanceof Error ? e.message : String(e),
209
+ });
210
+ }
211
+ }
212
+ return {
213
+ success: true,
214
+ query,
215
+ results,
216
+ breaking_change_detected: hasSuccess && hasFailure,
217
+ error: null,
218
+ };
219
+ }
220
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,sBAAsB,GAGvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,0BAA0B;AAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAoD9C;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,SAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC;QAE/C,gBAAgB;QAChB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACrD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBACvF,YAAY,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,MAAM,QAAQ,GAAoB,YAAY;YAC5C,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,cAAc,EAAE,mDAAmD;gBACnE,QAAQ,EAAE;oBACR,+CAA+C;oBAC/C,2CAA2C;oBAC3C,iDAAiD;iBAClD;gBACD,YAAY,EAAE,iDAAiD;gBAC/D,SAAS,EAAE;oBACT,uBAAuB,EAAE,0BAA0B;oBACnD,eAAe,EAAE,0BAA0B;oBAC3C,aAAa,EAAE,yBAAyB;oBACxC,eAAe,EAAE,yBAAyB;oBAC1C,eAAe,EAAE,+BAA+B;iBACjD;gBACD,aAAa,EAAE;oBACb,0EAA0E;oBAC1E,4CAA4C;oBAC5C,0DAA0D;oBAC1D,4EAA4E;oBAC5E,kFAAkF;iBACnF;gBACD,OAAO,EAAE,kBAAkB;aAC5B,CAAC;QAEN,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO;YACP,YAAY,EAAE,aAAa,CAAC,IAAI;YAChC,aAAa,EAAE,YAAY;YAC3B,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,QAAQ;YACnB,aAAa,EAAE;gBACb,kBAAkB,EAAE,aAAa,CAAC,UAAU;gBAC5C,QAAQ,EAAE,aAAa,CAAC,QAAQ;aACjC;YACD,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,OAAO,EAAE,SAAS;gBAClB,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,IAAI;gBACV,GAAG,EAAE,IAAI;gBACT,SAAS,EAAE,IAAI;gBACf,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,MAAM;aACf;YACD,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,KAAK;YACpB,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,aAAa,EAAE;gBACb,kBAAkB,EAAE,KAAK;gBACzB,QAAQ,EAAE,CAAC,+BAA+B,CAAC;aAC5C;YACD,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,WAAoB,EAAE,aAAsB;IACvE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,kBAAkB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAClE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU;YACV,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,MAAM,GAA2B;QACrC,QAAQ,EAAE,mBAAmB;QAC7B,SAAS,EAAE,yBAAyB;QACpC,eAAe,EAAE,yBAAyB;QAC1C,WAAW,EAAE,yBAAyB;KACvC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,kBAAkB,KAAK,uBAAuB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACtF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK;YACL,OAAO;YACP,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,iCAAiC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;SACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,QAAkB;IAElB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK;YACL,OAAO,EAAE,EAAE;YACX,wBAAwB,EAAE,KAAK;YAC/B,KAAK,EAAE,+BAA+B;SACvC,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,WAAW,IAAI,QAAQ,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC;YAErC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;YAE7C,mBAAmB;YACnB,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAChC,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC1B,UAAU,GAAG,IAAI,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;iBAC7B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,IAAI,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,oCAAoC;iBACpE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,UAAU,GAAG,IAAI,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,WAAW,CAAC,OAAO;gBAC5B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK;QACL,OAAO;QACP,wBAAwB,EAAE,UAAU,IAAI,UAAU;QAClD,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { LSPAvailability } from '../lib/lsp-client.js';
2
+ export interface CompletionResult {
3
+ success: boolean;
4
+ completions: Array<{
5
+ label: string;
6
+ kind?: string;
7
+ detail?: string;
8
+ documentation?: string;
9
+ insertText?: string;
10
+ }>;
11
+ lsp_available: boolean;
12
+ error: string | null;
13
+ }
14
+ export interface DocsResult {
15
+ success: boolean;
16
+ query: string;
17
+ position: {
18
+ line: number;
19
+ character: number;
20
+ };
21
+ documentation: string | null;
22
+ lsp_available: boolean;
23
+ error: string | null;
24
+ }
25
+ /**
26
+ * Get code completions for a query at a position
27
+ */
28
+ export declare function superComplete(query: string, line: number, character: number): Promise<CompletionResult>;
29
+ /**
30
+ * Get documentation for a symbol at a position in a query
31
+ */
32
+ export declare function superDocs(query: string, line: number, character: number): Promise<DocsResult>;
33
+ /**
34
+ * Get LSP availability status
35
+ */
36
+ export declare function getLspStatus(): LSPAvailability;
37
+ //# sourceMappingURL=lsp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/tools/lsp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA+BD;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CA+C3B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CA6CrB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,eAAe,CAE9C"}
@@ -0,0 +1,131 @@
1
+ import { getLspClient, checkLspAvailability } from '../lib/lsp-client.js';
2
+ // Map LSP completion kinds to human-readable names
3
+ const completionKindNames = {
4
+ 1: 'text',
5
+ 2: 'method',
6
+ 3: 'function',
7
+ 4: 'constructor',
8
+ 5: 'field',
9
+ 6: 'variable',
10
+ 7: 'class',
11
+ 8: 'interface',
12
+ 9: 'module',
13
+ 10: 'property',
14
+ 11: 'unit',
15
+ 12: 'value',
16
+ 13: 'enum',
17
+ 14: 'keyword',
18
+ 15: 'snippet',
19
+ 16: 'color',
20
+ 17: 'file',
21
+ 18: 'reference',
22
+ 19: 'folder',
23
+ 20: 'enumMember',
24
+ 21: 'constant',
25
+ 22: 'struct',
26
+ 23: 'event',
27
+ 24: 'operator',
28
+ 25: 'typeParameter',
29
+ };
30
+ /**
31
+ * Get code completions for a query at a position
32
+ */
33
+ export async function superComplete(query, line, character) {
34
+ const client = getLspClient();
35
+ if (!client) {
36
+ const availability = checkLspAvailability();
37
+ return {
38
+ success: false,
39
+ completions: [],
40
+ lsp_available: false,
41
+ error: availability.error || 'LSP not available',
42
+ };
43
+ }
44
+ try {
45
+ const items = await client.getCompletions(query, line, character);
46
+ const completions = items.map((item) => {
47
+ let documentation;
48
+ if (typeof item.documentation === 'string') {
49
+ documentation = item.documentation;
50
+ }
51
+ else if (item.documentation && typeof item.documentation === 'object') {
52
+ documentation = item.documentation.value;
53
+ }
54
+ return {
55
+ label: item.label,
56
+ kind: item.kind ? completionKindNames[item.kind] : undefined,
57
+ detail: item.detail,
58
+ documentation,
59
+ insertText: item.insertText,
60
+ };
61
+ });
62
+ return {
63
+ success: true,
64
+ completions,
65
+ lsp_available: true,
66
+ error: null,
67
+ };
68
+ }
69
+ catch (e) {
70
+ return {
71
+ success: false,
72
+ completions: [],
73
+ lsp_available: true,
74
+ error: e instanceof Error ? e.message : String(e),
75
+ };
76
+ }
77
+ }
78
+ /**
79
+ * Get documentation for a symbol at a position in a query
80
+ */
81
+ export async function superDocs(query, line, character) {
82
+ const client = getLspClient();
83
+ if (!client) {
84
+ const availability = checkLspAvailability();
85
+ return {
86
+ success: false,
87
+ query,
88
+ position: { line, character },
89
+ documentation: null,
90
+ lsp_available: false,
91
+ error: availability.error || 'LSP not available',
92
+ };
93
+ }
94
+ try {
95
+ const hover = await client.getHover(query, line, character);
96
+ let documentation = null;
97
+ if (hover) {
98
+ if (typeof hover.contents === 'string') {
99
+ documentation = hover.contents;
100
+ }
101
+ else if (hover.contents && typeof hover.contents === 'object') {
102
+ documentation = hover.contents.value;
103
+ }
104
+ }
105
+ return {
106
+ success: true,
107
+ query,
108
+ position: { line, character },
109
+ documentation,
110
+ lsp_available: true,
111
+ error: null,
112
+ };
113
+ }
114
+ catch (e) {
115
+ return {
116
+ success: false,
117
+ query,
118
+ position: { line, character },
119
+ documentation: null,
120
+ lsp_available: true,
121
+ error: e instanceof Error ? e.message : String(e),
122
+ };
123
+ }
124
+ }
125
+ /**
126
+ * Get LSP availability status
127
+ */
128
+ export function getLspStatus() {
129
+ return checkLspAvailability();
130
+ }
131
+ //# sourceMappingURL=lsp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../src/tools/lsp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ export interface QueryParams {
2
+ query: string;
3
+ files?: string[];
4
+ data?: string;
5
+ format?: 'json' | 'sup' | 'csv' | 'table';
6
+ inputFormat?: string;
7
+ }
8
+ export interface QueryResult {
9
+ success: boolean;
10
+ data: unknown[] | null;
11
+ rowCount: number;
12
+ raw?: string;
13
+ error: string | null;
14
+ }
15
+ export interface ValidateDiagnostic {
16
+ line: number;
17
+ character: number;
18
+ message: string;
19
+ severity: 'error' | 'warning' | 'info' | 'hint';
20
+ }
21
+ export interface ValidateResult {
22
+ valid: boolean;
23
+ error: string | null;
24
+ diagnostics: ValidateDiagnostic[];
25
+ suggestions: string[];
26
+ }
27
+ export interface ShapeInfo {
28
+ type: string;
29
+ count: number;
30
+ example: unknown;
31
+ }
32
+ export interface SchemaResult {
33
+ success: boolean;
34
+ shapes: ShapeInfo[];
35
+ totalRecords: number;
36
+ error: string | null;
37
+ }
38
+ /**
39
+ * Execute a SuperSQL query
40
+ */
41
+ export declare function superQuery(params: QueryParams): Promise<QueryResult>;
42
+ /**
43
+ * Validate query syntax without executing
44
+ * Includes position diagnostics and migration suggestions for common errors
45
+ */
46
+ export declare function superValidate(query: string): Promise<ValidateResult>;
47
+ /**
48
+ * Inspect schema/types of a file by finding unique shapes
49
+ */
50
+ export declare function superSchema(file: string): Promise<SchemaResult>;
51
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAyE1E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkD1E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA2CrE"}
@@ -0,0 +1,164 @@
1
+ import { runSuper, parseNDJSON } from '../lib/super.js';
2
+ /**
3
+ * Execute a SuperSQL query
4
+ */
5
+ export async function superQuery(params) {
6
+ const { query, files, data, format = 'json', inputFormat } = params;
7
+ // Build arguments
8
+ const args = [];
9
+ // Output format
10
+ if (format === 'json') {
11
+ args.push('-j'); // Line-oriented JSON
12
+ }
13
+ else if (format === 'sup') {
14
+ args.push('-s');
15
+ }
16
+ else if (format === 'csv') {
17
+ args.push('-f', 'csv');
18
+ }
19
+ else if (format === 'table') {
20
+ args.push('-f', 'table');
21
+ }
22
+ // Input format override
23
+ if (inputFormat) {
24
+ args.push('-i', inputFormat);
25
+ }
26
+ // Query
27
+ args.push('-c', query);
28
+ // Files or stdin
29
+ if (files && files.length > 0) {
30
+ args.push(...files);
31
+ }
32
+ else if (data !== undefined) {
33
+ args.push('-'); // Read from stdin
34
+ }
35
+ // Execute
36
+ const result = await runSuper(args, data);
37
+ if (result.exitCode !== 0) {
38
+ return {
39
+ success: false,
40
+ data: null,
41
+ rowCount: 0,
42
+ error: result.stderr.trim() || 'Query failed with no error message',
43
+ };
44
+ }
45
+ // Parse output based on format
46
+ if (format === 'json') {
47
+ try {
48
+ const parsed = parseNDJSON(result.stdout);
49
+ return {
50
+ success: true,
51
+ data: parsed,
52
+ rowCount: parsed.length,
53
+ error: null,
54
+ };
55
+ }
56
+ catch (e) {
57
+ return {
58
+ success: true,
59
+ data: null,
60
+ rowCount: 0,
61
+ raw: result.stdout,
62
+ error: null,
63
+ };
64
+ }
65
+ }
66
+ else {
67
+ // For non-JSON formats, return raw output
68
+ return {
69
+ success: true,
70
+ data: null,
71
+ rowCount: 0,
72
+ raw: result.stdout,
73
+ error: null,
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * Validate query syntax without executing
79
+ * Includes position diagnostics and migration suggestions for common errors
80
+ */
81
+ export async function superValidate(query) {
82
+ const result = await runSuper(['compile', '-C', query]);
83
+ const diagnostics = [];
84
+ const suggestions = [];
85
+ if (result.exitCode !== 0) {
86
+ const error = result.stderr.trim() || result.stdout.trim();
87
+ // Parse error position from message
88
+ // Format: "parse error at line X, column Y:\n..."
89
+ const posMatch = error.match(/at line (\d+), column (\d+)/);
90
+ const line = posMatch ? parseInt(posMatch[1]) - 1 : 0;
91
+ const character = posMatch ? parseInt(posMatch[2]) - 1 : 0;
92
+ diagnostics.push({
93
+ line,
94
+ character,
95
+ message: error,
96
+ severity: 'error',
97
+ });
98
+ // Add migration suggestions based on error patterns
99
+ if (error.includes('yield')) {
100
+ suggestions.push('Did you mean "values"? (yield was renamed to values in SuperDB)');
101
+ }
102
+ if (error.includes('over')) {
103
+ suggestions.push('Did you mean "unnest"? (over was renamed to unnest in SuperDB)');
104
+ }
105
+ if (error.match(/\/.*\//)) {
106
+ suggestions.push('Inline regex /pattern/ is not supported. Use string patterns: \'pattern\'');
107
+ }
108
+ if (error.includes('func')) {
109
+ suggestions.push('Did you mean "fn"? (func was renamed to fn in SuperDB)');
110
+ }
111
+ return {
112
+ valid: false,
113
+ error,
114
+ diagnostics,
115
+ suggestions,
116
+ };
117
+ }
118
+ return {
119
+ valid: true,
120
+ error: null,
121
+ diagnostics,
122
+ suggestions,
123
+ };
124
+ }
125
+ /**
126
+ * Inspect schema/types of a file by finding unique shapes
127
+ */
128
+ export async function superSchema(file) {
129
+ // Use aggregation to find unique shapes with counts and examples
130
+ const query = 'count(), any(this) by typeof(this) | sort -r count';
131
+ const result = await runSuper(['-j', '-c', query, file]);
132
+ if (result.exitCode !== 0) {
133
+ return {
134
+ success: false,
135
+ shapes: [],
136
+ totalRecords: 0,
137
+ error: result.stderr.trim() || 'Failed to read file',
138
+ };
139
+ }
140
+ try {
141
+ const parsed = parseNDJSON(result.stdout);
142
+ const shapes = parsed.map(row => ({
143
+ type: row.typeof,
144
+ count: row.count,
145
+ example: row.any,
146
+ }));
147
+ const totalRecords = shapes.reduce((sum, s) => sum + s.count, 0);
148
+ return {
149
+ success: true,
150
+ shapes,
151
+ totalRecords,
152
+ error: null,
153
+ };
154
+ }
155
+ catch (e) {
156
+ return {
157
+ success: false,
158
+ shapes: [],
159
+ totalRecords: 0,
160
+ error: `Failed to parse output: ${e}`,
161
+ };
162
+ }
163
+ }
164
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"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"}