feat(cli): crafter-debug, the client agents drive an app with
Cli::Run is the whole client but its transport, so tests run it in process against a real Session; main will hand it the QUIC connection. - Commands: ls, status, cmds, help, call, get, set, pause, resume, step, wait, trace, log (with --follow), screenshot, quit, debugger, guide and version, with -i, --json and --timeout. - call types key=value from the command's argument schema (slot=1 is a number, name=1 a string, at.x=3 nests), so agents need no JSON for simple calls; a value that cannot fit its field is a usage error before anything is sent. - The instance comes from discovery; one running instance needs no -i. The record's protocol is checked before any request: a mismatch exits 4, says which side is newer and prints the app's own client. Other sources only warn. - A request with no reply is diagnosed: the app has exited, stopped in a debugger (with the attach command), or no longer calls Pump (with what to change). Exit codes: 2 usage, 3 no instance, 4 version, 5 timeout, 6 the app's error. - Output is short by default, arrays cut at 20 with a note; --json prints everything. `guide` is the full reference for agents. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
37e0d9b9ae
commit
34c60dcd34
7 changed files with 1359 additions and 10 deletions
|
|
@ -181,7 +181,8 @@ export namespace Crafter::Debug {
|
|||
|
||||
static Value Describe() {
|
||||
Value description = Detail::Type("integer");
|
||||
if constexpr (sizeof(T) < sizeof(std::int64_t)) {
|
||||
// The range only where it tells an agent something: 8 and 16 bits.
|
||||
if constexpr (sizeof(T) < sizeof(std::int32_t)) {
|
||||
description.Set("minimum", Value(std::numeric_limits<T>::min()));
|
||||
description.Set("maximum", Value(std::numeric_limits<T>::max()));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue