@plune-ai/cli 0.14.3 → 0.16.0
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 +25 -3
- package/dist/cli.cjs +359 -107
- package/dist/index.cjs +34 -3
- package/dist/index.js +34 -3
- package/dist/reporter-core.cjs +161 -16
- package/dist/reporter-core.d.cts +75 -4
- package/dist/reporter-core.d.ts +75 -4
- package/dist/reporter-core.js +154 -11
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,7 +58,7 @@ passed with `-c <path>`). A minimal example:
|
|
|
58
58
|
version: 1
|
|
59
59
|
provider:
|
|
60
60
|
type: anthropic # anthropic | openai | openrouter
|
|
61
|
-
model: claude-
|
|
61
|
+
model: claude-sonnet-5-5
|
|
62
62
|
evals:
|
|
63
63
|
- id: example
|
|
64
64
|
prompt: "Answer concisely. {{question}}" # {{vars}} come from each dataset row
|
|
@@ -77,6 +77,23 @@ provider API key is read from the environment based on `provider.type`:
|
|
|
77
77
|
| OpenAI | `openai` | `OPENAI_API_KEY` |
|
|
78
78
|
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY` |
|
|
79
79
|
|
|
80
|
+
`model` is any id the provider serves; `plune init` starts you on `claude-sonnet-5-5`. A run's cost
|
|
81
|
+
is priced from a built-in table of current models — a model it does not list costs `0`, with a
|
|
82
|
+
warning, until you add its rates under `pricing:` (`input_per_1k_usd`, `output_per_1k_usd`). Leave
|
|
83
|
+
`temperature` out for Claude models released after Opus 4.6: they take none, and the API answers 400
|
|
84
|
+
to any value but the default. Plune sends no `temperature` unless the config sets one.
|
|
85
|
+
|
|
86
|
+
### Where the CLI reads its settings
|
|
87
|
+
|
|
88
|
+
Every command reads them the same way: from the environment first — what your shell or CI job
|
|
89
|
+
exported — then from a `.env` beside the config you named with `-c`, then from a `.env` in the
|
|
90
|
+
current directory. The first place that sets a variable wins, so a `.env` never overrides what is
|
|
91
|
+
already exported. That covers the provider keys above and every `PLUNE_*` variable (`PLUNE_TOKEN`,
|
|
92
|
+
`PLUNE_API_URL`, `PLUNE_RUN`, …) for `run`, `report`, `sync`, `ingest`, `login` and `run import`,
|
|
93
|
+
`start` and `finish` alike — no `dotenv` wrapper in your scripts. The token `plune login` saved is
|
|
94
|
+
the last resort, used only when `PLUNE_TOKEN` is set nowhere else. Nothing writes a `.env` for you;
|
|
95
|
+
`plune init` writes `.env.example`.
|
|
96
|
+
|
|
80
97
|
### Assertion types
|
|
81
98
|
|
|
82
99
|
| Type | Passes when… |
|
|
@@ -96,7 +113,7 @@ provider API key is read from the environment based on `provider.type`:
|
|
|
96
113
|
|
|
97
114
|
| Command | Summary |
|
|
98
115
|
| ------- | ------- |
|
|
99
|
-
| `plune run` | Run the suite. Flags: `--dry-run
|
|
116
|
+
| `plune run` | Run the suite. Flags: `--dry-run` (price the run from the model's rates — no provider key, no network), `--only <id\|tag>` (repeatable), `--bail`, `--no-cache`, `--concurrency <n>`, `--format console\|json\|markdown`, `-o, --output <file>`. |
|
|
100
117
|
| `plune report` | Re-render the most recent run. Flags: `--format`, `-o`. |
|
|
101
118
|
| `plune diff <baseline> <current>` | Compare two `plune run --format json` outputs and report pass→fail regressions. Flags: `--fail-on-regression`, `--format`, `-o`. |
|
|
102
119
|
| `plune init` | Scaffold `plune.yaml`, a sample dataset, and `.env.example`. Flags: `--yes` (non-interactive), `--force`. |
|
|
@@ -108,7 +125,7 @@ provider API key is read from the environment based on `provider.type`:
|
|
|
108
125
|
| `plune run finish <id>` | Close a platform run. This is what the reporter tells you to do for a run it had to leave open. Flags: `--terminate` to record it as cut short, `--reason <text>`. |
|
|
109
126
|
| `plune run exec -- <command>` | Open a run, run the command inside it, close the run — and exit with whatever the command returned. Sets `PLUNE_SHARED_RUN` for you, so anything reporting inside joins that run. Flags: `--key <externalKey>`. |
|
|
110
127
|
| `plune run delete <id>` | Delete a run and everything it produced — its results and the review-queue entries it raised. Approved test cases and the audit log stay. **Recoverable for six months** (ask Plune to put it back), then gone for good. No prompt: it is your data, and this command belongs in scripts. |
|
|
111
|
-
| `plune run report` | Replay `.plune/pending-results.jsonl` — send what the reporter could not. Flags: `--file <path>`. |
|
|
128
|
+
| `plune run report` | Replay `.plune/pending-results.jsonl` — send what the reporter could not. The lines of one reporter run go back as one run, with the commit and branch the reporter recorded. Once every result has gone the file is renamed to `pending-results.<time>.sent.jsonl`; if anything did not go, it stays as it was. Flags: `--file <path>`. |
|
|
112
129
|
| `plune ingest [dir]` | Record a [Cairn](https://github.com/plune-ai/cairn) run in Plune. Omit `[dir]` for the newest run under `./runs`, or name the directory holding `report.json`. Generated cases arrive as **review proposals** — nothing is created until a person approves it. |
|
|
113
130
|
| `plune pull [file]` | Write the project's test cases as **one Markdown document** — Testomat's classical format, plus Plune's own columns — to `plune/cases.md` (or `[file]`). Refuses to overwrite a file git sees as modified; `--force` overrides, `--suite <id>` takes one suite or folder and what is under it. |
|
|
114
131
|
| `plune push [file] [--dry-run]` | Send the document back. Cases are matched by `id`; a block without one becomes a draft; an unknown id is refused by line; **nothing is deleted**. Prints the report — created, updated, unchanged, refused, warnings — and with `--dry-run` writes nothing. Exit `4` when anything was refused. |
|
|
@@ -143,6 +160,11 @@ which reports as the run happens and needs no second step:
|
|
|
143
160
|
reporter: [['list'], ['@plune-ai/playwright']],
|
|
144
161
|
```
|
|
145
162
|
|
|
163
|
+
Either way a Playwright suite brings its screenshots: every image an attempt kept as a file — PNG,
|
|
164
|
+
JPEG or WebP, up to 2 MB each, 20 per result — is uploaded to that result, a passed test's too, so a
|
|
165
|
+
run in Plune shows each test with what it looked at. `plune run import` finds them where the report
|
|
166
|
+
says they are, so run it where the report was written; the summary counts any it could not find.
|
|
167
|
+
|
|
146
168
|
### Several jobs, one run
|
|
147
169
|
|
|
148
170
|
Two suites, or a sharded matrix, report into a single run when every job shares a key **and** knows
|