Versions in this module Expand all Collapse all v0 v0.1.1-nightly.202606060822.62e7189 Jun 5, 2026 v0.1.1-nightly.202606050928.887b5b7 Jun 5, 2026 v0.1.1-nightly.202606031041.bfdcdd4 Jun 2, 2026 v0.1.1-nightly.202606021001.5d71430 Jun 2, 2026 v0.1.0 Jun 2, 2026 Changes in this version + const EnvAgent + const EnvFindingsDoc + const EnvRunID + const EnvSession + const EnvStartingSHA + const EnvStateDoc + const EnvTopic + const InvestigationsDirName + var ErrGhNotFound = errors.New("gh CLI not found on PATH") + var ErrInvestigateNoAgentsSelected = errors.New("no agents selected for investigation") + var ErrInvestigatePickerCancelled = errors.New("investigate agent picker cancelled") + func AppendInvestigateEnv(base []string, opts AppendOptions) []string + func ComposeInvestigatePrompt(in ComposeInput) string + func ConfirmFirstRunSetup(ctx context.Context, out io.Writer) bool + func DeriveTopicFromSeed(body []byte, fallbackFilename string) string + func IsInvestigateEnvEntry(kv string) bool + func IsValidRunID(runID string) bool + func NewCommand(deps Deps) *cobra.Command + func PrintInvestigateFindingsListForTest(w io.Writer, manifests []LocalManifest) + func RunClean(ctx context.Context, in CleanInput, deps CleanDeps) error + func RunFix(ctx context.Context, in FixInput, deps FixDeps) error + func RunInvestigateConfigPicker(ctx context.Context, out io.Writer, ...) (*settings.InvestigateConfig, error) + func RunShow(ctx context.Context, in ShowInput, deps ShowDeps) error + func SetPickerFormFnForTest(fn pickerFormFn) func() + func SlugifyTopic(topic string) string + type AgentChoice struct + Label string + Name string + type AppendOptions struct + AgentName string + FindingsDoc string + RunID string + StartingSHA string + StateDoc string + Topic string + type BootstrapInput struct + FindingsDoc string + IssueLinkSeed []byte + IssueLinkTopic string + SeedDoc string + Topic string + type BootstrapResult struct + FindingsDoc string + Topic string + func Bootstrap(ctx context.Context, in BootstrapInput) (BootstrapResult, error) + type CleanDeps struct + Confirm func(ctx context.Context, message string) (bool, error) + ManifestPath func(m LocalManifest) string + ManifestStore *LocalManifestStore + RunDir func(runID string) string + type CleanInput struct + All bool + ErrOut io.Writer + Force bool + Out io.Writer + RunID string + type ComposeInput struct + AgentName string + AlwaysPrompt string + Files Files + MaxTurns int + Round int + Topic string + Turn int + type Deps struct + GetAgentsWithHooksInstalled func(ctx context.Context) []types.AgentName + HeadHasInvestigateCheckpoint func(ctx context.Context) (bool, string) + InvestigateMultipicker func(ctx context.Context, choices []AgentChoice, askPrompt bool) (PickedInvestigate, error) + LaunchFix func(ctx context.Context, agentName string, prompt string) error + LoopRun func(ctx context.Context, in LoopInput, ldeps LoopDeps) (LoopResult, error) + NewSilentError func(err error) error + PromptYN func(ctx context.Context, question string, def bool) (bool, error) + SpawnerFor func(agentName string) spawn.Spawner + type Files struct + Findings string + State string + type FixDeps struct + FixAgent string + Launch func(ctx context.Context, agentName string, prompt string) error + ManifestStore *LocalManifestStore + ReadFile func(name string) ([]byte, error) + type FixInput struct + ErrOut io.Writer + Out io.Writer + RunID string + type IssueLinkResult struct + SeedDoc []byte + Topic string + func ResolveIssueLink(ctx context.Context, rawURL string) (IssueLinkResult, error) + type LocalManifest struct + Agents []string + EndedAt time.Time + FindingsContent string + FindingsDoc string + Outcome string + RunID string + Slug string + StancesByAgent map[string]string + StartedAt time.Time + StartingSHA string + Topic string + WorktreePath string + func ResolveByRunID(manifests []LocalManifest, runID string) ([]LocalManifest, error) + type LocalManifestStore struct + func NewLocalManifestStore(ctx context.Context) (*LocalManifestStore, error) + func NewLocalManifestStoreWithDir(dir string) *LocalManifestStore + func (s *LocalManifestStore) FindByRunID(ctx context.Context, runID string) (LocalManifest, bool, error) + func (s *LocalManifestStore) Latest(ctx context.Context) (LocalManifest, bool, error) + func (s *LocalManifestStore) List(ctx context.Context) ([]LocalManifest, error) + func (s *LocalManifestStore) PathFor(m LocalManifest) string + func (s *LocalManifestStore) Write(ctx context.Context, m LocalManifest) error + type LoopDeps struct + Now func() time.Time + Progress ProgressSink + SpawnerFor func(agentName string) spawn.Spawner + States *StateStore + type LoopInput struct + Agents []string + AlwaysPrompt string + FindingsDoc string + MaxTurns int + Quorum int + Resume *RunState + RunID string + StartingSHA string + Topic string + type LoopOutcome string + const OutcomeCancelled + const OutcomePaused + const OutcomeQuorum + const OutcomeStalled + type LoopResult struct + Err error + Outcome LoopOutcome + State *RunState + func RunInvestigateLoop(ctx context.Context, in LoopInput, deps LoopDeps) (LoopResult, error) + type PendingTurn struct + Note string + Stance string + type PickedInvestigate struct + Names []string + Prompt string + func PickInvestigateAgents(ctx context.Context, eligible []AgentChoice, askPrompt bool) (PickedInvestigate, error) + type ProgressSink interface + RunFinished func(outcome LoopOutcome) + TurnFinished func(agent string, turn int, stance string, duration time.Duration, failed bool, ...) + TurnStarted func(agent string, turn, perAgentTurn, maxPerAgent int) + type RunState struct + Agents []string + CompletedRounds int + FindingsDoc string + MaxTurns int + NextAgentIdx int + PendingTurn *PendingTurn + Quorum int + RunID string + Stances []TurnStance + StartedAt time.Time + StartingSHA string + Topic string + Turn int + UpdatedAt time.Time + type ShowDeps struct + ManifestStore *LocalManifestStore + type ShowInput struct + ErrOut io.Writer + Out io.Writer + RunID string + type StateStore struct + func NewStateStore(ctx context.Context) (*StateStore, error) + func NewStateStoreWithDir(dir string) *StateStore + func (s *StateStore) Clear(ctx context.Context, runID string) error + func (s *StateStore) List(ctx context.Context) ([]*RunState, error) + func (s *StateStore) Load(ctx context.Context, runID string) (*RunState, error) + func (s *StateStore) Root() string + func (s *StateStore) RunDir(runID string) string + func (s *StateStore) Save(ctx context.Context, st *RunState) error + type TurnStance struct + Agent string + Note string + PlanChanged bool + Round int + Stance string + Turn int