@nex-ai/nex 0.1.14 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Zero-dependency TUI primitives for the Nex CLI.
3
+ *
4
+ * Respects NO_COLOR, TERM=dumb, and non-TTY pipes.
5
+ * Ephemeral output (spinners) goes to stderr; structured output to stdout.
6
+ */
7
+ // --- Environment ---
8
+ export const isTTY = !!process.stdout.isTTY &&
9
+ !process.env.NO_COLOR &&
10
+ process.env.TERM !== "dumb";
11
+ const ANSI_RE = /\x1b\[[0-9;]*m/g;
12
+ export function stripAnsi(s) {
13
+ return s.replace(ANSI_RE, "");
14
+ }
15
+ export function visibleLength(s) {
16
+ return stripAnsi(s).length;
17
+ }
18
+ // --- Style primitives ---
19
+ function wrap(open, close) {
20
+ if (!isTTY)
21
+ return (s) => s;
22
+ return (s) => `${open}${s}${close}`;
23
+ }
24
+ export const style = {
25
+ bold: wrap("\x1b[1m", "\x1b[22m"),
26
+ dim: wrap("\x1b[2m", "\x1b[22m"),
27
+ green: wrap("\x1b[32m", "\x1b[39m"),
28
+ red: wrap("\x1b[31m", "\x1b[39m"),
29
+ yellow: wrap("\x1b[33m", "\x1b[39m"),
30
+ cyan: wrap("\x1b[36m", "\x1b[39m"),
31
+ };
32
+ // --- Symbols ---
33
+ const unicode = isTTY && process.platform !== "win32";
34
+ export const sym = {
35
+ success: isTTY ? style.green(unicode ? "\u2714" : "\u221A") : "ok",
36
+ error: isTTY ? style.red(unicode ? "\u2716" : "\u00D7") : "error",
37
+ warning: isTTY ? style.yellow(unicode ? "\u26A0" : "!") : "!",
38
+ info: isTTY ? style.cyan(unicode ? "\u2139" : "i") : "i",
39
+ bullet: isTTY ? style.green("\u25CF") : "*",
40
+ bulletDim: isTTY ? style.dim("\u25CB") : "o",
41
+ pointer: isTTY ? style.cyan("\u203A") : ">",
42
+ line: "\u2500",
43
+ corner: "\u2514",
44
+ pipe: "\u2502",
45
+ tee: "\u251C",
46
+ };
47
+ // --- Helpers ---
48
+ function padRight(s, len) {
49
+ const vl = visibleLength(s);
50
+ return vl >= len ? s : s + " ".repeat(len - vl);
51
+ }
52
+ // --- Components ---
53
+ export function heading(title) {
54
+ const plain = stripAnsi(title);
55
+ return ` ${style.bold(title)}\n ${sym.line.repeat(plain.length)}`;
56
+ }
57
+ export function keyValue(entries, opts) {
58
+ const width = opts?.labelWidth ?? Math.max(...entries.map(([k]) => k.length)) + 2;
59
+ return entries
60
+ .map(([k, v]) => ` ${padRight(style.dim(k), width + (style.dim("").length))}${v}`)
61
+ .join("\n");
62
+ }
63
+ export function table(opts) {
64
+ const { headers, rows, alignRight = [] } = opts;
65
+ const cols = headers.length;
66
+ // Compute column widths
67
+ const widths = headers.map((h) => visibleLength(h));
68
+ for (const row of rows) {
69
+ for (let i = 0; i < cols; i++) {
70
+ widths[i] = Math.max(widths[i], visibleLength(row[i] ?? ""));
71
+ }
72
+ }
73
+ const pad = (s, i) => {
74
+ const diff = widths[i] - visibleLength(s);
75
+ if (diff <= 0)
76
+ return s;
77
+ return alignRight.includes(i) ? " ".repeat(diff) + s : s + " ".repeat(diff);
78
+ };
79
+ const headerLine = " " + headers.map((h, i) => style.bold(pad(h, i))).join(" ");
80
+ const sepLine = " " + widths.map((w) => sym.line.repeat(w)).join(" ");
81
+ const dataLines = rows.map((row) => " " + row.map((cell, i) => pad(cell ?? "", i)).join(" "));
82
+ return [headerLine, sepLine, ...dataLines].join("\n");
83
+ }
84
+ export function badge(label, variant) {
85
+ switch (variant) {
86
+ case "success":
87
+ return `${style.green("\u25CF")} ${style.green(label)}`;
88
+ case "error":
89
+ return `${style.red("\u25CF")} ${style.red(label)}`;
90
+ case "warning":
91
+ return `${style.yellow("\u25CF")} ${style.yellow(label)}`;
92
+ case "dim":
93
+ return `${style.dim("\u25CB")} ${style.dim(label)}`;
94
+ }
95
+ }
96
+ export function tree(items) {
97
+ const lines = [];
98
+ for (let i = 0; i < items.length; i++) {
99
+ const item = items[i];
100
+ const isLast = i === items.length - 1;
101
+ const prefix = isLast ? sym.corner : sym.tee;
102
+ lines.push(` ${prefix} ${item.label}`);
103
+ if (item.children) {
104
+ const indent = isLast ? " " : ` ${sym.pipe} `;
105
+ for (let j = 0; j < item.children.length; j++) {
106
+ const childPrefix = j === item.children.length - 1 ? sym.corner : sym.tee;
107
+ lines.push(` ${indent}${childPrefix} ${item.children[j]}`);
108
+ }
109
+ }
110
+ }
111
+ return lines.join("\n");
112
+ }
113
+ export function box(title, content) {
114
+ const contentLines = content.split("\n");
115
+ const maxContent = Math.max(...contentLines.map((l) => visibleLength(l)), visibleLength(title) + 2);
116
+ const innerWidth = maxContent + 4; // 2 padding each side
117
+ const topRule = "\u256D\u2500 " +
118
+ style.bold(title) +
119
+ " " +
120
+ "\u2500".repeat(Math.max(0, innerWidth - visibleLength(title) - 3)) +
121
+ "\u256E";
122
+ const emptyLine = "\u2502" + " ".repeat(innerWidth) + "\u2502";
123
+ const bodyLines = contentLines.map((l) => {
124
+ const padding = innerWidth - visibleLength(l) - 2;
125
+ return "\u2502 " + l + " ".repeat(Math.max(0, padding)) + "\u2502";
126
+ });
127
+ const bottomRule = "\u2570" + "\u2500".repeat(innerWidth) + "\u256F";
128
+ return [topRule, emptyLine, ...bodyLines, emptyLine, bottomRule].join("\n");
129
+ }
130
+ // --- Spinner ---
131
+ const SPINNER_FRAMES = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
132
+ export function spinner(message) {
133
+ if (!isTTY) {
134
+ // Non-TTY: just print the message
135
+ process.stderr.write(` ${message}\n`);
136
+ return {
137
+ update: (msg) => process.stderr.write(` ${msg}\n`),
138
+ succeed: (msg) => process.stderr.write(` ${msg}\n`),
139
+ fail: (msg) => process.stderr.write(` ${msg}\n`),
140
+ stop: () => { },
141
+ };
142
+ }
143
+ let frame = 0;
144
+ let currentMsg = message;
145
+ let stopped = false;
146
+ const clear = () => {
147
+ process.stderr.write("\r\x1b[K");
148
+ };
149
+ const render = () => {
150
+ clear();
151
+ process.stderr.write(` ${style.cyan(SPINNER_FRAMES[frame % SPINNER_FRAMES.length])} ${currentMsg}`);
152
+ };
153
+ const interval = setInterval(() => {
154
+ if (stopped)
155
+ return;
156
+ frame++;
157
+ render();
158
+ }, 80);
159
+ render();
160
+ return {
161
+ update(msg) {
162
+ currentMsg = msg;
163
+ render();
164
+ },
165
+ succeed(msg) {
166
+ stopped = true;
167
+ clearInterval(interval);
168
+ clear();
169
+ process.stderr.write(` ${sym.success} ${msg}\n`);
170
+ },
171
+ fail(msg) {
172
+ stopped = true;
173
+ clearInterval(interval);
174
+ clear();
175
+ process.stderr.write(` ${sym.error} ${msg}\n`);
176
+ },
177
+ stop() {
178
+ stopped = true;
179
+ clearInterval(interval);
180
+ clear();
181
+ },
182
+ };
183
+ }
184
+ // --- Interactive Select ---
185
+ export function interactiveSelect(opts) {
186
+ const { title, items, render: renderItem } = opts;
187
+ if (!isTTY || items.length === 0) {
188
+ // Non-TTY fallback: print list, return null
189
+ process.stderr.write(` ${title}\n\n`);
190
+ for (let i = 0; i < items.length; i++) {
191
+ process.stderr.write(` ${i + 1}) ${renderItem(items[i], false)}\n`);
192
+ }
193
+ return Promise.resolve(null);
194
+ }
195
+ return new Promise((resolve) => {
196
+ let selected = 0;
197
+ const totalLines = items.length + 2; // title + blank + items
198
+ const draw = (initial = false) => {
199
+ if (!initial) {
200
+ // Move cursor up and clear
201
+ process.stderr.write(`\x1b[${totalLines}A\x1b[J`);
202
+ }
203
+ process.stderr.write(` ${title}\n\n`);
204
+ for (let i = 0; i < items.length; i++) {
205
+ const isSelected = i === selected;
206
+ const pointer = isSelected ? `${sym.pointer} ` : " ";
207
+ process.stderr.write(` ${pointer}${renderItem(items[i], isSelected)}\n`);
208
+ }
209
+ };
210
+ process.stdin.setRawMode(true);
211
+ process.stdin.resume();
212
+ process.stdin.setEncoding("utf-8");
213
+ draw(true);
214
+ const onData = (key) => {
215
+ if (key === "\x03") {
216
+ // Ctrl+C
217
+ cleanup();
218
+ resolve(null);
219
+ return;
220
+ }
221
+ if (key === "\r") {
222
+ // Enter
223
+ cleanup();
224
+ resolve(items[selected]);
225
+ return;
226
+ }
227
+ if (key === "\x1b[A") {
228
+ // Up
229
+ selected = Math.max(0, selected - 1);
230
+ }
231
+ else if (key === "\x1b[B") {
232
+ // Down
233
+ selected = Math.min(items.length - 1, selected + 1);
234
+ }
235
+ draw();
236
+ };
237
+ const cleanup = () => {
238
+ process.stdin.setRawMode(false);
239
+ process.stdin.removeListener("data", onData);
240
+ process.stdin.pause();
241
+ };
242
+ process.stdin.on("data", onData);
243
+ });
244
+ }
245
+ //# sourceMappingURL=tui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/lib/tui.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.14",
3
+ "version": "0.1.16",
4
4
  "description": "Nex CLI provides organizational context & memory to AI agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Recall relevant memories from Nex knowledge base
2
+ description: Query the Nex context graph with AI (recommended for most lookups)
3
3
  ---
4
4
  Search the nex knowledge base for: $ARGUMENTS
5
5
  Use the mcp__nex__context_ask tool to query and return formatted results with sources.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Search CRM records by name across all types
2
+ description: Fuzzy keyword search to find specific named records (use /recall for AI-powered queries)
3
3
  ---
4
4
  Search for: $ARGUMENTS
5
5