@cortexmemory/cli 0.1.1 → 0.22.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.
- 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 +57 -27
- 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 +59 -109
- 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 +50 -21
- 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 +64 -27
- 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 +428 -250
- 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 +80 -42
- package/dist/commands/users.js.map +1 -1
- package/dist/index.js +42 -14
- 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/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/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 +25 -20
- 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,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph database setup
|
|
3
|
+
*
|
|
4
|
+
* Handles setting up Neo4j or Memgraph for the init wizard.
|
|
5
|
+
*/
|
|
6
|
+
import fs from "fs-extra";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import prompts from "prompts";
|
|
9
|
+
import ora from "ora";
|
|
10
|
+
import pc from "picocolors";
|
|
11
|
+
import { createGraphDockerCompose } from "./env-generator.js";
|
|
12
|
+
import { execCommand } from "../shell.js";
|
|
13
|
+
/**
|
|
14
|
+
* Check if Docker is installed
|
|
15
|
+
*/
|
|
16
|
+
async function checkDockerInstalled() {
|
|
17
|
+
try {
|
|
18
|
+
const result = await execCommand("docker", ["--version"], { quiet: true });
|
|
19
|
+
return result.code === 0;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Show Docker installation instructions
|
|
27
|
+
*/
|
|
28
|
+
function showDockerInstructions() {
|
|
29
|
+
console.log(pc.yellow("\n Docker Desktop is not installed\n"));
|
|
30
|
+
console.log(pc.bold("To use local graph database, please install Docker Desktop:\n"));
|
|
31
|
+
const platform = process.platform;
|
|
32
|
+
if (platform === "darwin") {
|
|
33
|
+
console.log(pc.cyan("macOS:"));
|
|
34
|
+
console.log(pc.dim(" 1. Download Docker Desktop: https://www.docker.com/products/docker-desktop"));
|
|
35
|
+
console.log(pc.dim(" 2. Install and start Docker Desktop"));
|
|
36
|
+
console.log(pc.dim(" 3. Run the wizard again\n"));
|
|
37
|
+
}
|
|
38
|
+
else if (platform === "win32") {
|
|
39
|
+
console.log(pc.cyan("Windows:"));
|
|
40
|
+
console.log(pc.dim(" 1. Download Docker Desktop: https://www.docker.com/products/docker-desktop"));
|
|
41
|
+
console.log(pc.dim(" 2. Install and start Docker Desktop"));
|
|
42
|
+
console.log(pc.dim(" 3. Run the wizard again\n"));
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.log(pc.cyan("Linux:"));
|
|
46
|
+
console.log(pc.dim(" 1. Install Docker Engine: https://docs.docker.com/engine/install/"));
|
|
47
|
+
console.log(pc.dim(" 2. Install Docker Compose: https://docs.docker.com/compose/install/"));
|
|
48
|
+
console.log(pc.dim(" 3. Run the wizard again\n"));
|
|
49
|
+
}
|
|
50
|
+
console.log(pc.dim('Or choose "Cloud/Existing instance" to use a remote graph database.\n'));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get graph database configuration (prompts only, no file creation)
|
|
54
|
+
*/
|
|
55
|
+
export async function getGraphConfig() {
|
|
56
|
+
console.log(pc.cyan("\n Graph Database Setup"));
|
|
57
|
+
console.log(pc.dim(" Graph databases enable advanced relationship queries"));
|
|
58
|
+
console.log(pc.dim(" Recommended for production use\n"));
|
|
59
|
+
const { enableGraph } = await prompts({
|
|
60
|
+
type: "confirm",
|
|
61
|
+
name: "enableGraph",
|
|
62
|
+
message: "Enable graph database integration?",
|
|
63
|
+
initial: true,
|
|
64
|
+
});
|
|
65
|
+
if (!enableGraph) {
|
|
66
|
+
console.log(pc.dim(" Skipping graph database setup"));
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const { graphType } = await prompts({
|
|
70
|
+
type: "select",
|
|
71
|
+
name: "graphType",
|
|
72
|
+
message: "Which graph database would you like to use?",
|
|
73
|
+
choices: [
|
|
74
|
+
{ title: "Neo4j (Most popular, enterprise-ready)", value: "neo4j" },
|
|
75
|
+
{
|
|
76
|
+
title: "Memgraph (High-performance, analytics-focused)",
|
|
77
|
+
value: "memgraph",
|
|
78
|
+
},
|
|
79
|
+
{ title: "Skip for now", value: "skip" },
|
|
80
|
+
],
|
|
81
|
+
initial: 0,
|
|
82
|
+
});
|
|
83
|
+
if (!graphType || graphType === "skip") {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
// Check for Docker if user wants local deployment
|
|
87
|
+
const hasDocker = await checkDockerInstalled();
|
|
88
|
+
const deploymentChoices = [
|
|
89
|
+
{ title: "Local (Docker Compose)", value: "local", disabled: !hasDocker },
|
|
90
|
+
{ title: "Cloud/Existing instance", value: "cloud" },
|
|
91
|
+
];
|
|
92
|
+
if (!hasDocker) {
|
|
93
|
+
console.log(pc.yellow(" Docker not detected - local deployment unavailable"));
|
|
94
|
+
}
|
|
95
|
+
const { deploymentType } = await prompts({
|
|
96
|
+
type: "select",
|
|
97
|
+
name: "deploymentType",
|
|
98
|
+
message: `How would you like to run ${graphType === "neo4j" ? "Neo4j" : "Memgraph"}?`,
|
|
99
|
+
choices: deploymentChoices,
|
|
100
|
+
initial: hasDocker ? 0 : 1,
|
|
101
|
+
});
|
|
102
|
+
if (!deploymentType) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
// If local was selected but Docker isn't installed, show instructions
|
|
106
|
+
if (deploymentType === "local" && !hasDocker) {
|
|
107
|
+
showDockerInstructions();
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
let config;
|
|
111
|
+
if (deploymentType === "local") {
|
|
112
|
+
config = await getLocalGraphConfig(graphType);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
config = await getCloudGraphConfig(graphType);
|
|
116
|
+
}
|
|
117
|
+
console.log(pc.green("\n Graph database configured"));
|
|
118
|
+
console.log(pc.dim(` Type: ${config.type}`));
|
|
119
|
+
console.log(pc.dim(` URI: ${config.uri}`));
|
|
120
|
+
return config;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create graph database files (docker-compose, etc.)
|
|
124
|
+
*/
|
|
125
|
+
export async function setupGraphFiles(projectPath, config) {
|
|
126
|
+
// Only create docker-compose for local deployments
|
|
127
|
+
if (config.uri.includes("localhost") || config.uri.includes("127.0.0.1")) {
|
|
128
|
+
await createGraphDockerCompose(projectPath, config.type);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get local graph database configuration
|
|
133
|
+
*/
|
|
134
|
+
async function getLocalGraphConfig(graphType) {
|
|
135
|
+
const defaultPort = 7687;
|
|
136
|
+
const defaultPassword = "cortex-password";
|
|
137
|
+
console.log(pc.cyan(`\n Local ${graphType} will be configured with Docker Compose`));
|
|
138
|
+
if (graphType === "neo4j") {
|
|
139
|
+
console.log(pc.dim(" Neo4j Browser: http://localhost:7474"));
|
|
140
|
+
console.log(pc.dim(" Bolt: bolt://localhost:7687\n"));
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.log(pc.dim(" Memgraph Lab: http://localhost:3000"));
|
|
144
|
+
console.log(pc.dim(" Bolt: bolt://localhost:7687\n"));
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
type: graphType,
|
|
148
|
+
uri: `bolt://localhost:${defaultPort}`,
|
|
149
|
+
username: graphType === "neo4j" ? "neo4j" : "memgraph",
|
|
150
|
+
password: defaultPassword,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Start graph database containers
|
|
155
|
+
*/
|
|
156
|
+
export async function startGraphContainers(projectPath, graphType) {
|
|
157
|
+
const dockerComposePath = path.join(projectPath, "docker-compose.graph.yml");
|
|
158
|
+
if (!fs.existsSync(dockerComposePath)) {
|
|
159
|
+
console.log(pc.yellow(" docker-compose.graph.yml not found"));
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
const spinner = ora(`Starting ${graphType} containers...`).start();
|
|
163
|
+
const containerName = `cortex-${graphType}`;
|
|
164
|
+
try {
|
|
165
|
+
// Check if containers are already running
|
|
166
|
+
const checkResult = await execCommand("docker", ["ps", "--filter", `name=${containerName}`, "--format", "{{.Status}}"], { cwd: projectPath, quiet: true });
|
|
167
|
+
if (checkResult.stdout.includes("Up")) {
|
|
168
|
+
spinner.succeed(`${graphType} is already running`);
|
|
169
|
+
showGraphConnectionInfo(graphType);
|
|
170
|
+
return true;
|
|
171
|
+
}
|
|
172
|
+
// Check if container exists but is stopped (from a previous run)
|
|
173
|
+
const existsResult = await execCommand("docker", ["ps", "-a", "--filter", `name=${containerName}`, "--format", "{{.Names}}"], { cwd: projectPath, quiet: true });
|
|
174
|
+
if (existsResult.stdout.includes(containerName)) {
|
|
175
|
+
// Container exists, try to start it first
|
|
176
|
+
spinner.text = `Starting existing ${graphType} container...`;
|
|
177
|
+
const startResult = await execCommand("docker", ["start", containerName], { cwd: projectPath, quiet: true });
|
|
178
|
+
if (startResult.code === 0) {
|
|
179
|
+
await waitForGraphReady(spinner, graphType);
|
|
180
|
+
spinner.succeed(`${graphType} is running`);
|
|
181
|
+
showGraphConnectionInfo(graphType);
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
// If start failed, remove the old container and recreate
|
|
185
|
+
spinner.text = `Removing old ${graphType} container...`;
|
|
186
|
+
await execCommand("docker", ["rm", "-f", containerName], { cwd: projectPath, quiet: true });
|
|
187
|
+
}
|
|
188
|
+
// Pull images first (may take time on first run)
|
|
189
|
+
spinner.text = `Pulling ${graphType} image (this may take a few minutes on first run)...`;
|
|
190
|
+
await execCommand("docker", ["compose", "-f", "docker-compose.graph.yml", "pull"], { cwd: projectPath, quiet: true });
|
|
191
|
+
// Start containers
|
|
192
|
+
spinner.text = `Starting ${graphType} containers...`;
|
|
193
|
+
const result = await execCommand("docker", ["compose", "-f", "docker-compose.graph.yml", "up", "-d"], { cwd: projectPath, quiet: true });
|
|
194
|
+
if (result.code !== 0) {
|
|
195
|
+
spinner.fail(`Failed to start ${graphType}`);
|
|
196
|
+
console.log(pc.dim(` Error: ${result.stderr}`));
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
// Wait for container to be healthy
|
|
200
|
+
await waitForGraphReady(spinner, graphType);
|
|
201
|
+
spinner.succeed(`${graphType} is running`);
|
|
202
|
+
showGraphConnectionInfo(graphType);
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
spinner.fail(`Failed to start ${graphType}`);
|
|
207
|
+
console.log(pc.dim(` Error: ${error}`));
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Wait for graph database to be ready
|
|
213
|
+
*/
|
|
214
|
+
async function waitForGraphReady(spinner, graphType) {
|
|
215
|
+
spinner.text = `Waiting for ${graphType} to be ready...`;
|
|
216
|
+
const maxWait = 60; // seconds
|
|
217
|
+
const startTime = Date.now();
|
|
218
|
+
while ((Date.now() - startTime) / 1000 < maxWait) {
|
|
219
|
+
const healthCheck = await execCommand("docker", ["ps", "--filter", `name=cortex-${graphType}`, "--format", "{{.Status}}"], { quiet: true });
|
|
220
|
+
if (healthCheck.stdout.includes("Up")) {
|
|
221
|
+
// Give it a moment to fully initialize
|
|
222
|
+
await new Promise((resolve) => setTimeout(resolve, 3000));
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Show graph database connection info
|
|
230
|
+
*/
|
|
231
|
+
function showGraphConnectionInfo(graphType) {
|
|
232
|
+
if (graphType === "neo4j") {
|
|
233
|
+
console.log(pc.dim(" Browser: http://localhost:7474"));
|
|
234
|
+
console.log(pc.dim(" Bolt: bolt://localhost:7687"));
|
|
235
|
+
console.log(pc.dim(" Default login: neo4j / cortex-password"));
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
console.log(pc.dim(" Memgraph Lab: http://localhost:3000"));
|
|
239
|
+
console.log(pc.dim(" Bolt: bolt://localhost:7687"));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Stop graph database containers
|
|
244
|
+
*/
|
|
245
|
+
export async function stopGraphContainers(projectPath) {
|
|
246
|
+
const dockerComposePath = path.join(projectPath, "docker-compose.graph.yml");
|
|
247
|
+
if (!fs.existsSync(dockerComposePath)) {
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
const spinner = ora("Stopping graph database containers...").start();
|
|
251
|
+
try {
|
|
252
|
+
const result = await execCommand("docker", ["compose", "-f", "docker-compose.graph.yml", "down"], { cwd: projectPath, quiet: true });
|
|
253
|
+
if (result.code === 0) {
|
|
254
|
+
spinner.succeed("Graph database containers stopped");
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
spinner.fail("Failed to stop containers");
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
spinner.fail("Failed to stop containers");
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Check if graph containers are running
|
|
269
|
+
*/
|
|
270
|
+
export async function isGraphRunning(graphType) {
|
|
271
|
+
try {
|
|
272
|
+
const result = await execCommand("docker", ["ps", "--filter", `name=cortex-${graphType}`, "--format", "{{.Status}}"], { quiet: true });
|
|
273
|
+
return result.stdout.includes("Up");
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get cloud/existing graph database configuration
|
|
281
|
+
*/
|
|
282
|
+
async function getCloudGraphConfig(graphType) {
|
|
283
|
+
console.log(pc.cyan("\n Enter your graph database connection details:"));
|
|
284
|
+
const response = await prompts([
|
|
285
|
+
{
|
|
286
|
+
type: "text",
|
|
287
|
+
name: "uri",
|
|
288
|
+
message: "Database URI (e.g., bolt://localhost:7687):",
|
|
289
|
+
initial: "bolt://localhost:7687",
|
|
290
|
+
validate: (value) => {
|
|
291
|
+
if (!value)
|
|
292
|
+
return "URI is required";
|
|
293
|
+
if (!value.startsWith("bolt://") && !value.startsWith("neo4j://")) {
|
|
294
|
+
return "URI must start with bolt:// or neo4j://";
|
|
295
|
+
}
|
|
296
|
+
return true;
|
|
297
|
+
},
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
type: "text",
|
|
301
|
+
name: "username",
|
|
302
|
+
message: "Username:",
|
|
303
|
+
initial: graphType === "neo4j" ? "neo4j" : "memgraph",
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
type: "password",
|
|
307
|
+
name: "password",
|
|
308
|
+
message: "Password:",
|
|
309
|
+
},
|
|
310
|
+
]);
|
|
311
|
+
if (!response.uri || !response.username || !response.password) {
|
|
312
|
+
throw new Error("All connection details are required");
|
|
313
|
+
}
|
|
314
|
+
console.log(pc.green(" Connection details saved"));
|
|
315
|
+
console.log(pc.dim(" Connection will be tested when you start your app"));
|
|
316
|
+
return {
|
|
317
|
+
type: graphType,
|
|
318
|
+
uri: response.uri,
|
|
319
|
+
username: response.username,
|
|
320
|
+
password: response.password,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Add graph database dependencies to package.json
|
|
325
|
+
*/
|
|
326
|
+
export async function addGraphDependencies(projectPath) {
|
|
327
|
+
const packageJsonPath = path.join(projectPath, "package.json");
|
|
328
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
329
|
+
throw new Error("package.json not found");
|
|
330
|
+
}
|
|
331
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
332
|
+
// Add neo4j-driver if not present
|
|
333
|
+
if (!packageJson.dependencies) {
|
|
334
|
+
packageJson.dependencies = {};
|
|
335
|
+
}
|
|
336
|
+
if (!packageJson.dependencies["neo4j-driver"]) {
|
|
337
|
+
packageJson.dependencies["neo4j-driver"] = "^6.0.0";
|
|
338
|
+
await fs.writeJson(packageJsonPath, packageJson, { spaces: 2 });
|
|
339
|
+
console.log(pc.dim(" Added neo4j-driver to dependencies"));
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Create example graph initialization file
|
|
344
|
+
*/
|
|
345
|
+
export async function createGraphExample(projectPath) {
|
|
346
|
+
const examplePath = path.join(projectPath, "src", "graph-init.example.ts");
|
|
347
|
+
const exampleCode = `/**
|
|
348
|
+
* Graph Database Initialization Example
|
|
349
|
+
*
|
|
350
|
+
* This file shows how to initialize and use the graph database
|
|
351
|
+
* with Cortex Memory SDK.
|
|
352
|
+
*/
|
|
353
|
+
|
|
354
|
+
import { Cortex } from '@cortexmemory/sdk';
|
|
355
|
+
import { CypherGraphAdapter, initializeGraphSchema } from '@cortexmemory/sdk/graph';
|
|
356
|
+
|
|
357
|
+
async function initializeGraph() {
|
|
358
|
+
// 1. Create graph adapter
|
|
359
|
+
const graphAdapter = new CypherGraphAdapter();
|
|
360
|
+
|
|
361
|
+
// 2. Connect to graph database
|
|
362
|
+
await graphAdapter.connect({
|
|
363
|
+
uri: process.env.NEO4J_URI || 'bolt://localhost:7687',
|
|
364
|
+
username: process.env.NEO4J_USERNAME || 'neo4j',
|
|
365
|
+
password: process.env.NEO4J_PASSWORD || 'cortex-password',
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
// 3. Initialize schema (constraints and indexes)
|
|
369
|
+
await initializeGraphSchema(graphAdapter);
|
|
370
|
+
|
|
371
|
+
// 4. Initialize Cortex with graph integration
|
|
372
|
+
const cortex = new Cortex({
|
|
373
|
+
convexUrl: process.env.CONVEX_URL!,
|
|
374
|
+
graph: {
|
|
375
|
+
adapter: graphAdapter,
|
|
376
|
+
orphanCleanup: true,
|
|
377
|
+
},
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
return { cortex, graphAdapter };
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Example usage
|
|
384
|
+
async function main() {
|
|
385
|
+
const { cortex, graphAdapter } = await initializeGraph();
|
|
386
|
+
|
|
387
|
+
try {
|
|
388
|
+
// Use Cortex normally - graph sync happens automatically!
|
|
389
|
+
await cortex.memory.remember({
|
|
390
|
+
memorySpaceId: 'my-agent',
|
|
391
|
+
conversationId: 'conv-1',
|
|
392
|
+
userMessage: 'Hello, Cortex with graph!',
|
|
393
|
+
agentResponse: 'Ready to remember with enhanced graph capabilities!',
|
|
394
|
+
userId: 'user-1',
|
|
395
|
+
userName: 'User',
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
console.log('Memory stored with graph enrichment!');
|
|
399
|
+
} finally {
|
|
400
|
+
// Cleanup
|
|
401
|
+
cortex.close();
|
|
402
|
+
await graphAdapter.disconnect();
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// Uncomment to run:
|
|
407
|
+
// main().catch(console.error);
|
|
408
|
+
`;
|
|
409
|
+
await fs.ensureDir(path.dirname(examplePath));
|
|
410
|
+
await fs.writeFile(examplePath, exampleCode);
|
|
411
|
+
console.log(pc.dim(` Created example: ${path.relative(projectPath, examplePath)}`));
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=graph-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-setup.js","sourceRoot":"","sources":["../../../src/utils/init/graph-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init utilities index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all init-related utilities for convenience.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./types.js";
|
|
7
|
+
export * from "./file-operations.js";
|
|
8
|
+
export * from "./env-generator.js";
|
|
9
|
+
export * from "./convex-setup.js";
|
|
10
|
+
export * from "./graph-setup.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/init/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Init utilities index
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all init-related utilities for convenience.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./types.js";
|
|
7
|
+
export * from "./file-operations.js";
|
|
8
|
+
export * from "./env-generator.js";
|
|
9
|
+
export * from "./convex-setup.js";
|
|
10
|
+
export * from "./graph-setup.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/init/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the init wizard
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Configuration collected by the wizard
|
|
6
|
+
*/
|
|
7
|
+
export interface WizardConfig {
|
|
8
|
+
projectName: string;
|
|
9
|
+
projectPath: string;
|
|
10
|
+
installationType: "new" | "existing";
|
|
11
|
+
convexSetupType: "new" | "existing" | "local";
|
|
12
|
+
convexUrl?: string;
|
|
13
|
+
deployKey?: string;
|
|
14
|
+
graphEnabled: boolean;
|
|
15
|
+
graphType?: "neo4j" | "memgraph" | "skip";
|
|
16
|
+
graphUri?: string;
|
|
17
|
+
graphUsername?: string;
|
|
18
|
+
graphPassword?: string;
|
|
19
|
+
installCLI?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Convex deployment configuration
|
|
23
|
+
*/
|
|
24
|
+
export interface ConvexConfig {
|
|
25
|
+
convexUrl: string;
|
|
26
|
+
deployKey?: string;
|
|
27
|
+
deployment?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Graph database configuration
|
|
31
|
+
*/
|
|
32
|
+
export interface GraphConfig {
|
|
33
|
+
type: "neo4j" | "memgraph";
|
|
34
|
+
uri: string;
|
|
35
|
+
username: string;
|
|
36
|
+
password: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Status of a setup component
|
|
40
|
+
*/
|
|
41
|
+
export type SetupStatus = "ok" | "warning" | "error" | "not_configured";
|
|
42
|
+
/**
|
|
43
|
+
* Status dashboard data
|
|
44
|
+
*/
|
|
45
|
+
export interface StatusDashboard {
|
|
46
|
+
environment: {
|
|
47
|
+
convexUrl: string | null;
|
|
48
|
+
convexDeployKey: boolean;
|
|
49
|
+
neo4jUri: string | null;
|
|
50
|
+
openaiKey: boolean;
|
|
51
|
+
};
|
|
52
|
+
convexBackend: {
|
|
53
|
+
status: SetupStatus;
|
|
54
|
+
message: string;
|
|
55
|
+
functionCount?: number;
|
|
56
|
+
};
|
|
57
|
+
graphDatabase: {
|
|
58
|
+
status: SetupStatus;
|
|
59
|
+
message: string;
|
|
60
|
+
type?: string;
|
|
61
|
+
};
|
|
62
|
+
sdkVersion: {
|
|
63
|
+
current: string | null;
|
|
64
|
+
latest: string | null;
|
|
65
|
+
upToDate: boolean;
|
|
66
|
+
};
|
|
67
|
+
connection: {
|
|
68
|
+
status: SetupStatus;
|
|
69
|
+
latency?: number;
|
|
70
|
+
error?: string;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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;CACtB;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/init/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell Execution Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for executing shell commands safely.
|
|
5
|
+
* Used by init wizard and other CLI commands.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if a command exists in the system
|
|
9
|
+
*/
|
|
10
|
+
export declare function commandExists(command: string): Promise<boolean>;
|
|
11
|
+
/**
|
|
12
|
+
* Execute a shell command and return the output
|
|
13
|
+
*
|
|
14
|
+
* SECURITY: This function only executes commands from an allowlist.
|
|
15
|
+
* User input is NEVER passed as the command parameter.
|
|
16
|
+
*/
|
|
17
|
+
export declare function execCommand(command: string, args: string[], options?: {
|
|
18
|
+
cwd?: string;
|
|
19
|
+
env?: Record<string, string | undefined>;
|
|
20
|
+
quiet?: boolean;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
stdout: string;
|
|
23
|
+
stderr: string;
|
|
24
|
+
code: number;
|
|
25
|
+
}>;
|
|
26
|
+
/**
|
|
27
|
+
* Execute a command with live output (stdio: inherit)
|
|
28
|
+
*
|
|
29
|
+
* SECURITY: This function only executes commands from an allowlist.
|
|
30
|
+
* User input is NEVER passed as the command parameter.
|
|
31
|
+
*/
|
|
32
|
+
export declare function execCommandLive(command: string, args: string[], options?: {
|
|
33
|
+
cwd?: string;
|
|
34
|
+
env?: Record<string, string | undefined>;
|
|
35
|
+
}): Promise<number>;
|
|
36
|
+
/**
|
|
37
|
+
* Validate project name
|
|
38
|
+
*/
|
|
39
|
+
export declare function isValidProjectName(name: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Check if directory is empty
|
|
42
|
+
*/
|
|
43
|
+
export declare function isDirectoryEmpty(dirPath: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Get the path to the installed SDK package
|
|
46
|
+
* @param projectPath - Optional project path to look in (defaults to current directory)
|
|
47
|
+
*/
|
|
48
|
+
export declare function getSDKPath(projectPath?: string): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* Parse Convex URL to determine if it's local or cloud
|
|
51
|
+
*/
|
|
52
|
+
export declare function isLocalConvexUrl(url: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Fetch the latest SDK package.json from npm registry
|
|
55
|
+
*/
|
|
56
|
+
export declare function fetchLatestSDKMetadata(): Promise<{
|
|
57
|
+
convexVersion: string;
|
|
58
|
+
sdkVersion: string;
|
|
59
|
+
}>;
|
|
60
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/utils/shell.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACxF,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC3D;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;CAAO,GACvE,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAyCD"}
|