@lumi0/sdk 0.0.6 → 0.0.7

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 CHANGED
@@ -450,7 +450,7 @@ The client accepts configuration options:
450
450
  ```ts
451
451
  const client = new Lumi0({
452
452
  apiKey: process.env.LUMI0_API_KEY!,
453
- baseUrl: "https://api.lumi0.com/api/v1",
453
+ baseUrl: "https://api.lumi0.com/memory/v1",
454
454
  timeout: 30_000,
455
455
  });
456
456
  ```
@@ -470,7 +470,7 @@ The Lumi0 API endpoint.
470
470
  Default:
471
471
 
472
472
  ```text
473
- https://api.lumi0.com/api/v1
473
+ https://api.lumi0.com/memory/v1
474
474
  ```
475
475
 
476
476
  You can override it:
@@ -478,7 +478,7 @@ You can override it:
478
478
  ```ts
479
479
  const client = new Lumi0({
480
480
  apiKey: process.env.LUMI0_API_KEY!,
481
- baseUrl: "https://api.lumi0.com/api/v1",
481
+ baseUrl: "https://api.lumi0.com/memory/v1",
482
482
  });
483
483
  ```
484
484
 
package/dist/index.d.mts CHANGED
@@ -23,20 +23,28 @@ interface StoreMemoryInput {
23
23
  content: string;
24
24
  dedupeThreshold?: number;
25
25
  id: string;
26
+ /** Required for universal (org-wide) API keys. */
27
+ collectionId?: string;
26
28
  }
27
29
  interface BuildContextInput {
28
30
  id: string;
29
31
  query: string;
30
32
  limit?: number;
31
33
  minSimilarity?: number;
34
+ /** Required for universal (org-wide) API keys. */
35
+ collectionId?: string;
32
36
  }
33
37
  interface UploadFileInput {
34
38
  id: string;
35
39
  url: string;
40
+ /** Required for universal (org-wide) API keys. */
41
+ collectionId?: string;
36
42
  }
37
43
  interface MemoryRollbackInput {
38
44
  memoryId: string;
39
45
  version: number;
46
+ /** Required for universal (org-wide) API keys. */
47
+ collectionId?: string;
40
48
  }
41
49
  interface SearchMemoryInput {
42
50
  query: string;
@@ -44,10 +52,14 @@ interface SearchMemoryInput {
44
52
  minSimilarity?: number;
45
53
  memoryType?: string;
46
54
  id: string;
55
+ /** Required for universal (org-wide) API keys. */
56
+ collectionId?: string;
47
57
  }
48
58
  interface GetMemoryInput {
49
59
  id: string;
50
60
  version?: number;
61
+ /** Required for universal (org-wide) API keys. */
62
+ collectionId?: string;
51
63
  }
52
64
  interface CompressMemoryInput {
53
65
  content: string;
@@ -85,6 +97,8 @@ interface Compress {
85
97
  }
86
98
  interface ForgetMemoryInput {
87
99
  id: string;
100
+ /** Required for universal (org-wide) API keys. */
101
+ collectionId?: string;
88
102
  }
89
103
  interface Context {
90
104
  data: string;
@@ -110,11 +124,11 @@ declare class HttpClient {
110
124
  private readonly options;
111
125
  constructor(options: HttpClientOptions);
112
126
  request<T>(path: string, init?: RequestInit): Promise<T>;
113
- get<T>(path: string): Promise<T>;
114
- post<T>(path: string, body?: unknown): Promise<T>;
127
+ get<T>(path: string, init?: RequestInit): Promise<T>;
128
+ post<T>(path: string, body?: unknown, init?: RequestInit): Promise<T>;
115
129
  put<T>(path: string, body?: unknown): Promise<T>;
116
130
  patch<T>(path: string, body?: unknown): Promise<T>;
117
- delete<T>(path: string, query?: Record<string, string | number | boolean | undefined>): Promise<T>;
131
+ delete<T>(path: string, query?: Record<string, string | number | boolean | undefined>, init?: RequestInit): Promise<T>;
118
132
  private parseError;
119
133
  }
120
134
  //#endregion
@@ -122,7 +136,15 @@ declare class HttpClient {
122
136
  declare class MemoryApi {
123
137
  private readonly http;
124
138
  constructor(http: HttpClient);
125
- history(id: string): Promise<MemoryVersion[]>;
139
+ store(input: StoreMemoryInput): Promise<unknown>;
140
+ search(input: SearchMemoryInput): Promise<Search>;
141
+ get(input: GetMemoryInput): Promise<Search>;
142
+ forget(input: ForgetMemoryInput): Promise<unknown>;
143
+ batch(input: StoreMemoryInput[]): Promise<unknown>;
144
+ context(input: BuildContextInput): Promise<Context>;
145
+ files(input: UploadFileInput): Promise<unknown>;
146
+ compress(input: CompressMemoryInput): Promise<Compress>;
147
+ history(id: string, collectionId?: string): Promise<MemoryVersion[]>;
126
148
  rollback(input: MemoryRollbackInput): Promise<unknown>;
127
149
  }
128
150
  //#endregion
@@ -141,4 +163,4 @@ declare class Lumi0 {
141
163
  compress(input: CompressMemoryInput): Promise<Compress>;
142
164
  }
143
165
  //#endregion
144
- export { BuildContextInput, Compress, CompressMemoryInput, Context, ErrorResponse, ForgetMemoryInput, GetMemoryInput, HttpClientOptions, IPostBody, Lumi0, Lumi0Options, MemoryRollbackInput, MemoryVersion, PostBody, Search, SearchMemoryInput, StoreMemoryInput, UploadFileInput };
166
+ export { BuildContextInput, Compress, CompressMemoryInput, Context, ErrorResponse, ForgetMemoryInput, GetMemoryInput, HttpClient, HttpClientOptions, IPostBody, Lumi0, Lumi0Options, MemoryApi, MemoryRollbackInput, MemoryVersion, PostBody, Search, SearchMemoryInput, StoreMemoryInput, UploadFileInput };
package/dist/index.mjs CHANGED
@@ -27,11 +27,12 @@ var HttpClient = class {
27
27
  clearTimeout(timeout);
28
28
  }
29
29
  }
30
- get(path) {
31
- return this.request(path);
30
+ get(path, init) {
31
+ return this.request(path, init);
32
32
  }
33
- post(path, body) {
33
+ post(path, body, init) {
34
34
  return this.request(path, {
35
+ ...init,
35
36
  method: "POST",
36
37
  body: body ? JSON.stringify(body) : void 0
37
38
  });
@@ -48,13 +49,16 @@ var HttpClient = class {
48
49
  body: body ? JSON.stringify(body) : void 0
49
50
  });
50
51
  }
51
- delete(path, query) {
52
+ delete(path, query, init) {
52
53
  const params = new URLSearchParams();
53
54
  if (query) {
54
55
  for (const [key, value] of Object.entries(query)) if (value !== void 0) params.append(key, String(value));
55
56
  }
56
57
  const url = params.toString() ? `${path}?${params}` : path;
57
- return this.request(url, { method: "DELETE" });
58
+ return this.request(url, {
59
+ ...init,
60
+ method: "DELETE"
61
+ });
58
62
  }
59
63
  async parseError(response) {
60
64
  let message = response.statusText;
@@ -67,32 +71,20 @@ var HttpClient = class {
67
71
  };
68
72
  //#endregion
69
73
  //#region src/memory.ts
74
+ /**
75
+ * Universal (org-wide) API keys must target a collection per request. The
76
+ * memory service reads it from the `X-Collection-Id` header for routes
77
+ * without a body channel (`DELETE /memory/:id`, history, rollback), so the
78
+ * SDK sends it as a header instead of a query param.
79
+ */
80
+ function collectionHeader(collectionId) {
81
+ return collectionId ? { headers: { "X-Collection-Id": collectionId } } : void 0;
82
+ }
70
83
  var MemoryApi = class {
71
84
  http;
72
85
  constructor(http) {
73
86
  this.http = http;
74
87
  }
75
- history(id) {
76
- return this.http.get(`/memories/history/${id}`).then((response) => response.data);
77
- }
78
- rollback(input) {
79
- return this.http.post(`/memories/${input.memoryId}/versions/${input.version}/rollback`);
80
- }
81
- };
82
- //#endregion
83
- //#region src/client.ts
84
- var Lumi0 = class {
85
- http;
86
- mem;
87
- constructor(option) {
88
- const apiKey = option.apiKey;
89
- this.http = new HttpClient({
90
- baseUrl: option.baseUrl ?? "https://api.lumi0.com/api/v1",
91
- apiKey,
92
- timeout: option.timeout ?? 3e4
93
- });
94
- this.mem = new MemoryApi(this.http);
95
- }
96
88
  store(input) {
97
89
  return this.http.post("/memory", {
98
90
  ...input,
@@ -109,7 +101,7 @@ var Lumi0 = class {
109
101
  return this.http.post("/memory/get", input).then((res) => res.data);
110
102
  }
111
103
  forget(input) {
112
- return this.http.delete(`/memory/${input.id}`);
104
+ return this.http.delete(`/memory/${input.id}`, void 0, collectionHeader(input.collectionId));
113
105
  }
114
106
  batch(input) {
115
107
  return this.http.post("/memory/batch", input.map((item) => ({ ...item })));
@@ -123,12 +115,58 @@ var Lumi0 = class {
123
115
  files(input) {
124
116
  return this.http.post("/file/uploads", {
125
117
  url: input.url,
126
- externalId: input.id
118
+ id: input.id,
119
+ collectionId: input.collectionId
127
120
  });
128
121
  }
129
122
  compress(input) {
130
123
  return this.http.post("/compress", input).then((res) => res.data);
131
124
  }
125
+ history(id, collectionId) {
126
+ return this.http.get(`/memories/history/${id}`, collectionHeader(collectionId)).then((response) => response.data);
127
+ }
128
+ rollback(input) {
129
+ return this.http.post(`/memories/${input.memoryId}/versions/${input.version}/rollback`, void 0, collectionHeader(input.collectionId));
130
+ }
131
+ };
132
+ //#endregion
133
+ //#region src/client.ts
134
+ var Lumi0 = class {
135
+ http;
136
+ mem;
137
+ constructor(option) {
138
+ const apiKey = option.apiKey;
139
+ this.http = new HttpClient({
140
+ baseUrl: option.baseUrl ?? "https://api.lumi0.com/memory/v1",
141
+ apiKey,
142
+ timeout: option.timeout ?? 3e4
143
+ });
144
+ this.mem = new MemoryApi(this.http);
145
+ }
146
+ store(input) {
147
+ return this.mem.store(input);
148
+ }
149
+ search(input) {
150
+ return this.mem.search(input);
151
+ }
152
+ get(input) {
153
+ return this.mem.get(input);
154
+ }
155
+ forget(input) {
156
+ return this.mem.forget(input);
157
+ }
158
+ batch(input) {
159
+ return this.mem.batch(input);
160
+ }
161
+ context(input) {
162
+ return this.mem.context(input);
163
+ }
164
+ files(input) {
165
+ return this.mem.files(input);
166
+ }
167
+ compress(input) {
168
+ return this.mem.compress(input);
169
+ }
132
170
  };
133
171
  //#endregion
134
- export { Lumi0 };
172
+ export { HttpClient, Lumi0, MemoryApi };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumi0/sdk",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Official TypeScript SDK for Lumi0",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -33,6 +33,7 @@
33
33
  "scripts": {
34
34
  "build": "tsdown index.ts",
35
35
  "dev": "bun --watch index.ts",
36
+ "test": "bun test",
36
37
  "typecheck": "tsc --noEmit",
37
38
  "prepublishOnly": "bun run typecheck && bun run build"
38
39
  },