@veloxts/mcp 0.6.23

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 (58) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bin.d.ts +17 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/bin.js +25 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/index.d.ts +34 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +29 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/prompts/index.d.ts +8 -0
  11. package/dist/prompts/index.d.ts.map +1 -0
  12. package/dist/prompts/index.js +7 -0
  13. package/dist/prompts/index.js.map +1 -0
  14. package/dist/prompts/templates.d.ts +75 -0
  15. package/dist/prompts/templates.d.ts.map +1 -0
  16. package/dist/prompts/templates.js +442 -0
  17. package/dist/prompts/templates.js.map +1 -0
  18. package/dist/resources/errors.d.ts +45 -0
  19. package/dist/resources/errors.d.ts.map +1 -0
  20. package/dist/resources/errors.js +117 -0
  21. package/dist/resources/errors.js.map +1 -0
  22. package/dist/resources/index.d.ts +14 -0
  23. package/dist/resources/index.d.ts.map +1 -0
  24. package/dist/resources/index.js +10 -0
  25. package/dist/resources/index.js.map +1 -0
  26. package/dist/resources/procedures.d.ts +61 -0
  27. package/dist/resources/procedures.d.ts.map +1 -0
  28. package/dist/resources/procedures.js +147 -0
  29. package/dist/resources/procedures.js.map +1 -0
  30. package/dist/resources/routes.d.ts +44 -0
  31. package/dist/resources/routes.d.ts.map +1 -0
  32. package/dist/resources/routes.js +115 -0
  33. package/dist/resources/routes.js.map +1 -0
  34. package/dist/resources/schemas.d.ts +41 -0
  35. package/dist/resources/schemas.d.ts.map +1 -0
  36. package/dist/resources/schemas.js +143 -0
  37. package/dist/resources/schemas.js.map +1 -0
  38. package/dist/server.d.ts +28 -0
  39. package/dist/server.d.ts.map +1 -0
  40. package/dist/server.js +371 -0
  41. package/dist/server.js.map +1 -0
  42. package/dist/tools/generate.d.ts +64 -0
  43. package/dist/tools/generate.d.ts.map +1 -0
  44. package/dist/tools/generate.js +155 -0
  45. package/dist/tools/generate.js.map +1 -0
  46. package/dist/tools/index.d.ts +10 -0
  47. package/dist/tools/index.d.ts.map +1 -0
  48. package/dist/tools/index.js +8 -0
  49. package/dist/tools/index.js.map +1 -0
  50. package/dist/tools/migrate.d.ts +72 -0
  51. package/dist/tools/migrate.d.ts.map +1 -0
  52. package/dist/tools/migrate.js +163 -0
  53. package/dist/tools/migrate.js.map +1 -0
  54. package/dist/utils/project.d.ts +49 -0
  55. package/dist/utils/project.d.ts.map +1 -0
  56. package/dist/utils/project.js +133 -0
  57. package/dist/utils/project.js.map +1 -0
  58. package/package.json +63 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Migrate Tool
3
+ *
4
+ * Wraps `velox migrate` commands for AI tool invocation.
5
+ */
6
+ /**
7
+ * Migration actions
8
+ */
9
+ export type MigrateAction = 'status' | 'run' | 'rollback' | 'fresh' | 'reset';
10
+ /**
11
+ * Migration options
12
+ */
13
+ export interface MigrateOptions {
14
+ /** Migration action to perform */
15
+ action: MigrateAction;
16
+ /** Development mode (creates migration from schema diff) */
17
+ dev?: boolean;
18
+ /** Output as JSON */
19
+ json?: boolean;
20
+ /** Dry run - preview without executing */
21
+ dryRun?: boolean;
22
+ }
23
+ /**
24
+ * Migration status info
25
+ */
26
+ export interface MigrationInfo {
27
+ name: string;
28
+ status: 'applied' | 'pending';
29
+ appliedAt?: string;
30
+ }
31
+ /**
32
+ * Migrate tool result
33
+ */
34
+ export interface MigrateResult {
35
+ success: boolean;
36
+ action: MigrateAction;
37
+ migrations?: MigrationInfo[];
38
+ output?: string;
39
+ error?: string;
40
+ }
41
+ /**
42
+ * Execute velox migrate command
43
+ */
44
+ export declare function migrate(options: MigrateOptions): Promise<MigrateResult>;
45
+ /**
46
+ * Get migration status
47
+ */
48
+ export declare function migrateStatus(json?: boolean): Promise<MigrateResult>;
49
+ /**
50
+ * Run pending migrations
51
+ */
52
+ export declare function migrateRun(options?: {
53
+ dev?: boolean;
54
+ dryRun?: boolean;
55
+ }): Promise<MigrateResult>;
56
+ /**
57
+ * Rollback last migration
58
+ */
59
+ export declare function migrateRollback(dryRun?: boolean): Promise<MigrateResult>;
60
+ /**
61
+ * Fresh database (drop all and re-run)
62
+ */
63
+ export declare function migrateFresh(): Promise<MigrateResult>;
64
+ /**
65
+ * Reset database (rollback all and re-run)
66
+ */
67
+ export declare function migrateReset(): Promise<MigrateResult>;
68
+ /**
69
+ * Format migrate result as text
70
+ */
71
+ export declare function formatMigrateResult(result: MigrateResult): string;
72
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/tools/migrate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkCH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,MAAM,EAAE,aAAa,CAAC;IACtB,4DAA4D;IAC5D,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,qBAAqB;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmBD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA2E7E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,UAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAEvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,CAAC,EAAE;IACzC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,aAAa,CAAC,CAEzB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAE9E;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,aAAa,CAAC,CAE3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAgBjE"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Migrate Tool
3
+ *
4
+ * Wraps `velox migrate` commands for AI tool invocation.
5
+ */
6
+ import { spawn } from 'node:child_process';
7
+ import { z } from 'zod';
8
+ import { findProjectRoot } from '../utils/project.js';
9
+ // ============================================================================
10
+ // Output Validation Schemas
11
+ // ============================================================================
12
+ /**
13
+ * Schema for migration info in JSON output
14
+ */
15
+ const MigrationInfoSchema = z.object({
16
+ name: z.string(),
17
+ status: z.enum(['applied', 'pending']),
18
+ appliedAt: z.string().optional(),
19
+ });
20
+ /**
21
+ * Schema for velox migrate JSON output
22
+ */
23
+ const MigrateOutputSchema = z.object({
24
+ migrations: z.array(MigrationInfoSchema).optional(),
25
+ success: z.boolean().optional(),
26
+ message: z.string().optional(),
27
+ });
28
+ // ============================================================================
29
+ // Tool Handler
30
+ // ============================================================================
31
+ /**
32
+ * Build CLI arguments for velox migrate command
33
+ */
34
+ function buildArgs(options) {
35
+ const args = ['migrate', options.action];
36
+ if (options.dev)
37
+ args.push('--dev');
38
+ if (options.json)
39
+ args.push('--json');
40
+ if (options.dryRun)
41
+ args.push('--dry-run');
42
+ return args;
43
+ }
44
+ /**
45
+ * Execute velox migrate command
46
+ */
47
+ export async function migrate(options) {
48
+ const projectRoot = findProjectRoot();
49
+ if (!projectRoot) {
50
+ return {
51
+ success: false,
52
+ action: options.action,
53
+ error: 'Not in a VeloxTS project. Run this command from your project root.',
54
+ };
55
+ }
56
+ const args = buildArgs(options);
57
+ return new Promise((resolve) => {
58
+ const child = spawn('npx', ['velox', ...args], {
59
+ cwd: projectRoot,
60
+ shell: true,
61
+ stdio: ['pipe', 'pipe', 'pipe'],
62
+ });
63
+ let stdout = '';
64
+ let stderr = '';
65
+ child.stdout?.on('data', (data) => {
66
+ stdout += data.toString();
67
+ });
68
+ child.stderr?.on('data', (data) => {
69
+ stderr += data.toString();
70
+ });
71
+ child.on('close', (code) => {
72
+ if (code === 0) {
73
+ // Try to parse and validate JSON output if requested
74
+ if (options.json) {
75
+ try {
76
+ const jsonData = JSON.parse(stdout);
77
+ const parsed = MigrateOutputSchema.safeParse(jsonData);
78
+ if (parsed.success) {
79
+ resolve({
80
+ success: true,
81
+ action: options.action,
82
+ migrations: parsed.data.migrations,
83
+ output: stdout,
84
+ });
85
+ return;
86
+ }
87
+ // Invalid JSON structure - fall through to plain output
88
+ }
89
+ catch {
90
+ // JSON parse failed - fall through to plain output
91
+ }
92
+ }
93
+ resolve({
94
+ success: true,
95
+ action: options.action,
96
+ output: stdout,
97
+ });
98
+ }
99
+ else {
100
+ resolve({
101
+ success: false,
102
+ action: options.action,
103
+ error: stderr || stdout || `Command failed with exit code ${code}`,
104
+ });
105
+ }
106
+ });
107
+ child.on('error', (err) => {
108
+ resolve({
109
+ success: false,
110
+ action: options.action,
111
+ error: err.message,
112
+ });
113
+ });
114
+ });
115
+ }
116
+ /**
117
+ * Get migration status
118
+ */
119
+ export async function migrateStatus(json = true) {
120
+ return migrate({ action: 'status', json });
121
+ }
122
+ /**
123
+ * Run pending migrations
124
+ */
125
+ export async function migrateRun(options) {
126
+ return migrate({ action: 'run', json: true, ...options });
127
+ }
128
+ /**
129
+ * Rollback last migration
130
+ */
131
+ export async function migrateRollback(dryRun) {
132
+ return migrate({ action: 'rollback', json: true, dryRun });
133
+ }
134
+ /**
135
+ * Fresh database (drop all and re-run)
136
+ */
137
+ export async function migrateFresh() {
138
+ return migrate({ action: 'fresh', json: true });
139
+ }
140
+ /**
141
+ * Reset database (rollback all and re-run)
142
+ */
143
+ export async function migrateReset() {
144
+ return migrate({ action: 'reset', json: true });
145
+ }
146
+ /**
147
+ * Format migrate result as text
148
+ */
149
+ export function formatMigrateResult(result) {
150
+ if (result.success) {
151
+ const lines = [`Migration ${result.action} completed successfully`];
152
+ if (result.migrations?.length) {
153
+ lines.push('', 'Migrations:');
154
+ for (const migration of result.migrations) {
155
+ const status = migration.status === 'applied' ? '[applied]' : '[pending]';
156
+ lines.push(` ${status} ${migration.name}`);
157
+ }
158
+ }
159
+ return lines.join('\n');
160
+ }
161
+ return `Migration ${result.action} failed: ${result.error}`;
162
+ }
163
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/tools/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Project Detection Utilities
3
+ *
4
+ * Utilities for detecting and introspecting VeloxTS projects.
5
+ */
6
+ /**
7
+ * Information about a detected VeloxTS project
8
+ */
9
+ export interface ProjectInfo {
10
+ /** Absolute path to the project root */
11
+ root: string;
12
+ /** Project name from package.json */
13
+ name: string;
14
+ /** Project version from package.json */
15
+ version: string;
16
+ /** Whether this is a VeloxTS project */
17
+ isVeloxProject: boolean;
18
+ /** Path to the API app (if monorepo) */
19
+ apiPath?: string;
20
+ /** Path to the web app (if monorepo) */
21
+ webPath?: string;
22
+ /** Path to the procedures directory */
23
+ proceduresPath?: string;
24
+ /** Path to the schemas directory */
25
+ schemasPath?: string;
26
+ /** Path to the Prisma schema */
27
+ prismaSchemaPath?: string;
28
+ }
29
+ /**
30
+ * Detect if a directory contains a VeloxTS project
31
+ */
32
+ export declare function isVeloxProject(dir: string): boolean;
33
+ /**
34
+ * Find the project root by searching up from a starting directory
35
+ */
36
+ export declare function findProjectRoot(startDir?: string): string | null;
37
+ /**
38
+ * Get comprehensive project information
39
+ */
40
+ export declare function getProjectInfo(projectRoot?: string): Promise<ProjectInfo | null>;
41
+ /**
42
+ * Get the procedures directory path for a project
43
+ */
44
+ export declare function getProceduresPath(projectRoot: string): string | null;
45
+ /**
46
+ * Get the schemas directory path for a project
47
+ */
48
+ export declare function getSchemasPath(projectRoot: string): string | null;
49
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,cAAc,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAgBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAqBnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAc/E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAsDtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcpE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcjE"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Project Detection Utilities
3
+ *
4
+ * Utilities for detecting and introspecting VeloxTS projects.
5
+ */
6
+ import { existsSync, readFileSync } from 'node:fs';
7
+ import { readFile } from 'node:fs/promises';
8
+ import { join, resolve } from 'node:path';
9
+ // ============================================================================
10
+ // Project Detection
11
+ // ============================================================================
12
+ /**
13
+ * Detect if a directory contains a VeloxTS project
14
+ */
15
+ export function isVeloxProject(dir) {
16
+ const packageJsonPath = join(dir, 'package.json');
17
+ if (!existsSync(packageJsonPath)) {
18
+ return false;
19
+ }
20
+ try {
21
+ const content = readFileSync(packageJsonPath, 'utf-8');
22
+ const packageJson = JSON.parse(content);
23
+ const deps = {
24
+ ...packageJson.dependencies,
25
+ ...packageJson.devDependencies,
26
+ };
27
+ // Check for any VeloxTS package
28
+ return Object.keys(deps).some((dep) => dep.startsWith('@veloxts/'));
29
+ }
30
+ catch {
31
+ return false;
32
+ }
33
+ }
34
+ /**
35
+ * Find the project root by searching up from a starting directory
36
+ */
37
+ export function findProjectRoot(startDir = process.cwd()) {
38
+ let current = resolve(startDir);
39
+ const root = resolve('/');
40
+ while (current !== root) {
41
+ if (existsSync(join(current, 'package.json'))) {
42
+ if (isVeloxProject(current)) {
43
+ return current;
44
+ }
45
+ }
46
+ current = resolve(current, '..');
47
+ }
48
+ return null;
49
+ }
50
+ /**
51
+ * Get comprehensive project information
52
+ */
53
+ export async function getProjectInfo(projectRoot) {
54
+ const root = projectRoot ?? findProjectRoot();
55
+ if (!root) {
56
+ return null;
57
+ }
58
+ const packageJsonPath = join(root, 'package.json');
59
+ try {
60
+ const packageJson = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
61
+ const info = {
62
+ root,
63
+ name: packageJson.name ?? 'unknown',
64
+ version: packageJson.version ?? '0.0.0',
65
+ isVeloxProject: isVeloxProject(root),
66
+ };
67
+ // Check for monorepo structure (apps/api, apps/web)
68
+ const apiPath = join(root, 'apps', 'api');
69
+ const webPath = join(root, 'apps', 'web');
70
+ if (existsSync(apiPath)) {
71
+ info.apiPath = apiPath;
72
+ info.proceduresPath = join(apiPath, 'src', 'procedures');
73
+ info.schemasPath = join(apiPath, 'src', 'schemas');
74
+ info.prismaSchemaPath = join(apiPath, 'prisma', 'schema.prisma');
75
+ }
76
+ else {
77
+ // Single package structure
78
+ info.proceduresPath = join(root, 'src', 'procedures');
79
+ info.schemasPath = join(root, 'src', 'schemas');
80
+ info.prismaSchemaPath = join(root, 'prisma', 'schema.prisma');
81
+ }
82
+ if (existsSync(webPath)) {
83
+ info.webPath = webPath;
84
+ }
85
+ // Validate paths exist
86
+ if (info.proceduresPath && !existsSync(info.proceduresPath)) {
87
+ info.proceduresPath = undefined;
88
+ }
89
+ if (info.schemasPath && !existsSync(info.schemasPath)) {
90
+ info.schemasPath = undefined;
91
+ }
92
+ if (info.prismaSchemaPath && !existsSync(info.prismaSchemaPath)) {
93
+ info.prismaSchemaPath = undefined;
94
+ }
95
+ return info;
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ }
101
+ /**
102
+ * Get the procedures directory path for a project
103
+ */
104
+ export function getProceduresPath(projectRoot) {
105
+ // Check monorepo structure first
106
+ const monorepoProcedures = join(projectRoot, 'apps', 'api', 'src', 'procedures');
107
+ if (existsSync(monorepoProcedures)) {
108
+ return monorepoProcedures;
109
+ }
110
+ // Check single package structure
111
+ const singleProcedures = join(projectRoot, 'src', 'procedures');
112
+ if (existsSync(singleProcedures)) {
113
+ return singleProcedures;
114
+ }
115
+ return null;
116
+ }
117
+ /**
118
+ * Get the schemas directory path for a project
119
+ */
120
+ export function getSchemasPath(projectRoot) {
121
+ // Check monorepo structure first
122
+ const monorepoSchemas = join(projectRoot, 'apps', 'api', 'src', 'schemas');
123
+ if (existsSync(monorepoSchemas)) {
124
+ return monorepoSchemas;
125
+ }
126
+ // Check single package structure
127
+ const singleSchemas = join(projectRoot, 'src', 'schemas');
128
+ if (existsSync(singleSchemas)) {
129
+ return singleSchemas;
130
+ }
131
+ return null;
132
+ }
133
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/utils/project.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwC1C,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;QAEvD,MAAM,IAAI,GAAG;YACX,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,gCAAgC;QAChC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAC9D,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YAC9C,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAoB;IACvD,MAAM,IAAI,GAAG,WAAW,IAAI,eAAe,EAAE,CAAC;IAE9C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAgB,CAAC;QAExF,MAAM,IAAI,GAAgB;YACxB,IAAI;YACJ,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,SAAS;YACnC,OAAO,EAAE,WAAW,CAAC,OAAO,IAAI,OAAO;YACvC,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC;SACrC,CAAC;QAEF,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YACzD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACpC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,iCAAiC;IACjC,MAAM,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACjF,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,iCAAiC;IACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,iCAAiC;IACjC,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3E,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QAChC,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,iCAAiC;IACjC,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@veloxts/mcp",
3
+ "version": "0.6.23",
4
+ "description": "Model Context Protocol server for VeloxTS - expose project context to AI tools",
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
+ },
14
+ "bin": {
15
+ "velox-mcp": "dist/bin.js"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "README.md"
20
+ ],
21
+ "dependencies": {
22
+ "@modelcontextprotocol/sdk": "1.25.1",
23
+ "@veloxts/router": "0.6.23",
24
+ "@veloxts/validation": "0.6.23",
25
+ "@veloxts/cli": "0.6.23"
26
+ },
27
+ "peerDependencies": {
28
+ "zod": ">=3.25.0"
29
+ },
30
+ "devDependencies": {
31
+ "@types/node": "25.0.3",
32
+ "typescript": "5.9.3",
33
+ "vitest": "4.0.16"
34
+ },
35
+ "keywords": [
36
+ "velox",
37
+ "mcp",
38
+ "model-context-protocol",
39
+ "ai",
40
+ "claude",
41
+ "typescript"
42
+ ],
43
+ "license": "MIT",
44
+ "repository": {
45
+ "type": "git",
46
+ "url": "https://github.com/veloxts/velox-ts-framework",
47
+ "directory": "packages/mcp"
48
+ },
49
+ "engines": {
50
+ "node": ">=20.0.0"
51
+ },
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "scripts": {
56
+ "build": "tsc",
57
+ "dev": "tsc --watch",
58
+ "type-check": "tsc --noEmit",
59
+ "test": "vitest run",
60
+ "test:watch": "vitest",
61
+ "clean": "rm -rf dist tsconfig.tsbuildinfo"
62
+ }
63
+ }