declick 0.2.0
Everything an agent needs is now a declick command with the same JSON envelope and exit codes as the generated adapters.
- New commands:
run,status,doctor,auth,manifest,proposals,accept,recipes,recipe,skill,export,import,engines,version,path [--install],desk status|arm|disarm,remove <name> <verb>.helpexits 0.add --verbs a,b,--tag t,--engine e,--force;--recipesaccepts a file or-. - Every management command honors
--json(default when piped),--fields,--limit; errors are{ok:false,error,exit}envelopes.listsurvives a corrupt manifest.uiprints{url,port}on stdout and has an add form. - Flags:
--k=v,--no-flag, boolean flags never consume the next argument, repeated flags become arrays,--ends flags, bad--limitis exit 1, unknown flags on a verb are exit 1. Hyphenated query and body names work. - OpenAPI: relative server URLs resolve against the spec URL, server variables substitute, local
$refparameters and bodies resolve, path plus operation parameters dedupe, required query flags are enforced and shown, oauth2 / openIdConnect / cookie auth is sent, 204 and empty bodies succeed, form bodies use the right content type, missing operationIds no longer collide, reserved names are renamedparam-*, file sources are stored absolute. - Desktop:
findByPathbacktracks; a closed window is reported as such;last-error.jsonclears on success and after repair; undeclared{{vars}}are exit 1; stored recipes are validated; missing deskclaw is a clear message. - Authoring: the live replay goes through the governance guard; proposals are kept on every rejection including an unarmed desk; any ``` fence parses; timeouts are reported as timeouts; the child env is an allowlist; screen text is fenced as untrusted in the repair prompt;
mutatingdefaults to true. - Governance: shared
src/guard.mjswith a 3s timeout,r.okand decision checks,warnsurfaced, method-based risk scores,DECLICK_GUARD=strict. A block is a JSON envelope with exit 3. - Security: ui refuses foreign Host and Origin and non-JSON POSTs; adapter and verb names are validated on every path (no
../); SKILL.md frontmatter is quoted and sanitized and never overwrites a foreign skill; launchers refuse to shadow an existing executable; the secret scanner catches mid-string tokens and stops rejecting long kebab names; manifests are written atomically withmanifestVersion. removedeletes the launcher and the skill too.describeshows base URL or window and--full. SKILL.md gets runnable examples, thedeclick runfallback and engine-specific exit code advice. declick ships its own SKILL.md.- mcp and web stubs exit 1 (was 4, the auth code). YAML specs get a convert hint instead of a JSON parser error.
Install: npm i -g declick@0.2.0 · npm · declick.dev