cmd

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 31, 2026 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckAllowlist

func CheckAllowlist(rctx *RunContext, command string) error

CheckAllowlist verifies a command is permitted by the allowlist.

func EnsureAuth

func EnsureAuth(rctx *RunContext, services []string) error

EnsureAuth loads credentials and creates an API client.

func Execute

func Execute() int

Execute is the main entry point.

func Preflight added in v0.9.1

func Preflight(rctx *RunContext, command string, services []string) (done bool, err error)

Preflight checks allowlist + auth + dry-run in one call. If dry-run is active, it prints a standard response and returns a sentinel error that the caller should return directly (not an actual error — the response is already printed).

Usage in Run():

if done, err := Preflight(rctx, "gmail.list", []string{"gmail"}); done {
    return err
}

Types

type AgentCmd

type AgentCmd struct {
	ExitCodes AgentExitCodesCmd `cmd:"exit-codes" help:"Print stable exit code reference"`
}

AgentCmd provides helpers for LLM agent integration.

type AgentExitCodesCmd

type AgentExitCodesCmd struct{}

AgentExitCodesCmd prints all exit codes for agent automation.

func (*AgentExitCodesCmd) Run

func (c *AgentExitCodesCmd) Run(rctx *RunContext) error

type AnalyticsAudiencesCmd added in v0.9.1

type AnalyticsAudiencesCmd struct {
	Property string `help:"GA4 property ID (e.g. properties/123456)" short:"p"`
}

AnalyticsAudiencesCmd lists audiences for a specified GA4 property.

func (*AnalyticsAudiencesCmd) Run added in v0.9.1

func (c *AnalyticsAudiencesCmd) Run(rctx *RunContext) error

type AnalyticsCmd added in v0.9.1

type AnalyticsCmd struct {
	Report     AnalyticsReportCmd     `cmd:"" help:"Run a GA4 report query"`
	Realtime   AnalyticsRealtimeCmd   `cmd:"" help:"Get real-time analytics data"`
	Properties AnalyticsPropertiesCmd `cmd:"" help:"List GA4 properties"`
	Audiences  AnalyticsAudiencesCmd  `cmd:"" help:"List audiences for a property"`
}

AnalyticsCmd groups Google Analytics 4 operations.

type AnalyticsPropertiesCmd added in v0.9.1

type AnalyticsPropertiesCmd struct{}

AnalyticsPropertiesCmd lists all accessible GA4 properties.

func (*AnalyticsPropertiesCmd) Run added in v0.9.1

func (c *AnalyticsPropertiesCmd) Run(rctx *RunContext) error

type AnalyticsRealtimeCmd added in v0.9.1

type AnalyticsRealtimeCmd struct {
	Property   string   `help:"GA4 property ID (e.g. properties/123456)" short:"p"`
	Metrics    []string `help:"Metrics to query (e.g. activeUsers)" required:""`
	Dimensions []string `help:"Dimensions to group by (e.g. country)"`
	Limit      int64    `help:"Max rows to return" default:"100" short:"n"`
}

AnalyticsRealtimeCmd retrieves real-time GA4 data.

func (*AnalyticsRealtimeCmd) Run added in v0.9.1

func (c *AnalyticsRealtimeCmd) Run(rctx *RunContext) error

type AnalyticsReportCmd added in v0.9.1

type AnalyticsReportCmd struct {
	Property   string   `help:"GA4 property ID (e.g. properties/123456)" short:"p"`
	Metrics    []string `help:"Metrics to query (e.g. sessions,activeUsers)" required:""`
	Dimensions []string `help:"Dimensions to group by (e.g. date,country)"`
	StartDate  string   `help:"Start date (YYYY-MM-DD or relative: today, yesterday, 7daysAgo)" name:"start-date" default:"7daysAgo"`
	EndDate    string   `help:"End date (YYYY-MM-DD or relative)" name:"end-date" default:"today"`
	Limit      int64    `help:"Max rows to return" default:"100" short:"n"`
}

AnalyticsReportCmd runs a standard GA4 report.

func (*AnalyticsReportCmd) Run added in v0.9.1

func (c *AnalyticsReportCmd) Run(rctx *RunContext) error

type AuthCmd

type AuthCmd struct {
	Login  AuthLoginCmd  `cmd:"" help:"Sign in to Google account"`
	Logout AuthLogoutCmd `cmd:"" help:"Remove saved credentials"`
	Status AuthStatusCmd `cmd:"" help:"Check authentication status"`
	Export AuthExportCmd `cmd:"" help:"Export token as JSON to stdout"`
	Import AuthImportCmd `cmd:"" help:"Import token from JSON"`
}

AuthCmd manages authentication.

type AuthExportCmd added in v0.25.0

type AuthExportCmd struct{}

AuthExportCmd exports the stored OAuth2 token as JSON to stdout.

func (*AuthExportCmd) Run added in v0.25.0

func (c *AuthExportCmd) Run(rctx *RunContext) error

type AuthImportCmd added in v0.25.0

type AuthImportCmd struct {
	JSON string `help:"Token JSON string" name:"json"`
}

AuthImportCmd imports a token from JSON.

func (*AuthImportCmd) Run added in v0.25.0

func (c *AuthImportCmd) Run(rctx *RunContext) error

type AuthLoginCmd

type AuthLoginCmd struct {
	CredentialsFile string   `help:"Path to OAuth credentials JSON" name:"credentials" short:"c"`
	Manual          bool     `help:"Use manual (headless) auth flow" name:"manual"`
	Services        []string `help:"Services to authorize" default:"gmail,calendar,drive,docs,sheets,tasks,people,chat,analytics,searchconsole"`
}

AuthLoginCmd performs OAuth2 login.

func (*AuthLoginCmd) Run

func (c *AuthLoginCmd) Run(rctx *RunContext) error

type AuthLogoutCmd

type AuthLogoutCmd struct{}

AuthLogoutCmd removes saved token.

func (*AuthLogoutCmd) Run

func (c *AuthLogoutCmd) Run(rctx *RunContext) error

type AuthStatusCmd

type AuthStatusCmd struct{}

AuthStatusCmd checks auth status.

func (*AuthStatusCmd) Run

func (c *AuthStatusCmd) Run(rctx *RunContext) error

type BQDatasetsCmd added in v0.13.0

type BQDatasetsCmd struct {
	Project string `help:"GCP project ID" short:"p"`
}

BQDatasetsCmd lists datasets in a project.

func (*BQDatasetsCmd) Run added in v0.13.0

func (c *BQDatasetsCmd) Run(rctx *RunContext) error

type BQDescribeCmd added in v0.13.0

type BQDescribeCmd struct {
	Table   string `arg:"" help:"Table ID to describe"`
	Project string `help:"GCP project ID" short:"p"`
	Dataset string `help:"Dataset ID" required:"" short:"d"`
}

BQDescribeCmd describes a table's schema.

func (*BQDescribeCmd) Run added in v0.13.0

func (c *BQDescribeCmd) Run(rctx *RunContext) error

type BQQueryCmd added in v0.13.0

type BQQueryCmd struct {
	SQL     string `arg:"" help:"SQL query to execute"`
	Project string `help:"GCP project ID" short:"p"`
	Limit   int    `help:"Max rows to return" default:"100" short:"n"`
}

BQQueryCmd runs a SQL query.

func (*BQQueryCmd) Run added in v0.13.0

func (c *BQQueryCmd) Run(rctx *RunContext) error

type BQTablesCmd added in v0.13.0

type BQTablesCmd struct {
	Project string `help:"GCP project ID" short:"p"`
	Dataset string `help:"Dataset ID" required:"" short:"d"`
}

BQTablesCmd lists tables in a dataset.

func (*BQTablesCmd) Run added in v0.13.0

func (c *BQTablesCmd) Run(rctx *RunContext) error

type BigQueryCmd added in v0.13.0

type BigQueryCmd struct {
	Query    BQQueryCmd    `cmd:"" help:"Run a SQL query"`
	Datasets BQDatasetsCmd `cmd:"" help:"List datasets"`
	Tables   BQTablesCmd   `cmd:"" help:"List tables"`
	Describe BQDescribeCmd `cmd:"" help:"Describe a table"`
}

BigQueryCmd groups BigQuery operations.

type BugIntakeCmd added in v0.9.1

type BugIntakeCmd struct {
	BugID   string `help:"Bug ID or keyword to search" name:"bug-id"`
	After   string `help:"Date filter (e.g. 2026/03/15)" name:"after"`
	Execute bool   `help:"Execute actions" name:"execute"`
}

BugIntakeCmd implements gwx workflow bug-intake.

func (*BugIntakeCmd) Run added in v0.9.1

func (c *BugIntakeCmd) Run(rctx *RunContext) error

type CLI

type CLI struct {
	// Global flags
	Format  string `help:"Output format: json, plain, table" short:"f" default:"json" enum:"json,plain,table"`
	Account string `help:"Account email to use" short:"a" default:"default"`
	Fields  string `help:"Comma-separated fields to include in output (e.g. id,name,subject)" name:"fields"`
	DryRun  bool   `help:"Validate without executing" name:"dry-run"`
	NoInput bool   `help:"Disable interactive prompts" name:"no-input"`
	NoCache bool   `help:"Disable caching" name:"no-cache" default:"false"`

	// Shortcuts (desire paths)
	Send    GmailSendCmd     `cmd:"" help:"Send an email (shortcut for gmail send)" hidden:""`
	Ls      DriveListCmd     `cmd:"" help:"List Drive files (shortcut for drive list)" hidden:""`
	Search  GmailSearchCmd   `cmd:"" help:"Search Gmail (shortcut for gmail search)" hidden:""`
	Find    UnifiedSearchCmd `cmd:"" help:"Search across Gmail + Drive + Contacts"`
	Context ContextCmd       `cmd:"" help:"Gather all context for a topic across services"`

	// Service commands
	Auth          AuthCmd          `cmd:"" help:"Authentication management"`
	Onboard       OnboardCmd       `cmd:"" help:"Interactive setup wizard"`
	Gmail         GmailCmd         `cmd:"" help:"Gmail operations"`
	Calendar      CalendarCmd      `cmd:"" help:"Calendar operations"`
	Drive         DriveCmd         `cmd:"" help:"Google Drive operations"`
	Docs          DocsCmd          `cmd:"" help:"Google Docs operations"`
	Sheets        SheetsCmd        `cmd:"" help:"Google Sheets operations"`
	Tasks         TasksCmd         `cmd:"" help:"Google Tasks operations"`
	Contacts      ContactsCmd      `cmd:"" help:"Contacts operations"`
	Chat          ChatCmd          `cmd:"" help:"Google Chat operations"`
	Analytics     AnalyticsCmd     `cmd:"" help:"Google Analytics 4 operations"`
	SearchConsole SearchConsoleCmd `cmd:"searchconsole" help:"Google Search Console operations"`
	Slides        SlidesCmd        `cmd:"" help:"Google Slides operations"`
	Forms         FormsCmd         `cmd:"" help:"Google Forms operations"`
	BigQuery      BigQueryCmd      `cmd:"bigquery" help:"BigQuery operations"`
	GitHub        GitHubCmd        `cmd:"" help:"GitHub operations"`
	Slack         SlackCmd         `cmd:"" help:"Slack operations"`
	Notion        NotionCmd        `cmd:"" help:"Notion operations"`
	Obsidian      ObsidianCmd      `cmd:"" help:"Obsidian vault operations"`
	Config        ConfigCmd        `cmd:"" help:"Configuration management"`
	// Workflow commands
	Standup     StandupCmd     `cmd:"" help:"Daily standup report (aggregate Git + Gmail + Calendar + Tasks)"`
	MeetingPrep MeetingPrepCmd `cmd:"meeting-prep" help:"Prepare context for an upcoming meeting"`
	Workflow    WorkflowCmd    `cmd:"" help:"Workflow commands (test-matrix, sprint-board, etc.)"`

	Pipe       PipeCmd       `cmd:"" help:"Chain gwx commands via JSON pipeline"`
	Agent      AgentCmd      `cmd:"" help:"Agent automation helpers"`
	Skill      SkillCmd      `cmd:"" help:"Skill DSL operations"`
	Schema     SchemaCmd     `cmd:"" help:"Print full command schema (for agent introspection)"`
	MCPServer  MCPServerCmd  `cmd:"mcp-server" help:"Start MCP server (stdio) for Claude integration"`
	Completion CompletionCmd `cmd:"" help:"Generate shell completion scripts"`
	Doctor     DoctorCmd     `cmd:"" help:"Diagnose configuration and connectivity"`
	Version    VersionCmd    `cmd:"" help:"Print version"`
	Update     UpdateCmd     `cmd:"" help:"Check for and install updates"`
}

CLI is the root command struct for gwx.

type CalendarAgendaCmd

type CalendarAgendaCmd struct {
	Days int `help:"Number of days to show (e.g. --days 7)" default:"1" short:"d"`
}

CalendarAgendaCmd shows today's (or N days) events.

func (*CalendarAgendaCmd) Run

func (c *CalendarAgendaCmd) Run(rctx *RunContext) error

type CalendarCmd

type CalendarCmd struct {
	Agenda   CalendarAgendaCmd   `cmd:"" help:"Show upcoming events"`
	List     CalendarListCmd     `cmd:"" help:"List events in a date range"`
	Create   CalendarCreateCmd   `cmd:"" help:"Create an event"`
	Update   CalendarUpdateCmd   `cmd:"" help:"Update an event"`
	Delete   CalendarDeleteCmd   `cmd:"" help:"Delete an event"`
	FindSlot CalendarFindSlotCmd `cmd:"find-slot" help:"Find free time slots"`
}

CalendarCmd groups Calendar operations.

type CalendarCreateCmd

type CalendarCreateCmd struct {
	Title       string   `help:"Event title" required:""`
	Start       string   `help:"Start time (RFC3339 or YYYY-MM-DD)" required:""`
	End         string   `help:"End time (RFC3339 or YYYY-MM-DD)" required:""`
	Location    string   `help:"Location"`
	Description string   `help:"Description"`
	Attendees   []string `help:"Attendee emails"`
	Timezone    string   `help:"Timezone (e.g. Asia/Taipei)" name:"tz"`
}

CalendarCreateCmd creates an event.

func (*CalendarCreateCmd) Run

func (c *CalendarCreateCmd) Run(rctx *RunContext) error

type CalendarDeleteCmd

type CalendarDeleteCmd struct {
	EventID string `arg:"" help:"Event ID to delete"`
}

CalendarDeleteCmd deletes an event.

func (*CalendarDeleteCmd) Run

func (c *CalendarDeleteCmd) Run(rctx *RunContext) error

type CalendarFindSlotCmd

type CalendarFindSlotCmd struct {
	Attendees []string `help:"Attendee emails to check" required:""`
	Duration  string   `help:"Meeting duration (e.g. 30m, 1h)" default:"30m" short:"d"`
	Days      int      `help:"Days ahead to search" default:"3"`
}

CalendarFindSlotCmd finds free time slots.

func (*CalendarFindSlotCmd) Run

func (c *CalendarFindSlotCmd) Run(rctx *RunContext) error

type CalendarListCmd

type CalendarListCmd struct {
	From  string `help:"Start date (RFC3339 or YYYY-MM-DD)" required:""`
	To    string `help:"End date (RFC3339 or YYYY-MM-DD)" required:""`
	Limit int64  `help:"Max results" default:"25" short:"n"`
}

CalendarListCmd lists events in a date range.

func (*CalendarListCmd) Run

func (c *CalendarListCmd) Run(rctx *RunContext) error

type CalendarUpdateCmd

type CalendarUpdateCmd struct {
	EventID     string   `arg:"" help:"Event ID to update"`
	Title       string   `help:"New title"`
	Start       string   `help:"New start time"`
	End         string   `help:"New end time"`
	Location    string   `help:"New location"`
	Description string   `help:"New description"`
	Attendees   []string `help:"New attendee list"`
	Timezone    string   `help:"Timezone" name:"tz"`
}

CalendarUpdateCmd updates an event.

func (*CalendarUpdateCmd) Run

func (c *CalendarUpdateCmd) Run(rctx *RunContext) error

type ChatCmd

type ChatCmd struct {
	Spaces   ChatSpacesCmd   `cmd:"" help:"List Chat spaces"`
	Send     ChatSendCmd     `cmd:"" help:"Send a message to a space"`
	Messages ChatMessagesCmd `cmd:"" help:"List messages in a space"`
}

ChatCmd groups Chat operations.

type ChatMessagesCmd

type ChatMessagesCmd struct {
	Space string `arg:"" help:"Space name (e.g. spaces/AAAA)"`
	Limit int    `help:"Max messages" default:"20" short:"n"`
}

ChatMessagesCmd lists messages.

func (*ChatMessagesCmd) Run

func (c *ChatMessagesCmd) Run(rctx *RunContext) error

type ChatSendCmd

type ChatSendCmd struct {
	Space string `arg:"" help:"Space name (e.g. spaces/AAAA)"`
	Text  string `help:"Message text" required:"" short:"t"`
}

ChatSendCmd sends a message.

func (*ChatSendCmd) Run

func (c *ChatSendCmd) Run(rctx *RunContext) error

type ChatSpacesCmd

type ChatSpacesCmd struct {
	Limit int `help:"Max spaces to return" default:"50" short:"n"`
}

ChatSpacesCmd lists spaces.

func (*ChatSpacesCmd) Run

func (c *ChatSpacesCmd) Run(rctx *RunContext) error

type CompletionBashCmd added in v0.15.0

type CompletionBashCmd struct{}

CompletionBashCmd generates bash completion.

func (*CompletionBashCmd) Run added in v0.15.0

func (c *CompletionBashCmd) Run(rctx *RunContext) error

type CompletionCmd added in v0.15.0

type CompletionCmd struct {
	Bash CompletionBashCmd `cmd:"" help:"Generate bash completion script"`
	Zsh  CompletionZshCmd  `cmd:"" help:"Generate zsh completion script"`
	Fish CompletionFishCmd `cmd:"" help:"Generate fish completion script"`
}

CompletionCmd generates shell completion scripts.

type CompletionFishCmd added in v0.15.0

type CompletionFishCmd struct{}

CompletionFishCmd generates fish completion.

func (*CompletionFishCmd) Run added in v0.15.0

func (c *CompletionFishCmd) Run(rctx *RunContext) error

type CompletionZshCmd added in v0.15.0

type CompletionZshCmd struct{}

CompletionZshCmd generates zsh completion.

func (*CompletionZshCmd) Run added in v0.15.0

func (c *CompletionZshCmd) Run(rctx *RunContext) error

type ConfigCmd added in v0.9.1

type ConfigCmd struct {
	Set  ConfigSetCmd  `cmd:"" help:"Set a configuration value"`
	Get  ConfigGetCmd  `cmd:"" help:"Get a configuration value"`
	List ConfigListCmd `cmd:"" help:"List all configuration values"`
}

ConfigCmd groups configuration management operations.

type ConfigGetCmd added in v0.9.1

type ConfigGetCmd struct {
	Key string `arg:"" help:"Configuration key to retrieve"`
}

ConfigGetCmd retrieves a single configuration key.

func (*ConfigGetCmd) Run added in v0.9.1

func (c *ConfigGetCmd) Run(rctx *RunContext) error

type ConfigListCmd added in v0.9.1

type ConfigListCmd struct{}

ConfigListCmd lists all configuration key-value pairs.

func (*ConfigListCmd) Run added in v0.9.1

func (c *ConfigListCmd) Run(rctx *RunContext) error

type ConfigSetCmd added in v0.9.1

type ConfigSetCmd struct {
	Key   string `arg:"" help:"Configuration key (e.g. analytics.default-property)"`
	Value string `arg:"" help:"Configuration value"`
}

ConfigSetCmd sets a single configuration key.

func (*ConfigSetCmd) Run added in v0.9.1

func (c *ConfigSetCmd) Run(rctx *RunContext) error

type ContactsCmd

type ContactsCmd struct {
	List   ContactsListCmd   `cmd:"" help:"List contacts"`
	Search ContactsSearchCmd `cmd:"" help:"Search contacts"`
	Get    ContactsGetCmd    `cmd:"" help:"Get a contact"`
}

ContactsCmd groups Contacts operations.

type ContactsGetCmd

type ContactsGetCmd struct {
	ResourceName string `arg:"" help:"Contact resource name (e.g. people/c123)"`
}

ContactsGetCmd gets a contact.

func (*ContactsGetCmd) Run

func (c *ContactsGetCmd) Run(rctx *RunContext) error

type ContactsListCmd

type ContactsListCmd struct {
	Limit int `help:"Max contacts to return" default:"50" short:"n"`
}

ContactsListCmd lists contacts.

func (*ContactsListCmd) Run

func (c *ContactsListCmd) Run(rctx *RunContext) error

type ContactsSearchCmd

type ContactsSearchCmd struct {
	Query string `arg:"" help:"Search query (name or email)"`
	Limit int    `help:"Max results" default:"20" short:"n"`
}

ContactsSearchCmd searches contacts.

func (*ContactsSearchCmd) Run

func (c *ContactsSearchCmd) Run(rctx *RunContext) error

type ContextBoostCmd added in v0.9.1

type ContextBoostCmd struct {
	Topic string `arg:"" help:"Topic to gather context for"`
	Days  int    `help:"Days of history" default:"14" short:"d"`
	Limit int    `help:"Max results per service" default:"10" short:"n"`
}

ContextBoostCmd implements gwx workflow context-boost.

func (*ContextBoostCmd) Run added in v0.9.1

func (c *ContextBoostCmd) Run(rctx *RunContext) error

type ContextCmd added in v0.3.0

type ContextCmd struct {
	Topic string `arg:"" help:"Topic or keyword to gather context for"`
	Days  int    `help:"How many days of calendar events to include" default:"7" short:"d"`
	Limit int    `help:"Max results per service" default:"5" short:"n"`
}

ContextCmd gathers all context related to a topic across Gmail, Drive, and Calendar.

func (*ContextCmd) Run added in v0.3.0

func (c *ContextCmd) Run(rctx *RunContext) error

type ContextEmails added in v0.3.0

type ContextEmails struct {
	Count    int                  `json:"count"`
	Messages []api.MessageSummary `json:"messages"`
	Error    string               `json:"error,omitempty"`
}

type ContextEvents added in v0.3.0

type ContextEvents struct {
	Count  int                `json:"count"`
	Events []api.EventSummary `json:"events"`
	Error  string             `json:"error,omitempty"`
}

type ContextFiles added in v0.3.0

type ContextFiles struct {
	Count int               `json:"count"`
	Files []api.FileSummary `json:"files"`
	Error string            `json:"error,omitempty"`
}

type ContextResult added in v0.3.0

type ContextResult struct {
	Topic   string         `json:"topic"`
	Emails  *ContextEmails `json:"emails"`
	Files   *ContextFiles  `json:"files"`
	Events  *ContextEvents `json:"events,omitempty"`
	Summary string         `json:"summary"`
}

ContextResult holds aggregated context from multiple services.

type DocsAppendCmd

type DocsAppendCmd struct {
	DocID string `arg:"" help:"Document ID"`
	Text  string `help:"Text to append" required:"" short:"t"`
}

DocsAppendCmd appends text to a document.

func (*DocsAppendCmd) Run

func (c *DocsAppendCmd) Run(rctx *RunContext) error

type DocsCmd

type DocsCmd struct {
	Get       DocsGetCmd       `cmd:"" help:"Get document content"`
	Create    DocsCreateCmd    `cmd:"" help:"Create a document"`
	Append    DocsAppendCmd    `cmd:"" help:"Append text to a document"`
	Search    DocsSearchCmd    `cmd:"" help:"Search text in a document"`
	Replace   DocsReplaceCmd   `cmd:"" help:"Find and replace text"`
	Template  DocsTemplateCmd  `cmd:"" help:"Create doc from template with {{var}} replacement"`
	FromSheet DocsFromSheetCmd `cmd:"from-sheet" help:"Create doc from spreadsheet data"`
	Export    DocsExportCmd    `cmd:"" help:"Export document to file"`
}

DocsCmd groups Docs operations.

type DocsCreateCmd

type DocsCreateCmd struct {
	Title string `help:"Document title" required:""`
	Body  string `help:"Initial body text" short:"b"`
}

DocsCreateCmd creates a document.

func (*DocsCreateCmd) Run

func (c *DocsCreateCmd) Run(rctx *RunContext) error

type DocsExportCmd

type DocsExportCmd struct {
	DocID     string `arg:"" help:"Document ID"`
	ExportFmt string `help:"Export format: pdf, docx, txt, html" default:"pdf" enum:"pdf,docx,txt,html" name:"export-format"`
	Output    string `help:"Output file path" short:"o"`
}

DocsExportCmd exports a document. NOTE: services = ["docs", "drive"] — export writes to Drive, requires both scopes.

func (*DocsExportCmd) Run

func (c *DocsExportCmd) Run(rctx *RunContext) error

type DocsFromSheetCmd added in v0.4.0

type DocsFromSheetCmd struct {
	SpreadsheetID string `arg:"" help:"Source spreadsheet ID"`
	Range         string `arg:"" help:"Range to read (e.g. Sheet1!A1:D10)"`
	Title         string `help:"Document title" required:""`
}

DocsFromSheetCmd creates a doc from spreadsheet data. NOTE: services = ["docs", "sheets"] — reads Sheets then writes Docs, requires both scopes.

func (*DocsFromSheetCmd) Run added in v0.4.0

func (c *DocsFromSheetCmd) Run(rctx *RunContext) error

type DocsGetCmd

type DocsGetCmd struct {
	DocID string `arg:"" help:"Document ID"`
}

DocsGetCmd retrieves a document.

func (*DocsGetCmd) Run

func (c *DocsGetCmd) Run(rctx *RunContext) error

type DocsReplaceCmd added in v0.4.0

type DocsReplaceCmd struct {
	DocID   string `arg:"" help:"Document ID"`
	Find    string `help:"Text to find" required:""`
	Replace string `help:"Replacement text" required:"" name:"with"`
}

DocsReplaceCmd finds and replaces text.

func (*DocsReplaceCmd) Run added in v0.4.0

func (c *DocsReplaceCmd) Run(rctx *RunContext) error

type DocsSearchCmd added in v0.4.0

type DocsSearchCmd struct {
	DocID string `arg:"" help:"Document ID"`
	Query string `help:"Text to search for" required:"" short:"q"`
}

DocsSearchCmd searches text within a document.

func (*DocsSearchCmd) Run added in v0.4.0

func (c *DocsSearchCmd) Run(rctx *RunContext) error

type DocsTemplateCmd added in v0.7.0

type DocsTemplateCmd struct {
	TemplateID string `arg:"" help:"Template document ID"`
	Vars       string `help:"JSON object of variables: {\"name\":\"Alice\",\"date\":\"2026-03-17\"}" required:"" short:"v"`
	Title      string `help:"New document title (default: template title + ' (from template)')"`
}

DocsTemplateCmd creates a doc from a template with {{var}} replacement. NOTE: manual Preflight — json.Unmarshal(vars) must happen before DryRun so that invalid --vars JSON is caught even in dry-run mode. Preflight would short-circuit at DryRun before the validation runs, causing silent bad input to pass.

func (*DocsTemplateCmd) Run added in v0.7.0

func (c *DocsTemplateCmd) Run(rctx *RunContext) error

type DoctorCmd added in v0.15.0

type DoctorCmd struct{}

DoctorCmd runs a health check on the gwx installation.

func (*DoctorCmd) Run added in v0.15.0

func (c *DoctorCmd) Run(rctx *RunContext) error

type DriveCmd

type DriveCmd struct {
	List     DriveListCmd     `cmd:"" help:"List files"`
	Search   DriveSearchCmd   `cmd:"" help:"Search files"`
	Upload   DriveUploadCmd   `cmd:"" help:"Upload a file"`
	Download DriveDownloadCmd `cmd:"" help:"Download a file"`
	Share    DriveShareCmd    `cmd:"" help:"Share a file"`
	Mkdir    DriveMkdirCmd    `cmd:"" help:"Create a folder"`
}

DriveCmd groups Drive operations.

type DriveDownloadCmd

type DriveDownloadCmd struct {
	FileID string `arg:"" help:"File ID to download"`
	Output string `help:"Output path" short:"o"`
}

DriveDownloadCmd downloads a file.

func (*DriveDownloadCmd) Run

func (c *DriveDownloadCmd) Run(rctx *RunContext) error

type DriveListCmd

type DriveListCmd struct {
	Folder string `help:"Folder ID to list" short:"d"`
	Limit  int64  `help:"Max files to return" default:"20" short:"n"`
}

DriveListCmd lists files.

func (*DriveListCmd) Run

func (c *DriveListCmd) Run(rctx *RunContext) error

type DriveMkdirCmd

type DriveMkdirCmd struct {
	Name   string `arg:"" help:"Folder name"`
	Parent string `help:"Parent folder ID" short:"p"`
}

DriveMkdirCmd creates a folder.

func (*DriveMkdirCmd) Run

func (c *DriveMkdirCmd) Run(rctx *RunContext) error

type DriveSearchCmd

type DriveSearchCmd struct {
	Query string `arg:"" help:"Drive search query (e.g. name contains 'report')"`
	Limit int64  `help:"Max results" default:"20" short:"n"`
}

DriveSearchCmd searches files.

func (*DriveSearchCmd) Run

func (c *DriveSearchCmd) Run(rctx *RunContext) error

type DriveShareCmd

type DriveShareCmd struct {
	FileID string `arg:"" help:"File ID to share"`
	Email  string `help:"Email to share with" required:""`
	Role   string `help:"Permission role: reader, writer, commenter" default:"reader" enum:"reader,writer,commenter"`
}

DriveShareCmd shares a file.

func (*DriveShareCmd) Run

func (c *DriveShareCmd) Run(rctx *RunContext) error

type DriveUploadCmd

type DriveUploadCmd struct {
	File   string `arg:"" help:"Local file path to upload"`
	Folder string `help:"Destination folder ID" short:"d"`
	Name   string `help:"Override file name"`
}

DriveUploadCmd uploads a file.

func (*DriveUploadCmd) Run

func (c *DriveUploadCmd) Run(rctx *RunContext) error

type EmailFromDocCmd added in v0.9.1

type EmailFromDocCmd struct {
	DocID      string `help:"Google Doc ID" name:"doc-id" required:""`
	Recipients string `help:"Comma-separated recipient emails" name:"recipients"`
	Subject    string `help:"Email subject override" name:"subject"`
	Execute    bool   `help:"Execute actions" name:"execute"`
}

EmailFromDocCmd implements gwx workflow email-from-doc.

func (*EmailFromDocCmd) Run added in v0.9.1

func (c *EmailFromDocCmd) Run(rctx *RunContext) error

type FormsCmd added in v0.13.0

type FormsCmd struct {
	Get       FormsGetCmd       `cmd:"" help:"Get form structure"`
	Responses FormsResponsesCmd `cmd:"" help:"List form responses"`
	Response  FormsResponseCmd  `cmd:"" help:"Get a single form response"`
}

FormsCmd groups Google Forms operations.

type FormsGetCmd added in v0.13.0

type FormsGetCmd struct {
	FormID string `arg:"" help:"Form ID to retrieve"`
}

FormsGetCmd retrieves a form's structure.

func (*FormsGetCmd) Run added in v0.13.0

func (c *FormsGetCmd) Run(rctx *RunContext) error

type FormsResponseCmd added in v0.13.0

type FormsResponseCmd struct {
	FormID     string `arg:"" help:"Form ID"`
	ResponseID string `arg:"" help:"Response ID"`
}

FormsResponseCmd gets a single form response.

func (*FormsResponseCmd) Run added in v0.13.0

func (c *FormsResponseCmd) Run(rctx *RunContext) error

type FormsResponsesCmd added in v0.13.0

type FormsResponsesCmd struct {
	FormID string `arg:"" help:"Form ID"`
	Limit  int    `help:"Max responses to return" default:"50" short:"n"`
}

FormsResponsesCmd lists form responses.

func (*FormsResponsesCmd) Run added in v0.13.0

func (c *FormsResponsesCmd) Run(rctx *RunContext) error

type GitHubCmd added in v0.13.0

type GitHubCmd struct {
	Login  GitHubLoginCmd  `cmd:"" help:"Save GitHub personal access token"`
	Logout GitHubLogoutCmd `cmd:"" help:"Remove saved GitHub token"`
	Status GitHubStatusCmd `cmd:"" help:"Check GitHub auth status"`
	Repos  GitHubReposCmd  `cmd:"" help:"List your repositories"`
	Issues GitHubIssuesCmd `cmd:"" help:"List issues for a repository"`
	Pulls  GitHubPullsCmd  `cmd:"" help:"List pull requests for a repository"`
	Pull   GitHubPullCmd   `cmd:"" help:"Get a single pull request"`
	Runs   GitHubRunsCmd   `cmd:"" help:"List workflow runs for a repository"`
	Notify GitHubNotifyCmd `cmd:"" help:"List notifications"`
	Create GitHubCreateCmd `cmd:"" help:"Create GitHub resources"`
}

GitHubCmd groups GitHub operations. GitHub commands use a personal access token stored separately from Google OAuth.

type GitHubCreateCmd added in v0.13.0

type GitHubCreateCmd struct {
	Issue GitHubCreateIssueCmd `cmd:"" help:"Create an issue"`
}

GitHubCreateCmd groups creation commands.

type GitHubCreateIssueCmd added in v0.13.0

type GitHubCreateIssueCmd struct {
	Repo   string   `arg:"" help:"Repository in 'owner/repo' format"`
	Title  string   `help:"Issue title" required:"" short:"t"`
	Body   string   `help:"Issue body" short:"b"`
	Labels []string `help:"Labels to apply (comma-separated)" short:"l"`
}

GitHubCreateIssueCmd creates an issue.

func (*GitHubCreateIssueCmd) Run added in v0.13.0

func (c *GitHubCreateIssueCmd) Run(rctx *RunContext) error

type GitHubIssuesCmd added in v0.13.0

type GitHubIssuesCmd struct {
	Repo  string `arg:"" help:"Repository in 'owner/repo' format"`
	State string `help:"Issue state: open, closed, all" default:"open" enum:"open,closed,all"`
	Limit int    `help:"Max issues to return" default:"30" short:"n"`
}

GitHubIssuesCmd lists issues for a repository.

func (*GitHubIssuesCmd) Run added in v0.13.0

func (c *GitHubIssuesCmd) Run(rctx *RunContext) error

type GitHubLoginCmd added in v0.13.0

type GitHubLoginCmd struct {
	Token string `help:"GitHub personal access token (classic or fine-grained)" required:""`
}

GitHubLoginCmd saves a GitHub personal access token.

func (*GitHubLoginCmd) Run added in v0.13.0

func (c *GitHubLoginCmd) Run(rctx *RunContext) error

type GitHubLogoutCmd added in v0.13.0

type GitHubLogoutCmd struct{}

GitHubLogoutCmd removes the saved GitHub token.

func (*GitHubLogoutCmd) Run added in v0.13.0

func (c *GitHubLogoutCmd) Run(rctx *RunContext) error

type GitHubNotifyCmd added in v0.13.0

type GitHubNotifyCmd struct {
	Limit int `help:"Max notifications to return" default:"30" short:"n"`
}

GitHubNotifyCmd lists notifications.

func (*GitHubNotifyCmd) Run added in v0.13.0

func (c *GitHubNotifyCmd) Run(rctx *RunContext) error

type GitHubPullCmd added in v0.13.0

type GitHubPullCmd struct {
	Repo   string `arg:"" help:"Repository in 'owner/repo' format"`
	Number int    `arg:"" help:"Pull request number"`
}

GitHubPullCmd gets a single pull request.

func (*GitHubPullCmd) Run added in v0.13.0

func (c *GitHubPullCmd) Run(rctx *RunContext) error

type GitHubPullsCmd added in v0.13.0

type GitHubPullsCmd struct {
	Repo  string `arg:"" help:"Repository in 'owner/repo' format"`
	State string `help:"PR state: open, closed, all" default:"open" enum:"open,closed,all"`
	Limit int    `help:"Max PRs to return" default:"30" short:"n"`
}

GitHubPullsCmd lists pull requests.

func (*GitHubPullsCmd) Run added in v0.13.0

func (c *GitHubPullsCmd) Run(rctx *RunContext) error

type GitHubReposCmd added in v0.13.0

type GitHubReposCmd struct {
	Limit int `help:"Max repositories to return" default:"30" short:"n"`
}

GitHubReposCmd lists repositories.

func (*GitHubReposCmd) Run added in v0.13.0

func (c *GitHubReposCmd) Run(rctx *RunContext) error

type GitHubRunsCmd added in v0.13.0

type GitHubRunsCmd struct {
	Repo  string `arg:"" help:"Repository in 'owner/repo' format"`
	Limit int    `help:"Max runs to return" default:"10" short:"n"`
}

GitHubRunsCmd lists workflow runs.

func (*GitHubRunsCmd) Run added in v0.13.0

func (c *GitHubRunsCmd) Run(rctx *RunContext) error

type GitHubStatusCmd added in v0.13.0

type GitHubStatusCmd struct{}

GitHubStatusCmd checks GitHub authentication status.

func (*GitHubStatusCmd) Run added in v0.13.0

func (c *GitHubStatusCmd) Run(rctx *RunContext) error

type GmailArchiveCmd added in v0.3.0

type GmailArchiveCmd struct {
	Query    string `arg:"" help:"Gmail search query for messages to archive"`
	Limit    int64  `help:"Max messages to archive" default:"50" short:"n"`
	ReadOnly bool   `help:"Only mark as read, don't remove from inbox" name:"read-only"`
}

GmailArchiveCmd batch archives messages.

func (*GmailArchiveCmd) Run added in v0.3.0

func (c *GmailArchiveCmd) Run(rctx *RunContext) error

type GmailCmd

type GmailCmd struct {
	List    GmailListCmd    `cmd:"" help:"List messages"`
	Get     GmailGetCmd     `cmd:"" help:"Get a single message"`
	Search  GmailSearchCmd  `cmd:"" help:"Search messages"`
	Labels  GmailLabelsCmd  `cmd:"" help:"List labels"`
	Send    GmailSendCmd    `cmd:"" help:"Send an email"`
	Draft   GmailDraftCmd   `cmd:"" help:"Create a draft"`
	Reply   GmailReplyCmd   `cmd:"" help:"Reply to a message"`
	Digest  GmailDigestCmd  `cmd:"" help:"Smart digest of recent messages"`
	Archive GmailArchiveCmd `cmd:"" help:"Batch archive messages"`
	Label   GmailLabelCmd   `cmd:"" help:"Batch add/remove labels on messages"`
	Forward GmailForwardCmd `cmd:"" help:"Forward a message to new recipients"`
}

GmailCmd groups Gmail operations.

type GmailDigestCmd added in v0.3.0

type GmailDigestCmd struct {
	Limit  int64 `help:"Max messages to analyze" default:"30" short:"n"`
	Unread bool  `help:"Only unread messages" short:"u"`
}

GmailDigestCmd produces a smart digest.

func (*GmailDigestCmd) Run added in v0.3.0

func (c *GmailDigestCmd) Run(rctx *RunContext) error

type GmailDraftCmd

type GmailDraftCmd struct {
	To      []string `help:"Recipients" required:"" short:"t"`
	CC      []string `help:"CC recipients" short:"c"`
	Subject string   `help:"Email subject" required:"" short:"s"`
	Body    string   `help:"Email body text" required:"" short:"b"`
	Attach  []string `help:"File paths to attach" short:"A"`
}

GmailDraftCmd creates a draft.

func (*GmailDraftCmd) Run

func (c *GmailDraftCmd) Run(rctx *RunContext) error

type GmailForwardCmd added in v0.9.1

type GmailForwardCmd struct {
	MessageID string   `arg:"" help:"Message ID to forward"`
	To        []string `help:"Forward recipients (e.g. --to a@b.com,c@d.com)" required:"" short:"t"`
}

GmailForwardCmd forwards a message.

func (*GmailForwardCmd) Run added in v0.9.1

func (c *GmailForwardCmd) Run(rctx *RunContext) error

type GmailGetCmd

type GmailGetCmd struct {
	MessageID string `arg:"" help:"Message ID to retrieve"`
}

GmailGetCmd gets a single message.

func (*GmailGetCmd) Run

func (c *GmailGetCmd) Run(rctx *RunContext) error

type GmailLabelCmd added in v0.9.1

type GmailLabelCmd struct {
	Query  string   `arg:"" help:"Gmail search query (e.g. 'subject:CI from:github')"`
	Add    []string `help:"Labels to add (e.g. --add CI,Important)" name:"add"`
	Remove []string `help:"Labels to remove (e.g. --remove INBOX)" name:"remove"`
	Limit  int64    `help:"Max messages to modify" default:"50" short:"n"`
}

GmailLabelCmd batch modifies labels on messages.

func (*GmailLabelCmd) Run added in v0.9.1

func (c *GmailLabelCmd) Run(rctx *RunContext) error

type GmailLabelsCmd

type GmailLabelsCmd struct{}

GmailLabelsCmd lists labels.

func (*GmailLabelsCmd) Run

func (c *GmailLabelsCmd) Run(rctx *RunContext) error

type GmailListCmd

type GmailListCmd struct {
	Limit  int64  `help:"Max messages to return (e.g. --limit 5)" default:"10" short:"n"`
	Label  string `help:"Filter by label (e.g. --label INBOX)" short:"l"`
	Unread bool   `help:"Only show unread messages" short:"u"`
}

GmailListCmd lists Gmail messages.

func (*GmailListCmd) Run

func (c *GmailListCmd) Run(rctx *RunContext) error

type GmailReplyCmd

type GmailReplyCmd struct {
	MessageID string `arg:"" help:"Message ID to reply to"`
	Body      string `help:"Reply body text" required:"" short:"b"`
	ReplyAll  bool   `help:"Reply to all recipients" name:"reply-all"`
}

GmailReplyCmd replies to a message.

func (*GmailReplyCmd) Run

func (c *GmailReplyCmd) Run(rctx *RunContext) error

type GmailSearchCmd

type GmailSearchCmd struct {
	Query string `arg:"" help:"Gmail search query (e.g. 'from:boss subject:urgent')"`
	Limit int64  `help:"Max results" default:"10" short:"n"`
}

GmailSearchCmd searches messages.

func (*GmailSearchCmd) Run

func (c *GmailSearchCmd) Run(rctx *RunContext) error

type GmailSendCmd

type GmailSendCmd struct {
	To      []string `help:"Recipients, comma-separated (e.g. --to a@b.com,c@d.com)" required:"" short:"t"`
	CC      []string `help:"CC recipients" short:"c"`
	BCC     []string `help:"BCC recipients"`
	Subject string   `help:"Email subject (e.g. --subject 'Hello')" required:"" short:"s"`
	Body    string   `help:"Email body text (e.g. --body 'Hi there')" required:"" short:"b"`
	Attach  []string `help:"File paths to attach" short:"A"`
}

GmailSendCmd sends an email.

func (*GmailSendCmd) Run

func (c *GmailSendCmd) Run(rctx *RunContext) error

type MCPServerCmd added in v0.2.0

type MCPServerCmd struct{}

MCPServerCmd starts the MCP server over stdio.

func (*MCPServerCmd) Run added in v0.2.0

func (c *MCPServerCmd) Run(rctx *RunContext) error

type MeetingPrepCmd added in v0.9.1

type MeetingPrepCmd struct {
	Meeting string `arg:"" help:"Meeting title or keyword to match"`
	Days    int    `help:"Days ahead to search" default:"1" short:"d"`
	Execute bool   `help:"Execute actions" name:"execute"`
}

MeetingPrepCmd implements gwx meeting-prep.

func (*MeetingPrepCmd) Run added in v0.9.1

func (c *MeetingPrepCmd) Run(rctx *RunContext) error

type NotionCmd added in v0.13.0

type NotionCmd struct {
	Login     NotionLoginCmd     `cmd:"" help:"Save Notion integration token"`
	Status    NotionStatusCmd    `cmd:"" help:"Check Notion auth status"`
	Search    NotionSearchCmd    `cmd:"" help:"Search pages"`
	Page      NotionPageCmd      `cmd:"" help:"Get a page"`
	Create    NotionCreateCmd    `cmd:"" help:"Create a page in a database"`
	Databases NotionDatabasesCmd `cmd:"" help:"List databases"`
	Query     NotionQueryCmd     `cmd:"" help:"Query a database"`
}

NotionCmd groups Notion operations.

type NotionCreateCmd added in v0.13.0

type NotionCreateCmd struct {
	ParentID   string `help:"Parent database ID" required:"" name:"parent"`
	Title      string `help:"Page title" required:"" short:"t"`
	Properties string `help:"Extra properties as JSON object" name:"props" default:""`
}

NotionCreateCmd creates a page in a Notion database.

func (*NotionCreateCmd) Run added in v0.13.0

func (c *NotionCreateCmd) Run(rctx *RunContext) error

type NotionDatabasesCmd added in v0.13.0

type NotionDatabasesCmd struct {
	Limit int `help:"Max databases to return" default:"20" short:"n"`
}

NotionDatabasesCmd lists databases visible to the integration.

func (*NotionDatabasesCmd) Run added in v0.13.0

func (c *NotionDatabasesCmd) Run(rctx *RunContext) error

type NotionLoginCmd added in v0.13.0

type NotionLoginCmd struct {
	Token string `arg:"" help:"Notion integration token (ntn_...)"`
}

NotionLoginCmd saves a Notion integration token.

func (*NotionLoginCmd) Run added in v0.13.0

func (c *NotionLoginCmd) Run(rctx *RunContext) error

type NotionPageCmd added in v0.13.0

type NotionPageCmd struct {
	PageID string `arg:"" help:"Page ID"`
}

NotionPageCmd retrieves a Notion page.

func (*NotionPageCmd) Run added in v0.13.0

func (c *NotionPageCmd) Run(rctx *RunContext) error

type NotionQueryCmd added in v0.13.0

type NotionQueryCmd struct {
	DatabaseID string `arg:"" help:"Database ID to query"`
	Filter     string `help:"Filter as JSON object" default:""`
	Limit      int    `help:"Max results" default:"20" short:"n"`
}

NotionQueryCmd queries a Notion database.

func (*NotionQueryCmd) Run added in v0.13.0

func (c *NotionQueryCmd) Run(rctx *RunContext) error

type NotionSearchCmd added in v0.13.0

type NotionSearchCmd struct {
	Query string `arg:"" help:"Search query" default:""`
	Limit int    `help:"Max results" default:"20" short:"n"`
}

NotionSearchCmd searches Notion pages.

func (*NotionSearchCmd) Run added in v0.13.0

func (c *NotionSearchCmd) Run(rctx *RunContext) error

type NotionStatusCmd added in v0.13.0

type NotionStatusCmd struct{}

NotionStatusCmd checks Notion auth status.

func (*NotionStatusCmd) Run added in v0.13.0

func (c *NotionStatusCmd) Run(rctx *RunContext) error

type ObsidianAppendCmd added in v0.22.0

type ObsidianAppendCmd struct {
	NotePath string `arg:"" help:"Note path relative to vault root"`
	Text     string `help:"Text to append" required:"" short:"t"`
}

ObsidianAppendCmd appends text to an existing note.

func (*ObsidianAppendCmd) Run added in v0.22.0

func (c *ObsidianAppendCmd) Run(rctx *RunContext) error

type ObsidianCmd added in v0.22.0

type ObsidianCmd struct {
	Setup   ObsidianSetupCmd   `cmd:"" help:"Set vault path"`
	List    ObsidianListCmd    `cmd:"" help:"List notes"`
	Search  ObsidianSearchCmd  `cmd:"" help:"Search note content"`
	Read    ObsidianReadCmd    `cmd:"" help:"Read a note"`
	Create  ObsidianCreateCmd  `cmd:"" help:"Create a note"`
	Append  ObsidianAppendCmd  `cmd:"" help:"Append to a note"`
	Daily   ObsidianDailyCmd   `cmd:"" help:"Create/append daily note"`
	Tags    ObsidianTagsCmd    `cmd:"" help:"List all tags"`
	Recent  ObsidianRecentCmd  `cmd:"" help:"List recently modified notes"`
	Folders ObsidianFoldersCmd `cmd:"" help:"List vault folders"`
}

ObsidianCmd groups Obsidian vault operations. Obsidian uses local filesystem — no API auth needed.

type ObsidianCreateCmd added in v0.22.0

type ObsidianCreateCmd struct {
	NotePath string `arg:"" help:"Note path relative to vault root"`
	Content  string `help:"Note content (or pipe via stdin)" short:"c"`
}

ObsidianCreateCmd creates a new note.

func (*ObsidianCreateCmd) Run added in v0.22.0

func (c *ObsidianCreateCmd) Run(rctx *RunContext) error

type ObsidianDailyCmd added in v0.22.0

type ObsidianDailyCmd struct {
	Text string `help:"Text for daily note (or pipe via stdin)" short:"t"`
}

ObsidianDailyCmd creates or appends to today's daily note.

func (*ObsidianDailyCmd) Run added in v0.22.0

func (c *ObsidianDailyCmd) Run(rctx *RunContext) error

type ObsidianFoldersCmd added in v0.22.0

type ObsidianFoldersCmd struct{}

ObsidianFoldersCmd lists all folders in the vault.

func (*ObsidianFoldersCmd) Run added in v0.22.0

func (c *ObsidianFoldersCmd) Run(rctx *RunContext) error

type ObsidianListCmd added in v0.22.0

type ObsidianListCmd struct {
	Folder string `help:"Filter by folder (relative to vault root)" short:"d"`
	Limit  int    `help:"Max notes to return" default:"20" short:"n"`
}

ObsidianListCmd lists notes in the vault.

func (*ObsidianListCmd) Run added in v0.22.0

func (c *ObsidianListCmd) Run(rctx *RunContext) error

type ObsidianReadCmd added in v0.22.0

type ObsidianReadCmd struct {
	NotePath string `arg:"" help:"Note path relative to vault root"`
}

ObsidianReadCmd reads a single note.

func (*ObsidianReadCmd) Run added in v0.22.0

func (c *ObsidianReadCmd) Run(rctx *RunContext) error

type ObsidianRecentCmd added in v0.22.0

type ObsidianRecentCmd struct {
	Limit int `help:"Max notes to return" default:"10" short:"n"`
}

ObsidianRecentCmd lists recently modified notes.

func (*ObsidianRecentCmd) Run added in v0.22.0

func (c *ObsidianRecentCmd) Run(rctx *RunContext) error

type ObsidianSearchCmd added in v0.22.0

type ObsidianSearchCmd struct {
	Query string `arg:"" help:"Search query"`
	Limit int    `help:"Max results" default:"10" short:"n"`
}

ObsidianSearchCmd searches note content.

func (*ObsidianSearchCmd) Run added in v0.22.0

func (c *ObsidianSearchCmd) Run(rctx *RunContext) error

type ObsidianSetupCmd added in v0.22.0

type ObsidianSetupCmd struct {
	VaultPath string `arg:"" help:"Absolute path to Obsidian vault directory"`
}

ObsidianSetupCmd saves the vault path to config.

func (*ObsidianSetupCmd) Run added in v0.22.0

func (c *ObsidianSetupCmd) Run(rctx *RunContext) error

type ObsidianTagsCmd added in v0.22.0

type ObsidianTagsCmd struct{}

ObsidianTagsCmd lists all tags in the vault.

func (*ObsidianTagsCmd) Run added in v0.22.0

func (c *ObsidianTagsCmd) Run(rctx *RunContext) error

type OnboardCmd

type OnboardCmd struct {
	JSON       string `help:"OAuth credentials JSON string (highest priority)" name:"json"`
	Services   string `help:"Comma-separated services to authorize (default: all)" name:"services"`
	AuthMethod string `help:"Auth method: browser, manual, or remote (default: remote for non-interactive)" name:"auth-method"`
}

OnboardCmd runs the setup wizard with support for --json flag and stdin pipe.

Credential sources (highest to lowest priority):

  1. --json flag
  2. stdin pipe (non-TTY)
  3. GWX_OAUTH_JSON environment variable
  4. GWX_OAUTH_FILE environment variable
  5. Interactive prompt (TTY only)

func (*OnboardCmd) Run

func (c *OnboardCmd) Run(rctx *RunContext) error

type ParallelScheduleCmd added in v0.9.1

type ParallelScheduleCmd struct {
	Title     string `help:"Meeting title" name:"title" required:""`
	Attendees string `help:"Comma-separated attendee emails" name:"attendees" required:""`
	Duration  string `help:"Meeting duration (e.g. 30m, 1h)" name:"duration" required:""`
	DaysAhead int    `help:"Days ahead to search for slots" name:"days-ahead" default:"7"`
	Execute   bool   `help:"Execute actions" name:"execute"`
}

ParallelScheduleCmd implements gwx workflow parallel-schedule.

func (*ParallelScheduleCmd) Run added in v0.9.1

func (c *ParallelScheduleCmd) Run(rctx *RunContext) error

type PipeCmd added in v0.9.1

type PipeCmd struct {
	Pipeline string `arg:"" help:"Chain gwx commands via JSON pipeline"`
}

PipeCmd chains gwx commands using JSON stdin/stdout piping.

func (*PipeCmd) Run added in v0.9.1

func (c *PipeCmd) Run(rctx *RunContext) error

type ReviewNotifyCmd added in v0.9.1

type ReviewNotifyCmd struct {
	SpecFolder string `help:"Spec folder path" name:"spec-folder" required:""`
	Reviewers  string `help:"Comma-separated reviewer emails" name:"reviewers" required:""`
	Channel    string `help:"Notification channel (email or chat:spaces/XXX)" name:"channel"`
	Execute    bool   `help:"Execute actions" name:"execute"`
}

ReviewNotifyCmd implements gwx workflow review-notify.

func (*ReviewNotifyCmd) Run added in v0.9.1

func (c *ReviewNotifyCmd) Run(rctx *RunContext) error

type RunContext

type RunContext struct {
	Context   context.Context
	Printer   *output.Printer
	Auth      *auth.Manager
	APIClient *api.Client
	Account   string
	DryRun    bool
	NoInput   bool
	NoCache   bool
	Allowlist *config.Allowlist
}

RunContext holds shared state for command execution.

type SchemaCmd

type SchemaCmd struct{}

SchemaCmd outputs the full command schema for agent introspection.

func (*SchemaCmd) Run

func (c *SchemaCmd) Run(rctx *RunContext) error

type SearchConsoleCmd added in v0.9.1

type SearchConsoleCmd struct {
	Query       SearchConsoleQueryCmd       `cmd:"" help:"Query search analytics data"`
	Sites       SearchConsoleSitesCmd       `cmd:"" help:"List verified sites"`
	Inspect     SearchConsoleInspectCmd     `cmd:"" help:"Inspect a URL's index status"`
	Sitemaps    SearchConsoleSitemapsCmd    `cmd:"" help:"List sitemaps for a site"`
	IndexStatus SearchConsoleIndexStatusCmd `cmd:"index-status" help:"Get index coverage status"`
}

SearchConsoleCmd groups Search Console operations.

type SearchConsoleIndexStatusCmd added in v0.9.1

type SearchConsoleIndexStatusCmd struct {
	Site      string `help:"Site URL" short:"s"`
	StartDate string `help:"Start date (YYYY-MM-DD); defaults to 28 days ago" name:"start-date"`
	EndDate   string `help:"End date (YYYY-MM-DD); defaults to today" name:"end-date"`
}

SearchConsoleIndexStatusCmd gets index coverage status for a site.

func (*SearchConsoleIndexStatusCmd) Run added in v0.9.1

type SearchConsoleInspectCmd added in v0.9.1

type SearchConsoleInspectCmd struct {
	Site string `help:"Site URL" short:"s" required:""`
	URL  string `arg:"" help:"URL to inspect"`
}

SearchConsoleInspectCmd inspects a URL's index status.

func (*SearchConsoleInspectCmd) Run added in v0.9.1

type SearchConsoleQueryCmd added in v0.9.1

type SearchConsoleQueryCmd struct {
	Site        string   `help:"Site URL (e.g. https://example.com)" short:"s"`
	StartDate   string   `help:"Start date (YYYY-MM-DD)" name:"start-date" required:""`
	EndDate     string   `help:"End date (YYYY-MM-DD)" name:"end-date" default:""`
	Dimensions  []string `help:"Dimensions (query, page, country, device, date)"`
	QueryFilter string   `help:"Filter by query text" name:"query-filter"`
	Limit       int      `help:"Max rows to return" default:"100" short:"n"`
}

SearchConsoleQueryCmd queries search analytics data.

func (*SearchConsoleQueryCmd) Run added in v0.9.1

func (c *SearchConsoleQueryCmd) Run(rctx *RunContext) error

type SearchConsoleSitemapsCmd added in v0.9.1

type SearchConsoleSitemapsCmd struct {
	Site string `help:"Site URL" short:"s"`
}

SearchConsoleSitemapsCmd lists sitemaps for a site.

func (*SearchConsoleSitemapsCmd) Run added in v0.9.1

type SearchConsoleSitesCmd added in v0.9.1

type SearchConsoleSitesCmd struct{}

SearchConsoleSitesCmd lists all verified Search Console sites.

func (*SearchConsoleSitesCmd) Run added in v0.9.1

func (c *SearchConsoleSitesCmd) Run(rctx *RunContext) error

type SearchResultGroup added in v0.3.0

type SearchResultGroup struct {
	Service string      `json:"service"`
	Count   int         `json:"count"`
	Results interface{} `json:"results"`
	Error   string      `json:"error,omitempty"`
}

SearchResultGroup holds results from one service.

type SheetToEmailCmd added in v0.9.1

type SheetToEmailCmd struct {
	SheetID    string `help:"Sheet ID" name:"sheet-id" required:""`
	Range      string `help:"Sheet range (e.g. Sheet1!A:F)" name:"range" required:""`
	EmailCol   int    `help:"Column index for email address (0-based)" name:"email-col" required:""`
	SubjectCol int    `help:"Column index for subject" name:"subject-col" required:""`
	BodyCol    int    `help:"Column index for body" name:"body-col" required:""`
	Execute    bool   `help:"Execute actions" name:"execute"`
}

SheetToEmailCmd implements gwx workflow sheet-to-email.

func (*SheetToEmailCmd) Run added in v0.9.1

func (c *SheetToEmailCmd) Run(rctx *RunContext) error

type SheetsAppendCmd

type SheetsAppendCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range (e.g. Sheet1!A:C)"`
	Values        string `help:"JSON array of rows: [[\"a\",1],[\"b\",2]]" required:"" short:"v"`
}

SheetsAppendCmd appends rows.

func (*SheetsAppendCmd) Run

func (c *SheetsAppendCmd) Run(rctx *RunContext) error

type SheetsClearCmd added in v0.4.0

type SheetsClearCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range to clear (e.g. Sheet1!A2:D)"`
}

SheetsClearCmd clears a range.

func (*SheetsClearCmd) Run added in v0.4.0

func (c *SheetsClearCmd) Run(rctx *RunContext) error

type SheetsCmd

type SheetsCmd struct {
	Read        SheetsReadCmd        `cmd:"" help:"Read a range from a spreadsheet"`
	Info        SheetsInfoCmd        `cmd:"" help:"Get spreadsheet metadata and sheet tabs"`
	Describe    SheetsDescribeCmd    `cmd:"" help:"Analyze column structure and fill rules"`
	Stats       SheetsStatsCmd       `cmd:"" help:"Column statistics and value counts"`
	Search      SheetsSearchCmd      `cmd:"" help:"Search for text in a spreadsheet"`
	Filter      SheetsFilterCmd      `cmd:"" help:"Filter rows by column value"`
	Diff        SheetsDiffCmd        `cmd:"" help:"Compare two tabs/ranges"`
	Append      SheetsAppendCmd      `cmd:"" help:"Append rows to a spreadsheet"`
	SmartAppend SheetsSmartAppendCmd `cmd:"smart-append" help:"Validate + append with structure awareness"`
	Update      SheetsUpdateCmd      `cmd:"" help:"Update cells in a spreadsheet"`
	Clear       SheetsClearCmd       `cmd:"" help:"Clear a range"`
	CopyTab     SheetsCopyTabCmd     `cmd:"copy-tab" help:"Copy tab structure to a new tab"`
	Export      SheetsExportCmd      `cmd:"" help:"Export range to CSV or JSON"`
	Import      SheetsImportCmd      `cmd:"" help:"Import CSV or JSON file into a sheet"`
	Create      SheetsCreateCmd      `cmd:"" help:"Create a new spreadsheet"`
}

SheetsCmd groups Sheets operations.

type SheetsCopyTabCmd added in v0.6.0

type SheetsCopyTabCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Source        string `help:"Source tab name" required:""`
	Name          string `help:"New tab name" required:""`
}

SheetsCopyTabCmd copies a tab structure.

func (*SheetsCopyTabCmd) Run added in v0.6.0

func (c *SheetsCopyTabCmd) Run(rctx *RunContext) error

type SheetsCreateCmd

type SheetsCreateCmd struct {
	Title string `help:"Spreadsheet title" required:""`
}

SheetsCreateCmd creates a spreadsheet.

func (*SheetsCreateCmd) Run

func (c *SheetsCreateCmd) Run(rctx *RunContext) error

type SheetsDescribeCmd added in v0.5.0

type SheetsDescribeCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `help:"Sheet range (auto-detects first sheet if empty)" short:"r"`
	Samples       int    `help:"Number of data rows to analyze" default:"20" short:"n"`
}

SheetsDescribeCmd analyzes column structure and fill rules.

func (*SheetsDescribeCmd) Run added in v0.5.0

func (c *SheetsDescribeCmd) Run(rctx *RunContext) error

type SheetsDiffCmd added in v0.6.0

type SheetsDiffCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	RangeA        string `help:"First range (e.g. '第1周规划及完成情况')" required:"" name:"from"`
	RangeB        string `help:"Second range (e.g. '第2周规划及完成情况')" required:"" name:"to"`
}

SheetsDiffCmd compares two ranges.

func (*SheetsDiffCmd) Run added in v0.6.0

func (c *SheetsDiffCmd) Run(rctx *RunContext) error

type SheetsExportCmd added in v0.6.0

type SheetsExportCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range to export"`
	ExportFmt     string `help:"Format: csv or json" default:"csv" name:"export-format"`
	Output        string `help:"Output file (default: stdout)" short:"o"`
}

SheetsExportCmd exports a range to CSV or JSON.

func (*SheetsExportCmd) Run added in v0.6.0

func (c *SheetsExportCmd) Run(rctx *RunContext) error

type SheetsFilterCmd added in v0.4.0

type SheetsFilterCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range (e.g. Sheet1!A:D)"`
	Column        int    `help:"Column index to filter (0-based)" required:"" short:"c"`
	Value         string `help:"Value to match" required:"" short:"v"`
}

SheetsFilterCmd filters rows by column value.

func (*SheetsFilterCmd) Run added in v0.4.0

func (c *SheetsFilterCmd) Run(rctx *RunContext) error

type SheetsImportCmd added in v0.7.0

type SheetsImportCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range to import into (e.g. Sheet1!A1)"`
	File          string `help:"File path to import" required:"" short:"i"`
	ImportFmt     string `help:"Format: csv or json" default:"csv" name:"import-format"`
}

SheetsImportCmd imports a CSV or JSON file into a sheet.

func (*SheetsImportCmd) Run added in v0.7.0

func (c *SheetsImportCmd) Run(rctx *RunContext) error

type SheetsInfoCmd added in v0.4.0

type SheetsInfoCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
}

SheetsInfoCmd gets spreadsheet metadata.

func (*SheetsInfoCmd) Run added in v0.4.0

func (c *SheetsInfoCmd) Run(rctx *RunContext) error

type SheetsReadCmd

type SheetsReadCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range (e.g. Sheet1!A1:C10)"`
}

SheetsReadCmd reads a range.

func (*SheetsReadCmd) Run

func (c *SheetsReadCmd) Run(rctx *RunContext) error

type SheetsSearchCmd added in v0.4.0

type SheetsSearchCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Query         string `help:"Text to search for" required:"" short:"q"`
	Range         string `help:"Range to search (default: first sheet)" short:"r"`
}

SheetsSearchCmd searches for text in a spreadsheet.

func (*SheetsSearchCmd) Run added in v0.4.0

func (c *SheetsSearchCmd) Run(rctx *RunContext) error

type SheetsSmartAppendCmd added in v0.5.0

type SheetsSmartAppendCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range to append to (e.g. Sheet1!A:F)"`
	Values        string `help:"JSON array of rows" required:"" short:"v"`
}

SheetsSmartAppendCmd validates data against schema then appends.

func (*SheetsSmartAppendCmd) Run added in v0.5.0

func (c *SheetsSmartAppendCmd) Run(rctx *RunContext) error

type SheetsStatsCmd added in v0.6.0

type SheetsStatsCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `help:"Range (auto-detects first sheet if empty)" short:"r"`
}

SheetsStatsCmd shows column statistics.

func (*SheetsStatsCmd) Run added in v0.6.0

func (c *SheetsStatsCmd) Run(rctx *RunContext) error

type SheetsUpdateCmd

type SheetsUpdateCmd struct {
	SpreadsheetID string `arg:"" help:"Spreadsheet ID"`
	Range         string `arg:"" help:"Range (e.g. Sheet1!A1:C3)"`
	Values        string `help:"JSON array of rows" required:"" short:"v"`
}

SheetsUpdateCmd updates cells.

func (*SheetsUpdateCmd) Run

func (c *SheetsUpdateCmd) Run(rctx *RunContext) error

type SkillCmd added in v0.11.0

type SkillCmd struct {
	List     SkillListCmd     `cmd:"" help:"List all loaded skills"`
	Inspect  SkillInspectCmd  `cmd:"" help:"Show details of a skill"`
	Validate SkillValidateCmd `cmd:"" help:"Validate a skill YAML file"`
	Install  SkillInstallCmd  `cmd:"" help:"Install a skill from file or URL"`
	Remove   SkillRemoveCmd   `cmd:"" help:"Remove an installed skill"`
}

SkillCmd groups skill DSL operations.

type SkillInspectCmd added in v0.11.0

type SkillInspectCmd struct {
	Name string `arg:"" help:"Skill name to inspect"`
}

SkillInspectCmd shows full details of a single skill.

func (*SkillInspectCmd) Run added in v0.11.0

func (c *SkillInspectCmd) Run(rctx *RunContext) error

type SkillInstallCmd added in v0.11.0

type SkillInstallCmd struct {
	Source string `arg:"" help:"File path or URL to install from"`
}

SkillInstallCmd installs a skill from a local file or a remote URL.

func (*SkillInstallCmd) Run added in v0.11.0

func (c *SkillInstallCmd) Run(rctx *RunContext) error

type SkillListCmd added in v0.11.0

type SkillListCmd struct{}

SkillListCmd lists all discovered skills.

func (*SkillListCmd) Run added in v0.11.0

func (c *SkillListCmd) Run(rctx *RunContext) error

type SkillRemoveCmd added in v0.11.0

type SkillRemoveCmd struct {
	Name string `arg:"" help:"Skill name to remove"`
}

SkillRemoveCmd removes an installed skill by name.

func (*SkillRemoveCmd) Run added in v0.11.0

func (c *SkillRemoveCmd) Run(rctx *RunContext) error

type SkillValidateCmd added in v0.11.0

type SkillValidateCmd struct {
	File string `arg:"" help:"Path to skill YAML file"`
}

SkillValidateCmd validates a YAML skill file without running it.

func (*SkillValidateCmd) Run added in v0.11.0

func (c *SkillValidateCmd) Run(rctx *RunContext) error

type SlackChannelsCmd added in v0.13.0

type SlackChannelsCmd struct {
	Limit int `help:"Max channels to return" default:"100" short:"n"`
}

SlackChannelsCmd lists Slack channels.

func (*SlackChannelsCmd) Run added in v0.13.0

func (c *SlackChannelsCmd) Run(rctx *RunContext) error

type SlackCmd added in v0.13.0

type SlackCmd struct {
	Login    SlackLoginCmd    `cmd:"" help:"Save Slack bot token"`
	Status   SlackStatusCmd   `cmd:"" help:"Check Slack auth status"`
	Channels SlackChannelsCmd `cmd:"" help:"List channels"`
	Send     SlackSendCmd     `cmd:"" help:"Send a message"`
	Messages SlackMessagesCmd `cmd:"" help:"List channel messages"`
	Search   SlackSearchCmd   `cmd:"" help:"Search messages"`
	Users    SlackUsersCmd    `cmd:"" help:"List users"`
}

SlackCmd groups Slack operations.

type SlackLoginCmd added in v0.13.0

type SlackLoginCmd struct {
	Token string `arg:"" help:"Slack bot token (xoxb-...)"`
}

SlackLoginCmd saves a Slack bot token.

func (*SlackLoginCmd) Run added in v0.13.0

func (c *SlackLoginCmd) Run(rctx *RunContext) error

type SlackMessagesCmd added in v0.13.0

type SlackMessagesCmd struct {
	Channel string `arg:"" help:"Channel ID"`
	Limit   int    `help:"Max messages to return" default:"20" short:"n"`
}

SlackMessagesCmd lists channel messages.

func (*SlackMessagesCmd) Run added in v0.13.0

func (c *SlackMessagesCmd) Run(rctx *RunContext) error

type SlackSearchCmd added in v0.13.0

type SlackSearchCmd struct {
	Query string `arg:"" help:"Search query"`
	Limit int    `help:"Max results" default:"20" short:"n"`
}

SlackSearchCmd searches Slack messages.

func (*SlackSearchCmd) Run added in v0.13.0

func (c *SlackSearchCmd) Run(rctx *RunContext) error

type SlackSendCmd added in v0.13.0

type SlackSendCmd struct {
	Channel string `help:"Channel ID or name (e.g. C01234567 or #general)" required:"" short:"c"`
	Text    string `arg:"" help:"Message text"`
}

SlackSendCmd sends a Slack message.

func (*SlackSendCmd) Run added in v0.13.0

func (c *SlackSendCmd) Run(rctx *RunContext) error

type SlackStatusCmd added in v0.13.0

type SlackStatusCmd struct{}

SlackStatusCmd checks Slack auth status.

func (*SlackStatusCmd) Run added in v0.13.0

func (c *SlackStatusCmd) Run(rctx *RunContext) error

type SlackUsersCmd added in v0.13.0

type SlackUsersCmd struct {
	Limit int `help:"Max users to return" default:"100" short:"n"`
}

SlackUsersCmd lists workspace users.

func (*SlackUsersCmd) Run added in v0.13.0

func (c *SlackUsersCmd) Run(rctx *RunContext) error

type SlidesCmd added in v0.10.0

type SlidesCmd struct {
	Get       SlidesGetCmd       `cmd:"" help:"Get presentation structure"`
	List      SlidesListCmd      `cmd:"" help:"List presentations in Drive"`
	Create    SlidesCreateCmd    `cmd:"" help:"Create a new presentation"`
	Duplicate SlidesDuplicateCmd `cmd:"" help:"Duplicate a presentation"`
	Export    SlidesExportCmd    `cmd:"" help:"Export presentation to PDF or PPTX"`
	FromSheet SlidesFromSheetCmd `cmd:"from-sheet" help:"Generate presentation from Sheet data + template"`
}

SlidesCmd groups Google Slides operations.

type SlidesCreateCmd added in v0.10.0

type SlidesCreateCmd struct {
	Title string `help:"Presentation title" required:""`
}

SlidesCreateCmd creates a new presentation.

func (*SlidesCreateCmd) Run added in v0.10.0

func (c *SlidesCreateCmd) Run(rctx *RunContext) error

type SlidesDuplicateCmd added in v0.10.0

type SlidesDuplicateCmd struct {
	PresentationID string `arg:"" help:"Presentation ID to duplicate"`
	Title          string `help:"Title for the copy" required:""`
}

SlidesDuplicateCmd duplicates a presentation.

func (*SlidesDuplicateCmd) Run added in v0.10.0

func (c *SlidesDuplicateCmd) Run(rctx *RunContext) error

type SlidesExportCmd added in v0.10.0

type SlidesExportCmd struct {
	PresentationID string `arg:"" help:"Presentation ID to export"`
	Format         string `help:"Export format: pdf or pptx" default:"pdf" enum:"pdf,pptx" name:"export-format"`
	Output         string `help:"Output file path" short:"o"`
}

SlidesExportCmd exports a presentation.

func (*SlidesExportCmd) Run added in v0.10.0

func (c *SlidesExportCmd) Run(rctx *RunContext) error

type SlidesFromSheetCmd added in v0.10.0

type SlidesFromSheetCmd struct {
	TemplateID string `help:"Template presentation ID (with {{placeholders}})" required:"" name:"template"`
	SheetID    string `help:"Source Sheet ID" required:"" name:"sheet-id"`
	Range      string `help:"Sheet range (e.g. Sheet1!A:D)" default:"Sheet1" name:"range"`
}

SlidesFromSheetCmd generates a presentation from Sheet data.

func (*SlidesFromSheetCmd) Run added in v0.10.0

func (c *SlidesFromSheetCmd) Run(rctx *RunContext) error

type SlidesGetCmd added in v0.10.0

type SlidesGetCmd struct {
	PresentationID string `arg:"" help:"Presentation ID"`
}

SlidesGetCmd gets a presentation's structure.

func (*SlidesGetCmd) Run added in v0.10.0

func (c *SlidesGetCmd) Run(rctx *RunContext) error

type SlidesListCmd added in v0.10.0

type SlidesListCmd struct {
	Limit int64 `help:"Max results (e.g. --limit 10)" default:"20" short:"n"`
}

SlidesListCmd lists presentations.

func (*SlidesListCmd) Run added in v0.10.0

func (c *SlidesListCmd) Run(rctx *RunContext) error

type SpecHealthCmd added in v0.9.1

type SpecHealthCmd struct {
	Action     string `arg:"" help:"Action: init, record, stats" enum:"init,record,stats"`
	Feature    string `help:"Feature name (for init)" name:"feature"`
	SheetID    string `help:"Sheet ID (for record/stats)" name:"sheet-id"`
	SpecFolder string `help:"Spec folder path (for record)" name:"spec-folder"`
}

SpecHealthCmd implements gwx workflow spec-health.

func (*SpecHealthCmd) Run added in v0.9.1

func (c *SpecHealthCmd) Run(rctx *RunContext) error

type SprintBoardCmd added in v0.9.1

type SprintBoardCmd struct {
	Action   string `arg:"" help:"Action: init, ticket, stats, archive" enum:"init,ticket,stats,archive"`
	Feature  string `help:"Feature name (for init)" name:"feature"`
	SheetID  string `help:"Sheet ID" name:"sheet-id"`
	Title    string `help:"Ticket title (for ticket)" name:"title"`
	Assignee string `help:"Assignee (for ticket)" name:"assignee"`
	Priority string `help:"Priority P0-P3 (for ticket)" name:"priority" default:"P2"`
	Sprint   string `help:"Sprint name (for archive)" name:"sprint"`
}

SprintBoardCmd implements gwx workflow sprint-board.

func (*SprintBoardCmd) Run added in v0.9.1

func (c *SprintBoardCmd) Run(rctx *RunContext) error

type StandupCmd added in v0.9.1

type StandupCmd struct {
	Days    int    `help:"Days of git history" default:"1" short:"d"`
	Execute bool   `help:"Execute actions (e.g. push to chat/email)" name:"execute"`
	Push    string `help:"Push target (chat:spaces/XXX or email:addr@example.com)" name:"push"`
}

StandupCmd implements gwx standup.

func (*StandupCmd) Run added in v0.9.1

func (c *StandupCmd) Run(rctx *RunContext) error

type TasksCmd

type TasksCmd struct {
	List     TasksListCmd     `cmd:"" help:"List tasks"`
	Lists    TasksListsCmd    `cmd:"" help:"List task lists"`
	Create   TasksCreateCmd   `cmd:"" help:"Create a task"`
	Complete TasksCompleteCmd `cmd:"" help:"Mark a task as completed"`
	Delete   TasksDeleteCmd   `cmd:"" help:"Delete a task"`
}

TasksCmd groups Tasks operations.

type TasksCompleteCmd

type TasksCompleteCmd struct {
	TaskID string `arg:"" help:"Task ID to complete"`
	ListID string `help:"Task list ID" name:"list"`
}

TasksCompleteCmd completes a task.

func (*TasksCompleteCmd) Run

func (c *TasksCompleteCmd) Run(rctx *RunContext) error

type TasksCreateCmd

type TasksCreateCmd struct {
	Title  string `help:"Task title" required:""`
	Notes  string `help:"Task notes" short:"n"`
	Due    string `help:"Due date (YYYY-MM-DD)" short:"d"`
	ListID string `help:"Task list ID" name:"list"`
}

TasksCreateCmd creates a task.

func (*TasksCreateCmd) Run

func (c *TasksCreateCmd) Run(rctx *RunContext) error

type TasksDeleteCmd

type TasksDeleteCmd struct {
	TaskID string `arg:"" help:"Task ID to delete"`
	ListID string `help:"Task list ID" name:"list"`
}

TasksDeleteCmd deletes a task.

func (*TasksDeleteCmd) Run

func (c *TasksDeleteCmd) Run(rctx *RunContext) error

type TasksListCmd

type TasksListCmd struct {
	ListID        string `help:"Task list ID (default: primary)" name:"list"`
	ShowCompleted bool   `help:"Include completed tasks" name:"show-completed"`
}

TasksListCmd lists tasks.

func (*TasksListCmd) Run

func (c *TasksListCmd) Run(rctx *RunContext) error

type TasksListsCmd

type TasksListsCmd struct{}

TasksListsCmd lists task lists.

func (*TasksListsCmd) Run

func (c *TasksListsCmd) Run(rctx *RunContext) error

type TestMatrixCmd added in v0.9.1

type TestMatrixCmd struct {
	Action  string `arg:"" help:"Action: init, sync, stats" enum:"init,sync,stats"`
	Feature string `help:"Feature name (for init)" name:"feature"`
	SheetID string `help:"Sheet ID (for sync/stats)" name:"sheet-id"`
	File    string `help:"Test results file (for sync)" name:"file"`
}

TestMatrixCmd implements gwx workflow test-matrix.

func (*TestMatrixCmd) Run added in v0.9.1

func (c *TestMatrixCmd) Run(rctx *RunContext) error

type TokenExport added in v0.25.0

type TokenExport struct {
	Version    int           `json:"version"`
	Account    string        `json:"account"`
	ExportedAt time.Time     `json:"exported_at"`
	Token      *oauth2.Token `json:"token"`
}

TokenExport is the envelope for exported tokens.

type UnifiedSearchCmd added in v0.3.0

type UnifiedSearchCmd struct {
	Query    string   `arg:"" help:"Search query"`
	Services []string `help:"Services to search (gmail,drive,contacts)" default:"gmail,drive" short:"s"`
	Limit    int      `help:"Max results per service" default:"5" short:"n"`
}

UnifiedSearchCmd searches across Gmail, Drive, and Contacts simultaneously.

func (*UnifiedSearchCmd) Run added in v0.3.0

func (c *UnifiedSearchCmd) Run(rctx *RunContext) error

type UpdateCmd added in v0.20.0

type UpdateCmd struct {
	Check bool `help:"Only check for updates, don't install" name:"check"`
}

UpdateCmd checks for and installs updates from GitHub Releases.

func (*UpdateCmd) Run added in v0.20.0

func (c *UpdateCmd) Run(rctx *RunContext) error

Run executes the update command.

type VersionCmd

type VersionCmd struct{}

VersionCmd prints the version.

func (*VersionCmd) Run

func (c *VersionCmd) Run(rctx *RunContext) error

type WeeklyDigestCmd added in v0.9.1

type WeeklyDigestCmd struct {
	Weeks   int  `help:"Number of weeks to cover" default:"1" short:"w"`
	Execute bool `help:"Execute actions" name:"execute"`
}

WeeklyDigestCmd implements gwx workflow weekly-digest.

func (*WeeklyDigestCmd) Run added in v0.9.1

func (c *WeeklyDigestCmd) Run(rctx *RunContext) error

type WorkflowCmd added in v0.9.1

type WorkflowCmd struct {
	WeeklyDigest     WeeklyDigestCmd     `cmd:"weekly-digest" help:"Weekly activity digest"`
	ContextBoost     ContextBoostCmd     `cmd:"context-boost" help:"Deep context gathering for a topic"`
	BugIntake        BugIntakeCmd        `cmd:"bug-intake" help:"Gather context for a bug report"`
	TestMatrix       TestMatrixCmd       `cmd:"test-matrix" help:"Manage test results in Sheets"`
	SpecHealth       SpecHealthCmd       `cmd:"spec-health" help:"Track spec status in Sheets"`
	SprintBoard      SprintBoardCmd      `cmd:"sprint-board" help:"Sprint board in Sheets"`
	ReviewNotify     ReviewNotifyCmd     `cmd:"review-notify" help:"Notify reviewers about a spec"`
	EmailFromDoc     EmailFromDocCmd     `cmd:"email-from-doc" help:"Send email from a Google Doc"`
	SheetToEmail     SheetToEmailCmd     `cmd:"sheet-to-email" help:"Send personalized emails from Sheet data"`
	ParallelSchedule ParallelScheduleCmd `cmd:"parallel-schedule" help:"Schedule parallel 1-on-1 reviews"`
	Digest           WeeklyDigestCmd     `cmd:"digest" help:"Alias for weekly-digest" hidden:""`
}

WorkflowCmd is the command group for gwx workflow subcommands.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL