@rudderjs/cli 0.0.6 → 1.0.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.
- package/README.md +1 -1
- package/dist/commands/command-list.d.ts +3 -0
- package/dist/commands/command-list.d.ts.map +1 -0
- package/dist/commands/command-list.js +57 -0
- package/dist/commands/command-list.js.map +1 -0
- package/dist/commands/make/_shared.d.ts +19 -0
- package/dist/commands/make/_shared.d.ts.map +1 -0
- package/dist/commands/make/_shared.js +27 -0
- package/dist/commands/make/_shared.js.map +1 -0
- package/dist/commands/make/command.d.ts.map +1 -1
- package/dist/commands/make/command.js +11 -18
- package/dist/commands/make/command.js.map +1 -1
- package/dist/commands/make/controller.d.ts.map +1 -1
- package/dist/commands/make/controller.js +8 -21
- package/dist/commands/make/controller.js.map +1 -1
- package/dist/commands/make/event.d.ts.map +1 -1
- package/dist/commands/make/event.js +7 -20
- package/dist/commands/make/event.js.map +1 -1
- package/dist/commands/make/job.d.ts.map +1 -1
- package/dist/commands/make/job.js +7 -20
- package/dist/commands/make/job.js.map +1 -1
- package/dist/commands/make/listener.d.ts.map +1 -1
- package/dist/commands/make/listener.js +7 -20
- package/dist/commands/make/listener.js.map +1 -1
- package/dist/commands/make/mail.d.ts.map +1 -1
- package/dist/commands/make/mail.js +7 -20
- package/dist/commands/make/mail.js.map +1 -1
- package/dist/commands/make/middleware.d.ts.map +1 -1
- package/dist/commands/make/middleware.js +8 -20
- package/dist/commands/make/middleware.js.map +1 -1
- package/dist/commands/make/model.d.ts.map +1 -1
- package/dist/commands/make/model.js +7 -21
- package/dist/commands/make/model.js.map +1 -1
- package/dist/commands/make/provider.d.ts.map +1 -1
- package/dist/commands/make/provider.js +8 -20
- package/dist/commands/make/provider.js.map +1 -1
- package/dist/commands/make/request.d.ts.map +1 -1
- package/dist/commands/make/request.js +8 -20
- package/dist/commands/make/request.js.map +1 -1
- package/dist/commands/make.d.ts.map +1 -1
- package/dist/commands/make.js +19 -10
- package/dist/commands/make.js.map +1 -1
- package/dist/commands/providers-discover.d.ts +8 -0
- package/dist/commands/providers-discover.d.ts.map +1 -0
- package/dist/commands/providers-discover.js +77 -0
- package/dist/commands/providers-discover.js.map +1 -0
- package/dist/commands/vendor-publish.d.ts.map +1 -1
- package/dist/commands/vendor-publish.js +16 -2
- package/dist/commands/vendor-publish.js.map +1 -1
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +14 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.js +139 -85
- package/dist/index.js.map +1 -1
- package/package.json +12 -3
- package/dist/commands/make/agent.d.ts +0 -4
- package/dist/commands/make/agent.d.ts.map +0 -1
- package/dist/commands/make/agent.js +0 -41
- package/dist/commands/make/agent.js.map +0 -1
- package/dist/commands/make/mcp-prompt.d.ts +0 -4
- package/dist/commands/make/mcp-prompt.d.ts.map +0 -1
- package/dist/commands/make/mcp-prompt.js +0 -45
- package/dist/commands/make/mcp-prompt.js.map +0 -1
- package/dist/commands/make/mcp-resource.d.ts +0 -4
- package/dist/commands/make/mcp-resource.d.ts.map +0 -1
- package/dist/commands/make/mcp-resource.js +0 -44
- package/dist/commands/make/mcp-resource.js.map +0 -1
- package/dist/commands/make/mcp-server.d.ts +0 -4
- package/dist/commands/make/mcp-server.d.ts.map +0 -1
- package/dist/commands/make/mcp-server.js +0 -46
- package/dist/commands/make/mcp-server.js.map +0 -1
- package/dist/commands/make/mcp-tool.d.ts +0 -4
- package/dist/commands/make/mcp-tool.d.ts.map +0 -1
- package/dist/commands/make/mcp-tool.js +0 -43
- package/dist/commands/make/mcp-tool.js.map +0 -1
- package/dist/commands/migrate.d.ts +0 -11
- package/dist/commands/migrate.d.ts.map +0 -1
- package/dist/commands/migrate.js +0 -152
- package/dist/commands/migrate.js.map +0 -1
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { writeFile, mkdir } from 'node:fs/promises';
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
3
|
-
import { resolve, dirname } from 'node:path';
|
|
4
|
-
import chalk from 'chalk';
|
|
5
|
-
export function stub(className) {
|
|
6
|
-
return `import { McpTool, McpResponse, Description } from '@rudderjs/mcp'
|
|
7
|
-
import { z } from 'zod'
|
|
8
|
-
|
|
9
|
-
@Description('Describe what this tool does.')
|
|
10
|
-
export class ${className} extends McpTool {
|
|
11
|
-
schema() {
|
|
12
|
-
return z.object({
|
|
13
|
-
// Define your input parameters here
|
|
14
|
-
})
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
async handle(input: Record<string, unknown>) {
|
|
18
|
-
// Implement your tool logic here
|
|
19
|
-
return McpResponse.text('Hello from ${className.replace(/Tool$/, '')}')
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
`;
|
|
23
|
-
}
|
|
24
|
-
export function makeMcpTool(program) {
|
|
25
|
-
program
|
|
26
|
-
.command('make:mcp-tool <name>')
|
|
27
|
-
.description('Create a new MCP tool class')
|
|
28
|
-
.option('-f, --force', 'Overwrite if file already exists')
|
|
29
|
-
.action(async (name, opts) => {
|
|
30
|
-
const className = name.endsWith('Tool') ? name : `${name}Tool`;
|
|
31
|
-
const relPath = `app/Mcp/Tools/${className}.ts`;
|
|
32
|
-
const outPath = resolve(process.cwd(), relPath);
|
|
33
|
-
if (existsSync(outPath) && !opts.force) {
|
|
34
|
-
console.error(chalk.red(` ✗ Already exists: ${relPath}`));
|
|
35
|
-
console.error(chalk.dim(' Use --force to overwrite.'));
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
await mkdir(dirname(outPath), { recursive: true });
|
|
39
|
-
await writeFile(outPath, stub(className));
|
|
40
|
-
console.log(chalk.green(' ✔ MCP tool created:'), chalk.cyan(relPath));
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=mcp-tool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool.js","sourceRoot":"","sources":["../../../src/commands/make/mcp-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,UAAU,IAAI,CAAC,SAAiB;IACpC,OAAO;;;;eAIM,SAAS;;;;;;;;;0CASkB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;;CAGvE,CAAA;AACD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO;SACJ,OAAO,CAAC,sBAAsB,CAAC;SAC/B,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,aAAa,EAAE,kCAAkC,CAAC;SACzD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAyB,EAAE,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAA;QAC9D,MAAM,OAAO,GAAK,iBAAiB,SAAS,KAAK,CAAA;QACjD,MAAM,OAAO,GAAK,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,CAAA;QAEjD,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC,CAAA;YAC1D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAA;YACzD,OAAM;QACR,CAAC;QAED,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAClD,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QAEzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IACxE,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Command } from 'commander';
|
|
2
|
-
export type ORM = 'prisma' | 'drizzle';
|
|
3
|
-
/** Detect which ORM is installed by checking package.json dependencies. */
|
|
4
|
-
export declare function detectORM(cwd?: string): ORM | null;
|
|
5
|
-
/** Build the args array for a given ORM and command. Exported for testing. */
|
|
6
|
-
export declare function buildArgs(orm: ORM, command: 'migrate' | 'migrate:fresh' | 'migrate:status' | 'make:migration' | 'db:push' | 'db:generate', options?: {
|
|
7
|
-
name?: string;
|
|
8
|
-
env?: string;
|
|
9
|
-
}): string[];
|
|
10
|
-
export declare function migrateCommands(program: Command): void;
|
|
11
|
-
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,MAAM,MAAM,GAAG,GAAG,QAAQ,GAAG,SAAS,CAAA;AAItC,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAsB,GAAG,GAAG,GAAG,IAAI,CAUjE;AAWD,8EAA8E;AAC9E,wBAAgB,SAAS,CACvB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,SAAS,GAAG,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,GAAG,aAAa,EACtG,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5C,MAAM,EAAE,CAqCV;AAID,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2FtD"}
|
package/dist/commands/migrate.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { spawn } from 'node:child_process';
|
|
4
|
-
import { intro, outro, log } from '@clack/prompts';
|
|
5
|
-
// ─── Helpers ──────────────────────────────────────────────
|
|
6
|
-
/** Detect which ORM is installed by checking package.json dependencies. */
|
|
7
|
-
export function detectORM(cwd = process.cwd()) {
|
|
8
|
-
try {
|
|
9
|
-
const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf8'));
|
|
10
|
-
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
11
|
-
if ('@rudderjs/orm-prisma' in deps)
|
|
12
|
-
return 'prisma';
|
|
13
|
-
if ('@rudderjs/orm-drizzle' in deps)
|
|
14
|
-
return 'drizzle';
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/** Run a shell command with inherited stdio. Returns exit code. */
|
|
22
|
-
function run(cmd, args, cwd) {
|
|
23
|
-
return new Promise((resolve, reject) => {
|
|
24
|
-
const proc = spawn(cmd, args, { cwd, stdio: 'inherit', shell: true });
|
|
25
|
-
proc.on('close', code => resolve(code ?? 1));
|
|
26
|
-
proc.on('error', reject);
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
/** Build the args array for a given ORM and command. Exported for testing. */
|
|
30
|
-
export function buildArgs(orm, command, options = {}) {
|
|
31
|
-
const env = options.env ?? process.env['NODE_ENV'] ?? 'development';
|
|
32
|
-
const isProd = env === 'production';
|
|
33
|
-
if (orm === 'prisma') {
|
|
34
|
-
switch (command) {
|
|
35
|
-
case 'migrate':
|
|
36
|
-
return ['exec', 'prisma', 'migrate', isProd ? 'deploy' : 'dev'];
|
|
37
|
-
case 'migrate:fresh':
|
|
38
|
-
return ['exec', 'prisma', 'migrate', 'reset', '--force'];
|
|
39
|
-
case 'migrate:status':
|
|
40
|
-
return ['exec', 'prisma', 'migrate', 'status'];
|
|
41
|
-
case 'make:migration':
|
|
42
|
-
return ['exec', 'prisma', 'migrate', 'dev', '--create-only', '--name', options.name ?? 'migration'];
|
|
43
|
-
case 'db:push':
|
|
44
|
-
return ['exec', 'prisma', 'db', 'push'];
|
|
45
|
-
case 'db:generate':
|
|
46
|
-
return ['exec', 'prisma', 'generate'];
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Drizzle
|
|
50
|
-
switch (command) {
|
|
51
|
-
case 'migrate':
|
|
52
|
-
return ['exec', 'drizzle-kit', 'migrate'];
|
|
53
|
-
case 'migrate:fresh':
|
|
54
|
-
return ['exec', 'drizzle-kit', 'migrate', '--force'];
|
|
55
|
-
case 'migrate:status':
|
|
56
|
-
return ['exec', 'drizzle-kit', 'check'];
|
|
57
|
-
case 'make:migration':
|
|
58
|
-
return ['exec', 'drizzle-kit', 'generate', '--name', options.name ?? 'migration'];
|
|
59
|
-
case 'db:push':
|
|
60
|
-
return ['exec', 'drizzle-kit', 'push'];
|
|
61
|
-
case 'db:generate':
|
|
62
|
-
// Drizzle schemas are TypeScript — no generation step needed
|
|
63
|
-
return [];
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// ─── Commands ─────────────────────────────────────────────
|
|
67
|
-
export function migrateCommands(program) {
|
|
68
|
-
const cwd = process.cwd();
|
|
69
|
-
function requireORM() {
|
|
70
|
-
const orm = detectORM(cwd);
|
|
71
|
-
if (!orm) {
|
|
72
|
-
log.error('No ORM detected. Install @rudderjs/orm-prisma or @rudderjs/orm-drizzle.');
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
return orm;
|
|
76
|
-
}
|
|
77
|
-
async function exec(orm, command, options) {
|
|
78
|
-
const args = buildArgs(orm, command, { ...options, env: process.env['NODE_ENV'] ?? 'development' });
|
|
79
|
-
if (args.length === 0) {
|
|
80
|
-
log.info('Nothing to do (not needed for this ORM).');
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
const code = await run('pnpm', args, cwd);
|
|
84
|
-
if (code !== 0)
|
|
85
|
-
process.exit(code);
|
|
86
|
-
}
|
|
87
|
-
// ── migrate ───────────────────────────────────────────
|
|
88
|
-
program
|
|
89
|
-
.command('migrate')
|
|
90
|
-
.description('Run pending database migrations')
|
|
91
|
-
.action(async () => {
|
|
92
|
-
intro('migrate');
|
|
93
|
-
const orm = requireORM();
|
|
94
|
-
log.info(`Detected ORM: ${orm}`);
|
|
95
|
-
await exec(orm, 'migrate');
|
|
96
|
-
outro('Migrations complete.');
|
|
97
|
-
});
|
|
98
|
-
// ── migrate:fresh ─────────────────────────────────────
|
|
99
|
-
program
|
|
100
|
-
.command('migrate:fresh')
|
|
101
|
-
.description('Drop all tables and re-run all migrations')
|
|
102
|
-
.action(async () => {
|
|
103
|
-
intro('migrate:fresh');
|
|
104
|
-
const orm = requireORM();
|
|
105
|
-
log.info(`Detected ORM: ${orm}`);
|
|
106
|
-
await exec(orm, 'migrate:fresh');
|
|
107
|
-
outro('Database reset complete.');
|
|
108
|
-
});
|
|
109
|
-
// ── migrate:status ────────────────────────────────────
|
|
110
|
-
program
|
|
111
|
-
.command('migrate:status')
|
|
112
|
-
.description('Show the status of each migration')
|
|
113
|
-
.action(async () => {
|
|
114
|
-
intro('migrate:status');
|
|
115
|
-
const orm = requireORM();
|
|
116
|
-
await exec(orm, 'migrate:status');
|
|
117
|
-
outro('');
|
|
118
|
-
});
|
|
119
|
-
// ── make:migration ────────────────────────────────────
|
|
120
|
-
program
|
|
121
|
-
.command('make:migration <name>')
|
|
122
|
-
.description('Create a new migration file')
|
|
123
|
-
.action(async (name) => {
|
|
124
|
-
intro('make:migration');
|
|
125
|
-
const orm = requireORM();
|
|
126
|
-
log.info(`Detected ORM: ${orm}`);
|
|
127
|
-
await exec(orm, 'make:migration', { name });
|
|
128
|
-
outro(`Migration "${name}" created.`);
|
|
129
|
-
});
|
|
130
|
-
// ── db:push ───────────────────────────────────────────
|
|
131
|
-
program
|
|
132
|
-
.command('db:push')
|
|
133
|
-
.description('Push schema changes directly to the database (no migration file)')
|
|
134
|
-
.action(async () => {
|
|
135
|
-
intro('db:push');
|
|
136
|
-
const orm = requireORM();
|
|
137
|
-
log.info(`Detected ORM: ${orm}`);
|
|
138
|
-
await exec(orm, 'db:push');
|
|
139
|
-
outro('Database pushed.');
|
|
140
|
-
});
|
|
141
|
-
// ── db:generate ───────────────────────────────────────
|
|
142
|
-
program
|
|
143
|
-
.command('db:generate')
|
|
144
|
-
.description('Regenerate the database client (Prisma only)')
|
|
145
|
-
.action(async () => {
|
|
146
|
-
intro('db:generate');
|
|
147
|
-
const orm = requireORM();
|
|
148
|
-
await exec(orm, 'db:generate');
|
|
149
|
-
outro('Client generated.');
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
//# sourceMappingURL=migrate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|