Documentation
¶
Index ¶
- Constants
- Variables
- func DetectCommands(ctx context.Context, claude *anthropic.Client, workDir string) ([]config.Command, error)
- func HasGitChanges(workDir string) bool
- func List(cfg *config.ProjectConfig, status iostream.StatusFunc) error
- func ResetAttempts(sessionID string)
- func RunAll(ctx context.Context, workDir string, cfg *config.ProjectConfig, ...) error
- func RunDryRun(cfg *config.ProjectConfig, name string, status iostream.StatusFunc) error
- func RunInline(ctx context.Context, workDir, name, command string, status iostream.StatusFunc, ...) error
- func RunNamed(ctx context.Context, workDir, name string, cfg *config.ProjectConfig, ...) error
- func RunRemote(ctx context.Context, ...) error
- func RunRemoteInline(ctx context.Context, ...) error
- func TrackFailedAttempt(sessionID string, warn io.Writer) int
- func WrapHookResult(sessionID string, execErr error, maxAttempts int, warn io.Writer) error
- type HookExitError
- type PackageManager
Constants ¶
const DefaultMaxAttempts = 3
DefaultMaxAttempts is the default number of consecutive Stop hook re-signals before chunk gives up and tells the agent to ask the user for help.
const DefaultTimeout = 300
DefaultTimeout is the per-command execution timeout in seconds.
Variables ¶
var ErrNotConfigured = errors.New("no validate commands configured")
ErrNotConfigured indicates no validate commands are configured.
Functions ¶
func DetectCommands ¶ added in v0.7.2
func DetectCommands(ctx context.Context, claude *anthropic.Client, workDir string) ([]config.Command, error)
DetectCommands returns the full set of validate commands for the repo with metadata. For known toolchains it returns richer commands without calling Claude. Claude is only used as a fallback for unknown toolchains, and only when a client is provided.
func HasGitChanges ¶ added in v0.7.31
HasGitChanges reports whether the working tree at workDir has any uncommitted modifications (staged or unstaged). Returns true when git is unavailable or the directory is not a repository so that validation still runs in ambiguous cases.
func List ¶
func List(cfg *config.ProjectConfig, status iostream.StatusFunc) error
List prints all configured command names and their run strings.
func ResetAttempts ¶ added in v0.7.31
func ResetAttempts(sessionID string)
ResetAttempts clears the failure counter for the given session.
func RunAll ¶
func RunAll(ctx context.Context, workDir string, cfg *config.ProjectConfig, status iostream.StatusFunc, streams iostream.Streams) error
RunAll runs all configured commands, stopping at the first failure.
func RunDryRun ¶
func RunDryRun(cfg *config.ProjectConfig, name string, status iostream.StatusFunc) error
RunDryRun prints commands without executing them.
func RunInline ¶
func RunInline(ctx context.Context, workDir, name, command string, status iostream.StatusFunc, streams iostream.Streams) error
RunInline runs an inline command string.
func RunNamed ¶
func RunNamed(ctx context.Context, workDir, name string, cfg *config.ProjectConfig, status iostream.StatusFunc, streams iostream.Streams) error
RunNamed runs a single named command from config.
func RunRemote ¶
func RunRemote(ctx context.Context, execFn func(ctx context.Context, script string) (stdout, stderr string, exitCode int, err error), cfg *config.ProjectConfig, name, dest string, streams iostream.Streams) error
RunRemote runs commands on a remote sidecar via SSH. If name is non-empty, only the named command is run.
func RunRemoteInline ¶ added in v0.7.29
func RunRemoteInline(ctx context.Context, execFn func(ctx context.Context, script string) (stdout, stderr string, exitCode int, err error), name, command, dest string, streams iostream.Streams) error
RunRemoteInline runs a single inline command on a remote sidecar via SSH.
func TrackFailedAttempt ¶ added in v0.7.31
TrackFailedAttempt increments the failure counter for the given session and returns the new count. warn is an optional writer for diagnostic messages (pass nil to suppress).
func WrapHookResult ¶ added in v0.7.31
WrapHookResult applies Stop hook lifecycle to the result of running validate commands. On success it resets the attempt counter. On failure it increments the counter and returns a HookExitError with code 2 to re-signal the agent, or prints a give-up message and returns nil once maxAttempts is reached.
Types ¶
type HookExitError ¶ added in v0.7.31
type HookExitError struct {
// contains filtered or unexported fields
}
HookExitError signals a specific process exit code without printing additional error output. All output must be written before this error is returned.
func (*HookExitError) Error ¶ added in v0.7.31
func (e *HookExitError) Error() string
func (*HookExitError) ExitCode ¶ added in v0.7.31
func (e *HookExitError) ExitCode() int
type PackageManager ¶ added in v0.7.2
PackageManager holds the name and CI-safe install command for a detected package manager.
func DetectPackageManager ¶ added in v0.7.2
func DetectPackageManager(workDir string) *PackageManager
DetectPackageManager returns the detected package manager and its CI-safe install command, or nil.