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

95 lines
2.2 KiB
Go

package framework
import (
"context"
cliservice "github.com/tutti-os/tutti/services/tuttid/service/cli"
)
type CommandKind string
const (
KindList CommandKind = "list"
KindGet CommandKind = "get"
KindAction CommandKind = "action"
)
type OutputView string
const (
ViewSummary OutputView = "summary"
ViewDetail OutputView = "detail"
)
type WorkspacePolicy string
const (
WorkspaceOptional WorkspacePolicy = "optional"
WorkspaceStartupDefault WorkspacePolicy = "startup-default"
WorkspaceRequired WorkspacePolicy = "required"
)
type InvokeContext struct {
Request cliservice.InvokeRequest
WorkspaceID string
}
type CommandSpec[T any] struct {
ID string
Path []string
Summary string
Description string
Kind CommandKind
Visibility cliservice.CapabilityVisibility
Workspace WorkspacePolicy
Workspaces cliservice.WorkspaceCatalog
Inputs InputSpec
Output OutputSpec
Execution *cliservice.CommandExecution
Source cliservice.CapabilitySource
Run func(context.Context, InvokeContext, T) (any, error)
}
type FieldSpec struct {
Name string
Type string
Description string
Hidden bool
// AdvertisedRequired keeps the canonical capability contract strict while
// allowing a hidden compatibility selector to satisfy runtime validation.
AdvertisedRequired bool
Required bool
Hint string
Min *int64
Max *int64
Enum []string
Default any
}
type InputSpec struct {
Fields []FieldSpec
InputType string
AcceptsInput bool
}
type OutputSpec struct {
DefaultMode cliservice.OutputMode
DefaultView OutputView
JSON bool
Table *TableOutputSpec
JSONViews map[OutputView]func(any) map[string]any
JSONValue func(any) map[string]any
RawJSON bool
RawJSONReason string
PlainText func(any) string
Markdown func(any) string
ListCompact bool
Warnings func(any) []cliservice.CommandWarning
Continuation func(any) *cliservice.CommandContinuation
}
type TableOutputSpec struct {
Columns []cliservice.TableColumn
Rows func(any) []map[string]any
}