@nex-ai/nex 0.1.38 → 0.1.40
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 +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/workspace.d.ts +8 -0
- package/dist/commands/workspace.js +251 -0
- package/dist/commands/workspace.js.map +1 -0
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +2 -2
- package/dist/lib/config.js +33 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/workspace-registry.d.ts +47 -0
- package/dist/lib/workspace-registry.js +240 -0
- package/dist/lib/workspace-registry.js.map +1 -0
- package/dist/mcp/channel.js +5 -4
- package/dist/mcp/channel.js.map +1 -1
- package/dist/mcp/config.d.ts +5 -0
- package/dist/mcp/config.js +16 -1
- package/dist/mcp/config.js.map +1 -1
- package/dist/mcp/file-manifest.d.ts +1 -1
- package/dist/mcp/file-manifest.js +11 -7
- package/dist/mcp/file-manifest.js.map +1 -1
- package/dist/mcp/rate-limiter.js +2 -2
- package/dist/mcp/rate-limiter.js.map +1 -1
- package/dist/mcp/session-store.js +2 -2
- package/dist/mcp/session-store.js.map +1 -1
- package/dist/mcp/workspace-data-dir.d.ts +2 -0
- package/dist/mcp/workspace-data-dir.js +28 -0
- package/dist/mcp/workspace-data-dir.js.map +1 -0
- package/dist/plugin/adapters/cline-capture.d.ts +7 -0
- package/dist/plugin/adapters/cline-capture.js +25 -0
- package/dist/plugin/adapters/cline-capture.js.map +1 -0
- package/dist/plugin/adapters/cline-recall.d.ts +7 -0
- package/dist/plugin/adapters/cline-recall.js +30 -0
- package/dist/plugin/adapters/cline-recall.js.map +1 -0
- package/dist/plugin/adapters/cline-task-start.d.ts +7 -0
- package/dist/plugin/adapters/cline-task-start.js +30 -0
- package/dist/plugin/adapters/cline-task-start.js.map +1 -0
- package/dist/plugin/adapters/cursor-recall.d.ts +7 -0
- package/dist/plugin/adapters/cursor-recall.js +31 -0
- package/dist/plugin/adapters/cursor-recall.js.map +1 -0
- package/dist/plugin/adapters/cursor-session-start.d.ts +7 -0
- package/dist/plugin/adapters/cursor-session-start.js +30 -0
- package/dist/plugin/adapters/cursor-session-start.js.map +1 -0
- package/dist/plugin/adapters/cursor-stop.d.ts +7 -0
- package/dist/plugin/adapters/cursor-stop.js +25 -0
- package/dist/plugin/adapters/cursor-stop.js.map +1 -0
- package/dist/plugin/adapters/windsurf-capture.d.ts +7 -0
- package/dist/plugin/adapters/windsurf-capture.js +25 -0
- package/dist/plugin/adapters/windsurf-capture.js.map +1 -0
- package/dist/plugin/adapters/windsurf-recall.d.ts +7 -0
- package/dist/plugin/adapters/windsurf-recall.js +31 -0
- package/dist/plugin/adapters/windsurf-recall.js.map +1 -0
- package/dist/plugin/auto-register.d.ts +1 -1
- package/dist/plugin/auto-register.js +34 -6
- package/dist/plugin/auto-register.js.map +1 -1
- package/dist/plugin/config.d.ts +11 -4
- package/dist/plugin/config.js +21 -5
- package/dist/plugin/config.js.map +1 -1
- package/dist/plugin/file-manifest.js +10 -6
- package/dist/plugin/file-manifest.js.map +1 -1
- package/dist/plugin/rate-limiter.js +2 -2
- package/dist/plugin/rate-limiter.js.map +1 -1
- package/dist/plugin/recall-filter.js +10 -6
- package/dist/plugin/recall-filter.js.map +1 -1
- package/dist/plugin/session-store.js +2 -3
- package/dist/plugin/session-store.js.map +1 -1
- package/dist/plugin/shared.d.ts +39 -0
- package/dist/plugin/shared.js +380 -0
- package/dist/plugin/shared.js.map +1 -0
- package/dist/plugin/workspace-data-dir.d.ts +2 -0
- package/dist/plugin/workspace-data-dir.js +31 -0
- package/dist/plugin/workspace-data-dir.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -5,6 +5,7 @@ import { Command } from "commander";
|
|
|
5
5
|
import { createRequire } from "node:module";
|
|
6
6
|
const require = createRequire(import.meta.url);
|
|
7
7
|
const { version } = require("../package.json");
|
|
8
|
+
import { workspace } from "./commands/workspace.js";
|
|
8
9
|
export const program = new Command();
|
|
9
10
|
program
|
|
10
11
|
.name("nex")
|
|
@@ -15,4 +16,5 @@ program
|
|
|
15
16
|
.option("--timeout <ms>", "Request timeout in milliseconds")
|
|
16
17
|
.option("--session <id>", "Session ID for multi-turn context")
|
|
17
18
|
.option("--debug", "Debug output on stderr");
|
|
19
|
+
program.addCommand(workspace);
|
|
18
20
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC;KAC5D,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;KAC3D,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;KAC7D,MAAM,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAErC,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC;KAC5D,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;KAC3D,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;KAC7D,MAAM,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;AAE/C,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* nex workspace — manage local workspaces.
|
|
3
|
+
*
|
|
4
|
+
* Subcommands: list, switch, rename, current.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
import { listWorkspaces, switchWorkspace, renameWorkspace, getActiveCredentials, resolveSlug, loadRegistry, resetDataDirCache, removeWorkspace, } from "../lib/workspace-registry.js";
|
|
8
|
+
import { style, sym } from "../lib/tui.js";
|
|
9
|
+
import { resolveFormat } from "../lib/config.js";
|
|
10
|
+
const workspace = new Command("workspace").description("Manage workspaces");
|
|
11
|
+
// --- current ---
|
|
12
|
+
workspace
|
|
13
|
+
.command("current")
|
|
14
|
+
.description("Show active workspace")
|
|
15
|
+
.action(() => {
|
|
16
|
+
const creds = getActiveCredentials();
|
|
17
|
+
if (!creds) {
|
|
18
|
+
process.stderr.write("No active workspace. Run: nex register --email <email>\n");
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const registry = loadRegistry();
|
|
22
|
+
const meta = registry.workspaces[creds.workspace_slug];
|
|
23
|
+
const nickname = meta?.nickname;
|
|
24
|
+
const format = resolveFormat();
|
|
25
|
+
if (format === "json") {
|
|
26
|
+
console.log(JSON.stringify({
|
|
27
|
+
slug: creds.workspace_slug,
|
|
28
|
+
nickname: nickname || null,
|
|
29
|
+
email: creds.email,
|
|
30
|
+
workspace_id: creds.workspace_id,
|
|
31
|
+
active: true,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
const display = nickname
|
|
36
|
+
? `${style.bold(nickname)} (${style.dim(creds.workspace_slug)})`
|
|
37
|
+
: style.bold(creds.workspace_slug);
|
|
38
|
+
console.log(`${sym.success} Active: ${display}`);
|
|
39
|
+
console.log(` Email: ${creds.email}`);
|
|
40
|
+
console.log(` ID: ${creds.workspace_id}`);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
// --- switch ---
|
|
44
|
+
workspace
|
|
45
|
+
.command("switch")
|
|
46
|
+
.description("Switch active workspace")
|
|
47
|
+
.argument("[slug-or-nickname]", "Workspace slug or nickname")
|
|
48
|
+
.action(async (input) => {
|
|
49
|
+
if (!input) {
|
|
50
|
+
// Interactive mode — launch picker
|
|
51
|
+
await interactiveWorkspacePicker();
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const slug = resolveSlug(input);
|
|
55
|
+
if (!slug) {
|
|
56
|
+
process.stderr.write(`Workspace "${input}" not found.\n`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const creds = switchWorkspace(slug);
|
|
60
|
+
resetDataDirCache();
|
|
61
|
+
console.log(`${sym.success} Switched to ${style.bold(slug)} (${creds.email})`);
|
|
62
|
+
});
|
|
63
|
+
// --- rename ---
|
|
64
|
+
workspace
|
|
65
|
+
.command("rename")
|
|
66
|
+
.description("Rename a workspace")
|
|
67
|
+
.argument("<slug-or-nickname>", "Workspace slug or nickname")
|
|
68
|
+
.argument("<name>", "New nickname")
|
|
69
|
+
.action((input, name) => {
|
|
70
|
+
const slug = resolveSlug(input);
|
|
71
|
+
if (!slug) {
|
|
72
|
+
process.stderr.write(`Workspace "${input}" not found.\n`);
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
renameWorkspace(slug, name);
|
|
76
|
+
console.log(`${sym.success} Renamed ${style.bold(slug)} to "${name}"`);
|
|
77
|
+
});
|
|
78
|
+
// --- list ---
|
|
79
|
+
workspace
|
|
80
|
+
.command("list")
|
|
81
|
+
.description("Interactive workspace manager")
|
|
82
|
+
.action(async () => {
|
|
83
|
+
if (!process.stdin.isTTY) {
|
|
84
|
+
// Non-TTY: print JSON list
|
|
85
|
+
const workspaces = listWorkspaces();
|
|
86
|
+
const registry = loadRegistry();
|
|
87
|
+
const output = workspaces.map((ws) => ({
|
|
88
|
+
slug: ws.slug,
|
|
89
|
+
nickname: ws.nickname || null,
|
|
90
|
+
email: ws.email,
|
|
91
|
+
active: ws.slug === registry.active_workspace,
|
|
92
|
+
}));
|
|
93
|
+
console.log(JSON.stringify(output, null, 2));
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
await interactiveWorkspacePicker();
|
|
97
|
+
});
|
|
98
|
+
export { workspace };
|
|
99
|
+
// --- Interactive picker ---
|
|
100
|
+
async function interactiveWorkspacePicker() {
|
|
101
|
+
const registry = loadRegistry();
|
|
102
|
+
let workspaces = listWorkspaces();
|
|
103
|
+
if (workspaces.length === 0) {
|
|
104
|
+
console.log("No workspaces registered. Run: nex register --email <email>");
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
let selected = 0;
|
|
108
|
+
let mode = "normal";
|
|
109
|
+
let renameBuffer = "";
|
|
110
|
+
let errorMessage = "";
|
|
111
|
+
function draw() {
|
|
112
|
+
// Clear screen + move cursor home
|
|
113
|
+
process.stdout.write("\x1b[2J\x1b[H");
|
|
114
|
+
process.stdout.write(` ${style.bold("Workspaces")}${style.dim(" (q to exit)")}\n`);
|
|
115
|
+
process.stdout.write(` ${"─".repeat(45)}\n\n`);
|
|
116
|
+
for (let i = 0; i < workspaces.length; i++) {
|
|
117
|
+
const ws = workspaces[i];
|
|
118
|
+
const isActive = ws.slug === registry.active_workspace;
|
|
119
|
+
const isSelected = i === selected;
|
|
120
|
+
const indicator = isActive ? style.green("●") : " ";
|
|
121
|
+
const pointer = isSelected ? style.cyan(sym.pointer) : " ";
|
|
122
|
+
const display = ws.nickname
|
|
123
|
+
? `${style.bold(ws.nickname)} ${style.dim(`(${ws.slug})`)}`
|
|
124
|
+
: style.bold(ws.slug);
|
|
125
|
+
process.stdout.write(` ${pointer} ${indicator} ${display}\n`);
|
|
126
|
+
process.stdout.write(` ${style.dim(ws.email)}\n`);
|
|
127
|
+
// Inline rename input
|
|
128
|
+
if (isSelected && mode === "renaming") {
|
|
129
|
+
process.stdout.write(` ${style.cyan("Nickname:")} ${renameBuffer}\u2588\n`);
|
|
130
|
+
}
|
|
131
|
+
// Inline delete confirmation
|
|
132
|
+
if (isSelected && mode === "confirming-delete") {
|
|
133
|
+
const name = ws.nickname || ws.slug;
|
|
134
|
+
process.stdout.write(` ${style.red(`Remove ${name}? (y/n)`)}\n`);
|
|
135
|
+
}
|
|
136
|
+
process.stdout.write("\n");
|
|
137
|
+
}
|
|
138
|
+
if (errorMessage) {
|
|
139
|
+
process.stdout.write(` ${style.red(errorMessage)}\n\n`);
|
|
140
|
+
errorMessage = "";
|
|
141
|
+
}
|
|
142
|
+
if (mode === "normal") {
|
|
143
|
+
process.stdout.write(` ${style.dim("[↑↓] navigate [enter] switch [r] rename [d] delete")}\n`);
|
|
144
|
+
}
|
|
145
|
+
else if (mode === "renaming") {
|
|
146
|
+
process.stdout.write(` ${style.dim("[enter] save [esc] cancel")}\n`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function cleanup() {
|
|
150
|
+
process.stdin.setRawMode(false);
|
|
151
|
+
process.stdin.pause();
|
|
152
|
+
process.stdin.removeAllListeners("data");
|
|
153
|
+
// Clear screen
|
|
154
|
+
process.stdout.write("\x1b[2J\x1b[H");
|
|
155
|
+
}
|
|
156
|
+
return new Promise((resolve) => {
|
|
157
|
+
process.stdin.setRawMode(true);
|
|
158
|
+
process.stdin.resume();
|
|
159
|
+
process.stdin.setEncoding("utf-8");
|
|
160
|
+
draw();
|
|
161
|
+
process.stdin.on("data", (key) => {
|
|
162
|
+
if (mode === "normal") {
|
|
163
|
+
// Navigation
|
|
164
|
+
if (key === "\x1b[A" && selected > 0) {
|
|
165
|
+
selected--;
|
|
166
|
+
}
|
|
167
|
+
else if (key === "\x1b[B" && selected < workspaces.length - 1) {
|
|
168
|
+
selected++;
|
|
169
|
+
}
|
|
170
|
+
// Switch (enter)
|
|
171
|
+
else if (key === "\r") {
|
|
172
|
+
const ws = workspaces[selected];
|
|
173
|
+
if (ws.slug !== registry.active_workspace) {
|
|
174
|
+
switchWorkspace(ws.slug);
|
|
175
|
+
resetDataDirCache();
|
|
176
|
+
registry.active_workspace = ws.slug;
|
|
177
|
+
}
|
|
178
|
+
cleanup();
|
|
179
|
+
const display = ws.nickname || ws.slug;
|
|
180
|
+
console.log(`${sym.success} Switched to ${style.bold(display)}`);
|
|
181
|
+
resolve();
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
// Rename (r)
|
|
185
|
+
else if (key === "r") {
|
|
186
|
+
mode = "renaming";
|
|
187
|
+
renameBuffer = workspaces[selected].nickname || "";
|
|
188
|
+
}
|
|
189
|
+
// Delete (d)
|
|
190
|
+
else if (key === "d") {
|
|
191
|
+
const ws = workspaces[selected];
|
|
192
|
+
if (ws.slug === registry.active_workspace) {
|
|
193
|
+
errorMessage = "Cannot remove active workspace. Switch first.";
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
mode = "confirming-delete";
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Quit
|
|
200
|
+
else if (key === "q" || key === "\x03") {
|
|
201
|
+
cleanup();
|
|
202
|
+
resolve();
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else if (mode === "renaming") {
|
|
207
|
+
if (key === "\r") {
|
|
208
|
+
// Commit rename
|
|
209
|
+
const ws = workspaces[selected];
|
|
210
|
+
renameWorkspace(ws.slug, renameBuffer);
|
|
211
|
+
ws.nickname = renameBuffer;
|
|
212
|
+
mode = "normal";
|
|
213
|
+
renameBuffer = "";
|
|
214
|
+
}
|
|
215
|
+
else if (key === "\x1b") {
|
|
216
|
+
// Cancel
|
|
217
|
+
mode = "normal";
|
|
218
|
+
renameBuffer = "";
|
|
219
|
+
}
|
|
220
|
+
else if (key === "\x7f") {
|
|
221
|
+
// Backspace
|
|
222
|
+
renameBuffer = renameBuffer.slice(0, -1);
|
|
223
|
+
}
|
|
224
|
+
else if (key.length === 1 && key >= " ") {
|
|
225
|
+
renameBuffer += key;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
else if (mode === "confirming-delete") {
|
|
229
|
+
if (key === "y") {
|
|
230
|
+
const ws = workspaces[selected];
|
|
231
|
+
removeWorkspace(ws.slug);
|
|
232
|
+
workspaces = listWorkspaces();
|
|
233
|
+
if (selected >= workspaces.length)
|
|
234
|
+
selected = Math.max(0, workspaces.length - 1);
|
|
235
|
+
mode = "normal";
|
|
236
|
+
if (workspaces.length === 0) {
|
|
237
|
+
cleanup();
|
|
238
|
+
console.log("All workspaces removed.");
|
|
239
|
+
resolve();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
mode = "normal";
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
draw();
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -97,7 +97,7 @@ When no command is given, launches the interactive TUI.`);
|
|
|
97
97
|
emitAndExit(result);
|
|
98
98
|
}
|
|
99
99
|
// Interactive commands → fall through to Commander (rich TUI with pickers, spinners, workflows)
|
|
100
|
-
const INTERACTIVE_COMMANDS = new Set(["setup", "integrate", "scan", "register", "status"]);
|
|
100
|
+
const INTERACTIVE_COMMANDS = new Set(["setup", "integrate", "scan", "register", "status", "workspace"]);
|
|
101
101
|
const firstArg = cleanArgs[0]?.toLowerCase();
|
|
102
102
|
// nex mcp → start embedded MCP server
|
|
103
103
|
if (firstArg === "mcp") {
|
|
@@ -109,6 +109,17 @@ When no command is given, launches the interactive TUI.`);
|
|
|
109
109
|
const result = await dispatchTokens(cleanArgs, ctx);
|
|
110
110
|
emitAndExit(result);
|
|
111
111
|
}
|
|
112
|
+
// Interactive commands → Commander (setup, integrate, scan, register, workspace)
|
|
113
|
+
if (firstArg && INTERACTIVE_COMMANDS.has(firstArg)) {
|
|
114
|
+
// Load Commander command modules to register their handlers
|
|
115
|
+
await import("./commands/setup.js");
|
|
116
|
+
await import("./commands/scan.js");
|
|
117
|
+
await import("./commands/register.js");
|
|
118
|
+
await import("./commands/integrate.js");
|
|
119
|
+
const { program } = await import("./cli.js");
|
|
120
|
+
program.parse(["node", "nex", ...args]);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
112
123
|
// Piped stdin → dispatch each line
|
|
113
124
|
if (!process.stdin.isTTY) {
|
|
114
125
|
const chunks = [];
|
|
@@ -122,17 +133,6 @@ When no command is given, launches the interactive TUI.`);
|
|
|
122
133
|
}
|
|
123
134
|
process.exit(0);
|
|
124
135
|
}
|
|
125
|
-
// Interactive commands or no subcommand → Commander (setup, integrate, scan, register)
|
|
126
|
-
if (firstArg && INTERACTIVE_COMMANDS.has(firstArg)) {
|
|
127
|
-
// Load Commander command modules to register their handlers
|
|
128
|
-
await import("./commands/setup.js");
|
|
129
|
-
await import("./commands/scan.js");
|
|
130
|
-
await import("./commands/register.js");
|
|
131
|
-
await import("./commands/integrate.js");
|
|
132
|
-
const { program } = await import("./cli.js");
|
|
133
|
-
program.parse(["node", "nex", ...args]);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
136
|
// No subcommand → TUI
|
|
137
137
|
const { startTui } = await import("./tui/index.js");
|
|
138
138
|
startTui();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export interface NexConfig {
|
|
|
18
18
|
export declare function loadConfig(): NexConfig;
|
|
19
19
|
export declare function saveConfig(config: NexConfig): void;
|
|
20
20
|
/**
|
|
21
|
-
* Resolve API key from: flag > env > config file.
|
|
21
|
+
* Resolve API key from: flag > env > active workspace > config file.
|
|
22
22
|
*/
|
|
23
23
|
export declare function resolveApiKey(flagValue?: string): string | undefined;
|
|
24
24
|
/**
|
|
@@ -30,6 +30,6 @@ export declare function resolveFormat(flagValue?: string): string;
|
|
|
30
30
|
*/
|
|
31
31
|
export declare function resolveTimeout(flagValue?: string): number;
|
|
32
32
|
/**
|
|
33
|
-
* Persist registration data to config file.
|
|
33
|
+
* Persist registration data to config file and workspace registry.
|
|
34
34
|
*/
|
|
35
35
|
export declare function persistRegistration(data: Record<string, unknown>): void;
|
package/dist/lib/config.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
6
6
|
import { join, dirname } from "node:path";
|
|
7
7
|
import { homedir } from "node:os";
|
|
8
|
+
import { getActiveCredentials, addWorkspace } from "./workspace-registry.js";
|
|
8
9
|
export const CONFIG_PATH = join(homedir(), ".nex", "config.json");
|
|
9
10
|
export const BASE_URL = process.env.NEX_DEV_URL ?? loadConfig().dev_url ?? "https://app.nex.ai";
|
|
10
11
|
export const API_BASE = `${BASE_URL}/api/developers`;
|
|
@@ -12,7 +13,15 @@ export const REGISTER_URL = `${BASE_URL}/api/v1/agents/register`;
|
|
|
12
13
|
export function loadConfig() {
|
|
13
14
|
try {
|
|
14
15
|
const raw = readFileSync(CONFIG_PATH, "utf-8");
|
|
15
|
-
|
|
16
|
+
const data = JSON.parse(raw);
|
|
17
|
+
// If migrated format, merge active workspace credentials into return
|
|
18
|
+
if (data.active_workspace && !data.api_key) {
|
|
19
|
+
const wsCreds = getActiveCredentials();
|
|
20
|
+
if (wsCreds) {
|
|
21
|
+
return { ...data, ...wsCreds };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return data;
|
|
16
25
|
}
|
|
17
26
|
catch {
|
|
18
27
|
return {};
|
|
@@ -23,10 +32,19 @@ export function saveConfig(config) {
|
|
|
23
32
|
writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + "\n", "utf-8");
|
|
24
33
|
}
|
|
25
34
|
/**
|
|
26
|
-
* Resolve API key from: flag > env > config file.
|
|
35
|
+
* Resolve API key from: flag > env > active workspace > config file.
|
|
27
36
|
*/
|
|
28
37
|
export function resolveApiKey(flagValue) {
|
|
29
|
-
|
|
38
|
+
if (flagValue)
|
|
39
|
+
return flagValue;
|
|
40
|
+
if (process.env.NEX_API_KEY)
|
|
41
|
+
return process.env.NEX_API_KEY;
|
|
42
|
+
// Try active workspace credentials
|
|
43
|
+
const wsCreds = getActiveCredentials();
|
|
44
|
+
if (wsCreds?.api_key)
|
|
45
|
+
return wsCreds.api_key;
|
|
46
|
+
// Legacy fallback: flat config.json (pre-migration)
|
|
47
|
+
return loadConfig().api_key || undefined;
|
|
30
48
|
}
|
|
31
49
|
/**
|
|
32
50
|
* Resolve output format from: flag > config file > default.
|
|
@@ -49,9 +67,10 @@ export function resolveTimeout(flagValue) {
|
|
|
49
67
|
return loadConfig().default_timeout ?? 120_000;
|
|
50
68
|
}
|
|
51
69
|
/**
|
|
52
|
-
* Persist registration data to config file.
|
|
70
|
+
* Persist registration data to config file and workspace registry.
|
|
53
71
|
*/
|
|
54
72
|
export function persistRegistration(data) {
|
|
73
|
+
// Legacy: still write to config.json for backwards compat during migration
|
|
55
74
|
const existing = loadConfig();
|
|
56
75
|
if (typeof data.api_key === "string")
|
|
57
76
|
existing.api_key = data.api_key;
|
|
@@ -63,5 +82,15 @@ export function persistRegistration(data) {
|
|
|
63
82
|
if (typeof data.workspace_slug === "string")
|
|
64
83
|
existing.workspace_slug = data.workspace_slug;
|
|
65
84
|
saveConfig(existing);
|
|
85
|
+
// New: add to workspace registry
|
|
86
|
+
const slug = data.workspace_slug || data.workspace_id;
|
|
87
|
+
if (slug && data.api_key) {
|
|
88
|
+
addWorkspace(slug, {
|
|
89
|
+
api_key: data.api_key,
|
|
90
|
+
email: data.email || "",
|
|
91
|
+
workspace_id: String(data.workspace_id || ""),
|
|
92
|
+
workspace_slug: slug,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
66
95
|
}
|
|
67
96
|
//# sourceMappingURL=config.js.map
|
package/dist/lib/config.js.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace registry — manages multiple Nex workspaces on a single machine.
|
|
3
|
+
*
|
|
4
|
+
* Storage:
|
|
5
|
+
* ~/.nex/config.json → registry (active_workspace + workspace list)
|
|
6
|
+
* ~/.nex/workspaces/<slug>/ → per-workspace credentials + state
|
|
7
|
+
*
|
|
8
|
+
* All functions accept an optional `baseDir` for testing (defaults to ~/.nex).
|
|
9
|
+
*/
|
|
10
|
+
export interface WorkspaceEntry {
|
|
11
|
+
slug: string;
|
|
12
|
+
nickname?: string;
|
|
13
|
+
added_at: number;
|
|
14
|
+
}
|
|
15
|
+
export interface WorkspaceCredentials {
|
|
16
|
+
api_key: string;
|
|
17
|
+
email: string;
|
|
18
|
+
workspace_id: string;
|
|
19
|
+
workspace_slug: string;
|
|
20
|
+
}
|
|
21
|
+
export interface WorkspaceRegistry {
|
|
22
|
+
active_workspace: string;
|
|
23
|
+
workspaces: Record<string, {
|
|
24
|
+
nickname?: string;
|
|
25
|
+
added_at: number;
|
|
26
|
+
}>;
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
}
|
|
29
|
+
export declare function loadRegistry(baseDir?: string): WorkspaceRegistry;
|
|
30
|
+
export declare function saveRegistry(registry: WorkspaceRegistry, baseDir?: string): void;
|
|
31
|
+
export declare function addWorkspace(slug: string, credentials: WorkspaceCredentials, nickname?: string, baseDir?: string): void;
|
|
32
|
+
export declare function removeWorkspace(slug: string, baseDir?: string): void;
|
|
33
|
+
export declare function switchWorkspace(slug: string, baseDir?: string): WorkspaceCredentials;
|
|
34
|
+
export declare function renameWorkspace(slug: string, nickname: string, baseDir?: string): void;
|
|
35
|
+
export declare function getActiveCredentials(baseDir?: string): WorkspaceCredentials | undefined;
|
|
36
|
+
export declare function listWorkspaces(baseDir?: string): (WorkspaceEntry & {
|
|
37
|
+
email: string;
|
|
38
|
+
})[];
|
|
39
|
+
export declare function workspaceDataDir(slug?: string, baseDir?: string): string;
|
|
40
|
+
/** Reset cached data dir (for testing or after workspace switch). */
|
|
41
|
+
export declare function resetDataDirCache(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve a workspace slug from a slug-or-nickname input.
|
|
44
|
+
* Resolution: exact slug → case-insensitive nickname → null.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveSlug(input: string, baseDir?: string): string | null;
|
|
47
|
+
export declare function migrateIfNeeded(baseDir?: string, legacyMcpPath?: string): void;
|