prompt

package
v1.5.0 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2026 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const MessageDelimiter = "<<<commitbrief-msg>>>"

MessageDelimiter is the sentinel line the model is told to emit between consecutive messages when more than one is requested (--generate N). It is deliberately unlikely to appear inside a real commit message so the parser can split multi-line (body-carrying) messages cleanly.

Variables

This section is empty.

Functions

func ParseMessages added in v1.5.0

func ParseMessages(raw string, n int) []string

ParseMessages splits a FreeForm commit-message response into individual messages. It splits on MessageDelimiter, trims each block, strips stray code fences / wrapping quotes, drops empties, and caps the result at n. Best-effort by design (ADR-0015): if the model ignored the delimiter for an n>1 request the caller gets fewer messages and surfaces that, rather than this rejecting the response.

func ValidCommitTypes added in v1.5.0

func ValidCommitTypes() []string

ValidCommitTypes returns the accepted --type / commit.type values in canonical order, for flag help and the "invalid type" error message.

Types

type CommitOptions added in v1.5.0

type CommitOptions struct {
	Type  CommitType
	Count int
}

CommitOptions parameterizes the commit-message prompt: the output format and how many distinct messages to generate in the single call.

type CommitType added in v1.5.0

type CommitType string

CommitType selects the shape of a generated commit message. The set is closed and validated at the CLI layer (the `commit` command's --type flag / commit.type config) via ParseCommitType. plain is the default.

const (
	CommitPlain            CommitType = "plain"
	CommitConventional     CommitType = "conventional"
	CommitConventionalBody CommitType = "conventional+body"
	CommitGitmoji          CommitType = "gitmoji"
	CommitSubjectBody      CommitType = "subject+body"
)

func ParseCommitType added in v1.5.0

func ParseCommitType(s string) (CommitType, bool)

ParseCommitType validates s against the closed set, returning the typed value and ok=false on an unknown token (CLI surfaces an error then).

type Prompt

type Prompt struct {
	System string
	User   string
}

Prompt is the assembled (system, user) pair ready to hand to a Provider. Use Build to construct it.

func Build

func Build(rulesLoaded rules.Loaded, langRes lang.Resolution, diffText string) Prompt

Build assembles the system prompt (project rules + severity rubric + JSON response contract + lang directive + prompt-injection guard) and the user prompt (diff fenced block). OUTPUT.md is no longer part of prompt construction — under ADR-0014 it is a client-side renderer template consumed only by the local Go runtime.

func BuildCommitMessage added in v1.2.0

func BuildCommitMessage(diffText string, opts CommitOptions) Prompt

BuildCommitMessage assembles the (system, user) prompt for a commit message suggestion over the staged diff (ADR-0015 / ADR-0019). It is used with provider.Request{FreeForm: true} so providers return the message as plain text instead of the structured-findings JSON.

It deliberately does NOT inject the project's COMMITBRIEF.md review rules — those govern critique, not authoring — so the prompt stays small and its cost predictable. The diff is fenced as data with an explicit prompt- injection guard. Messages are always written in English regardless of the review --lang (a deliberate ADR-0019 constraint).

func BuildPlainText added in v0.9.0

func BuildPlainText(rulesLoaded rules.Loaded, langRes lang.Resolution, diffText string, withContext bool) Prompt

BuildPlainText is the prompt variant for CLI-backed providers (claude-cli, gemini-cli, codex-cli). Same project rules + severity rubric, but swaps the JSON-contract response format for a fixed plain-text layout. Used by review.go when the active provider satisfies provider.PlainTextEmitter.

When withContext is true (the --with-context flag, ADR-0017), the system prompt gains a section telling the agentic host CLI it may read surrounding project files to ground the review. It is appended only for the CLI path; API providers (Build) have no filesystem and never see it.

func (Prompt) EstimatedTokens

func (p Prompt) EstimatedTokens() int

EstimatedTokens uses the chars/4 heuristic shared with internal/diff. Provider-side token counts override this; the value is intended for pre-flight checks and dry-run reporting.

func (Prompt) ExceedsContext

func (p Prompt) ExceedsContext(contextWindow int) bool

ExceedsContext reports whether the estimated token count is larger than the provider's reported context window. Callers should branch on this before sending a request so users get a friendlier error than a provider-side 400.

Jump to

Keyboard shortcuts

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