@cortexmemory/cli 0.26.0 → 0.27.1

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 (71) hide show
  1. package/dist/commands/db.d.ts.map +1 -1
  2. package/dist/commands/db.js +2 -18
  3. package/dist/commands/db.js.map +1 -1
  4. package/dist/commands/dev.d.ts.map +1 -1
  5. package/dist/commands/dev.js +153 -17
  6. package/dist/commands/dev.js.map +1 -1
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +373 -70
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/commands/setup.d.ts.map +1 -1
  11. package/dist/commands/setup.js +102 -46
  12. package/dist/commands/setup.js.map +1 -1
  13. package/dist/commands/status.d.ts.map +1 -1
  14. package/dist/commands/status.js +94 -7
  15. package/dist/commands/status.js.map +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/types.d.ts +23 -0
  18. package/dist/types.d.ts.map +1 -1
  19. package/dist/utils/config.d.ts +11 -0
  20. package/dist/utils/config.d.ts.map +1 -1
  21. package/dist/utils/config.js +20 -0
  22. package/dist/utils/config.js.map +1 -1
  23. package/dist/utils/init/convex-setup.d.ts +58 -6
  24. package/dist/utils/init/convex-setup.d.ts.map +1 -1
  25. package/dist/utils/init/convex-setup.js +261 -57
  26. package/dist/utils/init/convex-setup.js.map +1 -1
  27. package/dist/utils/init/env-generator.d.ts.map +1 -1
  28. package/dist/utils/init/env-generator.js +12 -2
  29. package/dist/utils/init/env-generator.js.map +1 -1
  30. package/dist/utils/init/graph-setup.d.ts.map +1 -1
  31. package/dist/utils/init/graph-setup.js +12 -0
  32. package/dist/utils/init/graph-setup.js.map +1 -1
  33. package/dist/utils/init/quickstart-setup.d.ts +87 -0
  34. package/dist/utils/init/quickstart-setup.d.ts.map +1 -0
  35. package/dist/utils/init/quickstart-setup.js +462 -0
  36. package/dist/utils/init/quickstart-setup.js.map +1 -0
  37. package/dist/utils/init/types.d.ts +4 -0
  38. package/dist/utils/init/types.d.ts.map +1 -1
  39. package/dist/utils/schema-sync.d.ts.map +1 -1
  40. package/dist/utils/schema-sync.js +27 -21
  41. package/dist/utils/schema-sync.js.map +1 -1
  42. package/package.json +3 -2
  43. package/templates/vercel-ai-quickstart/.env.local.example +45 -0
  44. package/templates/vercel-ai-quickstart/README.md +280 -0
  45. package/templates/vercel-ai-quickstart/app/api/chat/route.ts +196 -0
  46. package/templates/vercel-ai-quickstart/app/api/facts/route.ts +39 -0
  47. package/templates/vercel-ai-quickstart/app/api/health/route.ts +99 -0
  48. package/templates/vercel-ai-quickstart/app/api/memories/route.ts +37 -0
  49. package/templates/vercel-ai-quickstart/app/globals.css +114 -0
  50. package/templates/vercel-ai-quickstart/app/layout.tsx +19 -0
  51. package/templates/vercel-ai-quickstart/app/page.tsx +131 -0
  52. package/templates/vercel-ai-quickstart/components/ChatInterface.tsx +237 -0
  53. package/templates/vercel-ai-quickstart/components/ConvexClientProvider.tsx +21 -0
  54. package/templates/vercel-ai-quickstart/components/DataPreview.tsx +57 -0
  55. package/templates/vercel-ai-quickstart/components/HealthStatus.tsx +214 -0
  56. package/templates/vercel-ai-quickstart/components/LayerCard.tsx +263 -0
  57. package/templates/vercel-ai-quickstart/components/LayerFlowDiagram.tsx +195 -0
  58. package/templates/vercel-ai-quickstart/components/MemorySpaceSwitcher.tsx +93 -0
  59. package/templates/vercel-ai-quickstart/convex/conversations.ts +67 -0
  60. package/templates/vercel-ai-quickstart/convex/facts.ts +131 -0
  61. package/templates/vercel-ai-quickstart/convex/health.ts +15 -0
  62. package/templates/vercel-ai-quickstart/convex/memories.ts +104 -0
  63. package/templates/vercel-ai-quickstart/convex/schema.ts +20 -0
  64. package/templates/vercel-ai-quickstart/convex/users.ts +105 -0
  65. package/templates/vercel-ai-quickstart/lib/animations.ts +146 -0
  66. package/templates/vercel-ai-quickstart/lib/layer-tracking.ts +214 -0
  67. package/templates/vercel-ai-quickstart/next.config.js +7 -0
  68. package/templates/vercel-ai-quickstart/package.json +41 -0
  69. package/templates/vercel-ai-quickstart/postcss.config.js +5 -0
  70. package/templates/vercel-ai-quickstart/tailwind.config.js +37 -0
  71. package/templates/vercel-ai-quickstart/tsconfig.json +33 -0
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Vercel AI Quickstart Setup
3
+ *
4
+ * Handles installing the Vercel AI quickstart demo app
5
+ * as a subfolder of the user's project.
6
+ */
7
+ import type { AppConfig } from "../../types.js";
8
+ /**
9
+ * Graph configuration for quickstart
10
+ */
11
+ export interface QuickstartGraphConfig {
12
+ enabled: boolean;
13
+ uri?: string;
14
+ username?: string;
15
+ password?: string;
16
+ }
17
+ /**
18
+ * Install the Vercel AI quickstart demo app
19
+ *
20
+ * @param projectPath - Absolute path to the user's project
21
+ * @param sdkVersion - Version of @cortexmemory/sdk to use
22
+ * @param convexUrl - Convex deployment URL
23
+ * @param openaiApiKey - Optional OpenAI API key
24
+ * @param graphConfig - Optional graph database configuration
25
+ * @returns AppConfig for the installed app (includes projectPath for starting from anywhere)
26
+ */
27
+ export declare function installVercelAIQuickstart(projectPath: string, sdkVersion: string, convexUrl: string, openaiApiKey?: string, graphConfig?: QuickstartGraphConfig): Promise<AppConfig>;
28
+ /**
29
+ * Get the PID file path for an app
30
+ *
31
+ * @param appName - App name (used as identifier)
32
+ * @param projectPath - Project root path
33
+ * @returns Path to the PID file
34
+ */
35
+ export declare function getAppPidFilePath(appName: string, projectPath: string): string;
36
+ /**
37
+ * Start a template app in the background
38
+ *
39
+ * @param appName - Display name for the app
40
+ * @param app - App configuration (includes projectPath)
41
+ */
42
+ export declare function startApp(appName: string, app: AppConfig): Promise<void>;
43
+ /**
44
+ * Stop a running app by its PID file
45
+ *
46
+ * @param appName - App name (used to find PID file)
47
+ * @param projectPath - Project root path
48
+ * @returns True if the app was stopped, false if it wasn't running
49
+ */
50
+ export declare function stopApp(appName: string, projectPath: string): Promise<boolean>;
51
+ /**
52
+ * Check if an app is running
53
+ *
54
+ * @param appName - App name (used to find PID file)
55
+ * @param projectPath - Project root path
56
+ * @returns Object with running status and PID if running
57
+ */
58
+ export declare function isAppRunning(appName: string, projectPath: string): Promise<{
59
+ running: boolean;
60
+ pid?: number;
61
+ }>;
62
+ /**
63
+ * Find all app PID files in a project directory
64
+ *
65
+ * @param projectPath - Project root path
66
+ * @returns Array of app names that have PID files
67
+ */
68
+ export declare function findAppPidFiles(projectPath: string): Promise<Array<{
69
+ name: string;
70
+ pidFile: string;
71
+ }>>;
72
+ /**
73
+ * Find process listening on a specific port
74
+ *
75
+ * @param port - Port number to check
76
+ * @returns PID of the process or null if none found
77
+ */
78
+ export declare function findProcessByPort(port: number): Promise<number | null>;
79
+ /**
80
+ * Stop a process by port number
81
+ *
82
+ * @param port - Port number
83
+ * @param signal - Signal to send (default: SIGTERM)
84
+ * @returns True if process was stopped, false otherwise
85
+ */
86
+ export declare function stopProcessByPort(port: number, signal?: Parameters<typeof process.kill>[1]): Promise<boolean>;
87
+ //# sourceMappingURL=quickstart-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickstart-setup.d.ts","sourceRoot":"","sources":["../../../src/utils/init/quickstart-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA6HhD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgID;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,qBAAqB,GAClC,OAAO,CAAC,SAAS,CAAC,CA8EpB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI9E;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C7E;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC,CAkClB;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB7C;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAWnD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAkB5E;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,UAAU,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAa,GACrD,OAAO,CAAC,OAAO,CAAC,CAYlB"}
@@ -0,0 +1,462 @@
1
+ /**
2
+ * Vercel AI Quickstart Setup
3
+ *
4
+ * Handles installing the Vercel AI quickstart demo app
5
+ * as a subfolder of the user's project.
6
+ */
7
+ import fs from "fs-extra";
8
+ import path from "path";
9
+ import { fileURLToPath } from "url";
10
+ import { dirname } from "path";
11
+ import pc from "picocolors";
12
+ import ora from "ora";
13
+ import { execCommand } from "../shell.js";
14
+ // ES module equivalents of __dirname
15
+ const __filename = fileURLToPath(import.meta.url);
16
+ const __dirname = dirname(__filename);
17
+ /**
18
+ * Default port for the quickstart app
19
+ */
20
+ const QUICKSTART_PORT = 3000;
21
+ /**
22
+ * Files to exclude when copying template
23
+ */
24
+ const EXCLUDE_FILES = [
25
+ "node_modules",
26
+ "package-lock.json",
27
+ ".next",
28
+ ".env.local",
29
+ "tsconfig.tsbuildinfo",
30
+ ];
31
+ /**
32
+ * Find the quickstart template directory
33
+ */
34
+ function findTemplatePath() {
35
+ const possiblePaths = [
36
+ // From dist/utils/init/
37
+ path.join(__dirname, "../../../templates/vercel-ai-quickstart"),
38
+ // From dist/utils/init/subdir
39
+ path.join(__dirname, "../../../../templates/vercel-ai-quickstart"),
40
+ // From installed package in node_modules
41
+ path.join(process.cwd(), "node_modules", "@cortexmemory", "cli", "templates", "vercel-ai-quickstart"),
42
+ ];
43
+ for (const tryPath of possiblePaths) {
44
+ if (fs.existsSync(tryPath)) {
45
+ return tryPath;
46
+ }
47
+ }
48
+ return null;
49
+ }
50
+ /**
51
+ * Recursively copy directory, excluding specified patterns
52
+ */
53
+ async function copyDir(src, dest) {
54
+ await fs.ensureDir(dest);
55
+ const entries = await fs.readdir(src, { withFileTypes: true });
56
+ for (const entry of entries) {
57
+ const srcPath = path.join(src, entry.name);
58
+ const destPath = path.join(dest, entry.name);
59
+ // Skip excluded files/folders
60
+ if (EXCLUDE_FILES.includes(entry.name)) {
61
+ continue;
62
+ }
63
+ if (entry.isDirectory()) {
64
+ await copyDir(srcPath, destPath);
65
+ }
66
+ else {
67
+ await fs.copyFile(srcPath, destPath);
68
+ }
69
+ }
70
+ }
71
+ /**
72
+ * Update package.json to use npm packages instead of file: references
73
+ */
74
+ async function updatePackageJson(quickstartPath, sdkVersion) {
75
+ const packageJsonPath = path.join(quickstartPath, "package.json");
76
+ // Read and write atomically to avoid race conditions
77
+ // If the file doesn't exist, readFile will throw and we'll catch it
78
+ let content;
79
+ try {
80
+ content = await fs.readFile(packageJsonPath, "utf-8");
81
+ }
82
+ catch (err) {
83
+ const error = err;
84
+ if (error.code === "ENOENT") {
85
+ return; // File doesn't exist, nothing to update
86
+ }
87
+ throw err;
88
+ }
89
+ const pkg = JSON.parse(content);
90
+ // Update dependencies to use npm packages
91
+ if (pkg.dependencies) {
92
+ // Replace file: references with npm versions
93
+ if (pkg.dependencies["@cortexmemory/sdk"]?.startsWith("file:") ||
94
+ pkg.dependencies["@cortexmemory/sdk"] === "*") {
95
+ pkg.dependencies["@cortexmemory/sdk"] = `^${sdkVersion}`;
96
+ }
97
+ if (pkg.dependencies["@cortexmemory/vercel-ai-provider"]?.startsWith("file:")) {
98
+ // Use same version as SDK (they're released together)
99
+ pkg.dependencies["@cortexmemory/vercel-ai-provider"] = `^${sdkVersion}`;
100
+ }
101
+ }
102
+ // Update name to avoid conflicts
103
+ pkg.name = "cortex-quickstart";
104
+ await fs.writeFile(packageJsonPath, JSON.stringify(pkg, null, 2) + "\n");
105
+ }
106
+ /**
107
+ * Create .env.local for the quickstart app
108
+ */
109
+ async function createQuickstartEnv(quickstartPath, convexUrl, openaiApiKey, graphConfig) {
110
+ const envPath = path.join(quickstartPath, ".env.local");
111
+ let envContent = `# Cortex Memory Quickstart Environment
112
+ # Generated by cortex init
113
+
114
+ # Convex deployment URL
115
+ CONVEX_URL=${convexUrl}
116
+ NEXT_PUBLIC_CONVEX_URL=${convexUrl}
117
+
118
+ `;
119
+ if (openaiApiKey) {
120
+ envContent += `# OpenAI API key for embeddings and LLM
121
+ OPENAI_API_KEY=${openaiApiKey}
122
+
123
+ `;
124
+ }
125
+ else {
126
+ envContent += `# OpenAI API key (required for chat functionality)
127
+ # Get your key at: https://platform.openai.com/api-keys
128
+ # OPENAI_API_KEY=sk-...
129
+
130
+ `;
131
+ }
132
+ envContent += `# Enable fact extraction (extracts structured facts from conversations)
133
+ CORTEX_FACT_EXTRACTION=true
134
+
135
+ `;
136
+ // Graph sync configuration
137
+ if (graphConfig?.enabled && graphConfig.uri) {
138
+ envContent += `# Graph memory sync (enabled during init)
139
+ CORTEX_GRAPH_SYNC=true
140
+
141
+ # Graph database connection
142
+ NEO4J_URI=${graphConfig.uri}
143
+ NEO4J_USERNAME=${graphConfig.username || "neo4j"}
144
+ NEO4J_PASSWORD=${graphConfig.password || ""}
145
+ `;
146
+ }
147
+ else {
148
+ envContent += `# Optional: Enable graph sync (requires Neo4j or Memgraph)
149
+ # CORTEX_GRAPH_SYNC=true
150
+ # NEO4J_URI=bolt://localhost:7687
151
+ # NEO4J_USERNAME=neo4j
152
+ # NEO4J_PASSWORD=your-password
153
+ `;
154
+ }
155
+ await fs.writeFile(envPath, envContent);
156
+ }
157
+ /**
158
+ * Copy quickstart's Convex query files to the main convex folder
159
+ *
160
+ * The quickstart has read-only query files for the demo UI.
161
+ * These are additive and don't conflict with the SDK's backend files.
162
+ */
163
+ async function copyConvexQueryFiles(quickstartPath, projectPath) {
164
+ const quickstartConvexPath = path.join(quickstartPath, "convex");
165
+ const projectConvexPath = path.join(projectPath, "convex");
166
+ if (!fs.existsSync(quickstartConvexPath)) {
167
+ return;
168
+ }
169
+ // Files to copy (query files for demo UI)
170
+ const queryFiles = ["health.ts"];
171
+ for (const file of queryFiles) {
172
+ const srcFile = path.join(quickstartConvexPath, file);
173
+ const destFile = path.join(projectConvexPath, file);
174
+ if (fs.existsSync(srcFile) && !fs.existsSync(destFile)) {
175
+ await fs.copyFile(srcFile, destFile);
176
+ }
177
+ }
178
+ // For files that exist in both (memories.ts, facts.ts, etc.),
179
+ // the quickstart queries have different function names so we could append them.
180
+ // For now, we'll skip merging to avoid complexity - the quickstart can use
181
+ // the SDK's existing query functions or its own internal queries.
182
+ }
183
+ /**
184
+ * Add quickstart script to root package.json
185
+ */
186
+ async function addQuickstartScript(projectPath) {
187
+ const packageJsonPath = path.join(projectPath, "package.json");
188
+ // Read and write atomically to avoid race conditions
189
+ // If the file doesn't exist, readFile will throw and we'll catch it
190
+ let content;
191
+ try {
192
+ content = await fs.readFile(packageJsonPath, "utf-8");
193
+ }
194
+ catch (err) {
195
+ const error = err;
196
+ if (error.code === "ENOENT") {
197
+ return; // File doesn't exist, nothing to update
198
+ }
199
+ throw err;
200
+ }
201
+ const pkg = JSON.parse(content);
202
+ pkg.scripts = pkg.scripts || {};
203
+ // Add quickstart script if not present
204
+ if (!pkg.scripts.quickstart) {
205
+ pkg.scripts.quickstart = "cd quickstart && npm run dev";
206
+ }
207
+ await fs.writeFile(packageJsonPath, JSON.stringify(pkg, null, 2) + "\n");
208
+ }
209
+ /**
210
+ * Install the Vercel AI quickstart demo app
211
+ *
212
+ * @param projectPath - Absolute path to the user's project
213
+ * @param sdkVersion - Version of @cortexmemory/sdk to use
214
+ * @param convexUrl - Convex deployment URL
215
+ * @param openaiApiKey - Optional OpenAI API key
216
+ * @param graphConfig - Optional graph database configuration
217
+ * @returns AppConfig for the installed app (includes projectPath for starting from anywhere)
218
+ */
219
+ export async function installVercelAIQuickstart(projectPath, sdkVersion, convexUrl, openaiApiKey, graphConfig) {
220
+ // Ensure we have an absolute path
221
+ const absoluteProjectPath = path.resolve(projectPath);
222
+ const quickstartPath = path.join(absoluteProjectPath, "quickstart");
223
+ // Find template
224
+ const templatePath = findTemplatePath();
225
+ if (!templatePath) {
226
+ throw new Error("Vercel AI quickstart template not found. " +
227
+ "Please ensure @cortexmemory/cli is properly installed.");
228
+ }
229
+ console.log(pc.cyan("\n Installing Vercel AI quickstart..."));
230
+ // Copy template files
231
+ const copySpinner = ora("Copying quickstart files...").start();
232
+ await copyDir(templatePath, quickstartPath);
233
+ copySpinner.succeed("Quickstart files copied");
234
+ // Update package.json with npm package versions
235
+ const updateSpinner = ora("Configuring package.json...").start();
236
+ await updatePackageJson(quickstartPath, sdkVersion);
237
+ updateSpinner.succeed("Package.json configured");
238
+ // Create .env.local (including graph config if enabled)
239
+ await createQuickstartEnv(quickstartPath, convexUrl, openaiApiKey, graphConfig);
240
+ console.log(pc.dim(" Created quickstart/.env.local"));
241
+ // Copy Convex query files to main convex folder
242
+ await copyConvexQueryFiles(quickstartPath, projectPath);
243
+ // Add quickstart script to root package.json
244
+ await addQuickstartScript(projectPath);
245
+ console.log(pc.dim(" Added 'quickstart' script to package.json"));
246
+ // Install dependencies
247
+ // Use --legacy-peer-deps to handle potential version mismatches between
248
+ // the quickstart template (ai@^6.x) and older published provider versions
249
+ const installSpinner = ora("Installing quickstart dependencies...").start();
250
+ try {
251
+ const result = await execCommand("npm", ["install", "--legacy-peer-deps"], {
252
+ cwd: quickstartPath,
253
+ quiet: true,
254
+ });
255
+ if (result.code !== 0) {
256
+ installSpinner.fail("Failed to install dependencies");
257
+ console.error(pc.red(result.stderr));
258
+ throw new Error("npm install failed in quickstart folder");
259
+ }
260
+ installSpinner.succeed("Quickstart dependencies installed");
261
+ }
262
+ catch (error) {
263
+ installSpinner.fail("Failed to install dependencies");
264
+ throw error;
265
+ }
266
+ console.log(pc.green("\n ✓ Vercel AI quickstart installed"));
267
+ console.log(pc.dim(" Location: ./quickstart"));
268
+ console.log(pc.dim(" Run: npm run quickstart"));
269
+ // Return app config with absolute projectPath for starting from anywhere
270
+ return {
271
+ type: "vercel-ai-quickstart",
272
+ path: "quickstart",
273
+ projectPath: absoluteProjectPath,
274
+ enabled: true,
275
+ port: QUICKSTART_PORT,
276
+ startCommand: "npm run dev",
277
+ };
278
+ }
279
+ /**
280
+ * Get the PID file path for an app
281
+ *
282
+ * @param appName - App name (used as identifier)
283
+ * @param projectPath - Project root path
284
+ * @returns Path to the PID file
285
+ */
286
+ export function getAppPidFilePath(appName, projectPath) {
287
+ // Sanitize app name for use in filename
288
+ const safeName = appName.replace(/[^a-zA-Z0-9-_]/g, "-");
289
+ return path.join(projectPath, `.cortex-app-${safeName}.pid`);
290
+ }
291
+ /**
292
+ * Start a template app in the background
293
+ *
294
+ * @param appName - Display name for the app
295
+ * @param app - App configuration (includes projectPath)
296
+ */
297
+ export async function startApp(appName, app) {
298
+ // Use app.projectPath (absolute) combined with app.path (relative)
299
+ const appPath = path.join(app.projectPath, app.path);
300
+ if (!fs.existsSync(appPath)) {
301
+ console.log(pc.yellow(` App "${appName}" not found at ${appPath}`));
302
+ return;
303
+ }
304
+ const command = app.startCommand || "npm run dev";
305
+ const [cmd, ...args] = command.split(" ");
306
+ console.log(pc.dim(` Starting ${appName} on port ${app.port || 3000}...`));
307
+ // Create log file for the background process
308
+ const logFile = path.join(app.projectPath, `.cortex-app-${appName}.log`);
309
+ const logFd = fs.openSync(logFile, "a");
310
+ // Use spawn to start in background
311
+ const { spawn } = await import("child_process");
312
+ const child = spawn(cmd, args, {
313
+ cwd: appPath,
314
+ env: {
315
+ ...process.env,
316
+ PORT: String(app.port || 3000),
317
+ },
318
+ detached: true,
319
+ stdio: ["ignore", logFd, logFd],
320
+ });
321
+ // Close the file descriptor in parent process (child keeps it open)
322
+ fs.closeSync(logFd);
323
+ child.unref();
324
+ // Save PID for later management (stop command)
325
+ const pidFile = getAppPidFilePath(appName, app.projectPath);
326
+ await fs.writeFile(pidFile, String(child.pid));
327
+ console.log(pc.green(` ✓ ${appName} started at http://localhost:${app.port || 3000}`));
328
+ console.log(pc.dim(` PID: ${child.pid}`));
329
+ console.log(pc.dim(` Log: ${path.basename(logFile)}`));
330
+ }
331
+ /**
332
+ * Stop a running app by its PID file
333
+ *
334
+ * @param appName - App name (used to find PID file)
335
+ * @param projectPath - Project root path
336
+ * @returns True if the app was stopped, false if it wasn't running
337
+ */
338
+ export async function stopApp(appName, projectPath) {
339
+ const pidFile = getAppPidFilePath(appName, projectPath);
340
+ try {
341
+ const pid = await fs.readFile(pidFile, "utf-8");
342
+ const pidNum = parseInt(pid.trim());
343
+ if (isNaN(pidNum)) {
344
+ await fs.remove(pidFile);
345
+ return false;
346
+ }
347
+ try {
348
+ process.kill(pidNum, "SIGTERM");
349
+ // Clean up PID file
350
+ await fs.remove(pidFile);
351
+ return true;
352
+ }
353
+ catch (e) {
354
+ const err = e;
355
+ if (err.code === "ESRCH") {
356
+ // Process already dead, clean up PID file
357
+ await fs.remove(pidFile);
358
+ return false;
359
+ }
360
+ throw e;
361
+ }
362
+ }
363
+ catch (e) {
364
+ const err = e;
365
+ if (err.code === "ENOENT") {
366
+ // No PID file exists
367
+ return false;
368
+ }
369
+ throw e;
370
+ }
371
+ }
372
+ /**
373
+ * Check if an app is running
374
+ *
375
+ * @param appName - App name (used to find PID file)
376
+ * @param projectPath - Project root path
377
+ * @returns Object with running status and PID if running
378
+ */
379
+ export async function isAppRunning(appName, projectPath) {
380
+ const pidFile = getAppPidFilePath(appName, projectPath);
381
+ try {
382
+ const pid = await fs.readFile(pidFile, "utf-8");
383
+ const pidNum = parseInt(pid.trim());
384
+ if (isNaN(pidNum)) {
385
+ await fs.remove(pidFile);
386
+ return { running: false };
387
+ }
388
+ try {
389
+ // Signal 0 checks if process exists without killing it
390
+ process.kill(pidNum, 0);
391
+ return { running: true, pid: pidNum };
392
+ }
393
+ catch {
394
+ // Process not running, clean up stale PID file
395
+ await fs.remove(pidFile);
396
+ return { running: false };
397
+ }
398
+ }
399
+ catch {
400
+ return { running: false };
401
+ }
402
+ }
403
+ /**
404
+ * Find all app PID files in a project directory
405
+ *
406
+ * @param projectPath - Project root path
407
+ * @returns Array of app names that have PID files
408
+ */
409
+ export async function findAppPidFiles(projectPath) {
410
+ const files = await fs.readdir(projectPath);
411
+ const pidFiles = files.filter((f) => f.startsWith(".cortex-app-") && f.endsWith(".pid"));
412
+ return pidFiles.map((pidFile) => {
413
+ // Extract app name from ".cortex-app-{name}.pid"
414
+ const name = pidFile.replace(/^\.cortex-app-/, "").replace(/\.pid$/, "");
415
+ return { name, pidFile: path.join(projectPath, pidFile) };
416
+ });
417
+ }
418
+ /**
419
+ * Find process listening on a specific port
420
+ *
421
+ * @param port - Port number to check
422
+ * @returns PID of the process or null if none found
423
+ */
424
+ export async function findProcessByPort(port) {
425
+ try {
426
+ const { execSync } = await import("child_process");
427
+ // Use lsof on macOS/Linux to find process by port
428
+ const result = execSync(`lsof -i :${port} -t 2>/dev/null`, {
429
+ encoding: "utf-8",
430
+ }).trim();
431
+ if (result) {
432
+ const pid = parseInt(result.split("\n")[0], 10);
433
+ return isNaN(pid) ? null : pid;
434
+ }
435
+ return null;
436
+ }
437
+ catch {
438
+ // lsof returns non-zero if no process found
439
+ return null;
440
+ }
441
+ }
442
+ /**
443
+ * Stop a process by port number
444
+ *
445
+ * @param port - Port number
446
+ * @param signal - Signal to send (default: SIGTERM)
447
+ * @returns True if process was stopped, false otherwise
448
+ */
449
+ export async function stopProcessByPort(port, signal = "SIGTERM") {
450
+ const pid = await findProcessByPort(port);
451
+ if (!pid) {
452
+ return false;
453
+ }
454
+ try {
455
+ process.kill(pid, signal);
456
+ return true;
457
+ }
458
+ catch {
459
+ return false;
460
+ }
461
+ }
462
+ //# sourceMappingURL=quickstart-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickstart-setup.js","sourceRoot":"","sources":["../../../src/utils/init/quickstart-setup.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ export interface WizardConfig {
11
11
  convexSetupType: "new" | "existing" | "local";
12
12
  convexUrl?: string;
13
13
  deployKey?: string;
14
+ /** Convex team slug (from login status) */
15
+ teamSlug?: string;
16
+ /** Sanitized project name for Convex (max 60 chars) */
17
+ sanitizedProjectName?: string;
14
18
  graphEnabled: boolean;
15
19
  graphType?: "neo4j" | "memgraph" | "skip";
16
20
  graphUri?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/init/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,KAAK,GAAG,UAAU,CAAC;IACrC,eAAe,EAAE,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/init/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,KAAK,GAAG,UAAU,CAAC;IACrC,eAAe,EAAE,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE;QACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,eAAe,EAAE,OAAO,CAAC;QACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IACF,UAAU,EAAE;QACV,MAAM,EAAE,WAAW,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema-sync.d.ts","sourceRoot":"","sources":["../../src/utils/schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAgGD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,gBAAgB,CAAC,CAwE3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE,OAAO,GACd,IAAI,CAwCN;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CASD"}
1
+ {"version":3,"file":"schema-sync.d.ts","sourceRoot":"","sources":["../../src/utils/schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA4FD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,gBAAgB,CAAC,CA+E3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE,OAAO,GACd,IAAI,CAwCN;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CASD"}