@tryarcanist/cli 0.1.254 → 0.1.256

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.
Files changed (3) hide show
  1. package/README.md +7 -10
  2. package/dist/index.js +12 -6
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -189,7 +189,6 @@ arcanist sessions create your-org/your-repo "finish this PR" --continue-pr https
189
189
  printf "add tests" | arcanist sessions create your-org/your-repo --prompt-stdin --json
190
190
  printf "add tests" | arcanist sessions create your-org/your-repo --prompt-stdin --wait
191
191
  arcanist sessions create your-org/your-repo - --model gpt-5.5
192
- arcanist sessions create your-org/your-repo "port to claude" --backend claude_code --model claude-opus-4-8
193
192
  arcanist sessions create your-org/your-repo "refactor auth" --reasoning-effort xhigh
194
193
  arcanist sessions create your-org/your-repo "use the saved login" --browser-identity identity-id
195
194
  arcanist sessions create your-org/your-repo "start signed out" --browser-identity none
@@ -198,7 +197,7 @@ arcanist sessions create your-org/your-repo "review the trace" --uploaded-file t
198
197
  arcanist sessions create your-org/your-repo "retry-safe create" --idempotency-key 1f0e6f1a-...
199
198
  ```
200
199
 
201
- `--backend` picks the agent runtime backend: `codex` (default) or `claude_code`. `--model` must be valid for the chosen backend and the CLI rejects a mismatch before any network call; run `arcanist models list` for the selectable models per backend. When `--model` is omitted the backend default is used. Non-codex backends require the matching provider credential configured in Settings.
200
+ `--model` pins the model for the session; the CLI rejects an unknown model before any network call. Run `arcanist models list` for the selectable models. When `--model` is omitted the default is used. Claude models run on the Codex runtime and require the Anthropic provider credential configured in Settings.
202
201
 
203
202
  `--wait` blocks until the created prompt finishes, prints the resulting PR/branch line in human-readable mode when it is already available, and exits non-zero if the prompt finishes with `status: failed`, making it suitable for cron or other schedulers that alert on command failure. JSON mode waits quietly and prints the create payload after the prompt completes successfully. `--poll-interval <ms>` tunes the completion check frequency.
204
203
 
@@ -226,7 +225,7 @@ The CLI derives separate session and prompt idempotency keys from the provided v
226
225
 
227
226
  `--onboarding` creates an onboarding session: the agent authors the repo's `.arcanist.json` (`appRuntime` runtime contract plus optional legacy `verify` metadata), a root `REVIEW.md` with repo-specific review checks (skipped only when the repo yields none), `.arcanist/` runtime files as needed, and `ARCANIST.md` only when the repo has no usable project doc, proves what it can inside its sandbox, and opens the setup PR ready for review. Zeus discovers and observes review commands itself; the live server-side `repo_review_config.verify_config_json` surface supplies test-coverage lens overrides. The onboarding behavior is driven by the bridge's canonical onboarding playbook, not the prompt, so `--onboarding` needs no prompt: `arcanist sessions create <repo> --onboarding --wait`. Any prompt supplied alongside `--onboarding` is ignored. Team use; not part of the external API surface.
228
227
 
229
- JSON mode returns `{sessionId, sessionUrl?, repoUrl, model?, agentRuntimeBackend?, reasoningEffort?, autoVerify?, baseBranch?, startBranch?, continuePrUrl?, continueMode?, onboarding?, promptId?}`. `sessionUrl` is emitted only when the server returns it; `agentRuntimeBackend` only when `--backend` is passed. With `--wait`, JSON mode also includes best-effort result fields when available: `prUrl?`, `publishedBranch?`, and `lastBranch?`.
228
+ JSON mode returns `{sessionId, sessionUrl?, repoUrl, model?, reasoningEffort?, autoVerify?, baseBranch?, startBranch?, continuePrUrl?, continueMode?, onboarding?, promptId?}`. With `--wait`, JSON mode also includes best-effort result fields when available: `prUrl?`, `publishedBranch?`, and `lastBranch?`.
230
229
 
231
230
  ### `arcanist sessions qa <pr-url>`
232
231
 
@@ -235,7 +234,6 @@ Starts a QA verification session for an existing GitHub pull request.
235
234
  ```bash
236
235
  arcanist sessions qa https://github.com/your-org/your-repo/pull/123
237
236
  arcanist sessions qa https://github.com/your-org/your-repo/pull/123 --model gpt-5.4
238
- arcanist sessions qa https://github.com/your-org/your-repo/pull/123 --backend claude_code --model claude-opus-4-8
239
237
  arcanist sessions qa https://github.com/your-org/your-repo/pull/123 --reasoning-effort xhigh
240
238
  arcanist sessions qa https://github.com/your-org/your-repo/pull/123 --wait
241
239
  arcanist sessions qa https://github.com/your-org/your-repo/pull/123 --idempotency-key 1f0e6f1a-...
@@ -245,9 +243,8 @@ The PR URL must be `https://github.com/<owner>/<repo>/pull/<number>`.
245
243
  The CLI derives the repo from that URL, creates a QA session with `qa: true` and `targetPrUrl`, then enqueues the verifier prompt (skipped when the server signals `promptAlreadyEnqueued`).
246
244
  Inspect progress with the session URL or the session events stream.
247
245
 
248
- `--backend` picks the agent runtime backend: `codex` (default) or `claude_code`.
249
- `--model` must be valid for the chosen backend, and the CLI rejects mismatches before any network call.
250
- When `--model` is omitted, the backend default is used.
246
+ `--model` pins the model for the QA session, and the CLI rejects an unknown model before any network call.
247
+ When `--model` is omitted, the default is used.
251
248
 
252
249
  `--wait` blocks until the enqueued QA prompt finishes and exits non-zero if the prompt fails.
253
250
  JSON mode waits quietly and prints the create payload after the prompt completes successfully.
@@ -257,7 +254,7 @@ JSON mode waits quietly and prints the create payload after the prompt completes
257
254
  The CLI derives separate session and prompt idempotency keys from the provided value.
258
255
  If session creation succeeds but prompt enqueue fails, retry the same command with the same `--idempotency-key`.
259
256
 
260
- JSON mode returns `{sessionId, sessionUrl?, repoUrl, targetPrUrl, model?, agentRuntimeBackend?, reasoningEffort?, promptId?}`.
257
+ JSON mode returns `{sessionId, sessionUrl?, repoUrl, targetPrUrl, model?, reasoningEffort?, promptId?}`.
261
258
  `promptId` is absent when the coordinator already enqueued the verifier prompt (no duplicate send). Active-verifier and per-PR run-limit conflicts both use exit code `4`; active-verifier errors include the existing session handle when the server returns it.
262
259
 
263
260
  ### `arcanist sessions send <session-id> [prompt]`
@@ -433,12 +430,12 @@ Creates a scheduled automation for a GitHub repo. Create/delete require a write-
433
430
  ```bash
434
431
  arcanist automations create your-org/your-repo "summarize new regressions" --cron "*/15 * * * *"
435
432
  arcanist automations create your-org/your-repo "audit N+1s" --cron "0 13 * * 5" --model gpt-5.5
436
- arcanist automations create your-org/your-repo "/audit-prod-docs https://docs.tryarcanist.com/" --cron "0 8 * * *" --slack-team-id T0123ABC --slack-channel-id C0456DEF
433
+ arcanist automations create your-org/your-repo "/your-repo-skill" --cron "0 8 * * *" --slack-team-id T0123ABC --slack-channel-id C0456DEF
437
434
  printf "summarize new regressions" | arcanist automations create your-org/your-repo --prompt-stdin --cron "*/15 * * * *" --json
438
435
  arcanist automations create https://github.com/your-org/your-repo - --cron "0 14 * * 1-5" --name "Weekday summary"
439
436
  ```
440
437
 
441
- Use `--model <model>` to pin the model for sessions started by the automation. Backend is derived from the model; non-codex backends such as Claude are limited to Arcanist team businesses. When `--model` is omitted the codex backend default is used.
438
+ Use `--model <model>` to pin the model for sessions started by the automation. When `--model` is omitted the Codex default is used.
442
439
 
443
440
  Use `--slack-team-id <team-id>` together with `--slack-channel-id <channel-id>` to deliver each completed automation digest into a Slack channel. Both flags are required together; the target workspace must already be connected to Arcanist and the bot must already be in the channel.
444
441
 
package/dist/index.js CHANGED
@@ -8725,7 +8725,7 @@ var AUTOMATION_ERROR_HINTS = {
8725
8725
  invalid_model: "Model is unknown or not selectable for its backend. Run `arcanist automations create --help` for allowed models.",
8726
8726
  repo_not_available: "Check that the token owner has GitHub access and Arcanist is installed for that repo.",
8727
8727
  duplicate_rule: "An enabled automation already exists for this repo, cron, and prompt.",
8728
- invalid_skill: "Use a leading slash skill that exists in the selected repo, for example: /audit-prod-docs",
8728
+ invalid_skill: "Use a leading slash skill that exists in the selected repo, for example: /your-repo-skill",
8729
8729
  invalid_slack_target: "Pass both --slack-team-id and --slack-channel-id to enable Slack delivery.",
8730
8730
  slack_workspace_not_connected: "Connect that Slack workspace to Arcanist before creating the automation.",
8731
8731
  slack_channel_unavailable: "Check the Slack channel ID and confirm the bot can see the channel.",
@@ -11549,6 +11549,13 @@ async function reviewCommand(prUrl, options = {}, command) {
11549
11549
  ...options.model !== void 0 ? { model: options.model } : {}
11550
11550
  })
11551
11551
  });
11552
+ if (trigger.skipped && trigger.reason === "duplicate_diff") {
11553
+ emit(command, options, trigger, (payload) => {
11554
+ const source = payload.sourcePrUrl ? sanitizeTerminalText(payload.sourcePrUrl) : "a prior pull request";
11555
+ console.log(`Zeus review skipped: this pull request has the same diff as ${source}.`);
11556
+ });
11557
+ return;
11558
+ }
11552
11559
  if (!options.wait || trigger.cached) {
11553
11560
  emit(command, options, trigger, (payload) => {
11554
11561
  if (payload.cached) console.log(`Zeus review already completed: ${payload.verdict ?? "unknown"}.`);
@@ -13136,7 +13143,7 @@ codex.command("use <state>").description("Turn using your saved Codex subscripti
13136
13143
  codex.command("status").description("Show Codex subscription availability and whether auth is saved").action((options, command) => codexStatusCommand(options, command));
13137
13144
  codex.command("logout").description("Deactivate the selector and remove the stored Codex subscription auth for your user").action((options, command) => codexLogoutCommand(options, command));
13138
13145
  var sessions = program.command("sessions").description("Session commands");
13139
- program.command("review <pr-url>").description("Run a Zeus review for a GitHub pull request").option("--focus <text>", "Focus the review on a specific concern").option("--model <model>", "Pin the reviewer model (Arcanist members only); defaults to automatic routing").option("--wait", "Wait for the review and print its verdict and findings").option("--poll-interval <ms>", "Polling interval in milliseconds while waiting (default 10000)").addHelpText(
13146
+ program.command("review <pr-url>").description("Run a Zeus review for a GitHub pull request").option("--focus <text>", "Focus the review on a specific concern").option("--model <model>", "Pin the reviewer model (Arcanist members only); defaults to the Codex reviewer").option("--wait", "Wait for the review and print its verdict and findings").option("--poll-interval <ms>", "Polling interval in milliseconds while waiting (default 10000)").addHelpText(
13140
13147
  "after",
13141
13148
  `
13142
13149
  Examples:
@@ -13144,9 +13151,8 @@ Examples:
13144
13151
  arcanist review https://github.com/org/repo/pull/123 --focus "Check auth" --wait
13145
13152
  arcanist review https://github.com/org/repo/pull/123 --model gpt-5.5 --wait
13146
13153
 
13147
- When the PR came from an Arcanist session, Zeus defaults to the runtime backend opposite
13148
- the author's as a cross-check; otherwise it uses the default Codex reviewer. --model pins
13149
- a specific reviewer model instead (members only).
13154
+ Zeus reviews with a pinned Codex reviewer model. --model pins a different reviewer model
13155
+ instead (members only).
13150
13156
  Zeus review is currently available to Arcanist members only.
13151
13157
  `
13152
13158
  ).action((prUrl, options, command) => reviewCommand(prUrl, options, command));
@@ -13319,7 +13325,7 @@ automations.command("create").description("Create a scheduled automation").argum
13319
13325
  Examples:
13320
13326
  arcanist automations create tryarcanist/arcanist "summarize regressions" --cron "*/15 * * * *"
13321
13327
  arcanist automations create tryarcanist/arcanist "audit N+1s" --cron "0 13 * * 5" --model gpt-5.5
13322
- arcanist automations create tryarcanist/arcanist "/audit-prod-docs https://docs.tryarcanist.com/" --cron "0 8 * * *" --slack-team-id T0123ABC --slack-channel-id C0456DEF
13328
+ arcanist automations create tryarcanist/arcanist "/audit-zeus-day yesterday" --cron "0 8 * * *" --slack-team-id T0123ABC --slack-channel-id C0456DEF
13323
13329
  printf "summarize regressions" | arcanist automations create tryarcanist/arcanist --prompt-stdin --cron "*/15 * * * *" --json
13324
13330
  `
13325
13331
  ).action((repoUrl, prompt, options, command) => createAutomationCommand(repoUrl, prompt, options, command));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryarcanist/cli",
3
- "version": "0.1.254",
3
+ "version": "0.1.256",
4
4
  "description": "CLI for Arcanist — create and manage coding agent sessions",
5
5
  "type": "module",
6
6
  "bin": {