@nex-ai/nex 0.1.10 → 0.1.12

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
@@ -66,6 +66,8 @@ nex setup status # Show all platforms, install status, and con
66
66
  ```
67
67
 
68
68
  **Default behavior** (no flags):
69
+ - If no API key exists: prompts to register
70
+ - If API key exists: offers to regenerate (picks up latest scopes) or change email
69
71
  - Claude Code: installs hooks + slash commands (no MCP — avoids filling context windows)
70
72
  - Other platforms: detected but MCP not written until `--with-mcp` is passed
71
73
  - Scans current directory and ingests new/changed files into Nex
@@ -134,13 +136,13 @@ nex insight list [--last 24h] # Recent insights
134
136
  ### Integrations
135
137
 
136
138
  ```bash
137
- nex integrate list # Show all integrations with connection status
138
- nex integrate connect email google # Connect Gmail via OAuth
139
- nex integrate connect messaging slack # Connect Slack
140
- nex integrate disconnect <id> # Disconnect by connection ID
139
+ nex integrate list # Show all integrations with connection status
140
+ nex integrate connect gmail # Connect Gmail via OAuth
141
+ nex integrate connect slack # Connect Slack
142
+ nex integrate disconnect <id> # Disconnect by connection ID
141
143
  ```
142
144
 
143
- Supported providers: Gmail, Google Calendar, Outlook, Outlook Calendar, Slack, Attio, HubSpot, Salesforce.
145
+ Available integrations: `gmail`, `google-calendar`, `outlook`, `outlook-calendar`, `slack`, `salesforce`, `hubspot`, `attio`.
144
146
 
145
147
  ### CRM Records
146
148
 
@@ -15,6 +15,67 @@ function getClient() {
15
15
  const client = new NexClient(resolveApiKey(opts.apiKey), resolveTimeout(opts.timeout));
16
16
  return { client, format: resolveFormat(opts.format) };
17
17
  }
18
+ const INTEGRATIONS = {
19
+ gmail: { type: "email", provider: "google" },
20
+ "google-calendar": { type: "calendar", provider: "google" },
21
+ outlook: { type: "email", provider: "microsoft" },
22
+ "outlook-calendar": { type: "calendar", provider: "microsoft" },
23
+ slack: { type: "messaging", provider: "slack" },
24
+ salesforce: { type: "crm", provider: "salesforce" },
25
+ hubspot: { type: "crm", provider: "hubspot" },
26
+ attio: { type: "crm", provider: "attio" },
27
+ };
28
+ const INTEGRATION_NAMES = Object.keys(INTEGRATIONS).join(", ");
29
+ function openBrowser(url) {
30
+ try {
31
+ let cmd;
32
+ let args;
33
+ if (process.platform === "darwin") {
34
+ cmd = "open";
35
+ args = [url];
36
+ }
37
+ else if (process.platform === "linux") {
38
+ cmd = "xdg-open";
39
+ args = [url];
40
+ }
41
+ else if (process.platform === "win32") {
42
+ cmd = "cmd";
43
+ args = ["/c", "start", "", url];
44
+ }
45
+ else {
46
+ throw new Error("Unsupported platform");
47
+ }
48
+ spawn(cmd, args, { stdio: "ignore", detached: true }).unref();
49
+ }
50
+ catch {
51
+ process.stderr.write(`Open this URL in your browser:\n${url}\n\n`);
52
+ }
53
+ }
54
+ async function pollForConnection(client, connectId, format) {
55
+ process.stderr.write("Waiting for OAuth completion...\n");
56
+ const maxWaitMs = 5 * 60 * 1000;
57
+ const pollIntervalMs = 2000;
58
+ const startTime = Date.now();
59
+ while (Date.now() - startTime < maxWaitMs) {
60
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
61
+ try {
62
+ const status = await client.get(`/v1/integrations/connect/${encodeURIComponent(connectId)}/status`);
63
+ if (status.status === "connected") {
64
+ process.stderr.write(`\nConnected successfully!\n`);
65
+ printOutput(status, format);
66
+ return;
67
+ }
68
+ }
69
+ catch (err) {
70
+ if (err instanceof AuthError)
71
+ throw err;
72
+ if (err instanceof ServerError && (err.status === 410 || err.status === 403))
73
+ throw err;
74
+ }
75
+ }
76
+ printError("Timed out waiting for OAuth completion. Check status with 'nex integrate list'.");
77
+ process.exit(1);
78
+ }
18
79
  const integrate = program
19
80
  .command("integrate")
20
81
  .description("Manage third-party integrations (Gmail, Slack, Salesforce, etc.)");
@@ -28,7 +89,6 @@ integrate
28
89
  printOutput(result, "json");
29
90
  return;
30
91
  }
31
- // Human-readable text output
32
92
  if (!Array.isArray(result) || result.length === 0) {
33
93
  process.stdout.write("No integrations available.\n");
34
94
  return;
@@ -52,76 +112,27 @@ integrate
52
112
  }
53
113
  }
54
114
  lines.push("");
55
- lines.push("Connect: nex integrate connect <type> <provider>");
115
+ lines.push(`Connect: nex integrate connect <name> (${INTEGRATION_NAMES})`);
56
116
  lines.push("Disconnect: nex integrate disconnect <id>");
57
117
  process.stdout.write(lines.join("\n") + "\n");
58
118
  });
59
119
  integrate
60
120
  .command("connect")
61
- .description("Connect a third-party integration via OAuth")
62
- .argument("<type>", "Integration type: email, calendar, crm, messaging")
63
- .argument("<provider>", "Provider: google, microsoft, attio, slack, salesforce, hubspot")
64
- .action(async (type, provider) => {
121
+ .description(`Connect an integration: ${INTEGRATION_NAMES}`)
122
+ .argument("<name>", `Integration name`)
123
+ .action(async (name) => {
124
+ const integration = INTEGRATIONS[name.toLowerCase()];
125
+ if (!integration) {
126
+ printError(`Unknown integration "${name}". Available: ${INTEGRATION_NAMES}`);
127
+ process.exit(1);
128
+ }
65
129
  const { client, format } = getClient();
66
- const result = await client.post(`/v1/integrations/${encodeURIComponent(type)}/${encodeURIComponent(provider)}/connect`);
130
+ const result = await client.post(`/v1/integrations/${encodeURIComponent(integration.type)}/${encodeURIComponent(integration.provider)}/connect`);
67
131
  if (!result.auth_url) {
68
132
  throw new Error("No auth URL returned from API");
69
133
  }
70
- // Open browser using spawn (no shell interpolation — safe from injection)
71
- const url = result.auth_url;
72
- try {
73
- let cmd;
74
- let args;
75
- if (process.platform === "darwin") {
76
- cmd = "open";
77
- args = [url];
78
- }
79
- else if (process.platform === "linux") {
80
- cmd = "xdg-open";
81
- args = [url];
82
- }
83
- else if (process.platform === "win32") {
84
- cmd = "cmd";
85
- args = ["/c", "start", "", url];
86
- }
87
- else {
88
- throw new Error("Unsupported platform");
89
- }
90
- spawn(cmd, args, { stdio: "ignore", detached: true }).unref();
91
- }
92
- catch {
93
- process.stderr.write(`Open this URL in your browser:\n${url}\n\n`);
94
- }
95
- process.stderr.write("Waiting for OAuth completion...\n");
96
- // Poll for status
97
- const connectId = result.connect_id;
98
- const maxWaitMs = 5 * 60 * 1000; // 5 minutes
99
- const pollIntervalMs = 2000;
100
- const startTime = Date.now();
101
- while (Date.now() - startTime < maxWaitMs) {
102
- await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
103
- try {
104
- const status = await client.get(`/v1/integrations/connect/${encodeURIComponent(connectId)}/status`);
105
- if (status.status === "connected") {
106
- process.stderr.write(`\nConnected successfully!\n`);
107
- printOutput(status, format);
108
- return;
109
- }
110
- }
111
- catch (err) {
112
- // Fail fast on non-transient errors
113
- if (err instanceof AuthError)
114
- throw err;
115
- if (err instanceof ServerError && (err.status === 410 || err.status === 403))
116
- throw err;
117
- // Continue polling on transient errors
118
- if (program.opts().debug) {
119
- process.stderr.write(`Poll error: ${err}\n`);
120
- }
121
- }
122
- }
123
- printError("Timed out waiting for OAuth completion. You can check status with 'nex integrate list'.");
124
- process.exit(1);
134
+ openBrowser(result.auth_url);
135
+ await pollForConnection(client, result.connect_id, format);
125
136
  });
126
137
  integrate
127
138
  .command("disconnect")
@@ -1 +1 @@
1
- {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrate.js","sourceRoot":"","sources":["../../src/commands/integrate.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,10 @@
11
11
  import { existsSync } from "node:fs";
12
12
  import { join } from "node:path";
13
13
  import { program } from "../cli.js";
14
- import { resolveApiKey, resolveFormat, resolveTimeout, persistRegistration } from "../lib/config.js";
14
+ import { resolveApiKey, resolveFormat, resolveTimeout, persistRegistration, loadConfig } from "../lib/config.js";
15
15
  import { NexClient } from "../lib/client.js";
16
16
  import { printOutput, printError } from "../lib/output.js";
17
- import { confirm, ask } from "../lib/prompt.js";
17
+ import { confirm, ask, choose } from "../lib/prompt.js";
18
18
  import { detectPlatforms, getPlatformById, VALID_PLATFORM_IDS } from "../lib/platform-detect.js";
19
19
  import { installMcpServer, installClaudeCodePlugin, syncApiKeyToMcpConfig } from "../lib/installers.js";
20
20
  import { writeDefaultProjectConfig } from "../lib/project-config.js";
@@ -25,9 +25,9 @@ function getClient() {
25
25
  return { client, format: resolveFormat(opts.format) };
26
26
  }
27
27
  // --- Status subcommand ---
28
- async function showStatus(format) {
28
+ async function showStatus(format, overrideApiKey) {
29
29
  const opts = program.opts();
30
- const apiKey = resolveApiKey(opts.apiKey);
30
+ const apiKey = overrideApiKey ?? resolveApiKey(opts.apiKey);
31
31
  const platforms = detectPlatforms();
32
32
  if (format === "json") {
33
33
  const data = {
@@ -41,10 +41,10 @@ async function showStatus(format) {
41
41
  })),
42
42
  project_config: projectConfigExists(),
43
43
  };
44
- // Fetch integrations if authenticated
44
+ // Fetch integrations if authenticated (short timeout — don't block setup)
45
45
  if (apiKey) {
46
46
  try {
47
- const client = new NexClient(apiKey, resolveTimeout(opts.timeout));
47
+ const client = new NexClient(apiKey, 5_000);
48
48
  data.integrations = await client.get("/v1/integrations/");
49
49
  }
50
50
  catch {
@@ -88,10 +88,10 @@ async function showStatus(format) {
88
88
  // Project config
89
89
  lines.push(`Project Config: ${projectConfigExists() ? ".nex.toml found" : ".nex.toml not found"}`);
90
90
  lines.push("");
91
- // Integrations
91
+ // Integrations (short timeout — don't block setup)
92
92
  if (apiKey) {
93
93
  try {
94
- const client = new NexClient(apiKey, resolveTimeout(opts.timeout));
94
+ const client = new NexClient(apiKey, 5_000);
95
95
  const integrations = await client.get("/v1/integrations/");
96
96
  if (Array.isArray(integrations) && integrations.length > 0) {
97
97
  lines.push("Connections:");
@@ -119,10 +119,26 @@ async function showStatus(format) {
119
119
  process.stdout.write(lines.join("\n") + "\n");
120
120
  }
121
121
  // --- Main setup flow ---
122
+ async function registerAndPersist(globalOpts, existingEmail) {
123
+ const email = existingEmail ?? await ask("Email (required):", true);
124
+ const name = await ask("Name (optional):");
125
+ process.stderr.write("\nRegistering...\n");
126
+ const client = new NexClient(undefined, resolveTimeout(globalOpts.timeout));
127
+ const data = await client.register(email, name || undefined);
128
+ // Ensure email is persisted even if the API doesn't return it
129
+ data.email = email;
130
+ persistRegistration(data);
131
+ const apiKey = data.api_key;
132
+ const wsSlug = data.workspace_slug;
133
+ process.stderr.write(`\n ✓ Registered!${wsSlug ? ` (${wsSlug})` : ""}\n`);
134
+ process.stderr.write(` API key: ${apiKey}\n`);
135
+ process.stderr.write(` Saved to: ~/.nex/config.json\n\n`);
136
+ return apiKey;
137
+ }
122
138
  async function runSetup(opts) {
123
139
  const globalOpts = program.opts();
124
140
  let apiKey = resolveApiKey(globalOpts.apiKey);
125
- // 1. Register if no API key
141
+ // 1. Register or re-register
126
142
  if (!apiKey) {
127
143
  process.stderr.write("\nNo API key found. Let's set up your Nex account.\n\n");
128
144
  const wantsRegister = await confirm("Register a new Nex workspace?");
@@ -143,17 +159,35 @@ async function runSetup(opts) {
143
159
  writeDefaultProjectConfig();
144
160
  return;
145
161
  }
146
- const email = await ask("Email (required):", true);
147
- const name = await ask("Name (optional):");
148
- process.stderr.write("\nRegistering...\n");
149
- const client = new NexClient(undefined, resolveTimeout(globalOpts.timeout));
150
- const data = await client.register(email, name || undefined);
151
- persistRegistration(data);
152
- apiKey = data.api_key;
153
- const wsSlug = data.workspace_slug;
154
- process.stderr.write(`\n ✓ Workspace created!${wsSlug ? ` (${wsSlug})` : ""}\n`);
155
- process.stderr.write(` API key: ${apiKey}\n`);
156
- process.stderr.write(` Saved to: ~/.nex-mcp.json\n`);
162
+ apiKey = await registerAndPersist(globalOpts);
163
+ }
164
+ else {
165
+ // Key exists — offer to regenerate (picks up new scopes, fixes expired keys)
166
+ const config = loadConfig();
167
+ const maskedKey = apiKey.slice(0, 6) + "..." + apiKey.slice(-4);
168
+ const existingEmail = config.email;
169
+ process.stderr.write(`\nAPI key: ${maskedKey}`);
170
+ if (config.workspace_slug) {
171
+ process.stderr.write(` (workspace: ${config.workspace_slug})`);
172
+ }
173
+ if (existingEmail) {
174
+ process.stderr.write(`\nEmail: ${existingEmail}`);
175
+ }
176
+ process.stderr.write("\n\n");
177
+ const choice = await choose("Generate a new API key?", [
178
+ `Generate new key${existingEmail ? ` for ${existingEmail}` : ""}`,
179
+ "Change email and generate new key",
180
+ "Keep current key",
181
+ ]);
182
+ if (choice === 0) {
183
+ // Regenerate with existing email (no prompt)
184
+ apiKey = await registerAndPersist(globalOpts, existingEmail);
185
+ }
186
+ else if (choice === 1) {
187
+ // Change email — prompt for new one
188
+ apiKey = await registerAndPersist(globalOpts);
189
+ }
190
+ // choice === 2: keep current key, do nothing
157
191
  }
158
192
  // 2. Sync API key to shared config
159
193
  syncApiKeyToMcpConfig(apiKey);
@@ -265,9 +299,9 @@ async function runSetup(opts) {
265
299
  }
266
300
  process.stderr.write("\n");
267
301
  }
268
- // 8. Show status
302
+ // 8. Show status (pass current apiKey — may differ from global opts after re-registration)
269
303
  if (opts.format !== "json") {
270
- await showStatus(opts.format);
304
+ await showStatus(opts.format, apiKey);
271
305
  }
272
306
  }
273
307
  // --- Helpers ---
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare const API_BASE: string;
8
8
  export declare const REGISTER_URL: string;
9
9
  export interface NexConfig {
10
10
  api_key?: string;
11
+ email?: string;
11
12
  workspace_id?: string;
12
13
  workspace_slug?: string;
13
14
  default_format?: string;
@@ -49,6 +49,8 @@ export function persistRegistration(data) {
49
49
  const existing = loadConfig();
50
50
  if (typeof data.api_key === "string")
51
51
  existing.api_key = data.api_key;
52
+ if (typeof data.email === "string")
53
+ existing.email = data.email;
52
54
  if (typeof data.workspace_id === "string" || typeof data.workspace_id === "number") {
53
55
  existing.workspace_id = String(data.workspace_id);
54
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,oBAAoB,CAAC;AACxE,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,QAAQ,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,QAAQ,yBAAyB,CAAC;AAWjE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAkB;IAC9C,OAAO,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC,OAAO,IAAI,SAAS,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAkB;IAC9C,OAAO,SAAS,IAAI,UAAU,EAAE,CAAC,cAAc,IAAI,MAAM,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAkB;IAC/C,IAAI,SAAS;QAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,UAAU,EAAE,CAAC,eAAe,IAAI,OAAO,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA6B;IAC/D,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACtE,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnF,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;QAAE,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3F,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,oBAAoB,CAAC;AACxE,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,QAAQ,iBAAiB,CAAC;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,QAAQ,yBAAyB,CAAC;AAYjE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAc,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAkB;IAC9C,OAAO,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC,OAAO,IAAI,SAAS,CAAC;AACnF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,SAAkB;IAC9C,OAAO,SAAS,IAAI,UAAU,EAAE,CAAC,cAAc,IAAI,MAAM,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAkB;IAC/C,IAAI,SAAS;QAAE,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,UAAU,EAAE,CAAC,eAAe,IAAI,OAAO,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA6B;IAC/D,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;IAC9B,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAAE,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACtE,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAChE,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QACnF,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ;QAAE,QAAQ,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3F,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvB,CAAC"}
@@ -2,4 +2,5 @@
2
2
  * Minimal interactive prompt helpers using readline.
3
3
  */
4
4
  export declare function confirm(message: string, defaultYes?: boolean): Promise<boolean>;
5
+ export declare function choose(message: string, options: string[]): Promise<number>;
5
6
  export declare function ask(message: string, required?: boolean): Promise<string>;
@@ -18,6 +18,27 @@ export async function confirm(message, defaultYes = true) {
18
18
  });
19
19
  });
20
20
  }
21
+ export async function choose(message, options) {
22
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
23
+ for (let i = 0; i < options.length; i++) {
24
+ process.stderr.write(` ${i + 1}) ${options[i]}\n`);
25
+ }
26
+ return new Promise((resolve) => {
27
+ const prompt = () => {
28
+ rl.question(`${message} `, (answer) => {
29
+ const num = parseInt(answer.trim(), 10);
30
+ if (num >= 1 && num <= options.length) {
31
+ rl.close();
32
+ resolve(num - 1);
33
+ return;
34
+ }
35
+ process.stderr.write(` Please enter 1-${options.length}\n`);
36
+ prompt();
37
+ });
38
+ };
39
+ prompt();
40
+ });
41
+ }
21
42
  export async function ask(message, required = false) {
22
43
  const rl = createInterface({ input: process.stdin, output: process.stderr });
23
44
  return new Promise((resolve) => {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/lib/prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,UAAU,GAAG,IAAI;IAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YAC9C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,CAAC,UAAU,CAAC,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAe,EAAE,QAAQ,GAAG,KAAK;IACzD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,EAAE,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;gBACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;oBACzB,MAAM,EAAE,CAAC;oBACT,OAAO;gBACT,CAAC;gBACD,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/lib/prompt.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nex-ai/nex",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Nex CLI provides organizational context & memory to AI agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Add a field (attribute) to an object type
3
+ ---
4
+ Add a field to an object type: $ARGUMENTS
5
+
6
+ If insufficient arguments, respond: "Usage: /add-field <object_slug> <field_name> <field_type> [--required] [--label <label>]"
7
+
8
+ Supported field types: text, number, email, phone, url, date, datetime, boolean, select, multi_select, currency, rich_text.
9
+
10
+ Parse the object slug, field name, type, and optional flags from arguments.
11
+ Use the `mcp__nex__create_attribute` tool with the parsed parameters.
12
+ Confirm the field was added successfully.
@@ -0,0 +1,14 @@
1
+ ---
2
+ description: Check processing status of an ingested artifact
3
+ ---
4
+ Check artifact status: $ARGUMENTS
5
+
6
+ If no artifact ID provided, respond: "Usage: /artifact <artifact_id>"
7
+
8
+ Use the `mcp__nex__get_artifact_status` tool with the provided artifact_id.
9
+
10
+ Show:
11
+ - **Status**: processing state (pending, processing, completed, failed)
12
+ - **Extracted entities**: list if available
13
+ - **Relationships**: list if available
14
+ - **Error**: details if status is failed
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Create a new note
3
+ ---
4
+ Create a note: $ARGUMENTS
5
+
6
+ If no title provided, respond: "Usage: /create-note <title> [--content <body>] [--entity <entity_id>]"
7
+
8
+ Parse the title and optional content/entity from arguments.
9
+ Use the `mcp__nex__create_note` tool with the parsed parameters.
10
+ Confirm creation with the note ID and details.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Create a new object type definition
3
+ ---
4
+ Create a new object type: $ARGUMENTS
5
+
6
+ If no name provided, respond: "Usage: /create-object <object name> [--plural <plural name>] [--description <description>]"
7
+
8
+ Parse the arguments for the object name, optional plural name, and description.
9
+ Use the `mcp__nex__create_object` tool with the parsed parameters.
10
+ Confirm creation with the returned slug and details.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Create a new record
3
+ ---
4
+ Create a new record: $ARGUMENTS
5
+
6
+ If insufficient arguments, respond: "Usage: /create-record <object_slug> <field=value> [field=value ...]"
7
+ Example: /create-record contacts name="Jane Doe" email="jane@example.com"
8
+
9
+ Parse the object slug and field key=value pairs from arguments.
10
+ Use the `mcp__nex__create_record` tool with object_slug and the attributes object.
11
+ Confirm creation with the returned record ID and details.
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Create a new task
3
+ ---
4
+ Create a task: $ARGUMENTS
5
+
6
+ If no title provided, respond: "Usage: /create-task <title> [--due <date>] [--priority <low|medium|high>] [--entity <entity_id>]"
7
+
8
+ Parse the title and optional flags from arguments.
9
+ Use the `mcp__nex__create_task` tool with the parsed parameters.
10
+ Confirm creation with the task ID and details.
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Get recent insights from the context graph
3
+ ---
4
+ Get insights: $ARGUMENTS
5
+
6
+ Use the `mcp__nex__get_insights` tool. If $ARGUMENTS specifies a time window (e.g. "2h", "1d", "30m"), use it as the `last` parameter. Default to "1h" if not specified.
7
+
8
+ Format each insight as:
9
+ - **Type**: insight content
10
+ - Confidence: X% | Source entities
11
+ - Timestamp
12
+
13
+ If no insights found, respond: "No recent insights found in the specified time window."
@@ -2,33 +2,24 @@ Help the user connect third-party integrations (Gmail, Google Calendar, Outlook,
2
2
 
3
3
  ## Available Integrations
4
4
 
5
- | Type | Provider | Display Name |
6
- |------|----------|-------------|
7
- | email | google | Gmail |
8
- | calendar | google | Google Calendar |
9
- | email | microsoft | Outlook |
10
- | calendar | microsoft | Outlook Calendar |
11
- | messaging | slack | Slack |
12
- | crm | attio | Attio |
13
- | crm | hubspot | HubSpot |
14
- | crm | salesforce | Salesforce |
5
+ `gmail`, `google-calendar`, `outlook`, `outlook-calendar`, `slack`, `attio`, `hubspot`, `salesforce`
15
6
 
16
7
  ## Steps
17
8
 
18
9
  1. First, list current integrations to see what's already connected:
19
- Use the `list_integrations` MCP tool, or suggest the user runs `nex integrate list` in the terminal.
10
+ Use the `list_integrations` MCP tool, or suggest: `nex integrate list`
20
11
 
21
12
  2. To connect a new integration:
22
- Use the `connect_integration` MCP tool with the `type` and `provider` from the table above.
13
+ Use the `connect_integration` MCP tool with the `type` and `provider`.
23
14
  This returns an `auth_url` — open it in the user's browser.
24
- Alternatively, the user can run: `nex integrate connect <type> <provider>`
15
+ Or suggest: `nex integrate connect gmail`
25
16
 
26
17
  3. Poll for completion:
27
18
  Use the `get_connect_status` MCP tool with the `connect_id` every few seconds until `status` is `"connected"`.
28
19
 
29
20
  4. To disconnect:
30
21
  Use the `disconnect_integration` MCP tool with the `connection_id`.
31
- Alternatively: `nex integrate disconnect <id>`
22
+ Or: `nex integrate disconnect <id>`
32
23
 
33
24
  5. To check overall setup status:
34
- Suggest the user runs `nex setup status` to see all platforms, integrations, and config status.
25
+ Suggest: `nex setup status`
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Link two records with a relationship
3
+ ---
4
+ Link records: $ARGUMENTS
5
+
6
+ If insufficient arguments, respond: "Usage: /link-records <definition_id> <source_record_id> <target_record_id>"
7
+
8
+ Parse the relationship definition ID, source record ID, and target record ID from arguments.
9
+ Use the `mcp__nex__create_relationship` tool with the parsed parameters.
10
+ Confirm the relationship was created.
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: View records in a list
3
+ ---
4
+ Show list members: $ARGUMENTS
5
+
6
+ If no list ID provided, respond: "Usage: /list-members <list_id>"
7
+
8
+ Use the `mcp__nex__list_list_records` tool with the provided list_id.
9
+
10
+ Format results as a table showing:
11
+ - Record name/title
12
+ - Key attributes
13
+ - Date added to list
14
+
15
+ If no members found, respond: "This list has no members."
@@ -0,0 +1,14 @@
1
+ ---
2
+ description: View lists for an object type
3
+ ---
4
+ Show lists for: $ARGUMENTS
5
+
6
+ If no object slug provided, respond: "Usage: /lists <object_slug>"
7
+
8
+ Use the `mcp__nex__list_object_lists` tool with the provided object_slug.
9
+
10
+ Format each list as:
11
+ - **List Name** (ID: `list_id`)
12
+ - Description and member count if available
13
+
14
+ If no lists found, respond: "No lists found for this object type."
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: List notes, optionally for a specific record
3
+ ---
4
+ List notes: $ARGUMENTS
5
+
6
+ Use the `mcp__nex__list_notes` tool. If $ARGUMENTS is provided, use it as an entity_id filter to show notes for that specific record.
7
+
8
+ Format each note as:
9
+ - **Title** (ID: `note_id`, Created: date)
10
+ - Content preview (first 100 chars)
11
+ - Linked entity if applicable
12
+
13
+ If no notes found, respond: "No notes found."
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Get a record by ID
3
+ ---
4
+ Get record: $ARGUMENTS
5
+
6
+ If no record ID provided, respond: "Usage: /record <record_id>"
7
+
8
+ Use the `mcp__nex__get_record` tool with the provided record_id.
9
+ Format the record as:
10
+ - **Name** (Type: `object_type`)
11
+ - All attributes in a readable key-value list
12
+ - Show created_at and updated_at timestamps
@@ -5,19 +5,9 @@ Register for a Nex account to get an API key for the memory plugin.
5
5
 
6
6
  If $ARGUMENTS contains an email address, use it directly. Otherwise, ask the user for their email.
7
7
 
8
- Run the registration script. Find the script path by running:
8
+ Run the registration script:
9
9
  ```
10
- node -e "console.log(require('path').join(require('path').dirname(require.resolve('@nex-ai/nex/package.json')), 'dist', 'plugin', 'auto-register.js'))"
11
- ```
12
-
13
- Then run:
14
- ```
15
- node <resolved-path> <email> [name] [company]
16
- ```
17
-
18
- If the resolve fails, try the global install path:
19
- ```
20
- node $(npm prefix -g)/lib/node_modules/@nex-ai/nex/dist/plugin/auto-register.js <email> [name] [company]
10
+ node <plugin-dir>/dist/auto-register.js <email> [name] [company]
21
11
  ```
22
12
 
23
13
  After successful registration:
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: View relationship definitions in the workspace
3
+ ---
4
+ List relationship definitions: $ARGUMENTS
5
+
6
+ Use the `mcp__nex__list_relationship_definitions` tool.
7
+
8
+ Format each relationship as:
9
+ - **Name**: source_object → target_object (cardinality)
10
+ - Description if available
11
+
12
+ If no relationships defined, respond: "No relationship definitions found in this workspace."
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: View workspace schema (object types and their fields)
3
+ ---
4
+ $ARGUMENTS
5
+
6
+ If a specific object slug is provided, use the `mcp__nex__get_object` tool with that slug to show its details and attributes.
7
+
8
+ Otherwise, use `mcp__nex__list_objects` with include_attributes=true to list all object types.
9
+
10
+ Format each object type as:
11
+ - **Object Name** (`slug`) — description
12
+ - Fields: list each attribute with name, type, and whether required
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: Search CRM records by name across all types
3
+ ---
4
+ Search for: $ARGUMENTS
5
+
6
+ If no query provided, respond: "Usage: /search <query>"
7
+
8
+ Use the `mcp__nex__search_records` tool with the query.
9
+ Format results grouped by object type. For each result show:
10
+ - **Name** (ID: `record_id`) — object type
11
+ - Key attributes if available
12
+ If no results found, respond: "No records found matching your query."
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: List tasks, optionally filtered
3
+ ---
4
+ List tasks: $ARGUMENTS
5
+
6
+ Use the `mcp__nex__list_tasks` tool. If $ARGUMENTS is provided, use it as a search filter.
7
+
8
+ Format each task as:
9
+ - [ ] or [x] **Title** (Priority: X, Due: date)
10
+ - Status, assignee if set
11
+ - Brief description if available
12
+
13
+ If no tasks found, respond: "No tasks found."
@@ -0,0 +1,12 @@
1
+ ---
2
+ description: View timeline events for a record
3
+ ---
4
+ Show timeline for record: $ARGUMENTS
5
+
6
+ If no record ID provided, respond: "Usage: /timeline <record_id>"
7
+
8
+ Use the `mcp__nex__get_record_timeline` tool with the provided record_id.
9
+ Format timeline entries chronologically, showing for each:
10
+ - Timestamp
11
+ - Event type
12
+ - Summary of what changed
@@ -0,0 +1,10 @@
1
+ ---
2
+ description: Update a field (attribute) on an object type
3
+ ---
4
+ Update a field: $ARGUMENTS
5
+
6
+ If insufficient arguments, respond: "Usage: /update-field <object_slug> <attribute_slug> [--label <label>] [--required true|false] [--description <desc>]"
7
+
8
+ Parse the object slug, attribute slug, and fields to update from arguments.
9
+ Use the `mcp__nex__update_attribute` tool with the parsed parameters.
10
+ Confirm the update with the returned details.
@@ -0,0 +1,11 @@
1
+ ---
2
+ description: Update an existing record
3
+ ---
4
+ Update record: $ARGUMENTS
5
+
6
+ If insufficient arguments, respond: "Usage: /update-record <record_id> <field=value> [field=value ...]"
7
+ Example: /update-record rec_123 email="new@example.com" phone="+1234567890"
8
+
9
+ Parse the record ID and field key=value pairs from arguments.
10
+ Use the `mcp__nex__update_record` tool with the record_id and attributes object.
11
+ Confirm the update with the returned details.
@@ -0,0 +1,13 @@
1
+ ---
2
+ description: Create or update a record (upsert)
3
+ ---
4
+ Upsert record: $ARGUMENTS
5
+
6
+ If insufficient arguments, respond: "Usage: /upsert-record <object_slug> --match <attribute> <field=value> [field=value ...]"
7
+ Example: /upsert-record contacts --match email name="Jane Doe" email="jane@example.com"
8
+
9
+ The `--match` flag specifies the matching_attribute used to find existing records. If a record with the same value for that attribute exists, it will be updated; otherwise a new record is created.
10
+
11
+ Parse the object slug, matching attribute, and field key=value pairs.
12
+ Use the `mcp__nex__upsert_record` tool with object_slug, matching_attribute, and attributes.
13
+ Report whether the record was created or updated.