@tryarcanist/cli 0.1.248 → 0.1.250

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 +2 -3
  2. package/dist/index.js +74 -16
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -191,7 +191,6 @@ printf "add tests" | arcanist sessions create your-org/your-repo --prompt-stdin
191
191
  arcanist sessions create your-org/your-repo - --model gpt-5.5
192
192
  arcanist sessions create your-org/your-repo "port to claude" --backend claude_code --model claude-opus-4-8
193
193
  arcanist sessions create your-org/your-repo "refactor auth" --reasoning-effort xhigh
194
- arcanist sessions create your-org/your-repo "verify this automatically" --auto-verify
195
194
  arcanist sessions create your-org/your-repo "use the saved login" --browser-identity identity-id
196
195
  arcanist sessions create your-org/your-repo "start signed out" --browser-identity none
197
196
  arcanist sessions create your-org/your-repo "fix release branch" --base-branch release/2026-06
@@ -203,7 +202,7 @@ arcanist sessions create your-org/your-repo "retry-safe create" --idempotency-ke
203
202
 
204
203
  `--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.
205
204
 
206
- Use `--auto-verify` to opt the created session into automatic QA verification after PR creation. Auto verification is default-off at session create unless another surface explicitly enables it.
205
+ `--auto-verify` is a deprecated no-op. The verifier child is no longer spawned at publish — QA runs only on an explicit request (GitHub `/qa`, Slack `/qa`, API, or the UI "Verify"/"QA Test PR" button). The flag is accepted for backward compatibility and no longer starts a verifier.
207
206
 
208
207
  Use `--browser-identity <id|none>` to attach a business browser identity to the session, or pass `none` to explicitly start without one. Access is authorized by the control plane when the session is created.
209
208
 
@@ -225,7 +224,7 @@ Sessions always start from a fresh sandbox (the warm sandbox pool was removed).
225
224
  `--idempotency-key <uuid>` is for manually retrying a create request that may have reached the server.
226
225
  The CLI derives separate session and prompt idempotency keys from the provided value.
227
226
 
228
- `--onboarding` creates an onboarding session: the agent authors the repo's `.arcanist.json` (`appRuntime` runtime contract plus optional `verify` review-preflight), 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. 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.
227
+ `--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.
229
228
 
230
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?`.
231
230
 
package/dist/index.js CHANGED
@@ -7993,6 +7993,7 @@ function assertSameAttempt(triggeredSessionId, settledSessionId, label) {
7993
7993
  var PHASES = [
7994
7994
  "idle",
7995
7995
  "running",
7996
+ "review_starting",
7996
7997
  "waiting_for_input",
7997
7998
  "finalizing",
7998
7999
  "review_listening",
@@ -8312,6 +8313,9 @@ var MODEL_REGISTRY = [
8312
8313
  // Default codex model after the gpt-5.5 downgrade; carries gpt-5.5's prior
8313
8314
  // "medium" default so default sessions keep the same reasoning effort.
8314
8315
  reasoning: { efforts: ["none", "low", "medium", "high", "xhigh"], default: "medium" },
8316
+ // No cacheWritePerMillion: the pricing page shows a dash in the cache-writes
8317
+ // column for gpt-5.4 and gpt-5.5, so the absence is deliberate, not an
8318
+ // oversight (checked 2026-07-30). The 5.6 family does publish that rate.
8315
8319
  pricing: {
8316
8320
  inputPerMillion: 2.5,
8317
8321
  outputPerMillion: 15,
@@ -8334,17 +8338,21 @@ var MODEL_REGISTRY = [
8334
8338
  contextWindow: 105e4,
8335
8339
  // Verified 2026-07-09 against OpenAI's GPT-5.6 migration guide and model
8336
8340
  // catalog: the alias routes to gpt-5.6-sol and supports max effort. Pricing
8337
- // mirrors gpt-5.6-sol since the alias resolves to it.
8341
+ // mirrors gpt-5.6-sol since the alias resolves to it. Cache-write rates
8342
+ // verified 2026-07-30 against the Standard tier at
8343
+ // developers.openai.com/api/docs/pricing.
8338
8344
  reasoning: { efforts: ["none", "low", "medium", "high", "xhigh", "max"], default: "medium" },
8339
8345
  pricing: {
8340
8346
  inputPerMillion: 5,
8341
8347
  outputPerMillion: 30,
8342
8348
  cacheReadPerMillion: 0.5,
8349
+ cacheWritePerMillion: 6.25,
8343
8350
  longContext: {
8344
8351
  thresholdTokens: 272e3,
8345
8352
  inputPerMillion: 10,
8346
8353
  outputPerMillion: 45,
8347
- cacheReadPerMillion: 1
8354
+ cacheReadPerMillion: 1,
8355
+ cacheWritePerMillion: 12.5
8348
8356
  }
8349
8357
  },
8350
8358
  sessionStart: { eligible: true }
@@ -8357,15 +8365,19 @@ var MODEL_REGISTRY = [
8357
8365
  capabilities: { codexToolSearch: true },
8358
8366
  contextWindow: 105e4,
8359
8367
  reasoning: { efforts: ["none", "low", "medium", "high", "xhigh", "max"], default: "medium" },
8368
+ // Cache-write rates verified 2026-07-30 against the Standard tier at
8369
+ // developers.openai.com/api/docs/pricing.
8360
8370
  pricing: {
8361
8371
  inputPerMillion: 5,
8362
8372
  outputPerMillion: 30,
8363
8373
  cacheReadPerMillion: 0.5,
8374
+ cacheWritePerMillion: 6.25,
8364
8375
  longContext: {
8365
8376
  thresholdTokens: 272e3,
8366
8377
  inputPerMillion: 10,
8367
8378
  outputPerMillion: 45,
8368
- cacheReadPerMillion: 1
8379
+ cacheReadPerMillion: 1,
8380
+ cacheWritePerMillion: 12.5
8369
8381
  }
8370
8382
  },
8371
8383
  sessionStart: { eligible: true }
@@ -8378,15 +8390,20 @@ var MODEL_REGISTRY = [
8378
8390
  capabilities: { codexToolSearch: true },
8379
8391
  contextWindow: 105e4,
8380
8392
  reasoning: { efforts: ["none", "low", "medium", "high", "xhigh", "max"], default: "medium" },
8393
+ // Verified 2026-07-30 against the Standard tier at
8394
+ // developers.openai.com/api/docs/pricing: short and long context input,
8395
+ // cached input, cache writes, and output.
8381
8396
  pricing: {
8382
- inputPerMillion: 2.5,
8383
- outputPerMillion: 15,
8384
- cacheReadPerMillion: 0.25,
8397
+ inputPerMillion: 2,
8398
+ outputPerMillion: 12,
8399
+ cacheReadPerMillion: 0.2,
8400
+ cacheWritePerMillion: 2.5,
8385
8401
  longContext: {
8386
8402
  thresholdTokens: 272e3,
8387
- inputPerMillion: 5,
8388
- outputPerMillion: 22.5,
8389
- cacheReadPerMillion: 0.5
8403
+ inputPerMillion: 4,
8404
+ outputPerMillion: 18,
8405
+ cacheReadPerMillion: 0.4,
8406
+ cacheWritePerMillion: 5
8390
8407
  }
8391
8408
  },
8392
8409
  sessionStart: { eligible: true }
@@ -8395,19 +8412,25 @@ var MODEL_REGISTRY = [
8395
8412
  id: OpenAIModel.GPT56Luna,
8396
8413
  name: "GPT-5.6 Luna",
8397
8414
  provider: "openai",
8415
+ overloadFallback: OpenAIModel.GPT56Terra,
8398
8416
  backends: [CODEX_AGENT_RUNTIME_BACKEND],
8399
8417
  capabilities: { codexToolSearch: true },
8400
8418
  contextWindow: 105e4,
8401
8419
  reasoning: { efforts: ["none", "low", "medium", "high", "xhigh", "max"], default: "medium" },
8420
+ // Verified 2026-07-30 against the Standard tier at
8421
+ // developers.openai.com/api/docs/pricing: short and long context input,
8422
+ // cached input, cache writes, and output.
8402
8423
  pricing: {
8403
- inputPerMillion: 1,
8404
- outputPerMillion: 6,
8405
- cacheReadPerMillion: 0.1,
8424
+ inputPerMillion: 0.2,
8425
+ outputPerMillion: 1.2,
8426
+ cacheReadPerMillion: 0.02,
8427
+ cacheWritePerMillion: 0.25,
8406
8428
  longContext: {
8407
8429
  thresholdTokens: 272e3,
8408
- inputPerMillion: 2,
8409
- outputPerMillion: 9,
8410
- cacheReadPerMillion: 0.2
8430
+ inputPerMillion: 0.4,
8431
+ outputPerMillion: 1.8,
8432
+ cacheReadPerMillion: 0.04,
8433
+ cacheWritePerMillion: 0.5
8411
8434
  }
8412
8435
  },
8413
8436
  sessionStart: { eligible: true }
@@ -9636,7 +9659,8 @@ function projectRetryStatus(data, index) {
9636
9659
  ...typeof data?.scope === "string" ? { scope: data.scope } : {},
9637
9660
  ...typeof data?.maxAttempts === "number" ? { maxAttempts: data.maxAttempts } : {},
9638
9661
  ...typeof data?.reason === "string" ? { reason: data.reason } : {},
9639
- ...typeof data?.retryAfterMs === "number" ? { retryAfterMs: data.retryAfterMs } : {}
9662
+ ...typeof data?.retryAfterMs === "number" ? { retryAfterMs: data.retryAfterMs } : {},
9663
+ ...typeof data?.fallbackModel === "string" ? { fallbackModel: data.fallbackModel } : {}
9640
9664
  };
9641
9665
  }
9642
9666
  function projectPromptRetrying(data, index) {
@@ -10105,6 +10129,16 @@ function resolveAuthoritativePromptEventsWithDiagnostics(raw) {
10105
10129
  };
10106
10130
  }
10107
10131
 
10132
+ // ../../shared/transcript/review-prompt-sections.ts
10133
+ var REVIEW_CALIBRATION_SECTION_HEADING = "## Previously declined findings on this repository (calibration)";
10134
+ var REVIEW_EXISTING_BOT_FINDINGS_SECTION_HEADING = "## Findings already reported by other reviewers";
10135
+ var REVIEW_STACK_NEIGHBOURS_SECTION_HEADING = "## Graphite stack neighbours";
10136
+ var REVIEW_PROMPT_ENRICHMENT_SECTION_HEADINGS = [
10137
+ REVIEW_CALIBRATION_SECTION_HEADING,
10138
+ REVIEW_EXISTING_BOT_FINDINGS_SECTION_HEADING,
10139
+ REVIEW_STACK_NEIGHBOURS_SECTION_HEADING
10140
+ ];
10141
+
10108
10142
  // ../../shared/transcript/prompt-display.ts
10109
10143
  var WRAPPED_CONTENT_BLOCK_RE = /<(user_content|instruction_content)\b[^>]*>[\s\S]*?<\/\1>/gi;
10110
10144
  var SCAFFOLDING_LINE_PATTERNS = [
@@ -10132,6 +10166,25 @@ var SCAFFOLDING_MARKERS = [
10132
10166
  /^Repository:\s+\S+$/im,
10133
10167
  /^\[arcanist:review-loop\b/im
10134
10168
  ];
10169
+ var REVIEW_PROMPT_FIRST_LINE_RE = /^Review pull request \S+ at its current head\./;
10170
+ function stripReviewPromptEnrichment(text) {
10171
+ const lines = text.split(/\r?\n/);
10172
+ const headingIndexes = [];
10173
+ const cutLineIndexes = [];
10174
+ lines.forEach((line, lineIndex) => {
10175
+ const headingIndex = REVIEW_PROMPT_ENRICHMENT_SECTION_HEADINGS.findIndex((heading) => line.trim() === heading);
10176
+ if (headingIndex === -1) return;
10177
+ headingIndexes.push(headingIndex);
10178
+ cutLineIndexes.push(lineIndex);
10179
+ });
10180
+ if (cutLineIndexes.length === 0) return text.trim();
10181
+ const isCanonicalRun = headingIndexes.every(
10182
+ (headingIndex, position) => position === 0 || headingIndex > (headingIndexes[position - 1] ?? -1)
10183
+ );
10184
+ if (!isCanonicalRun) return text.trim();
10185
+ const cutAt = cutLineIndexes[0] ?? 0;
10186
+ return lines.slice(0, cutAt).join("\n").trim();
10187
+ }
10135
10188
  function promptContainsScaffolding(text) {
10136
10189
  return SCAFFOLDING_MARKERS.some((pattern) => pattern.test(text));
10137
10190
  }
@@ -10148,6 +10201,9 @@ function derivePromptDisplayText(prompt) {
10148
10201
  }
10149
10202
  const reply = prompt.replyToText?.trim();
10150
10203
  if (reply && !promptContainsScaffolding(reply)) return reply;
10204
+ if (REVIEW_PROMPT_FIRST_LINE_RE.test(prompt.prompt.trimStart())) {
10205
+ return stripReviewPromptEnrichment(prompt.prompt.trim());
10206
+ }
10151
10207
  if (promptContainsScaffolding(prompt.prompt)) {
10152
10208
  const recovered = stripPromptScaffolding(prompt.prompt);
10153
10209
  if (recovered) return recovered;
@@ -10166,6 +10222,7 @@ var ERROR_CODES = [
10166
10222
  "aborted",
10167
10223
  "rate_limit",
10168
10224
  "api_error",
10225
+ "model_overloaded",
10169
10226
  "config_error",
10170
10227
  "failed_edits",
10171
10228
  "memory_enforcement_failed",
@@ -10208,6 +10265,7 @@ var ERROR_CODE_LABELS = {
10208
10265
  aborted: "Stopped by user",
10209
10266
  rate_limit: "Rate limited - please retry shortly",
10210
10267
  api_error: "Model service error",
10268
+ model_overloaded: "Model at capacity",
10211
10269
  config_error: "Configuration error",
10212
10270
  failed_edits: "Edit failure",
10213
10271
  memory_enforcement_failed: "Memory enforcement failed",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryarcanist/cli",
3
- "version": "0.1.248",
3
+ "version": "0.1.250",
4
4
  "description": "CLI for Arcanist — create and manage coding agent sessions",
5
5
  "type": "module",
6
6
  "bin": {