Documentation
¶
Index ¶
- Constants
- Variables
- func ClearLine()
- func DisplayQR(qrURL string) error
- func PrintError(message string)
- func PrintInfo(message string)
- func PrintSuccess(message string)
- func PrintWarning(message string)
- func RemotePairEnable(appManager *AppManager, botUUID string, enable bool) error
- func RemotePairRevoke(appManager *AppManager, botUUID, chatID string) error
- func RemotePairStatus(appManager *AppManager, botUUID string) error
- type APIStyle
- type AgentApplyFlagCmdKong
- type AgentCmdKong
- type AgentListFlagCmdKong
- type AgentRestoreFlagCmdKong
- type AgentShowFlagCmdKong
- type AppManager
- type BannerConfig
- type CCmdKong
- type ConfigCmdKong
- type ConfigInteractiveCmdKong
- type ConfigProviderAddCmdKong
- type ConfigProviderCmdKong
- type ConfigProviderDeleteCmdKong
- type ConfigProviderGetCmdKong
- type ConfigProviderInteractiveCmdKong
- type ConfigProviderListCmdKong
- type ConfigProviderUpdateCmdKong
- type ConfigRuleAddCmdKong
- type ConfigRuleCmdKong
- type ConfigRuleDeleteCmdKong
- type ConfigRuleExportCmdKong
- type ConfigRuleImportCmdKong
- type ConfigRuleInteractiveCmdKong
- type ConfigRuleListCmdKong
- type ConfigRuleUpdateCmdKong
- type ImportOptions
- type ImportResult
- type LaunchSource
- type LogCmdKong
- type MCPBuiltinCmdKong
- type OAuthCmdKong
- type OpenCmdKong
- type ProfileCmdKong
- type ProviderImportInfo
- type ProviderInfo
- type ProviderOAuthConfig
- type QRDisplay
- type QuickstartCmdKong
- type QuotaCmdKong
- type RemoteAddCmdKong
- type RemoteCmdKong
- type RemoteConfigCmdKong
- type RemoteListCmdKong
- type RemotePairCmdKong
- type RemotePairDisableCmdKong
- type RemotePairEnableCmdKong
- type RemotePairRevokeCmdKong
- type RemotePairStatusCmdKong
- type RemoteStartCmdKong
- type RestartCmdKong
- type ServerManager
- func (sm *ServerManager) Cleanup()
- func (sm *ServerManager) GetGinEngine() *gin.Engine
- func (sm *ServerManager) GetTBServer() *server.Server
- func (sm *ServerManager) IsRunning() bool
- func (sm *ServerManager) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (sm *ServerManager) Setup(port int) error
- func (sm *ServerManager) Start() error
- func (sm *ServerManager) Stop() error
- type ShortcutCmdKong
- type StartCmdKong
- type StatusCmdKong
- type StopCmdKong
- type SwaggerCmdKong
- type TUICmdKong
- type TokenCmdKong
- type TokenKind
- type TokenListCmdKong
- type TokenRefreshCmdKong
- type TokenViewCmdKong
- type VersionCmdKong
Constants ¶
const StopTimeout = time.Second
Variables ¶
var ( BuildVersion = "dev" BuildGitCommit = "unknown" BuildBuildTime = "unknown" BuildGoVersion = "unknown" BuildPlatform = "unknown" )
Build information set by cli/tingly-box/main_kong.go at startup.
Functions ¶
func DisplayQR ¶
DisplayQR displays a QR code in the terminal It tries multiple methods and falls back to showing the URL
func RemotePairEnable ¶ added in v0.260507.1
func RemotePairEnable(appManager *AppManager, botUUID string, enable bool) error
RemotePairEnable enables or disables RequirePairing for a bot. Takes effect at next bot start.
func RemotePairRevoke ¶ added in v0.260507.1
func RemotePairRevoke(appManager *AppManager, botUUID, chatID string) error
RemotePairRevoke forgets the pairing for a specific chat. The chat will need to re-bind to issue commands.
func RemotePairStatus ¶ added in v0.260507.1
func RemotePairStatus(appManager *AppManager, botUUID string) error
RemotePairStatus shows whether RequirePairing is on and where to find the code.
Types ¶
type AgentApplyFlagCmdKong ¶ added in v0.260507.1
type AgentApplyFlagCmdKong struct {
AgentType string `kong:"arg,optional,help='Agent type (cc/claude-code, oc/opencode, cx/codex)'"`
Provider string `kong:"flag,name='provider',help='Provider UUID (optional, uses routing rule if not specified)'"`
Model string `kong:"flag,name='model',help='Model name (optional, uses routing rule if not specified)'"`
Unified bool `kong:"flag,name='unified',default='true',help='Unified mode (claude-code only)'"`
StatusLine bool `kong:"flag,name='status-line',help='Install status line integration (claude-code only)'"`
Force bool `kong:"flag,name='force',help='Skip confirmation'"`
Preview bool `kong:"flag,name='preview',help='Preview without applying'"`
}
AgentApplyFlagCmdKong applies agent configuration via flags
func (*AgentApplyFlagCmdKong) Run ¶ added in v0.260507.1
func (a *AgentApplyFlagCmdKong) Run(appManager *AppManager) error
type AgentCmdKong ¶ added in v0.260507.1
type AgentCmdKong struct {
// Flag-based operations (primary interface)
List AgentListFlagCmdKong `kong:"cmd,name='list',default='1',hidden,help='List configured agents (default)'"`
Apply AgentApplyFlagCmdKong `kong:"cmd,help='Apply agent configuration'"`
Show AgentShowFlagCmdKong `kong:"cmd,help='Show agent configuration details'"`
Restore AgentRestoreFlagCmdKong `kong:"cmd,help='Restore agent configuration from backup'"`
}
AgentCmdKong is the Kong version of agent command with flag-based operations. The default behavior (no subcommand) is to list agents.
type AgentListFlagCmdKong ¶ added in v0.260507.1
type AgentListFlagCmdKong struct{}
AgentListFlagCmdKong lists configured agents (default behavior)
func (*AgentListFlagCmdKong) Run ¶ added in v0.260507.1
func (a *AgentListFlagCmdKong) Run(appManager *AppManager) error
type AgentRestoreFlagCmdKong ¶ added in v0.260507.1
type AgentRestoreFlagCmdKong struct {
AgentType string `kong:"arg,optional,help='Agent type to restore'"`
Force bool `kong:"flag,name='force',help='Skip confirmation prompt'"`
}
AgentRestoreFlagCmdKong restores agent configuration from backup
func (*AgentRestoreFlagCmdKong) Run ¶ added in v0.260507.1
func (a *AgentRestoreFlagCmdKong) Run(appManager *AppManager) error
type AgentShowFlagCmdKong ¶ added in v0.260507.1
type AgentShowFlagCmdKong struct {
AgentType string `kong:"arg,optional,help='Agent type to show'"`
}
AgentShowFlagCmdKong shows agent configuration details via flags
func (*AgentShowFlagCmdKong) Run ¶ added in v0.260507.1
func (a *AgentShowFlagCmdKong) Run(appManager *AppManager) error
type AppManager ¶
type AppManager struct {
// contains filtered or unexported fields
}
AppManager is the command process host: it owns AppConfig and server lifecycle. Domain behavior belongs in internal/usecase rather than here.
func NewAppManager ¶
func NewAppManager(configDir string) (*AppManager, error)
NewAppManager creates a new AppManager with the given config directory.
func NewAppManagerWithConfig ¶
func NewAppManagerWithConfig(appConfig *config.AppConfig) *AppManager
NewAppManagerWithConfig creates a new AppManager with an existing AppConfig.
func (*AppManager) AppConfig ¶
func (am *AppManager) AppConfig() *config.AppConfig
AppConfig returns the underlying AppConfig.
func (*AppManager) GetGlobalConfig ¶
func (am *AppManager) GetGlobalConfig() *serverconfig.Config
GetGlobalConfig returns the global configuration manager.
func (*AppManager) GetRuntimeServerPort ¶ added in v0.260716.1
func (am *AppManager) GetRuntimeServerPort() int
GetRuntimeServerPort returns the port the running server is actually listening on. The server port is intentionally not persisted in the config file, so a server started with --port would be invisible to other CLI processes; the server therefore records its port in a runtime port file next to the PID lock. When the server is running (lock held) and the port file is readable, that port wins; otherwise this falls back to the configured port.
func (*AppManager) StartServerAt ¶ added in v0.260813.1
func (am *AppManager) StartServerAt(port int) error
StartServerAt initializes and starts the in-process server used by the TUI.
type BannerConfig ¶
type BannerConfig struct {
Port int
Host string
EnableUI bool
GlobalConfig *serverconfig.Config
IsDaemon bool
}
BannerConfig holds configuration for banner display
type CCmdKong ¶ added in v0.260507.1
type CCmdKong struct {
Profile string `kong:"flag,name='profile',help='Claude Code profile to use'"`
Port int `kong:"flag,name='port',help='Tingly-Box server port (default: detected from running server, else config or 12580)'"`
Args []string `kong:"arg,optional,passthrough='all',help='Additional arguments to pass to Claude Code (e.g., --model opus)'"`
}
CCmdKong launches Claude Code with tingly-box-specific flags. Put tingly-box flags before Claude Code args; unknown flags are passed through to Claude Code so users do not need to insert a literal '--'.
func (*CCmdKong) Run ¶ added in v0.260507.1
func (c *CCmdKong) Run(appManager *AppManager) error
type ConfigCmdKong ¶ added in v0.260507.1
type ConfigCmdKong struct {
// Interactive mode (default when no subcommand is given)
Interactive ConfigInteractiveCmdKong `kong:"cmd,name='interactive',default='1',hidden,help='Interactive configuration management'"`
Provider ConfigProviderCmdKong `kong:"cmd,help='Manage providers (add/list/update/delete/get)'"`
Rule ConfigRuleCmdKong `kong:"cmd,help='Manage routing rules (add/list/update/delete/export/import)'"`
}
ConfigCmdKong is the unified configuration management command. Two second-level groups are exposed:
config provider — provider CRUD config rule — rule CRUD + import/export
Finer-grained operations live under those groups and only appear in `config provider --help` / `config rule --help` (not in `config --help`).
type ConfigInteractiveCmdKong ¶ added in v0.260507.1
type ConfigInteractiveCmdKong struct{}
ConfigInteractiveCmdKong runs the interactive config menu.
func (*ConfigInteractiveCmdKong) Run ¶ added in v0.260507.1
func (c *ConfigInteractiveCmdKong) Run(appManager *AppManager) error
type ConfigProviderAddCmdKong ¶ added in v0.260531.1
type ConfigProviderAddCmdKong struct {
Name string `kong:"arg,optional,help='Provider name'"`
BaseURL string `kong:"arg,optional,help='API base URL'"`
Token string `kong:"arg,optional,help='API token'"`
APIStyle string `kong:"arg,optional,help='API style (openai, anthropic)'"`
}
ConfigProviderAddCmdKong adds a new provider.
func (*ConfigProviderAddCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigProviderAddCmdKong) Run(appManager *AppManager) error
type ConfigProviderCmdKong ¶ added in v0.260531.1
type ConfigProviderCmdKong struct {
Interactive ConfigProviderInteractiveCmdKong `kong:"cmd,name='interactive',default='1',hidden,help='Interactive provider management'"`
Add ConfigProviderAddCmdKong `kong:"cmd,help='Add a new provider'"`
List ConfigProviderListCmdKong `kong:"cmd,help='List all providers'"`
Delete ConfigProviderDeleteCmdKong `kong:"cmd,help='Delete a provider (interactive)'"`
Update ConfigProviderUpdateCmdKong `kong:"cmd,help='Update a provider (interactive)'"`
Get ConfigProviderGetCmdKong `kong:"cmd,help='Get provider details by UUID'"`
}
ConfigProviderCmdKong groups provider operations under `config provider`. The default (no subcommand) drops into the provider sub-menu so it mirrors the interactive top-level config menu.
type ConfigProviderDeleteCmdKong ¶ added in v0.260531.1
type ConfigProviderDeleteCmdKong struct{}
ConfigProviderDeleteCmdKong deletes a provider via interactive selection.
func (*ConfigProviderDeleteCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigProviderDeleteCmdKong) Run(appManager *AppManager) error
type ConfigProviderGetCmdKong ¶ added in v0.260531.1
type ConfigProviderGetCmdKong struct {
UUID string `kong:"arg,optional,help='Provider UUID'"`
}
ConfigProviderGetCmdKong displays a provider's details by UUID. Names are not unique (UUID is the PK), so we require UUID. Empty UUID drops to interactive selection.
func (*ConfigProviderGetCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigProviderGetCmdKong) Run(appManager *AppManager) error
type ConfigProviderInteractiveCmdKong ¶ added in v0.260531.1
type ConfigProviderInteractiveCmdKong struct{}
ConfigProviderInteractiveCmdKong runs the provider interactive sub-menu.
func (*ConfigProviderInteractiveCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigProviderInteractiveCmdKong) Run(appManager *AppManager) error
type ConfigProviderListCmdKong ¶ added in v0.260531.1
type ConfigProviderListCmdKong struct{}
ConfigProviderListCmdKong lists all providers.
func (*ConfigProviderListCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigProviderListCmdKong) Run(appManager *AppManager) error
type ConfigProviderUpdateCmdKong ¶ added in v0.260531.1
type ConfigProviderUpdateCmdKong struct{}
ConfigProviderUpdateCmdKong updates a provider via interactive selection.
func (*ConfigProviderUpdateCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigProviderUpdateCmdKong) Run(appManager *AppManager) error
type ConfigRuleAddCmdKong ¶ added in v0.260531.1
type ConfigRuleAddCmdKong struct {
Scenario string `kong:"flag,name='scenario',help='Rule scenario (e.g. openai, anthropic, claude_code)'"`
RequestModel string `kong:"flag,name='request-model',help='Request model (e.g. gpt-4o, tingly/cc)'"`
Provider string `kong:"flag,name='provider',help='Provider UUID or name'"`
Model string `kong:"flag,name='model',help='Model name on the provider'"`
}
ConfigRuleAddCmdKong adds a rule. The flag form is the CI path: provide all four flags and it runs non-interactively. With no flags it drops into the bufio prompts (kept as a thin shim — for richer interactive use, prefer `tingly-box tui rule`).
func (*ConfigRuleAddCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigRuleAddCmdKong) Run(appManager *AppManager) error
type ConfigRuleCmdKong ¶ added in v0.260531.1
type ConfigRuleCmdKong struct {
Interactive ConfigRuleInteractiveCmdKong `kong:"cmd,name='interactive',default='1',hidden,help='Interactive rule management'"`
Add ConfigRuleAddCmdKong `kong:"cmd,help='Add a rule (CI: pass all four flags for non-interactive mode)'"`
List ConfigRuleListCmdKong `kong:"cmd,help='List all rules'"`
Update ConfigRuleUpdateCmdKong `kong:"cmd,help='Update the service on an existing rule'"`
Delete ConfigRuleDeleteCmdKong `kong:"cmd,help='Delete a rule'"`
Export ConfigRuleExportCmdKong `kong:"cmd,help='Export a rule with its providers'"`
Import ConfigRuleImportCmdKong `kong:"cmd,help='Import a rule with its providers'"`
}
ConfigRuleCmdKong groups rule operations under `config rule`. Rule operations are deliberately simpler than provider operations: add/update only let the operator pick a single service (one provider + model); for richer multi-service rules use `config rule import` or the web UI.
type ConfigRuleDeleteCmdKong ¶ added in v0.260531.1
type ConfigRuleDeleteCmdKong struct {
UUID string `kong:"arg,optional,help='Rule UUID'"`
}
ConfigRuleDeleteCmdKong deletes a rule by UUID, with interactive fallback.
func (*ConfigRuleDeleteCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigRuleDeleteCmdKong) Run(appManager *AppManager) error
type ConfigRuleExportCmdKong ¶ added in v0.260531.1
type ConfigRuleExportCmdKong struct {
UUID string `kong:"arg,optional,help='Rule UUID'"`
Format string `kong:"flag,name='format',default='jsonl',help='Export format: jsonl or base64'"`
Output string `kong:"flag,name='output',help='Output file path (default: stdout)'"`
}
ConfigRuleExportCmdKong exports a rule (with its referenced providers). Without UUID it drops into interactive selection. Format/output stay as flags so scripts can pipe deterministically.
func (*ConfigRuleExportCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigRuleExportCmdKong) Run(appManager *AppManager) error
type ConfigRuleImportCmdKong ¶ added in v0.260531.1
type ConfigRuleImportCmdKong struct {
File string `kong:"arg,optional,help='Import file path (reads from stdin if omitted)'"`
Format string `kong:"flag,name='format',default='auto',help='Import format: auto, jsonl, or base64'"`
}
ConfigRuleImportCmdKong imports a rule (with its providers) from a bundle.
func (*ConfigRuleImportCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigRuleImportCmdKong) Run(appManager *AppManager) error
type ConfigRuleInteractiveCmdKong ¶ added in v0.260531.1
type ConfigRuleInteractiveCmdKong struct{}
ConfigRuleInteractiveCmdKong runs the rule interactive sub-menu.
func (*ConfigRuleInteractiveCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigRuleInteractiveCmdKong) Run(appManager *AppManager) error
type ConfigRuleListCmdKong ¶ added in v0.260531.1
type ConfigRuleListCmdKong struct{}
ConfigRuleListCmdKong lists all rules.
func (*ConfigRuleListCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigRuleListCmdKong) Run(appManager *AppManager) error
type ConfigRuleUpdateCmdKong ¶ added in v0.260531.1
type ConfigRuleUpdateCmdKong struct {
UUID string `kong:"arg,optional,help='Rule UUID'"`
}
ConfigRuleUpdateCmdKong updates a rule's service. Without UUID it drops into interactive selection. Only the service is re-picked; request-model and scenario remain unchanged.
func (*ConfigRuleUpdateCmdKong) Run ¶ added in v0.260531.1
func (c *ConfigRuleUpdateCmdKong) Run(appManager *AppManager) error
type ImportOptions ¶
type ImportOptions struct {
// OnProviderConflict is one of "use", "skip", or "suffix".
OnProviderConflict string
// Quiet suppresses progress output.
Quiet bool
}
ImportOptions controls how provider conflicts are handled during import.
type ImportResult ¶
type ImportResult struct {
ProvidersCreated int
ProvidersUsed int
Providers []ProviderImportInfo
ProviderMap map[string]string
}
ImportResult contains the results of a provider import.
func ImportProviders ¶ added in v0.260813.1
func ImportProviders(cfg *serverconfig.Config, data string, format dataio.Format, opts ImportOptions) (*ImportResult, error)
ImportProviders imports provider data without requiring an AppManager.
type LaunchSource ¶ added in v0.260801.1
type LaunchSource string
LaunchSource is how the running tingly-box process was invoked (binary, npx, npx-bundle) — see internal/shortcut for the source constants. It comes from the global --source flag and is bound into Kong's Run() calls, so any subcommand that needs it (shortcut, start, restart) can read it directly without persisting it anywhere.
type LogCmdKong ¶ added in v0.260514.1
type LogCmdKong struct {
Once bool `kong:"flag,name='once',help='Fetch logs once and exit (default is real-time follow)'"`
Limit int `kong:"flag,name='limit',short='n',default='50',help='Number of recent log entries per fetch (max 1000)'"`
Interval time.Duration `kong:"flag,name='interval',short='i',default='2s',help='Poll interval for real-time follow mode'"`
Level string `kong:"flag,name='level',help='Filter by minimum log level (debug|info|warn|error)'"`
Host string `kong:"flag,name='host',default='localhost',help='Server host'"`
Port int `kong:"flag,name='port',short='p',help='Server port (defaults to configured port)'"`
}
LogCmdKong streams or fetches system logs from the running tingly-box server via its HTTP API (/api/v1/system/logs). Default mode is real-time follow.
func (*LogCmdKong) Run ¶ added in v0.260514.1
func (l *LogCmdKong) Run(appManager *AppManager) error
type MCPBuiltinCmdKong ¶ added in v0.260507.1
type MCPBuiltinCmdKong struct{}
MCPBuiltinCmdKong starts the builtin MCP server. Registered at the top level as "mcp-builtin" to match the legacy command path, which is consumed by internal/mcp/runtime/builtin_registry.go.
func (*MCPBuiltinCmdKong) Run ¶ added in v0.260507.1
func (m *MCPBuiltinCmdKong) Run(appManager *AppManager) error
type OAuthCmdKong ¶ added in v0.260507.1
type OAuthCmdKong struct {
// Positional argument (optional)
Provider string `kong:"arg,optional,help='Provider type (e.g., claude_code, qwen_code, codex)'"`
// Flags
Name string `kong:"flag,name='name',short='n',help='Custom name for the provider'"`
Port int `kong:"flag,name='port',short='p',help='Callback server port'"`
ProxyURL string `kong:"flag,name='proxy',short='x',help='Proxy URL for OAuth requests'"`
}
OAuthCmdKong handles OAuth authentication
func (*OAuthCmdKong) Run ¶ added in v0.260507.1
func (o *OAuthCmdKong) Run(appManager *AppManager) error
type OpenCmdKong ¶ added in v0.260507.1
type OpenCmdKong struct {
// Embed StartCmdKong to share server flags
StartCmdKong
}
OpenCmdKong opens the web UI
func (*OpenCmdKong) Run ¶ added in v0.260507.1
func (o *OpenCmdKong) Run(appManager *AppManager) error
type ProfileCmdKong ¶ added in v0.260611.1
type ProfileCmdKong struct {
List bool `kong:"flag,name='list',help='List all profiles (non-interactive)'"`
Show bool `kong:"flag,name='show',help='Show profile details instead of launching'"`
Port int `` /* 127-byte string literal not displayed */
ProfileID string `kong:"arg,optional,help='Profile name or ID to launch Claude Code with'"`
Args []string `kong:"arg,optional,passthrough='all',help='Additional arguments to pass to Claude Code (e.g., --model opus)'"`
}
ProfileCmdKong is the Kong command for managing and using Claude Code profiles.
Management mode:
tingly-box profile --list → list all profiles (non-interactive) tingly-box profile --show p1 → show profile details
Launch mode:
tingly-box profile → list profiles (interactive on TTY, select to launch) tingly-box profile p1 → launch Claude Code with profile p1 tingly-box profile --port 12580 p1 → launch Claude Code with profile p1 on port 12580 tingly-box profile p1 --model opus → launch with profile p1, passing --model opus to Claude tingly-box profile p1 -p hi → launch with profile p1, using Claude's print mode
Put tingly-box flags before the profile name; after the profile name, flags are treated as Claude Code arguments. A literal '--' still works for compatibility.
func (*ProfileCmdKong) Run ¶ added in v0.260611.1
func (p *ProfileCmdKong) Run(appManager *AppManager) error
type ProviderImportInfo ¶ added in v0.260414.2000
ProviderImportInfo describes one imported, reused, or skipped provider.
type ProviderInfo ¶
ProviderInfo holds information about an OAuth provider
type ProviderOAuthConfig ¶
type ProviderOAuthConfig struct {
Type string
DisplayName string
APIBase string
APIStyle string
OAuthMethod string // "pkce" or "device_code"
NeedsPort1455 bool
}
ProviderOAuthConfig holds OAuth configuration for a provider
type QuickstartCmdKong ¶ added in v0.260507.1
type QuickstartCmdKong struct{}
QuickstartCmdKong is a hidden alias kept for backward compatibility with scripts and muscle memory; it goes straight to the guided wizard rather than the mode menu.
func (*QuickstartCmdKong) Run ¶ added in v0.260604.1
func (q *QuickstartCmdKong) Run(appManager *AppManager) error
type QuotaCmdKong ¶ added in v0.260507.1
type QuotaCmdKong struct {
NoRefresh bool `kong:"flag,name='no-refresh',help='Skip refresh and show cached data only'"`
AllProviders bool `kong:"flag,name='all',short='a',help='Show all providers instead of interactive mode'"`
Provider string `kong:"arg,optional,help='Provider name or UUID (interactive mode if omitted)'"`
}
QuotaCmdKong is the streamlined quota command. Default behavior: interactive mode to select provider.
func (*QuotaCmdKong) Run ¶ added in v0.260625.1
func (q *QuotaCmdKong) Run(appManager *AppManager) error
type RemoteAddCmdKong ¶ added in v0.260507.1
type RemoteAddCmdKong struct{}
RemoteAddCmdKong adds a new bot configuration (interactive).
func (*RemoteAddCmdKong) Run ¶ added in v0.260507.1
func (r *RemoteAddCmdKong) Run(appManager *AppManager) error
type RemoteCmdKong ¶ added in v0.260507.1
type RemoteCmdKong struct {
Default RemoteListCmdKong `kong:"cmd,name='default',default='1',hidden,help='List remote sessions (default)'"`
List RemoteListCmdKong `kong:"cmd,help='List remote sessions'"`
Start RemoteStartCmdKong `kong:"cmd,help='Start a remote session'"`
Config RemoteConfigCmdKong `kong:"cmd,help='Configure remote settings'"`
Add RemoteAddCmdKong `kong:"cmd,help='Add a new bot configuration'"`
Pair RemotePairCmdKong `kong:"cmd,help='Manage TOFU pairing for an imbot'"`
}
RemoteCmdKong manages remote control. The hidden Default subcommand is marked default so `tingly-box remote` (no further args) lists sessions.
type RemoteConfigCmdKong ¶ added in v0.260507.1
type RemoteConfigCmdKong struct {
UUID string `kong:"arg,optional,help='Bot UUID (interactive selection if omitted)'"`
Show bool `kong:"flag,name='show',help='Show current configuration'"`
Provider string `kong:"flag,name='provider',help='Provider UUID for smartguide'"`
Model string `kong:"flag,name='model',help='Model name for smartguide'"`
}
RemoteConfigCmdKong configures remote settings
func (*RemoteConfigCmdKong) Run ¶ added in v0.260507.1
func (r *RemoteConfigCmdKong) Run(appManager *AppManager) error
type RemoteListCmdKong ¶ added in v0.260507.1
type RemoteListCmdKong struct{}
RemoteListCmdKong lists remote sessions
func (*RemoteListCmdKong) Run ¶ added in v0.260507.1
func (r *RemoteListCmdKong) Run(appManager *AppManager) error
type RemotePairCmdKong ¶ added in v0.260507.1
type RemotePairCmdKong struct {
Enable RemotePairEnableCmdKong `kong:"cmd,help='Turn on RequirePairing for a bot'"`
Disable RemotePairDisableCmdKong `kong:"cmd,help='Turn off RequirePairing for a bot'"`
Revoke RemotePairRevokeCmdKong `kong:"cmd,help='Forget the pairing for a specific chat'"`
Status RemotePairStatusCmdKong `kong:"cmd,help='Show pairing status for a bot'"`
}
RemotePairCmdKong manages TOFU pairing for imbots
func (*RemotePairCmdKong) Run ¶ added in v0.260507.1
func (r *RemotePairCmdKong) Run(appManager *AppManager) error
type RemotePairDisableCmdKong ¶ added in v0.260507.1
type RemotePairDisableCmdKong struct {
BotUUID string `kong:"arg,help='Bot UUID'"`
}
RemotePairDisableCmdKong turns off RequirePairing for a bot
func (*RemotePairDisableCmdKong) Run ¶ added in v0.260507.1
func (r *RemotePairDisableCmdKong) Run(appManager *AppManager) error
type RemotePairEnableCmdKong ¶ added in v0.260507.1
type RemotePairEnableCmdKong struct {
BotUUID string `kong:"arg,help='Bot UUID'"`
}
RemotePairEnableCmdKong turns on RequirePairing for a bot
func (*RemotePairEnableCmdKong) Run ¶ added in v0.260507.1
func (r *RemotePairEnableCmdKong) Run(appManager *AppManager) error
type RemotePairRevokeCmdKong ¶ added in v0.260507.1
type RemotePairRevokeCmdKong struct {
BotUUID string `kong:"arg,help='Bot UUID'"`
ChatID string `kong:"arg,help='Chat ID to unpair'"`
}
RemotePairRevokeCmdKong forgets the pairing for a specific chat
func (*RemotePairRevokeCmdKong) Run ¶ added in v0.260507.1
func (r *RemotePairRevokeCmdKong) Run(appManager *AppManager) error
type RemotePairStatusCmdKong ¶ added in v0.260507.1
type RemotePairStatusCmdKong struct {
BotUUID string `kong:"arg,help='Bot UUID'"`
}
RemotePairStatusCmdKong shows pairing status for a bot
func (*RemotePairStatusCmdKong) Run ¶ added in v0.260507.1
func (r *RemotePairStatusCmdKong) Run(appManager *AppManager) error
type RemoteStartCmdKong ¶ added in v0.260507.1
type RemoteStartCmdKong struct {
UUID string `kong:"arg,optional,help='Bot UUID (interactive selection if omitted)'"`
DataPath string `kong:"flag,name='data-path',help='Data directory for bot state'"`
Provider string `kong:"flag,name='provider',help='Provider UUID for smartguide'"`
Model string `kong:"flag,name='model',help='Model name for smartguide'"`
Force bool `kong:"flag,name='force',help='Skip provider validation and force start'"`
}
RemoteStartCmdKong starts a remote session
func (*RemoteStartCmdKong) Run ¶ added in v0.260507.1
func (r *RemoteStartCmdKong) Run(appManager *AppManager) error
type RestartCmdKong ¶ added in v0.260507.1
type RestartCmdKong struct {
StartCmdKong
}
RestartCmdKong is the Kong version of restart command
func (*RestartCmdKong) Run ¶ added in v0.260507.1
func (r *RestartCmdKong) Run(appManager *AppManager, source LaunchSource) error
type ServerManager ¶
ServerManager manages the HTTP server lifecycle
func NewServerManager ¶
func NewServerManager(appConfig *config.AppConfig, opts ...server.ServerOption) *ServerManager
NewServerManager creates a new server manager. opts are server options passed directly to the underlying server.
func (*ServerManager) Cleanup ¶
func (sm *ServerManager) Cleanup()
func (*ServerManager) GetGinEngine ¶
func (sm *ServerManager) GetGinEngine() *gin.Engine
func (*ServerManager) GetTBServer ¶
func (sm *ServerManager) GetTBServer() *server.Server
GetTBServer returns the underlying TinglyBox server instance
func (*ServerManager) IsRunning ¶
func (sm *ServerManager) IsRunning() bool
IsRunning checks if the server is currently running
func (*ServerManager) ServeHTTP ¶
func (sm *ServerManager) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (*ServerManager) Setup ¶
func (sm *ServerManager) Setup(port int) error
Setup creates and configures the server without starting it
func (*ServerManager) Start ¶
func (sm *ServerManager) Start() error
Start starts the server (requires Setup to be called first)
type ShortcutCmdKong ¶ added in v0.260801.1
type ShortcutCmdKong struct {
Name string `kong:"flag,name='name',default='Tingly Box',help='Shortcut name'"`
NoDesktop bool `kong:"flag,name='no-desktop',help='Do not create a desktop shortcut'"`
NoMenu bool `kong:"flag,name='no-menu',help='Do not create a Start Menu / application menu entry'"`
}
ShortcutCmdKong creates a desktop / start-menu shortcut that launches Tingly Box (restart in daemon mode and open the web UI) with a double-click, so users don't have to remember and type the startup command — especially on Windows.
func (*ShortcutCmdKong) Run ¶ added in v0.260801.1
func (s *ShortcutCmdKong) Run(source LaunchSource) error
type StartCmdKong ¶ added in v0.260507.1
type StartCmdKong struct {
Port int `kong:"flag,name='port',short='p',help='Server port'"`
Host string `kong:"flag,name='host',help='Server host'"`
EnableUI bool `kong:"flag,name='ui',short='u',default='true',help='Enable web UI'"`
EnableDebug bool `kong:"flag,name='debug',help='Enable debug mode'"`
EnableOpenBrowser bool `kong:"flag,name='browser',default='true',help='Auto-open browser'"`
EnableStyleTransform bool `kong:"flag,name='adapter',default='true',help='Enable API style transform'"`
Daemon bool `kong:"flag,name='daemon',help='Run as daemon'"`
LogFile string `kong:"flag,name='log-file',help='Log file path'"`
PromptRestart bool `kong:"flag,name='prompt-restart',help='Prompt to restart if running'"`
RecordMode string `kong:"flag,name='record-mode',help='Record mode'"`
RecordDir string `kong:"flag,name='record-dir',help='Record directory'"`
EnableShortcut bool `kong:"flag,name='shortcut',help='Also create/refresh a desktop shortcut for next time'"`
}
StartCmdKong is the Kong version of start command
func (*StartCmdKong) Run ¶ added in v0.260507.1
func (s *StartCmdKong) Run(appManager *AppManager, source LaunchSource) error
type StatusCmdKong ¶ added in v0.260507.1
type StatusCmdKong struct{}
StatusCmdKong is the Kong version of status command
func (*StatusCmdKong) Run ¶ added in v0.260507.1
func (s *StatusCmdKong) Run(appManager *AppManager) error
type StopCmdKong ¶ added in v0.260507.1
type StopCmdKong struct{}
StopCmdKong is the Kong version of stop command
func (*StopCmdKong) Run ¶ added in v0.260507.1
func (s *StopCmdKong) Run(appManager *AppManager) error
type SwaggerCmdKong ¶ added in v0.260507.1
type SwaggerCmdKong struct {
Output string `kong:"flag,name='output',short='o',help='Output file path'"`
Stdout bool `kong:"flag,name='stdout',help='Write to stdout'"`
}
SwaggerCmdKong generates OpenAPI schema
func (*SwaggerCmdKong) Run ¶ added in v0.260507.1
func (s *SwaggerCmdKong) Run(appManager *AppManager) error
type TUICmdKong ¶ added in v0.260507.1
type TUICmdKong struct{}
TUICmdKong runs the interactive TUI. On entry users pick a mode (QuickStart, Provider, Rule, Agent) and manage that area of config freely. Backward-compatible: `tingly-box quickstart` still drops straight into the guided wizard via QuickstartCmdKong.
func (*TUICmdKong) Run ¶ added in v0.260507.1
func (t *TUICmdKong) Run(appManager *AppManager) error
type TokenCmdKong ¶ added in v0.260514.1
type TokenCmdKong struct {
List TokenListCmdKong `kong:"cmd,name='list',default='1',hidden,help='List tingly-box tokens (default)'"`
View TokenViewCmdKong `kong:"cmd,help='View a tingly-box token (auth or model)'"`
Refresh TokenRefreshCmdKong `kong:"cmd,help='Refresh (rotate) a tingly-box token (auth or model)'"`
}
TokenCmdKong manages tingly-box's own auth and model tokens. Upstream provider credentials are not handled here — those live under the `provider` and `oauth` commands.
type TokenKind ¶ added in v0.260514.1
type TokenKind string
TokenKind identifies which tingly-box token a sub-command operates on. "auth" is the UserToken (control panel + control API). "model" is the ModelToken (used by AI clients hitting the box's OpenAI/Anthropic endpoints). Both are managed independently from upstream provider creds.
type TokenListCmdKong ¶ added in v0.260514.1
type TokenListCmdKong struct{}
TokenListCmdKong prints both tokens with masked previews.
func (*TokenListCmdKong) Run ¶ added in v0.260514.1
func (t *TokenListCmdKong) Run(appManager *AppManager) error
type TokenRefreshCmdKong ¶ added in v0.260514.1
type TokenRefreshCmdKong struct {
Kind string `kong:"arg,optional,help='Which token to refresh: auth or model'"`
Reveal bool `kong:"flag,name='reveal',short='r',help='Print the full rotated token after success'"`
Yes bool `kong:"flag,name='yes',short='y',help='Skip the rotation confirmation prompt'"`
}
TokenRefreshCmdKong rotates a tingly-box token (auth or model) and persists the new value. Existing clients using the old token will need to be updated.
func (*TokenRefreshCmdKong) Run ¶ added in v0.260514.1
func (t *TokenRefreshCmdKong) Run(appManager *AppManager) error
type TokenViewCmdKong ¶ added in v0.260514.1
type TokenViewCmdKong struct {
Kind string `kong:"arg,optional,help='Which token to view: auth or model'"`
Reveal bool `kong:"flag,name='reveal',short='r',help='Print the full token instead of a masked preview'"`
}
TokenViewCmdKong shows a single tingly-box token. When kind is omitted, the user is prompted interactively.
func (*TokenViewCmdKong) Run ¶ added in v0.260514.1
func (t *TokenViewCmdKong) Run(appManager *AppManager) error
type VersionCmdKong ¶ added in v0.260507.1
type VersionCmdKong struct{}
VersionCmdKong is the Kong version of version command
func (*VersionCmdKong) Run ¶ added in v0.260507.1
func (v *VersionCmdKong) Run(appManager *AppManager) error
Source Files
¶
- agent_command.go
- app_manager.go
- cc_command.go
- config.go
- config_provider.go
- config_rule.go
- exec_unix.go
- export.go
- import.go
- log.go
- oauth.go
- profile_command.go
- provider.go
- provider_add.go
- provider_transfer.go
- qr_display.go
- quickstart.go
- quota.go
- remote.go
- remote_add.go
- remote_notify.go
- remote_pair.go
- server.go
- server_manager.go
- server_unix.go
- shortcut.go
- token.go