Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e415d93
[Autoloop: python-to-go-migration] Iteration 36: Migrate integration/…
github-actions[bot] May 14, 2026
ffa20d7
Merge main into autoloop/python-to-go-migration
github-actions[bot] May 14, 2026
0564ba9
[Autoloop: python-to-go-migration] Iteration 37: Migrate install/temp…
github-actions[bot] May 14, 2026
f7d1e26
[Autoloop: python-to-go-migration] Iteration 38: migrate 4 modules (u…
github-actions[bot] May 14, 2026
05d41e2
[Autoloop: python-to-go-migration] Iteration 39: migrate base_integra…
github-actions[bot] May 14, 2026
c0ff448
ci: trigger checks
github-actions[bot] May 14, 2026
2e52f0d
[Autoloop: python-to-go-migration] Iteration 40: Migrate skill, hook,…
github-actions[bot] May 14, 2026
19f9919
ci: trigger checks
github-actions[bot] May 14, 2026
f6c870d
[Autoloop: python-to-go-migration] Iteration 41: Migrate command_logg…
github-actions[bot] May 14, 2026
d9a44f5
ci: trigger checks
github-actions[bot] May 14, 2026
6b3adfc
[Autoloop: python-to-go-migration] Iteration 42: migrate target_detec…
github-actions[bot] May 14, 2026
dbd0669
ci: trigger checks
github-actions[bot] May 14, 2026
7782163
[Autoloop: python-to-go-migration] Iteration 43: migrate policy/helpt…
github-actions[bot] May 14, 2026
fbb8856
ci: trigger checks
github-actions[bot] May 14, 2026
c2f710d
[Autoloop: python-to-go-migration] Iteration 44: migrate gitutils, mk…
github-actions[bot] May 14, 2026
50fa0b7
ci: trigger checks
github-actions[bot] May 14, 2026
631b5c5
[Autoloop: python-to-go-migration] Iteration 45: migrate core/token_m…
github-actions[bot] May 14, 2026
09c1a50
ci: trigger checks
github-actions[bot] May 14, 2026
3fd8773
[Autoloop: python-to-go-migration] Iteration 46: migrate models/depen…
github-actions[bot] May 14, 2026
648f4d2
ci: trigger checks
github-actions[bot] May 14, 2026
157b028
[Autoloop: python-to-go-migration] Iteration 47: Migrate core/script_…
github-actions[bot] May 14, 2026
e0fb689
ci: trigger checks
github-actions[bot] May 14, 2026
d9b387f
[Autoloop: python-to-go-migration] Iteration 48: migrate core/auth, m…
github-actions[bot] May 14, 2026
a0671f9
ci: trigger checks
github-actions[bot] May 14, 2026
8f7ba3b
[Autoloop: python-to-go-migration] Iteration 49: Migrate apm_resolver…
github-actions[bot] May 14, 2026
0689e7e
ci: trigger checks
github-actions[bot] May 14, 2026
a10f2b0
[Autoloop: python-to-go-migration] Iteration 50: Register 10 untracke…
github-actions[bot] May 14, 2026
445385d
[Autoloop: python-to-go-migration] Iteration 51: Register 6 untracked…
github-actions[bot] May 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
411 changes: 401 additions & 10 deletions benchmarks/migration-status.json

Large diffs are not rendered by default.

55 changes: 55 additions & 0 deletions internal/adapters/windsurf/windsurf.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// Package windsurf provides the Windsurf/Cascade MCP client adapter.
// Migrated from src/apm_cli/adapters/client/windsurf.py
//
// Windsurf uses the standard mcpServers JSON format at
// ~/.codeium/windsurf/mcp_config.json (global). The config schema is
// identical to GitHub Copilot CLI.
package windsurf

import (
"os"
"path/filepath"
)

// Adapter implements the Windsurf/Cascade MCP client adapter.
type Adapter struct {
// SupportsUserScope indicates this adapter targets global user config.
SupportsUserScope bool
// ClientLabel is the user-facing label for this adapter.
ClientLabel string
// TargetName is the adapter identifier.
TargetName string
// MCPServersKey is the JSON key for MCP servers.
MCPServersKey string
// SupportsRuntimeEnvSubstitution mirrors the Python field.
// Pinned to false until windsurf runtime-env audit is complete.
SupportsRuntimeEnvSubstitution bool
}

// New returns a new Windsurf adapter with default settings.
func New() *Adapter {
return &Adapter{
SupportsUserScope: true,
ClientLabel: "Windsurf",
TargetName: "windsurf",
MCPServersKey: "mcpServers",
SupportsRuntimeEnvSubstitution: false,
}
}

// GetConfigPath returns the path to ~/.codeium/windsurf/mcp_config.json.
// This is a global config path -- Windsurf reads MCP server definitions
// from the user-level directory, not the workspace.
func (a *Adapter) GetConfigPath() string {
home, err := os.UserHomeDir()
if err != nil {
home = "~"
}
return filepath.Join(home, ".codeium", "windsurf", "mcp_config.json")
}

// GetRuntimeName returns the runtime name.
func (a *Adapter) GetRuntimeName() string { return a.TargetName }

// IsAvailable always returns true for Windsurf (file-based config, no binary check).
func (a *Adapter) IsAvailable() bool { return true }
Loading