@harshit-sandilya/cortexdb-js 0.2.8
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 +165 -0
- package/dist/client.d.ts +42 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +54 -0
- package/dist/client.js.map +1 -0
- package/dist/httpWrapper.d.ts +21 -0
- package/dist/httpWrapper.d.ts.map +1 -0
- package/dist/httpWrapper.js +82 -0
- package/dist/httpWrapper.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/ingest.d.ts +34 -0
- package/dist/ingest.d.ts.map +1 -0
- package/dist/ingest.js +57 -0
- package/dist/ingest.js.map +1 -0
- package/dist/models.d.ts +99 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +30 -0
- package/dist/models.js.map +1 -0
- package/dist/query.d.ts +78 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +151 -0
- package/dist/query.js.map +1 -0
- package/dist/setup.d.ts +24 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +41 -0
- package/dist/setup.js.map +1 -0
- package/package.json +40 -0
package/README.md
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# CortexDB JavaScript/TypeScript SDK
|
|
2
|
+
|
|
3
|
+
Lightweight TypeScript client SDK for [CortexDB](https://github.com/harshit-sandilya/CortexDB) — wraps the REST API with full type safety.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
|
|
7
|
+
- **Node.js 18+**
|
|
8
|
+
- **npm 9+** (or any compatible package manager)
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install cortexdb
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { CortexDB, ConverserRole } from "cortexdb";
|
|
20
|
+
|
|
21
|
+
const db = new CortexDB("http://localhost:8080");
|
|
22
|
+
|
|
23
|
+
// 1. Configure LLM provider
|
|
24
|
+
await db.setup.configure("GEMINI", "gemini-2.0-flash", "gemini-embedding-001", "your-api-key");
|
|
25
|
+
|
|
26
|
+
// 2. Ingest structured document or prompt
|
|
27
|
+
await db.ingest.document(
|
|
28
|
+
"user-1", "Quantum Computing",
|
|
29
|
+
"Quantum computing uses qubits to perform computations..."
|
|
30
|
+
);
|
|
31
|
+
await db.ingest.prompt("user-1", ConverserRole.USER, "What are qubits?");
|
|
32
|
+
|
|
33
|
+
// 3. Search contexts
|
|
34
|
+
const results = await db.query.searchContexts("What is quantum computing?");
|
|
35
|
+
for (const r of results.results) {
|
|
36
|
+
console.log(`${r.score?.toFixed(2)} — ${r.content}`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 4. Entity lookup
|
|
40
|
+
const entity = await db.query.getEntityByName("Google");
|
|
41
|
+
|
|
42
|
+
// 5. Graph traversal
|
|
43
|
+
const connections = await db.query.getOutgoingConnections(entity!.id!);
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## API Overview
|
|
47
|
+
|
|
48
|
+
### Setup
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
await db.setup.configure(provider, chatModel, embedModel);
|
|
52
|
+
await db.setup.configure(provider, chatModel, embedModel, apiKey);
|
|
53
|
+
await db.setup.configure(provider, chatModel, embedModel, apiKey, baseUrl);
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Supported providers: `GEMINI`, `OPENAI`, `ANTHROPIC`, `AZURE`, `OPENROUTER`.
|
|
57
|
+
|
|
58
|
+
### Ingest
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
await db.ingest.document(uid, documentTitle, documentText);
|
|
62
|
+
await db.ingest.document(uid, documentTitle, documentText, metadata);
|
|
63
|
+
await db.ingest.prompt(uid, converser, text);
|
|
64
|
+
await db.ingest.prompt(uid, converser, text, metadata);
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Converser roles: `USER`, `AGENT`, `SYSTEM`.
|
|
68
|
+
|
|
69
|
+
### Query — Contexts
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
await db.query.searchContexts(query);
|
|
73
|
+
await db.query.searchContexts(query, limit, minRelevance, filters);
|
|
74
|
+
await db.query.getContextsByKb(kbId);
|
|
75
|
+
await db.query.getRecentContexts(days);
|
|
76
|
+
await db.query.searchRecentContexts(query, days);
|
|
77
|
+
await db.query.getSiblingContexts(contextId);
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Query — Entities
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
await db.query.searchEntities(query);
|
|
84
|
+
await db.query.getEntityByName(name); // returns null if not found
|
|
85
|
+
await db.query.getEntityByNameIgnoreCase(name);
|
|
86
|
+
await db.query.getEntityIdByName(name);
|
|
87
|
+
await db.query.disambiguateEntity(name, context);
|
|
88
|
+
await db.query.getContextsForEntity(entityId);
|
|
89
|
+
await db.query.getEntitiesForContext(contextId);
|
|
90
|
+
await db.query.mergeEntities(sourceId, targetId);
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Query — History
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
await db.query.searchHistory(query);
|
|
97
|
+
await db.query.getHistoryByUser(uid);
|
|
98
|
+
await db.query.getRecentKbs(hours);
|
|
99
|
+
await db.query.getKbsSince(isoTimestamp);
|
|
100
|
+
await db.query.deleteUserData(uid); // GDPR
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Query — Graph
|
|
104
|
+
|
|
105
|
+
```ts
|
|
106
|
+
await db.query.getOutgoingConnections(entityId);
|
|
107
|
+
await db.query.getIncomingConnections(entityId);
|
|
108
|
+
await db.query.getTwoHopConnections(entityId);
|
|
109
|
+
await db.query.getTopRelations(limit);
|
|
110
|
+
await db.query.getRelationsBySource(sourceId);
|
|
111
|
+
await db.query.getRelationsByTarget(targetId);
|
|
112
|
+
await db.query.getRelationsByType(relationType);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Query — Hybrid Search
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
await db.query.hybridSearch(query);
|
|
119
|
+
await db.query.hybridSearch(query, limit, minRelevance);
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## TypeScript Types
|
|
123
|
+
|
|
124
|
+
All models are fully typed and exported from the package:
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
import {
|
|
128
|
+
// Enums
|
|
129
|
+
LLMApiProvider,
|
|
130
|
+
ConverserRole,
|
|
131
|
+
// Types
|
|
132
|
+
type SetupRequest,
|
|
133
|
+
type SetupResponse,
|
|
134
|
+
type IngestRequest,
|
|
135
|
+
type IngestResponse,
|
|
136
|
+
type KnowledgeBase,
|
|
137
|
+
type QueryRequest,
|
|
138
|
+
type QueryResponse,
|
|
139
|
+
type SearchResult,
|
|
140
|
+
type Entity,
|
|
141
|
+
type Relation,
|
|
142
|
+
} from "cortexdb";
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Configuration
|
|
146
|
+
|
|
147
|
+
| Parameter | Default | Description |
|
|
148
|
+
|------------|--------------------------|------------------------------------|
|
|
149
|
+
| `baseUrl` | `http://localhost:8080` | CortexDB server URL |
|
|
150
|
+
| `timeout` | `30000` | Request timeout in milliseconds |
|
|
151
|
+
|
|
152
|
+
```ts
|
|
153
|
+
const db = new CortexDB("https://cortex.example.com", 60_000);
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Building
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
cd cortexdb-js
|
|
160
|
+
npm install # install dependencies
|
|
161
|
+
npm run build # compile TypeScript
|
|
162
|
+
npm test # run unit tests
|
|
163
|
+
npm run test:e2e # run end-to-end tests
|
|
164
|
+
npm run test:all # run all tests
|
|
165
|
+
```
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main CortexDB client — entry point for the JavaScript/TypeScript SDK.
|
|
3
|
+
*
|
|
4
|
+
* Equivalent to cortexdb-py/cortexdb/client.py
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { CortexDB } from "cortexdb";
|
|
9
|
+
*
|
|
10
|
+
* const db = new CortexDB("http://localhost:8080");
|
|
11
|
+
*
|
|
12
|
+
* // Configure LLM
|
|
13
|
+
* await db.setup.configure("GEMINI", "gemini-2.0-flash", "gemini-embedding-001", "your-api-key");
|
|
14
|
+
*
|
|
15
|
+
* // Ingest content
|
|
16
|
+
* await db.ingest.document("user-1", "USER", "Hello world");
|
|
17
|
+
*
|
|
18
|
+
* // Query
|
|
19
|
+
* const results = await db.query.searchContexts("greeting");
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import { SetupAPI } from "./setup.js";
|
|
23
|
+
import { IngestAPI } from "./ingest.js";
|
|
24
|
+
import { QueryAPI } from "./query.js";
|
|
25
|
+
export declare class CortexDB {
|
|
26
|
+
/** Setup API — configure LLM providers. */
|
|
27
|
+
readonly setup: SetupAPI;
|
|
28
|
+
/** Ingest API — ingest documents into CortexDB. */
|
|
29
|
+
readonly ingest: IngestAPI;
|
|
30
|
+
/** Query API — search contexts, entities, history, and graph. */
|
|
31
|
+
readonly query: QueryAPI;
|
|
32
|
+
private readonly http;
|
|
33
|
+
/**
|
|
34
|
+
* Initialize the CortexDB client.
|
|
35
|
+
*
|
|
36
|
+
* @param baseUrl Base URL of the CortexDB server (default: http://localhost:8080).
|
|
37
|
+
* @param timeout Request timeout in milliseconds (default: 30 000).
|
|
38
|
+
*/
|
|
39
|
+
constructor(baseUrl?: string, timeout?: number);
|
|
40
|
+
toString(): string;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,QAAQ;IACjB,2CAA2C;IAC3C,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAChC,mDAAmD;IACnD,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,iEAAiE;IACjE,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAEhC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAElC;;;;;OAKG;gBACS,OAAO,GAAE,MAAgC,EAAE,OAAO,GAAE,MAAe;IAQ/E,QAAQ,IAAI,MAAM;CAGrB"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Main CortexDB client — entry point for the JavaScript/TypeScript SDK.
|
|
4
|
+
*
|
|
5
|
+
* Equivalent to cortexdb-py/cortexdb/client.py
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { CortexDB } from "cortexdb";
|
|
10
|
+
*
|
|
11
|
+
* const db = new CortexDB("http://localhost:8080");
|
|
12
|
+
*
|
|
13
|
+
* // Configure LLM
|
|
14
|
+
* await db.setup.configure("GEMINI", "gemini-2.0-flash", "gemini-embedding-001", "your-api-key");
|
|
15
|
+
*
|
|
16
|
+
* // Ingest content
|
|
17
|
+
* await db.ingest.document("user-1", "USER", "Hello world");
|
|
18
|
+
*
|
|
19
|
+
* // Query
|
|
20
|
+
* const results = await db.query.searchContexts("greeting");
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.CortexDB = void 0;
|
|
25
|
+
const httpWrapper_js_1 = require("./httpWrapper.js");
|
|
26
|
+
const setup_js_1 = require("./setup.js");
|
|
27
|
+
const ingest_js_1 = require("./ingest.js");
|
|
28
|
+
const query_js_1 = require("./query.js");
|
|
29
|
+
class CortexDB {
|
|
30
|
+
/** Setup API — configure LLM providers. */
|
|
31
|
+
setup;
|
|
32
|
+
/** Ingest API — ingest documents into CortexDB. */
|
|
33
|
+
ingest;
|
|
34
|
+
/** Query API — search contexts, entities, history, and graph. */
|
|
35
|
+
query;
|
|
36
|
+
http;
|
|
37
|
+
/**
|
|
38
|
+
* Initialize the CortexDB client.
|
|
39
|
+
*
|
|
40
|
+
* @param baseUrl Base URL of the CortexDB server (default: http://localhost:8080).
|
|
41
|
+
* @param timeout Request timeout in milliseconds (default: 30 000).
|
|
42
|
+
*/
|
|
43
|
+
constructor(baseUrl = "http://localhost:8080", timeout = 30_000) {
|
|
44
|
+
this.http = new httpWrapper_js_1.HttpClient(baseUrl, timeout);
|
|
45
|
+
this.setup = new setup_js_1.SetupAPI(this.http);
|
|
46
|
+
this.ingest = new ingest_js_1.IngestAPI(this.http);
|
|
47
|
+
this.query = new query_js_1.QueryAPI(this.http);
|
|
48
|
+
}
|
|
49
|
+
toString() {
|
|
50
|
+
return `CortexDB(baseUrl="${this.http}")`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.CortexDB = CortexDB;
|
|
54
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,qDAA8C;AAC9C,yCAAsC;AACtC,2CAAwC;AACxC,yCAAsC;AAEtC,MAAa,QAAQ;IACjB,2CAA2C;IAC3B,KAAK,CAAW;IAChC,mDAAmD;IACnC,MAAM,CAAY;IAClC,iEAAiE;IACjD,KAAK,CAAW;IAEf,IAAI,CAAa;IAElC;;;;;OAKG;IACH,YAAY,UAAkB,uBAAuB,EAAE,UAAkB,MAAM;QAC3E,IAAI,CAAC,IAAI,GAAG,IAAI,2BAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,QAAQ;QACJ,OAAO,qBAAqB,IAAI,CAAC,IAAI,IAAI,CAAC;IAC9C,CAAC;CACJ;AA3BD,4BA2BC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thin HTTP wrapper around the native fetch API.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the role of httpx in the Python SDK — handles base URL
|
|
5
|
+
* resolution, JSON serialisation, timeout, and error handling so
|
|
6
|
+
* the API classes stay clean.
|
|
7
|
+
*/
|
|
8
|
+
export declare class HttpClient {
|
|
9
|
+
private readonly baseUrl;
|
|
10
|
+
private readonly timeout;
|
|
11
|
+
/**
|
|
12
|
+
* @param baseUrl Base URL of the CortexDB server.
|
|
13
|
+
* @param timeout Request timeout in milliseconds.
|
|
14
|
+
*/
|
|
15
|
+
constructor(baseUrl: string, timeout?: number);
|
|
16
|
+
get<T>(path: string, params?: Record<string, any>): Promise<T>;
|
|
17
|
+
post<T>(path: string, body?: any, params?: Record<string, any>, headers?: Record<string, string>): Promise<T>;
|
|
18
|
+
delete<T>(path: string, params?: Record<string, any>): Promise<T>;
|
|
19
|
+
request<T>(method: string, path: string, body?: any, params?: Record<string, any>, extraHeaders?: Record<string, string>): Promise<T>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=httpWrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpWrapper.d.ts","sourceRoot":"","sources":["../src/httpWrapper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;;OAGG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAe;IAQ/C,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI9D,IAAI,CAAC,CAAC,EACR,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,CAAC,CAAC;IAIP,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAMjE,OAAO,CAAC,CAAC,EACX,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,OAAO,CAAC,CAAC,CAAC;CAuDhB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Thin HTTP wrapper around the native fetch API.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors the role of httpx in the Python SDK — handles base URL
|
|
6
|
+
* resolution, JSON serialisation, timeout, and error handling so
|
|
7
|
+
* the API classes stay clean.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.HttpClient = void 0;
|
|
11
|
+
class HttpClient {
|
|
12
|
+
baseUrl;
|
|
13
|
+
timeout;
|
|
14
|
+
/**
|
|
15
|
+
* @param baseUrl Base URL of the CortexDB server.
|
|
16
|
+
* @param timeout Request timeout in milliseconds.
|
|
17
|
+
*/
|
|
18
|
+
constructor(baseUrl, timeout = 30_000) {
|
|
19
|
+
// Strip trailing slash so path concatenation is predictable
|
|
20
|
+
this.baseUrl = baseUrl.replace(/\/+$/, "");
|
|
21
|
+
this.timeout = timeout;
|
|
22
|
+
}
|
|
23
|
+
// ── Convenience methods ──────────────────────────────────────────
|
|
24
|
+
async get(path, params) {
|
|
25
|
+
return this.request("GET", path, undefined, params);
|
|
26
|
+
}
|
|
27
|
+
async post(path, body, params, headers) {
|
|
28
|
+
return this.request("POST", path, body, params, headers);
|
|
29
|
+
}
|
|
30
|
+
async delete(path, params) {
|
|
31
|
+
return this.request("DELETE", path, undefined, params);
|
|
32
|
+
}
|
|
33
|
+
// ── Core request method ──────────────────────────────────────────
|
|
34
|
+
async request(method, path, body, params, extraHeaders) {
|
|
35
|
+
const url = new URL(this.baseUrl + path);
|
|
36
|
+
if (params) {
|
|
37
|
+
for (const [key, value] of Object.entries(params)) {
|
|
38
|
+
if (value !== undefined && value !== null) {
|
|
39
|
+
url.searchParams.append(key, String(value));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const headers = {
|
|
44
|
+
Accept: "application/json",
|
|
45
|
+
...extraHeaders,
|
|
46
|
+
};
|
|
47
|
+
let requestBody;
|
|
48
|
+
if (body !== undefined) {
|
|
49
|
+
headers["Content-Type"] = "application/json";
|
|
50
|
+
requestBody = JSON.stringify(body);
|
|
51
|
+
}
|
|
52
|
+
const response = await fetch(url.toString(), {
|
|
53
|
+
method,
|
|
54
|
+
headers,
|
|
55
|
+
body: requestBody,
|
|
56
|
+
signal: AbortSignal.timeout(this.timeout),
|
|
57
|
+
});
|
|
58
|
+
// 404 → return null (mirrors the Python SDK's pattern)
|
|
59
|
+
if (response.status === 404) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
if (!response.ok) {
|
|
63
|
+
const errorBody = await response.text().catch(() => "");
|
|
64
|
+
throw new Error(`CortexDB HTTP Error: ${response.status} ${response.statusText}` +
|
|
65
|
+
(errorBody ? ` — ${errorBody}` : ""));
|
|
66
|
+
}
|
|
67
|
+
// 204 No Content
|
|
68
|
+
if (response.status === 204) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
// Some void endpoints respond 200 with no body (e.g. DELETE, merge).
|
|
72
|
+
// Wrap json() in a try/catch so empty bodies don't throw.
|
|
73
|
+
try {
|
|
74
|
+
return await response.json();
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.HttpClient = HttpClient;
|
|
82
|
+
//# sourceMappingURL=httpWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpWrapper.js","sourceRoot":"","sources":["../src/httpWrapper.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CortexDB JavaScript/TypeScript SDK — A RAG-powered memory database client.
|
|
3
|
+
*
|
|
4
|
+
* Equivalent to cortexdb-py/cortexdb/__init__.py
|
|
5
|
+
*/
|
|
6
|
+
export { CortexDB } from "./client.js";
|
|
7
|
+
export { SetupAPI } from "./setup.js";
|
|
8
|
+
export { IngestAPI } from "./ingest.js";
|
|
9
|
+
export { QueryAPI } from "./query.js";
|
|
10
|
+
export { HttpClient } from "./httpWrapper.js";
|
|
11
|
+
export { LLMApiProvider, ConverserRole, type SetupRequest, type SetupResponse, type IngestPromptRequest, type IngestDocumentRequest, type KnowledgeBase, type IngestResponse, type QueryRequest, type SearchResult, type QueryResponse, type Entity, type Relation, } from "./models.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAEH,cAAc,EACd,aAAa,EAEb,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,cAAc,EAEnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,MAAM,EACX,KAAK,QAAQ,GAChB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CortexDB JavaScript/TypeScript SDK — A RAG-powered memory database client.
|
|
4
|
+
*
|
|
5
|
+
* Equivalent to cortexdb-py/cortexdb/__init__.py
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.ConverserRole = exports.LLMApiProvider = exports.HttpClient = exports.QueryAPI = exports.IngestAPI = exports.SetupAPI = exports.CortexDB = void 0;
|
|
9
|
+
// ── Main client ──────────────────────────────────────────────────────
|
|
10
|
+
var client_js_1 = require("./client.js");
|
|
11
|
+
Object.defineProperty(exports, "CortexDB", { enumerable: true, get: function () { return client_js_1.CortexDB; } });
|
|
12
|
+
// ── Sub-API classes ──────────────────────────────────────────────────
|
|
13
|
+
var setup_js_1 = require("./setup.js");
|
|
14
|
+
Object.defineProperty(exports, "SetupAPI", { enumerable: true, get: function () { return setup_js_1.SetupAPI; } });
|
|
15
|
+
var ingest_js_1 = require("./ingest.js");
|
|
16
|
+
Object.defineProperty(exports, "IngestAPI", { enumerable: true, get: function () { return ingest_js_1.IngestAPI; } });
|
|
17
|
+
var query_js_1 = require("./query.js");
|
|
18
|
+
Object.defineProperty(exports, "QueryAPI", { enumerable: true, get: function () { return query_js_1.QueryAPI; } });
|
|
19
|
+
// ── HTTP layer ───────────────────────────────────────────────────────
|
|
20
|
+
var httpWrapper_js_1 = require("./httpWrapper.js");
|
|
21
|
+
Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return httpWrapper_js_1.HttpClient; } });
|
|
22
|
+
// ── Models & Enums ───────────────────────────────────────────────────
|
|
23
|
+
var models_js_1 = require("./models.js");
|
|
24
|
+
// Enums
|
|
25
|
+
Object.defineProperty(exports, "LLMApiProvider", { enumerable: true, get: function () { return models_js_1.LLMApiProvider; } });
|
|
26
|
+
Object.defineProperty(exports, "ConverserRole", { enumerable: true, get: function () { return models_js_1.ConverserRole; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,wEAAwE;AACxE,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AAEjB,wEAAwE;AACxE,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AAEjB,wEAAwE;AACxE,mDAA8C;AAArC,4GAAA,UAAU,OAAA;AAEnB,wEAAwE;AACxE,yCAmBqB;AAlBjB,QAAQ;AACR,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA"}
|
package/dist/ingest.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ingest API wrapper for CortexDB.
|
|
3
|
+
*
|
|
4
|
+
* Equivalent to cortexdb-py/cortexdb/ingest.py
|
|
5
|
+
*/
|
|
6
|
+
import { HttpClient } from "./httpWrapper.js";
|
|
7
|
+
import { ConverserRole, type IngestResponse } from "./models.js";
|
|
8
|
+
export declare class IngestAPI {
|
|
9
|
+
private readonly http;
|
|
10
|
+
/** @internal */
|
|
11
|
+
constructor(http: HttpClient);
|
|
12
|
+
/**
|
|
13
|
+
* Ingest a prompt payload into CortexDB.
|
|
14
|
+
* The server will perform semantic compression and online synthesis.
|
|
15
|
+
*
|
|
16
|
+
* @param uid User identifier.
|
|
17
|
+
* @param converser Role of the converser ("USER", "AGENT", or "SYSTEM").
|
|
18
|
+
* @param text The text content to ingest.
|
|
19
|
+
* @param metadata Optional metadata dictionary.
|
|
20
|
+
* @returns IngestResponse with the created KnowledgeBase and processing info.
|
|
21
|
+
*/
|
|
22
|
+
prompt(uid: string, converser: string | ConverserRole, text: string, metadata?: Record<string, any>): Promise<IngestResponse>;
|
|
23
|
+
/**
|
|
24
|
+
* Ingest a large document into CortexDB.
|
|
25
|
+
* The server will extract a hierarchical page index (document tree).
|
|
26
|
+
*
|
|
27
|
+
* @param uid User identifier.
|
|
28
|
+
* @param documentTitle Title of the document.
|
|
29
|
+
* @param documentText The full text content of the document.
|
|
30
|
+
* @returns IngestResponse with the created KnowledgeBase and processing info.
|
|
31
|
+
*/
|
|
32
|
+
document(uid: string, documentTitle: string, documentText: string): Promise<IngestResponse>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,aAAa,EAGb,KAAK,cAAc,EACtB,MAAM,aAAa,CAAC;AAErB,qBAAa,SAAS;IAEN,OAAO,CAAC,QAAQ,CAAC,IAAI;IADjC,gBAAgB;gBACa,IAAI,EAAE,UAAU;IAE7C;;;;;;;;;OASG;IACG,MAAM,CACR,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,GAAG,aAAa,EACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC/B,OAAO,CAAC,cAAc,CAAC;IAiB1B;;;;;;;;OAQG;IACG,QAAQ,CACV,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC;CAS7B"}
|
package/dist/ingest.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Ingest API wrapper for CortexDB.
|
|
4
|
+
*
|
|
5
|
+
* Equivalent to cortexdb-py/cortexdb/ingest.py
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.IngestAPI = void 0;
|
|
9
|
+
class IngestAPI {
|
|
10
|
+
http;
|
|
11
|
+
/** @internal */
|
|
12
|
+
constructor(http) {
|
|
13
|
+
this.http = http;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Ingest a prompt payload into CortexDB.
|
|
17
|
+
* The server will perform semantic compression and online synthesis.
|
|
18
|
+
*
|
|
19
|
+
* @param uid User identifier.
|
|
20
|
+
* @param converser Role of the converser ("USER", "AGENT", or "SYSTEM").
|
|
21
|
+
* @param text The text content to ingest.
|
|
22
|
+
* @param metadata Optional metadata dictionary.
|
|
23
|
+
* @returns IngestResponse with the created KnowledgeBase and processing info.
|
|
24
|
+
*/
|
|
25
|
+
async prompt(uid, converser, text, metadata) {
|
|
26
|
+
// Normalise string converser to enum value
|
|
27
|
+
const resolvedConverser = typeof converser === "string"
|
|
28
|
+
? converser.toUpperCase()
|
|
29
|
+
: converser;
|
|
30
|
+
const request = {
|
|
31
|
+
uid,
|
|
32
|
+
converser: resolvedConverser,
|
|
33
|
+
text,
|
|
34
|
+
...(metadata !== undefined && { metadata }),
|
|
35
|
+
};
|
|
36
|
+
return this.http.post("/api/v1/memory/ingest/prompt", request);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Ingest a large document into CortexDB.
|
|
40
|
+
* The server will extract a hierarchical page index (document tree).
|
|
41
|
+
*
|
|
42
|
+
* @param uid User identifier.
|
|
43
|
+
* @param documentTitle Title of the document.
|
|
44
|
+
* @param documentText The full text content of the document.
|
|
45
|
+
* @returns IngestResponse with the created KnowledgeBase and processing info.
|
|
46
|
+
*/
|
|
47
|
+
async document(uid, documentTitle, documentText) {
|
|
48
|
+
const request = {
|
|
49
|
+
uid,
|
|
50
|
+
documentTitle,
|
|
51
|
+
documentText,
|
|
52
|
+
};
|
|
53
|
+
return this.http.post("/api/v1/memory/ingest/document", request);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.IngestAPI = IngestAPI;
|
|
57
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../src/ingest.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAUH,MAAa,SAAS;IAEW;IAD7B,gBAAgB;IAChB,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAI,CAAC;IAElD;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CACR,GAAW,EACX,SAAiC,EACjC,IAAY,EACZ,QAA8B;QAE9B,2CAA2C;QAC3C,MAAM,iBAAiB,GACnB,OAAO,SAAS,KAAK,QAAQ;YACzB,CAAC,CAAE,SAAS,CAAC,WAAW,EAAoB;YAC5C,CAAC,CAAC,SAAS,CAAC;QAEpB,MAAM,OAAO,GAAwB;YACjC,GAAG;YACH,SAAS,EAAE,iBAAiB;YAC5B,IAAI;YACJ,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC9C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,8BAA8B,EAAE,OAAO,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,QAAQ,CACV,GAAW,EACX,aAAqB,EACrB,YAAoB;QAEpB,MAAM,OAAO,GAA0B;YACnC,GAAG;YACH,aAAa;YACb,YAAY;SACf,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAiB,gCAAgC,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;CACJ;AA1DD,8BA0DC"}
|
package/dist/models.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript data models mirroring the Java DTOs.
|
|
3
|
+
*
|
|
4
|
+
* Because JavaScript handles JSON objects natively and the Java backend
|
|
5
|
+
* expects camelCase, we don't need any field aliasing — plain interfaces
|
|
6
|
+
* map directly to the API payloads.
|
|
7
|
+
*/
|
|
8
|
+
export declare enum LLMApiProvider {
|
|
9
|
+
GEMINI = "GEMINI",
|
|
10
|
+
OPENAI = "OPENAI",
|
|
11
|
+
ANTHROPIC = "ANTHROPIC",
|
|
12
|
+
AZURE = "AZURE",
|
|
13
|
+
OPENROUTER = "OPENROUTER"
|
|
14
|
+
}
|
|
15
|
+
export declare enum ConverserRole {
|
|
16
|
+
/** Represents content from a human user. */
|
|
17
|
+
USER = "USER",
|
|
18
|
+
/** Represents content generated by the AI assistant. */
|
|
19
|
+
AGENT = "AGENT",
|
|
20
|
+
SYSTEM = "SYSTEM",
|
|
21
|
+
/** Represents content from a reference document. */
|
|
22
|
+
DOCUMENT = "DOCUMENT"
|
|
23
|
+
}
|
|
24
|
+
export interface SetupRequest {
|
|
25
|
+
provider: LLMApiProvider;
|
|
26
|
+
apiKey?: string;
|
|
27
|
+
chatModelName: string;
|
|
28
|
+
embedModelName: string;
|
|
29
|
+
baseUrl?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface SetupResponse {
|
|
32
|
+
message: string;
|
|
33
|
+
success: boolean;
|
|
34
|
+
configuredProvider?: string;
|
|
35
|
+
configuredChatModel?: string;
|
|
36
|
+
configuredEmbedModel?: string;
|
|
37
|
+
baseUrl?: string;
|
|
38
|
+
timestamp?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface IngestPromptRequest {
|
|
41
|
+
uid: string;
|
|
42
|
+
converser: ConverserRole;
|
|
43
|
+
text: string;
|
|
44
|
+
metadata?: Record<string, any>;
|
|
45
|
+
}
|
|
46
|
+
export interface IngestDocumentRequest {
|
|
47
|
+
uid: string;
|
|
48
|
+
documentTitle: string;
|
|
49
|
+
documentText: string;
|
|
50
|
+
}
|
|
51
|
+
export interface KnowledgeBase {
|
|
52
|
+
/** Simplified KnowledgeBase entity returned in ingest responses. */
|
|
53
|
+
id?: string;
|
|
54
|
+
uid?: string;
|
|
55
|
+
content?: string;
|
|
56
|
+
createdAt?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface IngestResponse {
|
|
59
|
+
knowledgeBase?: KnowledgeBase;
|
|
60
|
+
status?: string;
|
|
61
|
+
message?: string;
|
|
62
|
+
processingTimeMs?: number;
|
|
63
|
+
embeddingTimeMs?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface QueryRequest {
|
|
66
|
+
query: string;
|
|
67
|
+
limit: number;
|
|
68
|
+
minRelevance: number;
|
|
69
|
+
filters?: Record<string, any>;
|
|
70
|
+
}
|
|
71
|
+
export interface SearchResult {
|
|
72
|
+
id?: string;
|
|
73
|
+
content?: string;
|
|
74
|
+
score?: number;
|
|
75
|
+
type?: string;
|
|
76
|
+
metadata?: Record<string, any>;
|
|
77
|
+
}
|
|
78
|
+
export interface QueryResponse {
|
|
79
|
+
query?: string;
|
|
80
|
+
results: SearchResult[];
|
|
81
|
+
processingTimeMs?: number;
|
|
82
|
+
}
|
|
83
|
+
export interface Entity {
|
|
84
|
+
/** RagEntity returned from entity endpoints. */
|
|
85
|
+
id?: string;
|
|
86
|
+
name?: string;
|
|
87
|
+
type?: string;
|
|
88
|
+
description?: string;
|
|
89
|
+
embedding?: number[];
|
|
90
|
+
}
|
|
91
|
+
export interface Relation {
|
|
92
|
+
/** Relation between two entities. */
|
|
93
|
+
id?: string;
|
|
94
|
+
sourceEntityId?: string;
|
|
95
|
+
targetEntityId?: string;
|
|
96
|
+
relationType?: string;
|
|
97
|
+
weight?: number;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=models.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/dist/models.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TypeScript data models mirroring the Java DTOs.
|
|
4
|
+
*
|
|
5
|
+
* Because JavaScript handles JSON objects natively and the Java backend
|
|
6
|
+
* expects camelCase, we don't need any field aliasing — plain interfaces
|
|
7
|
+
* map directly to the API payloads.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.ConverserRole = exports.LLMApiProvider = void 0;
|
|
11
|
+
// ─── Enums ───────────────────────────────────────────────────────────
|
|
12
|
+
var LLMApiProvider;
|
|
13
|
+
(function (LLMApiProvider) {
|
|
14
|
+
LLMApiProvider["GEMINI"] = "GEMINI";
|
|
15
|
+
LLMApiProvider["OPENAI"] = "OPENAI";
|
|
16
|
+
LLMApiProvider["ANTHROPIC"] = "ANTHROPIC";
|
|
17
|
+
LLMApiProvider["AZURE"] = "AZURE";
|
|
18
|
+
LLMApiProvider["OPENROUTER"] = "OPENROUTER";
|
|
19
|
+
})(LLMApiProvider || (exports.LLMApiProvider = LLMApiProvider = {}));
|
|
20
|
+
var ConverserRole;
|
|
21
|
+
(function (ConverserRole) {
|
|
22
|
+
/** Represents content from a human user. */
|
|
23
|
+
ConverserRole["USER"] = "USER";
|
|
24
|
+
/** Represents content generated by the AI assistant. */
|
|
25
|
+
ConverserRole["AGENT"] = "AGENT";
|
|
26
|
+
ConverserRole["SYSTEM"] = "SYSTEM";
|
|
27
|
+
/** Represents content from a reference document. */
|
|
28
|
+
ConverserRole["DOCUMENT"] = "DOCUMENT";
|
|
29
|
+
})(ConverserRole || (exports.ConverserRole = ConverserRole = {}));
|
|
30
|
+
//# sourceMappingURL=models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,wEAAwE;AAExE,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,mCAAiB,CAAA;IACjB,mCAAiB,CAAA;IACjB,yCAAuB,CAAA;IACvB,iCAAe,CAAA;IACf,2CAAyB,CAAA;AAC7B,CAAC,EANW,cAAc,8BAAd,cAAc,QAMzB;AAED,IAAY,aAQX;AARD,WAAY,aAAa;IACrB,4CAA4C;IAC5C,8BAAa,CAAA;IACb,wDAAwD;IACxD,gCAAe,CAAA;IACf,kCAAiB,CAAA;IACjB,oDAAoD;IACpD,sCAAqB,CAAA;AACzB,CAAC,EARW,aAAa,6BAAb,aAAa,QAQxB"}
|
package/dist/query.d.ts
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query API wrapper for CortexDB.
|
|
3
|
+
*
|
|
4
|
+
* Equivalent to cortexdb-py/cortexdb/query.py
|
|
5
|
+
* Mirrors all 18+ methods across contexts, entities, history,
|
|
6
|
+
* user-data, graph, and hybrid search endpoints.
|
|
7
|
+
*/
|
|
8
|
+
import { HttpClient } from "./httpWrapper.js";
|
|
9
|
+
import type { Entity, QueryResponse, Relation } from "./models.js";
|
|
10
|
+
export declare class QueryAPI {
|
|
11
|
+
private readonly http;
|
|
12
|
+
/** @internal */
|
|
13
|
+
constructor(http: HttpClient);
|
|
14
|
+
/**
|
|
15
|
+
* Semantic search on contexts.
|
|
16
|
+
*
|
|
17
|
+
* @param query Search query text.
|
|
18
|
+
* @param limit Maximum number of results (default 5).
|
|
19
|
+
* @param minRelevance Minimum relevance score 0-1 (default 0.7).
|
|
20
|
+
* @param filters Optional filters dict.
|
|
21
|
+
*/
|
|
22
|
+
searchContexts(query: string, limit?: number, minRelevance?: number, filters?: Record<string, any>): Promise<QueryResponse>;
|
|
23
|
+
/** Get all contexts for a knowledge base. */
|
|
24
|
+
getContextsByKb(kbId: string): Promise<QueryResponse>;
|
|
25
|
+
/** Get recent contexts from the last N days. */
|
|
26
|
+
getRecentContexts(days?: number): Promise<QueryResponse>;
|
|
27
|
+
/** Search recent contexts with vector similarity. */
|
|
28
|
+
searchRecentContexts(query: string, days?: number, limit?: number, minRelevance?: number): Promise<QueryResponse>;
|
|
29
|
+
/** Get sibling contexts (other chunks from the same document). */
|
|
30
|
+
getSiblingContexts(contextId: string): Promise<QueryResponse>;
|
|
31
|
+
/** Semantic search on entities. */
|
|
32
|
+
searchEntities(query: string, limit?: number, minRelevance?: number): Promise<QueryResponse>;
|
|
33
|
+
/** Find entity by exact name. Returns null if not found. */
|
|
34
|
+
getEntityByName(name: string): Promise<Entity | null>;
|
|
35
|
+
/** Find entity by name (case-insensitive). Returns null if not found. */
|
|
36
|
+
getEntityByNameIgnoreCase(name: string): Promise<Entity | null>;
|
|
37
|
+
/** Get entity ID by name. Returns null if not found. */
|
|
38
|
+
getEntityIdByName(name: string): Promise<string | null>;
|
|
39
|
+
/** Disambiguate entity using vector similarity with context. */
|
|
40
|
+
disambiguateEntity(entityName: string, contextText: string): Promise<Entity | null>;
|
|
41
|
+
/** Get all contexts where an entity is mentioned. */
|
|
42
|
+
getContextsForEntity(entityId: string): Promise<any[]>;
|
|
43
|
+
/** Get all entities mentioned in a context. */
|
|
44
|
+
getEntitiesForContext(contextId: string): Promise<Entity[]>;
|
|
45
|
+
/** Merge two entities (source into target). */
|
|
46
|
+
mergeEntities(sourceEntityId: string, targetEntityId: string): Promise<void>;
|
|
47
|
+
/** Semantic search on knowledge bases (history). */
|
|
48
|
+
searchHistory(query: string, limit?: number, minRelevance?: number): Promise<QueryResponse>;
|
|
49
|
+
/** Get all history for a user. */
|
|
50
|
+
getHistoryByUser(uid: string): Promise<QueryResponse>;
|
|
51
|
+
/** Get recent knowledge bases from the last N hours. */
|
|
52
|
+
getRecentKbs(hours?: number): Promise<QueryResponse>;
|
|
53
|
+
/** Get knowledge bases since a timestamp (ISO-8601). */
|
|
54
|
+
getKbsSince(since: string): Promise<QueryResponse>;
|
|
55
|
+
/** Delete all data for a user (GDPR compliance). */
|
|
56
|
+
deleteUserData(uid: string): Promise<void>;
|
|
57
|
+
/** Get outgoing relations for an entity. */
|
|
58
|
+
getOutgoingConnections(entityId: string): Promise<QueryResponse>;
|
|
59
|
+
/** Get incoming relations for an entity. */
|
|
60
|
+
getIncomingConnections(entityId: string): Promise<QueryResponse>;
|
|
61
|
+
/** Get 2-hop connections (entity names reachable in 2 hops). */
|
|
62
|
+
getTwoHopConnections(entityId: string): Promise<string[]>;
|
|
63
|
+
/** Get top/strongest relations. */
|
|
64
|
+
getTopRelations(limit?: number): Promise<Relation[]>;
|
|
65
|
+
/** Get relations by source entity. */
|
|
66
|
+
getRelationsBySource(sourceId: string): Promise<Relation[]>;
|
|
67
|
+
/** Get relations by target entity. */
|
|
68
|
+
getRelationsByTarget(targetId: string): Promise<Relation[]>;
|
|
69
|
+
/** Get relations by type. */
|
|
70
|
+
getRelationsByType(relationType: string): Promise<Relation[]>;
|
|
71
|
+
/** Hybrid search combining vector and graph results. */
|
|
72
|
+
hybridSearch(query: string, limit?: number, minRelevance?: number): Promise<QueryResponse>;
|
|
73
|
+
/** Route a query intelligently based on intent (PROMPT vs DOCUMENT). */
|
|
74
|
+
routeQuery(query: string): Promise<QueryResponse>;
|
|
75
|
+
/** @internal Send a POST query request and return the parsed response. */
|
|
76
|
+
private postQuery;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/query.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Query API wrapper for CortexDB.
|
|
4
|
+
*
|
|
5
|
+
* Equivalent to cortexdb-py/cortexdb/query.py
|
|
6
|
+
* Mirrors all 18+ methods across contexts, entities, history,
|
|
7
|
+
* user-data, graph, and hybrid search endpoints.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.QueryAPI = void 0;
|
|
11
|
+
class QueryAPI {
|
|
12
|
+
http;
|
|
13
|
+
/** @internal */
|
|
14
|
+
constructor(http) {
|
|
15
|
+
this.http = http;
|
|
16
|
+
}
|
|
17
|
+
// ── Context endpoints ────────────────────────────────────────────
|
|
18
|
+
/**
|
|
19
|
+
* Semantic search on contexts.
|
|
20
|
+
*
|
|
21
|
+
* @param query Search query text.
|
|
22
|
+
* @param limit Maximum number of results (default 5).
|
|
23
|
+
* @param minRelevance Minimum relevance score 0-1 (default 0.7).
|
|
24
|
+
* @param filters Optional filters dict.
|
|
25
|
+
*/
|
|
26
|
+
async searchContexts(query, limit = 5, minRelevance = 0.7, filters) {
|
|
27
|
+
return this.postQuery("/api/v1/memory/query/contexts", query, limit, minRelevance, filters);
|
|
28
|
+
}
|
|
29
|
+
/** Get all contexts for a knowledge base. */
|
|
30
|
+
async getContextsByKb(kbId) {
|
|
31
|
+
return this.http.get(`/api/v1/memory/query/contexts/kb/${kbId}`);
|
|
32
|
+
}
|
|
33
|
+
/** Get recent contexts from the last N days. */
|
|
34
|
+
async getRecentContexts(days = 7) {
|
|
35
|
+
return this.http.get("/api/v1/memory/query/contexts/recent", { days });
|
|
36
|
+
}
|
|
37
|
+
/** Search recent contexts with vector similarity. */
|
|
38
|
+
async searchRecentContexts(query, days = 7, limit = 5, minRelevance = 0.7) {
|
|
39
|
+
return this.postQuery("/api/v1/memory/query/contexts/recent/search", query, limit, minRelevance, undefined, { days });
|
|
40
|
+
}
|
|
41
|
+
/** Get sibling contexts (other chunks from the same document). */
|
|
42
|
+
async getSiblingContexts(contextId) {
|
|
43
|
+
return this.http.get(`/api/v1/memory/query/contexts/${contextId}/siblings`);
|
|
44
|
+
}
|
|
45
|
+
// ── Entity endpoints ─────────────────────────────────────────────
|
|
46
|
+
/** Semantic search on entities. */
|
|
47
|
+
async searchEntities(query, limit = 5, minRelevance = 0.7) {
|
|
48
|
+
return this.postQuery("/api/v1/memory/query/entities", query, limit, minRelevance);
|
|
49
|
+
}
|
|
50
|
+
/** Find entity by exact name. Returns null if not found. */
|
|
51
|
+
async getEntityByName(name) {
|
|
52
|
+
return this.http.get(`/api/v1/memory/query/entities/name/${name}`);
|
|
53
|
+
}
|
|
54
|
+
/** Find entity by name (case-insensitive). Returns null if not found. */
|
|
55
|
+
async getEntityByNameIgnoreCase(name) {
|
|
56
|
+
return this.http.get(`/api/v1/memory/query/entities/name/${name}/ignorecase`);
|
|
57
|
+
}
|
|
58
|
+
/** Get entity ID by name. Returns null if not found. */
|
|
59
|
+
async getEntityIdByName(name) {
|
|
60
|
+
const data = await this.http.get(`/api/v1/memory/query/entities/id/${name}`);
|
|
61
|
+
return data?.id ?? null;
|
|
62
|
+
}
|
|
63
|
+
/** Disambiguate entity using vector similarity with context. */
|
|
64
|
+
async disambiguateEntity(entityName, contextText) {
|
|
65
|
+
return this.http.post("/api/v1/memory/query/entities/disambiguate", contextText, { entityName }, { "Content-Type": "text/plain" });
|
|
66
|
+
}
|
|
67
|
+
/** Get all contexts where an entity is mentioned. */
|
|
68
|
+
async getContextsForEntity(entityId) {
|
|
69
|
+
return this.http.get(`/api/v1/memory/query/entities/${entityId}/contexts`);
|
|
70
|
+
}
|
|
71
|
+
/** Get all entities mentioned in a context. */
|
|
72
|
+
async getEntitiesForContext(contextId) {
|
|
73
|
+
return this.http.get(`/api/v1/memory/query/contexts/${contextId}/entities`);
|
|
74
|
+
}
|
|
75
|
+
/** Merge two entities (source into target). */
|
|
76
|
+
async mergeEntities(sourceEntityId, targetEntityId) {
|
|
77
|
+
await this.http.post("/api/v1/memory/query/entities/merge", undefined, { sourceEntityId, targetEntityId });
|
|
78
|
+
}
|
|
79
|
+
// ── History endpoints ────────────────────────────────────────────
|
|
80
|
+
/** Semantic search on knowledge bases (history). */
|
|
81
|
+
async searchHistory(query, limit = 5, minRelevance = 0.7) {
|
|
82
|
+
return this.postQuery("/api/v1/memory/query/history", query, limit, minRelevance);
|
|
83
|
+
}
|
|
84
|
+
/** Get all history for a user. */
|
|
85
|
+
async getHistoryByUser(uid) {
|
|
86
|
+
return this.http.get(`/api/v1/memory/query/history/user/${uid}`);
|
|
87
|
+
}
|
|
88
|
+
/** Get recent knowledge bases from the last N hours. */
|
|
89
|
+
async getRecentKbs(hours = 24) {
|
|
90
|
+
return this.http.get("/api/v1/memory/query/history/recent", { hours });
|
|
91
|
+
}
|
|
92
|
+
/** Get knowledge bases since a timestamp (ISO-8601). */
|
|
93
|
+
async getKbsSince(since) {
|
|
94
|
+
return this.http.get("/api/v1/memory/query/history/since", { since });
|
|
95
|
+
}
|
|
96
|
+
// ── User data ────────────────────────────────────────────────────
|
|
97
|
+
/** Delete all data for a user (GDPR compliance). */
|
|
98
|
+
async deleteUserData(uid) {
|
|
99
|
+
await this.http.delete(`/api/v1/memory/query/user/${uid}`);
|
|
100
|
+
}
|
|
101
|
+
// ── Graph endpoints ──────────────────────────────────────────────
|
|
102
|
+
/** Get outgoing relations for an entity. */
|
|
103
|
+
async getOutgoingConnections(entityId) {
|
|
104
|
+
return this.http.get(`/api/v1/memory/query/graph/outgoing/${entityId}`);
|
|
105
|
+
}
|
|
106
|
+
/** Get incoming relations for an entity. */
|
|
107
|
+
async getIncomingConnections(entityId) {
|
|
108
|
+
return this.http.get(`/api/v1/memory/query/graph/incoming/${entityId}`);
|
|
109
|
+
}
|
|
110
|
+
/** Get 2-hop connections (entity names reachable in 2 hops). */
|
|
111
|
+
async getTwoHopConnections(entityId) {
|
|
112
|
+
return this.http.get(`/api/v1/memory/query/graph/two-hop/${entityId}`);
|
|
113
|
+
}
|
|
114
|
+
/** Get top/strongest relations. */
|
|
115
|
+
async getTopRelations(limit = 10) {
|
|
116
|
+
return this.http.get("/api/v1/memory/query/graph/top-relations", { limit });
|
|
117
|
+
}
|
|
118
|
+
/** Get relations by source entity. */
|
|
119
|
+
async getRelationsBySource(sourceId) {
|
|
120
|
+
return this.http.get(`/api/v1/memory/query/graph/relations/source/${sourceId}`);
|
|
121
|
+
}
|
|
122
|
+
/** Get relations by target entity. */
|
|
123
|
+
async getRelationsByTarget(targetId) {
|
|
124
|
+
return this.http.get(`/api/v1/memory/query/graph/relations/target/${targetId}`);
|
|
125
|
+
}
|
|
126
|
+
/** Get relations by type. */
|
|
127
|
+
async getRelationsByType(relationType) {
|
|
128
|
+
return this.http.get(`/api/v1/memory/query/graph/relations/type/${relationType}`);
|
|
129
|
+
}
|
|
130
|
+
// ── Hybrid search ────────────────────────────────────────────────
|
|
131
|
+
/** Hybrid search combining vector and graph results. */
|
|
132
|
+
async hybridSearch(query, limit = 5, minRelevance = 0.7) {
|
|
133
|
+
return this.postQuery("/api/v1/memory/query/hybrid", query, limit, minRelevance);
|
|
134
|
+
}
|
|
135
|
+
// ── Pre-Routing / Agentic endpoints ──────────────────────────────
|
|
136
|
+
/** Route a query intelligently based on intent (PROMPT vs DOCUMENT). */
|
|
137
|
+
async routeQuery(query) {
|
|
138
|
+
return this.http.post("/api/v1/memory/query/route", { query, limit: 5, minRelevance: 0.7 });
|
|
139
|
+
}
|
|
140
|
+
// ── Internal helpers ─────────────────────────────────────────────
|
|
141
|
+
/** @internal Send a POST query request and return the parsed response. */
|
|
142
|
+
async postQuery(url, query, limit = 5, minRelevance = 0.7, filters, params) {
|
|
143
|
+
const request = { query, limit, minRelevance };
|
|
144
|
+
if (filters) {
|
|
145
|
+
request.filters = filters;
|
|
146
|
+
}
|
|
147
|
+
return this.http.post(url, request, params);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
exports.QueryAPI = QueryAPI;
|
|
151
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup API wrapper for CortexDB.
|
|
3
|
+
*
|
|
4
|
+
* Equivalent to cortexdb-py/cortexdb/setup.py
|
|
5
|
+
*/
|
|
6
|
+
import { HttpClient } from "./httpWrapper.js";
|
|
7
|
+
import { LLMApiProvider, type SetupResponse } from "./models.js";
|
|
8
|
+
export declare class SetupAPI {
|
|
9
|
+
private readonly http;
|
|
10
|
+
/** @internal */
|
|
11
|
+
constructor(http: HttpClient);
|
|
12
|
+
/**
|
|
13
|
+
* Configure the LLM provider on the CortexDB server.
|
|
14
|
+
*
|
|
15
|
+
* @param provider LLM provider name (e.g. "GEMINI", "OPENAI", "AZURE").
|
|
16
|
+
* @param chatModel Name of the chat model.
|
|
17
|
+
* @param embedModel Name of the embedding model.
|
|
18
|
+
* @param apiKey API key for the provider (optional).
|
|
19
|
+
* @param baseUrl Custom base URL (optional).
|
|
20
|
+
* @returns SetupResponse with configuration details.
|
|
21
|
+
*/
|
|
22
|
+
configure(provider: string | LLMApiProvider, chatModel: string, embedModel: string, apiKey?: string, baseUrl?: string): Promise<SetupResponse>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACH,cAAc,EAEd,KAAK,aAAa,EACrB,MAAM,aAAa,CAAC;AAErB,qBAAa,QAAQ;IAEL,OAAO,CAAC,QAAQ,CAAC,IAAI;IADjC,gBAAgB;gBACa,IAAI,EAAE,UAAU;IAE7C;;;;;;;;;OASG;IACG,SAAS,CACX,QAAQ,EAAE,MAAM,GAAG,cAAc,EACjC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;CAiB5B"}
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Setup API wrapper for CortexDB.
|
|
4
|
+
*
|
|
5
|
+
* Equivalent to cortexdb-py/cortexdb/setup.py
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SetupAPI = void 0;
|
|
9
|
+
class SetupAPI {
|
|
10
|
+
http;
|
|
11
|
+
/** @internal */
|
|
12
|
+
constructor(http) {
|
|
13
|
+
this.http = http;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Configure the LLM provider on the CortexDB server.
|
|
17
|
+
*
|
|
18
|
+
* @param provider LLM provider name (e.g. "GEMINI", "OPENAI", "AZURE").
|
|
19
|
+
* @param chatModel Name of the chat model.
|
|
20
|
+
* @param embedModel Name of the embedding model.
|
|
21
|
+
* @param apiKey API key for the provider (optional).
|
|
22
|
+
* @param baseUrl Custom base URL (optional).
|
|
23
|
+
* @returns SetupResponse with configuration details.
|
|
24
|
+
*/
|
|
25
|
+
async configure(provider, chatModel, embedModel, apiKey, baseUrl) {
|
|
26
|
+
// Normalise string provider to enum value
|
|
27
|
+
const resolvedProvider = typeof provider === "string"
|
|
28
|
+
? provider.toUpperCase()
|
|
29
|
+
: provider;
|
|
30
|
+
const request = {
|
|
31
|
+
provider: resolvedProvider,
|
|
32
|
+
chatModelName: chatModel,
|
|
33
|
+
embedModelName: embedModel,
|
|
34
|
+
...(apiKey !== undefined && { apiKey }),
|
|
35
|
+
...(baseUrl !== undefined && { baseUrl }),
|
|
36
|
+
};
|
|
37
|
+
return this.http.post("/api/setup", request);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.SetupAPI = SetupAPI;
|
|
41
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AASH,MAAa,QAAQ;IAEY;IAD7B,gBAAgB;IAChB,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAI,CAAC;IAElD;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,CACX,QAAiC,EACjC,SAAiB,EACjB,UAAkB,EAClB,MAAe,EACf,OAAgB;QAEhB,0CAA0C;QAC1C,MAAM,gBAAgB,GAClB,OAAO,QAAQ,KAAK,QAAQ;YACxB,CAAC,CAAE,QAAQ,CAAC,WAAW,EAAqB;YAC5C,CAAC,CAAC,QAAQ,CAAC;QAEnB,MAAM,OAAO,GAAiB;YAC1B,QAAQ,EAAE,gBAAgB;YAC1B,aAAa,EAAE,SAAS;YACxB,cAAc,EAAE,UAAU;YAC1B,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;SAC5C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,YAAY,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACJ;AArCD,4BAqCC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@harshit-sandilya/cortexdb-js",
|
|
3
|
+
"version": "0.2.8",
|
|
4
|
+
"description": "CortexDB JavaScript/TypeScript SDK — A RAG-powered memory database client.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git://github.com/harshit-sandilya/CortexDB.git"
|
|
8
|
+
},
|
|
9
|
+
"main": "dist/index.js",
|
|
10
|
+
"types": "dist/index.d.ts",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist"
|
|
13
|
+
],
|
|
14
|
+
"scripts": {
|
|
15
|
+
"start": "tsx main.ts",
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"clean": "rimraf dist",
|
|
18
|
+
"test": "vitest run --config vitest.unit.config.ts",
|
|
19
|
+
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
20
|
+
"test:all": "vitest run --config vitest.unit.config.ts && vitest run --config vitest.e2e.config.ts",
|
|
21
|
+
"test:watch": "vitest --config vitest.unit.config.ts"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"cortexdb",
|
|
25
|
+
"rag",
|
|
26
|
+
"vector-database",
|
|
27
|
+
"knowledge-graph",
|
|
28
|
+
"sdk"
|
|
29
|
+
],
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^25.3.0",
|
|
33
|
+
"tsx": "^4.21.0",
|
|
34
|
+
"typescript": "^5.7.0",
|
|
35
|
+
"vitest": "^4.0.18"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"dotenv": "^17.3.1"
|
|
39
|
+
}
|
|
40
|
+
}
|