@outsidedata/dolex 0.1.11 → 0.1.13

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,14 +5,13 @@
5
5
  * An MCP server that provides visualization intelligence from a handcrafted
6
6
  * pattern library that goes far beyond bar/line/pie.
7
7
  *
8
- * 18 tools:
8
+ * 17 tools:
9
9
  * visualize — Inline data + intent → ranked visualization recommendations
10
10
  * visualize_from_source — Source data (DSL query) + intent → ranked visualization recommendations
11
11
  * list_patterns — Browse all available visualization patterns
12
12
  * refine_visualization — Tweak a visualization spec
13
13
  * create_dashboard — Multi-view dashboard from a data source
14
14
  * refine_dashboard — Iterate on a dashboard (add/remove views, layout, filters, theme)
15
- * connect_data — Onboard data with elicitation (asks user for path directly)
16
15
  * add_source — Connect a data source (CSV, SQLite, Postgres, MySQL)
17
16
  * list_sources — List connected data sources
18
17
  * remove_source — Disconnect a data source
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
@@ -5,14 +5,13 @@
5
5
  * An MCP server that provides visualization intelligence from a handcrafted
6
6
  * pattern library that goes far beyond bar/line/pie.
7
7
  *
8
- * 18 tools:
8
+ * 17 tools:
9
9
  * visualize — Inline data + intent → ranked visualization recommendations
10
10
  * visualize_from_source — Source data (DSL query) + intent → ranked visualization recommendations
11
11
  * list_patterns — Browse all available visualization patterns
12
12
  * refine_visualization — Tweak a visualization spec
13
13
  * create_dashboard — Multi-view dashboard from a data source
14
14
  * refine_dashboard — Iterate on a dashboard (add/remove views, layout, filters, theme)
15
- * connect_data — Onboard data with elicitation (asks user for path directly)
16
15
  * add_source — Connect a data source (CSV, SQLite, Postgres, MySQL)
17
16
  * list_sources — List connected data sources
18
17
  * remove_source — Disconnect a data source
@@ -33,7 +32,6 @@ import { visualizeFromSourceInputSchema, handleVisualizeFromSource } from './too
33
32
  import { handleListPatterns } from './tools/list-patterns.js';
34
33
  import { refineInputSchema, handleRefine } from './tools/refine.js';
35
34
  import { addSourceInputSchema, removeSourceInputSchema, describeSourceInputSchema, handleListSources, handleAddSource, handleRemoveSource, handleDescribeSource, } from './tools/sources.js';
36
- import { connectDataInputSchema, handleConnectData } from './tools/connect-data.js';
37
35
  import { analyzeSourceInputSchema, handleAnalyzeSource } from './tools/analyze.js';
38
36
  import { querySourceInputSchema, handleQuerySource } from './tools/query-source.js';
39
37
  import { createDashboardInputSchema, handleCreateDashboard } from './tools/dashboard.js';
@@ -62,20 +60,23 @@ const serverStartTime = Date.now();
62
60
  // ─── CREATE SERVER ──────────────────────────────────────────────────────────
63
61
  const server = new McpServer({
64
62
  name: 'dolex',
65
- version: '0.1.11',
63
+ version: '0.1.13',
66
64
  }, {
67
65
  instructions: [
68
66
  'STOP. Read this before doing anything else.',
69
67
  '',
70
- 'When a user wants to analyze data or mentions ANY file, call connect_data.',
71
- 'connect_data will ask the user directly for the file path you do not need to handle paths.',
72
- 'Do not check /mnt/user-data/uploads. Do not use the view tool. Do not verify paths.',
73
- 'Just call connect_data and let it handle everything.',
68
+ 'When a user gives ANY file path, call add_source with that path IMMEDIATELY.',
69
+ 'Do not check /mnt/user-data/uploads. Do not use the view tool. Do not verify the path. Do not hesitate.',
70
+ 'Just call add_source. This MCP server runs locally on the user\'s machine.',
74
71
  '',
75
- 'If the user gives a path directly, you can pass it to connect_data as the optional path argument.',
72
+ 'add_source can access: /Users/*, /home/*, ~/*, /var/*, /tmp/*, C:\\*, D:\\*, any absolute path.',
73
+ 'add_source CANNOT access: /mnt/user-data/*, /home/claude/* (cloud sandbox only).',
74
+ '',
75
+ 'If user says "analyze /Users/bill/data/sales.csv" → call add_source with path=/Users/bill/data/sales.csv. Done.',
76
+ 'If add_source returns an error, THEN discuss it. Never pre-emptively refuse.',
76
77
  '',
77
78
  'Dolex is a data analysis and visualization server with 43 chart types.',
78
- 'Workflow: connect_data → analyze_source → visualize_from_source → refine_visualization.',
79
+ 'Workflow: add_sourcedescribe_source or analyze_source → visualize_from_source → refine_visualization.',
79
80
  ].join('\n'),
80
81
  });
81
82
  // ─── Shared pattern selector callback ────────────────────────────────────────
@@ -146,13 +147,7 @@ registerAppTool(server, 'refine_visualization', {
146
147
  },
147
148
  },
148
149
  }, handleRefine());
149
- // Data onboarding primary tool for connecting data
150
- server.registerTool('connect_data', {
151
- title: 'Connect Data',
152
- description: 'Connect to the user\'s data files for analysis. Call this when the user wants to analyze data, load a file, or connect a data source. Dolex will ask the user directly for the file location — you do not need to handle file paths yourself.\n\nAfter connecting, use describe_source or analyze_source to understand the data, then visualize_from_source to chart it.',
153
- inputSchema: connectDataInputSchema,
154
- }, handleConnectData({ sourceManager, server }));
155
- // Data source management tools (programmatic)
150
+ // Data source management tools
156
151
  server.registerTool('add_source', {
157
152
  title: 'Add Data Source',
158
153
  description: 'STOP. Call this tool with the user\'s path. Do not check uploads. Do not verify. Just call it.\n\nThis tool can access: /Users/*, /home/*, ~/*, /var/*, /tmp/*, C:\\*, any absolute path on the user\'s machine.\nThis tool cannot access: /mnt/user-data/*, /home/claude/* (cloud sandbox).\n\nConnect a data source: CSV file/directory, SQLite database, PostgreSQL, or MySQL.\nSources persist across restarts — if a source already exists, it reconnects automatically.\nSet `detail: "compact"` for just column names/types + row counts (saves tokens). Default `"full"` includes stats, top values, and sample rows.',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@outsidedata/dolex",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "AI data analyst — 43 handcrafted visualization patterns, query engine with window functions, and auto-analysis planning via MCP",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/mcp/index.ts CHANGED
@@ -5,14 +5,13 @@
5
5
  * An MCP server that provides visualization intelligence from a handcrafted
6
6
  * pattern library that goes far beyond bar/line/pie.
7
7
  *
8
- * 18 tools:
8
+ * 17 tools:
9
9
  * visualize — Inline data + intent → ranked visualization recommendations
10
10
  * visualize_from_source — Source data (DSL query) + intent → ranked visualization recommendations
11
11
  * list_patterns — Browse all available visualization patterns
12
12
  * refine_visualization — Tweak a visualization spec
13
13
  * create_dashboard — Multi-view dashboard from a data source
14
14
  * refine_dashboard — Iterate on a dashboard (add/remove views, layout, filters, theme)
15
- * connect_data — Onboard data with elicitation (asks user for path directly)
16
15
  * add_source — Connect a data source (CSV, SQLite, Postgres, MySQL)
17
16
  * list_sources — List connected data sources
18
17
  * remove_source — Disconnect a data source
@@ -47,7 +46,6 @@ import {
47
46
  handleRemoveSource,
48
47
  handleDescribeSource,
49
48
  } from './tools/sources.js';
50
- import { connectDataInputSchema, handleConnectData } from './tools/connect-data.js';
51
49
  import { analyzeSourceInputSchema, handleAnalyzeSource } from './tools/analyze.js';
52
50
  import { querySourceInputSchema, handleQuerySource } from './tools/query-source.js';
53
51
  import { createDashboardInputSchema, handleCreateDashboard } from './tools/dashboard.js';
@@ -88,21 +86,24 @@ const serverStartTime = Date.now();
88
86
  const server = new McpServer(
89
87
  {
90
88
  name: 'dolex',
91
- version: '0.1.11',
89
+ version: '0.1.13',
92
90
  },
93
91
  {
94
92
  instructions: [
95
93
  'STOP. Read this before doing anything else.',
96
94
  '',
97
- 'When a user wants to analyze data or mentions ANY file, call connect_data.',
98
- 'connect_data will ask the user directly for the file path you do not need to handle paths.',
99
- 'Do not check /mnt/user-data/uploads. Do not use the view tool. Do not verify paths.',
100
- 'Just call connect_data and let it handle everything.',
95
+ 'When a user gives ANY file path, call add_source with that path IMMEDIATELY.',
96
+ 'Do not check /mnt/user-data/uploads. Do not use the view tool. Do not verify the path. Do not hesitate.',
97
+ 'Just call add_source. This MCP server runs locally on the user\'s machine.',
101
98
  '',
102
- 'If the user gives a path directly, you can pass it to connect_data as the optional path argument.',
99
+ 'add_source can access: /Users/*, /home/*, ~/*, /var/*, /tmp/*, C:\\*, D:\\*, any absolute path.',
100
+ 'add_source CANNOT access: /mnt/user-data/*, /home/claude/* (cloud sandbox only).',
101
+ '',
102
+ 'If user says "analyze /Users/bill/data/sales.csv" → call add_source with path=/Users/bill/data/sales.csv. Done.',
103
+ 'If add_source returns an error, THEN discuss it. Never pre-emptively refuse.',
103
104
  '',
104
105
  'Dolex is a data analysis and visualization server with 43 chart types.',
105
- 'Workflow: connect_data → analyze_source → visualize_from_source → refine_visualization.',
106
+ 'Workflow: add_sourcedescribe_source or analyze_source → visualize_from_source → refine_visualization.',
106
107
  ].join('\n'),
107
108
  },
108
109
  );
@@ -199,18 +200,7 @@ registerAppTool(
199
200
  handleRefine(),
200
201
  );
201
202
 
202
- // Data onboarding primary tool for connecting data
203
- server.registerTool(
204
- 'connect_data',
205
- {
206
- title: 'Connect Data',
207
- description: 'Connect to the user\'s data files for analysis. Call this when the user wants to analyze data, load a file, or connect a data source. Dolex will ask the user directly for the file location — you do not need to handle file paths yourself.\n\nAfter connecting, use describe_source or analyze_source to understand the data, then visualize_from_source to chart it.',
208
- inputSchema: connectDataInputSchema,
209
- },
210
- handleConnectData({ sourceManager, server }),
211
- );
212
-
213
- // Data source management tools (programmatic)
203
+ // Data source management tools
214
204
  server.registerTool(
215
205
  'add_source',
216
206
  {
@@ -1,14 +0,0 @@
1
- import { z } from 'zod';
2
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- export declare const connectDataInputSchema: z.ZodObject<{
4
- path: z.ZodOptional<z.ZodString>;
5
- }, "strip", z.ZodTypeAny, {
6
- path?: string | undefined;
7
- }, {
8
- path?: string | undefined;
9
- }>;
10
- export declare function handleConnectData(deps: {
11
- sourceManager: any;
12
- server: McpServer;
13
- }): (args: z.infer<typeof connectDataInputSchema>, _extra: any) => Promise<import("./shared.js").McpResponse>;
14
- //# sourceMappingURL=connect-data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect-data.d.ts","sourceRoot":"","sources":["../../../../src/mcp/tools/connect-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,eAAO,MAAM,sBAAsB;;;;;;EAEjC,CAAC;AAwBH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,aAAa,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,IAGjE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,EAAE,QAAQ,GAAG,gDAyDxE"}
@@ -1,80 +0,0 @@
1
- import { z } from 'zod';
2
- import * as fs from 'fs';
3
- import * as path from 'path';
4
- import { errorResponse } from './shared.js';
5
- import { handleAddSource, isSandboxPath } from './sources.js';
6
- export const connectDataInputSchema = z.object({
7
- path: z.string().optional().describe('File or directory path. If omitted, Dolex will ask the user directly.'),
8
- });
9
- function detectType(filePath) {
10
- const stat = fs.statSync(filePath, { throwIfNoEntry: false });
11
- if (!stat)
12
- return 'csv';
13
- if (stat.isDirectory()) {
14
- const files = fs.readdirSync(filePath);
15
- if (files.some(f => f.endsWith('.sqlite') || f.endsWith('.db') || f.endsWith('.sqlite3')))
16
- return 'sqlite';
17
- return 'csv';
18
- }
19
- const ext = path.extname(filePath).toLowerCase();
20
- if (ext === '.sqlite' || ext === '.db' || ext === '.sqlite3')
21
- return 'sqlite';
22
- return 'csv';
23
- }
24
- function deriveName(filePath) {
25
- const base = path.basename(filePath, path.extname(filePath));
26
- return base
27
- .replace(/[-_]/g, ' ')
28
- .replace(/\b\w/g, c => c.toUpperCase());
29
- }
30
- export function handleConnectData(deps) {
31
- const addSource = handleAddSource({ sourceManager: deps.sourceManager });
32
- return async (args, _extra) => {
33
- let filePath = args.path;
34
- if (!filePath) {
35
- try {
36
- const result = await deps.server.server.elicitInput({
37
- message: 'What data would you like to analyze?',
38
- requestedSchema: {
39
- type: 'object',
40
- properties: {
41
- path: {
42
- type: 'string',
43
- title: 'File or directory path',
44
- description: 'e.g. /Users/you/Downloads/sales.csv or ~/data/my-project/',
45
- },
46
- },
47
- required: ['path'],
48
- },
49
- });
50
- if (result.action !== 'accept' || !result.content?.path) {
51
- return errorResponse('No path provided. To connect data, provide a file or directory path.');
52
- }
53
- filePath = result.content.path;
54
- }
55
- catch {
56
- return errorResponse('This client does not support interactive input. '
57
- + 'Use add_source instead and pass the file path directly.');
58
- }
59
- }
60
- filePath = filePath.replace(/^~/, process.env.HOME || '');
61
- if (isSandboxPath(filePath)) {
62
- return errorResponse('This path looks like a cloud sandbox path, not a local filesystem path. '
63
- + 'Dolex runs on the user\'s machine and can access any local file — but not cloud sandbox uploads. '
64
- + 'Please provide the real local path.');
65
- }
66
- const stat = fs.statSync(filePath, { throwIfNoEntry: false });
67
- if (!stat) {
68
- return errorResponse(`Path not found: ${filePath}`);
69
- }
70
- const type = detectType(filePath);
71
- const name = deriveName(filePath);
72
- return addSource({
73
- name,
74
- type,
75
- config: { type, path: filePath },
76
- detail: 'full',
77
- });
78
- };
79
- }
80
- //# sourceMappingURL=connect-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect-data.js","sourceRoot":"","sources":["../../../../src/mcp/tools/connect-data.ts"],"names":[],"mappings":"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"}
@@ -1,94 +0,0 @@
1
- import { z } from 'zod';
2
- import * as fs from 'fs';
3
- import * as path from 'path';
4
- import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
- import { errorResponse } from './shared.js';
6
- import { handleAddSource, isSandboxPath } from './sources.js';
7
-
8
- export const connectDataInputSchema = z.object({
9
- path: z.string().optional().describe('File or directory path. If omitted, Dolex will ask the user directly.'),
10
- });
11
-
12
- function detectType(filePath: string): 'csv' | 'sqlite' {
13
- const stat = fs.statSync(filePath, { throwIfNoEntry: false });
14
- if (!stat) return 'csv';
15
-
16
- if (stat.isDirectory()) {
17
- const files = fs.readdirSync(filePath);
18
- if (files.some(f => f.endsWith('.sqlite') || f.endsWith('.db') || f.endsWith('.sqlite3'))) return 'sqlite';
19
- return 'csv';
20
- }
21
-
22
- const ext = path.extname(filePath).toLowerCase();
23
- if (ext === '.sqlite' || ext === '.db' || ext === '.sqlite3') return 'sqlite';
24
- return 'csv';
25
- }
26
-
27
- function deriveName(filePath: string): string {
28
- const base = path.basename(filePath, path.extname(filePath));
29
- return base
30
- .replace(/[-_]/g, ' ')
31
- .replace(/\b\w/g, c => c.toUpperCase());
32
- }
33
-
34
- export function handleConnectData(deps: { sourceManager: any; server: McpServer }) {
35
- const addSource = handleAddSource({ sourceManager: deps.sourceManager });
36
-
37
- return async (args: z.infer<typeof connectDataInputSchema>, _extra: any) => {
38
- let filePath = args.path;
39
-
40
- if (!filePath) {
41
- try {
42
- const result = await deps.server.server.elicitInput({
43
- message: 'What data would you like to analyze?',
44
- requestedSchema: {
45
- type: 'object' as const,
46
- properties: {
47
- path: {
48
- type: 'string' as const,
49
- title: 'File or directory path',
50
- description: 'e.g. /Users/you/Downloads/sales.csv or ~/data/my-project/',
51
- },
52
- },
53
- required: ['path'],
54
- },
55
- });
56
-
57
- if (result.action !== 'accept' || !result.content?.path) {
58
- return errorResponse('No path provided. To connect data, provide a file or directory path.');
59
- }
60
- filePath = result.content.path as string;
61
- } catch {
62
- return errorResponse(
63
- 'This client does not support interactive input. '
64
- + 'Use add_source instead and pass the file path directly.'
65
- );
66
- }
67
- }
68
-
69
- filePath = filePath.replace(/^~/, process.env.HOME || '');
70
-
71
- if (isSandboxPath(filePath)) {
72
- return errorResponse(
73
- 'This path looks like a cloud sandbox path, not a local filesystem path. '
74
- + 'Dolex runs on the user\'s machine and can access any local file — but not cloud sandbox uploads. '
75
- + 'Please provide the real local path.'
76
- );
77
- }
78
-
79
- const stat = fs.statSync(filePath, { throwIfNoEntry: false });
80
- if (!stat) {
81
- return errorResponse(`Path not found: ${filePath}`);
82
- }
83
-
84
- const type = detectType(filePath);
85
- const name = deriveName(filePath);
86
-
87
- return addSource({
88
- name,
89
- type,
90
- config: { type, path: filePath } as any,
91
- detail: 'full',
92
- });
93
- };
94
- }