@guildai/cli 0.3.14 → 0.3.15

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.
@@ -4,6 +4,24 @@
4
4
  * and fetching/converting session events for resume.
5
5
  */
6
6
  import chalk from 'chalk';
7
+ import { marked } from 'marked';
8
+ import { markedTerminal } from 'marked-terminal';
9
+ import { brand, code as codeColor } from './colors.js';
10
+ // Configure marked for terminal rendering (same config as chat.tsx)
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ marked.use(markedTerminal({}, { theme: {} }));
13
+ /**
14
+ * Render markdown text to ANSI terminal output.
15
+ * Matches the live message rendering pipeline in chat.tsx.
16
+ */
17
+ function renderMarkdown(text) {
18
+ let rendered = marked.parse(text);
19
+ // Fix unrendered inline markdown in list items (marked-terminal bug)
20
+ rendered = rendered.replace(/\*\*([^*]+)\*\*/g, (_, content) => chalk.bold(content));
21
+ rendered = rendered.replace(/`([^`]+)`/g, (_, content) => codeColor(content));
22
+ rendered = rendered.replace(/(?<![\\w])_([^_]+)_(?![\\w])/g, (_, content) => chalk.italic(content));
23
+ return rendered;
24
+ }
7
25
  /**
8
26
  * Print a dimmed resume hint to stderr on session exit.
9
27
  * Only call when a session ID is available.
@@ -42,7 +60,7 @@ export function eventsToDisplayMessages(events) {
42
60
  if (event.type === 'user_message') {
43
61
  messages.push({
44
62
  key: event.id,
45
- content: `> ${event.content}`,
63
+ content: `${brand('>')} ${event.content}`,
46
64
  type: 'user',
47
65
  timestamp: event.created_at,
48
66
  });
@@ -50,9 +68,11 @@ export function eventsToDisplayMessages(events) {
50
68
  else if (event.type === 'agent_notification_message') {
51
69
  const text = typeof event.content === 'string' ? event.content : event.content?.data || '';
52
70
  if (text.trim()) {
71
+ const rendered = renderMarkdown(text);
72
+ const messageContent = `${chalk.green('●')} ${chalk.bold('assistant')}\n${rendered.trim()}`;
53
73
  messages.push({
54
74
  key: event.id,
55
- content: text,
75
+ content: messageContent,
56
76
  type: 'assistant',
57
77
  timestamp: event.created_at,
58
78
  });
@@ -63,7 +83,7 @@ export function eventsToDisplayMessages(events) {
63
83
  if (text.trim()) {
64
84
  messages.push({
65
85
  key: event.id,
66
- content: chalk.red(text),
86
+ content: `${chalk.red('●')} ${chalk.bold('assistant')}\n${chalk.red(text)}`,
67
87
  type: 'assistant',
68
88
  timestamp: event.created_at,
69
89
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guildai/cli",
3
- "version": "0.3.14",
3
+ "version": "0.3.15",
4
4
  "description": "Guild.ai CLI - Build, test, and deploy AI agents",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",