workspace

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 19, 2026 License: MIT Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MissionPending   = "pending"
	MissionApplied   = "applied"
	MissionEscalated = "escalated"
	MissionBlocked   = "blocked"
)
View Source
const (
	WorkspaceOpenToolName   = "jacu_workspace_open"
	WorkspaceStatusToolName = "jacu_status"
	WorkspaceStatusAlias    = "jacu_workspace_status"
	DiffToolName            = "jacu_diff"
	ApplyToolName           = "jacu_apply"
	DiscardToolName         = "jacu_discard"
)

Variables

This section is empty.

Functions

func ExecuteProgram

func ExecuteProgram(ctx context.Context, missions []ProgramMission, execute func(int) (MissionOutcome, error)) ([]runstate.ProgramMissionState, error)

func LoadOrCreateReceiptKey

func LoadOrCreateReceiptKey(root string) ([]byte, error)

LoadOrCreateReceiptKey keeps the local HMAC key inside the repository's private Jacu metadata. The key is never returned in an API result or log.

func PersistProgramExecution

func PersistProgramExecution(root string, run *runstate.Run, states []runstate.ProgramMissionState) error

func RegisterTool

func RegisterTool(server *mcp.Server, root string)

func RegisterToolWithTaskManager

func RegisterToolWithTaskManager(server *mcp.Server, root string, manager *verify.TaskManager)

func ScopesConflict

func ScopesConflict(path string, allowed, forbidden []string) bool

ScopesConflict is the single write-scope verdict shared by workspace gates and SDD lint. It fails closed when a path is not explicitly allowed or is explicitly forbidden.

func ValidateReviewReceipt

func ValidateReviewReceipt(receipt ReviewReceipt, key []byte, expectedRunID, expectedDigest string, now time.Time) error

func WriteReviewReceipt

func WriteReviewReceipt(root string, receipt ReviewReceipt) (string, error)

Types

type ApplyData

type ApplyData struct {
	CommitSHA string `json:"commit_sha"`
	Branch    string `json:"branch"`
	Stderr    string `json:"stderr"`
}

type ApplyInput

type ApplyInput struct {
	RunID              string `json:"run_id"`
	ApproveDestructive bool   `json:"approve_destructive,omitempty"`
}

type ApplyResult

type ApplyResult struct {
	Status      string
	Summary     string
	Data        ApplyData
	Warnings    []string
	NextActions []string
}

func Apply

func Apply(ctx context.Context, root string, in ApplyInput, hostName string) (ApplyResult, error)

type AutonomyPolicy

type AutonomyPolicy struct {
	Require       []string `json:"require"`
	RiskMax       string   `json:"risk_max"`
	MaxIterations int      `json:"max_iterations"`
	OnViolation   string   `json:"on_violation"`
}

AutonomyPolicy is the immutable, project-root policy for automatic apply. It intentionally contains no executor/session identity: the receipt is an audit artifact, while this policy only decides whether the runtime may act.

func LoadAutonomyPolicy

func LoadAutonomyPolicy(root string) (AutonomyPolicy, bool, error)

type CheckClass

type CheckClass string
const (
	CheckLint  CheckClass = "lint"
	CheckTest  CheckClass = "test"
	CheckBuild CheckClass = "build"
	CheckVuln  CheckClass = "vuln"
	CheckFlaky CheckClass = "flaky"
	CheckOther CheckClass = "other"
)

func ClassifyCheckFailure

func ClassifyCheckFailure(check, evidence string) CheckClass

type DiffData

type DiffData struct {
	Digest     string   `json:"digest"`
	Files      []string `json:"files"`
	Added      int      `json:"added"`
	Deleted    int      `json:"deleted"`
	InScope    []string `json:"in_scope"`
	OutOfScope []string `json:"out_of_scope"`
	Diff       string   `json:"diff"`
}

type DiffInput

type DiffInput struct {
	RunID string `json:"run_id"`
}

type DiffResult

type DiffResult struct {
	Status   string
	Summary  string
	Data     DiffData
	Warnings []string
}

func WorkspaceDiff

func WorkspaceDiff(ctx context.Context, root string, in DiffInput) (DiffResult, error)

type DiscardData

type DiscardData struct {
	Runs     []DiscardedRun   `json:"runs"`
	Failures []DiscardFailure `json:"failures"`
}

type DiscardFailure

type DiscardFailure struct {
	RunID         string   `json:"run_id"`
	Error         string   `json:"error"`
	ArchivePatch  string   `json:"archive_patch"`
	ArchiveDigest string   `json:"archive_digest"`
	Actions       []string `json:"actions"`
}

type DiscardInput

type DiscardInput struct {
	RunID string `json:"run_id,omitempty"`
	GC    bool   `json:"gc,omitempty"`
}

type DiscardResult

type DiscardResult struct {
	Status      string
	Summary     string
	Data        DiscardData
	Warnings    []string
	NextActions []string
}

func Discard

func Discard(ctx context.Context, root string, in DiscardInput) (DiscardResult, error)

type DiscardedRun

type DiscardedRun struct {
	RunID         string   `json:"run_id"`
	ArchivePatch  string   `json:"archive_patch"`
	ArchiveDigest string   `json:"archive_digest"`
	Actions       []string `json:"actions"`
}

type MissionOutcome

type MissionOutcome struct {
	Status         string
	Objective      string
	DiffDigest     string
	Verdict        string
	EvidenceDigest string
	ReceiptRef     string
	Iterations     int
	Warnings       []string
}

type OpenData

type OpenData struct {
	RunID        string `json:"run_id"`
	Branch       string `json:"branch"`
	WorktreePath string `json:"worktree_path"`
	BaseSHA      string `json:"base_sha"`
}

type OpenInput

type OpenInput struct {
	MissionInput missioncompile.Input `json:"mission_input"`
	MissionID    string               `json:"mission_id"`
}

type OpenResult

type OpenResult struct {
	Status   string
	Summary  string
	Data     OpenData
	Warnings []string
}

func Open

func Open(ctx context.Context, root string, in OpenInput) (OpenResult, error)

type PolicyDecision

type PolicyDecision struct {
	Allowed  bool
	Escalate bool
	Reason   string
}

func EvaluateAutoApplyPolicy

func EvaluateAutoApplyPolicy(policy AutonomyPolicy, verdict, risk string, receiptValid bool, iteration int) PolicyDecision

type ProgramMission

type ProgramMission struct {
	Index int
	After []int
}

type RemediationAction

type RemediationAction string
const (
	RemediationRerun    RemediationAction = "rerun"
	RemediationMission  RemediationAction = "remediation_mission"
	RemediationEscalate RemediationAction = "escalate"
)

type RemediationDecision

type RemediationDecision struct {
	Action RemediationAction
	Check  string
	Budget int
	Reason string
}

func NextRemediation

func NextRemediation(check string, class CheckClass, priorFailures int) RemediationDecision

type RemediationMissionSpec

type RemediationMissionSpec struct {
	Objective        string
	Check            string
	Class            CheckClass
	AllowedPaths     []string
	BudgetIterations int
	EvidenceDigest   string
	Reason           string
}

type RemediationPlan

type RemediationPlan struct {
	Decision RemediationDecision
	Mission  *RemediationMissionSpec
}

func BuildRemediationPlan

func BuildRemediationPlan(failure runner.CheckFailureEvidence, priorFailures int) RemediationPlan

type ReviewReceipt

type ReviewReceipt struct {
	RunID      string    `json:"run_id"`
	DiffDigest string    `json:"diff_digest"`
	Verdict    string    `json:"verdict"`
	Reasons    []string  `json:"reasons"`
	CreatedAt  time.Time `json:"created_at"`
	Signature  string    `json:"signature"`
}

ReviewReceipt is deliberately limited to facts this runtime can attest: verdict, digest, reasons, and timestamp. It has no reviewer-session claim.

func ConsumeReviewReceipt

func ConsumeReviewReceipt(root, runID, diffDigest string, key []byte, now time.Time) (ReviewReceipt, error)

func SignReviewReceipt

func SignReviewReceipt(receipt ReviewReceipt, key []byte) (ReviewReceipt, error)

type RunStatus

type RunStatus struct {
	RunID        string          `json:"run_id"`
	Status       runstate.Status `json:"status"`
	AgeSeconds   int64           `json:"age_seconds"`
	DiskBytes    int64           `json:"disk_bytes"`
	DiffLines    int             `json:"diff_lines"`
	BaseBehind   int             `json:"base_behind"`
	ProgramID    string          `json:"program_id,omitempty"`
	ProgramIndex int             `json:"program_index,omitempty"`
}

type StatusData

type StatusData struct {
	Runs  []RunStatus           `json:"runs"`
	Tasks []verify.TaskSnapshot `json:"tasks,omitempty"`
}

type StatusInput

type StatusInput struct {
	TaskID string `json:"task_id,omitempty"`
}

type StatusResult

type StatusResult struct {
	Status   string
	Summary  string
	Data     StatusData
	Warnings []string
}

func WorkspaceStatus

func WorkspaceStatus(ctx context.Context, root string) (StatusResult, error)

func WorkspaceStatusWithTasks

func WorkspaceStatusWithTasks(ctx context.Context, root string, manager *verify.TaskManager, input StatusInput) (StatusResult, error)

Jump to

Keyboard shortcuts

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