Skip to content

Commit bbfb06d

Browse files
committed
Format Javascript
Signed-off-by: David Gageot <david.gageot@docker.com>
1 parent c80b585 commit bbfb06d

3 files changed

Lines changed: 21 additions & 11 deletions

File tree

pkg/tui/components/messages/messages.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,7 @@ func (m *model) PlainTextTranscript() string {
626626
}
627627

628628
func (m *model) createToolCallView(msg *types.Message) layout.Model {
629-
view := tool.New(msg, m.app)
629+
view := tool.New(msg, m.app, m.renderer)
630630
view.SetSize(m.width, 0)
631631
return view
632632
}

pkg/tui/components/tool/builtins.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"encoding/json"
55
"strings"
66

7+
"github.com/charmbracelet/glamour/v2"
8+
79
"github.com/docker/cagent/pkg/codemode"
810
"github.com/docker/cagent/pkg/tools"
911
"github.com/docker/cagent/pkg/tools/builtin"
@@ -31,13 +33,18 @@ func render_search_files(toolCall tools.ToolCall) string {
3133
return output
3234
}
3335

34-
func render_run_tools_with_javascript(toolCall tools.ToolCall) string {
36+
func render_run_tools_with_javascript(toolCall tools.ToolCall, renderer *glamour.TermRenderer) string {
3537
var args codemode.RunToolsWithJavascriptArgs
3638
if err := json.Unmarshal([]byte(toolCall.Function.Arguments), &args); err != nil {
3739
return ""
3840
}
3941

40-
return args.Script
42+
md, err := renderer.Render("```javascript\n" + args.Script + "\n```")
43+
if err != nil {
44+
return args.Script
45+
}
46+
47+
return md
4148
}
4249

4350
func render_edit_file(toolCall tools.ToolCall, width int) (string, string) {

pkg/tui/components/tool/tool.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/charmbracelet/bubbles/v2/spinner"
99
tea "github.com/charmbracelet/bubbletea/v2"
10+
"github.com/charmbracelet/glamour/v2"
1011

1112
"github.com/docker/cagent/pkg/app"
1213
"github.com/docker/cagent/pkg/tui/core/layout"
@@ -18,7 +19,8 @@ import (
1819
type toolModel struct {
1920
message *types.Message
2021

21-
spinner spinner.Model
22+
spinner spinner.Model
23+
renderer *glamour.TermRenderer
2224

2325
width int
2426
height int
@@ -34,19 +36,20 @@ func (mv *toolModel) SetSize(width, height int) tea.Cmd {
3436
}
3537

3638
// New creates a new tool view
37-
func New(msg *types.Message, a *app.App) layout.Model {
39+
func New(msg *types.Message, a *app.App, renderer *glamour.TermRenderer) layout.Model {
3840
if msg.ToolCall.Function.Name == "transfer_task" {
3941
return &transferTaskModel{
4042
msg: msg,
4143
}
4244
}
4345

4446
return &toolModel{
45-
message: msg,
46-
width: 80,
47-
height: 1,
48-
spinner: spinner.New(spinner.WithSpinner(spinner.Points)),
49-
app: a,
47+
message: msg,
48+
width: 80,
49+
height: 1,
50+
spinner: spinner.New(spinner.WithSpinner(spinner.Points)),
51+
renderer: renderer,
52+
app: a,
5053
}
5154
}
5255

@@ -102,7 +105,7 @@ func (mv *toolModel) View() string {
102105
case "search_files":
103106
content += " " + render_search_files(msg.ToolCall)
104107
case "run_tools_with_javascript":
105-
content += " " + render_run_tools_with_javascript(msg.ToolCall)
108+
content += " " + render_run_tools_with_javascript(msg.ToolCall, mv.renderer)
106109
case "edit_file":
107110
diff, path := render_edit_file(msg.ToolCall, mv.width)
108111
if diff != "" {

0 commit comments

Comments
 (0)