package tools import ( "context" "fmt" "os" llm "gitea.stevedudenhoeffer.com/steve/go-llm/v2" ) // WriteFileParams defines parameters for the write file tool. type WriteFileParams struct { Path string `json:"path" description:"File path to write"` Content string `json:"content" description:"Content to write to the file"` } // WriteFile creates a file writing tool. // // Example: // // tools := llm.NewToolBox(tools.WriteFile()) func WriteFile() llm.Tool { return llm.Define[WriteFileParams]("write_file", "Write content to a file (creates or overwrites)", func(ctx context.Context, p WriteFileParams) (string, error) { if err := os.WriteFile(p.Path, []byte(p.Content), 0644); err != nil { return "", fmt.Errorf("writing file: %w", err) } return fmt.Sprintf("Successfully wrote %d bytes to %s", len(p.Content), p.Path), nil }, ) }