36 lines
979 B
Go
36 lines
979 B
Go
//go:build windows || darwin
|
|
|
|
package tools
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"github.com/ollama/ollama/api"
|
|
internalcloud "github.com/ollama/ollama/internal/cloud"
|
|
)
|
|
|
|
// ensureCloudEnabledForTool checks cloud policy from the connected Ollama server.
|
|
// If policy cannot be determined, this fails closed and blocks the operation.
|
|
func ensureCloudEnabledForTool(ctx context.Context, operation string) error {
|
|
// Reuse shared message formatting; policy evaluation is still done via
|
|
// the connected server's /api/status endpoint below.
|
|
disabledMessage := internalcloud.DisabledError(operation)
|
|
|
|
client, err := api.ClientFromEnvironment()
|
|
if err != nil {
|
|
return errors.New(disabledMessage + " (unable to verify server cloud policy)")
|
|
}
|
|
|
|
status, err := client.CloudStatusExperimental(ctx)
|
|
if err != nil {
|
|
return errors.New(disabledMessage + " (unable to verify server cloud policy)")
|
|
}
|
|
|
|
if status.Cloud.Disabled {
|
|
return errors.New(disabledMessage)
|
|
}
|
|
|
|
return nil
|
|
}
|