@botmem/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Typed HTTP client for the Botmem REST API.
3
+ */
4
+ export interface Memory {
5
+ id: string;
6
+ text: string;
7
+ sourceType: string;
8
+ connectorType: string;
9
+ sourceId: string;
10
+ eventTime: string;
11
+ ingestTime: string;
12
+ importance: number | null;
13
+ factuality: string | null;
14
+ entities: string | null;
15
+ claims: string | null;
16
+ weights: string | null;
17
+ metadata: string | null;
18
+ embeddingStatus: string;
19
+ createdAt: string;
20
+ accountIdentifier?: string | null;
21
+ [key: string]: unknown;
22
+ }
23
+ export interface SearchResult {
24
+ id: string;
25
+ text: string;
26
+ sourceType: string;
27
+ connectorType: string;
28
+ eventTime: string;
29
+ factuality: string;
30
+ entities: string;
31
+ metadata: string;
32
+ accountIdentifier: string | null;
33
+ score: number;
34
+ weights: {
35
+ semantic: number;
36
+ rerank: number;
37
+ recency: number;
38
+ importance: number;
39
+ trust: number;
40
+ final: number;
41
+ };
42
+ }
43
+ export interface MemoryStats {
44
+ total: number;
45
+ bySource: Record<string, number>;
46
+ byConnector: Record<string, number>;
47
+ byFactuality: Record<string, number>;
48
+ }
49
+ export interface GraphData {
50
+ nodes: Array<{
51
+ id: string;
52
+ label: string;
53
+ type: string;
54
+ [key: string]: unknown;
55
+ }>;
56
+ edges: Array<{
57
+ source: string;
58
+ target: string;
59
+ type: string;
60
+ [key: string]: unknown;
61
+ }>;
62
+ }
63
+ export interface Contact {
64
+ id: string;
65
+ displayName: string;
66
+ avatars: string;
67
+ metadata: string;
68
+ createdAt: string;
69
+ updatedAt: string;
70
+ identifiers: Array<{
71
+ id: string;
72
+ identifierType: string;
73
+ identifierValue: string;
74
+ connectorType: string | null;
75
+ confidence: number;
76
+ }>;
77
+ [key: string]: unknown;
78
+ }
79
+ export interface ConnectorAccount {
80
+ id: string;
81
+ type: string;
82
+ identifier: string;
83
+ status: string;
84
+ schedule: string | null;
85
+ lastSync: string | null;
86
+ memoriesIngested: number | null;
87
+ lastError: string | null;
88
+ }
89
+ export interface Job {
90
+ id: string;
91
+ connector: string;
92
+ accountId: string;
93
+ accountIdentifier: string | null;
94
+ status: string;
95
+ priority: number;
96
+ progress: number | null;
97
+ total: number | null;
98
+ startedAt: string | null;
99
+ completedAt: string | null;
100
+ error: string | null;
101
+ }
102
+ export interface QueueStats {
103
+ [queueName: string]: {
104
+ waiting: number;
105
+ active: number;
106
+ completed: number;
107
+ failed: number;
108
+ delayed: number;
109
+ };
110
+ }
111
+ export declare class BotmemApiError extends Error {
112
+ status: number;
113
+ body?: unknown | undefined;
114
+ constructor(message: string, status: number, body?: unknown | undefined);
115
+ }
116
+ export declare class BotmemClient {
117
+ private baseUrl;
118
+ private token;
119
+ constructor(baseUrl: string);
120
+ setToken(token: string): void;
121
+ login(email: string, password: string): Promise<{
122
+ accessToken: string;
123
+ user: {
124
+ id: string;
125
+ email: string;
126
+ name: string;
127
+ };
128
+ }>;
129
+ private request;
130
+ searchMemories(query: string, filters?: Record<string, string>, limit?: number, memoryBankId?: string): Promise<{
131
+ items: SearchResult[];
132
+ fallback: boolean;
133
+ resolvedEntities?: {
134
+ contacts: {
135
+ id: string;
136
+ displayName: string;
137
+ }[];
138
+ topicWords: string[];
139
+ };
140
+ }>;
141
+ listMemories(params?: {
142
+ limit?: number;
143
+ offset?: number;
144
+ connectorType?: string;
145
+ sourceType?: string;
146
+ }): Promise<{
147
+ items: Memory[];
148
+ total: number;
149
+ }>;
150
+ getMemory(id: string): Promise<Memory>;
151
+ deleteMemory(id: string): Promise<{
152
+ ok: boolean;
153
+ }>;
154
+ getMemoryStats(): Promise<MemoryStats>;
155
+ listContacts(params?: {
156
+ limit?: number;
157
+ offset?: number;
158
+ }): Promise<{
159
+ items: Contact[];
160
+ total: number;
161
+ }>;
162
+ searchContacts(query: string): Promise<Contact[]>;
163
+ getContact(id: string): Promise<Contact>;
164
+ getContactMemories(id: string): Promise<Memory[]>;
165
+ listAccounts(): Promise<{
166
+ accounts: ConnectorAccount[];
167
+ }>;
168
+ listJobs(accountId?: string): Promise<{
169
+ jobs: Job[];
170
+ }>;
171
+ triggerSync(accountId: string): Promise<{
172
+ job: Job;
173
+ }>;
174
+ cancelJob(id: string): Promise<{
175
+ ok: boolean;
176
+ }>;
177
+ retryFailedJobs(): Promise<{
178
+ ok: boolean;
179
+ retried: number;
180
+ }>;
181
+ retryFailedMemories(): Promise<{
182
+ enqueued: number;
183
+ total: number;
184
+ }>;
185
+ getQueueStats(): Promise<QueueStats>;
186
+ getVersion(): Promise<{
187
+ buildTime: string;
188
+ gitHash: string;
189
+ uptime: number;
190
+ }>;
191
+ submitRecoveryKey(recoveryKey: string): Promise<any>;
192
+ agentAsk(query: string, filters?: Record<string, string>, limit?: number): Promise<any>;
193
+ agentSummarize(query: string, maxResults?: number): Promise<any>;
194
+ agentContext(contactId: string): Promise<any>;
195
+ listMemoryBanks(): Promise<any>;
196
+ createMemoryBank(name: string): Promise<any>;
197
+ renameMemoryBank(id: string, name: string): Promise<any>;
198
+ deleteMemoryBank(id: string): Promise<void>;
199
+ getTimeline(params: {
200
+ from?: string;
201
+ to?: string;
202
+ connectorType?: string;
203
+ sourceType?: string;
204
+ query?: string;
205
+ limit?: number;
206
+ }): Promise<{
207
+ items: Memory[];
208
+ total: number;
209
+ }>;
210
+ getRelated(memoryId: string, limit?: number): Promise<{
211
+ items: Array<{
212
+ id: string;
213
+ text: string;
214
+ sourceType: string;
215
+ connectorType: string;
216
+ eventTime: string;
217
+ score: number;
218
+ relationship: string;
219
+ }>;
220
+ source: Memory | null;
221
+ }>;
222
+ searchEntities(query: string, limit?: number, type?: string): Promise<{
223
+ entities: Array<{
224
+ value: string;
225
+ type: string;
226
+ memoryCount: number;
227
+ connectors: string[];
228
+ }>;
229
+ total: number;
230
+ }>;
231
+ getEntityGraph(value: string, limit?: number): Promise<{
232
+ entity: string;
233
+ memories: any[];
234
+ relatedEntities: any[];
235
+ contacts: any[];
236
+ memoryCount: number;
237
+ }>;
238
+ }
package/dist/client.js ADDED
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ /**
3
+ * Typed HTTP client for the Botmem REST API.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BotmemClient = exports.BotmemApiError = void 0;
7
+ class BotmemApiError extends Error {
8
+ status;
9
+ body;
10
+ constructor(message, status, body) {
11
+ super(message);
12
+ this.status = status;
13
+ this.body = body;
14
+ this.name = 'BotmemApiError';
15
+ }
16
+ }
17
+ exports.BotmemApiError = BotmemApiError;
18
+ class BotmemClient {
19
+ baseUrl;
20
+ token = null;
21
+ constructor(baseUrl) {
22
+ this.baseUrl = baseUrl;
23
+ this.baseUrl = baseUrl.replace(/\/+$/, '');
24
+ }
25
+ setToken(token) {
26
+ this.token = token;
27
+ }
28
+ async login(email, password) {
29
+ const result = await this.request('/user-auth/login', {
30
+ method: 'POST',
31
+ body: JSON.stringify({ email, password }),
32
+ });
33
+ this.token = result.accessToken;
34
+ return result;
35
+ }
36
+ async request(path, options = {}) {
37
+ const url = `${this.baseUrl}${path}`;
38
+ const headers = {
39
+ 'Content-Type': 'application/json',
40
+ ...(options.headers || {}),
41
+ };
42
+ if (this.token) {
43
+ headers['Authorization'] = `Bearer ${this.token}`;
44
+ }
45
+ let response;
46
+ try {
47
+ response = await fetch(url, { ...options, headers });
48
+ }
49
+ catch (err) {
50
+ throw new BotmemApiError(`Failed to connect to Botmem API at ${url}: ${err instanceof Error ? err.message : String(err)}`, 0);
51
+ }
52
+ if (!response.ok) {
53
+ let body;
54
+ try {
55
+ body = await response.json();
56
+ }
57
+ catch {
58
+ body = await response.text().catch(() => null);
59
+ }
60
+ throw new BotmemApiError(`Botmem API returned ${response.status} ${response.statusText} for ${options.method || 'GET'} ${path}`, response.status, body);
61
+ }
62
+ return response.json();
63
+ }
64
+ // --- Memory ---
65
+ async searchMemories(query, filters, limit, memoryBankId) {
66
+ return this.request('/memories/search', {
67
+ method: 'POST',
68
+ body: JSON.stringify({ query, filters, limit, memoryBankId }),
69
+ });
70
+ }
71
+ async listMemories(params) {
72
+ const qs = new URLSearchParams();
73
+ if (params?.limit)
74
+ qs.set('limit', String(params.limit));
75
+ if (params?.offset)
76
+ qs.set('offset', String(params.offset));
77
+ if (params?.connectorType)
78
+ qs.set('connectorType', params.connectorType);
79
+ if (params?.sourceType)
80
+ qs.set('sourceType', params.sourceType);
81
+ const query = qs.toString();
82
+ return this.request(`/memories${query ? '?' + query : ''}`);
83
+ }
84
+ async getMemory(id) {
85
+ return this.request(`/memories/${encodeURIComponent(id)}`);
86
+ }
87
+ async deleteMemory(id) {
88
+ return this.request(`/memories/${encodeURIComponent(id)}`, {
89
+ method: 'DELETE',
90
+ });
91
+ }
92
+ async getMemoryStats() {
93
+ return this.request('/memories/stats');
94
+ }
95
+ // --- Contacts ---
96
+ async listContacts(params) {
97
+ const qs = new URLSearchParams();
98
+ if (params?.limit)
99
+ qs.set('limit', String(params.limit));
100
+ if (params?.offset)
101
+ qs.set('offset', String(params.offset));
102
+ const query = qs.toString();
103
+ return this.request(`/people${query ? '?' + query : ''}`);
104
+ }
105
+ async searchContacts(query) {
106
+ return this.request('/people/search', {
107
+ method: 'POST',
108
+ body: JSON.stringify({ query }),
109
+ });
110
+ }
111
+ async getContact(id) {
112
+ return this.request(`/people/${encodeURIComponent(id)}`);
113
+ }
114
+ async getContactMemories(id) {
115
+ return this.request(`/people/${encodeURIComponent(id)}/memories`);
116
+ }
117
+ // --- Accounts ---
118
+ async listAccounts() {
119
+ return this.request('/accounts');
120
+ }
121
+ // --- Jobs ---
122
+ async listJobs(accountId) {
123
+ const qs = accountId ? `?accountId=${encodeURIComponent(accountId)}` : '';
124
+ return this.request(`/jobs${qs}`);
125
+ }
126
+ async triggerSync(accountId) {
127
+ return this.request(`/jobs/sync/${encodeURIComponent(accountId)}`, {
128
+ method: 'POST',
129
+ });
130
+ }
131
+ async cancelJob(id) {
132
+ return this.request(`/jobs/${encodeURIComponent(id)}`, {
133
+ method: 'DELETE',
134
+ });
135
+ }
136
+ async retryFailedJobs() {
137
+ return this.request('/jobs/retry-failed', {
138
+ method: 'POST',
139
+ });
140
+ }
141
+ async retryFailedMemories() {
142
+ return this.request('/memories/retry-failed', {
143
+ method: 'POST',
144
+ });
145
+ }
146
+ async getQueueStats() {
147
+ return this.request('/jobs/queues');
148
+ }
149
+ async getVersion() {
150
+ return this.request('/version');
151
+ }
152
+ // --- Recovery Key ---
153
+ async submitRecoveryKey(recoveryKey) {
154
+ return this.request('/user-auth/recovery-key', {
155
+ method: 'POST',
156
+ body: JSON.stringify({ recoveryKey }),
157
+ });
158
+ }
159
+ // --- Agent ---
160
+ async agentAsk(query, filters, limit) {
161
+ return this.request('/agent/ask', {
162
+ method: 'POST',
163
+ body: JSON.stringify({ query, filters, limit }),
164
+ });
165
+ }
166
+ async agentSummarize(query, maxResults) {
167
+ return this.request('/agent/summarize', {
168
+ method: 'POST',
169
+ body: JSON.stringify({ query, maxResults }),
170
+ });
171
+ }
172
+ async agentContext(contactId) {
173
+ return this.request(`/agent/context/${encodeURIComponent(contactId)}`);
174
+ }
175
+ // --- Memory Banks ---
176
+ async listMemoryBanks() {
177
+ return this.request('/memory-banks');
178
+ }
179
+ async createMemoryBank(name) {
180
+ return this.request('/memory-banks', {
181
+ method: 'POST',
182
+ body: JSON.stringify({ name }),
183
+ });
184
+ }
185
+ async renameMemoryBank(id, name) {
186
+ return this.request(`/memory-banks/${encodeURIComponent(id)}`, {
187
+ method: 'PATCH',
188
+ body: JSON.stringify({ name }),
189
+ });
190
+ }
191
+ async deleteMemoryBank(id) {
192
+ await this.request(`/memory-banks/${encodeURIComponent(id)}`, {
193
+ method: 'DELETE',
194
+ });
195
+ }
196
+ // --- Timeline & Related ---
197
+ async getTimeline(params) {
198
+ const qs = new URLSearchParams();
199
+ if (params.from)
200
+ qs.set('from', params.from);
201
+ if (params.to)
202
+ qs.set('to', params.to);
203
+ if (params.connectorType)
204
+ qs.set('connectorType', params.connectorType);
205
+ if (params.sourceType)
206
+ qs.set('sourceType', params.sourceType);
207
+ if (params.query)
208
+ qs.set('query', params.query);
209
+ if (params.limit)
210
+ qs.set('limit', String(params.limit));
211
+ const query = qs.toString();
212
+ return this.request(`/memories/timeline${query ? '?' + query : ''}`);
213
+ }
214
+ async getRelated(memoryId, limit) {
215
+ const qs = limit ? `?limit=${limit}` : '';
216
+ return this.request(`/memories/${encodeURIComponent(memoryId)}/related${qs}`);
217
+ }
218
+ // --- Entities ---
219
+ async searchEntities(query, limit, type) {
220
+ const qs = new URLSearchParams({ q: query });
221
+ if (limit)
222
+ qs.set('limit', String(limit));
223
+ if (type)
224
+ qs.set('type', type);
225
+ return this.request(`/memories/entities/search?${qs}`);
226
+ }
227
+ async getEntityGraph(value, limit) {
228
+ const qs = limit ? `?limit=${limit}` : '';
229
+ return this.request(`/memories/entities/${encodeURIComponent(value)}/graph${qs}`);
230
+ }
231
+ }
232
+ exports.BotmemClient = BotmemClient;
233
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { BotmemClient } from '../client.js';
2
+ export declare const askHelp: string;
3
+ export declare const contextHelp: string;
4
+ export declare function runAsk(client: BotmemClient, args: string[], json: boolean): Promise<void>;
5
+ export declare function runContext(client: BotmemClient, args: string[], json: boolean): Promise<void>;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contextHelp = exports.askHelp = void 0;
4
+ exports.runAsk = runAsk;
5
+ exports.runContext = runContext;
6
+ const format_js_1 = require("../format.js");
7
+ exports.askHelp = `
8
+ botmem ask -- Natural language memory query
9
+
10
+ USAGE
11
+ botmem ask <query> [options]
12
+
13
+ OPTIONS
14
+ --summarize Use LLM summarization (POST /agent/summarize)
15
+ --source <type> Filter by source (email, message, photo, location)
16
+ --connector <type> Filter by connector (gmail, slack, whatsapp, imessage)
17
+ --memory-bank <id> Filter by memory bank ID
18
+ --limit <n> Max results (default: 10)
19
+ --json Output raw JSON
20
+
21
+ EXAMPLES
22
+ botmem ask "what did Ahmed say about the project?"
23
+ botmem ask "summarize my week" --summarize
24
+ botmem ask "photos from dubai" --source photo --json
25
+ `.trim();
26
+ exports.contextHelp = `
27
+ botmem context -- Full context about a contact
28
+
29
+ USAGE
30
+ botmem context <contactId> [--json]
31
+
32
+ EXAMPLES
33
+ botmem context abc123-def456
34
+ botmem context abc123-def456 --json
35
+ `.trim();
36
+ async function runAsk(client, args, json) {
37
+ const query = [];
38
+ const filters = {};
39
+ let limit;
40
+ let summarize = false;
41
+ for (let i = 0; i < args.length; i++) {
42
+ const a = args[i];
43
+ if (a === '--summarize') {
44
+ summarize = true;
45
+ }
46
+ else if (a === '--source' || a === '--connector') {
47
+ const val = args[++i];
48
+ if (!val) {
49
+ console.error(`Missing value for ${a}`);
50
+ process.exit(1);
51
+ }
52
+ if (a === '--source')
53
+ filters['sourceType'] = val;
54
+ else
55
+ filters['connectorType'] = val;
56
+ }
57
+ else if (a === '--memory-bank') {
58
+ filters['memoryBankId'] = args[++i];
59
+ }
60
+ else if (a === '--limit') {
61
+ limit = parseInt(args[++i], 10);
62
+ }
63
+ else if (!a.startsWith('--')) {
64
+ query.push(a);
65
+ }
66
+ }
67
+ const queryStr = query.join(' ');
68
+ if (!queryStr) {
69
+ console.error('Error: ask requires a query\n');
70
+ console.log(exports.askHelp);
71
+ process.exit(1);
72
+ }
73
+ let result;
74
+ if (summarize) {
75
+ result = await client.agentSummarize(queryStr, limit);
76
+ }
77
+ else {
78
+ result = await client.agentAsk(queryStr, Object.keys(filters).length ? filters : undefined, limit);
79
+ }
80
+ if (json) {
81
+ console.log(JSON.stringify(result, null, 2));
82
+ }
83
+ else {
84
+ console.log((0, format_js_1.formatAgentAnswer)(result.data || result));
85
+ }
86
+ }
87
+ async function runContext(client, args, json) {
88
+ const contactId = args[0];
89
+ if (!contactId) {
90
+ console.error('Error: context requires a contact ID\n');
91
+ console.log(exports.contextHelp);
92
+ process.exit(1);
93
+ }
94
+ const result = await client.agentContext(contactId);
95
+ if (json) {
96
+ console.log(JSON.stringify(result, null, 2));
97
+ }
98
+ else {
99
+ console.log((0, format_js_1.formatAgentContext)(result.data || result));
100
+ }
101
+ }
102
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BotmemClient } from '../client.js';
2
+ export declare function runContacts(client: BotmemClient, args: string[], json: boolean): Promise<void>;
3
+ export declare function runContact(client: BotmemClient, args: string[], json: boolean): Promise<void>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runContacts = runContacts;
4
+ exports.runContact = runContact;
5
+ const format_js_1 = require("../format.js");
6
+ async function runContacts(client, args, json) {
7
+ // Check for "contacts search <query>"
8
+ if (args[0] === 'search') {
9
+ const query = args.slice(1).join(' ');
10
+ if (!query) {
11
+ console.error('Error: contacts search requires a query');
12
+ process.exit(1);
13
+ }
14
+ const results = await client.searchContacts(query);
15
+ if (json) {
16
+ console.log(JSON.stringify(results, null, 2));
17
+ }
18
+ else {
19
+ console.log((0, format_js_1.formatContactList)(results, results.length));
20
+ }
21
+ return;
22
+ }
23
+ let limit;
24
+ let offset;
25
+ for (let i = 0; i < args.length; i++) {
26
+ if (args[i] === '--limit')
27
+ limit = parseInt(args[++i], 10);
28
+ else if (args[i] === '--offset')
29
+ offset = parseInt(args[++i], 10);
30
+ }
31
+ const result = await client.listContacts({ limit, offset });
32
+ if (json) {
33
+ console.log(JSON.stringify(result, null, 2));
34
+ }
35
+ else {
36
+ console.log((0, format_js_1.formatContactList)(result.items, result.total));
37
+ }
38
+ }
39
+ async function runContact(client, args, json) {
40
+ const id = args[0];
41
+ if (!id) {
42
+ console.error('Error: contact requires an ID');
43
+ process.exit(1);
44
+ }
45
+ if (args[1] === 'memories') {
46
+ const memories = await client.getContactMemories(id);
47
+ if (json) {
48
+ console.log(JSON.stringify(memories, null, 2));
49
+ }
50
+ else {
51
+ console.log((0, format_js_1.formatMemoryList)(memories, memories.length));
52
+ }
53
+ return;
54
+ }
55
+ const contact = await client.getContact(id);
56
+ if (json) {
57
+ console.log(JSON.stringify(contact, null, 2));
58
+ }
59
+ else {
60
+ console.log((0, format_js_1.formatContact)(contact));
61
+ }
62
+ }
63
+ //# sourceMappingURL=contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/commands/contacts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { BotmemClient } from '../client.js';
2
+ export declare const entitiesHelp: string;
3
+ export declare const relatedHelp: string;
4
+ export declare function runEntities(client: BotmemClient, args: string[], json: boolean): Promise<void>;
5
+ export declare function runRelated(client: BotmemClient, args: string[], json: boolean): Promise<void>;