@nex-ai/nex 0.1.32 → 0.1.33

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
@@ -77,7 +77,7 @@ All MCP-based platforms use the same server entry:
77
77
  {
78
78
  "nex": {
79
79
  "command": "npx",
80
- "args": ["-y", "@nex-crm/mcp-server"],
80
+ "args": ["-y", "@nex-ai/mcp-server"],
81
81
  "env": { "NEX_API_KEY": "sk-..." }
82
82
  }
83
83
  }
@@ -1,19 +1,25 @@
1
1
  /**
2
2
  * Pi-style state machine agent loop.
3
3
  * Runs idle -> build_context -> stream_llm -> execute_tool -> done cycle.
4
- * Mock streamFn used until real LLM integration.
4
+ * Default streamFn uses Nex Ask API until real LLM provider is wired.
5
5
  */
6
6
  import type { AgentConfig, AgentState, StreamFn } from './types.js';
7
7
  import type { ToolRegistry } from './tools.js';
8
8
  import type { AgentSessionStore } from './session-store.js';
9
9
  import type { MessageQueues } from './queues.js';
10
+ import type { NexClient } from '../lib/client.js';
10
11
  import type { GossipLayer } from './gossip.js';
11
12
  import type { CredibilityTracker } from './adoption.js';
12
13
  type EventName = 'phase_change' | 'tool_call' | 'message' | 'error' | 'done';
13
14
  type EventHandler = (...args: unknown[]) => void;
14
15
  /**
15
- * Mock streamFn that simulates LLM responses.
16
- * Returns a text response, optionally followed by a tool call if tools are available.
16
+ * Create a streamFn backed by the Nex Ask API.
17
+ * Uses the context graph AI to generate responses.
18
+ * Falls back to a simple echo if no client is available.
19
+ */
20
+ export declare function createNexAskStreamFn(client?: NexClient): StreamFn;
21
+ /**
22
+ * @deprecated Use createNexAskStreamFn instead.
17
23
  */
18
24
  export declare function createMockStreamFn(): StreamFn;
19
25
  export declare class AgentLoop {
@@ -1,35 +1,51 @@
1
1
  /**
2
2
  * Pi-style state machine agent loop.
3
3
  * Runs idle -> build_context -> stream_llm -> execute_tool -> done cycle.
4
- * Mock streamFn used until real LLM integration.
4
+ * Default streamFn uses Nex Ask API until real LLM provider is wired.
5
5
  */
6
6
  import { scoreInsight } from './adoption.js';
7
7
  /**
8
- * Mock streamFn that simulates LLM responses.
9
- * Returns a text response, optionally followed by a tool call if tools are available.
8
+ * Create a streamFn backed by the Nex Ask API.
9
+ * Uses the context graph AI to generate responses.
10
+ * Falls back to a simple echo if no client is available.
10
11
  */
11
- export function createMockStreamFn() {
12
- return async function* mockStream(messages, tools) {
12
+ export function createNexAskStreamFn(client) {
13
+ return async function* nexAskStream(messages, _tools) {
13
14
  const lastMsg = messages[messages.length - 1];
14
15
  const content = lastMsg?.content ?? '';
15
- // If tools available, simulate a tool call for search-like queries
16
- if (tools.length > 0 && content.toLowerCase().includes('search')) {
17
- const searchTool = tools.find(t => t.name.includes('search'));
18
- if (searchTool) {
16
+ if (client?.isAuthenticated) {
17
+ try {
18
+ const result = await client.post('/ask', {
19
+ question: content,
20
+ context: messages.slice(0, -1).map(m => `${m.role}: ${m.content}`).join('\n').slice(-2000),
21
+ });
22
+ yield {
23
+ type: 'text',
24
+ content: result.answer ?? JSON.stringify(result),
25
+ };
26
+ return;
27
+ }
28
+ catch (err) {
19
29
  yield {
20
- type: 'tool_call',
21
- toolName: searchTool.name,
22
- toolParams: { query: content },
30
+ type: 'text',
31
+ content: `Error: ${err instanceof Error ? err.message : String(err)}`,
23
32
  };
24
33
  return;
25
34
  }
26
35
  }
36
+ // No client — echo response
27
37
  yield {
28
38
  type: 'text',
29
- content: `Processed: ${content}`,
39
+ content: `[No API key configured] ${content}`,
30
40
  };
31
41
  };
32
42
  }
43
+ /**
44
+ * @deprecated Use createNexAskStreamFn instead.
45
+ */
46
+ export function createMockStreamFn() {
47
+ return createNexAskStreamFn();
48
+ }
33
49
  export class AgentLoop {
34
50
  state;
35
51
  tools;
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Claude Bridge — standalone HTTP server that spawns `claude -p` and returns the response.
4
+ *
5
+ * Runs as a separate Node.js process so child_process operations work normally
6
+ * (Bun+Ink's event loop stalls on child processes).
7
+ *
8
+ * Usage: node src/agent/providers/claude-bridge.ts
9
+ * or: tsx src/agent/providers/claude-bridge.ts
10
+ *
11
+ * Prints the port number to stdout on startup so the parent process can discover it.
12
+ */
13
+ export {};
@@ -0,0 +1,161 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Claude Bridge — standalone HTTP server that spawns `claude -p` and returns the response.
4
+ *
5
+ * Runs as a separate Node.js process so child_process operations work normally
6
+ * (Bun+Ink's event loop stalls on child processes).
7
+ *
8
+ * Usage: node src/agent/providers/claude-bridge.ts
9
+ * or: tsx src/agent/providers/claude-bridge.ts
10
+ *
11
+ * Prints the port number to stdout on startup so the parent process can discover it.
12
+ */
13
+ import { createServer } from "node:http";
14
+ import { spawn } from "node:child_process";
15
+ // ── NDJSON parser (same logic as parseClaudeOutput) ──────────────
16
+ function parseClaudeOutput(stdout) {
17
+ const textChunks = [];
18
+ let sessionId;
19
+ for (const line of stdout.split("\n")) {
20
+ if (!line.trim())
21
+ continue;
22
+ let event;
23
+ try {
24
+ event = JSON.parse(line);
25
+ }
26
+ catch {
27
+ continue;
28
+ }
29
+ if (!sessionId && event.session_id)
30
+ sessionId = event.session_id;
31
+ if (event.type === "assistant" && event.message) {
32
+ const msg = event.message;
33
+ const content = msg.content;
34
+ if (content) {
35
+ for (const part of content) {
36
+ if (part.type === "text" && part.text)
37
+ textChunks.push(part.text);
38
+ }
39
+ }
40
+ }
41
+ if (event.type === "result" && textChunks.length === 0) {
42
+ const resultText = event.result;
43
+ if (resultText)
44
+ textChunks.push(resultText);
45
+ }
46
+ }
47
+ return { text: textChunks.join("").trim(), sid: sessionId };
48
+ }
49
+ // ── Build clean env (strip Claude nesting vars) ──────────────────
50
+ function buildCleanEnv() {
51
+ const env = { ...process.env };
52
+ delete env.CLAUDECODE;
53
+ delete env.CLAUDE_CODE_ENTRYPOINT;
54
+ delete env.CLAUDE_CODE_SESSION;
55
+ delete env.CLAUDE_CODE_PARENT_SESSION;
56
+ return env;
57
+ }
58
+ function handleInvoke(body) {
59
+ return new Promise((resolve) => {
60
+ const args = [
61
+ "-p",
62
+ "--output-format", "stream-json",
63
+ "--verbose",
64
+ "--max-turns", "5",
65
+ "--no-session-persistence",
66
+ "--allowedTools", "Read,Glob,Grep,WebSearch,WebFetch",
67
+ ];
68
+ const child = spawn("claude", args, {
69
+ stdio: ["pipe", "pipe", "ignore"],
70
+ shell: false,
71
+ env: buildCleanEnv(),
72
+ });
73
+ // Send prompt via stdin (Paperclip pattern)
74
+ child.stdin.write(body.prompt);
75
+ child.stdin.end();
76
+ const chunks = [];
77
+ child.stdout.on("data", (chunk) => {
78
+ chunks.push(chunk);
79
+ });
80
+ child.on("close", (code) => {
81
+ const stdout = Buffer.concat(chunks).toString("utf-8");
82
+ if (code !== 0 && !stdout.trim()) {
83
+ resolve({ text: `Claude exited with code ${code}` });
84
+ return;
85
+ }
86
+ const parsed = parseClaudeOutput(stdout);
87
+ resolve({ text: parsed.text || "(no response)", sessionId: parsed.sessionId });
88
+ });
89
+ child.on("error", (err) => {
90
+ resolve({ text: `Failed to spawn claude: ${err.message}` });
91
+ });
92
+ // Safety timeout: 120s
93
+ setTimeout(() => {
94
+ try {
95
+ child.kill("SIGTERM");
96
+ }
97
+ catch { }
98
+ resolve({ text: "Claude timed out after 120s" });
99
+ }, 120_000);
100
+ });
101
+ }
102
+ // ── HTTP server ──────────────────────────────────────────────────
103
+ const server = createServer((req, res) => {
104
+ // Health check
105
+ if (req.method === "GET" && req.url === "/health") {
106
+ res.writeHead(200, { "Content-Type": "application/json" });
107
+ res.end(JSON.stringify({ ok: true }));
108
+ return;
109
+ }
110
+ // Invoke endpoint
111
+ if (req.method === "POST" && req.url === "/invoke") {
112
+ const bodyChunks = [];
113
+ req.on("data", (chunk) => bodyChunks.push(chunk));
114
+ req.on("end", () => {
115
+ let parsed;
116
+ try {
117
+ parsed = JSON.parse(Buffer.concat(bodyChunks).toString("utf-8"));
118
+ }
119
+ catch {
120
+ res.writeHead(400, { "Content-Type": "application/json" });
121
+ res.end(JSON.stringify({ error: "Invalid JSON" }));
122
+ return;
123
+ }
124
+ if (!parsed.prompt || typeof parsed.prompt !== "string") {
125
+ res.writeHead(400, { "Content-Type": "application/json" });
126
+ res.end(JSON.stringify({ error: "Missing prompt" }));
127
+ return;
128
+ }
129
+ handleInvoke(parsed).then((result) => {
130
+ res.writeHead(200, { "Content-Type": "application/json" });
131
+ res.end(JSON.stringify(result));
132
+ });
133
+ });
134
+ return;
135
+ }
136
+ res.writeHead(404, { "Content-Type": "application/json" });
137
+ res.end(JSON.stringify({ error: "Not found" }));
138
+ });
139
+ // Listen on port 0 (random available port)
140
+ server.listen(0, "127.0.0.1", () => {
141
+ const addr = server.address();
142
+ if (addr && typeof addr === "object") {
143
+ const port = addr.port;
144
+ // Print port to stdout
145
+ console.log(port);
146
+ // Also write to port file if specified (for sync startup discovery)
147
+ const portFile = process.env.NEX_BRIDGE_PORT_FILE;
148
+ if (portFile) {
149
+ const { writeFileSync } = require("node:fs");
150
+ writeFileSync(portFile, String(port));
151
+ }
152
+ }
153
+ });
154
+ // Graceful shutdown
155
+ process.on("SIGTERM", () => {
156
+ server.close(() => process.exit(0));
157
+ });
158
+ process.on("SIGINT", () => {
159
+ server.close(() => process.exit(0));
160
+ });
161
+ //# sourceMappingURL=claude-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-bridge.js","sourceRoot":"","sources":["../../../src/agent/providers/claude-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Claude Code provider — spawns a bridge server and communicates via HTTP fetch.
3
+ *
4
+ * The bridge runs as a separate Node.js process (not Bun) so child_process
5
+ * operations work normally. The TUI communicates with it via fetch() which
6
+ * works fine in Bun+Ink.
7
+ */
8
+ import type { StreamFn } from "../types.js";
9
+ /**
10
+ * Start the bridge server if not already running. Returns the port.
11
+ */
12
+ export declare function startBridge(): Promise<number>;
13
+ /**
14
+ * Start the bridge synchronously — call BEFORE Ink takes over.
15
+ * Spawns the bridge as a detached process and waits up to 5s for the port.
16
+ */
17
+ export declare function startBridgeSync(): number;
18
+ /**
19
+ * Stop the bridge server.
20
+ */
21
+ export declare function stopBridge(): void;
22
+ /**
23
+ * Get the current bridge port, or null if not running.
24
+ */
25
+ export declare function getBridgePort(): number | null;
26
+ export declare function createClaudeCodeStreamFn(_agentSlug?: string, _cwd?: string, _model?: string): StreamFn;
27
+ export declare function clearClaudeSession(_agentSlug: string): void;
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Claude Code provider — spawns a bridge server and communicates via HTTP fetch.
3
+ *
4
+ * The bridge runs as a separate Node.js process (not Bun) so child_process
5
+ * operations work normally. The TUI communicates with it via fetch() which
6
+ * works fine in Bun+Ink.
7
+ */
8
+ import { spawn, spawnSync } from "node:child_process";
9
+ import { join, dirname } from "node:path";
10
+ import { fileURLToPath } from "node:url";
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ // ── Bridge lifecycle ─────────────────────────────────────────────
14
+ let bridgeProcess = null;
15
+ let bridgePort = null;
16
+ let bridgeStarting = null;
17
+ /**
18
+ * Start the bridge server if not already running. Returns the port.
19
+ */
20
+ export function startBridge() {
21
+ if (bridgePort !== null)
22
+ return Promise.resolve(bridgePort);
23
+ if (bridgeStarting)
24
+ return bridgeStarting;
25
+ bridgeStarting = new Promise((resolve, reject) => {
26
+ const bridgePath = join(__dirname, "claude-bridge.ts");
27
+ // Use tsx to run TypeScript directly; fall back to node
28
+ const proc = spawn("bun", ["run", bridgePath], {
29
+ stdio: ["ignore", "pipe", "ignore"],
30
+ detached: true,
31
+ env: { ...process.env },
32
+ });
33
+ proc.unref();
34
+ bridgeProcess = proc;
35
+ let portData = "";
36
+ const timeout = setTimeout(() => {
37
+ reject(new Error("Bridge server did not start within 10s"));
38
+ try {
39
+ proc.kill("SIGTERM");
40
+ }
41
+ catch { }
42
+ }, 10_000);
43
+ proc.stdout.on("data", (chunk) => {
44
+ portData += chunk.toString();
45
+ const lines = portData.split("\n");
46
+ for (const line of lines) {
47
+ const port = parseInt(line.trim(), 10);
48
+ if (!isNaN(port) && port > 0) {
49
+ clearTimeout(timeout);
50
+ bridgePort = port;
51
+ bridgeStarting = null;
52
+ resolve(port);
53
+ return;
54
+ }
55
+ }
56
+ });
57
+ proc.on("error", (err) => {
58
+ clearTimeout(timeout);
59
+ bridgeStarting = null;
60
+ reject(new Error(`Failed to start bridge: ${err.message}`));
61
+ });
62
+ proc.on("exit", (code) => {
63
+ if (bridgePort === null) {
64
+ clearTimeout(timeout);
65
+ bridgeStarting = null;
66
+ reject(new Error(`Bridge exited with code ${code} before printing port`));
67
+ }
68
+ // If it exits after we got the port, clear state
69
+ bridgeProcess = null;
70
+ bridgePort = null;
71
+ });
72
+ });
73
+ return bridgeStarting;
74
+ }
75
+ /**
76
+ * Start the bridge synchronously — call BEFORE Ink takes over.
77
+ * Spawns the bridge as a detached process and waits up to 5s for the port.
78
+ */
79
+ export function startBridgeSync() {
80
+ if (bridgePort !== null)
81
+ return bridgePort;
82
+ const bridgePath = join(__dirname, "claude-bridge.ts");
83
+ // Bridge writes port to a temp file (avoids async stdout pipe issues)
84
+ const { existsSync: fse, readFileSync: fsr, unlinkSync: fsu } = require("node:fs");
85
+ const portFile = join(require("node:os").tmpdir(), "nex-bridge-port");
86
+ try {
87
+ fsu(portFile);
88
+ }
89
+ catch { }
90
+ const proc = spawn("bun", ["run", bridgePath], {
91
+ stdio: "ignore",
92
+ detached: true,
93
+ env: { ...process.env, NEX_BRIDGE_PORT_FILE: portFile },
94
+ });
95
+ proc.unref();
96
+ bridgeProcess = proc;
97
+ // Busy-wait for port file (pre-Ink, blocking is OK)
98
+ const deadline = Date.now() + 5_000;
99
+ while (Date.now() < deadline) {
100
+ if (fse(portFile)) {
101
+ const port = parseInt(fsr(portFile, "utf-8").trim(), 10);
102
+ if (!isNaN(port) && port > 0) {
103
+ bridgePort = port;
104
+ return port;
105
+ }
106
+ }
107
+ spawnSync("sleep", ["0.05"]);
108
+ }
109
+ throw new Error("Bridge did not write port file within 5s");
110
+ }
111
+ /**
112
+ * Stop the bridge server.
113
+ */
114
+ export function stopBridge() {
115
+ if (bridgeProcess) {
116
+ try {
117
+ bridgeProcess.kill("SIGTERM");
118
+ }
119
+ catch { }
120
+ bridgeProcess = null;
121
+ }
122
+ bridgePort = null;
123
+ bridgeStarting = null;
124
+ }
125
+ /**
126
+ * Get the current bridge port, or null if not running.
127
+ */
128
+ export function getBridgePort() {
129
+ return bridgePort;
130
+ }
131
+ // ── StreamFn provider ────────────────────────────────────────────
132
+ export function createClaudeCodeStreamFn(_agentSlug = "default", _cwd, _model) {
133
+ return async function* claudeCodeStream(messages, _tools) {
134
+ const lastMsg = messages[messages.length - 1];
135
+ const prompt = lastMsg?.content ?? "";
136
+ const context = messages.slice(0, -1)
137
+ .map(m => `${m.role}: ${m.content}`)
138
+ .join("\n")
139
+ .slice(-4000);
140
+ const fullPrompt = context
141
+ ? `Context:\n${context}\n\nUser: ${prompt}`
142
+ : prompt;
143
+ try {
144
+ const port = await startBridge();
145
+ const res = await fetch(`http://127.0.0.1:${port}/invoke`, {
146
+ method: "POST",
147
+ headers: { "Content-Type": "application/json" },
148
+ body: JSON.stringify({ prompt: fullPrompt }),
149
+ });
150
+ const data = (await res.json());
151
+ yield { type: "text", content: data.text || "[Claude Code returned empty response]" };
152
+ }
153
+ catch (err) {
154
+ yield {
155
+ type: "text",
156
+ content: `Claude Code error: ${err instanceof Error ? err.message : String(err)}`,
157
+ };
158
+ }
159
+ };
160
+ }
161
+ export function clearClaudeSession(_agentSlug) {
162
+ // Sessions are not persisted across bridge calls (--no-session-persistence)
163
+ }
164
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/agent/providers/claude-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Worker script — runs claude -p in its own event loop.
3
+ * Receives prompt + args via parentPort, posts result back.
4
+ * This avoids Bun/Ink's event loop stalling on child processes.
5
+ */
6
+ export {};
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Worker script — runs claude -p in its own event loop.
3
+ * Receives prompt + args via parentPort, posts result back.
4
+ * This avoids Bun/Ink's event loop stalling on child processes.
5
+ */
6
+ import { parentPort } from "node:worker_threads";
7
+ import { execFileSync } from "node:child_process";
8
+ if (!parentPort) {
9
+ console.error("claude-worker must be run as a Worker thread");
10
+ process.exit(1);
11
+ }
12
+ parentPort.on("message", (msg) => {
13
+ try {
14
+ const stdout = execFileSync("claude", msg.args, {
15
+ timeout: 120_000,
16
+ maxBuffer: 10 * 1024 * 1024,
17
+ stdio: ["ignore", "pipe", "ignore"],
18
+ });
19
+ parentPort.postMessage({ ok: true, stdout: stdout.toString() });
20
+ }
21
+ catch (err) {
22
+ parentPort.postMessage({
23
+ ok: false,
24
+ error: err instanceof Error ? err.message : String(err),
25
+ });
26
+ }
27
+ });
28
+ //# sourceMappingURL=claude-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-worker.js","sourceRoot":"","sources":["../../../src/agent/providers/claude-worker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAuC,EAAE,EAAE;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE;YAC9C,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;YAC3B,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;QACH,UAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAW,CAAC,WAAW,CAAC;YACtB,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Gemini LLM stream function for the Pi-style agent loop.
3
+ * Uses @google/generative-ai SDK to stream responses from Gemini.
4
+ * Nex tools are passed as Gemini function declarations.
5
+ */
6
+ import type { StreamFn } from "../types.js";
7
+ /**
8
+ * Create a StreamFn backed by Google Gemini.
9
+ * @param apiKey Gemini API key (from ai.google.dev)
10
+ * @param model Model name (default: gemini-2.5-flash)
11
+ */
12
+ export declare function createGeminiStreamFn(apiKey: string, model?: string): StreamFn;