@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.
- package/LICENSE +21 -0
- package/dist/bin.d.ts +17 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +25 -0
- package/dist/bin.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +8 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +7 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/templates.d.ts +75 -0
- package/dist/prompts/templates.d.ts.map +1 -0
- package/dist/prompts/templates.js +442 -0
- package/dist/prompts/templates.js.map +1 -0
- package/dist/resources/errors.d.ts +45 -0
- package/dist/resources/errors.d.ts.map +1 -0
- package/dist/resources/errors.js +117 -0
- package/dist/resources/errors.js.map +1 -0
- package/dist/resources/index.d.ts +14 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +10 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/procedures.d.ts +61 -0
- package/dist/resources/procedures.d.ts.map +1 -0
- package/dist/resources/procedures.js +147 -0
- package/dist/resources/procedures.js.map +1 -0
- package/dist/resources/routes.d.ts +44 -0
- package/dist/resources/routes.d.ts.map +1 -0
- package/dist/resources/routes.js +115 -0
- package/dist/resources/routes.js.map +1 -0
- package/dist/resources/schemas.d.ts +41 -0
- package/dist/resources/schemas.d.ts.map +1 -0
- package/dist/resources/schemas.js +143 -0
- package/dist/resources/schemas.js.map +1 -0
- package/dist/server.d.ts +28 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +371 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/generate.d.ts +64 -0
- package/dist/tools/generate.d.ts.map +1 -0
- package/dist/tools/generate.js +155 -0
- package/dist/tools/generate.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/migrate.d.ts +72 -0
- package/dist/tools/migrate.d.ts.map +1 -0
- package/dist/tools/migrate.js +163 -0
- package/dist/tools/migrate.js.map +1 -0
- package/dist/utils/project.d.ts +49 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +133 -0
- package/dist/utils/project.js.map +1 -0
- 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":"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"}
|
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
|
+
}
|