Skip to content

Commit 920d88c

Browse files
idoubiclaude
andcommitted
feat: upgrade to SDK v0.5.0 — new tools, effort control, fallback model
SDK v0.5.0 brings massive feature parity with TypeScript SDK: New built-in tools (auto-registered): - EnterPlanMode / ExitPlanMode - TeamCreate / TeamDelete / SendMessage - EnterWorktree / ExitWorktree - CronCreate / CronDelete / CronList - LSP (grep-based fallback) - NotebookEdit - ListMcpResources / ReadMcpResource - Config / TodoWrite New agent.Options fields wired: - Effort (low/medium/high/max) via /effort command - FallbackModel from config - DisallowedTools from config - EnableFileCheckpointing from config New SDK packages available: - session/ — full session management - plugins/ — plugin system - checkpoint/ — file state tracking - contextusage/ — context window tracking - ratelimit/ — API rate limiting - sandbox/ — security sandbox 51 slash commands, 6300+ lines Go Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6f94d53 commit 920d88c

File tree

6 files changed

+55
-18
lines changed

6 files changed

+55
-18
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ require (
77
github.com/charmbracelet/bubbletea v1.3.5
88
github.com/charmbracelet/glamour v0.9.1
99
github.com/charmbracelet/lipgloss v1.1.0
10-
github.com/codeany-ai/open-agent-sdk-go v0.4.1
10+
github.com/codeany-ai/open-agent-sdk-go v0.5.0
1111
github.com/muesli/reflow v0.3.0
1212
github.com/spf13/cobra v1.9.1
1313
gopkg.in/yaml.v3 v3.0.1

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91 h1:payR
3232
github.com/charmbracelet/x/exp/golden v0.0.0-20241011142426-46044092ad91/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
3333
github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ=
3434
github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg=
35-
github.com/codeany-ai/open-agent-sdk-go v0.4.1 h1:sifjkB79SwgiJDDTaU65whTtKoddisT2i0zkQ68m04Y=
36-
github.com/codeany-ai/open-agent-sdk-go v0.4.1/go.mod h1:j9P9/i2oWLD0iMB73vZ6IllaQ9FzgG0LAdPmnqb9VOw=
35+
github.com/codeany-ai/open-agent-sdk-go v0.5.0 h1:UJd5HwlB01udnIHnYAimO1iOXqkItofNSuGMH5keT00=
36+
github.com/codeany-ai/open-agent-sdk-go v0.5.0/go.mod h1:j9P9/i2oWLD0iMB73vZ6IllaQ9FzgG0LAdPmnqb9VOw=
3737
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
3838
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
3939
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=

internal/config/config.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,13 @@ type Config struct {
3333
PermissionMode string `json:"permissionMode,omitempty"`
3434

3535
// Tool settings
36-
AllowedTools []string `json:"allowedTools,omitempty"`
36+
AllowedTools []string `json:"allowedTools,omitempty"`
37+
DisallowedTools []string `json:"disallowedTools,omitempty"`
38+
39+
// Advanced
40+
FallbackModel string `json:"fallbackModel,omitempty"`
41+
Effort string `json:"effort,omitempty"` // "low", "medium", "high", "max"
42+
EnableFileCheckpointing bool `json:"enableFileCheckpointing,omitempty"`
3743

3844
// MCP servers
3945
MCPServers map[string]types.MCPServerConfig `json:"mcpServers,omitempty"`

internal/slash/commands.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1301,6 +1301,29 @@ func (h *Handler) worktreeCmd(args []string) Result {
13011301
}
13021302
}
13031303

1304+
// ─── /effort ──────────────────────────────────────
1305+
1306+
func (h *Handler) effortCmd(args []string) Result {
1307+
if len(args) == 0 {
1308+
cfg := h.app.GetConfig()
1309+
current := cfg.Effort
1310+
if current == "" {
1311+
current = "(default)"
1312+
}
1313+
return Result{Message: fmt.Sprintf("Current effort: %s\n\nAvailable levels:\n /effort low Fast, concise responses\n /effort medium Balanced (default)\n /effort high Thorough analysis\n /effort max Maximum reasoning depth", current)}
1314+
}
1315+
1316+
level := strings.ToLower(args[0])
1317+
switch level {
1318+
case "low", "medium", "high", "max":
1319+
cfg := h.app.GetConfig()
1320+
cfg.Effort = level
1321+
return Result{Message: fmt.Sprintf("Effort level set to: %s\n(Takes effect on next query)", level)}
1322+
default:
1323+
return Result{Message: fmt.Sprintf("Unknown effort level: %s\nUse: low, medium, high, max", level)}
1324+
}
1325+
}
1326+
13041327
// ─── /btw ─────────────────────────────────────────
13051328

13061329
func (h *Handler) btwCmd(args []string) Result {

internal/slash/slash.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ func AllCommands() []CommandDef {
113113
{Name: "/worktree", Description: "Git worktree isolation (enter, exit)", HasArgs: true},
114114
// Mid-query
115115
{Name: "/btw", Description: "Side question (queued during execution)", HasArgs: true},
116+
// Reasoning
117+
{Name: "/effort", Description: "Set reasoning effort (low/medium/high/max)", HasArgs: true},
116118
}
117119
}
118120

@@ -262,6 +264,8 @@ func (h *Handler) Handle(input string) Result {
262264
return h.worktreeCmd(args)
263265
case "/btw":
264266
return h.btwCmd(args)
267+
case "/effort":
268+
return h.effortCmd(args)
265269
default:
266270
// Try skill invocation
267271
if result, ok := h.HandleSkillInvocation(cmd, args); ok {

internal/tui/model.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -215,20 +215,24 @@ func (m *Model) initAgent() tea.Cmd {
215215
}
216216

217217
opts := agent.Options{
218-
Model: m.cfg.Model,
219-
APIKey: m.cfg.APIKey,
220-
BaseURL: m.cfg.BaseURL,
221-
Provider: m.cfg.Provider,
222-
CWD: cwd,
223-
MaxTurns: m.cfg.MaxTurns,
224-
MaxBudgetUSD: m.cfg.MaxBudgetUSD,
225-
MCPServers: m.cfg.MCPServers,
226-
SystemPrompt: m.cfg.SystemPrompt,
227-
AppendSystemPrompt: appendPrompt,
228-
CustomHeaders: m.cfg.CustomHeaders,
229-
ProxyURL: m.cfg.ProxyURL,
230-
AllowedTools: m.cfg.AllowedTools,
231-
Hooks: buildHooksConfig(m.cfg),
218+
Model: m.cfg.Model,
219+
APIKey: m.cfg.APIKey,
220+
BaseURL: m.cfg.BaseURL,
221+
Provider: m.cfg.Provider,
222+
CWD: cwd,
223+
MaxTurns: m.cfg.MaxTurns,
224+
MaxBudgetUSD: m.cfg.MaxBudgetUSD,
225+
MCPServers: m.cfg.MCPServers,
226+
SystemPrompt: m.cfg.SystemPrompt,
227+
AppendSystemPrompt: appendPrompt,
228+
CustomHeaders: m.cfg.CustomHeaders,
229+
ProxyURL: m.cfg.ProxyURL,
230+
AllowedTools: m.cfg.AllowedTools,
231+
DisallowedTools: m.cfg.DisallowedTools,
232+
FallbackModel: m.cfg.FallbackModel,
233+
Effort: agent.Effort(m.cfg.Effort),
234+
EnableFileCheckpointing: m.cfg.EnableFileCheckpointing,
235+
Hooks: buildHooksConfig(m.cfg),
232236
}
233237

234238
// Always use our interactive callback — it checks mode internally

0 commit comments

Comments
 (0)