Documentation
¶
Index ¶
- Constants
- Variables
- func ConfirmApproved(message string) bool
- func FormatSize(bytes int64) string
- func GetSafetyDescription(safety ToolSafety) string
- func IsAutoApprovable(toolName string, autoApprove bool) bool
- func IsInteractiveModeEnabled() bool
- func IsSafeToolAutoApprovable(toolName string) bool
- func PreviewToolCall(tc *ToolCall)
- func RegisterBuiltinTools(r *Registry)
- func SetAutoApprove(enabled bool)
- func ValidatePathAllowParent(path string) (string, error)
- type AppendFileTool
- type AstGrepTool
- type BashTool
- type ConfirmAction
- type ConfirmDecision
- type ConfirmResult
- type CopyFileTool
- type CreateDirTool
- type DeleteFileTool
- type DeleteLinesTool
- type DiffFilesTool
- type FileChange
- type FileReplaceResult
- type FormatTool
- type GitAddTool
- type GitBranchTool
- type GitCheckoutTool
- type GitCommitTool
- type GitDiffTool
- type GitLogTool
- type GitPushTool
- type GitStashTool
- type GitStatusTool
- type GrepReplaceResult
- type GrepReplaceTool
- type HTTPRequestTool
- type HTTPResponse
- type ImageData
- type InsertAfterTool
- type InsertBeforeTool
- type LintTool
- type ListBackupsTool
- type ListDirTool
- type MoveFileTool
- type PatternSuggestion
- type PrependFileTool
- type ReadFileTool
- type Registry
- type RestoreBackupTool
- type RunTestTool
- type SearchCodeTool
- type SearchFileTool
- type StrReplaceTool
- type Tool
- type ToolCall
- type ToolSafety
- type WebSearchTool
- type WriteFileTool
Constants ¶
const (
// 最大画像サイズ: 10MB
MaxImageSize = 10 * 1024 * 1024
)
Variables ¶
var ConfirmInteractive = func(message string) ConfirmResult { reader := bufio.NewReader(os.Stdin) for { yellow.Printf("%s [y/n/c]: ", message) response, err := reader.ReadString('\n') if err != nil { return ConfirmResult{Action: "no"} } response = strings.ToLower(strings.TrimSpace(response)) if response == "" { continue } if response == "y" || response == "yes" || response == "y" || response == "はい" { return ConfirmResult{Action: "yes"} } if response == "n" || response == "no" || response == "n" || response == "いいえ" { return ConfirmResult{Action: "no"} } if response == "c" || response == "comment" || response == "コメント" { comment, image := readMultiLineComment(reader) return ConfirmResult{Action: "comment", Comment: comment, Image: image} } yellow.Println("Invalid input. Please enter y/n/c.") } }
ConfirmInteractive は拡張確認プロンプト (y/n/c) c (comment) を選択すると複数行コメントを入力できる 外部パッケージからも使用可能なようにエクスポート NOTE: テスト時は環境変数 XELYON_INTERACTIVE_CONFIRM=0 で無効化される
var DefaultRegistry = NewRegistry()
DefaultRegistry はデフォルトのツールレジストリ
var ValidatePath = validatePathImpl
ValidatePath はパストラバーサル攻撃を防ぐためにパスを検証(テスト用にグローバル変数として定義)
Functions ¶
func ConfirmApproved ¶ added in v0.31.0
ConfirmApproved is a compatibility helper that preserves the old bool-based API. NOTE: This drops comment/image information.
func FormatSize ¶ added in v0.29.0
FormatSize はバイト数を人間が読みやすい形式に変換
func GetSafetyDescription ¶ added in v0.29.0
func GetSafetyDescription(safety ToolSafety) string
GetSafetyDescription は安全性レベルの説明を返す
func IsAutoApprovable ¶ added in v0.29.0
IsAutoApprovable は --auto-approve フラグで自動承認可能かを判定
func IsInteractiveModeEnabled ¶ added in v0.29.0
func IsInteractiveModeEnabled() bool
IsInteractiveModeEnabled は対話的確認モードが有効かチェック デフォルトは有効。
無効化したい場合は以下のいずれかを設定:
- XELYON_INTERACTIVE_CONFIRM=0
- XELYON_INTERACTIVE_CONFIRM=false
func IsSafeToolAutoApprovable ¶ added in v0.31.0
IsSafeToolAutoApprovable は SafetyHigh ツールを設定に基づいて自動承認するか判定 config.tool_confirm.auto_approve_safe が true の場合、SafetyHigh ツールは確認なしで実行
func PreviewToolCall ¶ added in v0.31.0
func PreviewToolCall(tc *ToolCall)
PreviewToolCall displays tool information without executing it
func RegisterBuiltinTools ¶
func RegisterBuiltinTools(r *Registry)
RegisterBuiltinTools はすべての組み込みツールを登録
func SetAutoApprove ¶ added in v0.29.0
func SetAutoApprove(enabled bool)
SetAutoApprove は --auto-approve フラグを設定
func ValidatePathAllowParent ¶
ValidatePathAllowParent は親ディレクトリへのアクセスを許可 (特定の用途でのみ使用)
Types ¶
type AppendFileTool ¶
type AppendFileTool struct{}
===== Append File Tool =====
func (*AppendFileTool) Name ¶
func (t *AppendFileTool) Name() string
func (*AppendFileTool) Run ¶
func (t *AppendFileTool) Run(args map[string]string) (string, *FileChange, error)
type AstGrepTool ¶ added in v0.35.0
type AstGrepTool struct{}
AstGrepTool provides structural code search using ast-grep (Tree-sitter based)
func (*AstGrepTool) Name ¶ added in v0.35.0
func (t *AstGrepTool) Name() string
func (*AstGrepTool) Run ¶ added in v0.35.0
func (t *AstGrepTool) Run(args map[string]string) (string, *FileChange, error)
type ConfirmAction ¶ added in v0.31.0
type ConfirmAction string
ConfirmAction is the normalized action returned by confirmation prompts.
const ( ConfirmYes ConfirmAction = "yes" ConfirmNo ConfirmAction = "no" ConfirmComment ConfirmAction = "comment" )
type ConfirmDecision ¶ added in v0.31.0
type ConfirmDecision struct {
Action ConfirmAction
Comment string
Image *ImageData
}
ConfirmDecision is the unified result for all confirmation prompts. Comment/Image are only set when Action==ConfirmComment.
func Confirm ¶ added in v0.31.0
func Confirm(message string) ConfirmDecision
Confirm asks user for confirmation and optionally captures feedback. If interactive confirmation is enabled, it supports y/n/c and multi-line comments. Otherwise it falls back to legacy y/n confirm.
type ConfirmResult ¶ added in v0.29.0
type ConfirmResult struct {
Action string // "yes", "no", "comment"
Comment string // "comment" の場合のコメント内容
Image *ImageData // 画像データ(オプション)
}
ConfirmResult は確認結果
type CopyFileTool ¶
type CopyFileTool struct{}
===== Copy File Tool =====
func (*CopyFileTool) Name ¶
func (t *CopyFileTool) Name() string
func (*CopyFileTool) Run ¶
func (t *CopyFileTool) Run(args map[string]string) (string, *FileChange, error)
type CreateDirTool ¶
type CreateDirTool struct{}
===== Create Directory Tool =====
func (*CreateDirTool) Name ¶
func (t *CreateDirTool) Name() string
func (*CreateDirTool) Run ¶
func (t *CreateDirTool) Run(args map[string]string) (string, *FileChange, error)
type DeleteFileTool ¶
type DeleteFileTool struct{}
DeleteFileTool deletes a file permanently (with backup)
func (*DeleteFileTool) Name ¶
func (t *DeleteFileTool) Name() string
func (*DeleteFileTool) Run ¶
func (t *DeleteFileTool) Run(args map[string]string) (string, *FileChange, error)
type DeleteLinesTool ¶
type DeleteLinesTool struct{}
DeleteLinesTool deletes a range of lines from a file
func (*DeleteLinesTool) Name ¶
func (t *DeleteLinesTool) Name() string
func (*DeleteLinesTool) Run ¶
func (t *DeleteLinesTool) Run(args map[string]string) (string, *FileChange, error)
type DiffFilesTool ¶ added in v0.31.0
type DiffFilesTool struct{}
DiffFilesTool compares two files and shows differences
func (*DiffFilesTool) Name ¶ added in v0.31.0
func (t *DiffFilesTool) Name() string
func (*DiffFilesTool) Run ¶ added in v0.31.0
func (t *DiffFilesTool) Run(args map[string]string) (string, *FileChange, error)
type FileChange ¶
type FileChange struct {
FilePath string
BackupPath string
Timestamp time.Time
Tool string
Description string
}
FileChange はファイル変更履歴
type FileReplaceResult ¶ added in v0.31.0
FileReplaceResult は1ファイルの置換結果
type FormatTool ¶
type FormatTool struct{}
===== Format Tool =====
func (*FormatTool) Name ¶
func (t *FormatTool) Name() string
func (*FormatTool) Run ¶
func (t *FormatTool) Run(args map[string]string) (string, *FileChange, error)
type GitAddTool ¶
type GitAddTool struct{}
===== Git Add Tool =====
func (*GitAddTool) Name ¶
func (t *GitAddTool) Name() string
func (*GitAddTool) Run ¶
func (t *GitAddTool) Run(args map[string]string) (string, *FileChange, error)
type GitBranchTool ¶
type GitBranchTool struct{}
===== Git Branch Tool =====
func (*GitBranchTool) Name ¶
func (t *GitBranchTool) Name() string
func (*GitBranchTool) Run ¶
func (t *GitBranchTool) Run(args map[string]string) (string, *FileChange, error)
type GitCheckoutTool ¶
type GitCheckoutTool struct{}
===== Git Checkout Tool =====
func (*GitCheckoutTool) Name ¶
func (t *GitCheckoutTool) Name() string
func (*GitCheckoutTool) Run ¶
func (t *GitCheckoutTool) Run(args map[string]string) (string, *FileChange, error)
type GitCommitTool ¶
type GitCommitTool struct{}
===== Git Commit Tool =====
func (*GitCommitTool) Name ¶
func (t *GitCommitTool) Name() string
func (*GitCommitTool) Run ¶
func (t *GitCommitTool) Run(args map[string]string) (string, *FileChange, error)
type GitDiffTool ¶
type GitDiffTool struct{}
===== Git Diff Tool =====
func (*GitDiffTool) Name ¶
func (t *GitDiffTool) Name() string
func (*GitDiffTool) Run ¶
func (t *GitDiffTool) Run(args map[string]string) (string, *FileChange, error)
type GitLogTool ¶
type GitLogTool struct{}
===== Git Log Tool =====
func (*GitLogTool) Name ¶
func (t *GitLogTool) Name() string
func (*GitLogTool) Run ¶
func (t *GitLogTool) Run(args map[string]string) (string, *FileChange, error)
type GitPushTool ¶
type GitPushTool struct{}
===== Git Push Tool =====
func (*GitPushTool) Name ¶
func (t *GitPushTool) Name() string
func (*GitPushTool) Run ¶
func (t *GitPushTool) Run(args map[string]string) (string, *FileChange, error)
type GitStashTool ¶
type GitStashTool struct{}
===== Git Stash Tool =====
func (*GitStashTool) Name ¶
func (t *GitStashTool) Name() string
func (*GitStashTool) Run ¶
func (t *GitStashTool) Run(args map[string]string) (string, *FileChange, error)
type GitStatusTool ¶
type GitStatusTool struct{}
===== Git Status Tool =====
func (*GitStatusTool) Name ¶
func (t *GitStatusTool) Name() string
func (*GitStatusTool) Run ¶
func (t *GitStatusTool) Run(args map[string]string) (string, *FileChange, error)
type GrepReplaceResult ¶ added in v0.31.0
type GrepReplaceResult struct {
FilesModified int
TotalMatches int
FileResults []FileReplaceResult
BackupPaths map[string]string // filepath -> backupPath
}
GrepReplaceResult は一括置換の結果
type GrepReplaceTool ¶ added in v0.31.0
type GrepReplaceTool struct{}
GrepReplaceTool performs bulk find-and-replace across multiple files
func (*GrepReplaceTool) Name ¶ added in v0.31.0
func (t *GrepReplaceTool) Name() string
func (*GrepReplaceTool) Run ¶ added in v0.31.0
func (t *GrepReplaceTool) Run(args map[string]string) (string, *FileChange, error)
type HTTPRequestTool ¶ added in v0.31.0
type HTTPRequestTool struct{}
HTTPRequestTool executes HTTP requests
func (*HTTPRequestTool) Name ¶ added in v0.31.0
func (t *HTTPRequestTool) Name() string
func (*HTTPRequestTool) Run ¶ added in v0.31.0
func (t *HTTPRequestTool) Run(args map[string]string) (string, *FileChange, error)
type HTTPResponse ¶ added in v0.31.0
type HTTPResponse struct {
StatusCode int `json:"status_code"`
Status string `json:"status"`
Headers map[string]string `json:"headers"`
Body string `json:"body"`
Duration string `json:"duration"`
}
HTTPResponse はHTTPリクエストの結果
type ImageData ¶ added in v0.29.0
type ImageData struct {
Path string // 元のファイルパス
MediaType string // "image/png", "image/jpeg" 等
Base64 string // Base64エンコードされた画像データ
Size int64 // ファイルサイズ(バイト)
}
ImageData は画像データを表す
func ConfirmWithFeedback ¶ added in v0.29.0
ConfirmWithFeedback は対話的確認を行う(互換ラッパー) interactiveMode=true の場合は y/n/c、false の場合は従来の y/n
NOTE: 新コードでは Confirm() / ConfirmDecision の利用を推奨。
type InsertAfterTool ¶
type InsertAfterTool struct{}
===== Insert After Tool =====
func (*InsertAfterTool) Name ¶
func (t *InsertAfterTool) Name() string
func (*InsertAfterTool) Run ¶
func (t *InsertAfterTool) Run(args map[string]string) (string, *FileChange, error)
type InsertBeforeTool ¶
type InsertBeforeTool struct{}
===== Insert Before Tool =====
func (*InsertBeforeTool) Name ¶
func (t *InsertBeforeTool) Name() string
func (*InsertBeforeTool) Run ¶
func (t *InsertBeforeTool) Run(args map[string]string) (string, *FileChange, error)
type ListBackupsTool ¶ added in v0.35.0
type ListBackupsTool struct{}
ListBackupsTool lists available backups for a file
func (*ListBackupsTool) Name ¶ added in v0.35.0
func (t *ListBackupsTool) Name() string
func (*ListBackupsTool) Run ¶ added in v0.35.0
func (t *ListBackupsTool) Run(args map[string]string) (string, *FileChange, error)
type ListDirTool ¶
type ListDirTool struct{}
===== List Dir Tool =====
func (*ListDirTool) Name ¶
func (t *ListDirTool) Name() string
func (*ListDirTool) Run ¶
func (t *ListDirTool) Run(args map[string]string) (string, *FileChange, error)
type MoveFileTool ¶
type MoveFileTool struct{}
MoveFileTool moves/renames a file
func (*MoveFileTool) Name ¶
func (t *MoveFileTool) Name() string
func (*MoveFileTool) Run ¶
func (t *MoveFileTool) Run(args map[string]string) (string, *FileChange, error)
type PatternSuggestion ¶ added in v0.31.0
PatternSuggestion はパターン提案の構造体
func GetPatternSuggestion ¶ added in v0.31.0
func GetPatternSuggestion(query string) PatternSuggestion
GetPatternSuggestion は自然言語クエリから推奨パターンを返す(LLM支援用) この関数はLLMが自然言語をast-grepパターンに変換する際の参考として使用できる
type PrependFileTool ¶
type PrependFileTool struct{}
===== Prepend File Tool =====
func (*PrependFileTool) Name ¶
func (t *PrependFileTool) Name() string
func (*PrependFileTool) Run ¶
func (t *PrependFileTool) Run(args map[string]string) (string, *FileChange, error)
type ReadFileTool ¶
type ReadFileTool struct{}
===== Read File Tool =====
func (*ReadFileTool) Name ¶
func (t *ReadFileTool) Name() string
func (*ReadFileTool) Run ¶
func (t *ReadFileTool) Run(args map[string]string) (string, *FileChange, error)
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry はツールの登録・管理を行う
type RestoreBackupTool ¶ added in v0.31.0
type RestoreBackupTool struct{}
RestoreBackupTool restores a file from its backup
func (*RestoreBackupTool) Name ¶ added in v0.31.0
func (t *RestoreBackupTool) Name() string
func (*RestoreBackupTool) Run ¶ added in v0.31.0
func (t *RestoreBackupTool) Run(args map[string]string) (string, *FileChange, error)
type RunTestTool ¶
type RunTestTool struct{}
===== Run Test Tool =====
func (*RunTestTool) Name ¶
func (t *RunTestTool) Name() string
func (*RunTestTool) Run ¶
func (t *RunTestTool) Run(args map[string]string) (string, *FileChange, error)
type SearchCodeTool ¶
type SearchCodeTool struct{}
===== Search Code Tool =====
func (*SearchCodeTool) Name ¶
func (t *SearchCodeTool) Name() string
func (*SearchCodeTool) Run ¶
func (t *SearchCodeTool) Run(args map[string]string) (string, *FileChange, error)
type SearchFileTool ¶
type SearchFileTool struct{}
===== Search File Tool =====
func (*SearchFileTool) Name ¶
func (t *SearchFileTool) Name() string
func (*SearchFileTool) Run ¶
func (t *SearchFileTool) Run(args map[string]string) (string, *FileChange, error)
type StrReplaceTool ¶
type StrReplaceTool struct{}
===== Str Replace Tool =====
func (*StrReplaceTool) Name ¶
func (t *StrReplaceTool) Name() string
func (*StrReplaceTool) Run ¶
func (t *StrReplaceTool) Run(args map[string]string) (string, *FileChange, error)
type Tool ¶
type Tool interface {
// Name はツール名を返す
Name() string
// Run はツールを実行
// output: ツールの実行結果
// change: ファイル変更情報(変更がない場合はnil)
// err: エラー(エラーがない場合はnil)
Run(args map[string]string) (output string, change *FileChange, err error)
}
Tool はツールの共通インターフェース
type ToolCall ¶
type ToolCall struct {
Tool string `json:"tool"`
RawArgs map[string]any `json:"args"`
Args map[string]string
}
ToolCall はAIからのツール呼び出し
func ParseToolCall ¶
ParseToolCall はレスポンスからツール呼び出しを抽出(最初の1つのみ - 後方互換)
func ParseToolCalls ¶ added in v0.31.0
ParseToolCalls はレスポンスから全てのツール呼び出しを抽出 Markdownコードブロック内のJSONは除外する
func (*ToolCall) NormalizeArgs ¶ added in v0.31.0
func (tc *ToolCall) NormalizeArgs()
NormalizeArgs はRawArgsをArgsに変換(数値→文字列)
type ToolSafety ¶ added in v0.29.0
type ToolSafety int
ToolSafety はツールの安全性レベル
const ( // SafetyHigh - 読み取り専用操作(常に自動承認OK) SafetyHigh ToolSafety = iota // SafetyMedium - 書き込み操作(--auto-approve で承認) SafetyMedium // SafetyLow - 破壊的操作(常に確認必須) SafetyLow )
func GetToolSafety ¶ added in v0.29.0
func GetToolSafety(toolName string) ToolSafety
GetToolSafety は指定されたツールの安全性レベルを返す 定義されていないツールは SafetyMedium(中レベル)として扱う
type WebSearchTool ¶
type WebSearchTool struct{}
===== Web Search Tool =====
func (*WebSearchTool) Name ¶
func (t *WebSearchTool) Name() string
func (*WebSearchTool) Run ¶
func (t *WebSearchTool) Run(args map[string]string) (string, *FileChange, error)
type WriteFileTool ¶
type WriteFileTool struct{}
===== Write File Tool =====
func (*WriteFileTool) Name ¶
func (t *WriteFileTool) Name() string
func (*WriteFileTool) Run ¶
func (t *WriteFileTool) Run(args map[string]string) (string, *FileChange, error)
Source Files
¶
- append_file.go
- ast_grep.go
- bash.go
- builtin.go
- common.go
- confirm.go
- confirm_interactive.go
- copy_file.go
- create_dir.go
- delete_file.go
- delete_lines.go
- detector.go
- diff_files.go
- execute.go
- format.go
- git_add.go
- git_branch.go
- git_checkout.go
- git_commit.go
- git_diff.go
- git_log.go
- git_push.go
- git_stash.go
- git_status.go
- gitignore.go
- grep_replace.go
- http_request.go
- image.go
- insert_after.go
- insert_before.go
- interactive_mode.go
- lint.go
- list_dir.go
- move_file.go
- parsing.go
- prepend_file.go
- read_file.go
- registry.go
- restore_backup.go
- safety.go
- search_code.go
- search_file.go
- str_replace.go
- test.go
- test_helpers.go
- types.go
- validation.go
- web_search.go
- write_file.go