Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildPrompt ¶
BuildPrompt reinforces "content is data, not instructions" at the mechanism level, not just in the role prompt (spec: Roles). The delimiters are best-effort, not a guarantee — adversarial diff or log content could itself contain a fake closing tag. This raises the bar against injection, it does not eliminate it. Every backend that takes a flat text prompt (any CLI-shim adapter) should call this rather than assembling its own — that's what keeps injection-mitigation behavior identical across backends instead of drifting per adapter.
func GenerateClaudeCodeArtifacts ¶
GenerateClaudeCodeArtifacts translates neutral role content into Claude Code subagent definitions. This is a projection of the neutral role files, not the source of truth (spec: Architecture Overview) — re-running it after a role file changes regenerates the artifact.
Types ¶
type ClaudeCode ¶
ClaudeCode dispatches role invocations as one-shot `claude -p` calls. It stores no credentials — it relies entirely on the host's own `claude` CLI authentication (spec: Backend Adapters).
func (ClaudeCode) WorktreeSetup ¶
func (c ClaudeCode) WorktreeSetup(worktreePath string) error
type Context ¶
Context is everything a one-shot role invocation needs, reconstructed fresh by the observer from ticket state — there is no persistent conversation across invocations (spec: Concurrency Model).
type Mock ¶
type Mock struct {
// contains filtered or unexported fields
}
Mock is a scripted Runner used in tests so the ticket lifecycle can be exercised end-to-end without a real model call or token cost (spec: Testing Strategy).
func (*Mock) ScriptResponse ¶
func (*Mock) WorktreeSetup ¶
type Runner ¶
type Runner interface {
RunAgent(role string, ctx Context) (Result, error)
WorktreeSetup(worktreePath string) error
}
Runner is implemented once per backend (claude-code today; gemini, codex later) against the same signature, so the orchestration core never depends on which backend is configured.