@cortexmemory/cli 0.26.2 → 0.27.3
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/dist/commands/convex.js +1 -1
- package/dist/commands/convex.js.map +1 -1
- package/dist/commands/deploy.d.ts +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +771 -144
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +210 -36
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +273 -43
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +102 -46
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +94 -7
- package/dist/commands/status.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/types.d.ts +23 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/app-template-sync.d.ts +95 -0
- package/dist/utils/app-template-sync.d.ts.map +1 -0
- package/dist/utils/app-template-sync.js +425 -0
- package/dist/utils/app-template-sync.js.map +1 -0
- package/dist/utils/config.d.ts +11 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +20 -0
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/deployment-selector.d.ts +21 -0
- package/dist/utils/deployment-selector.d.ts.map +1 -1
- package/dist/utils/deployment-selector.js +32 -0
- package/dist/utils/deployment-selector.js.map +1 -1
- package/dist/utils/init/graph-setup.d.ts.map +1 -1
- package/dist/utils/init/graph-setup.js +25 -2
- package/dist/utils/init/graph-setup.js.map +1 -1
- package/dist/utils/init/quickstart-setup.d.ts +87 -0
- package/dist/utils/init/quickstart-setup.d.ts.map +1 -0
- package/dist/utils/init/quickstart-setup.js +462 -0
- package/dist/utils/init/quickstart-setup.js.map +1 -0
- package/dist/utils/schema-sync.d.ts.map +1 -1
- package/dist/utils/schema-sync.js +27 -21
- package/dist/utils/schema-sync.js.map +1 -1
- package/package.json +3 -2
- package/templates/vercel-ai-quickstart/.env.local.example +45 -0
- package/templates/vercel-ai-quickstart/README.md +280 -0
- package/templates/vercel-ai-quickstart/app/api/auth/check/route.ts +30 -0
- package/templates/vercel-ai-quickstart/app/api/auth/login/route.ts +83 -0
- package/templates/vercel-ai-quickstart/app/api/auth/register/route.ts +94 -0
- package/templates/vercel-ai-quickstart/app/api/auth/setup/route.ts +59 -0
- package/templates/vercel-ai-quickstart/app/api/chat/route.ts +277 -0
- package/templates/vercel-ai-quickstart/app/api/conversations/route.ts +179 -0
- package/templates/vercel-ai-quickstart/app/api/facts/route.ts +39 -0
- package/templates/vercel-ai-quickstart/app/api/health/route.ts +99 -0
- package/templates/vercel-ai-quickstart/app/api/memories/route.ts +37 -0
- package/templates/vercel-ai-quickstart/app/globals.css +275 -0
- package/templates/vercel-ai-quickstart/app/layout.tsx +19 -0
- package/templates/vercel-ai-quickstart/app/page.tsx +216 -0
- package/templates/vercel-ai-quickstart/components/AdminSetup.tsx +139 -0
- package/templates/vercel-ai-quickstart/components/AuthProvider.tsx +283 -0
- package/templates/vercel-ai-quickstart/components/ChatHistorySidebar.tsx +323 -0
- package/templates/vercel-ai-quickstart/components/ChatInterface.tsx +334 -0
- package/templates/vercel-ai-quickstart/components/ConvexClientProvider.tsx +21 -0
- package/templates/vercel-ai-quickstart/components/DataPreview.tsx +57 -0
- package/templates/vercel-ai-quickstart/components/HealthStatus.tsx +214 -0
- package/templates/vercel-ai-quickstart/components/LayerCard.tsx +263 -0
- package/templates/vercel-ai-quickstart/components/LayerFlowDiagram.tsx +195 -0
- package/templates/vercel-ai-quickstart/components/LoginScreen.tsx +202 -0
- package/templates/vercel-ai-quickstart/components/MemorySpaceSwitcher.tsx +93 -0
- package/templates/vercel-ai-quickstart/convex/conversations.ts +67 -0
- package/templates/vercel-ai-quickstart/convex/facts.ts +131 -0
- package/templates/vercel-ai-quickstart/convex/health.ts +15 -0
- package/templates/vercel-ai-quickstart/convex/memories.ts +104 -0
- package/templates/vercel-ai-quickstart/convex/schema.ts +20 -0
- package/templates/vercel-ai-quickstart/convex/users.ts +105 -0
- package/templates/vercel-ai-quickstart/jest.config.js +45 -0
- package/templates/vercel-ai-quickstart/lib/animations.ts +146 -0
- package/templates/vercel-ai-quickstart/lib/cortex.ts +27 -0
- package/templates/vercel-ai-quickstart/lib/layer-tracking.ts +214 -0
- package/templates/vercel-ai-quickstart/lib/password.ts +120 -0
- package/templates/vercel-ai-quickstart/next.config.js +27 -0
- package/templates/vercel-ai-quickstart/package.json +46 -0
- package/templates/vercel-ai-quickstart/postcss.config.js +5 -0
- package/templates/vercel-ai-quickstart/tailwind.config.js +37 -0
- package/templates/vercel-ai-quickstart/tests/helpers/mock-cortex.ts +263 -0
- package/templates/vercel-ai-quickstart/tests/helpers/setup.ts +48 -0
- package/templates/vercel-ai-quickstart/tests/integration/auth.test.ts +455 -0
- package/templates/vercel-ai-quickstart/tests/integration/conversations.test.ts +461 -0
- package/templates/vercel-ai-quickstart/tests/unit/password.test.ts +228 -0
- package/templates/vercel-ai-quickstart/tsconfig.json +33 -0
|
@@ -315,6 +315,18 @@ export async function stopGraphContainers(projectPath) {
|
|
|
315
315
|
if (!fs.existsSync(dockerComposePath)) {
|
|
316
316
|
return false;
|
|
317
317
|
}
|
|
318
|
+
// First check if any containers are actually running
|
|
319
|
+
try {
|
|
320
|
+
const psResult = await execCommand("docker", ["compose", "-f", "docker-compose.graph.yml", "ps", "-q"], { cwd: projectPath, quiet: true });
|
|
321
|
+
// If no output, no containers are running
|
|
322
|
+
if (!psResult.stdout?.trim()) {
|
|
323
|
+
return false;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
// Docker not available or compose file issue
|
|
328
|
+
return false;
|
|
329
|
+
}
|
|
318
330
|
const spinner = ora("Stopping graph database containers...").start();
|
|
319
331
|
try {
|
|
320
332
|
const result = await execCommand("docker", ["compose", "-f", "docker-compose.graph.yml", "down"], { cwd: projectPath, quiet: true });
|
|
@@ -358,8 +370,19 @@ async function getCloudGraphConfig(graphType) {
|
|
|
358
370
|
validate: (value) => {
|
|
359
371
|
if (!value)
|
|
360
372
|
return "URI is required";
|
|
361
|
-
|
|
362
|
-
|
|
373
|
+
// Supported schemes per neo4j-driver:
|
|
374
|
+
// bolt://, bolt+s://, bolt+ssc:// (direct connection)
|
|
375
|
+
// neo4j://, neo4j+s://, neo4j+ssc:// (routing/cluster)
|
|
376
|
+
const validSchemes = [
|
|
377
|
+
"bolt://",
|
|
378
|
+
"bolt+s://",
|
|
379
|
+
"bolt+ssc://",
|
|
380
|
+
"neo4j://",
|
|
381
|
+
"neo4j+s://",
|
|
382
|
+
"neo4j+ssc://",
|
|
383
|
+
];
|
|
384
|
+
if (!validSchemes.some((scheme) => value.startsWith(scheme))) {
|
|
385
|
+
return "URI must start with bolt://, bolt+s://, neo4j://, or neo4j+s:// (use +ssc for self-signed certs)";
|
|
363
386
|
}
|
|
364
387
|
return true;
|
|
365
388
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph-setup.js","sourceRoot":"","sources":["../../../src/utils/init/graph-setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graph-setup.js","sourceRoot":"","sources":["../../../src/utils/init/graph-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|