Files
agent-radar 2ed3415fb7
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
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

77 lines
2.1 KiB
Go

package tuttimodeexecution_test
import (
"context"
"errors"
"sync"
workspaceservice "github.com/tutti-os/tutti/services/tuttid/service/workspace"
)
type recordingRunCanceller struct {
mu sync.Mutex
requests []workspaceservice.IssueRunCancellationRequest
failNext bool
unknownNext bool
}
func (canceller *recordingRunCanceller) RequestRunCancellation(
_ context.Context,
request workspaceservice.IssueRunCancellationRequest,
) (workspaceservice.IssueRunCancelResult, error) {
canceller.mu.Lock()
defer canceller.mu.Unlock()
canceller.requests = append(canceller.requests, request)
if canceller.failNext {
canceller.failNext = false
return workspaceservice.IssueRunCancelResult{}, errors.New("injected cancellation failure")
}
if canceller.unknownNext {
canceller.unknownNext = false
return workspaceservice.IssueRunCancelResult{
State: workspaceservice.IssueRunCancelState("unknown"),
}, nil
}
return workspaceservice.IssueRunCancelResult{
State: workspaceservice.IssueRunCancelAccepted,
}, nil
}
func (driver *sqliteConformanceDriver) FailNextCancellation() {
driver.canceller.mu.Lock()
defer driver.canceller.mu.Unlock()
driver.canceller.failNext = true
}
func (driver *sqliteConformanceDriver) ReturnUnknownNextCancellation() {
driver.canceller.mu.Lock()
defer driver.canceller.mu.Unlock()
driver.canceller.unknownNext = true
}
func (driver *sqliteConformanceDriver) CancellationCallCount() int {
driver.canceller.mu.Lock()
defer driver.canceller.mu.Unlock()
return len(driver.canceller.requests)
}
func (driver *sqliteConformanceDriver) CancellationClientSubmitIDs() []string {
driver.canceller.mu.Lock()
defer driver.canceller.mu.Unlock()
submitIDs := make([]string, 0, len(driver.canceller.requests))
for _, request := range driver.canceller.requests {
submitIDs = append(submitIDs, request.ClientSubmitID)
}
return submitIDs
}
func (driver *sqliteConformanceDriver) PreparedCancelCompensationCount(
ctx context.Context,
workspaceID string,
) (int, error) {
items, err := driver.executions.ListPreparedRunCancelCompensations(
ctx, workspaceID,
)
return len(items), err
}