package homophones import ( "context" "gitea.maximumdirect.net/eric/audita/internal/framework/contracts" "gitea.maximumdirect.net/eric/audita/internal/framework/proposal_generation" "gitea.maximumdirect.net/eric/audita/internal/framework/proposals" "gitea.maximumdirect.net/eric/audita/internal/prompts" builtinvalidators "gitea.maximumdirect.net/eric/audita/internal/validators" ) type Module struct { validators []contracts.Validator } func New() (*Module, error) { chain, err := builtinvalidators.ResolveBuiltInChain("homophones", builtinvalidators.NewBuiltInRegistry()) if err != nil { return nil, err } return &Module{ validators: chain, }, nil } func (m *Module) Key() string { return "homophones" } func (m *Module) ReplacementPolicy() proposals.ReplacementPolicy { // Conservative single-span replacement. return proposals.ReplacementPolicyRequireUnique } func (m *Module) Validators() []contracts.Validator { return append([]contracts.Validator(nil), m.validators...) } func (m *Module) Propose(ctx context.Context, req contracts.ProposalRequest) (contracts.ProposalResult, error) { return proposal_generation.ExecuteModuleProposal(ctx, proposal_generation.ModuleProposalRequest{ ProposalRequest: req, PromptID: prompts.PromptIDModuleHomophonesProposal, BuildMessages: BuildProposalMessages, }) }