@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.
- package/README.md +2 -3
- package/dist/index.js +74 -16
- 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
|
-
|
|
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`
|
|
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
|
|
8383
|
-
outputPerMillion:
|
|
8384
|
-
cacheReadPerMillion: 0.
|
|
8397
|
+
inputPerMillion: 2,
|
|
8398
|
+
outputPerMillion: 12,
|
|
8399
|
+
cacheReadPerMillion: 0.2,
|
|
8400
|
+
cacheWritePerMillion: 2.5,
|
|
8385
8401
|
longContext: {
|
|
8386
8402
|
thresholdTokens: 272e3,
|
|
8387
|
-
inputPerMillion:
|
|
8388
|
-
outputPerMillion:
|
|
8389
|
-
cacheReadPerMillion: 0.
|
|
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:
|
|
8404
|
-
outputPerMillion:
|
|
8405
|
-
cacheReadPerMillion: 0.
|
|
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:
|
|
8409
|
-
outputPerMillion:
|
|
8410
|
-
cacheReadPerMillion: 0.
|
|
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",
|