wavetermdev/waveterm · error
missing filename parameter
Error message
missing filename parameter
What it means
read_text_file requires a "filename" parameter identifying the file to read. If the input object unmarshals fine but leaves Filename empty, parsing stops with this error because there is nothing to open.
Source
Thrown at pkg/aiusechat/tools_readfile.go:44
Origin *string `json:"origin"` // "start" or "end", defaults to "start"
Offset *int `json:"offset"` // lines to skip, defaults to 0
Count *int `json:"count"` // number of lines to read, defaults to DefaultLineCount
MaxBytes *int `json:"max_bytes"`
}
func parseReadTextFileInput(input any) (*readTextFileParams, error) {
result := &readTextFileParams{}
if input == nil {
return nil, fmt.Errorf("input is required")
}
if err := utilfn.ReUnmarshal(result, input); err != nil {
return nil, fmt.Errorf("invalid input format: %w", err)
}
if result.Filename == "" {
return nil, fmt.Errorf("missing filename parameter")
}
if result.Origin == nil {
origin := "start"
result.Origin = &origin
}
if *result.Origin != "start" && *result.Origin != "end" {
return nil, fmt.Errorf("invalid origin value '%s': must be 'start' or 'end'", *result.Origin)
}
if result.Offset == nil {
offset := 0
result.Offset = &offset
}
if *result.Offset < 0 {
return nil, fmt.Errorf("offset must be non-negative, got %d", *result.Offset)View on GitHub (pinned to a4447c1563)
Solutions
- Include a non-empty "filename" key in the input object.
- Rename "path"/"file" keys to "filename" for this tool.
- Validate that the intended path string is non-empty before issuing the call.
Example fix
// before
{"input": {"path": "/tmp/a.txt"}}
// after
{"input": {"filename": "/tmp/a.txt"}} Defensive patterns
Strategy: validation
Validate before calling
if params["filename"] == "" || params["filename"] == nil {
return errors.New("filename required")
} Type guard
func hasFilename(m map[string]any) bool {
s, ok := m["filename"].(string)
return ok && s != ""
} Try / catch
params, err := parseReadTextFileInput(input)
if err != nil && err.Error() == "missing filename parameter" {
// retry with {filename: intendedPath}
} Prevention
- Use the exact key "filename" (not path/file/target)
- Verify the path variable is non-empty before interpolation
- Template-review model tool-call prompts for key names
When it happens
Trigger: Calling read_text_file with an input object that omits "filename" or passes it as an empty string.
Common situations: Model-generated tool calls with typo'd keys ("file", "path"); agents confusing parameter names with the read_directory tool's "path"; empty variables interpolated into the call.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- input is required
- invalid origin value '%s': must be 'start' or 'end'
- offset must be non-negative, got %d
- count must be at least 1, got %d
- integer overflow
AI-assisted analysis of wavetermdev/waveterm@a4447c1563 (2026-09-01).
Data as JSON: /api/errors/4bbeecf95d1e7b46.
Report an issue: GitHub.