@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart-setup.js","sourceRoot":"","sources":["../../../src/utils/init/quickstart-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-sync.d.ts","sourceRoot":"","sources":["../../src/utils/schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"schema-sync.d.ts","sourceRoot":"","sources":["../../src/utils/schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAQH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,sCAAsC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA4FD;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GACA,OAAO,CAAC,gBAAgB,CAAC,CA+E3B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,EACxB,KAAK,CAAC,EAAE,OAAO,GACd,IAAI,CAwCN;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAClE,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CASD"}
|
|
@@ -12,32 +12,32 @@
|
|
|
12
12
|
* This will use the schema files from that directory's convex-dev folder instead
|
|
13
13
|
* of the installed @cortexmemory/sdk package.
|
|
14
14
|
*/
|
|
15
|
-
import { existsSync, readFileSync } from "fs";
|
|
15
|
+
import { existsSync, readFileSync, readdirSync } from "fs";
|
|
16
16
|
import { copyFile, mkdir } from "fs/promises";
|
|
17
17
|
import { createHash } from "crypto";
|
|
18
18
|
import { join, dirname } from "path";
|
|
19
19
|
import pc from "picocolors";
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
21
|
+
* Discover all syncable files from the SDK's convex-dev folder
|
|
22
|
+
* Includes all .ts files and tsconfig.json, excludes _generated/ directory
|
|
23
23
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
24
|
+
function discoverSchemaFiles(sdkConvexPath) {
|
|
25
|
+
try {
|
|
26
|
+
const entries = readdirSync(sdkConvexPath, { withFileTypes: true });
|
|
27
|
+
return entries
|
|
28
|
+
.filter((entry) => {
|
|
29
|
+
// Skip directories (like _generated/)
|
|
30
|
+
if (entry.isDirectory())
|
|
31
|
+
return false;
|
|
32
|
+
// Include .ts files and tsconfig.json
|
|
33
|
+
return entry.name.endsWith(".ts") || entry.name === "tsconfig.json";
|
|
34
|
+
})
|
|
35
|
+
.map((entry) => entry.name);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
41
|
/**
|
|
42
42
|
* Find the @cortexmemory/sdk package
|
|
43
43
|
*
|
|
@@ -132,6 +132,12 @@ export async function syncConvexSchema(projectPath, options) {
|
|
|
132
132
|
}
|
|
133
133
|
result.sdkConvexPath = sdkConvexPath;
|
|
134
134
|
result.sdkVersion = getSdkVersion(sdkPath);
|
|
135
|
+
// Discover all syncable files from SDK
|
|
136
|
+
const schemaFiles = discoverSchemaFiles(sdkConvexPath);
|
|
137
|
+
if (schemaFiles.length === 0) {
|
|
138
|
+
result.error = `No schema files found in ${sdkConvexPath}`;
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
135
141
|
// Ensure project's convex folder exists
|
|
136
142
|
if (!existsSync(result.projectConvexPath)) {
|
|
137
143
|
if (!options?.dryRun) {
|
|
@@ -139,7 +145,7 @@ export async function syncConvexSchema(projectPath, options) {
|
|
|
139
145
|
}
|
|
140
146
|
}
|
|
141
147
|
// Compare and sync each file
|
|
142
|
-
for (const fileName of
|
|
148
|
+
for (const fileName of schemaFiles) {
|
|
143
149
|
const sdkFilePath = join(sdkConvexPath, fileName);
|
|
144
150
|
const projectFilePath = join(result.projectConvexPath, fileName);
|
|
145
151
|
// Skip if SDK doesn't have this file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-sync.js","sourceRoot":"","sources":["../../src/utils/schema-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"schema-sync.js","sourceRoot":"","sources":["../../src/utils/schema-sync.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cortexmemory/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.3",
|
|
4
4
|
"description": "CLI tool for managing Cortex Memory deployments, performing administrative tasks, and streamlining development workflows",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"README.md"
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
|
-
"
|
|
17
|
+
"prebuild": "node scripts/sync-quickstart-template.js",
|
|
18
|
+
"build": "npm run prebuild && tsc && chmod +x dist/index.js",
|
|
18
19
|
"dev": "tsc --watch",
|
|
19
20
|
"lint": "eslint . --report-unused-disable-directives",
|
|
20
21
|
"test": "node --experimental-vm-modules $(npm root)/.bin/jest",
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
2
|
+
# Required Configuration
|
|
3
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
4
|
+
|
|
5
|
+
# Your Convex deployment URL
|
|
6
|
+
# Get this from: https://dashboard.convex.dev
|
|
7
|
+
CONVEX_URL=https://your-project.convex.cloud
|
|
8
|
+
|
|
9
|
+
# OpenAI API Key for LLM and embeddings
|
|
10
|
+
# Get this from: https://platform.openai.com/api-keys
|
|
11
|
+
OPENAI_API_KEY=sk-...
|
|
12
|
+
|
|
13
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
14
|
+
# Memory Space Configuration
|
|
15
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
16
|
+
|
|
17
|
+
# Default memory space for the demo
|
|
18
|
+
MEMORY_SPACE_ID=quickstart-demo
|
|
19
|
+
|
|
20
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
21
|
+
# Optional: Fact Extraction (SDK v0.18.0+)
|
|
22
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
23
|
+
|
|
24
|
+
# Enable automatic LLM-powered fact extraction
|
|
25
|
+
CORTEX_FACT_EXTRACTION=true
|
|
26
|
+
|
|
27
|
+
# Model for fact extraction (default: gpt-4o-mini)
|
|
28
|
+
CORTEX_FACT_EXTRACTION_MODEL=gpt-4o-mini
|
|
29
|
+
|
|
30
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
31
|
+
# Optional: Graph Database (SDK v0.19.0+)
|
|
32
|
+
# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
33
|
+
|
|
34
|
+
# Enable automatic graph sync
|
|
35
|
+
# CORTEX_GRAPH_SYNC=true
|
|
36
|
+
|
|
37
|
+
# Neo4j connection (choose one)
|
|
38
|
+
# NEO4J_URI=bolt://localhost:7687
|
|
39
|
+
# NEO4J_USERNAME=neo4j
|
|
40
|
+
# NEO4J_PASSWORD=your-password
|
|
41
|
+
|
|
42
|
+
# Or Memgraph connection
|
|
43
|
+
# MEMGRAPH_URI=bolt://localhost:7687
|
|
44
|
+
# MEMGRAPH_USERNAME=
|
|
45
|
+
# MEMGRAPH_PASSWORD=
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
# Cortex Memory + Vercel AI SDK Quickstart
|
|
2
|
+
|
|
3
|
+
This is the official quickstart demo for **Cortex Memory** with the **Vercel AI SDK**. It provides an interactive visualization of how data flows through the Cortex memory orchestration system in real-time.
|
|
4
|
+
|
|
5
|
+
> **SDK v0.24.0**: Now with **Belief Revision**! When users change their preferences (e.g., "I now prefer purple" after saying "I like blue"), Cortex intelligently updates or supersedes existing facts instead of creating duplicates.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 🧠 **Real-time Memory Visualization** - Watch data flow through all Cortex layers (Memory Space → User → Agent → Conversation → Vector → Facts → Graph)
|
|
10
|
+
- 💬 **Interactive Chat** - Send messages and see them processed with automatic memory storage
|
|
11
|
+
- 📊 **Layer Flow Diagram** - Animated visualization showing latency and data at each layer
|
|
12
|
+
- 🔀 **Memory Space Switching** - Demonstrate multi-tenant isolation by switching between memory spaces
|
|
13
|
+
- ⚡ **Streaming Support** - Full streaming with progressive fact extraction
|
|
14
|
+
- 🧹 **Belief Revision** - Intelligent fact updates when information changes (v0.24.0)
|
|
15
|
+
- 🔄 **Smart Fact Deduplication** - Semantic matching prevents duplicate facts across sessions (v0.22.0)
|
|
16
|
+
|
|
17
|
+
## Prerequisites
|
|
18
|
+
|
|
19
|
+
- Node.js 18+
|
|
20
|
+
- A Convex deployment ([get started](https://www.convex.dev/))
|
|
21
|
+
- An OpenAI API key ([get one](https://platform.openai.com/api-keys))
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### Local Development (within monorepo)
|
|
26
|
+
|
|
27
|
+
1. **Install dependencies**
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
cd packages/vercel-ai-provider/quickstart
|
|
31
|
+
npm install
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
> **Note**: The `package.json` uses `file:` references to link to the local SDK and provider packages. This allows you to test changes to the provider immediately.
|
|
35
|
+
|
|
36
|
+
### Using Published Packages
|
|
37
|
+
|
|
38
|
+
If you want to use the published npm packages instead, update `package.json`:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@cortexmemory/sdk": "^0.24.0",
|
|
44
|
+
"@cortexmemory/vercel-ai-provider": "^1.0.0"
|
|
45
|
+
// ... other deps
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
2. **Set up environment variables**
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
cp .env.local.example .env.local
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Edit `.env.local` and add your credentials:
|
|
57
|
+
|
|
58
|
+
```env
|
|
59
|
+
CONVEX_URL=https://your-project.convex.cloud
|
|
60
|
+
NEXT_PUBLIC_CONVEX_URL=https://your-project.convex.cloud
|
|
61
|
+
OPENAI_API_KEY=sk-...
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
3. **Deploy Convex schema**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm run convex:dev
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
4. **Start the development server**
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm run dev
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
5. **Open the demo**
|
|
77
|
+
|
|
78
|
+
Visit [http://localhost:3000](http://localhost:3000) to see the demo in action.
|
|
79
|
+
|
|
80
|
+
## What This Demo Shows
|
|
81
|
+
|
|
82
|
+
### Memory Layer Orchestration
|
|
83
|
+
|
|
84
|
+
When you send a message, you'll see it flow through these layers:
|
|
85
|
+
|
|
86
|
+
| Layer | Description |
|
|
87
|
+
| ---------------- | ----------------------------------------------- |
|
|
88
|
+
| **Memory Space** | Isolated namespace for multi-tenancy |
|
|
89
|
+
| **User** | User profile and identity |
|
|
90
|
+
| **Agent** | AI agent participant (required in SDK v0.17.0+) |
|
|
91
|
+
| **Conversation** | Message storage with threading |
|
|
92
|
+
| **Vector** | Semantic embeddings for similarity search |
|
|
93
|
+
| **Facts** | Extracted structured information |
|
|
94
|
+
| **Graph** | Entity relationships (optional) |
|
|
95
|
+
|
|
96
|
+
### Key Features Demonstrated
|
|
97
|
+
|
|
98
|
+
1. **Belief Revision** - SDK v0.24.0 intelligently updates/supersedes facts when information changes
|
|
99
|
+
2. **Unified Retrieval (recall)** - SDK v0.23.0 retrieves from vector + facts + graph in one call
|
|
100
|
+
3. **agentId Requirement** - SDK v0.17.0+ requires `agentId` for all user-agent conversations
|
|
101
|
+
4. **Automatic Fact Extraction** - LLM-powered extraction of preferences, identity, relationships
|
|
102
|
+
5. **Semantic Fact Deduplication** - SDK v0.22.0 automatically prevents duplicate facts using embedding similarity
|
|
103
|
+
6. **Multi-tenant Isolation** - Switch memory spaces to see complete isolation
|
|
104
|
+
7. **Streaming with Memory** - Full streaming support with progressive storage
|
|
105
|
+
|
|
106
|
+
## Configuration
|
|
107
|
+
|
|
108
|
+
The chat API route at `/app/api/chat/route.ts` shows how to configure the Cortex Memory provider:
|
|
109
|
+
|
|
110
|
+
```typescript
|
|
111
|
+
import { createCortexMemory } from "@cortexmemory/vercel-ai-provider";
|
|
112
|
+
import { openai, createOpenAI } from "@ai-sdk/openai";
|
|
113
|
+
import { streamText, embed } from "ai";
|
|
114
|
+
|
|
115
|
+
const openaiClient = createOpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
116
|
+
|
|
117
|
+
const cortexMemory = createCortexMemory({
|
|
118
|
+
convexUrl: process.env.CONVEX_URL!,
|
|
119
|
+
memorySpaceId: "quickstart-demo",
|
|
120
|
+
|
|
121
|
+
// User identification
|
|
122
|
+
userId: "demo-user",
|
|
123
|
+
userName: "Demo User",
|
|
124
|
+
|
|
125
|
+
// Agent identification (REQUIRED in SDK v0.17.0+)
|
|
126
|
+
agentId: "quickstart-assistant",
|
|
127
|
+
agentName: "Cortex Demo Assistant",
|
|
128
|
+
|
|
129
|
+
// Optional features
|
|
130
|
+
enableGraphMemory: process.env.CORTEX_GRAPH_SYNC === "true",
|
|
131
|
+
enableFactExtraction: process.env.CORTEX_FACT_EXTRACTION === "true",
|
|
132
|
+
|
|
133
|
+
// Belief Revision (v0.24.0+)
|
|
134
|
+
// Automatically handles fact updates when user changes their mind
|
|
135
|
+
// e.g., "I like blue" → "I prefer purple" will UPDATE/SUPERSEDE the old fact
|
|
136
|
+
beliefRevision: {
|
|
137
|
+
enabled: true,
|
|
138
|
+
slotMatching: true, // Fast slot-based conflict detection
|
|
139
|
+
llmResolution: true, // LLM-based resolution for nuanced conflicts
|
|
140
|
+
},
|
|
141
|
+
|
|
142
|
+
// Embedding provider (required for semantic matching)
|
|
143
|
+
embeddingProvider: {
|
|
144
|
+
generate: async (text) => {
|
|
145
|
+
const result = await embed({
|
|
146
|
+
model: openaiClient.embedding("text-embedding-3-small"),
|
|
147
|
+
value: text,
|
|
148
|
+
});
|
|
149
|
+
return result.embedding;
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
const result = await streamText({
|
|
155
|
+
model: cortexMemory(openai("gpt-4o-mini")),
|
|
156
|
+
messages,
|
|
157
|
+
});
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Architecture
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
quickstart/
|
|
164
|
+
├── app/
|
|
165
|
+
│ ├── api/
|
|
166
|
+
│ │ ├── chat/route.ts # Main chat endpoint with Cortex
|
|
167
|
+
│ │ ├── memories/route.ts # Memory inspection endpoint
|
|
168
|
+
│ │ └── facts/route.ts # Facts inspection endpoint
|
|
169
|
+
│ ├── layout.tsx
|
|
170
|
+
│ ├── page.tsx # Main demo page
|
|
171
|
+
│ └── globals.css
|
|
172
|
+
├── components/
|
|
173
|
+
│ ├── ChatInterface.tsx # Chat UI component
|
|
174
|
+
│ ├── LayerFlowDiagram.tsx # Hero visualization component
|
|
175
|
+
│ ├── LayerCard.tsx # Individual layer status card
|
|
176
|
+
│ ├── DataPreview.tsx # Expandable data viewer
|
|
177
|
+
│ └── MemorySpaceSwitcher.tsx
|
|
178
|
+
├── lib/
|
|
179
|
+
│ ├── layer-tracking.ts # Layer status management
|
|
180
|
+
│ └── animations.ts # Framer Motion variants
|
|
181
|
+
└── convex/
|
|
182
|
+
├── schema.ts # Convex schema
|
|
183
|
+
├── conversations.ts # Conversation queries
|
|
184
|
+
├── memories.ts # Memory queries
|
|
185
|
+
├── facts.ts # Facts queries
|
|
186
|
+
└── users.ts # User queries
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Learn More
|
|
190
|
+
|
|
191
|
+
- [Cortex Memory Documentation](https://cortexmemory.dev/docs)
|
|
192
|
+
- [Vercel AI SDK Documentation](https://sdk.vercel.ai/docs)
|
|
193
|
+
- [API Reference](/Documentation/03-api-reference/02-memory-operations.md)
|
|
194
|
+
|
|
195
|
+
## Troubleshooting
|
|
196
|
+
|
|
197
|
+
### "agentId is required"
|
|
198
|
+
|
|
199
|
+
Since SDK v0.17.0, all user-agent conversations require an `agentId`. Add it to your configuration:
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
const cortexMemory = createCortexMemory({
|
|
203
|
+
// ... other config
|
|
204
|
+
agentId: "my-assistant", // Required!
|
|
205
|
+
});
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Memories not appearing
|
|
209
|
+
|
|
210
|
+
1. Check that your Convex deployment is running
|
|
211
|
+
2. Verify `CONVEX_URL` is set correctly
|
|
212
|
+
3. Ensure the memory space ID matches between frontend and backend
|
|
213
|
+
|
|
214
|
+
### Fact extraction not working
|
|
215
|
+
|
|
216
|
+
Enable fact extraction via environment variable:
|
|
217
|
+
|
|
218
|
+
```env
|
|
219
|
+
CORTEX_FACT_EXTRACTION=true
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Duplicate facts being created
|
|
223
|
+
|
|
224
|
+
Ensure you have `embeddingProvider` configured for optimal semantic deduplication:
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
const cortexMemory = createCortexMemory({
|
|
228
|
+
// ... other config
|
|
229
|
+
embeddingProvider: {
|
|
230
|
+
generate: async (text) => {
|
|
231
|
+
const result = await embed({
|
|
232
|
+
model: openaiClient.embedding("text-embedding-3-small"),
|
|
233
|
+
value: text,
|
|
234
|
+
});
|
|
235
|
+
return result.embedding;
|
|
236
|
+
},
|
|
237
|
+
},
|
|
238
|
+
});
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Without `embeddingProvider`, deduplication falls back to `structural` matching (subject + predicate + object), which is less accurate for semantically similar facts.
|
|
242
|
+
|
|
243
|
+
To disable deduplication entirely (not recommended):
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
const cortexMemory = createCortexMemory({
|
|
247
|
+
// ... other config
|
|
248
|
+
factDeduplication: false, // Uses pre-v0.22.0 behavior
|
|
249
|
+
});
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Facts not being updated when user changes preferences
|
|
253
|
+
|
|
254
|
+
If you say "I like blue" then later say "I prefer purple" and both facts remain, enable **Belief Revision** (v0.24.0+):
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
const cortexMemory = createCortexMemory({
|
|
258
|
+
// ... other config
|
|
259
|
+
beliefRevision: {
|
|
260
|
+
enabled: true,
|
|
261
|
+
slotMatching: true, // Fast detection via subject-predicate matching
|
|
262
|
+
llmResolution: true, // LLM resolves nuanced conflicts
|
|
263
|
+
},
|
|
264
|
+
});
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
**Revision actions explained:**
|
|
268
|
+
|
|
269
|
+
| Action | Description | Example |
|
|
270
|
+
| ----------- | -------------------------------------------------- | ------------------------------------- |
|
|
271
|
+
| `CREATE` | New fact with no conflicts | First time mentioning favorite color |
|
|
272
|
+
| `UPDATE` | Existing fact refined with new details | "I like blue" → "I love dark blue" |
|
|
273
|
+
| `SUPERSEDE` | Old fact replaced by contradicting new information | "I like blue" → "I prefer purple now" |
|
|
274
|
+
| `NONE` | Duplicate or irrelevant, no storage needed | Saying "I like blue" twice |
|
|
275
|
+
|
|
276
|
+
The demo visualization shows these actions with colored badges on the Facts layer.
|
|
277
|
+
|
|
278
|
+
## License
|
|
279
|
+
|
|
280
|
+
FSL-1.1-Apache-2.0 - See LICENSE.md in the root of the repository.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Check API Route
|
|
3
|
+
*
|
|
4
|
+
* GET: Check if admin has been set up (first-run detection)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { getCortex } from "@/lib/cortex";
|
|
8
|
+
|
|
9
|
+
const ADMIN_NAMESPACE = "quickstart-config";
|
|
10
|
+
const ADMIN_KEY = "admin_password_hash";
|
|
11
|
+
|
|
12
|
+
export async function GET() {
|
|
13
|
+
try {
|
|
14
|
+
const cortex = getCortex();
|
|
15
|
+
|
|
16
|
+
// Check if admin password hash exists in mutable store
|
|
17
|
+
const adminHash = await cortex.mutable.get(ADMIN_NAMESPACE, ADMIN_KEY);
|
|
18
|
+
|
|
19
|
+
return Response.json({
|
|
20
|
+
isSetup: adminHash !== null,
|
|
21
|
+
});
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error("[Auth Check Error]", error);
|
|
24
|
+
|
|
25
|
+
return Response.json(
|
|
26
|
+
{ error: "Failed to check admin setup status" },
|
|
27
|
+
{ status: 500 }
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User Login API Route
|
|
3
|
+
*
|
|
4
|
+
* POST: Authenticate user and return session
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { getCortex } from "@/lib/cortex";
|
|
8
|
+
import { verifyPassword, generateSessionToken } from "@/lib/password";
|
|
9
|
+
|
|
10
|
+
export async function POST(req: Request) {
|
|
11
|
+
try {
|
|
12
|
+
const body = await req.json();
|
|
13
|
+
const { username, password } = body;
|
|
14
|
+
|
|
15
|
+
// Validate input
|
|
16
|
+
if (!username || typeof username !== "string") {
|
|
17
|
+
return Response.json(
|
|
18
|
+
{ error: "Username is required" },
|
|
19
|
+
{ status: 400 }
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (!password || typeof password !== "string") {
|
|
24
|
+
return Response.json(
|
|
25
|
+
{ error: "Password is required" },
|
|
26
|
+
{ status: 400 }
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const cortex = getCortex();
|
|
31
|
+
const sanitizedUsername = username.toLowerCase();
|
|
32
|
+
|
|
33
|
+
// Get user profile
|
|
34
|
+
const user = await cortex.users.get(sanitizedUsername);
|
|
35
|
+
if (!user) {
|
|
36
|
+
return Response.json(
|
|
37
|
+
{ error: "Invalid username or password" },
|
|
38
|
+
{ status: 401 }
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Verify password
|
|
43
|
+
const storedHash = user.data.passwordHash as string;
|
|
44
|
+
if (!storedHash) {
|
|
45
|
+
return Response.json(
|
|
46
|
+
{ error: "Invalid username or password" },
|
|
47
|
+
{ status: 401 }
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const isValid = await verifyPassword(password, storedHash);
|
|
52
|
+
if (!isValid) {
|
|
53
|
+
return Response.json(
|
|
54
|
+
{ error: "Invalid username or password" },
|
|
55
|
+
{ status: 401 }
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Update last login time
|
|
60
|
+
await cortex.users.update(sanitizedUsername, {
|
|
61
|
+
lastLoginAt: Date.now(),
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Generate session token
|
|
65
|
+
const sessionToken = generateSessionToken();
|
|
66
|
+
|
|
67
|
+
return Response.json({
|
|
68
|
+
success: true,
|
|
69
|
+
user: {
|
|
70
|
+
id: sanitizedUsername,
|
|
71
|
+
displayName: (user.data.displayName as string) || sanitizedUsername,
|
|
72
|
+
},
|
|
73
|
+
sessionToken,
|
|
74
|
+
});
|
|
75
|
+
} catch (error) {
|
|
76
|
+
console.error("[Login Error]", error);
|
|
77
|
+
|
|
78
|
+
return Response.json(
|
|
79
|
+
{ error: "Failed to authenticate" },
|
|
80
|
+
{ status: 500 }
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
}
|