utcp_cli 0.1.1
utcp_cli: ^0.1.1 copied to clipboard
CLI transport for the Dart UTCP client: let LLM agents discover and call tools that run as local command-line programs.
0.1.1 #
- Docs: package cross-links, badges and platform notes.
0.1.0 #
- Initial release:
clicall template and protocol with multi-step commands, injection-safe argument placeholders,$CMD_<i>_OUTPUTreferences,env_vars,inherit_env_varsandworking_dir. - Discovery from command output, JSON output decoding, and process-tree cleanup on timeout, cancellation and
close(). - Bash placeholders in arithmetic contexts (
$(( )),(( )),[[ -gt ]],let,${...}, array subscripts,declare -i) are rejected, since bash would run code embedded in the value. - The bash scanner models heredocs (
<<,<<-, quoted and unquoted delimiters),casestatements,{ }groups and function bodies, and skips the wrapper wordsbuiltin,command,time,exec,nohup,envand a leading\, closinglet/declare -ibypasses that the earlier first-word check missed. A placeholder in a quoted-delimiter heredoc body, or in acaseinside a command substitution (unparseable on bash 3.2), is rejected. - An argument value with a substitution (
$(,${,$name, a backtick) inside[...]is rejected (naming the argument), as defense in depth against code in an array subscript. The joined values of one command are checked too, so a payload cannot be split across placeholders; text such asSee [docs](https://x) and run `make`and JSON arrays such as[1,2]pass. - The bash scanner treats
<<in arithmetic as a shift instead of a heredoc, and rejects a placeholder after a heredoc inside a command substitution whose end bash versions read differently (EOF)), so neither can leave a later value unquoted. - More contexts that evaluate a value as a number are rejected:
[...]=inname=(...),[[ -v ]]andtest -v, an assignment to a variable declared-i, wrapper options (command -p let,time -p let) and a quoted command name ('let'). - An escaped blank before
#(x\ #) no longer starts a comment in the bash scanner. - A command that installs a
trap '…' EXITno longer fails the call; the trap's output after the end marker is discarded. - Placeholders inside
"$(...)"and backticks stay one word and are never glob-expanded. - A bash command that ends the script (
exit,exec,set -e), or a script syntax error, fails the call instead of returning empty output. CliCommunicationProtocol(maxOutputBytes: ...)caps script output (10 MiB by default); a script over the limit is killed and the call fails.- An argument containing a NUL character, and a blank command, are rejected.
- The README documents keeping secrets out of
commandand marks Windows support experimental.