(cmd *cobra.Command, flags *runExecFlags)
| 138 | } |
| 139 | |
| 140 | func addRunOrExecFlags(cmd *cobra.Command, flags *runExecFlags) { |
| 141 | cmd.PersistentFlags().StringVarP(&flags.agentName, "agent", "a", "", "Name of the agent to run (defaults to the team's first agent)") |
| 142 | cmd.PersistentFlags().BoolVar(&flags.autoApprove, "yolo", false, "Automatically approve all tool calls without prompting") |
| 143 | cmd.PersistentFlags().BoolVar(&flags.hideToolResults, "hide-tool-results", false, "Hide tool call results") |
| 144 | cmd.PersistentFlags().StringVar(&flags.attachmentPath, "attach", "", "Attach an image file to the message") |
| 145 | cmd.PersistentFlags().StringArrayVar(&flags.promptFiles, "prompt-file", nil, "Append file contents to the prompt (repeatable)") |
| 146 | cmd.PersistentFlags().StringArrayVar(&flags.modelOverrides, "model", nil, "Override agent model: [agent=]provider/model (repeatable)") |
| 147 | cmd.PersistentFlags().BoolVar(&flags.dryRun, "dry-run", false, "Initialize the agent without executing anything") |
| 148 | cmd.PersistentFlags().StringVar(&flags.remoteAddress, "remote", "", "Use remote runtime with specified address") |
| 149 | cmd.PersistentFlags().StringVarP(&flags.sessionDB, "session-db", "s", filepath.Join(paths.GetHomeDir(), ".cagent", "session.db"), "Path to the session database") |
| 150 | cmd.PersistentFlags().StringVar(&flags.sessionID, "session", "", "Continue from a previous session by ID or relative offset (e.g., -1 for last session). An explicit ID that does not exist yet is created with that ID.") |
| 151 | cmd.PersistentFlags().StringVar(&flags.fakeResponses, "fake", "", "Replay AI responses from cassette file (for testing)") |
| 152 | cmd.PersistentFlags().IntVar(&flags.fakeStreamDelay, "fake-stream", 0, "Simulate streaming with delay in ms between chunks (default 15ms if no value given)") |
| 153 | cmd.Flag("fake-stream").NoOptDefVal = "15" // --fake-stream without value uses 15ms |
| 154 | cmd.PersistentFlags().StringVar(&flags.recordPath, "record", "", "Record AI API interactions to cassette file and generate a TUI e2e test from the session (auto-generates filename if empty)") |
| 155 | cmd.PersistentFlags().Lookup("record").NoOptDefVal = "true" |
| 156 | cmd.PersistentFlags().BoolVar(&flags.exitAfterResponse, "exit-after-response", false, "Exit TUI after first assistant response completes") |
| 157 | _ = cmd.PersistentFlags().MarkHidden("exit-after-response") |
| 158 | cmd.PersistentFlags().StringVar(&flags.listenAddr, "listen", "", "Expose this run's control plane on the given address (e.g. 127.0.0.1:0)") |
| 159 | _ = cmd.PersistentFlags().MarkHidden("listen") |
| 160 | cmd.PersistentFlags().StringArrayVar(&flags.onEventSpecs, "on-event", nil, "Run shell command on event: --on-event <type>=<cmd> (or *=<cmd> for any). Repeatable.") |
| 161 | cmd.PersistentFlags().StringVar(&flags.cpuProfile, "cpuprofile", "", "Write CPU profile to file") |
| 162 | _ = cmd.PersistentFlags().MarkHidden("cpuprofile") |
| 163 | cmd.PersistentFlags().StringVar(&flags.memProfile, "memprofile", "", "Write memory profile to file") |
| 164 | _ = cmd.PersistentFlags().MarkHidden("memprofile") |
| 165 | cmd.PersistentFlags().BoolVar(&flags.forceTUI, "force-tui", false, "Force TUI mode even when not in a terminal") |
| 166 | _ = cmd.PersistentFlags().MarkHidden("force-tui") |
| 167 | cmd.PersistentFlags().BoolVar(&flags.tour, "tour", false, "Start the interactive getting-started tour in the TUI") |
| 168 | _ = cmd.PersistentFlags().MarkHidden("tour") |
| 169 | cmd.PersistentFlags().BoolVar(&flags.lean, "lean", false, "Use a simplified TUI with minimal chrome") |
| 170 | cmd.PersistentFlags().StringVar(&flags.appName, "app-name", "", "Application name shown in the TUI in place of \"docker agent\"") |
| 171 | cmd.PersistentFlags().StringSliceVar(&flags.disabledCommands, "disable-commands", nil, "Comma-separated list of slash commands to hide and disable in the TUI (e.g. /cost,/eval,/model)") |
| 172 | cmd.PersistentFlags().BoolVar(&flags.sidebar, "sidebar", true, "Show the sidebar in the TUI (set --sidebar=false to hide it)") |
| 173 | cmd.PersistentFlags().StringVar(&flags.theme, "theme", "", "Preselect a TUI theme by name (overrides the theme from user config; ignored outside the interactive TUI)") |
| 174 | _ = cmd.RegisterFlagCompletionFunc("theme", completeTheme) |
| 175 | cmd.PersistentFlags().BoolVar(&flags.sandbox, "sandbox", false, "Run the agent inside a Docker sandbox (requires Docker Desktop with sandbox support)") |
| 176 | cmd.PersistentFlags().StringVar(&flags.sandboxTemplate, "template", "docker/sandbox-templates:docker-agent", "Template image for the sandbox (passed to docker sandbox create -t)") |
| 177 | cmd.PersistentFlags().BoolVar(&flags.sbx, "sbx", true, "Prefer the sbx CLI backend when available (set --sbx=false to force docker sandbox)") |
| 178 | cmd.PersistentFlags().BoolVar(&flags.noKit, "no-kit", false, "Do not stage a docker-agent kit (skills, prompt files) when running in a sandbox") |
| 179 | cmd.PersistentFlags().StringVar(&flags.agentPickerSpec, "agent-picker", "", "Show a full-screen picker to choose an agent before launching. Optional comma-separated list of agent refs; \"defaults\" (or no value) offers the built-in agents plus any configs in ~/.agents") |
| 180 | cmd.PersistentFlags().Lookup("agent-picker").NoOptDefVal = agentPickerDefaultsSpec |
| 181 | cmd.PersistentFlags().StringVarP(&flags.worktreeName, "worktree", "w", "", "Run the agent in a fresh git worktree of the working directory (isolates changes from your checkout). Optionally name it: --worktree=my-name") |
| 182 | cmd.PersistentFlags().Lookup("worktree").NoOptDefVal = worktreeAutoName |
| 183 | cmd.PersistentFlags().StringVar(&flags.worktreePR, "worktree-pr", "", "Run the agent in a git worktree checked out on an existing GitHub pull request (number or URL). Continues the PR's branch; requires the GitHub CLI (gh).") |
| 184 | cmd.PersistentFlags().StringVar(&flags.worktreeBase, "worktree-base", "", "Branch the --worktree from this ref instead of the current HEAD (e.g. main, origin/main). A remote-tracking ref is fetched first so the worktree starts from the latest remote state.") |
| 185 | cmd.PersistentFlags().BoolVar(&flags.sessionReadOnly, "session-read-only", false, "Open the session in read-only mode (view conversation history but prevent new messages)") |
| 186 | cmd.MarkFlagsMutuallyExclusive("fake", "record") |
| 187 | cmd.MarkFlagsMutuallyExclusive("remote", "sandbox") |
| 188 | cmd.MarkFlagsMutuallyExclusive("remote", "session-db") |
| 189 | cmd.MarkFlagsMutuallyExclusive("remote", "session") |
| 190 | cmd.MarkFlagsMutuallyExclusive("remote", "record") |
| 191 | cmd.MarkFlagsMutuallyExclusive("remote", "fake") |
| 192 | // A worktree is a local directory: it has no meaning for a remote runtime |
| 193 | // and is not wired through the sandbox boundary. |
| 194 | cmd.MarkFlagsMutuallyExclusive("remote", "worktree") |
| 195 | cmd.MarkFlagsMutuallyExclusive("sandbox", "worktree") |
| 196 | cmd.MarkFlagsMutuallyExclusive("remote", "worktree-pr") |
| 197 | cmd.MarkFlagsMutuallyExclusive("sandbox", "worktree-pr") |
no test coverage detected