@eventmodelers/cli 0.0.16 → 0.0.18

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/cli.js CHANGED
@@ -873,6 +873,25 @@ async function runModeling(kitDir, projectDir) {
873
873
  let stdoutBuffer = '';
874
874
  let pending = null; // one in-flight turn at a time
875
875
 
876
+ // Bare tool names (`→ Bash`, `→ Skill`) tell you nothing happened worth
877
+ // reading — this pulls out the one input field that actually says what the
878
+ // tool did, so the trace is skimmable without the interactive TUI.
879
+ function describeToolUse(block) {
880
+ const input = block.input ?? {};
881
+ switch (block.name) {
882
+ case 'Bash': return `Bash: ${input.command}`;
883
+ case 'Skill': return `Skill: ${input.skill}${input.args ? ` ${input.args}` : ''}`;
884
+ case 'Read': return `Read: ${input.file_path}`;
885
+ case 'Edit': return `Edit: ${input.file_path}`;
886
+ case 'Write': return `Write: ${input.file_path}`;
887
+ case 'Grep': return `Grep: ${input.pattern}`;
888
+ case 'Glob': return `Glob: ${input.pattern}`;
889
+ case 'WebFetch': return `WebFetch: ${input.url}`;
890
+ case 'Agent': return `Agent: ${input.description ?? input.subagent_type ?? ''}`;
891
+ default: return block.name;
892
+ }
893
+ }
894
+
876
895
  // stream-json output loses the normal interactive TUI (tool cards, live diffs) —
877
896
  // this is a plain-text approximation, good enough for a headless/voice runner.
878
897
  function handleLine(line) {
@@ -883,7 +902,7 @@ async function runModeling(kitDir, projectDir) {
883
902
  if (msg.type === 'assistant') {
884
903
  for (const block of msg.message?.content ?? []) {
885
904
  if (block.type === 'text' && block.text) log(block.text);
886
- if (block.type === 'tool_use') log(`→ ${block.name}`);
905
+ if (block.type === 'tool_use') log(`→ ${describeToolUse(block)}`);
887
906
  }
888
907
  return;
889
908
  }
@@ -1002,6 +1021,7 @@ async function runModeling(kitDir, projectDir) {
1002
1021
  method: 'POST',
1003
1022
  headers: { Authorization: `Bearer ${realtimeToken}`, 'Content-Type': 'application/json' },
1004
1023
  body: JSON.stringify({ token: cfg.token, board_id: cfg.boardId, agent_type: 'MODELING' }),
1024
+ signal: AbortSignal.timeout(10_000),
1005
1025
  });
1006
1026
  if (!res.ok) log(`ping failed: ${res.status}`);
1007
1027
  } catch (err) {
@@ -1009,7 +1029,7 @@ async function runModeling(kitDir, projectDir) {
1009
1029
  }
1010
1030
  };
1011
1031
  await ping();
1012
- setInterval(ping, 30_000);
1032
+ setInterval(ping, 15_000);
1013
1033
  }
1014
1034
 
1015
1035
  const program = new Command();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eventmodelers/cli",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "Eventmodelers CLI — real-time Claude agent + skills for Claude Code, for any stack (Node, Supabase, Axon, Cratis, or modeling-only)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -253,6 +253,7 @@ async function startRealtimeAgent(cfg, kitDir) {
253
253
  method: 'POST',
254
254
  headers: { Authorization: `Bearer ${realtimeToken}`, 'Content-Type': 'application/json' },
255
255
  body: JSON.stringify({ token: cfg.token, board_id: cfg.boardId, agent_type: 'BUILD' }),
256
+ signal: AbortSignal.timeout(10_000),
256
257
  });
257
258
  if (!res.ok) console.error(`[agent] Ping failed: ${res.status}`);
258
259
  } catch (err) {
@@ -260,7 +261,7 @@ async function startRealtimeAgent(cfg, kitDir) {
260
261
  }
261
262
  };
262
263
  await ping();
263
- setInterval(ping, 30_000);
264
+ setInterval(ping, 15_000);
264
265
  }
265
266
 
266
267
  // ── Ralph loop ────────────────────────────────────────────────────────────────