@cortexmemory/cli 0.1.0 → 0.22.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 +8 -0
- package/dist/commands/conversations.d.ts +1 -1
- package/dist/commands/conversations.d.ts.map +1 -1
- package/dist/commands/conversations.js +58 -28
- package/dist/commands/conversations.js.map +1 -1
- package/dist/commands/convex.d.ts +1 -1
- package/dist/commands/convex.d.ts.map +1 -1
- package/dist/commands/convex.js +237 -64
- package/dist/commands/convex.js.map +1 -1
- package/dist/commands/db.d.ts +1 -1
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +511 -113
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/dev.d.ts +8 -8
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +734 -513
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/facts.d.ts +1 -1
- package/dist/commands/facts.d.ts.map +1 -1
- package/dist/commands/facts.js +79 -49
- package/dist/commands/facts.js.map +1 -1
- package/dist/commands/init.d.ts +28 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +895 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/memory.d.ts +1 -1
- package/dist/commands/memory.d.ts.map +1 -1
- package/dist/commands/memory.js +84 -48
- package/dist/commands/memory.js.map +1 -1
- package/dist/commands/setup.d.ts +4 -5
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +613 -265
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/spaces.d.ts +1 -1
- package/dist/commands/spaces.d.ts.map +1 -1
- package/dist/commands/spaces.js +100 -43
- package/dist/commands/spaces.js.map +1 -1
- package/dist/commands/status.d.ts +17 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +314 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/users.d.ts +1 -1
- package/dist/commands/users.d.ts.map +1 -1
- package/dist/commands/users.js +152 -45
- package/dist/commands/users.js.map +1 -1
- package/dist/index.js +61 -19
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/__tests__/client.test.d.ts +5 -0
- package/dist/utils/__tests__/client.test.d.ts.map +1 -0
- package/dist/utils/__tests__/client.test.js +88 -0
- package/dist/utils/__tests__/client.test.js.map +1 -0
- package/dist/utils/__tests__/env-file.test.d.ts +7 -0
- package/dist/utils/__tests__/env-file.test.d.ts.map +1 -0
- package/dist/utils/__tests__/env-file.test.js +196 -0
- package/dist/utils/__tests__/env-file.test.js.map +1 -0
- package/dist/utils/__tests__/shell.test.d.ts +7 -0
- package/dist/utils/__tests__/shell.test.d.ts.map +1 -0
- package/dist/utils/__tests__/shell.test.js +89 -0
- package/dist/utils/__tests__/shell.test.js.map +1 -0
- package/dist/utils/client.d.ts +1 -0
- package/dist/utils/client.d.ts.map +1 -1
- package/dist/utils/client.js +7 -1
- package/dist/utils/client.js.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +12 -39
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/deployment-selector.d.ts +50 -0
- package/dist/utils/deployment-selector.d.ts.map +1 -0
- package/dist/utils/deployment-selector.js +129 -0
- package/dist/utils/deployment-selector.js.map +1 -0
- package/dist/utils/env-file.d.ts +48 -0
- package/dist/utils/env-file.d.ts.map +1 -0
- package/dist/utils/env-file.js +152 -0
- package/dist/utils/env-file.js.map +1 -0
- package/dist/utils/formatting.d.ts.map +1 -1
- package/dist/utils/formatting.js +4 -0
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/init/convex-setup.d.ts +30 -0
- package/dist/utils/init/convex-setup.d.ts.map +1 -0
- package/dist/utils/init/convex-setup.js +225 -0
- package/dist/utils/init/convex-setup.js.map +1 -0
- package/dist/utils/init/env-generator.d.ts +32 -0
- package/dist/utils/init/env-generator.d.ts.map +1 -0
- package/dist/utils/init/env-generator.js +210 -0
- package/dist/utils/init/env-generator.js.map +1 -0
- package/dist/utils/init/file-operations.d.ts +22 -0
- package/dist/utils/init/file-operations.d.ts.map +1 -0
- package/dist/utils/init/file-operations.js +211 -0
- package/dist/utils/init/file-operations.js.map +1 -0
- package/dist/utils/init/graph-setup.d.ts +35 -0
- package/dist/utils/init/graph-setup.d.ts.map +1 -0
- package/dist/utils/init/graph-setup.js +413 -0
- package/dist/utils/init/graph-setup.js.map +1 -0
- package/dist/utils/init/index.d.ts +11 -0
- package/dist/utils/init/index.d.ts.map +1 -0
- package/dist/utils/init/index.js +11 -0
- package/dist/utils/init/index.js.map +1 -0
- package/dist/utils/init/types.d.ts +73 -0
- package/dist/utils/init/types.d.ts.map +1 -0
- package/dist/utils/init/types.js +5 -0
- package/dist/utils/init/types.js.map +1 -0
- package/dist/utils/shell.d.ts +60 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +188 -0
- package/dist/utils/shell.js.map +1 -0
- package/package.json +30 -19
- package/templates/basic/README.md +105 -0
- package/templates/basic/dev-runner.mjs +215 -0
- package/templates/basic/package-lock.json +1263 -0
- package/templates/basic/package.json +22 -0
- package/templates/basic/src/index.ts +85 -0
- package/templates/basic/tsconfig.json +17 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convex setup handlers
|
|
3
|
+
*
|
|
4
|
+
* Handles setting up Convex for the init wizard.
|
|
5
|
+
*/
|
|
6
|
+
import fs from "fs-extra";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import prompts from "prompts";
|
|
9
|
+
import { execCommandLive, commandExists } from "../shell.js";
|
|
10
|
+
import pc from "picocolors";
|
|
11
|
+
import ora from "ora";
|
|
12
|
+
// Note: execCommand is not used in this file anymore but keeping ora for setupNewConvex/setupExistingConvex
|
|
13
|
+
/**
|
|
14
|
+
* Setup new Convex database (cloud)
|
|
15
|
+
*/
|
|
16
|
+
export async function setupNewConvex(projectPath) {
|
|
17
|
+
console.log(pc.cyan("\n Setting up new Convex database..."));
|
|
18
|
+
// Clean up any existing Convex state that might interfere
|
|
19
|
+
// This prevents "DeploymentNotFound" errors from old cached state
|
|
20
|
+
const convexStatePath = path.join(projectPath, ".convex");
|
|
21
|
+
if (await fs.pathExists(convexStatePath)) {
|
|
22
|
+
console.log(pc.dim(" Cleaning up old Convex state..."));
|
|
23
|
+
await fs.remove(convexStatePath);
|
|
24
|
+
}
|
|
25
|
+
// Also clean up .env.local which may have old CONVEX_DEPLOYMENT reference
|
|
26
|
+
const envLocalPath = path.join(projectPath, ".env.local");
|
|
27
|
+
if (await fs.pathExists(envLocalPath)) {
|
|
28
|
+
console.log(pc.dim(" Removing old .env.local (will be recreated)..."));
|
|
29
|
+
await fs.remove(envLocalPath);
|
|
30
|
+
}
|
|
31
|
+
// Check if convex CLI is available
|
|
32
|
+
const hasConvex = await commandExists("convex");
|
|
33
|
+
if (!hasConvex) {
|
|
34
|
+
console.log(pc.yellow(" Convex CLI not found globally, will use npx"));
|
|
35
|
+
}
|
|
36
|
+
const spinner = ora("Initializing Convex...").start();
|
|
37
|
+
try {
|
|
38
|
+
// Run convex dev --once --until-success
|
|
39
|
+
spinner.stop();
|
|
40
|
+
console.log(pc.dim(" Running Convex setup (this may prompt for login)..."));
|
|
41
|
+
console.log(pc.dim(" Follow the prompts to create your Convex project\n"));
|
|
42
|
+
const command = hasConvex ? "convex" : "npx";
|
|
43
|
+
const args = hasConvex
|
|
44
|
+
? ["dev", "--once", "--until-success"]
|
|
45
|
+
: ["convex", "dev", "--once", "--until-success"];
|
|
46
|
+
// Override any inherited Convex env vars that might interfere with fresh setup
|
|
47
|
+
// (e.g., from parent directory's .env.local being injected by dotenv)
|
|
48
|
+
// Setting to empty string effectively clears them for the child process
|
|
49
|
+
const cleanConvexEnv = {
|
|
50
|
+
CONVEX_URL: "",
|
|
51
|
+
CONVEX_DEPLOYMENT: "",
|
|
52
|
+
CONVEX_DEPLOY_KEY: "",
|
|
53
|
+
};
|
|
54
|
+
const exitCode = await execCommandLive(command, args, {
|
|
55
|
+
cwd: projectPath,
|
|
56
|
+
env: cleanConvexEnv,
|
|
57
|
+
});
|
|
58
|
+
if (exitCode !== 0) {
|
|
59
|
+
throw new Error(`Convex setup failed with exit code ${exitCode}`);
|
|
60
|
+
}
|
|
61
|
+
// Read the generated .env.local to get CONVEX_URL
|
|
62
|
+
const envLocalPath = path.join(projectPath, ".env.local");
|
|
63
|
+
let convexUrl = "";
|
|
64
|
+
let deployKey = "";
|
|
65
|
+
try {
|
|
66
|
+
const envContent = await fs.readFile(envLocalPath, "utf-8");
|
|
67
|
+
const urlMatch = envContent.match(/CONVEX_URL=(.+)/);
|
|
68
|
+
const keyMatch = envContent.match(/CONVEX_DEPLOY_KEY=(.+)/);
|
|
69
|
+
if (urlMatch) {
|
|
70
|
+
convexUrl = urlMatch[1].trim();
|
|
71
|
+
}
|
|
72
|
+
if (keyMatch) {
|
|
73
|
+
deployKey = keyMatch[1].trim();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const err = error;
|
|
78
|
+
if (err.code !== "ENOENT") {
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (!convexUrl) {
|
|
83
|
+
// Fallback: prompt user for URL
|
|
84
|
+
const response = await prompts({
|
|
85
|
+
type: "text",
|
|
86
|
+
name: "url",
|
|
87
|
+
message: "Enter your Convex deployment URL:",
|
|
88
|
+
validate: (value) => value.includes("convex.cloud") || value.includes("convex.site")
|
|
89
|
+
? true
|
|
90
|
+
: "Please enter a valid Convex URL",
|
|
91
|
+
});
|
|
92
|
+
convexUrl = response.url;
|
|
93
|
+
}
|
|
94
|
+
console.log(pc.green("\n Convex database configured"));
|
|
95
|
+
console.log(pc.dim(` URL: ${convexUrl}`));
|
|
96
|
+
return {
|
|
97
|
+
convexUrl,
|
|
98
|
+
deployKey: deployKey || undefined,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
spinner.stop();
|
|
103
|
+
throw new Error(`Failed to setup Convex: ${error}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Setup with existing Convex database
|
|
108
|
+
*/
|
|
109
|
+
export async function setupExistingConvex() {
|
|
110
|
+
console.log(pc.cyan("\n Configuring existing Convex database..."));
|
|
111
|
+
const response = await prompts([
|
|
112
|
+
{
|
|
113
|
+
type: "text",
|
|
114
|
+
name: "convexUrl",
|
|
115
|
+
message: "Enter your Convex deployment URL:",
|
|
116
|
+
validate: (value) => {
|
|
117
|
+
if (!value)
|
|
118
|
+
return "URL is required";
|
|
119
|
+
if (!value.startsWith("http"))
|
|
120
|
+
return "Please enter a valid URL";
|
|
121
|
+
return true;
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
type: "text",
|
|
126
|
+
name: "deployKey",
|
|
127
|
+
message: "Enter your Convex deploy key (optional, press Enter to skip):",
|
|
128
|
+
},
|
|
129
|
+
]);
|
|
130
|
+
if (!response.convexUrl) {
|
|
131
|
+
throw new Error("Convex URL is required");
|
|
132
|
+
}
|
|
133
|
+
// Validate connection
|
|
134
|
+
const spinner = ora("Validating Convex connection...").start();
|
|
135
|
+
try {
|
|
136
|
+
const isValid = response.convexUrl.includes("convex.cloud") ||
|
|
137
|
+
response.convexUrl.includes("convex.site") ||
|
|
138
|
+
response.convexUrl.includes("localhost");
|
|
139
|
+
if (!isValid) {
|
|
140
|
+
spinner.fail("Invalid Convex URL format");
|
|
141
|
+
throw new Error("Invalid Convex URL");
|
|
142
|
+
}
|
|
143
|
+
spinner.succeed("Convex connection validated");
|
|
144
|
+
console.log(pc.dim(` URL: ${response.convexUrl}`));
|
|
145
|
+
return {
|
|
146
|
+
convexUrl: response.convexUrl,
|
|
147
|
+
deployKey: response.deployKey || undefined,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
spinner.fail("Failed to validate Convex connection");
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Setup local Convex for development
|
|
157
|
+
*
|
|
158
|
+
* Note: Convex's --local flag requires a cloud project to be set up first.
|
|
159
|
+
* So we create the cloud project during init, then the user can run
|
|
160
|
+
* `cortex start --local` or `convex dev --local` for local development.
|
|
161
|
+
*/
|
|
162
|
+
export async function setupLocalConvex() {
|
|
163
|
+
console.log(pc.cyan("\n Setting up Convex for local development..."));
|
|
164
|
+
console.log(pc.yellow(" Note: A Convex cloud project will be created first"));
|
|
165
|
+
console.log(pc.dim(" After setup, run 'cortex start --local' for local development"));
|
|
166
|
+
console.log(pc.dim(" Local mode: faster iteration, but no vector search\n"));
|
|
167
|
+
// Return empty config - the actual URL will come from convex dev
|
|
168
|
+
return {
|
|
169
|
+
convexUrl: "", // Will be filled in after convex dev runs
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Deploy Cortex backend functions to Convex
|
|
174
|
+
*
|
|
175
|
+
* Note: We don't use --local flag during init because Convex requires
|
|
176
|
+
* a cloud project to exist first. Users can run --local after setup.
|
|
177
|
+
*/
|
|
178
|
+
export async function deployToConvex(projectPath, config, _isLocal = false) {
|
|
179
|
+
console.log(pc.cyan("\n Deploying Cortex backend to Convex..."));
|
|
180
|
+
console.log(pc.dim(" This may prompt for configuration on first run\n"));
|
|
181
|
+
try {
|
|
182
|
+
// Check if convex CLI is available
|
|
183
|
+
const hasConvex = await commandExists("convex");
|
|
184
|
+
// Build command and args based on whether convex is installed globally
|
|
185
|
+
let command;
|
|
186
|
+
let args;
|
|
187
|
+
if (hasConvex) {
|
|
188
|
+
command = "convex";
|
|
189
|
+
args = ["dev", "--once", "--until-success"];
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
command = "npx";
|
|
193
|
+
args = ["convex", "dev", "--once", "--until-success"];
|
|
194
|
+
}
|
|
195
|
+
// Note: We don't add --local here because:
|
|
196
|
+
// 1. Convex requires a cloud project to exist first
|
|
197
|
+
// 2. --local on a fresh project causes "DeploymentNotFound" errors
|
|
198
|
+
// Users can run `cortex start --local` after setup completes
|
|
199
|
+
// Set environment for deployment (only if URL is provided)
|
|
200
|
+
const env = {
|
|
201
|
+
...process.env,
|
|
202
|
+
};
|
|
203
|
+
if (config.convexUrl) {
|
|
204
|
+
env.CONVEX_URL = config.convexUrl;
|
|
205
|
+
}
|
|
206
|
+
if (config.deployKey) {
|
|
207
|
+
env.CONVEX_DEPLOY_KEY = config.deployKey;
|
|
208
|
+
}
|
|
209
|
+
// Run convex dev --once with live output (allows interactive prompts)
|
|
210
|
+
const exitCode = await execCommandLive(command, args, {
|
|
211
|
+
cwd: projectPath,
|
|
212
|
+
env,
|
|
213
|
+
});
|
|
214
|
+
if (exitCode !== 0) {
|
|
215
|
+
throw new Error("Failed to deploy Cortex backend");
|
|
216
|
+
}
|
|
217
|
+
console.log(pc.green("\n Backend deployed to Convex"));
|
|
218
|
+
console.log(pc.dim(" All functions and schema are deployed"));
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
console.error(pc.red("\n Deployment failed"));
|
|
222
|
+
throw error;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=convex-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convex-setup.js","sourceRoot":"","sources":["../../../src/utils/init/convex-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment file generator
|
|
3
|
+
*
|
|
4
|
+
* Generates .env.local and docker-compose files for init wizard.
|
|
5
|
+
*/
|
|
6
|
+
import type { WizardConfig } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Generate .env.local file content based on wizard configuration
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateEnvFile(config: WizardConfig): string;
|
|
11
|
+
/**
|
|
12
|
+
* Write .env.local file to project
|
|
13
|
+
*
|
|
14
|
+
* IMPORTANT: If Convex CLI has already created .env.local (with CONVEX_URL,
|
|
15
|
+
* CONVEX_DEPLOYMENT, etc.), we preserve those lines and only add our
|
|
16
|
+
* additional configuration (graph DB, OpenAI, etc.)
|
|
17
|
+
*/
|
|
18
|
+
export declare function createEnvFile(projectPath: string, config: WizardConfig): Promise<void>;
|
|
19
|
+
/**
|
|
20
|
+
* Append graph database configuration to existing .env.local
|
|
21
|
+
* Called after Convex deployment which may have modified .env.local
|
|
22
|
+
*/
|
|
23
|
+
export declare function appendGraphEnvVars(projectPath: string, config: {
|
|
24
|
+
graphUri: string;
|
|
25
|
+
graphUsername: string;
|
|
26
|
+
graphPassword: string;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Create docker-compose.yml for local graph database
|
|
30
|
+
*/
|
|
31
|
+
export declare function createGraphDockerCompose(projectPath: string, graphType: "neo4j" | "memgraph"): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=env-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-generator.d.ts","sourceRoot":"","sources":["../../../src/utils/init/env-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CA+C5D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAgEf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,OAAO,GAAG,UAAU,GAC9B,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment file generator
|
|
3
|
+
*
|
|
4
|
+
* Generates .env.local and docker-compose files for init wizard.
|
|
5
|
+
*/
|
|
6
|
+
import fs from "fs-extra";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import pc from "picocolors";
|
|
9
|
+
/**
|
|
10
|
+
* Generate .env.local file content based on wizard configuration
|
|
11
|
+
*/
|
|
12
|
+
export function generateEnvFile(config) {
|
|
13
|
+
let env = `# Cortex Memory SDK Configuration
|
|
14
|
+
# Generated by cortex init on ${new Date().toISOString()}
|
|
15
|
+
|
|
16
|
+
# =============================================================================
|
|
17
|
+
# Convex Configuration
|
|
18
|
+
# =============================================================================
|
|
19
|
+
`;
|
|
20
|
+
// Add Convex configuration based on setup type
|
|
21
|
+
if (config.convexSetupType === "local") {
|
|
22
|
+
env += `# Local Development
|
|
23
|
+
LOCAL_CONVEX_URL=http://127.0.0.1:3210
|
|
24
|
+
LOCAL_CONVEX_DEPLOYMENT=anonymous:anonymous-${config.projectName}
|
|
25
|
+
CONVEX_URL=http://127.0.0.1:3210
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
env += `# Convex Cloud
|
|
30
|
+
CONVEX_URL=${config.convexUrl || ""}
|
|
31
|
+
`;
|
|
32
|
+
if (config.deployKey) {
|
|
33
|
+
env += `CONVEX_DEPLOY_KEY=${config.deployKey}
|
|
34
|
+
`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Add graph database configuration if enabled
|
|
38
|
+
if (config.graphEnabled && config.graphType !== "skip") {
|
|
39
|
+
env += `
|
|
40
|
+
# =============================================================================
|
|
41
|
+
# Graph Database Configuration (Optional)
|
|
42
|
+
# =============================================================================
|
|
43
|
+
NEO4J_URI=${config.graphUri || "bolt://localhost:7687"}
|
|
44
|
+
NEO4J_USERNAME=${config.graphUsername || "neo4j"}
|
|
45
|
+
NEO4J_PASSWORD=${config.graphPassword || "cortex-password"}
|
|
46
|
+
`;
|
|
47
|
+
}
|
|
48
|
+
env += `
|
|
49
|
+
# =============================================================================
|
|
50
|
+
# OpenAI API Key (Optional - for embeddings)
|
|
51
|
+
# =============================================================================
|
|
52
|
+
# OPENAI_API_KEY=sk-...
|
|
53
|
+
|
|
54
|
+
`;
|
|
55
|
+
return env;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Write .env.local file to project
|
|
59
|
+
*
|
|
60
|
+
* IMPORTANT: If Convex CLI has already created .env.local (with CONVEX_URL,
|
|
61
|
+
* CONVEX_DEPLOYMENT, etc.), we preserve those lines and only add our
|
|
62
|
+
* additional configuration (graph DB, OpenAI, etc.)
|
|
63
|
+
*/
|
|
64
|
+
export async function createEnvFile(projectPath, config) {
|
|
65
|
+
const envPath = path.join(projectPath, ".env.local");
|
|
66
|
+
// Check if .env.local already exists (likely created by convex dev)
|
|
67
|
+
let existingContent = "";
|
|
68
|
+
let hasExistingConvexConfig = false;
|
|
69
|
+
try {
|
|
70
|
+
existingContent = await fs.readFile(envPath, "utf-8");
|
|
71
|
+
// Check if Convex has already configured this file
|
|
72
|
+
hasExistingConvexConfig = existingContent.includes("CONVEX_URL=") ||
|
|
73
|
+
existingContent.includes("CONVEX_DEPLOYMENT=");
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// File doesn't exist, will create new
|
|
77
|
+
}
|
|
78
|
+
if (hasExistingConvexConfig) {
|
|
79
|
+
// Preserve the Convex-generated content, just add our header and optional extras
|
|
80
|
+
console.log(pc.dim(" Preserving Convex configuration in .env.local"));
|
|
81
|
+
// Add header if not present
|
|
82
|
+
let finalContent = existingContent;
|
|
83
|
+
if (!existingContent.includes("# Cortex Memory SDK Configuration")) {
|
|
84
|
+
finalContent = `# Cortex Memory SDK Configuration
|
|
85
|
+
# Generated by cortex init on ${new Date().toISOString()}
|
|
86
|
+
|
|
87
|
+
${existingContent}`;
|
|
88
|
+
}
|
|
89
|
+
// Add OpenAI placeholder if not present
|
|
90
|
+
if (!existingContent.includes("OPENAI_API_KEY")) {
|
|
91
|
+
finalContent += `
|
|
92
|
+
# =============================================================================
|
|
93
|
+
# OpenAI API Key (Optional - for embeddings)
|
|
94
|
+
# =============================================================================
|
|
95
|
+
# OPENAI_API_KEY=sk-...
|
|
96
|
+
`;
|
|
97
|
+
}
|
|
98
|
+
await fs.writeFile(envPath, finalContent);
|
|
99
|
+
console.log(pc.green(" Updated .env.local"));
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// No existing Convex config, create fresh file
|
|
103
|
+
const envContent = generateEnvFile(config);
|
|
104
|
+
// Backup any existing file first
|
|
105
|
+
try {
|
|
106
|
+
const backupPath = path.join(projectPath, `.env.local.backup.${Date.now()}`);
|
|
107
|
+
await fs.move(envPath, backupPath);
|
|
108
|
+
console.log(pc.yellow(" Existing .env.local backed up"));
|
|
109
|
+
console.log(pc.dim(` Backed up to ${path.basename(backupPath)}`));
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
const err = error;
|
|
113
|
+
if (err.code !== "ENOENT") {
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
await fs.writeFile(envPath, envContent);
|
|
118
|
+
console.log(pc.green(" Created .env.local"));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Append graph database configuration to existing .env.local
|
|
123
|
+
* Called after Convex deployment which may have modified .env.local
|
|
124
|
+
*/
|
|
125
|
+
export async function appendGraphEnvVars(projectPath, config) {
|
|
126
|
+
const envPath = path.join(projectPath, ".env.local");
|
|
127
|
+
const graphEnvVars = `
|
|
128
|
+
# =============================================================================
|
|
129
|
+
# Graph Database Configuration
|
|
130
|
+
# =============================================================================
|
|
131
|
+
NEO4J_URI=${config.graphUri}
|
|
132
|
+
NEO4J_USERNAME=${config.graphUsername}
|
|
133
|
+
NEO4J_PASSWORD=${config.graphPassword}
|
|
134
|
+
`;
|
|
135
|
+
try {
|
|
136
|
+
// Read existing content
|
|
137
|
+
let existingContent = "";
|
|
138
|
+
try {
|
|
139
|
+
existingContent = await fs.readFile(envPath, "utf-8");
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
// File doesn't exist, will create new
|
|
143
|
+
}
|
|
144
|
+
// Check if graph vars already exist
|
|
145
|
+
if (existingContent.includes("NEO4J_URI=")) {
|
|
146
|
+
console.log(pc.dim(" Graph env vars already present in .env.local"));
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Append graph vars
|
|
150
|
+
await fs.writeFile(envPath, existingContent + graphEnvVars);
|
|
151
|
+
console.log(pc.green(" Added graph database env vars to .env.local"));
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
console.warn(pc.yellow(" Warning: Could not update .env.local with graph config"));
|
|
155
|
+
console.log(pc.dim(` Please add manually:\n${graphEnvVars}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create docker-compose.yml for local graph database
|
|
160
|
+
*/
|
|
161
|
+
export async function createGraphDockerCompose(projectPath, graphType) {
|
|
162
|
+
const dockerComposePath = path.join(projectPath, "docker-compose.graph.yml");
|
|
163
|
+
let dockerCompose = "";
|
|
164
|
+
if (graphType === "neo4j") {
|
|
165
|
+
dockerCompose = `services:
|
|
166
|
+
neo4j:
|
|
167
|
+
image: neo4j:5-community
|
|
168
|
+
container_name: cortex-neo4j
|
|
169
|
+
ports:
|
|
170
|
+
- "7474:7474" # HTTP
|
|
171
|
+
- "7687:7687" # Bolt
|
|
172
|
+
environment:
|
|
173
|
+
- NEO4J_AUTH=neo4j/cortex-password
|
|
174
|
+
- NEO4J_PLUGINS=["apoc"]
|
|
175
|
+
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
|
|
176
|
+
volumes:
|
|
177
|
+
- neo4j_data:/data
|
|
178
|
+
- neo4j_logs:/logs
|
|
179
|
+
restart: unless-stopped
|
|
180
|
+
|
|
181
|
+
volumes:
|
|
182
|
+
neo4j_data:
|
|
183
|
+
neo4j_logs:
|
|
184
|
+
`;
|
|
185
|
+
}
|
|
186
|
+
else if (graphType === "memgraph") {
|
|
187
|
+
dockerCompose = `services:
|
|
188
|
+
memgraph:
|
|
189
|
+
image: memgraph/memgraph-platform:latest
|
|
190
|
+
container_name: cortex-memgraph
|
|
191
|
+
ports:
|
|
192
|
+
- "7687:7687" # Bolt
|
|
193
|
+
- "3000:3000" # Memgraph Lab
|
|
194
|
+
- "7444:7444" # Memgraph Lab secure
|
|
195
|
+
environment:
|
|
196
|
+
- MEMGRAPH="--log-level=TRACE"
|
|
197
|
+
volumes:
|
|
198
|
+
- memgraph_data:/var/lib/memgraph
|
|
199
|
+
- memgraph_logs:/var/log/memgraph
|
|
200
|
+
restart: unless-stopped
|
|
201
|
+
|
|
202
|
+
volumes:
|
|
203
|
+
memgraph_data:
|
|
204
|
+
memgraph_logs:
|
|
205
|
+
`;
|
|
206
|
+
}
|
|
207
|
+
await fs.writeFile(dockerComposePath, dockerCompose);
|
|
208
|
+
console.log(pc.dim(` Created docker-compose.graph.yml for ${graphType}`));
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=env-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-generator.js","sourceRoot":"","sources":["../../../src/utils/init/env-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File operations for init wizard
|
|
3
|
+
*
|
|
4
|
+
* Handles copying templates and deploying Cortex backend functions.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Copy Cortex backend functions from SDK to user project
|
|
8
|
+
*/
|
|
9
|
+
export declare function deployCortexBackend(projectPath: string): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Create or update convex.json configuration
|
|
12
|
+
*/
|
|
13
|
+
export declare function createConvexJson(projectPath: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Copy project template files
|
|
16
|
+
*/
|
|
17
|
+
export declare function copyTemplate(templateName: string, targetPath: string, projectName: string, convexVersion?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Create .gitignore if it doesn't exist
|
|
20
|
+
*/
|
|
21
|
+
export declare function ensureGitignore(projectPath: string): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=file-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-operations.d.ts","sourceRoot":"","sources":["../../../src/utils/init/file-operations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF5E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CA0Gf;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6CxE"}
|