@memnexus-ai/mx-agent-cli 0.1.66 → 0.1.67

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.
@@ -7,6 +7,8 @@
7
7
  * - Streaming terminal output via stream_event/content_block_delta
8
8
  * - SDK hook callbacks for Stop (session sync) and PreCompact (checkpoint)
9
9
  * - Worktree isolation guard reimplemented in canUseTool (defense-in-depth)
10
+ * - Esc to pause mid-session and inject a prompt (resumes via session ID)
11
+ * - /model slash command at the Esc prompt — interactive model picker
10
12
  *
11
13
  * Config loading:
12
14
  * settingSources: ['project', 'local'] loads:
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/lib/agent-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAwIH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6JjF"}
1
+ {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/lib/agent-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAgLH,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4JjF"}
@@ -7,6 +7,8 @@
7
7
  * - Streaming terminal output via stream_event/content_block_delta
8
8
  * - SDK hook callbacks for Stop (session sync) and PreCompact (checkpoint)
9
9
  * - Worktree isolation guard reimplemented in canUseTool (defense-in-depth)
10
+ * - Esc to pause mid-session and inject a prompt (resumes via session ID)
11
+ * - /model slash command at the Esc prompt — interactive model picker
10
12
  *
11
13
  * Config loading:
12
14
  * settingSources: ['project', 'local'] loads:
@@ -24,7 +26,7 @@ import { query } from '@anthropic-ai/claude-agent-sdk';
24
26
  import { createInterface } from 'readline';
25
27
  import { spawnSync } from 'child_process';
26
28
  import chalk from 'chalk';
27
- import { handleStreamEvent, renderQuestion, renderResult } from './terminal-ui.js';
29
+ import { handleStreamEvent, renderQuestion, renderResult, renderModelPicker, ensureNewLine, } from './terminal-ui.js';
28
30
  // ── Terminal appearance (mirrors claude.ts) ────────────────────────────
29
31
  const AGENT_COLORS = [
30
32
  '#4CAF50', '#2196F3', '#FF9800', '#E91E63', '#9C27B0',
@@ -48,97 +50,123 @@ function resetTerminalAppearance() {
48
50
  process.stdout.write(`\x1b]633;P;tabColor=\x07`);
49
51
  }
50
52
  // ── Session sync (mirrors Stop shell hook) ────────────────────────────
51
- let syncFired = false;
52
53
  function runSessionSync() {
53
- if (syncFired)
54
- return;
55
- syncFired = true;
56
- // Same as Stop shell hook: mx-agent sync --quiet
57
- // Reads API URL + token from ~/.mx-agent/config.json
58
- spawnSync('mx-agent', ['sync', '--quiet'], {
59
- stdio: 'pipe',
60
- encoding: 'utf-8',
61
- });
54
+ spawnSync('mx-agent', ['sync', '--quiet'], { stdio: 'pipe', encoding: 'utf-8' });
62
55
  }
63
56
  // ── Worktree guard (TypeScript port of worktree-guard.sh) ─────────────
64
- /**
65
- * Checks if a Bash command violates worktree isolation rules.
66
- * Returns a denial message if blocked, or null if allowed.
67
- *
68
- * Rules mirrored from mx-agent-system/agent-config/hooks/worktree-guard.sh:
69
- * 1. Block cd outside worktree (except /tmp, ~/*)
70
- * 2. Block git checkout/switch to main
71
- * 3. Block git checkout -b / git switch -c (new branches)
72
- * 4. Block git merge
73
- * 5. Block git push to main
74
- */
75
57
  function checkWorktreeGuard(command, worktreePath, worktreeName) {
76
58
  if (!worktreePath || !command)
77
59
  return null;
78
60
  const cmd = command.trim();
79
- // Rule 1: cd outside worktree
80
61
  if (/\bcd\s+/.test(cmd)) {
81
- const cdMatches = cmd.matchAll(/\bcd\s+([^\s;&|]+)/g);
82
- for (const match of cdMatches) {
62
+ for (const match of cmd.matchAll(/\bcd\s+([^\s;&|]+)/g)) {
83
63
  const target = match[1].replace(/^["']|["']$/g, '');
84
64
  if (!target)
85
65
  continue;
86
- // Allow relative paths (stay within cwd → worktree)
87
66
  if (!target.startsWith('/') && !target.startsWith('~'))
88
67
  continue;
89
- // Allow /tmp
90
68
  if (target.startsWith('/tmp') || target.startsWith('/var/tmp'))
91
69
  continue;
92
- // Allow within worktree
93
70
  if (target.startsWith(worktreePath))
94
71
  continue;
95
- // Allow home directory
96
72
  const home = process.env.HOME ?? '';
97
73
  if (home && target.startsWith(home))
98
74
  continue;
99
- // Allow /workspace (needed for some cross-repo lookups in practice)
100
- // Keep this narrow — only /workspace itself, not arbitrary paths
101
75
  if (target === '/workspace')
102
76
  continue;
103
77
  return `BLOCKED: Cannot navigate outside worktree\n Target: ${target}\n Allowed: ${worktreePath} (and /tmp)\n Worktree: ${worktreeName}`;
104
78
  }
105
79
  }
106
- // Rule 2: git checkout/switch to main
107
- if (/git\s+(checkout|switch)\s+main(\s|$)/.test(cmd)) {
80
+ if (/git\s+(checkout|switch)\s+main(\s|$)/.test(cmd))
108
81
  return `BLOCKED: Cannot switch to main branch\n Command: ${cmd.slice(0, 100)}\n Worktree: ${worktreeName}`;
109
- }
110
- // Rule 3: new branch creation
111
- if (/git\s+(checkout\s+-b|switch\s+(-c|--create))/.test(cmd)) {
82
+ if (/git\s+(checkout\s+-b|switch\s+(-c|--create))/.test(cmd))
112
83
  return `BLOCKED: Cannot create new branches\n Command: ${cmd.slice(0, 100)}\n Worktree: ${worktreeName}`;
113
- }
114
- // Rule 4: merge
115
- if (/git\s+merge\s/.test(cmd)) {
84
+ if (/git\s+merge\s/.test(cmd))
116
85
  return `BLOCKED: Cannot merge branches directly\n Command: ${cmd.slice(0, 100)}\n Worktree: ${worktreeName}`;
117
- }
118
- // Rule 5: push to main
119
- if (/git\s+push\s+.*origin\s+main/.test(cmd)) {
86
+ if (/git\s+push\s+.*origin\s+main/.test(cmd))
120
87
  return `BLOCKED: Cannot push to main\n Command: ${cmd.slice(0, 100)}`;
121
- }
122
88
  return null;
123
89
  }
124
- // ── Terminal input reader ──────────────────────────────────────────────
125
- async function readTerminalAnswer() {
90
+ // ── Terminal input helpers ─────────────────────────────────────────────
91
+ /** Read a line in raw mode, echoing characters + supporting backspace. */
92
+ async function readPromptLine(prompt) {
93
+ process.stdout.write(prompt);
94
+ let buffer = '';
95
+ return new Promise((resolve) => {
96
+ process.stdin.setRawMode(true);
97
+ process.stdin.resume();
98
+ const handler = (key) => {
99
+ const ch = key.toString();
100
+ if (ch === '\x03') {
101
+ process.stdin.removeListener('data', handler);
102
+ process.stdin.setRawMode(false);
103
+ process.stdout.write('\n');
104
+ runSessionSync();
105
+ resetTerminalAppearance();
106
+ process.exit(0);
107
+ }
108
+ if (ch === '\r' || ch === '\n') {
109
+ process.stdout.write('\n');
110
+ process.stdin.removeListener('data', handler);
111
+ process.stdin.setRawMode(false);
112
+ resolve(buffer);
113
+ return;
114
+ }
115
+ if (key[0] === 0x7f || key[0] === 0x08) {
116
+ if (buffer.length > 0) {
117
+ buffer = buffer.slice(0, -1);
118
+ process.stdout.write('\b \b');
119
+ }
120
+ return;
121
+ }
122
+ if (key[0] < 0x20)
123
+ return; // ignore other control chars
124
+ buffer += ch;
125
+ process.stdout.write(ch);
126
+ };
127
+ process.stdin.on('data', handler);
128
+ });
129
+ }
130
+ /** Read an answer from stdin using readline (cooked mode — for AskUserQuestion). */
131
+ async function readLine() {
126
132
  return new Promise((resolve) => {
127
133
  const rl = createInterface({ input: process.stdin, output: process.stdout, terminal: false });
128
- rl.once('line', (line) => {
129
- rl.close();
130
- resolve(line.trim());
131
- });
132
- // If stdin closes without a line, resolve with empty string
134
+ rl.once('line', (line) => { rl.close(); resolve(line.trim()); });
133
135
  rl.once('close', () => resolve(''));
134
136
  });
135
137
  }
138
+ // ── Esc prompt: read message or handle /model ──────────────────────────
139
+ /**
140
+ * Show the ❯ prompt after an Esc interrupt. Loops until the user either
141
+ * provides a non-empty message or exits with empty input. Handles /model
142
+ * by showing the interactive picker and then re-showing the prompt.
143
+ *
144
+ * Returns { message, model } to resume with, or null to exit.
145
+ */
146
+ async function getResumeInput(models, currentModel) {
147
+ let pendingModel;
148
+ while (true) {
149
+ console.log();
150
+ console.log(chalk.dim(' ─────────────────────────────────────────────'));
151
+ const input = await readPromptLine(chalk.bold(' ❯ '));
152
+ if (input.trim() === '/model') {
153
+ const picked = await renderModelPicker(models, pendingModel ?? currentModel);
154
+ if (picked !== null)
155
+ pendingModel = picked;
156
+ continue; // show prompt again
157
+ }
158
+ const message = input.trim();
159
+ if (!message && pendingModel === undefined) {
160
+ // Nothing entered, no model change → exit
161
+ return null;
162
+ }
163
+ // Use "Continue." as the message if only a model change was made
164
+ return { message: message || 'Continue.', model: pendingModel };
165
+ }
166
+ }
136
167
  export async function launchAgentSession(opts) {
137
168
  const { worktreePath, worktreeName, branch, slot, initialPrompt, teamName } = opts;
138
169
  // ── Build env: inherit all vars, strip CLAUDECODE ──────────────────
139
- // CLAUDECODE is set by the outer Claude Code process and prevents the SDK
140
- // from spawning a nested session. In production mx-agent is the outer process
141
- // so CLAUDECODE is never set — but this guard is needed for dev/test.
142
170
  const sessionEnv = {};
143
171
  for (const [k, v] of Object.entries(process.env)) {
144
172
  if (k !== 'CLAUDECODE' && v !== undefined)
@@ -151,117 +179,130 @@ export async function launchAgentSession(opts) {
151
179
  // ── UI setup ───────────────────────────────────────────────────────
152
180
  console.log();
153
181
  console.log(chalk.bold(' Starting Agent SDK session (experimental)...'));
154
- console.log(chalk.dim(' Press Ctrl+C to exit'));
182
+ console.log(chalk.dim(' Press Esc to pause · /model to switch models · Ctrl+C to exit'));
155
183
  console.log();
156
184
  setTerminalAppearance(teamName);
157
- // ── SIGINT handler: sync before exit ─────────────────────────────
158
- process.once('SIGINT', () => {
159
- process.stdout.write('\n');
160
- console.log(chalk.dim(' Interrupted syncing session...'));
161
- runSessionSync();
162
- resetTerminalAppearance();
163
- process.exit(0);
164
- });
165
- // ── Run session ───────────────────────────────────────────────────
185
+ // ── canUseTool (shared across all sessions in the resume loop) ─────
186
+ const canUseTool = async (toolName, input) => {
187
+ if (toolName === 'AskUserQuestion') {
188
+ const questions = input.questions ?? [];
189
+ renderQuestion(questions);
190
+ const answer = await readLine();
191
+ process.stdout.write('\n');
192
+ const answers = {};
193
+ for (const q of questions)
194
+ answers[q.question] = answer;
195
+ return { behavior: 'allow', updatedInput: { ...input, answers } };
196
+ }
197
+ if (toolName === 'Bash') {
198
+ const block = checkWorktreeGuard(String(input.command ?? ''), worktreePath, worktreeName);
199
+ if (block)
200
+ return { behavior: 'deny', message: block };
201
+ }
202
+ return { behavior: 'allow', updatedInput: input };
203
+ };
204
+ // ── Session loop: initial run + resumes after Esc ──────────────────
205
+ let currentPrompt = initialPrompt;
206
+ let resumeSessionId;
207
+ let selectedModel;
166
208
  try {
167
- const session = query({
168
- prompt: initialPrompt,
169
- options: {
170
- cwd: worktreePath,
171
- // Load CLAUDE.md, CLAUDE.local.md, .claude/settings.json, and shell hooks
172
- settingSources: ['project', 'local'],
173
- // Claude Code system prompt + worktree context already in CLAUDE.local.md
174
- systemPrompt: { type: 'preset', preset: 'claude_code' },
175
- // Streaming: deliver text incrementally as stream_event messages
176
- includePartialMessages: true,
177
- env: sessionEnv,
178
- // MCP server: MemNexus MX (same as non-exp sessions)
179
- mcpServers: {
180
- MX: { command: 'mx', args: ['mcp-server'] },
209
+ while (true) {
210
+ const session = query({
211
+ prompt: currentPrompt,
212
+ options: {
213
+ cwd: worktreePath,
214
+ settingSources: ['project', 'local'],
215
+ systemPrompt: { type: 'preset', preset: 'claude_code' },
216
+ includePartialMessages: true,
217
+ env: sessionEnv,
218
+ mcpServers: { MX: { command: 'mx', args: ['mcp-server'] } },
219
+ ...(selectedModel ? { model: selectedModel } : {}),
220
+ ...(resumeSessionId ? { resume: resumeSessionId } : {}),
221
+ canUseTool,
222
+ hooks: {
223
+ Stop: [{ hooks: [async (_) => { runSessionSync(); return { continue: true }; }] }],
224
+ PreCompact: [{ hooks: [async (_) => { return { continue: true }; }] }],
225
+ },
226
+ stderr: (data) => {
227
+ if (data.trim())
228
+ console.error(chalk.dim(` [sdk] ${data.trimEnd()}`));
229
+ },
181
230
  },
182
- // ── canUseTool ──────────────────────────────────────────────
183
- // Handles:
184
- // 1. AskUserQuestion display + terminal input (Phase 1)
185
- // 2. Bash worktree guard — defense-in-depth over settings.json rules
186
- canUseTool: async (toolName, input) => {
187
- // AskUserQuestion: display question, read terminal answer
188
- if (toolName === 'AskUserQuestion') {
189
- const questions = input.questions ?? [];
190
- renderQuestion(questions);
191
- // Read answer from terminal
192
- const answer = await readTerminalAnswer();
193
- process.stdout.write('\n');
194
- // Build answers map keyed by question string
195
- const answers = {};
196
- for (const q of questions) {
197
- answers[q.question] = answer;
198
- }
199
- return { behavior: 'allow', updatedInput: { ...input, answers } };
200
- }
201
- // Bash: apply worktree guard rules
202
- if (toolName === 'Bash') {
203
- const command = String(input.command ?? '');
204
- const block = checkWorktreeGuard(command, worktreePath, worktreeName);
205
- if (block) {
206
- return { behavior: 'deny', message: block };
231
+ });
232
+ // Per-session state
233
+ let escaped = false;
234
+ let capturedSessionId = '';
235
+ let capturedModel;
236
+ let modelsPromise = Promise.resolve([]);
237
+ // ── Keypress handler (raw mode) ───────────────────────────────
238
+ process.stdin.setRawMode(true);
239
+ process.stdin.resume();
240
+ const handleKey = (key) => {
241
+ const ch = key.toString();
242
+ if (ch === '\x03') {
243
+ ensureNewLine();
244
+ session.close();
245
+ escaped = false; // Ctrl+C = exit, not resume
246
+ return;
247
+ }
248
+ if (key[0] === 0x1b && key.length === 1) {
249
+ if (escaped)
250
+ return; // already handling
251
+ escaped = true;
252
+ ensureNewLine();
253
+ // Fetch models while session is still alive, then close
254
+ modelsPromise = session.supportedModels()
255
+ .catch(() => [])
256
+ .finally(() => { session.close(); });
257
+ }
258
+ };
259
+ process.stdin.on('data', handleKey);
260
+ // ── Event loop ────────────────────────────────────────────────
261
+ try {
262
+ for await (const msg of session) {
263
+ if (escaped)
264
+ continue; // mute output while fetching models
265
+ if (handleStreamEvent(msg))
266
+ continue;
267
+ switch (msg.type) {
268
+ case 'result':
269
+ renderResult(msg);
270
+ break;
271
+ case 'system': {
272
+ const sys = msg;
273
+ if (sys.session_id)
274
+ capturedSessionId = sys.session_id;
275
+ if (sys.subtype === 'init' && sys.model)
276
+ capturedModel = sys.model;
277
+ break;
207
278
  }
279
+ default:
280
+ break;
208
281
  }
209
- return { behavior: 'allow', updatedInput: input };
210
- },
211
- // ── SDK hook callbacks ─────────────────────────────────────
212
- hooks: {
213
- // Stop: run session sync (supplements the Stop shell hook in settings.json)
214
- Stop: [{
215
- hooks: [async (_input) => {
216
- runSessionSync();
217
- return { continue: true };
218
- }],
219
- }],
220
- // PreCompact: shell hook auto-checkpoint.sh fires from settings.json.
221
- // SDK callback here is a lightweight signal that compaction occurred.
222
- PreCompact: [{
223
- hooks: [async (_input) => {
224
- // auto-checkpoint.sh (from settings.json) saves the checkpoint memory.
225
- // Nothing extra needed here in Phase 1.
226
- return { continue: true };
227
- }],
228
- }],
229
- },
230
- // Capture stderr for surfacing SDK errors without flooding terminal
231
- stderr: (data) => {
232
- if (data.trim())
233
- console.error(chalk.dim(` [sdk] ${data.trimEnd()}`));
234
- },
235
- },
236
- });
237
- // ── Event loop ────────────────────────────────────────────────
238
- for await (const msg of session) {
239
- // stream_event: real-time text rendering
240
- if (handleStreamEvent(msg))
241
- continue;
242
- switch (msg.type) {
243
- case 'result':
244
- renderResult(msg);
245
- break;
246
- case 'system': {
247
- // SessionStart hook output, init message — suppress most of it
248
- const sys = msg;
249
- if (sys.subtype === 'init') {
250
- // Could log available tools here for debug purposes
251
- }
252
- break;
253
282
  }
254
- default:
255
- // Other message types (user tool results, partial messages, etc.)
256
- // are handled implicitly — text output comes through stream_event
257
- break;
258
283
  }
284
+ catch (err) {
285
+ if (!escaped) {
286
+ console.error(chalk.red(`\n Session error: ${err instanceof Error ? err.message : String(err)}`));
287
+ }
288
+ }
289
+ finally {
290
+ process.stdin.removeListener('data', handleKey);
291
+ process.stdin.setRawMode(false);
292
+ }
293
+ if (!escaped)
294
+ break; // Normal completion or Ctrl+C
295
+ // ── Esc: wait for models, then show prompt ────────────────────
296
+ const models = await modelsPromise;
297
+ const resume = await getResumeInput(models, capturedModel ?? selectedModel);
298
+ if (resume === null)
299
+ break; // user exited with empty input
300
+ currentPrompt = resume.message;
301
+ resumeSessionId = capturedSessionId;
302
+ if (resume.model !== undefined)
303
+ selectedModel = resume.model;
259
304
  }
260
305
  }
261
- catch (err) {
262
- const msg = err instanceof Error ? err.message : String(err);
263
- console.error(chalk.red(`\n Session error: ${msg}`));
264
- }
265
306
  finally {
266
307
  runSessionSync();
267
308
  resetTerminalAppearance();
@@ -1 +1 @@
1
- {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/lib/agent-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../src/lib/agent-session.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * - Questions: highlighted block with options list
12
12
  * - Result: cost/token summary footer
13
13
  */
14
- import type { SDKMessage } from '@anthropic-ai/claude-agent-sdk';
14
+ import type { SDKMessage, ModelInfo } from '@anthropic-ai/claude-agent-sdk';
15
15
  /**
16
16
  * Handle a raw SDKMessage from the query() event loop.
17
17
  * Call this for every message yielded by the session.
@@ -45,4 +45,17 @@ export declare function renderQuestion(questions: Array<{
45
45
  * Render the final result summary (cost, tokens, duration).
46
46
  */
47
47
  export declare function renderResult(msg: SDKMessage): void;
48
+ /**
49
+ * Interactive model picker — renders an arrow-key navigable list below the
50
+ * current cursor position. Returns the selected model value, or null if
51
+ * the user cancelled with Esc.
52
+ *
53
+ * Rendered like Claude Code's native /model picker:
54
+ * ── Select model ──────────────────────────────────────
55
+ * Claude Opus 4.6 — Most capable model
56
+ * ❯ Claude Sonnet 4.6 — Fast and capable (current)
57
+ * Claude Haiku 4.5 — Fastest
58
+ */
59
+ export declare function renderModelPicker(models: ModelInfo[], currentModel?: string): Promise<string | null>;
60
+ export declare function ensureNewLine(): void;
48
61
  //# sourceMappingURL=terminal-ui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-ui.d.ts","sourceRoot":"","sources":["../../src/lib/terminal-ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAKjE;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAuC1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAa5H;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,GAAG,IAAI,CAmBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CA6BlD"}
1
+ {"version":3,"file":"terminal-ui.d.ts","sourceRoot":"","sources":["../../src/lib/terminal-ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAS5E;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAoD1D;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAc5H;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,GAAG,IAAI,CAmBR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CA6BlD;AAmBD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EAAE,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA0FxB;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
@@ -14,6 +14,9 @@
14
14
  import chalk from 'chalk';
15
15
  // Track whether we're currently mid-stream (need a newline before tool output)
16
16
  let midLine = false;
17
+ // Buffer tool input JSON as it streams, so we can print the key arg on block_stop
18
+ let currentToolName = null;
19
+ let inputBuffer = '';
17
20
  /**
18
21
  * Handle a raw SDKMessage from the query() event loop.
19
22
  * Call this for every message yielded by the session.
@@ -27,10 +30,16 @@ export function handleStreamEvent(msg) {
27
30
  return true;
28
31
  switch (ev.type) {
29
32
  case 'content_block_start':
30
- // Announce tool use blocks (not text blocks)
31
33
  if (ev.content_block?.type === 'tool_use' && ev.content_block?.name) {
32
34
  ensureNewLine();
35
+ currentToolName = ev.content_block.name;
36
+ inputBuffer = '';
33
37
  process.stdout.write(chalk.dim(` [${ev.content_block.name}] `));
38
+ midLine = true;
39
+ }
40
+ else {
41
+ currentToolName = null;
42
+ inputBuffer = '';
34
43
  }
35
44
  break;
36
45
  case 'content_block_delta':
@@ -39,15 +48,25 @@ export function handleStreamEvent(msg) {
39
48
  midLine = !ev.delta.text.endsWith('\n');
40
49
  }
41
50
  else if (ev.delta?.type === 'input_json_delta') {
42
- // Tool input streaming show dots as a progress indicator
43
- process.stdout.write(chalk.dim('.'));
44
- midLine = true;
51
+ // Accumulate JSONprint summary on content_block_stop
52
+ inputBuffer += ev.delta.partial_json ?? '';
45
53
  }
46
54
  break;
47
55
  case 'content_block_stop':
48
- if (midLine) {
49
- // Only add newline after tool input streaming (text ends with its own newline)
50
- // We detect this by checking if we were writing dots
56
+ if (currentToolName && inputBuffer) {
57
+ try {
58
+ const parsed = JSON.parse(inputBuffer);
59
+ const summary = extractToolSummary(currentToolName, parsed);
60
+ if (summary)
61
+ process.stdout.write(chalk.dim(summary));
62
+ }
63
+ catch {
64
+ // Incomplete JSON (empty input tools) — print nothing extra
65
+ }
66
+ process.stdout.write('\n');
67
+ midLine = false;
68
+ currentToolName = null;
69
+ inputBuffer = '';
51
70
  }
52
71
  break;
53
72
  case 'message_stop':
@@ -71,8 +90,9 @@ export function renderAssistantMessage(content) {
71
90
  }
72
91
  else if (block.type === 'tool_use') {
73
92
  ensureNewLine();
74
- const inputSummary = block.input ? JSON.stringify(block.input).slice(0, 80) : '';
75
- process.stdout.write(chalk.dim(` [${block.name ?? 'Tool'}] ${inputSummary}\n`));
93
+ const name = block.name ?? 'Tool';
94
+ const inputSummary = block.input ? extractToolSummary(name, block.input) : '';
95
+ process.stdout.write(chalk.dim(` [${name}] ${inputSummary}\n`));
76
96
  }
77
97
  }
78
98
  }
@@ -126,7 +146,108 @@ export function renderResult(msg) {
126
146
  }
127
147
  }
128
148
  // ── Internal helpers ──────────────────────────────────────────────────
129
- function ensureNewLine() {
149
+ function extractToolSummary(toolName, input) {
150
+ switch (toolName) {
151
+ case 'Read': return String(input.file_path ?? '');
152
+ case 'Write': return String(input.file_path ?? '');
153
+ case 'Edit': return String(input.file_path ?? '');
154
+ case 'Glob': return String(input.pattern ?? '');
155
+ case 'Grep': return `"${input.pattern ?? ''}"${input.path ? ` in ${input.path}` : ''}`;
156
+ case 'Bash': return String(input.command ?? '').split('\n')[0].slice(0, 120);
157
+ case 'Agent': return String(input.description ?? '');
158
+ case 'WebFetch': return String(input.url ?? '');
159
+ case 'WebSearch': return String(input.query ?? '');
160
+ default: return JSON.stringify(input).slice(0, 100);
161
+ }
162
+ }
163
+ /**
164
+ * Interactive model picker — renders an arrow-key navigable list below the
165
+ * current cursor position. Returns the selected model value, or null if
166
+ * the user cancelled with Esc.
167
+ *
168
+ * Rendered like Claude Code's native /model picker:
169
+ * ── Select model ──────────────────────────────────────
170
+ * Claude Opus 4.6 — Most capable model
171
+ * ❯ Claude Sonnet 4.6 — Fast and capable (current)
172
+ * Claude Haiku 4.5 — Fastest
173
+ */
174
+ export async function renderModelPicker(models, currentModel) {
175
+ if (models.length === 0) {
176
+ console.log(chalk.dim(' No models available'));
177
+ return null;
178
+ }
179
+ let selected = Math.max(0, models.findIndex(m => m.value === currentModel));
180
+ function printList() {
181
+ const lines = [
182
+ chalk.dim(' ── Select model (↑↓ navigate · Enter select · Esc cancel) ──'),
183
+ ];
184
+ for (let i = 0; i < models.length; i++) {
185
+ const m = models[i];
186
+ const isCurrent = m.value === currentModel;
187
+ const isSel = i === selected;
188
+ const cursor = isSel ? chalk.cyan('❯') : ' ';
189
+ const label = (isSel ? chalk.bold.white : chalk.reset)((m.displayName || m.value).padEnd(22));
190
+ const desc = m.description
191
+ ? chalk.dim(' — ' + m.description.slice(0, 48))
192
+ : '';
193
+ const tag = isCurrent ? chalk.dim(' (current)') : '';
194
+ lines.push(` ${cursor} ${label}${desc}${tag}`);
195
+ }
196
+ for (const line of lines)
197
+ process.stdout.write(line + '\n');
198
+ return lines.length;
199
+ }
200
+ let printed = printList();
201
+ return new Promise((resolve) => {
202
+ process.stdin.setRawMode(true);
203
+ process.stdin.resume();
204
+ const handler = (key) => {
205
+ const ch = key.toString();
206
+ if (ch === '\x03') {
207
+ // Ctrl+C — propagate up (caller handles exit)
208
+ cleanup(null);
209
+ process.stdin.emit('data', key); // re-emit so outer handler sees it
210
+ return;
211
+ }
212
+ if (key[0] === 0x1b && key.length === 1) {
213
+ // Esc — cancel
214
+ cleanup(null);
215
+ return;
216
+ }
217
+ if (ch === '\x1b[A' && selected > 0) {
218
+ selected--;
219
+ redraw();
220
+ return;
221
+ }
222
+ if (ch === '\x1b[B' && selected < models.length - 1) {
223
+ selected++;
224
+ redraw();
225
+ return;
226
+ }
227
+ if (ch === '\r' || ch === '\n') {
228
+ const chosen = models[selected];
229
+ clearList();
230
+ process.stdout.write(chalk.green(` ✓ ${chosen.displayName || chosen.value}\n`));
231
+ cleanup(chosen.value);
232
+ return;
233
+ }
234
+ };
235
+ function redraw() {
236
+ clearList();
237
+ printed = printList();
238
+ }
239
+ function clearList() {
240
+ process.stdout.write(`\x1b[${printed}F\x1b[J`);
241
+ }
242
+ function cleanup(result) {
243
+ process.stdin.removeListener('data', handler);
244
+ process.stdin.setRawMode(false);
245
+ resolve(result);
246
+ }
247
+ process.stdin.on('data', handler);
248
+ });
249
+ }
250
+ export function ensureNewLine() {
130
251
  if (midLine) {
131
252
  process.stdout.write('\n');
132
253
  midLine = false;
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-ui.js","sourceRoot":"","sources":["../../src/lib/terminal-ui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal-ui.js","sourceRoot":"","sources":["../../src/lib/terminal-ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memnexus-ai/mx-agent-cli",
3
- "version": "0.1.66",
3
+ "version": "0.1.67",
4
4
  "description": "CLI for creating and managing AI agent teams",
5
5
  "type": "module",
6
6
  "bin": {