@plune-ai/cli 0.15.0 → 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 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-3-5-sonnet-latest
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`, `--only <id\|tag>` (repeatable), `--bail`, `--no-cache`, `--concurrency <n>`, `--format console\|json\|markdown`, `-o, --output <file>`. |
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. |