Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package agenthost
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
)
|
|
|
|
func validSessionForkProviderResult(
|
|
result RuntimeSessionForkResult,
|
|
) bool {
|
|
switch result.StateBindingMode {
|
|
case SessionForkStateBindingHostCopy:
|
|
return len(result.TargetProviderTurnBindings) == 0 &&
|
|
result.StateBindingReceipt == ""
|
|
case SessionForkStateBindingProviderOwned:
|
|
if result.StateBindingReceipt == "" ||
|
|
len(result.TargetProviderTurnBindings) == 0 {
|
|
return false
|
|
}
|
|
seenProviderTurnIDs := make(
|
|
map[string]struct{},
|
|
len(result.TargetProviderTurnBindings),
|
|
)
|
|
for _, binding := range result.TargetProviderTurnBindings {
|
|
providerTurnID := strings.TrimSpace(binding.ProviderTurnID)
|
|
var providerBinding map[string]any
|
|
if providerTurnID == "" ||
|
|
json.Unmarshal(binding.ProviderTurnBindingJSON, &providerBinding) != nil ||
|
|
len(providerBinding) == 0 {
|
|
return false
|
|
}
|
|
if _, duplicate := seenProviderTurnIDs[providerTurnID]; duplicate {
|
|
return false
|
|
}
|
|
seenProviderTurnIDs[providerTurnID] = struct{}{}
|
|
}
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|