memoire-ai 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -32,6 +32,17 @@ const { values, positionals } = parseArgs({
32
32
  'allow-origin': { type: 'string' },
33
33
  json: { type: 'boolean' },
34
34
  help: { type: 'boolean', short: 'h' },
35
+ // Wizard-specific flags
36
+ 'non-interactive': { type: 'boolean' },
37
+ 'skip-start': { type: 'boolean' },
38
+ cloud: { type: 'boolean' },
39
+ 'db-url': { type: 'string' },
40
+ 'db-url-direct': { type: 'string' },
41
+ 'openai-key': { type: 'string' },
42
+ 'anthropic-key': { type: 'string' },
43
+ agents: { type: 'string' },
44
+ 'api-port': { type: 'string' },
45
+ 'dashboard-port': { type: 'string' },
35
46
  },
36
47
  });
37
48
  const command = positionals[0];
@@ -40,59 +51,66 @@ if (values.help || !command) {
40
51
  memoire - Shared context layer for AI coding agents
41
52
 
42
53
  Usage:
43
- memoire setup Zero-config: auto-detect everything, bootstrap + install
44
- memoire login [options]
45
- memoire install [options]
46
- memoire uninstall Remove Memoire from this project
47
- memoire init [options]
48
- memoire search <query>
49
- memoire usage
50
- memoire doctor
51
- memoire profile
52
- memoire facts
53
- memoire resume [query]
54
- memoire handoff [query]
55
- memoire contexts [list]
56
- memoire contexts save [query]
57
- memoire contexts get <id>
58
- memoire manual [options]
59
- memoire hook <name>
60
- memoire status
61
- memoire dashboard [--port 4310]
62
- memoire local-tools [--port 4313]
63
- memoire mcp
54
+ memoire setup Interactive wizard zero to running in one command
55
+ memoire setup --cloud Use Memoire Cloud (no database needed)
56
+ memoire setup --db-url <url> Self-host with your own Postgres
57
+ memoire setup --agents cursor,codex Configure specific agents
58
+ memoire setup --non-interactive Skip prompts (requires all flags)
59
+ memoire login [options] Browser/device auth + install
60
+ memoire install [options] Manual install for a single agent
61
+ memoire uninstall Remove Memoire from this project
62
+ memoire search <query> Search shared memory
63
+ memoire usage Show usage stats
64
+ memoire doctor Diagnose issues
65
+ memoire profile Show project profile
66
+ memoire facts Show extracted facts
67
+ memoire resume [query] Resume previous work
68
+ memoire handoff [query] Create a handoff
69
+ memoire contexts [list|save|get] Manage saved contexts
70
+ memoire manual [options] Show manual setup instructions
71
+ memoire hook <name> Execute IDE hook
72
+ memoire status Check connection
73
+ memoire dashboard [--port 4310] Run local dashboard
74
+ memoire local-tools [--port 4313] Run local tools server
75
+ memoire mcp Start MCP server (stdio)
64
76
 
65
- Options:
77
+ Setup wizard flags:
78
+ --cloud Use Memoire Cloud instead of self-hosting
79
+ --db-url <url> Database URL (Postgres/Supabase transaction pooler)
80
+ --db-url-direct <url> Direct URL for migrations (session pooler, port 5432)
81
+ --openai-key <key> OpenAI API key (optional, for semantic embeddings)
82
+ --anthropic-key <key> Anthropic API key (optional, for AI summarization)
83
+ --agents <list> Comma-separated: cursor,claude,codex,amp
84
+ --api-port <port> API port (default: 3100)
85
+ --dashboard-port <port> Dashboard port (default: 3200)
86
+ --non-interactive Skip all prompts (for CI/scripting)
87
+ --skip-start Configure only, don't start API/dashboard
88
+
89
+ General options:
66
90
  --client, -c Client type: cursor | claude | codex | amp
67
91
  --api-key Memoire API key (sk_mem_...)
68
92
  --api-url API URL (default: production)
69
93
  --org-id Organization ID
70
94
  --project-id Project ID
95
+ --org-name Organization name
96
+ --project-name Project name
71
97
  --user-name Override detected user name
72
98
  --user-email Override detected user email
73
- --setup-token Setup token for bootstrapping additional orgs
74
- --invite-token Join an existing workspace invitation
75
- --org-name Organization name for init
76
- --org-slug Organization slug for init
77
- --project-name Project name for init
78
- --project-slug Project slug for init
79
- --config-path Override ~/.memoire/config.json for dashboard or MCP commands
99
+ --setup-token Setup token for bootstrapping
100
+ --invite-token Join an existing workspace
101
+ --config-path Override config path for dashboard/MCP
80
102
  --client-id Override the registered client_id for hook or MCP commands
81
103
  --port Dashboard port (default: 4310)
82
104
  --allow-origin Extra dashboard origin allowed to call local tools helper
83
- --json Output as JSON (for piping and automation)
105
+ --json Output as JSON
84
106
  --help, -h Show this help
85
107
 
86
108
  Examples:
87
- npx memoire setup # Zero-config one-liner
88
- npx memoire setup --api-url http://localhost:3100 # Self-hosted
89
- npx memoire login # Browser/device auth + install
90
- npx memoire init --client cursor --api-url http://localhost:3100 --org-name Acme
91
- npx memoire init --client cursor --api-url http://localhost:3100 --invite-token <token>
92
- npx memoire install --client cursor --api-key sk_mem_xxx
93
- npx memoire install --client claude --api-key sk_mem_xxx --api-url http://localhost:3100
109
+ npx memoire setup # Interactive wizard
110
+ npx memoire setup --cloud # Cloud hosted
111
+ npx memoire setup --db-url "postgresql://..." --agents cursor,codex # Self-hosted
112
+ npx memoire login # Browser auth
94
113
  npx memoire search "auth decisions"
95
- npx memoire usage
96
114
  npx memoire doctor
97
115
  npx memoire profile
98
116
  npx memoire facts
@@ -112,77 +130,30 @@ if (values.help || !command) {
112
130
  }
113
131
  try {
114
132
  if (command === 'setup') {
115
- // Zero-config setup: auto-detect client, health-check API, bootstrap + install
116
- const apiUrl = values['api-url'];
117
- console.log('\n Memoire Zero-Config Setup\n');
118
- // 1. Auto-detect client
119
- const client = values.client ?? (await detectClient());
120
- if (!client) {
121
- console.error(' Could not detect AI client (Cursor, Claude Code, Codex).');
122
- console.error(' Use --client to specify one: memoire setup --client cursor');
123
- process.exit(1);
124
- }
125
- console.log(` Detected client: ${client}`);
126
- // 2. Health check API
127
- console.log(` Checking API at ${apiUrl}...`);
128
- try {
129
- const healthRes = await fetch(`${apiUrl.replace(/\/$/, '')}/health`, {
130
- signal: AbortSignal.timeout(5000),
131
- });
132
- if (!healthRes.ok) {
133
- console.error(` API returned ${healthRes.status}. Is the Memoire API running?`);
134
- process.exit(1);
135
- }
136
- console.log(' API is healthy');
137
- }
138
- catch {
139
- console.error(` Could not reach API at ${apiUrl}`);
140
- console.error(' Start the API first or use --api-url to specify the correct URL');
141
- process.exit(1);
142
- }
143
- // 3. Check for existing config
144
- const { existsSync } = await import('node:fs');
145
- const { join } = await import('node:path');
146
- const { homedir } = await import('node:os');
147
- const existingConfig = join(homedir(), '.memoire', 'config.json');
148
- if (existsSync(existingConfig) && !values['api-key']) {
149
- console.log(' Found existing config at ~/.memoire/config.json');
150
- try {
151
- const { readFileSync } = await import('node:fs');
152
- const config = JSON.parse(readFileSync(existingConfig, 'utf-8'));
153
- if (config.api_key && config.org_id) {
154
- console.log(' Re-installing with existing credentials...');
155
- await install({
156
- client: client,
157
- apiKey: config.api_key,
158
- apiUrl: config.api_url ?? apiUrl,
159
- orgId: config.org_id,
160
- projectId: config.project_id,
161
- userName: values['user-name'],
162
- userEmail: values['user-email'],
163
- });
164
- process.exit(0);
165
- }
166
- }
167
- catch {
168
- // Config unreadable, proceed with fresh init
169
- }
170
- }
171
- // 4. Bootstrap fresh workspace
172
- console.log(' Bootstrapping new workspace...');
173
- await init({
174
- client: client,
175
- apiUrl,
176
- setupToken: values['setup-token'],
177
- inviteToken: values['invite-token'],
133
+ const { runSetupWizard } = await import('./setup-wizard.js');
134
+ const defaultApiUrl = 'http://esprit-prod-alb-1025392673.us-east-1.elb.amazonaws.com';
135
+ await runSetupWizard({
136
+ apiUrl: values['api-url'] !== defaultApiUrl ? values['api-url'] : undefined,
137
+ cloud: values.cloud,
138
+ dbUrl: values['db-url'],
139
+ dbUrlDirect: values['db-url-direct'],
140
+ openaiKey: values['openai-key'],
141
+ anthropicKey: values['anthropic-key'],
142
+ agents: values.agents,
178
143
  orgName: values['org-name'],
179
144
  orgSlug: values['org-slug'],
180
145
  projectName: values['project-name'],
181
146
  projectSlug: values['project-slug'],
182
147
  userName: values['user-name'],
183
148
  userEmail: values['user-email'],
149
+ setupToken: values['setup-token'],
150
+ inviteToken: values['invite-token'],
151
+ apiPort: values['api-port'] ? parseInt(values['api-port'], 10) : undefined,
152
+ dashboardPort: values['dashboard-port'] ? parseInt(values['dashboard-port'], 10) : undefined,
153
+ nonInteractive: values['non-interactive'],
154
+ skipStart: values['skip-start'],
155
+ json: values.json,
184
156
  });
185
- console.log('\n Setup complete! Memoire is ready.\n');
186
157
  }
187
158
  else if (command === 'install') {
188
159
  const client = values.client ?? (await detectClient());
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/detect.d.ts CHANGED
@@ -1,3 +1,29 @@
1
+ export type AgentId = 'cursor' | 'claude' | 'codex' | 'windsurf' | 'amp' | 'vscode';
2
+ export interface DetectedAgent {
3
+ /** Machine-readable identifier */
4
+ id: AgentId;
5
+ /** Human-readable display name */
6
+ name: string;
7
+ /** Whether the agent was found on the system */
8
+ detected: boolean;
9
+ /** Path to the agent's MCP / settings config file (if known) */
10
+ configPath: string | null;
11
+ /** Directory that contains the config file */
12
+ configDir: string | null;
13
+ /** CLI version string, if a version command succeeded */
14
+ version: string | null;
15
+ }
16
+ export interface DetectAllAgentsOpts {
17
+ /** Override the home directory (useful for testing) */
18
+ home?: string;
19
+ /** Override the detected platform */
20
+ platform?: NodeJS.Platform;
21
+ }
22
+ /**
23
+ * Detect **all** known AI coding agents installed on the current system.
24
+ * Returns one entry per known agent regardless of whether it was found.
25
+ */
26
+ export declare function detectAllAgents(opts?: DetectAllAgentsOpts): Promise<DetectedAgent[]>;
1
27
  /** Detect which AI coding client is installed */
2
28
  export declare function detectClient(): Promise<string | null>;
3
29
  //# sourceMappingURL=detect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAIA,iDAAiD;AACjD,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyB3D"}
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yDAAyD;IACzD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AA4GD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAkB1F;AAED,iDAAiD;AACjD,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyB3D"}
package/dist/detect.js CHANGED
@@ -1,6 +1,126 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import { homedir } from 'node:os';
3
+ import { homedir, platform } from 'node:os';
4
+ import { execFileSync } from 'node:child_process';
5
+ // ---------------------------------------------------------------------------
6
+ // Helpers
7
+ // ---------------------------------------------------------------------------
8
+ function tryCommand(cmd, args) {
9
+ try {
10
+ return execFileSync(cmd, args, { encoding: 'utf-8', timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).trim() || null;
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
16
+ function firstExisting(...paths) {
17
+ for (const p of paths) {
18
+ if (existsSync(p))
19
+ return p;
20
+ }
21
+ return null;
22
+ }
23
+ const AGENT_DEFS = [
24
+ {
25
+ id: 'cursor',
26
+ name: 'Cursor',
27
+ configDirs: (home, plat) => {
28
+ if (plat === 'darwin')
29
+ return [join(home, '.cursor'), join(home, 'Library', 'Application Support', 'Cursor')];
30
+ if (plat === 'win32')
31
+ return [join(home, '.cursor'), join(home, 'AppData', 'Roaming', 'Cursor')];
32
+ return [join(home, '.cursor'), join(home, '.config', 'Cursor')];
33
+ },
34
+ configFile: 'mcp.json',
35
+ versionCmd: null,
36
+ },
37
+ {
38
+ id: 'claude',
39
+ name: 'Claude Code',
40
+ configDirs: (home, plat) => {
41
+ if (plat === 'darwin')
42
+ return [join(home, '.claude'), join(home, 'Library', 'Application Support', 'Claude')];
43
+ if (plat === 'win32')
44
+ return [join(home, '.claude'), join(home, 'AppData', 'Roaming', 'Claude')];
45
+ return [join(home, '.claude'), join(home, '.config', 'Claude')];
46
+ },
47
+ configFile: 'claude_desktop_config.json',
48
+ versionCmd: ['claude', ['--version']],
49
+ },
50
+ {
51
+ id: 'codex',
52
+ name: 'Codex',
53
+ configDirs: (home, plat) => {
54
+ if (plat === 'win32')
55
+ return [join(home, '.codex'), join(home, 'AppData', 'Roaming', 'codex')];
56
+ return [join(home, '.codex'), join(home, '.config', 'codex')];
57
+ },
58
+ configFile: 'config.json',
59
+ versionCmd: ['codex', ['--version']],
60
+ },
61
+ {
62
+ id: 'windsurf',
63
+ name: 'Windsurf',
64
+ configDirs: (home, plat) => {
65
+ if (plat === 'darwin')
66
+ return [join(home, '.windsurf'), join(home, 'Library', 'Application Support', 'Windsurf')];
67
+ if (plat === 'win32')
68
+ return [join(home, '.windsurf'), join(home, 'AppData', 'Roaming', 'Windsurf')];
69
+ return [join(home, '.windsurf'), join(home, '.config', 'Windsurf')];
70
+ },
71
+ configFile: 'mcp.json',
72
+ versionCmd: null,
73
+ },
74
+ {
75
+ id: 'amp',
76
+ name: 'Amp',
77
+ configDirs: (home, plat) => {
78
+ if (plat === 'darwin')
79
+ return [join(home, '.amp'), join(home, 'Library', 'Application Support', 'Amp')];
80
+ if (plat === 'win32')
81
+ return [join(home, '.amp'), join(home, 'AppData', 'Roaming', 'Amp')];
82
+ return [join(home, '.amp'), join(home, '.config', 'Amp')];
83
+ },
84
+ configFile: 'settings.json',
85
+ versionCmd: ['amp', ['--version']],
86
+ },
87
+ {
88
+ id: 'vscode',
89
+ name: 'VS Code',
90
+ configDirs: (home, plat) => {
91
+ if (plat === 'darwin')
92
+ return [join(home, '.vscode'), join(home, 'Library', 'Application Support', 'Code')];
93
+ if (plat === 'win32')
94
+ return [join(home, '.vscode'), join(home, 'AppData', 'Roaming', 'Code')];
95
+ return [join(home, '.vscode'), join(home, '.config', 'Code')];
96
+ },
97
+ configFile: 'settings.json',
98
+ versionCmd: ['code', ['--version']],
99
+ },
100
+ ];
101
+ // ---------------------------------------------------------------------------
102
+ // detectAllAgents
103
+ // ---------------------------------------------------------------------------
104
+ /**
105
+ * Detect **all** known AI coding agents installed on the current system.
106
+ * Returns one entry per known agent regardless of whether it was found.
107
+ */
108
+ export async function detectAllAgents(opts) {
109
+ const home = opts?.home ?? homedir();
110
+ const plat = opts?.platform ?? platform();
111
+ return AGENT_DEFS.map((def) => {
112
+ const candidates = def.configDirs(home, plat);
113
+ const configDir = firstExisting(...candidates);
114
+ const detected = configDir !== null;
115
+ const configPath = configDir ? join(configDir, def.configFile) : null;
116
+ // Only attempt version detection when we actually found the agent
117
+ let version = null;
118
+ if (detected && def.versionCmd) {
119
+ version = tryCommand(def.versionCmd[0], def.versionCmd[1]);
120
+ }
121
+ return { id: def.id, name: def.name, detected, configPath, configDir, version };
122
+ });
123
+ }
4
124
  /** Detect which AI coding client is installed */
5
125
  export async function detectClient() {
6
126
  const home = homedir();
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,mBAAmB;IACnB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC;QACtD,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC;KAChC,CAAC;IACF,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAElD,wBAAwB;IACxB,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;QACrB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,CAAC;KACvD,CAAC;IACF,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAElD,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;KAC/B,CAAC;IACF,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC;IAEhD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { install } from './configure.js';
2
- export { detectClient } from './detect.js';
2
+ export { detectClient, detectAllAgents } from './detect.js';
3
+ export type { DetectedAgent } from './detect.js';
3
4
  export { runSearchCommand, runStatusCommand, runUsageCommand, runDoctorCommand, runProfileCommand, runResumeCommand, runFactsCommand, runContextsListCommand, runContextsGetCommand, } from './commands.js';
4
5
  export { runDashboardCommand } from './dashboard.js';
5
6
  export { DEFAULT_LOCAL_TOOLS_PORT, runLocalToolsCommand, startLocalToolsServer, } from './local-tools.js';
@@ -7,4 +8,6 @@ export { runMcpCommand } from './mcp.js';
7
8
  export { runManualSetupCommand } from './manual.js';
8
9
  export { runHookCommand, type HookCommandName } from './hooks.js';
9
10
  export { runLoginCommand } from './login.js';
11
+ export { runSetupWizard } from './setup-wizard.js';
12
+ export type { WizardFlags } from './setup-wizard.js';
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { install } from './configure.js';
2
- export { detectClient } from './detect.js';
2
+ export { detectClient, detectAllAgents } from './detect.js';
3
3
  export { runSearchCommand, runStatusCommand, runUsageCommand, runDoctorCommand, runProfileCommand, runResumeCommand, runFactsCommand, runContextsListCommand, runContextsGetCommand, } from './commands.js';
4
4
  export { runDashboardCommand } from './dashboard.js';
5
5
  export { DEFAULT_LOCAL_TOOLS_PORT, runLocalToolsCommand, startLocalToolsServer, } from './local-tools.js';
@@ -7,4 +7,5 @@ export { runMcpCommand } from './mcp.js';
7
7
  export { runManualSetupCommand } from './manual.js';
8
8
  export { runHookCommand } from './hooks.js';
9
9
  export { runLoginCommand } from './login.js';
10
+ export { runSetupWizard } from './setup-wizard.js';
10
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAwB,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,cAAc,EAAwB,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,24 @@
1
+ export interface WizardFlags {
2
+ apiUrl?: string;
3
+ cloud?: boolean;
4
+ dbUrl?: string;
5
+ dbUrlDirect?: string;
6
+ openaiKey?: string;
7
+ anthropicKey?: string;
8
+ agents?: string;
9
+ orgName?: string;
10
+ orgSlug?: string;
11
+ projectName?: string;
12
+ projectSlug?: string;
13
+ userName?: string;
14
+ userEmail?: string;
15
+ setupToken?: string;
16
+ inviteToken?: string;
17
+ apiPort?: number;
18
+ dashboardPort?: number;
19
+ nonInteractive?: boolean;
20
+ skipStart?: boolean;
21
+ json?: boolean;
22
+ }
23
+ export declare function runSetupWizard(flags?: WizardFlags): Promise<void>;
24
+ //# sourceMappingURL=setup-wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AA6BA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAuED,wBAAsB,cAAc,CAAC,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkiB3E"}
@@ -0,0 +1,597 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { existsSync, writeFileSync } from 'node:fs';
3
+ import { join, dirname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { homedir, platform } from 'node:os';
6
+ import * as p from '@clack/prompts';
7
+ import { detectAllAgents } from './detect.js';
8
+ import { detectSystem, isPortAvailable } from './system-detect.js';
9
+ import { init, install } from './configure.js';
10
+ // ---------------------------------------------------------------------------
11
+ // Constants
12
+ // ---------------------------------------------------------------------------
13
+ const CLOUD_API_URL = 'https://api.memoire.dev';
14
+ const DEFAULT_API_PORT = 3100;
15
+ const DEFAULT_DASHBOARD_PORT = 4310;
16
+ /** Agent IDs that have working install() / init() support. */
17
+ const SUPPORTED_AGENTS = ['cursor', 'claude', 'codex', 'amp'];
18
+ // ---------------------------------------------------------------------------
19
+ // Helpers
20
+ // ---------------------------------------------------------------------------
21
+ function findMemoireRoot() {
22
+ // 1. Resolve relative to this file (packages/installer/dist/setup-wizard.js -> root is 3 up)
23
+ try {
24
+ const thisFile = fileURLToPath(import.meta.url);
25
+ const candidate = join(dirname(thisFile), '..', '..', '..');
26
+ if (existsSync(join(candidate, 'apps', 'api')) && existsSync(join(candidate, 'pnpm-workspace.yaml'))) {
27
+ return candidate;
28
+ }
29
+ }
30
+ catch {
31
+ // import.meta.url may not resolve in all environments
32
+ }
33
+ // 2. Check cwd
34
+ const cwd = process.cwd();
35
+ if (existsSync(join(cwd, 'apps', 'api')) && existsSync(join(cwd, 'pnpm-workspace.yaml'))) {
36
+ return cwd;
37
+ }
38
+ // 3. Check parent of cwd
39
+ const parent = dirname(cwd);
40
+ if (existsSync(join(parent, 'apps', 'api')) && existsSync(join(parent, 'pnpm-workspace.yaml'))) {
41
+ return parent;
42
+ }
43
+ return null;
44
+ }
45
+ function openBrowser(url) {
46
+ const plat = platform();
47
+ try {
48
+ if (plat === 'darwin') {
49
+ spawn('open', [url], { detached: true, stdio: 'ignore' }).unref();
50
+ }
51
+ else if (plat === 'win32') {
52
+ spawn('cmd', ['/c', 'start', url], { detached: true, stdio: 'ignore' }).unref();
53
+ }
54
+ else {
55
+ spawn('xdg-open', [url], { detached: true, stdio: 'ignore' }).unref();
56
+ }
57
+ }
58
+ catch {
59
+ // Silently fail — user can open the URL manually.
60
+ }
61
+ }
62
+ async function checkApiHealth(apiUrl) {
63
+ try {
64
+ const res = await fetch(`${apiUrl.replace(/\/$/, '')}/health`, {
65
+ signal: AbortSignal.timeout(5000),
66
+ });
67
+ return res.ok;
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ }
73
+ function cancelAndExit(value, message = 'Setup cancelled.') {
74
+ if (p.isCancel(value)) {
75
+ p.cancel(message);
76
+ process.exit(0);
77
+ }
78
+ return false;
79
+ }
80
+ // ---------------------------------------------------------------------------
81
+ // Main wizard
82
+ // ---------------------------------------------------------------------------
83
+ export async function runSetupWizard(flags = {}) {
84
+ const isNonInteractive = flags.nonInteractive === true;
85
+ const isJson = flags.json === true;
86
+ if (!isJson) {
87
+ p.intro('Memoire Setup Wizard');
88
+ }
89
+ // -----------------------------------------------------------------------
90
+ // Phase 1: System scan
91
+ // -----------------------------------------------------------------------
92
+ const s = p.spinner();
93
+ if (!isJson)
94
+ s.start('Scanning system...');
95
+ const systemInfo = await detectSystem();
96
+ const allAgents = await detectAllAgents();
97
+ if (!isJson)
98
+ s.stop('System scan complete');
99
+ const detectedAgents = allAgents.filter((a) => a.detected && SUPPORTED_AGENTS.includes(a.id));
100
+ if (!isJson) {
101
+ const lines = [
102
+ `Platform: ${systemInfo.platform} / ${systemInfo.arch}`,
103
+ `Node: ${systemInfo.nodeVersion}`,
104
+ `Docker: ${systemInfo.hasDocker ? 'yes' : 'no'}`,
105
+ `Git: ${systemInfo.hasGit ? 'yes' : 'no'}`,
106
+ `pnpm: ${systemInfo.hasPnpm ? 'yes' : 'no'}`,
107
+ `Agents: ${detectedAgents.length > 0 ? detectedAgents.map((a) => a.name).join(', ') : 'none detected'}`,
108
+ ];
109
+ p.note(lines.join('\n'), 'System Information');
110
+ }
111
+ // -----------------------------------------------------------------------
112
+ // Phase 2: Hosting mode
113
+ // -----------------------------------------------------------------------
114
+ let isCloud;
115
+ if (flags.cloud !== undefined) {
116
+ isCloud = flags.cloud;
117
+ }
118
+ else if (flags.apiUrl) {
119
+ isCloud = flags.apiUrl === CLOUD_API_URL;
120
+ }
121
+ else if (isNonInteractive) {
122
+ isCloud = true;
123
+ }
124
+ else {
125
+ const mode = await p.select({
126
+ message: 'How would you like to host Memoire?',
127
+ options: [
128
+ { value: 'cloud', label: 'Memoire Cloud', hint: 'Fastest — no infrastructure to manage' },
129
+ { value: 'self-host', label: 'Self-hosted', hint: 'Your own database and servers' },
130
+ ],
131
+ });
132
+ cancelAndExit(mode);
133
+ isCloud = mode === 'cloud';
134
+ }
135
+ let apiUrl;
136
+ if (isCloud) {
137
+ apiUrl = flags.apiUrl ?? CLOUD_API_URL;
138
+ if (!isJson)
139
+ p.log.info(`Using Memoire Cloud at ${apiUrl}`);
140
+ }
141
+ else {
142
+ // ------------------------------------------------------------------
143
+ // Phase 3: Database URL (self-host only)
144
+ // ------------------------------------------------------------------
145
+ apiUrl = flags.apiUrl ?? `http://localhost:${flags.apiPort ?? DEFAULT_API_PORT}`;
146
+ let dbUrl = flags.dbUrl;
147
+ let dbUrlDirect = flags.dbUrlDirect;
148
+ if (!dbUrl) {
149
+ if (isNonInteractive) {
150
+ p.log.error('Self-hosted mode requires --db-url in non-interactive mode.');
151
+ process.exit(1);
152
+ }
153
+ const dbInput = await p.text({
154
+ message: 'PostgreSQL connection string (pooler / transaction mode):',
155
+ placeholder: 'postgresql://user:pass@host:6543/memoire',
156
+ validate: (v) => {
157
+ if (!v?.startsWith('postgresql://') && !v?.startsWith('postgres://')) {
158
+ return 'Must be a valid PostgreSQL connection string';
159
+ }
160
+ },
161
+ });
162
+ cancelAndExit(dbInput);
163
+ dbUrl = dbInput;
164
+ }
165
+ if (!dbUrlDirect) {
166
+ if (!isNonInteractive) {
167
+ const directInput = await p.text({
168
+ message: 'Direct database URL (for migrations, optional):',
169
+ placeholder: dbUrl,
170
+ defaultValue: dbUrl,
171
+ });
172
+ cancelAndExit(directInput);
173
+ dbUrlDirect = directInput || dbUrl;
174
+ }
175
+ else {
176
+ dbUrlDirect = dbUrl;
177
+ }
178
+ }
179
+ // Store for later use in .env writing
180
+ flags._resolvedDbUrl = dbUrl;
181
+ flags._resolvedDbUrlDirect = dbUrlDirect;
182
+ }
183
+ // -----------------------------------------------------------------------
184
+ // Phase 4: Optional API keys
185
+ // -----------------------------------------------------------------------
186
+ let openaiKey = flags.openaiKey;
187
+ let anthropicKey = flags.anthropicKey;
188
+ if (!isCloud && !isNonInteractive) {
189
+ if (!openaiKey) {
190
+ const wantOpenai = await p.confirm({
191
+ message: 'Add an OpenAI API key? (used for embeddings)',
192
+ initialValue: false,
193
+ });
194
+ cancelAndExit(wantOpenai);
195
+ if (wantOpenai) {
196
+ const key = await p.text({
197
+ message: 'OpenAI API key:',
198
+ placeholder: 'sk-...',
199
+ validate: (v) => {
200
+ if (!v?.startsWith('sk-'))
201
+ return 'OpenAI keys start with sk-';
202
+ },
203
+ });
204
+ cancelAndExit(key);
205
+ openaiKey = key;
206
+ }
207
+ }
208
+ if (!anthropicKey) {
209
+ const wantAnthropic = await p.confirm({
210
+ message: 'Add an Anthropic API key? (used for memory summarization)',
211
+ initialValue: false,
212
+ });
213
+ cancelAndExit(wantAnthropic);
214
+ if (wantAnthropic) {
215
+ const key = await p.text({
216
+ message: 'Anthropic API key:',
217
+ placeholder: 'sk-ant-...',
218
+ validate: (v) => {
219
+ if (!v?.startsWith('sk-ant-'))
220
+ return 'Anthropic keys start with sk-ant-';
221
+ },
222
+ });
223
+ cancelAndExit(key);
224
+ anthropicKey = key;
225
+ }
226
+ }
227
+ }
228
+ // -----------------------------------------------------------------------
229
+ // Phase 5: Agent selection
230
+ // -----------------------------------------------------------------------
231
+ let selectedAgentIds;
232
+ if (flags.agents) {
233
+ selectedAgentIds = flags.agents
234
+ .split(',')
235
+ .map((a) => a.trim())
236
+ .filter((id) => SUPPORTED_AGENTS.includes(id));
237
+ }
238
+ else if (isNonInteractive) {
239
+ selectedAgentIds = detectedAgents.map((a) => a.id);
240
+ if (selectedAgentIds.length === 0) {
241
+ p.log.error('No supported agents detected. Use --agents to specify agents in non-interactive mode.');
242
+ process.exit(1);
243
+ }
244
+ }
245
+ else {
246
+ const supportedDetected = allAgents.filter((a) => SUPPORTED_AGENTS.includes(a.id));
247
+ if (supportedDetected.length === 0) {
248
+ p.log.warn('No supported agents detected. Please install Cursor, Claude Code, Codex, or Amp first.');
249
+ process.exit(1);
250
+ }
251
+ const agentChoices = supportedDetected.map((a) => ({
252
+ value: a.id,
253
+ label: a.name,
254
+ hint: a.detected ? 'detected' : 'not found',
255
+ }));
256
+ const chosen = await p.multiselect({
257
+ message: 'Which agents should Memoire connect to?',
258
+ options: agentChoices,
259
+ initialValues: detectedAgents.map((a) => a.id),
260
+ required: true,
261
+ });
262
+ cancelAndExit(chosen);
263
+ selectedAgentIds = chosen;
264
+ }
265
+ if (selectedAgentIds.length === 0) {
266
+ p.log.error('No agents selected. At least one agent is required.');
267
+ process.exit(1);
268
+ }
269
+ if (!isJson) {
270
+ p.log.info(`Selected agents: ${selectedAgentIds.join(', ')}`);
271
+ }
272
+ // -----------------------------------------------------------------------
273
+ // Phase 6: Workspace info
274
+ // -----------------------------------------------------------------------
275
+ let orgName = flags.orgName;
276
+ let projectName = flags.projectName;
277
+ if (!isNonInteractive) {
278
+ if (!orgName) {
279
+ const org = await p.text({
280
+ message: 'Organization name:',
281
+ placeholder: 'My Team',
282
+ validate: (v) => {
283
+ if (!v?.trim())
284
+ return 'Organization name is required';
285
+ },
286
+ });
287
+ cancelAndExit(org);
288
+ orgName = org;
289
+ }
290
+ if (!projectName) {
291
+ const proj = await p.text({
292
+ message: 'Project name:',
293
+ placeholder: 'my-project',
294
+ validate: (v) => {
295
+ if (!v?.trim())
296
+ return 'Project name is required';
297
+ },
298
+ });
299
+ cancelAndExit(proj);
300
+ projectName = proj;
301
+ }
302
+ }
303
+ // -----------------------------------------------------------------------
304
+ // Phase 7: Write .env and push DB schema (self-host only)
305
+ // -----------------------------------------------------------------------
306
+ if (!isCloud) {
307
+ const memoireRoot = findMemoireRoot();
308
+ if (memoireRoot) {
309
+ const apiDir = join(memoireRoot, 'apps', 'api');
310
+ const envPath = join(apiDir, '.env');
311
+ const dbUrl = flags._resolvedDbUrl;
312
+ const dbUrlDirect = flags._resolvedDbUrlDirect;
313
+ const envLines = [
314
+ `DATABASE_URL="${dbUrl}"`,
315
+ `DATABASE_URL_DIRECT="${dbUrlDirect}"`,
316
+ `PORT=${flags.apiPort ?? DEFAULT_API_PORT}`,
317
+ ];
318
+ if (openaiKey)
319
+ envLines.push(`OPENAI_API_KEY="${openaiKey}"`);
320
+ if (anthropicKey)
321
+ envLines.push(`ANTHROPIC_API_KEY="${anthropicKey}"`);
322
+ writeFileSync(envPath, envLines.join('\n') + '\n');
323
+ if (!isJson)
324
+ p.log.success(`Environment file written to ${envPath}`);
325
+ // Push database schema
326
+ if (!isJson)
327
+ s.start('Pushing database schema...');
328
+ try {
329
+ const { execFileSync } = await import('node:child_process');
330
+ execFileSync('npx', ['drizzle-kit', 'push', '--force'], {
331
+ cwd: apiDir,
332
+ stdio: 'pipe',
333
+ env: { ...process.env, DATABASE_URL_DIRECT: dbUrlDirect },
334
+ });
335
+ if (!isJson)
336
+ s.stop('Database schema pushed');
337
+ }
338
+ catch (err) {
339
+ if (!isJson)
340
+ s.stop('Failed to push database schema');
341
+ p.log.warn(`Could not push schema: ${err instanceof Error ? err.message : 'unknown error'}. You may need to run "npx drizzle-kit push --force" manually in apps/api.`);
342
+ }
343
+ }
344
+ else {
345
+ p.log.warn('Could not locate Memoire monorepo root. Skipping .env and schema push.');
346
+ }
347
+ }
348
+ // -----------------------------------------------------------------------
349
+ // Phase 8: Start API server (self-host only)
350
+ // -----------------------------------------------------------------------
351
+ let apiReachable = false;
352
+ if (isCloud) {
353
+ if (!isJson)
354
+ s.start('Checking Memoire Cloud...');
355
+ apiReachable = await checkApiHealth(apiUrl);
356
+ if (!isJson) {
357
+ if (apiReachable) {
358
+ s.stop('Memoire Cloud is reachable');
359
+ }
360
+ else {
361
+ s.stop('Memoire Cloud is not reachable — proceeding anyway');
362
+ }
363
+ }
364
+ }
365
+ else if (!flags.skipStart) {
366
+ const apiPort = flags.apiPort ?? DEFAULT_API_PORT;
367
+ const portFree = await isPortAvailable(apiPort);
368
+ if (!portFree) {
369
+ if (!isJson)
370
+ p.log.info(`Port ${apiPort} is already in use — assuming API is running.`);
371
+ apiReachable = await checkApiHealth(apiUrl);
372
+ }
373
+ else {
374
+ const memoireRoot = findMemoireRoot();
375
+ if (memoireRoot) {
376
+ if (!isJson)
377
+ s.start('Starting API server...');
378
+ const apiDir = join(memoireRoot, 'apps', 'api');
379
+ const child = spawn('node', ['dist/index.js'], {
380
+ cwd: apiDir,
381
+ detached: true,
382
+ stdio: 'ignore',
383
+ env: { ...process.env, PORT: String(apiPort) },
384
+ });
385
+ child.unref();
386
+ // Wait briefly for the server to start
387
+ for (let i = 0; i < 10; i++) {
388
+ await new Promise((resolve) => setTimeout(resolve, 1000));
389
+ apiReachable = await checkApiHealth(apiUrl);
390
+ if (apiReachable)
391
+ break;
392
+ }
393
+ if (!isJson) {
394
+ if (apiReachable) {
395
+ s.stop(`API server running on port ${apiPort}`);
396
+ }
397
+ else {
398
+ s.stop('API server may still be starting');
399
+ p.log.warn('Could not verify API health. Continuing anyway.');
400
+ }
401
+ }
402
+ }
403
+ else {
404
+ p.log.warn('Could not locate Memoire monorepo root. Skipping API start.');
405
+ }
406
+ }
407
+ }
408
+ // -----------------------------------------------------------------------
409
+ // Phase 9: Bootstrap workspace via init()
410
+ // -----------------------------------------------------------------------
411
+ if (!isJson)
412
+ s.start('Bootstrapping workspace...');
413
+ const firstAgent = selectedAgentIds[0];
414
+ let bootstrapResult;
415
+ // Check for existing config that can be reused
416
+ const existingConfig = systemInfo.existingConfig;
417
+ let reuseExisting = false;
418
+ if (existingConfig?.api_key &&
419
+ existingConfig?.org_id &&
420
+ existingConfig.api_url === apiUrl) {
421
+ if (!isJson)
422
+ s.stop('Found existing configuration');
423
+ if (!isNonInteractive) {
424
+ const reuse = await p.confirm({
425
+ message: `Existing Memoire config found (org: ${existingConfig.org_id}). Reuse it?`,
426
+ initialValue: true,
427
+ });
428
+ cancelAndExit(reuse);
429
+ reuseExisting = reuse;
430
+ }
431
+ else {
432
+ reuseExisting = true;
433
+ }
434
+ if (reuseExisting) {
435
+ if (!isJson)
436
+ s.start('Using existing workspace credentials...');
437
+ }
438
+ else {
439
+ if (!isJson)
440
+ s.start('Bootstrapping fresh workspace...');
441
+ }
442
+ }
443
+ if (reuseExisting && existingConfig?.api_key && existingConfig?.org_id) {
444
+ bootstrapResult = {
445
+ org_id: existingConfig.org_id,
446
+ project_id: existingConfig.project_id ?? '',
447
+ token: existingConfig.api_key,
448
+ user_id: existingConfig.user_id ?? '',
449
+ };
450
+ // Still install for the first agent
451
+ await install({
452
+ client: firstAgent,
453
+ apiKey: bootstrapResult.token,
454
+ apiUrl,
455
+ orgId: bootstrapResult.org_id,
456
+ projectId: bootstrapResult.project_id || undefined,
457
+ userName: flags.userName,
458
+ userEmail: flags.userEmail,
459
+ });
460
+ if (!isJson)
461
+ s.stop('Workspace configured with existing credentials');
462
+ }
463
+ else {
464
+ const initOpts = {
465
+ client: firstAgent,
466
+ apiUrl,
467
+ setupToken: flags.setupToken,
468
+ inviteToken: flags.inviteToken,
469
+ orgName,
470
+ orgSlug: flags.orgSlug,
471
+ projectName,
472
+ projectSlug: flags.projectSlug,
473
+ userName: flags.userName,
474
+ userEmail: flags.userEmail,
475
+ };
476
+ try {
477
+ const result = await init(initOpts);
478
+ bootstrapResult = {
479
+ org_id: result.org_id,
480
+ project_id: result.project_id,
481
+ token: result.token,
482
+ user_id: result.user_id,
483
+ };
484
+ if (!isJson)
485
+ s.stop('Workspace bootstrapped');
486
+ }
487
+ catch (err) {
488
+ if (!isJson)
489
+ s.stop('Bootstrap failed');
490
+ p.log.error(`Failed to bootstrap workspace: ${err instanceof Error ? err.message : 'unknown error'}`);
491
+ process.exit(1);
492
+ }
493
+ }
494
+ // -----------------------------------------------------------------------
495
+ // Phase 10: Configure remaining agents via install()
496
+ // -----------------------------------------------------------------------
497
+ const remainingAgents = reuseExisting
498
+ ? selectedAgentIds.slice(1) // first agent was installed above
499
+ : selectedAgentIds.slice(1); // init() already called install() for first agent
500
+ if (remainingAgents.length > 0) {
501
+ if (!isJson)
502
+ s.start(`Configuring ${remainingAgents.length} additional agent(s)...`);
503
+ for (const agentId of remainingAgents) {
504
+ try {
505
+ await install({
506
+ client: agentId,
507
+ apiKey: bootstrapResult.token,
508
+ apiUrl,
509
+ orgId: bootstrapResult.org_id,
510
+ projectId: bootstrapResult.project_id,
511
+ userName: flags.userName,
512
+ userEmail: flags.userEmail,
513
+ });
514
+ }
515
+ catch (err) {
516
+ p.log.warn(`Failed to configure ${agentId}: ${err instanceof Error ? err.message : 'unknown error'}`);
517
+ }
518
+ }
519
+ if (!isJson)
520
+ s.stop('Additional agents configured');
521
+ }
522
+ // -----------------------------------------------------------------------
523
+ // Phase 11: Start dashboard (self-host only)
524
+ // -----------------------------------------------------------------------
525
+ let dashboardUrl = null;
526
+ if (!isCloud && !flags.skipStart) {
527
+ const dashPort = flags.dashboardPort ?? DEFAULT_DASHBOARD_PORT;
528
+ const dashPortFree = await isPortAvailable(dashPort);
529
+ if (!dashPortFree) {
530
+ dashboardUrl = `http://localhost:${dashPort}`;
531
+ if (!isJson)
532
+ p.log.info(`Dashboard already running at ${dashboardUrl}`);
533
+ }
534
+ else {
535
+ const memoireRoot = findMemoireRoot();
536
+ if (memoireRoot) {
537
+ if (!isJson)
538
+ s.start('Starting dashboard...');
539
+ const configPath = join(homedir(), '.memoire', 'config.json');
540
+ const child = spawn('npx', ['memoire', 'dashboard', '--port', String(dashPort), '--config-path', configPath], {
541
+ cwd: memoireRoot,
542
+ detached: true,
543
+ stdio: 'ignore',
544
+ });
545
+ child.unref();
546
+ dashboardUrl = `http://localhost:${dashPort}`;
547
+ // Wait briefly for dashboard to start
548
+ await new Promise((resolve) => setTimeout(resolve, 2000));
549
+ if (!isJson)
550
+ s.stop(`Dashboard starting at ${dashboardUrl}`);
551
+ }
552
+ }
553
+ }
554
+ else if (isCloud) {
555
+ dashboardUrl = 'https://app.memoire.dev';
556
+ }
557
+ // -----------------------------------------------------------------------
558
+ // Phase 12: Completion summary
559
+ // -----------------------------------------------------------------------
560
+ if (isJson) {
561
+ const output = {
562
+ success: true,
563
+ apiUrl,
564
+ orgId: bootstrapResult.org_id,
565
+ projectId: bootstrapResult.project_id,
566
+ userId: bootstrapResult.user_id,
567
+ agents: selectedAgentIds,
568
+ dashboardUrl,
569
+ mode: isCloud ? 'cloud' : 'self-host',
570
+ };
571
+ console.log(JSON.stringify(output, null, 2));
572
+ return;
573
+ }
574
+ const summaryLines = [
575
+ `Mode: ${isCloud ? 'Memoire Cloud' : 'Self-hosted'}`,
576
+ `API: ${apiUrl}`,
577
+ `Org ID: ${bootstrapResult.org_id}`,
578
+ `Project ID: ${bootstrapResult.project_id}`,
579
+ `User ID: ${bootstrapResult.user_id}`,
580
+ `Agents: ${selectedAgentIds.join(', ')}`,
581
+ ];
582
+ if (dashboardUrl) {
583
+ summaryLines.push(`Dashboard: ${dashboardUrl}`);
584
+ }
585
+ p.note(summaryLines.join('\n'), 'Setup Complete');
586
+ if (dashboardUrl) {
587
+ const shouldOpen = await p.confirm({
588
+ message: 'Open the dashboard in your browser?',
589
+ initialValue: true,
590
+ });
591
+ if (!p.isCancel(shouldOpen) && shouldOpen) {
592
+ openBrowser(dashboardUrl);
593
+ }
594
+ }
595
+ p.outro('Memoire is ready. Happy coding!');
596
+ }
597
+ //# sourceMappingURL=setup-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface ExistingConfig {
2
+ api_url?: string;
3
+ api_key?: string;
4
+ org_id?: string;
5
+ project_id?: string;
6
+ user_id?: string;
7
+ client?: string;
8
+ }
9
+ export interface SystemInfo {
10
+ platform: string;
11
+ arch: string;
12
+ nodeVersion: string;
13
+ hasDocker: boolean;
14
+ hasSupabaseCli: boolean;
15
+ hasPnpm: boolean;
16
+ hasGit: boolean;
17
+ existingConfig: ExistingConfig | null;
18
+ }
19
+ export declare function commandExists(cmd: string): boolean;
20
+ export declare function loadExistingConfig(): ExistingConfig | null;
21
+ export declare function isPortAvailable(port: number): Promise<boolean>;
22
+ export declare function detectSystem(): Promise<SystemInfo>;
23
+ //# sourceMappingURL=system-detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-detect.d.ts","sourceRoot":"","sources":["../src/system-detect.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQlD;AAED,wBAAgB,kBAAkB,IAAI,cAAc,GAAG,IAAI,CAQ1D;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQpE;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,CAWxD"}
@@ -0,0 +1,47 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { readFileSync } from 'node:fs';
3
+ import { createConnection } from 'node:net';
4
+ import { homedir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ export function commandExists(cmd) {
7
+ const checker = process.platform === 'win32' ? 'where' : 'which';
8
+ try {
9
+ execFileSync(checker, [cmd], { stdio: 'ignore' });
10
+ return true;
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ export function loadExistingConfig() {
17
+ try {
18
+ const configPath = join(homedir(), '.memoire', 'config.json');
19
+ const raw = readFileSync(configPath, 'utf-8');
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ export async function isPortAvailable(port) {
27
+ return new Promise((resolve) => {
28
+ const socket = createConnection({ port, host: '127.0.0.1' });
29
+ socket.setTimeout(500);
30
+ socket.on('connect', () => { socket.destroy(); resolve(false); });
31
+ socket.on('timeout', () => { socket.destroy(); resolve(true); });
32
+ socket.on('error', () => { resolve(true); });
33
+ });
34
+ }
35
+ export async function detectSystem() {
36
+ return {
37
+ platform: process.platform,
38
+ arch: process.arch,
39
+ nodeVersion: process.version,
40
+ hasDocker: commandExists('docker'),
41
+ hasSupabaseCli: commandExists('supabase'),
42
+ hasPnpm: commandExists('pnpm'),
43
+ hasGit: commandExists('git'),
44
+ existingConfig: loadExistingConfig(),
45
+ };
46
+ }
47
+ //# sourceMappingURL=system-detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-detect.js","sourceRoot":"","sources":["../src/system-detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAsBjC,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjE,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC;QAClC,cAAc,EAAE,aAAa,CAAC,UAAU,CAAC;QACzC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC;QAC9B,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;QAC5B,cAAc,EAAE,kBAAkB,EAAE;KACrC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memoire-ai",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "description": "Memoire CLI for installing and querying shared AI coding context",
6
6
  "license": "AGPL-3.0",
@@ -37,12 +37,15 @@
37
37
  "main": "./dist/index.js",
38
38
  "types": "./dist/index.d.ts",
39
39
  "dependencies": {
40
+ "@clack/prompts": "^1.1.0",
40
41
  "yaml": "^2.8.1",
42
+ "@memoire-ai/sdk": "0.1.5",
43
+ "@memoire-ai/shared": "0.1.5"
44
+ },
45
+ "optionalDependencies": {
41
46
  "@memoire-ai/collector": "0.1.3",
42
- "@memoire-ai/shared": "0.1.3",
43
- "@memoire-ai/dashboard": "0.1.0",
44
- "@memoire-ai/sdk": "0.1.3",
45
- "@memoire-ai/mcp-runtime": "0.1.3"
47
+ "@memoire-ai/mcp-runtime": "0.1.3",
48
+ "@memoire-ai/dashboard": "0.1.0"
46
49
  },
47
50
  "devDependencies": {
48
51
  "@types/node": "^20.0.0",