listDirTool function
Creates the ls tool: lists directory entries sorted alphabetically
(case-insensitive), directories suffixed with /, capped at limit
entries (default defaultLsEntryLimit) and defaultToolMaxBytes bytes.
Implementation
AgentTool listDirTool(ExecutionEnv env) {
return AgentTool(
name: 'ls',
label: 'ls',
tier: ApprovalTier.read,
description:
'List directory contents. Returns entries sorted alphabetically, '
"with '/' suffix for directories. Output is truncated to "
'$defaultLsEntryLimit entries or ${defaultToolMaxBytes ~/ 1024}KB '
'(whichever is hit first).',
parameters: const {
'type': 'object',
'properties': {
'path': {
'type': 'string',
'description': 'Directory to list (default: current directory)',
},
'limit': {
'type': 'integer',
'description': 'Maximum number of entries to return (default: 500)',
},
},
},
execute: (arguments, cancelToken, onUpdate) async {
cancelToken?.throwIfCancelled();
final path = (arguments['path'] as String?) ?? '.';
final limit =
(arguments['limit'] as num?)?.toInt() ?? defaultLsEntryLimit;
return _listDirectory(env, path, limit, cancelToken);
},
);
}