Documentation
¶
Index ¶
- type ApplyPatchTool
- func (t *ApplyPatchTool) BackfillInput(_ context.Context, in map[string]any) map[string]any
- func (t *ApplyPatchTool) Call(ctx context.Context, input tool.CallInput, permissionCheck types.CanUseToolFn) (tool.CallResult, error)
- func (t *ApplyPatchTool) CheckPermissions(_ context.Context, input map[string]any, _ tool.ToolUseContext) types.PermissionResult
- func (t *ApplyPatchTool) Definition() tool.Definition
- func (t *ApplyPatchTool) Description(_ context.Context) (string, error)
- func (t *ApplyPatchTool) FormatResult(data any) string
- func (t *ApplyPatchTool) IsConcurrencySafe(_ map[string]any) bool
- func (t *ApplyPatchTool) IsEnabled() bool
- func (t *ApplyPatchTool) IsReadOnly(_ map[string]any) bool
- func (t *ApplyPatchTool) PreparePermissionMatcher(_ context.Context, input map[string]any) (func(string) bool, error)
- func (t *ApplyPatchTool) ValidateInput(_ context.Context, in map[string]any) (map[string]any, error)
- type ApplySummary
- type ChangeKind
- type Patch
- type PatchChange
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ApplyPatchTool ¶
type ApplyPatchTool struct {
// contains filtered or unexported fields
}
ApplyPatchTool applies a structured multi-file patch in one atomic call.
func NewApplyPatchTool ¶
func NewApplyPatchTool(workingDir string) *ApplyPatchTool
func (*ApplyPatchTool) BackfillInput ¶
func (*ApplyPatchTool) Call ¶
func (t *ApplyPatchTool) Call( ctx context.Context, input tool.CallInput, permissionCheck types.CanUseToolFn, ) (tool.CallResult, error)
func (*ApplyPatchTool) CheckPermissions ¶
func (t *ApplyPatchTool) CheckPermissions(_ context.Context, input map[string]any, _ tool.ToolUseContext) types.PermissionResult
func (*ApplyPatchTool) Definition ¶
func (t *ApplyPatchTool) Definition() tool.Definition
func (*ApplyPatchTool) Description ¶
func (t *ApplyPatchTool) Description(_ context.Context) (string, error)
func (*ApplyPatchTool) FormatResult ¶
func (t *ApplyPatchTool) FormatResult(data any) string
func (*ApplyPatchTool) IsConcurrencySafe ¶
func (t *ApplyPatchTool) IsConcurrencySafe(_ map[string]any) bool
func (*ApplyPatchTool) IsEnabled ¶
func (t *ApplyPatchTool) IsEnabled() bool
func (*ApplyPatchTool) IsReadOnly ¶
func (t *ApplyPatchTool) IsReadOnly(_ map[string]any) bool
func (*ApplyPatchTool) PreparePermissionMatcher ¶
func (*ApplyPatchTool) ValidateInput ¶
type ApplySummary ¶
type ApplySummary struct {
Added []string
Deleted []string
Updated []string
Moved []string // "src → dst"
}
ApplySummary reports what was done.
type ChangeKind ¶
type ChangeKind string
ChangeKind describes what happens to a file in a patch. Mirrors Codex's PatchChangeKind (add | delete | update | move).
const ( ChangeKindAdd ChangeKind = "add" ChangeKindDelete ChangeKind = "delete" ChangeKindUpdate ChangeKind = "update" ChangeKindMove ChangeKind = "move" )
type Patch ¶
type Patch struct {
// contains filtered or unexported fields
}
Patch is a parsed, ready-to-apply patch.
func (*Patch) AnalyzeChanges ¶
func (p *Patch) AnalyzeChanges(workingDir string) ([]PatchChange, error)
AnalyzeChanges returns a structured list of changes the patch will make, computed from hunk data without reading files from disk. Use this to build the approval description before calling Apply.
func (*Patch) Apply ¶
func (p *Patch) Apply(ctx context.Context, workingDir string, toolCtxWorkingDir string) (*ApplySummary, error)
Apply applies the patch to files rooted at workingDir. All changes are computed in memory first; disk I/O only happens once all checks pass (fail-fast, not fully transactional but error-proof). If ctx carries a RuntimeEventEmitter, one ToolProgress event is emitted per file as it is committed to disk.
type PatchChange ¶
type PatchChange struct {
Kind ChangeKind `json:"kind"`
Path string `json:"path"` // absolute resolved source path
MovePath string `json:"move_path,omitempty"` // non-empty for ChangeKindMove
DiffPreview string `json:"diff_preview,omitempty"` // compact diff for updates
}
PatchChange is a structured description of a single file change in a patch, computed BEFORE the patch is applied. Used for approval previews and progress events.