mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-05-13 22:31:40 +00:00
This change stops short of broader Claude Code runtime alignment and instead hardens two safe edges: builtin tool prefix handling and source-informed sentinel coverage for future drift checks. Constraint: Must preserve existing default behavior for current users Rejected: Implement control-plane/session alignment now | too much runtime risk for a first slice Confidence: high Scope-risk: narrow Reversibility: clean Directive: Treat the new fixtures as compatibility sentinels, not a full Claude Code schema contract Tested: go test ./test/...; go test ./sdk/translator/...; go test ./internal/runtime/executor -run 'Claude|Builtin|Tool'; go test ./... Not-tested: End-to-end Claude Code direct-connect/session runtime behavior
39 lines
884 B
Go
39 lines
884 B
Go
package executor
|
|
|
|
import "github.com/tidwall/gjson"
|
|
|
|
var defaultClaudeBuiltinToolNames = []string{
|
|
"web_search",
|
|
"code_execution",
|
|
"text_editor",
|
|
"computer",
|
|
}
|
|
|
|
func newClaudeBuiltinToolRegistry() map[string]bool {
|
|
registry := make(map[string]bool, len(defaultClaudeBuiltinToolNames))
|
|
for _, name := range defaultClaudeBuiltinToolNames {
|
|
registry[name] = true
|
|
}
|
|
return registry
|
|
}
|
|
|
|
func augmentClaudeBuiltinToolRegistry(body []byte, registry map[string]bool) map[string]bool {
|
|
if registry == nil {
|
|
registry = newClaudeBuiltinToolRegistry()
|
|
}
|
|
tools := gjson.GetBytes(body, "tools")
|
|
if !tools.Exists() || !tools.IsArray() {
|
|
return registry
|
|
}
|
|
tools.ForEach(func(_, tool gjson.Result) bool {
|
|
if tool.Get("type").String() == "" {
|
|
return true
|
|
}
|
|
if name := tool.Get("name").String(); name != "" {
|
|
registry[name] = true
|
|
}
|
|
return true
|
|
})
|
|
return registry
|
|
}
|