@mutagent/cli 0.2.21 → 0.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/bin/cli.js +52 -38
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
MutagenT CLI is the command-line client for the MutagenT AI platform. It handles
|
|
20
20
|
authentication, BYOK LLM providers, workspace Environments, managed agents, cloud
|
|
21
|
-
sandboxes and Helix sessions, and the
|
|
21
|
+
sandboxes and Helix sessions, and the Helix binary installer.
|
|
22
22
|
|
|
23
23
|
**Status:** all commands and flags below were verified against `mutagent --help`
|
|
24
24
|
(and each subcommand's `--help`) on this branch. `sandbox` is internal (everyday
|
|
@@ -47,7 +47,7 @@ For where the CLI sits relative to the rest of the platform, see the
|
|
|
47
47
|
- **LLM providers (BYOK)**: configure and test your own provider keys (`mutagent providers`), or copy them from a local Helix login (`mutagent providers mirror`)
|
|
48
48
|
- **Workspace Environments**: `mutagent env` holds the variables and secrets an agent's tools need, separate from LLM provider keys
|
|
49
49
|
- **Managed agents**: `mutagent agent` checks, packages, deploys and runs `agent.md` folders; `mutagent helix agent @slug` runs a deployed one in the cloud
|
|
50
|
-
- **Helix installer**: `mutagent install helix` installs the
|
|
50
|
+
- **Helix installer**: `mutagent install helix` installs the Helix binary into `~/.mutagent/bin` (no login needed)
|
|
51
51
|
- **Claude Code integration**: install the CLI skill (`mutagent skills install`) and session-telemetry hooks (`mutagent hooks install`)
|
|
52
52
|
- **Built-in feedback**: `mutagent feedback send` reports bugs and product feedback, optionally with your coding-agent session transcript
|
|
53
53
|
|
package/dist/bin/cli.js
CHANGED
|
@@ -19762,15 +19762,18 @@ var LEAVES = {
|
|
|
19762
19762
|
get: {
|
|
19763
19763
|
details: `Reads a revision's agentspec, parsed: id, kind, version, description,
|
|
19764
19764
|
criteria, tools, skills, harnesses, targets and instructions. Without --revision:
|
|
19765
|
-
the default slot's active revision, else the newest. A revision
|
|
19766
|
-
|
|
19765
|
+
the default slot's active revision, else the newest. A revision with no
|
|
19766
|
+
agentspec answers status absent (agent.md defines the agent; the spec is
|
|
19767
|
+
optional). A revision whose spec cannot be read answers status unreadable with
|
|
19768
|
+
the reason. Both exit 0: they are data.
|
|
19767
19769
|
--out writes the revision's raw agentspec.yaml bytes to a file; replacing an
|
|
19768
19770
|
existing file needs --force.
|
|
19769
19771
|
Examples:
|
|
19770
19772
|
mutagent agent spec get invoice-pricing --json
|
|
19771
19773
|
mutagent agent spec get invoice-pricing --out agentspec.yaml --force`,
|
|
19772
|
-
directive: ` Read-only on the platform. --json prints { slug, status, revision, path, spec }
|
|
19773
|
-
|
|
19774
|
+
directive: ` Read-only on the platform. --json prints { slug, status, revision, path, spec };
|
|
19775
|
+
{ status: "absent", path: null } when the revision has no agentspec (not an error);
|
|
19776
|
+
or { status: "unreadable", reason } when one is there but fails to read. With --out, 'written' names the file
|
|
19774
19777
|
and its digest. Replacing a file is destructive: confirm with the user before --force.`
|
|
19775
19778
|
},
|
|
19776
19779
|
diff: {
|
|
@@ -19826,29 +19829,40 @@ function parseRevision(value) {
|
|
|
19826
19829
|
usageError("--revision must be a revision such as v3 or 3.", "spec get");
|
|
19827
19830
|
return number;
|
|
19828
19831
|
}
|
|
19829
|
-
function
|
|
19832
|
+
function specCardLines(result) {
|
|
19830
19833
|
const where = `${String(result.slug)} v${String(result.revision)} ${typeof result.path === "string" ? result.path : "(no agentspec)"}`;
|
|
19834
|
+
if (result.status === "absent") {
|
|
19835
|
+
return [
|
|
19836
|
+
`${chalk2.bold(where)} ${chalk2.dim("no spec")}`,
|
|
19837
|
+
chalk2.dim(" agent.md defines this agent, so an agentspec is optional.")
|
|
19838
|
+
];
|
|
19839
|
+
}
|
|
19831
19840
|
if (result.status !== "readable") {
|
|
19832
|
-
|
|
19833
|
-
|
|
19834
|
-
|
|
19835
|
-
|
|
19836
|
-
|
|
19837
|
-
|
|
19838
|
-
|
|
19839
|
-
|
|
19840
|
-
|
|
19841
|
-
|
|
19842
|
-
|
|
19843
|
-
|
|
19844
|
-
|
|
19845
|
-
}
|
|
19846
|
-
|
|
19847
|
-
|
|
19848
|
-
|
|
19841
|
+
return [`${chalk2.bold(where)} ${chalk2.yellow("unreadable")}`, ` ${String(result.reason)}`];
|
|
19842
|
+
}
|
|
19843
|
+
const spec = result.spec;
|
|
19844
|
+
const lines = [
|
|
19845
|
+
`${chalk2.bold(where)} ${chalk2.dim(`profile ${spec.profile}`)}`,
|
|
19846
|
+
` id: ${spec.id} kind: ${spec.kind} version: ${spec.version || "(none)"}`
|
|
19847
|
+
];
|
|
19848
|
+
if (spec.description)
|
|
19849
|
+
lines.push(` ${spec.description}`);
|
|
19850
|
+
lines.push(` criteria (${String(spec.criteria.length)}):`);
|
|
19851
|
+
for (const c of spec.criteria)
|
|
19852
|
+
lines.push(` ${c.id || "-"} ${c.type ? `[${c.type}] ` : ""}${c.statement}`);
|
|
19853
|
+
for (const [label, values] of [["tools", spec.tools], ["skills", spec.skills], ["harnesses", spec.harnesses]]) {
|
|
19854
|
+
lines.push(` ${label}: ${values.length > 0 ? values.join(", ") : "-"}`);
|
|
19855
|
+
}
|
|
19856
|
+
lines.push(` targets: ${spec.targets.length > 0 ? spec.targets.map((t) => `${t.type}:${t.name}`).join(", ") : "-"}`);
|
|
19857
|
+
if (spec.instructions)
|
|
19858
|
+
lines.push(` instructions: ${spec.instructions.split(`
|
|
19849
19859
|
`)[0] ?? ""}${spec.instructions.includes(`
|
|
19850
19860
|
`) ? " …" : ""}`);
|
|
19851
|
-
|
|
19861
|
+
return lines;
|
|
19862
|
+
}
|
|
19863
|
+
function printCard(result) {
|
|
19864
|
+
for (const line of specCardLines(result))
|
|
19865
|
+
console.log(line);
|
|
19852
19866
|
const written = result.written;
|
|
19853
19867
|
if (written)
|
|
19854
19868
|
console.log(chalk2.green(`✓ Wrote ${written.file} (${String(written.bytes)} bytes)`));
|
|
@@ -23273,7 +23287,7 @@ name: mutagent-cli
|
|
|
23273
23287
|
description: |
|
|
23274
23288
|
Mutagent CLI - the command-line client for the Mutagent platform.
|
|
23275
23289
|
Guides coding agents through setup (login, init, providers, workspaces),
|
|
23276
|
-
installing
|
|
23290
|
+
installing Helix, and sending
|
|
23277
23291
|
product feedback, and deploying and running managed agents (agent.md folders).
|
|
23278
23292
|
Triggers: "mutagent", "mutagent cli", "mutagent login", "set up mutagent",
|
|
23279
23293
|
"install diagnostics", "install evaluator", "install helix", "mutagent install",
|
|
@@ -23407,7 +23421,7 @@ skill never inlines flags. The active surface:
|
|
|
23407
23421
|
| \`usage\` | Show usage + quota | [workflows/setup.md](./workflows/setup.md) |
|
|
23408
23422
|
| \`skills install\` | Install this skill into a project | [workflows/setup.md](./workflows/setup.md) |
|
|
23409
23423
|
| \`hooks install\` | Install Claude Code telemetry hooks | [workflows/setup.md](./workflows/setup.md) |
|
|
23410
|
-
| \`install helix\` | Install the
|
|
23424
|
+
| \`install helix\` | Install the Helix binary (diagnostics / evaluator are retired) | [workflows/install.md](./workflows/install.md) |
|
|
23411
23425
|
| \`agent\` | Check, pack, run locally, deploy, activate, list, inspect and retire managed agents | [workflows/agent-deployment.md](./workflows/agent-deployment.md) |
|
|
23412
23426
|
| \`feedback send\` | Send product feedback | [workflows/feedback.md](./workflows/feedback.md) |
|
|
23413
23427
|
|
|
@@ -23432,7 +23446,7 @@ Match the user's first request. Load ONLY the matching subfile per the table. Do
|
|
|
23432
23446
|
| User said / signal detected | Load subfile | Why |
|
|
23433
23447
|
|---|---|---|
|
|
23434
23448
|
| "log in", "authenticate", "set up mutagent", "init", "which workspace", "what models", "usage", "quota", "install the skill", "install hooks" | [workflows/setup.md](./workflows/setup.md) | Auth + project setup + discovery commands |
|
|
23435
|
-
| "install helix", "install diagnostics", "install evaluator", "add mutagent package" | [workflows/install.md](./workflows/install.md) |
|
|
23449
|
+
| "install helix", "install diagnostics", "install evaluator", "add mutagent package" | [workflows/install.md](./workflows/install.md) | Helix binary installer, no login (diagnostics/evaluator are retired → helix) |
|
|
23436
23450
|
| "agent.md", "deploy agent", "managed agent", "mutagent agent", "helix agent @slug" | [workflows/agent-deployment.md](./workflows/agent-deployment.md) | agent.md folder → check → deploy to a slot → run with \`helix agent @slug\` |
|
|
23437
23451
|
| "send feedback", "report a bug", "file feedback", "the CLI crashed" | [workflows/feedback.md](./workflows/feedback.md) | Product feedback (+ optional transcript) |
|
|
23438
23452
|
| Unclear / first time | run \`mutagent --help --json\` then reroute | Discover the surface before acting |
|
|
@@ -23444,7 +23458,7 @@ Match the user's first request. Load ONLY the matching subfile per the table. Do
|
|
|
23444
23458
|
| File | WHEN to load | WHY |
|
|
23445
23459
|
|---|---|---|
|
|
23446
23460
|
| [workflows/setup.md](./workflows/setup.md) | User is onboarding: login, init, config, workspaces, providers, usage, skill/hooks install | Auth + configuration + discovery |
|
|
23447
|
-
| [workflows/install.md](./workflows/install.md) | User wants to install Helix | \`install helix\`: the
|
|
23461
|
+
| [workflows/install.md](./workflows/install.md) | User wants to install Helix | \`install helix\`: the Helix binary into ~/.mutagent/bin |
|
|
23448
23462
|
| [workflows/agent-deployment.md](./workflows/agent-deployment.md) | User wants to deploy or run a managed agent, or run an agent.md locally | Slots (\`--env\`), revisions (\`vN\`), \`@slug\` runs, rollback and retire |
|
|
23449
23463
|
| [workflows/feedback.md](./workflows/feedback.md) | User wants to send feedback or report a bug | \`feedback send\` + \`--attach-transcript\` |
|
|
23450
23464
|
|
|
@@ -23673,8 +23687,8 @@ how they learn something sensitive was in the file at all.
|
|
|
23673
23687
|
"workflows/install.md": `---
|
|
23674
23688
|
name: mutagent-cli-workflows-install
|
|
23675
23689
|
description: |
|
|
23676
|
-
Install workflow. \`mutagent install helix\` installs the
|
|
23677
|
-
|
|
23690
|
+
Install workflow. \`mutagent install helix\` installs the Helix binary
|
|
23691
|
+
into ~/.mutagent/bin, the same result as
|
|
23678
23692
|
\`curl -fsSL https://install.mutagent.io/helix | bash\`. No login needed.
|
|
23679
23693
|
\`diagnostics\` and \`evaluator\` are RETIRED as install targets — both skills
|
|
23680
23694
|
now ship inside helix.
|
|
@@ -23691,7 +23705,7 @@ triggers:
|
|
|
23691
23705
|
# Workflow — Install Helix
|
|
23692
23706
|
|
|
23693
23707
|
> **\`helix\` is the only install target.** \`mutagent install helix\` installs the
|
|
23694
|
-
>
|
|
23708
|
+
> Helix binary (the Helix harness) at \`~/.mutagent/bin/helix\`, the same result as
|
|
23695
23709
|
> \`curl -fsSL https://install.mutagent.io/helix | bash\`.
|
|
23696
23710
|
>
|
|
23697
23711
|
> \`diagnostics\` and \`evaluator\` are **retired** — their npm packages are no
|
|
@@ -24003,7 +24017,7 @@ confirm before running (Core Rule 5).
|
|
|
24003
24017
|
## Cross-references
|
|
24004
24018
|
|
|
24005
24019
|
- [SKILL.md](../SKILL.md) → Core Rules + Task Router
|
|
24006
|
-
- [workflows/install.md](./install.md) → install the
|
|
24020
|
+
- [workflows/install.md](./install.md) → install the Helix binary (diagnostics / evaluator are retired)
|
|
24007
24021
|
`
|
|
24008
24022
|
};
|
|
24009
24023
|
var SKILL_CONTENT = SKILL_FILES["SKILL.md"] ?? "";
|
|
@@ -24187,7 +24201,7 @@ It never prompts. Without a sign-in it exits 3 (AUTH_REQUIRED) and names the sig
|
|
|
24187
24201
|
} else {
|
|
24188
24202
|
console.log("");
|
|
24189
24203
|
console.log(chalk17.bold(` What's next:`));
|
|
24190
|
-
console.log(` ${chalk17.cyan("mutagent install helix".padEnd(30))}${chalk17.dim("# the
|
|
24204
|
+
console.log(` ${chalk17.cyan("mutagent install helix".padEnd(30))}${chalk17.dim("# the Helix binary")}`);
|
|
24191
24205
|
console.log("");
|
|
24192
24206
|
console.log(chalk17.dim(" Your coding agent now knows these workflows — restart it to pick up"));
|
|
24193
24207
|
console.log(chalk17.dim(' the skill, then just say "set up Mutagent on this project".'));
|
|
@@ -25493,7 +25507,7 @@ var BY_DESIGN_ENTRIES = [
|
|
|
25493
25507
|
id: "mutagent-helix-not-on-npm",
|
|
25494
25508
|
title: "@mutagent/helix is not published to npm — on purpose",
|
|
25495
25509
|
looksLike: pairPatterns(HELIX_PKG, NOT_FOUND),
|
|
25496
|
-
reality: "Helix is not distributed through the public npm registry, so a 404 there is expected. It ships as
|
|
25510
|
+
reality: "Helix is not distributed through the public npm registry, so a 404 there is expected. It ships as the Helix binary from install.mutagent.io, verified against the checksums published beside it. Install it with: mutagent install helix"
|
|
25497
25511
|
},
|
|
25498
25512
|
{
|
|
25499
25513
|
id: "trace-lives-in-a-different-binary",
|
|
@@ -25818,13 +25832,13 @@ init_errors();
|
|
|
25818
25832
|
import { Command as Command12 } from "commander";
|
|
25819
25833
|
import chalk23 from "chalk";
|
|
25820
25834
|
function createInstallCommand(deps) {
|
|
25821
|
-
const install = new Command12("install").description("Install the
|
|
25835
|
+
const install = new Command12("install").description("Install the Helix binary on this machine").argument("<package>", `Package to install: ${VALID_PACKAGES.join(", ")}`).option("--channel <channel>", `Release channel: ${HELIX_CHANNELS.join(" or ")} (default: latest)`).addHelpText("after", `
|
|
25822
25836
|
${chalk23.bold("Examples:")}
|
|
25823
25837
|
${chalk23.dim("$")} mutagent install helix
|
|
25824
25838
|
${chalk23.dim("$")} mutagent install helix --channel candidate
|
|
25825
25839
|
${chalk23.dim("$")} mutagent install helix --json
|
|
25826
25840
|
|
|
25827
|
-
${chalk23.bold("helix")}: the
|
|
25841
|
+
${chalk23.bold("helix")}: the Helix binary (the Helix harness), the same one
|
|
25828
25842
|
\`curl -fsSL https://install.mutagent.io/helix | bash\` installs. It downloads
|
|
25829
25843
|
helix-<os>-<arch> for macOS or Linux (x64, arm64), verifies it against
|
|
25830
25844
|
checksums.txt from the same origin, writes ~/.mutagent/bin/helix and points the
|
|
@@ -30212,7 +30226,7 @@ function createHelixCommand() {
|
|
|
30212
30226
|
" Choose -p (one-shot), --mode json or --mode rpc (a steerable session) explicitly.",
|
|
30213
30227
|
" Without --prime the full Helix orchestrator runs; --prime runs the lean Prime agent.",
|
|
30214
30228
|
" Keep the session reference (hs1_...) printed on stderr; attach, send, signal and checkpoint take it.",
|
|
30215
|
-
" mutagent install helix installs the
|
|
30229
|
+
" mutagent install helix installs the Helix binary on this machine; this command runs it in the cloud.",
|
|
30216
30230
|
" Inside a git checkout, pass the git remote's owner/name to start with it checked out: --repository <owner/name> [--branch <name>].",
|
|
30217
30231
|
" On a refusal, show the returned fix: the Run: lines, the notes, and who has to act; do not invent other commands.",
|
|
30218
30232
|
" In --mode rpc/json a launch refusal is one JSON line on stderr: {success:false, code, error, suggestedAction,",
|
|
@@ -37860,7 +37874,7 @@ ${chalk64.yellow("Get started:")}
|
|
|
37860
37874
|
${chalk64.dim("Create an Environment: the variables and secrets a sandbox gets")}
|
|
37861
37875
|
4. mutagent helix --env staging -p "<task>"
|
|
37862
37876
|
${chalk64.dim("Run Helix on the task in a cloud sandbox and print its answer")}
|
|
37863
|
-
${chalk64.dim("To run Helix on this machine instead: mutagent install helix installs the
|
|
37877
|
+
${chalk64.dim("To run Helix on this machine instead: mutagent install helix installs the Helix binary")}
|
|
37864
37878
|
|
|
37865
37879
|
${chalk64.yellow("Managed agents:")}
|
|
37866
37880
|
mutagent agent deploy <agent.md> ${chalk64.dim("Check, upload and activate an agent.md folder (--env names the Environment whose slot is used)")}
|
|
@@ -37980,4 +37994,4 @@ if (process.env.CLI_VERSION) {
|
|
|
37980
37994
|
}
|
|
37981
37995
|
runCli(process.argv.slice(2), cliVersion);
|
|
37982
37996
|
|
|
37983
|
-
//# debugId=
|
|
37997
|
+
//# debugId=02AF2BDB9E29C77264756E2164756E21
|
package/package.json
CHANGED