memoire-ai 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.
Files changed (51) hide show
  1. package/README.md +18 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +359 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/commands.d.ts +33 -0
  7. package/dist/commands.d.ts.map +1 -0
  8. package/dist/commands.js +497 -0
  9. package/dist/commands.js.map +1 -0
  10. package/dist/configure.d.ts +65 -0
  11. package/dist/configure.d.ts.map +1 -0
  12. package/dist/configure.js +485 -0
  13. package/dist/configure.js.map +1 -0
  14. package/dist/dashboard.d.ts +9 -0
  15. package/dist/dashboard.d.ts.map +1 -0
  16. package/dist/dashboard.js +8 -0
  17. package/dist/dashboard.js.map +1 -0
  18. package/dist/dependencies.d.ts +3 -0
  19. package/dist/dependencies.d.ts.map +1 -0
  20. package/dist/dependencies.js +213 -0
  21. package/dist/dependencies.js.map +1 -0
  22. package/dist/detect.d.ts +3 -0
  23. package/dist/detect.d.ts.map +1 -0
  24. package/dist/detect.js +30 -0
  25. package/dist/detect.js.map +1 -0
  26. package/dist/hooks.d.ts +25 -0
  27. package/dist/hooks.d.ts.map +1 -0
  28. package/dist/hooks.js +479 -0
  29. package/dist/hooks.js.map +1 -0
  30. package/dist/index.d.ts +9 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +9 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/local-config.d.ts +8 -0
  35. package/dist/local-config.d.ts.map +1 -0
  36. package/dist/local-config.js +16 -0
  37. package/dist/local-config.js.map +1 -0
  38. package/dist/login.d.ts +20 -0
  39. package/dist/login.d.ts.map +1 -0
  40. package/dist/login.js +93 -0
  41. package/dist/login.js.map +1 -0
  42. package/dist/manual.d.ts +15 -0
  43. package/dist/manual.d.ts.map +1 -0
  44. package/dist/manual.js +143 -0
  45. package/dist/manual.js.map +1 -0
  46. package/dist/mcp.d.ts +5 -0
  47. package/dist/mcp.d.ts.map +1 -0
  48. package/dist/mcp.js +18 -0
  49. package/dist/mcp.js.map +1 -0
  50. package/package.json +55 -0
  51. package/skills/use-memoire/SKILL.md +79 -0
package/README.md ADDED
@@ -0,0 +1,18 @@
1
+ # Memoire CLI
2
+
3
+ Memoire installs shared coding context for Cursor, Claude Code, Codex, and MCP-compatible clients.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npx memoire install --client cursor --api-key sk_mem_xxx
9
+ ```
10
+
11
+ ## Commands
12
+
13
+ ```bash
14
+ npx memoire search "auth decisions"
15
+ npx memoire status
16
+ ```
17
+
18
+ The CLI writes shared config to `~/.memoire/config.json`, auto-registers the local client, and indexes dependency docs for the current repository when the API is available.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,359 @@
1
+ #!/usr/bin/env node
2
+ import { parseArgs } from 'node:util';
3
+ import { init, install } from './configure.js';
4
+ import { detectClient } from './detect.js';
5
+ import { runContextsGetCommand, runContextsGetCommandJson, runContextsListCommand, runContextsListCommandJson, runDoctorCommand, runDoctorCommandJson, runFactsCommand, runFactsCommandJson, runHandoffCommand, runProfileCommand, runProfileCommandJson, runResumeCommand, runSearchCommand, runSearchCommandJson, runStatusCommand, runStatusCommandJson, runUsageCommand, runUsageCommandJson, } from './commands.js';
6
+ import { runDashboardCommand } from './dashboard.js';
7
+ import { runMcpCommand } from './mcp.js';
8
+ import { runManualSetupCommand } from './manual.js';
9
+ import { runHookCommand } from './hooks.js';
10
+ import { runLoginCommand } from './login.js';
11
+ const { values, positionals } = parseArgs({
12
+ allowPositionals: true,
13
+ options: {
14
+ client: { type: 'string', short: 'c' },
15
+ 'api-key': { type: 'string' },
16
+ 'api-url': { type: 'string', default: 'http://esprit-prod-alb-1025392673.us-east-1.elb.amazonaws.com' },
17
+ 'org-id': { type: 'string' },
18
+ 'project-id': { type: 'string' },
19
+ 'org-name': { type: 'string' },
20
+ 'org-slug': { type: 'string' },
21
+ 'project-name': { type: 'string' },
22
+ 'project-slug': { type: 'string' },
23
+ 'user-name': { type: 'string' },
24
+ 'user-email': { type: 'string' },
25
+ 'setup-token': { type: 'string' },
26
+ 'invite-token': { type: 'string' },
27
+ 'config-path': { type: 'string' },
28
+ 'client-id': { type: 'string' },
29
+ port: { type: 'string' },
30
+ json: { type: 'boolean' },
31
+ help: { type: 'boolean', short: 'h' },
32
+ },
33
+ });
34
+ const command = positionals[0];
35
+ if (values.help || !command) {
36
+ console.log(`
37
+ memoire - Shared context layer for AI coding agents
38
+
39
+ Usage:
40
+ memoire setup Zero-config: auto-detect everything, bootstrap + install
41
+ memoire login [options]
42
+ memoire install [options]
43
+ memoire init [options]
44
+ memoire search <query>
45
+ memoire usage
46
+ memoire doctor
47
+ memoire profile
48
+ memoire facts
49
+ memoire resume [query]
50
+ memoire handoff [query]
51
+ memoire contexts [list]
52
+ memoire contexts save [query]
53
+ memoire contexts get <id>
54
+ memoire manual [options]
55
+ memoire hook <name>
56
+ memoire status
57
+ memoire dashboard [--port 4310]
58
+ memoire mcp
59
+
60
+ Options:
61
+ --client, -c Client type: cursor | claude | codex | amp
62
+ --api-key Memoire API key (sk_mem_...)
63
+ --api-url API URL (default: https://api.memoire.dev)
64
+ --org-id Organization ID
65
+ --project-id Project ID
66
+ --user-name Override detected user name
67
+ --user-email Override detected user email
68
+ --setup-token Setup token for bootstrapping additional orgs
69
+ --invite-token Join an existing workspace invitation
70
+ --org-name Organization name for init
71
+ --org-slug Organization slug for init
72
+ --project-name Project name for init
73
+ --project-slug Project slug for init
74
+ --config-path Override ~/.memoire/config.json for dashboard or MCP commands
75
+ --client-id Override the registered client_id for hook or MCP commands
76
+ --port Dashboard port (default: 4310)
77
+ --json Output as JSON (for piping and automation)
78
+ --help, -h Show this help
79
+
80
+ Examples:
81
+ npx memoire setup # Zero-config one-liner
82
+ npx memoire setup --api-url http://localhost:3100 # Self-hosted
83
+ npx memoire login # Browser/device auth + install
84
+ npx memoire init --client cursor --api-url http://localhost:3100 --org-name Acme
85
+ npx memoire init --client cursor --api-url http://localhost:3100 --invite-token <token>
86
+ npx memoire install --client cursor --api-key sk_mem_xxx
87
+ npx memoire install --client claude --api-key sk_mem_xxx --api-url http://localhost:3100
88
+ npx memoire search "auth decisions"
89
+ npx memoire usage
90
+ npx memoire doctor
91
+ npx memoire profile
92
+ npx memoire facts
93
+ npx memoire resume "drizzle migrations"
94
+ npx memoire handoff "oauth callbacks"
95
+ npx memoire contexts
96
+ npx memoire contexts save "oauth callbacks"
97
+ npx memoire contexts get handoff-123
98
+ npx memoire manual --client codex
99
+ npx memoire hook cursor-before-submit --client cursor
100
+ npx memoire status
101
+ npx memoire dashboard --port 4310
102
+ npx memoire mcp
103
+ `);
104
+ process.exit(0);
105
+ }
106
+ if (command === 'setup') {
107
+ // Zero-config setup: auto-detect client, health-check API, bootstrap + install
108
+ const apiUrl = values['api-url'];
109
+ console.log('\n Memoire Zero-Config Setup\n');
110
+ // 1. Auto-detect client
111
+ const client = values.client ?? (await detectClient());
112
+ if (!client) {
113
+ console.error(' Could not detect AI client (Cursor, Claude Code, Codex).');
114
+ console.error(' Use --client to specify one: memoire setup --client cursor');
115
+ process.exit(1);
116
+ }
117
+ console.log(` Detected client: ${client}`);
118
+ // 2. Health check API
119
+ console.log(` Checking API at ${apiUrl}...`);
120
+ try {
121
+ const healthRes = await fetch(`${apiUrl.replace(/\/$/, '')}/health`, {
122
+ signal: AbortSignal.timeout(5000),
123
+ });
124
+ if (!healthRes.ok) {
125
+ console.error(` API returned ${healthRes.status}. Is the Memoire API running?`);
126
+ process.exit(1);
127
+ }
128
+ console.log(' API is healthy');
129
+ }
130
+ catch {
131
+ console.error(` Could not reach API at ${apiUrl}`);
132
+ console.error(' Start the API first or use --api-url to specify the correct URL');
133
+ process.exit(1);
134
+ }
135
+ // 3. Check for existing config
136
+ const { existsSync } = await import('node:fs');
137
+ const { join } = await import('node:path');
138
+ const { homedir } = await import('node:os');
139
+ const existingConfig = join(homedir(), '.memoire', 'config.json');
140
+ if (existsSync(existingConfig) && !values['api-key']) {
141
+ console.log(' Found existing config at ~/.memoire/config.json');
142
+ try {
143
+ const { readFileSync } = await import('node:fs');
144
+ const config = JSON.parse(readFileSync(existingConfig, 'utf-8'));
145
+ if (config.api_key && config.org_id) {
146
+ console.log(' Re-installing with existing credentials...');
147
+ await install({
148
+ client: client,
149
+ apiKey: config.api_key,
150
+ apiUrl: config.api_url ?? apiUrl,
151
+ orgId: config.org_id,
152
+ projectId: config.project_id,
153
+ userName: values['user-name'],
154
+ userEmail: values['user-email'],
155
+ });
156
+ process.exit(0);
157
+ }
158
+ }
159
+ catch {
160
+ // Config unreadable, proceed with fresh init
161
+ }
162
+ }
163
+ // 4. Bootstrap fresh workspace
164
+ console.log(' Bootstrapping new workspace...');
165
+ await init({
166
+ client: client,
167
+ apiUrl,
168
+ setupToken: values['setup-token'],
169
+ inviteToken: values['invite-token'],
170
+ orgName: values['org-name'],
171
+ orgSlug: values['org-slug'],
172
+ projectName: values['project-name'],
173
+ projectSlug: values['project-slug'],
174
+ userName: values['user-name'],
175
+ userEmail: values['user-email'],
176
+ });
177
+ console.log('\n Setup complete! Memoire is ready.\n');
178
+ }
179
+ else if (command === 'install') {
180
+ const client = values.client ?? (await detectClient());
181
+ if (!client) {
182
+ console.error('Could not detect client. Use --client to specify one.');
183
+ process.exit(1);
184
+ }
185
+ const apiKey = values['api-key'];
186
+ if (!apiKey) {
187
+ console.error('API key required. Use --api-key to provide one.');
188
+ process.exit(1);
189
+ }
190
+ await install({
191
+ client: client,
192
+ apiKey,
193
+ apiUrl: values['api-url'],
194
+ orgId: values['org-id'],
195
+ projectId: values['project-id'],
196
+ userName: values['user-name'],
197
+ userEmail: values['user-email'],
198
+ });
199
+ }
200
+ else if (command === 'login') {
201
+ await runLoginCommand({
202
+ client: values.client,
203
+ apiUrl: values['api-url'],
204
+ userName: values['user-name'],
205
+ userEmail: values['user-email'],
206
+ });
207
+ }
208
+ else if (command === 'init') {
209
+ const client = values.client ?? (await detectClient());
210
+ if (!client) {
211
+ console.error('Could not detect client. Use --client to specify one.');
212
+ process.exit(1);
213
+ }
214
+ await init({
215
+ client: client,
216
+ apiUrl: values['api-url'],
217
+ setupToken: values['setup-token'],
218
+ inviteToken: values['invite-token'],
219
+ orgName: values['org-name'],
220
+ orgSlug: values['org-slug'],
221
+ projectName: values['project-name'],
222
+ projectSlug: values['project-slug'],
223
+ userName: values['user-name'],
224
+ userEmail: values['user-email'],
225
+ });
226
+ }
227
+ else if (command === 'search') {
228
+ const query = positionals.slice(1).join(' ').trim();
229
+ if (!query) {
230
+ console.error('Search query required. Example: memoire search "auth decisions"');
231
+ process.exit(1);
232
+ }
233
+ if (values.json) {
234
+ console.log(JSON.stringify(await runSearchCommandJson(query), null, 2));
235
+ }
236
+ else {
237
+ console.log(await runSearchCommand(query));
238
+ }
239
+ }
240
+ else if (command === 'status') {
241
+ if (values.json) {
242
+ console.log(JSON.stringify(await runStatusCommandJson(), null, 2));
243
+ }
244
+ else {
245
+ console.log(await runStatusCommand());
246
+ }
247
+ }
248
+ else if (command === 'usage') {
249
+ if (values.json) {
250
+ console.log(JSON.stringify(await runUsageCommandJson(), null, 2));
251
+ }
252
+ else {
253
+ console.log(await runUsageCommand());
254
+ }
255
+ }
256
+ else if (command === 'doctor') {
257
+ if (values.json) {
258
+ console.log(JSON.stringify(await runDoctorCommandJson(), null, 2));
259
+ }
260
+ else {
261
+ console.log(await runDoctorCommand());
262
+ }
263
+ }
264
+ else if (command === 'profile') {
265
+ if (values.json) {
266
+ console.log(JSON.stringify(await runProfileCommandJson(), null, 2));
267
+ }
268
+ else {
269
+ console.log(await runProfileCommand());
270
+ }
271
+ }
272
+ else if (command === 'facts') {
273
+ if (values.json) {
274
+ console.log(JSON.stringify(await runFactsCommandJson(), null, 2));
275
+ }
276
+ else {
277
+ console.log(await runFactsCommand());
278
+ }
279
+ }
280
+ else if (command === 'resume') {
281
+ console.log(await runResumeCommand(positionals.slice(1).join(' ')));
282
+ }
283
+ else if (command === 'handoff') {
284
+ console.log(await runHandoffCommand(positionals.slice(1).join(' ')));
285
+ }
286
+ else if (command === 'contexts') {
287
+ const subcommand = positionals[1] ?? 'list';
288
+ if (subcommand === 'list') {
289
+ if (values.json) {
290
+ console.log(JSON.stringify(await runContextsListCommandJson(), null, 2));
291
+ }
292
+ else {
293
+ console.log(await runContextsListCommand());
294
+ }
295
+ }
296
+ else if (subcommand === 'save') {
297
+ console.log(await runHandoffCommand(positionals.slice(2).join(' ')));
298
+ }
299
+ else if (subcommand === 'get') {
300
+ const handoffId = positionals[2]?.trim();
301
+ if (!handoffId) {
302
+ console.error('Context ID required. Example: memoire contexts get <id>');
303
+ process.exit(1);
304
+ }
305
+ if (values.json) {
306
+ console.log(JSON.stringify(await runContextsGetCommandJson(handoffId), null, 2));
307
+ }
308
+ else {
309
+ console.log(await runContextsGetCommand(handoffId));
310
+ }
311
+ }
312
+ else {
313
+ console.error(`Unknown contexts command: ${subcommand}`);
314
+ console.error('Use: memoire contexts [list|save|get]');
315
+ process.exit(1);
316
+ }
317
+ }
318
+ else if (command === 'manual') {
319
+ console.log(await runManualSetupCommand({
320
+ client: values.client,
321
+ configPath: values['config-path'],
322
+ }));
323
+ }
324
+ else if (command === 'dashboard') {
325
+ const parsedPort = values.port ? Number.parseInt(values.port, 10) : undefined;
326
+ if (values.port && !Number.isFinite(parsedPort)) {
327
+ console.error('Port must be a number.');
328
+ process.exit(1);
329
+ }
330
+ await runDashboardCommand({
331
+ port: parsedPort,
332
+ configPath: values['config-path'],
333
+ });
334
+ }
335
+ else if (command === 'mcp') {
336
+ await runMcpCommand({
337
+ ...process.env,
338
+ ...(values['config-path'] ? { MEMOIRE_CONFIG_PATH: values['config-path'] } : {}),
339
+ ...(values['client-id'] ? { MEMOIRE_CLIENT_ID: values['client-id'] } : {}),
340
+ });
341
+ }
342
+ else if (command === 'hook') {
343
+ const hookName = positionals[1];
344
+ if (!hookName) {
345
+ console.error('Hook name required. Example: memoire hook cursor-before-submit --client cursor');
346
+ process.exit(1);
347
+ }
348
+ await runHookCommand({
349
+ hookName,
350
+ client: values.client,
351
+ clientId: values['client-id'],
352
+ configPath: values['config-path'],
353
+ });
354
+ }
355
+ else {
356
+ console.error(`Unknown command: ${command}`);
357
+ process.exit(1);
358
+ }
359
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { MemoireClient } from '@memoire/sdk';
2
+ import type { MemoireConfig } from '@memoire/shared';
3
+ export interface CommandOutput {
4
+ text: string;
5
+ data: unknown;
6
+ }
7
+ type CommandClient = Pick<MemoireClient, 'searchContext' | 'searchDocs' | 'docsStatus' | 'dashboardUsage' | 'projectProfile' | 'projectFacts' | 'assembleContext' | 'createHandoff' | 'listHandoffs' | 'getHandoff'>;
8
+ interface CommandDeps {
9
+ readConfig?: () => MemoireConfig;
10
+ createClient?: (config: MemoireConfig) => CommandClient;
11
+ checkCommand?: (command: string) => boolean;
12
+ checkApi?: (url: string) => Promise<boolean>;
13
+ }
14
+ export declare function runSearchCommand(query: string, deps?: CommandDeps): Promise<string>;
15
+ export declare function runStatusCommand(deps?: CommandDeps): Promise<string>;
16
+ export declare function runUsageCommand(deps?: CommandDeps): Promise<string>;
17
+ export declare function runDoctorCommand(deps?: CommandDeps): Promise<string>;
18
+ export declare function runProfileCommand(deps?: CommandDeps): Promise<string>;
19
+ export declare function runResumeCommand(query?: string, deps?: CommandDeps): Promise<string>;
20
+ export declare function runHandoffCommand(query?: string, deps?: CommandDeps): Promise<string>;
21
+ export declare function runContextsListCommand(limit?: number, deps?: CommandDeps): Promise<string>;
22
+ export declare function runContextsGetCommand(handoffId: string, deps?: CommandDeps): Promise<string>;
23
+ export declare function runFactsCommand(deps?: CommandDeps): Promise<string>;
24
+ export declare function runSearchCommandJson(query: string, deps?: CommandDeps): Promise<unknown>;
25
+ export declare function runStatusCommandJson(deps?: CommandDeps): Promise<unknown>;
26
+ export declare function runUsageCommandJson(deps?: CommandDeps): Promise<unknown>;
27
+ export declare function runDoctorCommandJson(deps?: CommandDeps): Promise<unknown>;
28
+ export declare function runProfileCommandJson(deps?: CommandDeps): Promise<unknown>;
29
+ export declare function runFactsCommandJson(deps?: CommandDeps): Promise<unknown>;
30
+ export declare function runContextsListCommandJson(limit?: number, deps?: CommandDeps): Promise<unknown>;
31
+ export declare function runContextsGetCommandJson(handoffId: string, deps?: CommandDeps): Promise<unknown>;
32
+ export {};
33
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}