research: row 96 stand-in-key test of CLIProxyAPI for role sessions (#1590)
Packet under agents/researcher/work/i1-proxy-test: private-netns harness, stand-in upstream, report, evidence. Stand-in keys only; running proxy untouched. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,274 @@
|
|||||||
|
# Row 96 (#1590): stand-in-key test of CLIProxyAPI for role sessions
|
||||||
|
|
||||||
|
Author: Researcher seat. Brief: `docs/plans/2026-10-12_local-model-proxy.md` § "Stand-in-key
|
||||||
|
test of CLIProxyAPI for role sessions". Reviewer: Dewey.
|
||||||
|
Evidence for every claim is in `out/`. The numbers below come from the final run
|
||||||
|
(`out/run.log`, started 2026-10-13T20:57:40Z).
|
||||||
|
|
||||||
|
## Verdict in short
|
||||||
|
|
||||||
|
- A second CLIProxyAPI process carries both pinned clients (Claude Code 2.1.296, pi 0.85.1)
|
||||||
|
through a streamed turn and a tool round trip, using only stand-in keys.
|
||||||
|
- Claude Code works with `ANTHROPIC_BASE_URL` + `ANTHROPIC_AUTH_TOKEN` as the session
|
||||||
|
allowlist stands. **Pi does not: it ignores `ANTHROPIC_BASE_URL`.** It needs a
|
||||||
|
`models.json` in the session's `HOME` (details in "Pi finding").
|
||||||
|
- Per-agent keys work from the command line: issue = 1 PUT, revoke = 1 DELETE, no restart,
|
||||||
|
effective on the next request. Keys survive a proxy restart.
|
||||||
|
- The upstream sees only the proxy's own key. The client key never leaves the proxy.
|
||||||
|
- What does not hold or is weak: attribution by client key (queue-only, 60 s window, plaintext
|
||||||
|
keys), the revoke call's key in the access log, silent multi-minute retry in Claude Code
|
||||||
|
on 401, and every management write rewriting the whole config file. See "What doesn't hold".
|
||||||
|
|
||||||
|
## Bounds kept
|
||||||
|
|
||||||
|
- No real credential, no spend, no request off the machine. Everything runs inside
|
||||||
|
`unshare -rn`: a private network namespace with only `lo`. The test processes cannot reach
|
||||||
|
the live proxy on 127.0.0.1:8317 or anything else. `out/run.log` line 3 lists the listeners
|
||||||
|
visible inside the namespace (18317, 18400 only).
|
||||||
|
- The running proxy was not called, restarted or configured. Its management key and config
|
||||||
|
content were never read. `run-all.sh` records before/after: pid 113963, start time, argv,
|
||||||
|
the 8317 listener, and `stat` (mtime, size) of its config. All identical
|
||||||
|
(`out/host-guard.before.txt`, `.after.txt`, `.diff` empty, `host-guard.txt`).
|
||||||
|
- Files under the live proxy's data directory (`core-start-output.log`, `usage.db`) did change
|
||||||
|
during the run. Those belong to the live proxy serving other clients (2 to 6 established
|
||||||
|
connections to 8317 from other host processes at the time). The test cannot touch them from
|
||||||
|
inside the namespace. They are listed as informational in `out/host-activity.txt`, not in the
|
||||||
|
verdict, because they would change whatever the test does.
|
||||||
|
- Nothing left behind: `cleanup.sh` ran, `out/host-guard.txt` says "left behind outside out/: 0".
|
||||||
|
|
||||||
|
## Proxy version, config fields, endpoints
|
||||||
|
|
||||||
|
`cli-proxy-api -h` and the startup line: **CLIProxyAPI 8.0.27, commit bf934162, built
|
||||||
|
2026-10-12T16:37:54Z** (`out/run.log` line 4; flags in `docs/proxy-help.txt`).
|
||||||
|
Started as `cli-proxy-api -config state/config.yaml -local-model` under `env -i HOME=… PATH=…`.
|
||||||
|
|
||||||
|
Config fields used, from `docs/config.example.v8.0.27.yaml` (the example config shipped
|
||||||
|
with 8.0.27; the line numbers are in that file):
|
||||||
|
|
||||||
|
| Field | Line | Used for |
|
||||||
|
|---|---|---|
|
||||||
|
| `config-version` | 10 | `8` |
|
||||||
|
| `server.host` / `port` | 24 | 127.0.0.1:18317 |
|
||||||
|
| `management.secret-key` | 89 | made-up key; an empty value disables management |
|
||||||
|
| `management.allow-remote` | 84 | `false` |
|
||||||
|
| `management.disable-control-panel` | 92 | `true` (no WebUI) |
|
||||||
|
| `access.api-keys` | 106, 108 | client keys the proxy accepts |
|
||||||
|
| `routing.retry.request-retry` | 149, 194 | `0` (no hidden proxy retries) |
|
||||||
|
| `oauth.auth-dir` | 884 | inside the packet, so request logs land there |
|
||||||
|
| `observability.logs.debug` / `logging-to-file` / `request-log` / `logs-max-total-size-mb` | 1114 to 1131 | per-request logs; size cap 200 MB |
|
||||||
|
| `observability.usage.usage-statistics-enabled` | 1133, 1135 | `true` |
|
||||||
|
| `observability.usage.redis-usage-queue-retention-seconds` | 1140 | default 60 (not set) |
|
||||||
|
| `api-keys.claude[]` (`name`, `base-url`, `keys[].api-key`) | ~650 to 720 | the proxy's own upstream: the stand-in server and its made-up key |
|
||||||
|
|
||||||
|
Management endpoints used, from `docs/management-api-v8.0.27.md`. Auth is
|
||||||
|
`Authorization: Bearer <management key>` (or `X-Management-Key`):
|
||||||
|
|
||||||
|
| Endpoint | Used for |
|
||||||
|
|---|---|
|
||||||
|
| `GET/PUT /v8/management/config/access/api-keys` | list, replace the client-key list |
|
||||||
|
| `DELETE /v0/management/api-keys?value=<key>` | remove one client key |
|
||||||
|
| `GET /v8/management/observability/usage/api-keys` | usage counters |
|
||||||
|
| `GET /v8/management/observability/usage/queue` | per-request usage events |
|
||||||
|
| `GET /v8/management/observability/logs` | log lines |
|
||||||
|
|
||||||
|
Also noted in the doc and not used: `PATCH` on the `access/api-keys` path, and
|
||||||
|
`/observability/logs/requests/<id>`. I did not test whether a v8 DELETE exists; the v0 one worked.
|
||||||
|
|
||||||
|
## Stand-in upstream
|
||||||
|
|
||||||
|
`stand-in-upstream.mjs`: HTTP on 127.0.0.1:18400, accepts only
|
||||||
|
`standin-upstream-key-0001` (`Authorization: Bearer` or `x-api-key`), records every request
|
||||||
|
as JSONL (`out/upstream.all.jsonl`), answers like the Messages API: SSE stream in three chunks,
|
||||||
|
a `Read` tool call when the prompt contains `TOOL-TEST`, and `ROUNDTRIP-OK: <tool result>`
|
||||||
|
when the history ends in the matching `tool_result`. It also answers `count_tokens` and
|
||||||
|
`/v1/models`.
|
||||||
|
|
||||||
|
## Client runs
|
||||||
|
|
||||||
|
Both clients ran through the repo's real adapters (`adapters/claude/adapter.sh`,
|
||||||
|
`adapters/pi/adapter.sh`) under `env -i` with only the session allowlist
|
||||||
|
(`packages/seat/src/session.mjs` `ENV_ALLOW`: `HOME`, `ANTHROPIC_API_KEY`,
|
||||||
|
`ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_BASE_URL`, `MOSAIC_CLAUDE_BIN`, …) plus the adapter's
|
||||||
|
`MOSAIC_*` inputs. Claude ran with `</dev/null` under `timeout -k 2`.
|
||||||
|
|
||||||
|
| Run | Exit | Result |
|
||||||
|
|---|---|---|
|
||||||
|
| `S2-claude-A` (Claude Code, key A) | 0 | `ROUNDTRIP-OK: 1 probe-file-content: STAND-IN-PROBE-7f3a 2`; 2 upstream requests (tool call, then tool result) |
|
||||||
|
| `S2-pi-A` (pi, key A, `models.json` override) | 0 | `ROUNDTRIP-OK: probe-file-content: STAND-IN-PROBE-7f3a`; 2 upstream requests |
|
||||||
|
| `S2-pi-env-A` (pi, key A, **no** override) | 1 | `Connection error.`; 0 upstream requests |
|
||||||
|
| `S3-claude-B` | 0 | streamed answer intact: `STAND-IN-ANSWER-11 (streamed in three chunks)` |
|
||||||
|
|
||||||
|
Per request, from `out/analysis.txt` (proxy request log = what the client sent; upstream log =
|
||||||
|
what arrived):
|
||||||
|
|
||||||
|
| Check | Claude Code | pi |
|
||||||
|
|---|---|---|
|
||||||
|
| Key the proxy saw | key A, `Authorization: Bearer` | key A, `x-api-key` |
|
||||||
|
| Key the upstream saw | `standin-upstream-key-0001` via `Authorization: Bearer`, accepted | same |
|
||||||
|
| Client key present anywhere in upstream headers | no | no |
|
||||||
|
| `anthropic-version` | `2023-06-01` → `2023-06-01` | same |
|
||||||
|
| `anthropic-beta` | 9 flags → same 9, identical | 1 flag → same, identical |
|
||||||
|
| `cache_control` blocks | 3 → 3 | 3 → 3 |
|
||||||
|
| Body | equal as JSON | equal as JSON |
|
||||||
|
| Headers dropped | none | `sec-fetch-mode`, `accept-language` |
|
||||||
|
| Headers changed | `x-stainless-package-version` 0.128.0 → 0.112.1 | none |
|
||||||
|
|
||||||
|
The proxy accepts both header styles for the client key. What it changed is limited to the SDK
|
||||||
|
version header and two browser-style headers; nothing the Anthropic API uses to select
|
||||||
|
behaviour was dropped. Caveat: the stand-in does not model what the real API does with these
|
||||||
|
headers, so this shows pass-through, not API acceptance.
|
||||||
|
|
||||||
|
### Pi finding
|
||||||
|
|
||||||
|
Pinned pi 0.85.1 ignores `ANTHROPIC_BASE_URL`. The Anthropic SDK reads that variable only
|
||||||
|
as a default; pi-ai passes the built-in model's hardcoded `baseUrl`
|
||||||
|
(`https://api.anthropic.com`), so a bare variable sends the request to api.anthropic.com
|
||||||
|
(here the namespace has no route, hence `Connection error`; on the host it would go out).
|
||||||
|
Pi's own documentation (`models.md` § "Overriding Built-in Providers") gives the supported
|
||||||
|
route: `~/.pi/agent/models.json` with `{"providers":{"anthropic":{"baseUrl":"<proxy URL>"}}}`,
|
||||||
|
no `/v1` suffix. `HOME` is on the allowlist, so a per-session `HOME` containing that file
|
||||||
|
works with `ANTHROPIC_API_KEY` carrying the client key. `inner.sh` kind `pi` does exactly this
|
||||||
|
(`state/home-<label>/.pi/agent/models.json`, 1 file).
|
||||||
|
|
||||||
|
Change needed for sessions: the session builder (or the pi adapter) must write that
|
||||||
|
`models.json` into the session's `HOME` when the proxy is in use. An env-only change is not
|
||||||
|
enough. Pi also prints `Warning: Model "claude-sonnet-5-5" not found for provider
|
||||||
|
"anthropic". Using custom model id.` on stderr; harmless here.
|
||||||
|
|
||||||
|
## Per-agent keys from the command line
|
||||||
|
|
||||||
|
| Step | Call | Result |
|
||||||
|
|---|---|---|
|
||||||
|
| Issue A and B | `PUT /v8/management/config/access/api-keys` with `[bootstrap, A, B]` (plus 1 GET before, 1 GET after to verify) | 200; A and B work on the very next request (`S1-A-immediately`, `S1-B-immediately`: HTTP 200). No restart. |
|
||||||
|
| Revoke A | `DELETE /v0/management/api-keys?value=A` (plus 1 GET to verify) | 200; A's next request: HTTP 401 `{"error":"Invalid API key"}`. B: still 200, Claude B run exit 0. |
|
||||||
|
| After restart | proxy killed and started again with the same config file | B 200, A 401 (`S4b-*`). Keys persist. |
|
||||||
|
|
||||||
|
Step count: issuing N keys is 1 write; revoking one is 1 write. A bootstrap key must stay in
|
||||||
|
the list so the proxy never falls into open mode (see below). No WebUI was used
|
||||||
|
(`disable-control-panel: true`).
|
||||||
|
|
||||||
|
Attribution, as observed:
|
||||||
|
|
||||||
|
- `GET …/usage/queue` has one event per request: `api_key` (the **full plaintext client key**),
|
||||||
|
`access_provider: config-inline`, `source` (upstream key), `request_id`, `failed`,
|
||||||
|
`fail.status_code`, user agent. Claude A run: 2 events with key A; pi A run: 2 events with
|
||||||
|
key A; Claude B: 1 event with key B. A revoked-key request leaves **no** event.
|
||||||
|
- Reads **drain**: a plain GET returns one event and removes it; `?count=100` returned all 3
|
||||||
|
pending events; the next read returned 0 (`out/queue-read-semantics.txt`). Undrained events
|
||||||
|
expire after 60 s (`redis-usage-queue-retention-seconds`, default 60). Evidence: the
|
||||||
|
upstream-down Claude run made about 8 failed requests but only the last was still in the
|
||||||
|
queue when read, while the usage counter says 13 failures in total.
|
||||||
|
- `GET …/usage/api-keys` is keyed by **upstream credential** (`http://127.0.0.1:18400|standin-upstream-key-0001`:
|
||||||
|
success/failed), not by client key. It cannot answer "what did agent A do".
|
||||||
|
- Request logs (`out/proxy-logs/v1-messages-*.log`) show the client key masked (first 4 and last
|
||||||
|
4: `sk-s...df78`), so A and B can be told apart in them when the tails differ. A refused
|
||||||
|
request produces a log with no upstream call.
|
||||||
|
|
||||||
|
## Unknown key, missing key, upstream down
|
||||||
|
|
||||||
|
| Case | Proxy reply | Claude Code prints | pi prints |
|
||||||
|
|---|---|---|---|
|
||||||
|
| Revoked key | 401 `{"error":"Invalid API key"}` | **nothing for 100 s**, then killed by the harness timeout (exit 124) | `401 {"error":"Invalid API key"}`, exit 1, immediate |
|
||||||
|
| Unknown key | same | **nothing for about 3 minutes** (181 s), then `Failed to authenticate. API Error: 401 {"error":"Invalid API key"}`, exit 1 | same as revoked |
|
||||||
|
| Missing key | 401 `{"error":"Missing API key"}` | `Not logged in · Please run /login` (checked client-side; the proxy logged no request from it), exit 1 | `No API key found for anthropic. Use /login …`, exit 1 |
|
||||||
|
| Upstream down | 500 `{"type":"error","error":{"type":"api_error","message":"Post \"…\": dial tcp 127.0.0.1:18400: connect: connection refused"}}` | silent retry, exit 124 at 100 s | `500 {…same body…}`, exit 1, after about 16 s of its own retries |
|
||||||
|
|
||||||
|
The 401 body is `{"error":"Invalid API key"}`, not Anthropic-shaped
|
||||||
|
(`{"type":"error","error":{…}}`). Claude Code treats it as retryable and backs off, which is what
|
||||||
|
makes a revoked key look like a hang. The 500 body is Anthropic-shaped.
|
||||||
|
|
||||||
|
## What holds
|
||||||
|
|
||||||
|
- Both clients work through the proxy with only allowlisted variables, one needing a
|
||||||
|
`models.json`.
|
||||||
|
- Streaming, tool calls and tool results round-trip intact. `cache_control` blocks and the
|
||||||
|
`anthropic-version`/`anthropic-beta` headers pass through unchanged.
|
||||||
|
- The upstream sees the proxy's own key, never the client key.
|
||||||
|
- Per-agent keys: issue and revoke are single management calls, immediate, persistent, B
|
||||||
|
unaffected by A's revocation.
|
||||||
|
|
||||||
|
## What doesn't hold, or needs a decision
|
||||||
|
|
||||||
|
1. **Plaintext keys.** Client keys are stored in plaintext in `config.yaml`
|
||||||
|
(`out/config.after-issue.yaml`), appear in full in the usage-queue events, and the v0
|
||||||
|
`DELETE …?value=<key>` writes the full key into the access log (`out/proxy-logs/main.log`
|
||||||
|
line 354: the revoked key A in clear). The PUT/GET paths and the request logs mask or omit it.
|
||||||
|
2. **Every management write rewrites the whole config.** The file comes back reordered,
|
||||||
|
4-space indented, with runtime defaults added and comments moved; the management
|
||||||
|
`secret-key` is replaced by a bcrypt hash at startup (`out/config.as-written.yaml` vs
|
||||||
|
`out/config.after-start.yaml`). A human-edited config file and API-issued keys fight over
|
||||||
|
one file.
|
||||||
|
3. **No per-client-key accounting.** The usage counters are per upstream credential. The
|
||||||
|
per-request events carry the client key but live 60 s and are drained on read. Per-agent
|
||||||
|
usage needs a collector that polls faster than every 60 s, or the request logs.
|
||||||
|
4. **Revoked or wrong keys look like a hang in Claude Code** (100 s to 3 min with no output).
|
||||||
|
The bus should not rely on the client to report a revocation; it should check the key before
|
||||||
|
starting the session or on a short timeout.
|
||||||
|
5. **Empty key list: unknown.** I kept a bootstrap key in `access.api-keys` throughout as a
|
||||||
|
precaution and never tested an empty list. The shipped example config says nothing about
|
||||||
|
what an empty list does (it may accept any caller). The design row should test it on a
|
||||||
|
stand-in before relying on "no keys means closed".
|
||||||
|
6. **Management key hashing at startup.** The proxy hashes `management.secret-key` in place on
|
||||||
|
first start. The generating tool must not rely on the plaintext file afterwards.
|
||||||
|
7. **Pi override.** See "Pi finding"; this is a code change in session setup.
|
||||||
|
8. **Stand-in limits.** The stand-in does not model the real Anthropic API's reaction to the
|
||||||
|
forwarded headers, nor rate limits, token counting or model routing. Routing a seat to the
|
||||||
|
real upstream is a separate step with real credentials, outside this row.
|
||||||
|
|
||||||
|
## What the #237 design row must settle
|
||||||
|
|
||||||
|
- **Where issued keys live.** The proxy keeps them in its own config (plaintext, rewritten on
|
||||||
|
each write). The stack needs its own record of key id → seat/session, written under the
|
||||||
|
data root, and a decision on whether the proxy config is treated as derived state that the
|
||||||
|
stack regenerates, or as authoritative.
|
||||||
|
- **How the bus hands a key to a session.** Today `ENV_ALLOW` carries one `ANTHROPIC_API_KEY`
|
||||||
|
or `ANTHROPIC_AUTH_TOKEN`. The key must arrive per session, runtime-only, not in argv or on
|
||||||
|
disk beyond the session's `HOME`. Pi additionally needs the `models.json` file in that
|
||||||
|
`HOME` (so the session `HOME` becomes part of the handoff).
|
||||||
|
- **Rotation.** Mechanically: PUT the new list, start sessions with the new key, DELETE the old
|
||||||
|
one (3 calls, no restart). Open points: running sessions hold the old key until they end;
|
||||||
|
the 60 s event window; whether a rotation window needs two keys per seat at once.
|
||||||
|
- **Revocation feedback.** Because Claude Code stalls on 401, decide who detects and reports a
|
||||||
|
revoked key (bus-side preflight against the proxy, or session timeout).
|
||||||
|
- **Accounting.** Whether per-seat usage comes from a queue poller, the request logs, or the
|
||||||
|
bus counting its own turns.
|
||||||
|
- **Who may call the management API.** The management key is outside this row's reach. The
|
||||||
|
design row decides which component holds it and how; no agent reads it.
|
||||||
|
|
||||||
|
## Rerun
|
||||||
|
|
||||||
|
```
|
||||||
|
cd agents/researcher/work/i1-proxy-test
|
||||||
|
./run-all.sh > out/run-all.console.txt 2>&1 # about 7 minutes
|
||||||
|
cat out/host-guard.txt out/analysis.txt
|
||||||
|
bash cleanup.sh # idempotent; run-all.sh already calls it
|
||||||
|
```
|
||||||
|
|
||||||
|
`run-all.sh` creates `state/`, starts the namespace, runs `inner.sh` (all scenarios S1 to S7),
|
||||||
|
analyses, calls `cleanup.sh`, and writes the host-guard verdict. `state/` is the only runtime
|
||||||
|
directory; `cleanup.sh` stops only processes whose cwd or command line is under this packet and
|
||||||
|
then deletes `state/`. Ports need no cleanup: the namespace disappears with its last process.
|
||||||
|
Requirements: `unshare` with unprivileged user namespaces, `node`, `curl`, `ss`, the proxy
|
||||||
|
binary at `~/.local/opt/EasyCLIProxyAPI/cpa-core/cli-proxy-api`, the repo's pinned `pi`
|
||||||
|
and `~/.local/bin/claude` (or `MOSAIC_CLAUDE_BIN`).
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
| File | Purpose |
|
||||||
|
|---|---|
|
||||||
|
| `run-all.sh`, `inner.sh`, `cleanup.sh` | harness, scenarios, cleanup |
|
||||||
|
| `stand-in-upstream.mjs`, `config.template.yaml` | the stand-in server and the made-up proxy config |
|
||||||
|
| `analyze.mjs` | pairs proxy logs with upstream records |
|
||||||
|
| `docs/` | cited sources: example config, management API doc, `-h` output |
|
||||||
|
| `out/` | evidence of the final run (all keys in it are made up) |
|
||||||
|
| `candidate-manifest.sha256` | sha256 of the packet files, for the gate |
|
||||||
|
|
||||||
|
## Not done
|
||||||
|
|
||||||
|
- Switching any live seat to a proxy; real credentials; the subscription-terms question;
|
||||||
|
#237 design or build; containerized sessions (I1).
|
||||||
|
- An empty key list, key rotation under a running session, `PATCH` on the key list, and the v8
|
||||||
|
equivalent of the DELETE were not exercised.
|
||||||
|
- The run did not take the test slot: it runs no suite, mutant or Docker, only a private
|
||||||
|
namespace on its own ports. The seat judged that without asking first and reports it in the
|
||||||
|
hand-off to Sage.
|
||||||
@@ -0,0 +1,129 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
// Row 96 (#1590) analysis. Usage: node analyze.mjs <out-dir>
|
||||||
|
//
|
||||||
|
// Reads what the test left in out/ and prints, per client run, what the client sent to the
|
||||||
|
// proxy (from the proxy's own request log: incoming headers and body) next to what the
|
||||||
|
// stand-in upstream actually received (from the upstream log). No network, no secrets:
|
||||||
|
// every key in these files is made up.
|
||||||
|
import { readFileSync, readdirSync, existsSync } from "node:fs";
|
||||||
|
import path from "node:path";
|
||||||
|
|
||||||
|
const out = process.argv[2];
|
||||||
|
if (!out) { console.error("usage: analyze.mjs <out-dir>"); process.exit(2); }
|
||||||
|
const read = (f) => readFileSync(path.join(out, f), "utf8");
|
||||||
|
const lines = (f) => (existsSync(path.join(out, f)) ? read(f).split("\n").filter(Boolean) : []);
|
||||||
|
|
||||||
|
// --- proxy request logs ---------------------------------------------------------------
|
||||||
|
function parseLog(text) {
|
||||||
|
const sections = {};
|
||||||
|
let name = null;
|
||||||
|
for (const line of text.split("\n")) {
|
||||||
|
const m = /^=== (.+) ===$/.exec(line);
|
||||||
|
if (m) { name = m[1]; sections[name] = []; continue; }
|
||||||
|
if (name) sections[name].push(line);
|
||||||
|
}
|
||||||
|
const headers = (arr) => {
|
||||||
|
const h = {};
|
||||||
|
for (const l of arr) {
|
||||||
|
if (l === "Body:") break;
|
||||||
|
const m = /^([A-Za-z0-9-]+): (.*)$/.exec(l);
|
||||||
|
if (m) h[m[1].toLowerCase()] = m[2];
|
||||||
|
}
|
||||||
|
return h;
|
||||||
|
};
|
||||||
|
const bodyAfter = (arr, marker) => {
|
||||||
|
const i = marker ? arr.indexOf(marker) : -1;
|
||||||
|
const raw = (marker ? arr.slice(i + 1) : arr).find((l) => l.startsWith("{"));
|
||||||
|
try { return raw ? JSON.parse(raw) : null; } catch { return null; }
|
||||||
|
};
|
||||||
|
const info = Object.fromEntries((sections["REQUEST INFO"] ?? []).map((l) => l.split(/: (.*)/s).slice(0, 2)).filter((p) => p[0]));
|
||||||
|
const up = sections["API REQUEST 1"];
|
||||||
|
const resp = sections["RESPONSE"] ?? [];
|
||||||
|
return {
|
||||||
|
ts: info.Timestamp,
|
||||||
|
url: info.URL,
|
||||||
|
incoming: { headers: headers(sections["HEADERS"] ?? []), body: bodyAfter(sections["REQUEST BODY"] ?? []) },
|
||||||
|
sentUp: up ? { headers: headers(up.slice(up.indexOf("Headers:") + 1)), body: bodyAfter(up, "Body:"), auth: (up.find((l) => l.startsWith("Auth:")) ?? "") } : null,
|
||||||
|
status: /^Status: (\d+)/.exec(resp[0] ?? "")?.[1] ?? null,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
const logDir = path.join(out, "proxy-logs");
|
||||||
|
const logs = existsSync(logDir)
|
||||||
|
? readdirSync(logDir).filter((f) => f.startsWith("v1-messages-")).map((f) => ({ f, ...parseLog(readFileSync(path.join(logDir, f), "utf8")) })).sort((a, b) => String(a.ts).localeCompare(String(b.ts)))
|
||||||
|
: [];
|
||||||
|
|
||||||
|
// --- helpers --------------------------------------------------------------------------
|
||||||
|
const count = (n) => (Array.isArray(n) ? n.reduce((s, v) => s + count(v), 0) : n && typeof n === "object" ? Object.entries(n).reduce((s, [k, v]) => s + (k === "cache_control" ? 1 : 0) + count(v), 0) : 0);
|
||||||
|
const TRANSPORT = new Set(["host", "content-length", "connection", "accept-encoding", "accept", "transfer-encoding"]);
|
||||||
|
const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
||||||
|
const keyLabel = (masked) => {
|
||||||
|
const m = /(?:Bearer )?(sk-s\S*|stan\S*)/.exec(masked ?? "");
|
||||||
|
const tail = m ? m[1].slice(-4) : null;
|
||||||
|
const keys = Object.fromEntries(["A", "B"].map((k) => [k, existsSync(path.join(out, `key-${k}.txt`)) ? read(`key-${k}.txt`).trim() : null]));
|
||||||
|
const hit = Object.entries(keys).find(([, v]) => v && tail && v.endsWith(tail));
|
||||||
|
return hit ? `key ${hit[0]} (${masked})` : masked ? `${masked}` : "none";
|
||||||
|
};
|
||||||
|
const allUp = lines("upstream.all.jsonl");
|
||||||
|
const labels = readdirSync(out).filter((f) => f.endsWith(".upstream.jsonl")).map((f) => f.replace(/\.upstream\.jsonl$/, "")).sort();
|
||||||
|
const allLabels = readdirSync(out).filter((f) => f.endsWith(".rc")).map((f) => f.replace(/\.rc$/, "")).sort();
|
||||||
|
|
||||||
|
console.log(`proxy request logs parsed: ${logs.length}; upstream requests recorded: ${allUp.length}`);
|
||||||
|
console.log(`stand-in upstream accepted only its own made-up key; any other presented key would be marked ok:false below.\n`);
|
||||||
|
|
||||||
|
for (const label of allLabels) {
|
||||||
|
const rc = read(`${label}.rc`).trim();
|
||||||
|
const stdout = read(`${label}.stdout`).trim().replace(/\s+/g, " ").slice(0, 160);
|
||||||
|
const stderr = existsSync(path.join(out, `${label}.stderr`)) ? read(`${label}.stderr`).trim().replace(/\s+/g, " ").slice(0, 200) : "";
|
||||||
|
const slice = lines(`${label}.upstream.jsonl`).map((l) => JSON.parse(l));
|
||||||
|
console.log(`## ${label}: exit ${rc}${rc === "124" ? " (killed by the harness timeout)" : ""}; upstream requests ${slice.length}`);
|
||||||
|
console.log(` client stdout: ${stdout || "(empty)"}`);
|
||||||
|
if (stderr) console.log(` client stderr: ${stderr}`);
|
||||||
|
const qf = path.join(out, `usage-queue.${label}.json`);
|
||||||
|
if (existsSync(qf)) {
|
||||||
|
let events = [];
|
||||||
|
try { events = JSON.parse(readFileSync(qf, "utf8")); } catch { /* not JSON */ }
|
||||||
|
const mine = Array.isArray(events) ? events : [];
|
||||||
|
console.log(` usage queue after the run: ${mine.length} event(s)${mine.length ? "; " + mine.map((e) => `client key ${e.api_key ?? "?"} (${e.access_provider}) failed=${e.failed}${e.fail ? ` status=${e.fail.status_code}` : ""}`).slice(0, 3).join(" | ") : ""}`);
|
||||||
|
}
|
||||||
|
for (const [i, u] of slice.entries()) {
|
||||||
|
const log = logs.find((l) => !l.claimed && l.sentUp && same(l.sentUp.body, u.body) && (l.claimed = true));
|
||||||
|
const inc = log?.incoming;
|
||||||
|
const uh = u.headers;
|
||||||
|
const ih = inc?.headers ?? {};
|
||||||
|
const dropped = Object.keys(ih).filter((h) => !TRANSPORT.has(h) && h !== "authorization" && h !== "x-api-key" && !(h in uh));
|
||||||
|
const changed = Object.keys(ih).filter((h) => !TRANSPORT.has(h) && h !== "authorization" && h !== "x-api-key" && h in uh && ih[h] !== uh[h]);
|
||||||
|
const added = Object.keys(uh).filter((h) => !TRANSPORT.has(h) && h !== "authorization" && h !== "x-api-key" && !(h in ih));
|
||||||
|
console.log(` upstream request ${i + 1}: ${u.method} ${u.url} reply=${u.summary?.reply ?? "-"} stream=${u.summary?.stream} tools=${JSON.stringify(u.summary?.tools)} tool_result_in_history=${u.summary?.has_tool_result}`);
|
||||||
|
if (!log) { console.log(" (no matching proxy request log)"); continue; }
|
||||||
|
console.log(` key the proxy saw : ${keyLabel(ih.authorization ?? ih["x-api-key"])} [header ${ih.authorization ? "Authorization: Bearer" : "x-api-key"}]`);
|
||||||
|
console.log(` key the upstream saw: ${u.auth.presented} via ${u.auth.header}, accepted=${u.auth.ok}; client key present in upstream headers: ${Object.values(uh).some((v) => /sk-standin-agent/.test(String(v)))}`);
|
||||||
|
console.log(` anthropic-version : client ${ih["anthropic-version"] ?? "-"} -> upstream ${uh["anthropic-version"] ?? "-"}`);
|
||||||
|
console.log(` anthropic-beta : ${ih["anthropic-beta"] === uh["anthropic-beta"] ? "identical" : "DIFFERENT"} (${(uh["anthropic-beta"] ?? "-").split(",").length} flags upstream; client ${(ih["anthropic-beta"] ?? "-").split(",").length})`);
|
||||||
|
if (ih["anthropic-beta"] !== uh["anthropic-beta"]) console.log(` client : ${ih["anthropic-beta"] ?? "-"}\n upstream: ${uh["anthropic-beta"] ?? "-"}`);
|
||||||
|
console.log(` cache_control blocks: client ${count(inc.body)} -> upstream ${u.summary?.cache_control_blocks}`);
|
||||||
|
console.log(` body : ${same(inc.body, u.body) ? "byte-for-byte equal as JSON" : "CHANGED"}`);
|
||||||
|
console.log(` headers dropped: ${dropped.join(", ") || "none"}; changed: ${changed.map((h) => `${h} ${ih[h]} -> ${uh[h]}`).join("; ") || "none"}; added: ${added.join(", ") || "none"}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- direct probes (curl to the proxy) and what the usage queue recorded for each ------
|
||||||
|
console.log("\n## direct probes (curl, one request each)");
|
||||||
|
for (const l of lines("probes.log")) {
|
||||||
|
const label = l.split(" ")[0];
|
||||||
|
const qf = path.join(out, `usage-queue.${label}.json`);
|
||||||
|
let events = [];
|
||||||
|
try { events = JSON.parse(readFileSync(qf, "utf8")); } catch { /* no queue file */ }
|
||||||
|
const ev = Array.isArray(events) ? events : [];
|
||||||
|
console.log(` ${l.slice(0, 120)}\n usage queue: ${ev.length} event(s)${ev.length ? "; client key " + ev.map((e) => `${e.api_key} failed=${e.failed}`).slice(0, 3).join(" | ") : ""}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- refusals the proxy logged (requests that never reached the upstream) ------------
|
||||||
|
const refused = logs.filter((l) => !l.sentUp);
|
||||||
|
console.log(`\nproxy request logs with no upstream call: ${refused.length}`);
|
||||||
|
const main = existsSync(path.join(logDir, "main.log")) ? readFileSync(path.join(logDir, "main.log"), "utf8") : "";
|
||||||
|
const status = {};
|
||||||
|
for (const m of main.matchAll(/gin_logger\.go:\d+\] (\d{3}) \|[^"]*"(\/[^"]*)"/g)) {
|
||||||
|
const k = `${m[1]} ${m[2].split("?")[0]}`;
|
||||||
|
status[k] = (status[k] ?? 0) + 1;
|
||||||
|
}
|
||||||
|
console.log("proxy HTTP status counts (main.log):", JSON.stringify(status));
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
679fe24e29e258c6a904ffc2147bf31447ff303996d11eaefb05c38b0284bd6b agents/researcher/work/i1-proxy-test/REPORT.md
|
||||||
|
513e46afca90d0840e7151e23bec61345f31a307ec4d3c149b2e1d59bb04f05a agents/researcher/work/i1-proxy-test/analyze.mjs
|
||||||
|
05357cb8d2371f7457f426aa428353d8b90b4c581eb31885fd7e214486f9a98c agents/researcher/work/i1-proxy-test/cleanup.sh
|
||||||
|
8f18f2a4b3c3111a4c626262b1086a0a83f200d33ad67bc09958c4f95abe13a7 agents/researcher/work/i1-proxy-test/config.template.yaml
|
||||||
|
33abc833b97351381a19f63d5ec928a2af7c80eb180890af768d247f36ba4523 agents/researcher/work/i1-proxy-test/docs/config.example.v8.0.27.yaml
|
||||||
|
a80149b9443a07dbc30ed2b3c4211006087830be14f58eb0e288c9a3599fd64f agents/researcher/work/i1-proxy-test/docs/management-api-v8.0.27.md
|
||||||
|
46a77d2934dccc232d10f6bc8ee73aeb72d6be8c2e5bce5d2dc4750901f25fae agents/researcher/work/i1-proxy-test/docs/proxy-help.txt
|
||||||
|
7a4b0b940f9914a5adec976b29465cdd37a5360bee5f350d2a30a80661e6e0ff agents/researcher/work/i1-proxy-test/inner.sh
|
||||||
|
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/researcher/work/i1-proxy-test/out/S2-claude-A.rc
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S2-claude-A.stderr
|
||||||
|
4dd870414769301d40b368472224b60efe6381079dfdcef395aea7aa86b46e54 agents/researcher/work/i1-proxy-test/out/S2-claude-A.stdout
|
||||||
|
d6304c84c6f58182beac44ed41d304a4efdfdb3a0e4dbe7a7d3b9e7d62a776c0 agents/researcher/work/i1-proxy-test/out/S2-claude-A.upstream.jsonl
|
||||||
|
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/researcher/work/i1-proxy-test/out/S2-pi-A.rc
|
||||||
|
ddce5d963511ba63d2cf873f36405d898265555d709706c9478f47cca73aa08f agents/researcher/work/i1-proxy-test/out/S2-pi-A.stderr
|
||||||
|
58750a9e303b6039916f620915b45762e0f3513be7571b82543a8aa884fa3d76 agents/researcher/work/i1-proxy-test/out/S2-pi-A.stdout
|
||||||
|
11da8ee399e9f79d899eb04620af8706d226c019b5902578313d865953af6df8 agents/researcher/work/i1-proxy-test/out/S2-pi-A.upstream.jsonl
|
||||||
|
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/researcher/work/i1-proxy-test/out/S2-pi-env-A.rc
|
||||||
|
b77d25567af630cb4ef99e5c54cfa55fe8cfe9702fe6c4c6a0349653fb600cca agents/researcher/work/i1-proxy-test/out/S2-pi-env-A.stderr
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S2-pi-env-A.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S2-pi-env-A.upstream.jsonl
|
||||||
|
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/researcher/work/i1-proxy-test/out/S3-claude-B.rc
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S3-claude-B.stderr
|
||||||
|
e0a08bf7557d303305dd3fbc68beac91a731b822732cfcfac14f75dc7c296952 agents/researcher/work/i1-proxy-test/out/S3-claude-B.stdout
|
||||||
|
18add26e2600e5b3604007770aee566eb3f4e4965980682afc50342a15de3040 agents/researcher/work/i1-proxy-test/out/S3-claude-B.upstream.jsonl
|
||||||
|
ca2ebdf97d7469496b1f4b78958f9dc8447efdcb623953fee7b6996b762f6fff agents/researcher/work/i1-proxy-test/out/S4-claude-A-revoked.rc
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S4-claude-A-revoked.stderr
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S4-claude-A-revoked.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S4-claude-A-revoked.upstream.jsonl
|
||||||
|
9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa agents/researcher/work/i1-proxy-test/out/S4-claude-B-after.rc
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S4-claude-B-after.stderr
|
||||||
|
eee4e5968972df7f351a48e69855ff48532e3f6f0022a2cc9ca0e5b8f70c2ac5 agents/researcher/work/i1-proxy-test/out/S4-claude-B-after.stdout
|
||||||
|
fcbe8f6818a1434bc4fc6b5ef5f3ae85427e7b470c3b271a503f9f38da2469c1 agents/researcher/work/i1-proxy-test/out/S4-claude-B-after.upstream.jsonl
|
||||||
|
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/researcher/work/i1-proxy-test/out/S4-pi-A-revoked.rc
|
||||||
|
ef7b39bbe9eccf77e4b5665f0499af56b07571778fda1e063a654f32d9d07e2d agents/researcher/work/i1-proxy-test/out/S4-pi-A-revoked.stderr
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S4-pi-A-revoked.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S4-pi-A-revoked.upstream.jsonl
|
||||||
|
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/researcher/work/i1-proxy-test/out/S5-claude-missing.rc
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-claude-missing.stderr
|
||||||
|
ca901b5be3db10d7195703bfaf9ad3b674be07855555b3cb8f6ed0555be38a59 agents/researcher/work/i1-proxy-test/out/S5-claude-missing.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-claude-missing.upstream.jsonl
|
||||||
|
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/researcher/work/i1-proxy-test/out/S5-claude-unknown.rc
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-claude-unknown.stderr
|
||||||
|
9392dda451fe38dbb7dae8bbafbc9cddaa787b94d330e117120b462b1f73ce21 agents/researcher/work/i1-proxy-test/out/S5-claude-unknown.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-claude-unknown.upstream.jsonl
|
||||||
|
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/researcher/work/i1-proxy-test/out/S5-pi-missing.rc
|
||||||
|
a32338267611d43dedf1ada5899011ecb1061e19aa69effbc610597838988d7d agents/researcher/work/i1-proxy-test/out/S5-pi-missing.stderr
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-pi-missing.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-pi-missing.upstream.jsonl
|
||||||
|
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/researcher/work/i1-proxy-test/out/S5-pi-unknown.rc
|
||||||
|
ef7b39bbe9eccf77e4b5665f0499af56b07571778fda1e063a654f32d9d07e2d agents/researcher/work/i1-proxy-test/out/S5-pi-unknown.stderr
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-pi-unknown.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S5-pi-unknown.upstream.jsonl
|
||||||
|
ca2ebdf97d7469496b1f4b78958f9dc8447efdcb623953fee7b6996b762f6fff agents/researcher/work/i1-proxy-test/out/S6-claude-B-upstream-down.rc
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S6-claude-B-upstream-down.stderr
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S6-claude-B-upstream-down.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S6-claude-B-upstream-down.upstream.jsonl
|
||||||
|
4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865 agents/researcher/work/i1-proxy-test/out/S6-pi-B-upstream-down.rc
|
||||||
|
04855e5e2a643b4a2e09a7789d07f05dd0aa5e5c389ce69ae1289f6686d1dc01 agents/researcher/work/i1-proxy-test/out/S6-pi-B-upstream-down.stderr
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S6-pi-B-upstream-down.stdout
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/S6-pi-B-upstream-down.upstream.jsonl
|
||||||
|
977984dd85910370270376e2135c89b4f32712a8987b86efc2134b86086b1f8a agents/researcher/work/i1-proxy-test/out/analysis.txt
|
||||||
|
b3bf54810d2d52acd16df101bd5123bb999801aef613d80641327d527d3c035d agents/researcher/work/i1-proxy-test/out/config.after-issue.yaml
|
||||||
|
c4fbea8528e1b30597df9cbac5aeb77546a9776fb5802c424db00ca1b7d34e54 agents/researcher/work/i1-proxy-test/out/config.after-revoke.yaml
|
||||||
|
02e73ac8d0f7464e6bc5b87556063a3bdb082aec18afdeb421697f65e76f48a9 agents/researcher/work/i1-proxy-test/out/config.after-start.yaml
|
||||||
|
c6c533c6450c81c26d8be53be51c40de8aecb34bad0cab20f14f39648b8f05c4 agents/researcher/work/i1-proxy-test/out/config.as-written.yaml
|
||||||
|
192fec19fb6783bbbffb643e67ae0b7e818d2355b5f991cdcd604820b2f19745 agents/researcher/work/i1-proxy-test/out/host-activity.txt
|
||||||
|
e735f984943e43da6c46b0931194886cd1a5542895f0c7a7f151599117c4761f agents/researcher/work/i1-proxy-test/out/host-guard.after.txt
|
||||||
|
e735f984943e43da6c46b0931194886cd1a5542895f0c7a7f151599117c4761f agents/researcher/work/i1-proxy-test/out/host-guard.before.txt
|
||||||
|
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 agents/researcher/work/i1-proxy-test/out/host-guard.diff
|
||||||
|
f0bd62c472b2b08846f3e50b34dd04879e0f3d66b394fcaa2335780733e635d7 agents/researcher/work/i1-proxy-test/out/host-guard.txt
|
||||||
|
ff15e48ccb2a025afe9e25cdaadb2accf10e8fdb831bcfa3c35769c5b49f28dc agents/researcher/work/i1-proxy-test/out/key-A.txt
|
||||||
|
7b2fdba82e66041ff630fcb452b958723acdae6d5ba896540072d18969b4b0d5 agents/researcher/work/i1-proxy-test/out/key-B.txt
|
||||||
|
7626edbc4a603eb053deb0d5a5bfcd844c1a71271bdc6253d64cc28b44df3f56 agents/researcher/work/i1-proxy-test/out/logs-endpoint.final.json
|
||||||
|
50d86571c4beeb7217e576e215e3436b188ec722bb2d8d7da3a4fce954090c64 agents/researcher/work/i1-proxy-test/out/mgmt-calls.log
|
||||||
|
dfd9a5a45a9bc2c6c961fde52341211c43746aa418522b0d8eee6a9f30f2036a agents/researcher/work/i1-proxy-test/out/probes.log
|
||||||
|
9f02c0086bec020ba2c335e141fafc014bc9a3b9341a22b350d4a6c6ce5a713f agents/researcher/work/i1-proxy-test/out/proxy-logs/api-hello-2026-10-13T155741-1.log
|
||||||
|
04d084bea9e3cb4b7a0543a9a3f8c2c6b41b005c80829d429a339a38fa1f3b8d agents/researcher/work/i1-proxy-test/out/proxy-logs/api-hello-2026-10-13T155756-2.log
|
||||||
|
3ba875cede249c134b1e7fef990cc6395c01050dc053501569ec81a399c2d17a agents/researcher/work/i1-proxy-test/out/proxy-logs/api-hello-2026-10-13T155757-3.log
|
||||||
|
f3d7a04efa3107a92102d6d4aa4338b1fc0aa7de624449ddef67f97535f5c327 agents/researcher/work/i1-proxy-test/out/proxy-logs/api-hello-2026-10-13T155937-4.log
|
||||||
|
820494413f83f4c27aa448ab52c8d4730d69c7b2a059ffaf46e54574ad7a69cd agents/researcher/work/i1-proxy-test/out/proxy-logs/api-hello-2026-10-13T155938-1.log
|
||||||
|
e76b035cd50e70274e839c52d974d5f7d711c10fa3309442dc8a8752f77d8079 agents/researcher/work/i1-proxy-test/out/proxy-logs/api-hello-2026-10-13T160239-2.log
|
||||||
|
0b46c2657bd67be1903d98100819dbf59a843a1ef7d6b4e7c2f4d242aa3f70f9 agents/researcher/work/i1-proxy-test/out/proxy-logs/api-hello-2026-10-13T160240-3.log
|
||||||
|
216fd911a3654664d2829f46fc739dc50210a550f8712dc63bcbb7591fc50f13 agents/researcher/work/i1-proxy-test/out/proxy-logs/main.log
|
||||||
|
dc7595e3580150e5ace2446977350ea10f8c6863fe030c7c1a938a59a5935727 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155740-226dc6e1.log
|
||||||
|
d8c5bcdc3454057a7b0e3db5d6ac0a79f0d43ed614cc267b62150df70408104e agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155740-4d08fb40.log
|
||||||
|
d86b04321647d05a615cbfaade2ec12914c664538c837eb7d07a64b63140e100 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155741-77dd3d79.log
|
||||||
|
4a078955b183e08363c74dda336c4638e4ac8599b31e588203bf272d6493531d agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155741-edc3cbeb.log
|
||||||
|
88d8fed7e5e3e17e513c7632549805ed15d66815afd306145694bea4f5aada09 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155756-28646971.log
|
||||||
|
94bd4c7b75d01b6d70263251fd99c240c5852667792867d6c77108ba8c910ffb agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155756-5c9d09ac.log
|
||||||
|
b350790e776bb69487cf54b352b2e0584ac30e4bfff78c65b3d9335fd29f7afc agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155756-7d3d5117.log
|
||||||
|
df3387e370b33dd51dd5f93868f93aaa6baa72d021b04b70837386aba52a1567 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155756-e06c4e7a.log
|
||||||
|
6240e9cdeaf0a7faf8b4137e0de3d9e53413debeb02b38fb49b51cb4efc61ff8 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155757-3ebfe5fe.log
|
||||||
|
82c8a6d2647ad1c618bdda647d6f733a15413fd27e012694dc2926923154c744 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155757-55c485a0.log
|
||||||
|
12153bcdf746053549ae79afbb2c64ee903140a6197599df587d9bedde062668 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155757-b537f217.log
|
||||||
|
5352affede2842849840bc3b9e69f61d21de8f79887c71ece8417f34df909378 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155759-3c332ae4.log
|
||||||
|
01e79d07220c95d9d621e651482a0cf938cb7da021cd7c9013082019f72e7c68 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155801-a39de9f2.log
|
||||||
|
bec9d350d0a4f9ee79bbb9e4160e9fa868fad30644550fe1e04b574661cb2092 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155806-42a5df1f.log
|
||||||
|
ae01220ebc73503d286d230d2ab5d0e117a5e2ae9cfe0c3e6ab13c5dee8b966e agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155815-56206dd3.log
|
||||||
|
d53f52cd5c9a15fa2cea1c7b31e863922415b138615e005baafa46e39c0fa4f0 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155831-54eb4702.log
|
||||||
|
336bb5d2d5caf99c9073d6f676c2b9c847946fe655ba05fb7c408992b1dedd75 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155909-6a7e5158.log
|
||||||
|
5b78614ce73aefac0173facc59c9414d088c5a9abde388ba4e940187596b731f agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155937-9ce43f01.log
|
||||||
|
031b095c579f84c3f178be906c04e0f3dd226b7217cc4a58d0f1f0015d768042 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155937-c5e90c32.log
|
||||||
|
173b0bdafd51fb917f254f9a50c364fec8465b72751c99e8b5f0daf5bf13b1fd agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155938-000680b9.log
|
||||||
|
99267ed4465d59ceda595108ed83fb5264f9cf1cf55dda8dcaf4b7e04f437e46 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155938-3e65ed72.log
|
||||||
|
8fd9425ce3c268780d8d343a4d66ef56007a3ac6ea242c285d07a5c2b3cc172f agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155938-56a17d37.log
|
||||||
|
2d6d69247121b74d62dd1567afa7a012f550e822174c112667a37039926c53c1 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155938-c5b576c8.log
|
||||||
|
bc19f591e86d27fc985b9e47f688dc7329aa1511df266257c2d023a2773447a4 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155938-e6f50339.log
|
||||||
|
2444a7e474d9127bd02eff0c8278c0148bf7b0bf102f5818912dc5bd262811fa agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155939-297451ab.log
|
||||||
|
80306f8b0be76fb94c8c60f509e1c302f33054146f33fd55e15d36f830b4b0c4 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155940-62bc3d1f.log
|
||||||
|
30f87215e8e3154385856809b091f6c8a256641fa232fed7534ee83b59828453 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155943-a20a6541.log
|
||||||
|
4596a761bb7f6b0007dda9440d5754fc005b583f1f7042fdc760d75e44d14858 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155947-270670d4.log
|
||||||
|
805a4bdd22e6976c174c9b51778aa3d23ff501d1fae694ef0de1051b3184d47a agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T155955-41163905.log
|
||||||
|
fc8376b1e2823fb842c17304d3118e76bca79c06a0b26d419390e867924d8d76 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160013-34b30b11.log
|
||||||
|
f0a692b88d1bc3677fd75b62cf4b3a5f02f593ee5db1a12713515fe63c1ff59f agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160049-c266012d.log
|
||||||
|
6d958e893ae3fd703c81b3728c24bced96c3a77bb3ead32a4e14e92d1a2fe0ef agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160126-bb34b220.log
|
||||||
|
a7e45465684873bcbe8bf27d322395b9a0e3d8505524a47c1970434dd35a7679 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160202-86769890.log
|
||||||
|
733eb7ea3406edf67bc7b53b190da102972df00a41a25ca254c1a3a8121c9f24 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160239-44d3fe12.log
|
||||||
|
938039be01365cef161b5fb7cbab82b08f423a996e135ad32ebe0541e0652b58 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160239-e1c39c58.log
|
||||||
|
8f29336e9f43899ba343240837ee0e6d648495867ff64266f63f5167a0ed362f agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160240-4aefd81f.log
|
||||||
|
86aa9f4fd1bc0d798d7a16ac204b1309358128a5b10971280ab2f41e088a9e18 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160240-eaf1c665.log
|
||||||
|
571e0964698016e06738dedba6a0c1227f74d50ef9241beb5d58e241e047d882 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160241-49a241d8.log
|
||||||
|
bdf8a73beaabf1aa335652e5c2a73fc8991df7f8808b824b1b881ea6ee26f726 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160242-722f4e46.log
|
||||||
|
0008f5cf0e1fe74f35c43883fcec4a3bb513e858f586b454dea4a027061eb00e agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160244-4653f804.log
|
||||||
|
1ba9f934e13a13d8799b0d9c0cdda595b0df1f84bf994991454943cd0b55dc4a agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160249-cdd40ca9.log
|
||||||
|
abc0c1c9653c9e77ead7adba18e6728dbc7d45f765b6502953b8f1f1837f7e09 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160259-05297f34.log
|
||||||
|
a4db6de07f3f4bf5c4560bb7f56ff8b783d3e3eb7090fb7c10a21641f681aedb agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160315-513819ae.log
|
||||||
|
55b152c1bd4069739f782a9581ed03577180807dbf87d5c14c1efce80bff5f4e agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160348-cfb7ac32.log
|
||||||
|
d5d2683d8ec257225a217125f20ddd4950f42dc4e5a78374b6c3648e066a6c31 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160421-c4bf5062.log
|
||||||
|
963c13367f8a8ea0f5cc72405a89690710412262eb96425f632a5d93ef10c520 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160425-91e21a9d.log
|
||||||
|
1e5ef0b7be820f97319705150415dfe324e85a1a8c58704393c49e762e6a2028 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160429-d855c755.log
|
||||||
|
0d2456b25d4aa8afa93ad77e46bc750e963b855d534adee4c3c844477c72bc7d agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160437-1d8ef141.log
|
||||||
|
03a1cac0420b9596e5b9a15fb02a1794fc037e4f65c3780de3d80eb99a511ed7 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160437-4b068ca8.log
|
||||||
|
6e0f06b2b08a220f83d2453f9022d0b73e7f1550a84c1d800b49fbe9c90dd015 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160437-5eadf774.log
|
||||||
|
5d9d8a05e5a959678c8eea7f76faabe349d6f1d8bebe03a74225058b71e8c141 agents/researcher/work/i1-proxy-test/out/proxy-logs/v1-messages-2026-10-13T160437-efd563be.log
|
||||||
|
fe512c30ace62de63ea4e5f4f82e484940b8891c8ed7c5294dbafee7de2f1d06 agents/researcher/work/i1-proxy-test/out/proxy.out.txt
|
||||||
|
b86113d90f45744c11cc361f036f789f80d422665d8cfd141b74ee24c59f303e agents/researcher/work/i1-proxy-test/out/queue-read-semantics.txt
|
||||||
|
53de4ed84c42aea72194d41979fc533515bb54ec203ab7b3152fb567fbca141d agents/researcher/work/i1-proxy-test/out/run-all.console.txt
|
||||||
|
fc376e4ed71ca0ca1305acbf33112586dcdb83c4a34c88bc1be0c7918927fc94 agents/researcher/work/i1-proxy-test/out/run.log
|
||||||
|
9b5b039a51f24dccd8b1e3d8b5760ed053ff07cafb6f30e5141c94ba8346d24e agents/researcher/work/i1-proxy-test/out/upstream.all.jsonl
|
||||||
|
db70aa2320deb857a193f7e54674b0bdf8bcc5c3e140d4cb6c1ea4b1445f2fde agents/researcher/work/i1-proxy-test/out/upstream.out.txt
|
||||||
|
efa884383784309b50028a011bfc9a19d82c1e8bb582d23e03fdfb03134d668b agents/researcher/work/i1-proxy-test/out/usage-api-keys.after-S2.json
|
||||||
|
9351d2fd1602c6e2f62e6362bdf7a85f57c8afeed88812c61b533baefa67eed4 agents/researcher/work/i1-proxy-test/out/usage-api-keys.after-S4.json
|
||||||
|
012125fe1b0fc5ef84b643e731f4d49e9c27a23187c03096aec7f7f799582703 agents/researcher/work/i1-proxy-test/out/usage-api-keys.final.json
|
||||||
|
e4d6f4f972c4bfd14c247d3046e2d56278737d9074e721125e02f53200dc3570 agents/researcher/work/i1-proxy-test/out/usage-queue.S1-A-immediately.json
|
||||||
|
3e951bf113766e3282ab08fee99d0d5c72acc2990cc8456da132170928ecc4a2 agents/researcher/work/i1-proxy-test/out/usage-queue.S1-B-immediately.json
|
||||||
|
1435c7ddca3462c2412dce08801a840c749c53b8108a2fc44308e4ee79031db4 agents/researcher/work/i1-proxy-test/out/usage-queue.S2-claude-A.json
|
||||||
|
f69f28047b4f3dbd6ef1fb3b09c19a6074c7efb8633fb1352cfa6663645b446b agents/researcher/work/i1-proxy-test/out/usage-queue.S2-pi-A.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S2-pi-env-A.json
|
||||||
|
7508402aa156833a08f87decdd9c07b8f275efa6f55006c568c9006e1b1f1a31 agents/researcher/work/i1-proxy-test/out/usage-queue.S3-claude-B.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S4-A-after-revoke.json
|
||||||
|
129bf45910ecd2f23cae8a1511bec561b013d01c609745537fb3886ce1e509f5 agents/researcher/work/i1-proxy-test/out/usage-queue.S4-B-after-revoke.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S4-claude-A-revoked.json
|
||||||
|
07f7494ee1001ddac05d79689de50a5e5b4296d1d7e87809ec3e63e7807a81d6 agents/researcher/work/i1-proxy-test/out/usage-queue.S4-claude-B-after.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S4-pi-A-revoked.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S4b-A-after-restart.json
|
||||||
|
26b3e1cb90d512714dece25fef552175e80d284aa1f63d3967dfb295295111ac agents/researcher/work/i1-proxy-test/out/usage-queue.S4b-B-after-restart.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S5-claude-missing.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S5-claude-unknown.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S5-missing.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S5-pi-missing.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S5-pi-unknown.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.S5-unknown.json
|
||||||
|
a10c0395de37325fab45fcc7d28c87e997766121752e69f4c0b47fae0ea6df19 agents/researcher/work/i1-proxy-test/out/usage-queue.S6-B-upstream-down.json
|
||||||
|
fd844a7e2f6daf1fdfd2b9851619eca0fba9f03950db67f6ba5279ded6cddc67 agents/researcher/work/i1-proxy-test/out/usage-queue.S6-claude-B-upstream-down.json
|
||||||
|
ca32cff2651d3afbfcae33cd10700c66deac73ed033fa85c179b81d4c58fa936 agents/researcher/work/i1-proxy-test/out/usage-queue.S6-pi-B-upstream-down.json
|
||||||
|
4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945 agents/researcher/work/i1-proxy-test/out/usage-queue.final.json
|
||||||
|
48496cefabe942728dd81321e2feb163314fe3955a82d3b839f0fed7dc107413 agents/researcher/work/i1-proxy-test/run-all.sh
|
||||||
|
f5ebb9f4b2af31c51c7deabcb0f2722689e86b0da5c8fb74b5ae1d56187718e0 agents/researcher/work/i1-proxy-test/stand-in-upstream.mjs
|
||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Row 96 (#1590): stop whatever the stand-in test left running and remove its runtime
|
||||||
|
# directory. Touches only this packet: a process is signalled only if its cwd is under
|
||||||
|
# state/ or its command line names a file the test starts (state/, inner.sh,
|
||||||
|
# stand-in-upstream.mjs). This script and its ancestors are never signalled. Ports need no
|
||||||
|
# cleanup: the test runs in a private network namespace that disappears with its last
|
||||||
|
# process. Evidence in out/ stays.
|
||||||
|
set -u
|
||||||
|
PKT=$(cd "$(dirname "$0")" && pwd)
|
||||||
|
|
||||||
|
# this shell and every ancestor
|
||||||
|
skip=" "
|
||||||
|
pid=$$
|
||||||
|
while [ -n "$pid" ] && [ "$pid" != 0 ]; do
|
||||||
|
skip="$skip$pid "
|
||||||
|
pid=$(awk '/^PPid:/ {print $2}' "/proc/$pid/status" 2>/dev/null)
|
||||||
|
done
|
||||||
|
|
||||||
|
is_ours() { # pid
|
||||||
|
local cwd cmd
|
||||||
|
cwd=$(readlink "/proc/$1/cwd" 2>/dev/null) || return 1
|
||||||
|
case "$cwd" in "$PKT/state"|"$PKT/state"/*) return 0 ;; esac
|
||||||
|
cmd=$(tr '\0' ' ' < "/proc/$1/cmdline" 2>/dev/null) || return 1
|
||||||
|
case "$cmd" in *"$PKT/state/"*|*"$PKT/inner.sh"*|*"$PKT/stand-in-upstream.mjs"*) return 0 ;; esac
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
found=0
|
||||||
|
for p in /proc/[0-9]*; do
|
||||||
|
pid=${p#/proc/}
|
||||||
|
case "$skip" in *" $pid "*) continue ;; esac
|
||||||
|
if is_ours "$pid"; then
|
||||||
|
found=$((found + 1))
|
||||||
|
echo "stopping pid $pid: $(tr '\0' ' ' < "$p/cmdline" | cut -c1-120)"
|
||||||
|
kill "$pid" 2>/dev/null
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ "$found" = 0 ] || sleep 1
|
||||||
|
for p in /proc/[0-9]*; do
|
||||||
|
pid=${p#/proc/}
|
||||||
|
case "$skip" in *" $pid "*) continue ;; esac
|
||||||
|
if is_ours "$pid"; then echo "force-killing pid $pid"; kill -9 "$pid" 2>/dev/null; fi
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -rf "$PKT/state"
|
||||||
|
echo "cleanup done: $found process(es) signalled, state/ removed: $([ -e "$PKT/state" ] && echo NO || echo yes)"
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Made-up CLIProxyAPI v8.0.27 config for the row 96 (#1590) test. run-all.sh fills the
|
||||||
|
# @...@ placeholders into state/config.yaml; nothing here is a real credential.
|
||||||
|
# Each field is cited to docs/config.example.v8.0.27.yaml (line numbers in REPORT.md).
|
||||||
|
config-version: 8
|
||||||
|
|
||||||
|
server:
|
||||||
|
host: "127.0.0.1"
|
||||||
|
port: @PROXY_PORT@
|
||||||
|
|
||||||
|
management:
|
||||||
|
allow-remote: false
|
||||||
|
secret-key: "@MGMT_KEY@"
|
||||||
|
disable-control-panel: true
|
||||||
|
|
||||||
|
# Client keys. One bootstrap key keeps the proxy out of open mode; the test replaces the
|
||||||
|
# list through the management API.
|
||||||
|
access:
|
||||||
|
api-keys:
|
||||||
|
- "@BOOTSTRAP_KEY@"
|
||||||
|
|
||||||
|
routing:
|
||||||
|
retry:
|
||||||
|
request-retry: 0
|
||||||
|
|
||||||
|
oauth:
|
||||||
|
auth-dir: "@STATE@/auth"
|
||||||
|
|
||||||
|
observability:
|
||||||
|
logs:
|
||||||
|
debug: true
|
||||||
|
logging-to-file: true
|
||||||
|
request-log: true
|
||||||
|
logs-max-total-size-mb: 200
|
||||||
|
usage:
|
||||||
|
usage-statistics-enabled: true
|
||||||
|
|
||||||
|
# The proxy's own upstream key group: the stand-in server is its Claude upstream.
|
||||||
|
api-keys:
|
||||||
|
claude:
|
||||||
|
- name: standin
|
||||||
|
base-url: "http://127.0.0.1:@UPSTREAM_PORT@"
|
||||||
|
keys:
|
||||||
|
- api-key: "@UPSTREAM_KEY@"
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,163 @@
|
|||||||
|
# v8 Management API
|
||||||
|
|
||||||
|
The base path is `/v8/management`. Configuration endpoints follow the structure in
|
||||||
|
[config.example.yaml](../config.example.yaml); operational endpoints are grouped
|
||||||
|
by function. The existing `/v0/management` API remains supported. Its reference is
|
||||||
|
available in the [management API guide](https://help.router-for.me/management/api).
|
||||||
|
|
||||||
|
## Access
|
||||||
|
|
||||||
|
The v8 endpoints use the same management key and remote-access policy as v0.
|
||||||
|
Send `Authorization: Bearer <management-key>` or `X-Management-Key: <management-key>`.
|
||||||
|
OAuth callbacks validate a pending login state and do not require a management-key
|
||||||
|
header. Home mode disables local management endpoints for both versions.
|
||||||
|
|
||||||
|
## Configuration endpoints
|
||||||
|
|
||||||
|
All paths below are relative to `/v8/management`.
|
||||||
|
|
||||||
|
| Path | Methods | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `/config` | GET, PUT, PATCH | Read, replace, or merge the complete configuration as JSON. |
|
||||||
|
| `/config.yaml` | GET, PUT | Read or replace the complete configuration as YAML. |
|
||||||
|
| `/config/<section>/<field>` | GET, PUT, PATCH, DELETE | Read or modify a section or field using its path in the v8 tree. |
|
||||||
|
|
||||||
|
GET renders the persisted configuration in the v8 layout without migrating the
|
||||||
|
file or adding omitted runtime defaults. Successful v8 configuration writes save
|
||||||
|
the latest layout; reads and rejected writes leave the file unchanged.
|
||||||
|
Historical v8 paths and request bodies remain accepted as aliases.
|
||||||
|
|
||||||
|
JSON writes accept the value directly, without a `{ "value": ... }` envelope.
|
||||||
|
PUT replaces its target. PATCH merges objects and replaces lists and scalars.
|
||||||
|
Scalar field updates retain existing comments; complete replacements use the submitted document.
|
||||||
|
DELETE removes a field. Paths identify mapping keys, not array indexes; replace
|
||||||
|
an entire list to change its entries. Optional per-key `null` overrides inherit
|
||||||
|
the corresponding group value. Legacy field names are rejected by v8 writes.
|
||||||
|
|
||||||
|
| Example path | Value or purpose |
|
||||||
|
| --- | --- |
|
||||||
|
| `/config/access/api-keys` | Client authentication keys, for example `["client-key"]`. |
|
||||||
|
| `/config/api-keys` | All upstream provider groups. |
|
||||||
|
| `/config/api-keys/codex` | Codex upstream groups. |
|
||||||
|
| `/config/client/codex/optimize-multi-agent-v2` | Boolean, default `false`; applies to Codex clients across OAuth and API-key routes. |
|
||||||
|
| `/config/observability/logs/debug` | A boolean, for example `true`. |
|
||||||
|
| `/config/routing/retry/request-retry` | A number, for example `0`. |
|
||||||
|
| `/config/plugins/configs/<id>` | A plugin configuration object. |
|
||||||
|
|
||||||
|
For example, `PATCH /v8/management/config` with this body disables additional
|
||||||
|
request retries while preserving other settings:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"routing": {
|
||||||
|
"retry": {
|
||||||
|
"request-retry": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
JSON reads omit TURN usernames and credentials under
|
||||||
|
`oauth.providers.codex.live-media-relay.ice-servers`; YAML reads include them.
|
||||||
|
The Home-owned revision fields
|
||||||
|
`credentials.concurrency.lifecycle-config-revision`,
|
||||||
|
`credentials.concurrency.observation-barrier-revision`, and `plugins.auth-revision`
|
||||||
|
cannot be changed through these endpoints.
|
||||||
|
|
||||||
|
### Codex multi-agent configuration migration
|
||||||
|
|
||||||
|
`client.codex.optimize-multi-agent-v2` is the sole runtime setting. Loading older
|
||||||
|
YAML accepts `providers.codex.optimize-multi-agent-v2`,
|
||||||
|
`oauth.providers.codex.optimize-multi-agent-v2`, and the flat
|
||||||
|
`codex.optimize-multi-agent-v2` path. The client path always wins conflicts,
|
||||||
|
including explicit `false` or `null`. If it is absent, the historical OAuth path
|
||||||
|
wins over `providers`, which wins over the flat path.
|
||||||
|
|
||||||
|
These aliases now have client-wide semantics, not OAuth-only scope. Loading does
|
||||||
|
not rewrite legacy-only settings; normalization removes aliases conflicting with
|
||||||
|
the client path. A successful v8 write migrates the aliases while preserving their
|
||||||
|
comments. Historical API paths remain usable. Home configuration publishers
|
||||||
|
need matching client schema support before emitting the new path; older YAML
|
||||||
|
payloads remain readable.
|
||||||
|
|
||||||
|
## Operational endpoints
|
||||||
|
|
||||||
|
All paths below are relative to `/v8/management`. Request and response bodies
|
||||||
|
retain the corresponding business operation's fields.
|
||||||
|
|
||||||
|
| Path | Methods | Description |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `/config/upstream/<provider>` | GET, PUT, PATCH, DELETE | Manage shared provider settings. |
|
||||||
|
| `/server/latest-version` | GET | Get latest release information. |
|
||||||
|
| `/requests/api-call` | POST | Make an authenticated upstream call. |
|
||||||
|
| `/routing/cooldown/reset` | POST | Clear credential cooldown. |
|
||||||
|
| `/routing/model-definitions/<channel>` | GET | Get model definitions. |
|
||||||
|
| `/observability/logs` | GET, DELETE | Read or clear application logs. |
|
||||||
|
| `/observability/logs/errors` | GET | List error-log files. |
|
||||||
|
| `/observability/logs/errors/<name>` | GET | Download an error-log file. |
|
||||||
|
| `/observability/logs/requests/<id>` | GET | Get a request log. |
|
||||||
|
| `/observability/usage/api-keys` | GET | Get API-key usage. |
|
||||||
|
| `/observability/usage/queue` | GET | Get queued usage events. |
|
||||||
|
| `/credentials` | GET, POST, DELETE | List, upload, or delete credential files. |
|
||||||
|
| `/credentials/models` | GET | Get credential models. |
|
||||||
|
| `/credentials/download` | GET | Download a credential file. |
|
||||||
|
| `/credentials/status` | PATCH | Change credential status. |
|
||||||
|
| `/credentials/fields` | PATCH | Change credential fields. |
|
||||||
|
| `/credentials/refresh` | POST | Refresh credentials. |
|
||||||
|
| `/oauth/import?provider=vertex` | POST | Import a Vertex service account using a multipart `file` upload. |
|
||||||
|
| `/oauth/auth-url?provider=<provider>` | GET | Start built-in or plugin OAuth. |
|
||||||
|
| `/oauth/status?state=<state>` | GET | Get login status. |
|
||||||
|
| `/oauth/session?state=<state>` | DELETE | Cancel a login session. |
|
||||||
|
| `/oauth/callback` | GET, POST | Submit an OAuth callback. |
|
||||||
|
| `/plugins` | GET | List installed plugins. |
|
||||||
|
| `/plugins/<id>` | DELETE | Delete a plugin. |
|
||||||
|
| `/plugins/store` | GET | List the plugin store. |
|
||||||
|
| `/plugins/store/<id>/install` | POST | Install or update a plugin. |
|
||||||
|
| `/plugins/<id>/quota` | GET, POST, DELETE | Read, fetch, or reset plugin quota. |
|
||||||
|
|
||||||
|
## OAuth
|
||||||
|
|
||||||
|
The login URL is shared by all providers. Set the required `provider` query
|
||||||
|
parameter to `claude`, `codex`, `antigravity`, `kimi`, `kimi-ai`, `xai`, `devin`,
|
||||||
|
`meta`, or a registered plugin provider ID. For example:
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /v8/management/oauth/auth-url?provider=codex
|
||||||
|
Authorization: Bearer <management-key>
|
||||||
|
```
|
||||||
|
|
||||||
|
Keep any provider-specific login parameters in the query string. The login
|
||||||
|
response includes the authorization URL and a session `state`. Use that state
|
||||||
|
for status queries and cancellation.
|
||||||
|
|
||||||
|
Callbacks accept `provider`, `state`, `code`, and `error` as GET query parameters
|
||||||
|
or POST JSON fields. POST also accepts `redirect_url` containing the complete
|
||||||
|
callback URL. If `provider` is omitted, it is inferred from the pending state;
|
||||||
|
an explicit provider must match that state. Poll until the status is `ok` or
|
||||||
|
`error`; `wait` means the login is still pending. Callback acceptance alone does
|
||||||
|
not mean credential exchange and persistence have completed.
|
||||||
|
|
||||||
|
Import uses `POST /v8/management/oauth/import?provider=vertex`. The `provider`
|
||||||
|
query parameter is required; Vertex is currently the supported import provider.
|
||||||
|
|
||||||
|
## v0 compatibility
|
||||||
|
|
||||||
|
The `/v0/management` endpoints keep their original paths and payloads, including
|
||||||
|
provider-specific OAuth login URLs, callbacks, status queries, and cancellation.
|
||||||
|
For example, `GET /v0/management/codex-auth-url` and
|
||||||
|
`GET /v8/management/oauth/auth-url?provider=codex` start the same login flow.
|
||||||
|
|
||||||
|
Legacy flat configuration endpoints such as `/debug`, `/request-retry`, and
|
||||||
|
`/codex-api-key` exist under `/v0/management` only.
|
||||||
|
`/v0/management/api-keys` continues to manage client authentication keys; the v8
|
||||||
|
equivalent is `/v8/management/config/access/api-keys`.
|
||||||
|
|
||||||
|
Legacy-only configuration files keep their layout until a successful v8
|
||||||
|
configuration write. When both layouts specify a field, the new field takes
|
||||||
|
precedence and its legacy equivalent is removed. V0 setters keep legacy-only
|
||||||
|
files in their original layout; existing v8 files are saved in the latest v8
|
||||||
|
layout. `PUT /v0/management/config.yaml` still replaces the complete file and
|
||||||
|
accepts legacy, new, or mixed layouts, normalizing v8 documents on save.
|
||||||
|
|
||||||
|
Plugin OAuth uses the shared v8 login endpoint. Other plugin-defined HTTP
|
||||||
|
extensions retain their declared `/v0/management` routes.
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
CLIProxyAPI Version: 8.0.27, Commit: bf934162, BuiltAt: 2026-10-12T16:37:54Z
|
||||||
|
Usage of /home/jwoltje/.local/opt/EasyCLIProxyAPI/cpa-core/cli-proxy-api
|
||||||
|
-antigravity-login
|
||||||
|
Login to Antigravity using OAuth
|
||||||
|
-claude-login
|
||||||
|
Login to Claude using OAuth
|
||||||
|
-codex-device-login
|
||||||
|
Login to Codex using device code flow
|
||||||
|
-codex-login
|
||||||
|
Login to Codex using OAuth
|
||||||
|
-config string
|
||||||
|
Configure File Path
|
||||||
|
-devin-login
|
||||||
|
Login to Devin using OAuth
|
||||||
|
-discover
|
||||||
|
Discover local AI gateways and CPA instances on the LAN
|
||||||
|
-discover-exclude value
|
||||||
|
Comma-separated interface names to skip during LAN discovery
|
||||||
|
-discover-include value
|
||||||
|
Comma-separated interface names to scan during LAN discovery
|
||||||
|
-discover-json
|
||||||
|
Output discovered gateways in JSON format
|
||||||
|
-discover-service-type string
|
||||||
|
DNS-SD service type for LAN discovery (default _ai-gateway._tcp)
|
||||||
|
-discover-timeout int
|
||||||
|
Timeout in seconds for LAN discovery (default 3s) (default 3)
|
||||||
|
-home-disable-cluster-discovery
|
||||||
|
Disable Home CLUSTER NODES discovery and keep using the configured -home-jwt address
|
||||||
|
-home-jwt string
|
||||||
|
Home control plane JWT for mTLS certificate bootstrap and connection
|
||||||
|
-kimi-ai-login
|
||||||
|
Login to Kimi.ai using OAuth
|
||||||
|
-kimi-login
|
||||||
|
Login to Kimi (.com) using OAuth
|
||||||
|
-local-model
|
||||||
|
Use embedded model catalogs unless models.catalog, models.codex-catalog, or models.devin-catalog explicitly overrides the source
|
||||||
|
-management-base-url string
|
||||||
|
Base URL of remote management API for TUI client mode (e.g. https://proxy.example.com)
|
||||||
|
-meta-login
|
||||||
|
Login to Meta using OAuth
|
||||||
|
-no-browser
|
||||||
|
Don't open browser automatically for OAuth
|
||||||
|
-oauth-callback-port int
|
||||||
|
Override OAuth callback port (defaults to provider-specific port)
|
||||||
|
-siwc-bind string
|
||||||
|
Bind Sign in with ChatGPT (SIWC) credentials to a Codex credential file
|
||||||
|
-standalone
|
||||||
|
In TUI mode, start an embedded local server
|
||||||
|
-tui
|
||||||
|
Start with terminal management UI
|
||||||
|
-vertex-import string
|
||||||
|
Import Vertex service account key JSON file
|
||||||
|
-vertex-import-prefix string
|
||||||
|
Prefix for Vertex model namespacing (use with -vertex-import)
|
||||||
|
-xai-login
|
||||||
|
Login to xAI using OAuth
|
||||||
+222
@@ -0,0 +1,222 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Row 96 (#1590) test body. Runs INSIDE a private network namespace started by
|
||||||
|
# run-all.sh (unshare -rn), so only a loopback interface exists: nothing here can reach
|
||||||
|
# the running proxy on the host's 127.0.0.1:8317 or leave the machine.
|
||||||
|
# Do not run it directly; use run-all.sh.
|
||||||
|
set -u
|
||||||
|
PKT=$(cd "$(dirname "$0")" && pwd)
|
||||||
|
REPO=$(cd "$PKT/../../../.." && pwd)
|
||||||
|
STATE=$PKT/state
|
||||||
|
OUT=$PKT/out
|
||||||
|
PROXY_BIN=$HOME/.local/opt/EasyCLIProxyAPI/cpa-core/cli-proxy-api
|
||||||
|
CLAUDE_BIN=${MOSAIC_CLAUDE_BIN:-$HOME/.local/bin/claude}
|
||||||
|
PROXY_PORT=18317
|
||||||
|
UP_PORT=18400
|
||||||
|
URL=http://127.0.0.1:$PROXY_PORT
|
||||||
|
MGMT_KEY=standin-mgmt-key-0001
|
||||||
|
BOOTSTRAP_KEY=standin-bootstrap-key
|
||||||
|
UPSTREAM_KEY=standin-upstream-key-0001
|
||||||
|
MODEL=claude-sonnet-5-5
|
||||||
|
CLIENT_TIMEOUT=${CLIENT_TIMEOUT:-100}
|
||||||
|
UP_PID=""
|
||||||
|
PX_PID=""
|
||||||
|
|
||||||
|
note() { printf '%s %s\n' "$(date -u +%H:%M:%SZ)" "$*" | tee -a "$OUT/run.log"; }
|
||||||
|
|
||||||
|
stop_all() {
|
||||||
|
[ -z "$PX_PID" ] || kill "$PX_PID" 2>/dev/null
|
||||||
|
[ -z "$UP_PID" ] || kill "$UP_PID" 2>/dev/null
|
||||||
|
wait 2>/dev/null
|
||||||
|
}
|
||||||
|
trap stop_all EXIT
|
||||||
|
|
||||||
|
# --- processes -------------------------------------------------------------------------
|
||||||
|
start_upstream() {
|
||||||
|
node "$PKT/stand-in-upstream.mjs" "$UP_PORT" "$STATE/upstream.jsonl" "$UPSTREAM_KEY" "$STATE/ws/probe.txt" >> "$STATE/upstream.out" 2>&1 &
|
||||||
|
UP_PID=$!
|
||||||
|
}
|
||||||
|
start_proxy() {
|
||||||
|
# cwd is the state dir and HOME is inside it, so any relative or ~ path the proxy
|
||||||
|
# uses lands under the packet. Empty environment: no ambient variable reaches it.
|
||||||
|
( cd "$STATE" && exec env -i HOME="$STATE/home" PATH=/usr/bin:/bin "$PROXY_BIN" -config "$STATE/config.yaml" -local-model ) >> "$STATE/proxy.out" 2>&1 &
|
||||||
|
PX_PID=$!
|
||||||
|
}
|
||||||
|
wait_port() { # port
|
||||||
|
for _ in $(seq 1 50); do
|
||||||
|
(exec 3<>"/dev/tcp/127.0.0.1/$1") 2>/dev/null && return 0
|
||||||
|
sleep 0.2
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- management API --------------------------------------------------------------------
|
||||||
|
# mgmt LABEL METHOD PATH [JSON] -> prints "HTTP <code>" and the body; one line per call
|
||||||
|
# in out/mgmt-calls.log so the report can count steps.
|
||||||
|
mgmt() {
|
||||||
|
local label=$1 method=$2 path=$3 data=${4:-}
|
||||||
|
local args=(-s -m 10 -X "$method" -H "Authorization: Bearer $MGMT_KEY" -o "$STATE/mgmt.body" -w '%{http_code}')
|
||||||
|
[ -z "$data" ] || args+=(-H 'Content-Type: application/json' --data "$data")
|
||||||
|
local code
|
||||||
|
code=$(curl "${args[@]}" "$URL$path")
|
||||||
|
printf '%s %s %s -> %s %s\n' "$label" "$method" "$path" "$code" "$(head -c 300 "$STATE/mgmt.body")" | tee -a "$OUT/mgmt-calls.log" >/dev/null
|
||||||
|
echo "HTTP $code $(head -c 400 "$STATE/mgmt.body")"
|
||||||
|
}
|
||||||
|
|
||||||
|
# snap_queue NAME : copy the usage queue (events are kept in memory for 60 s only) to
|
||||||
|
# out/usage-queue.NAME.json. Not logged as a management step.
|
||||||
|
snap_queue() {
|
||||||
|
# A read of the queue removes what it returns, and returns one event per call, so drain
|
||||||
|
# it: read until the reply is an empty array, then merge into one JSON array.
|
||||||
|
: > "$STATE/queue.parts"
|
||||||
|
for _ in $(seq 1 60); do
|
||||||
|
curl -s -m 10 -H "Authorization: Bearer $MGMT_KEY" -o "$STATE/queue.part" "$URL/v8/management/observability/usage/queue"
|
||||||
|
[ "$(tr -d ' \n' < "$STATE/queue.part")" != "[]" ] || break
|
||||||
|
cat "$STATE/queue.part" >> "$STATE/queue.parts"; echo >> "$STATE/queue.parts"
|
||||||
|
done
|
||||||
|
node -e 'const fs=require("fs");const ev=fs.readFileSync(process.argv[1],"utf8").split("\n").filter(Boolean).flatMap(l=>{try{return JSON.parse(l)}catch{return []}});fs.writeFileSync(process.argv[2],JSON.stringify(ev))' "$STATE/queue.parts" "$OUT/usage-queue.$1.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
# probe LABEL KEY|- : one plain Messages request straight to the proxy. "-" sends no key.
|
||||||
|
probe() {
|
||||||
|
local label=$1 key=$2
|
||||||
|
local args=(-s -m 20 -o "$STATE/probe.body" -w '%{http_code}' -H 'Content-Type: application/json' -H 'anthropic-version: 2023-06-01')
|
||||||
|
[ "$key" = "-" ] || args+=(-H "x-api-key: $key")
|
||||||
|
local code
|
||||||
|
code=$(curl "${args[@]}" --data "{\"model\":\"$MODEL\",\"max_tokens\":32,\"messages\":[{\"role\":\"user\",\"content\":\"ping\"}]}" "$URL/v1/messages")
|
||||||
|
printf '%s key=%s -> HTTP %s %s\n' "$label" "$key" "$code" "$(head -c 300 "$STATE/probe.body")" | tee -a "$OUT/probes.log"
|
||||||
|
snap_queue "$label"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- clients ---------------------------------------------------------------------------
|
||||||
|
# client LABEL claude|pi KEY|- REQUEST
|
||||||
|
# Runs the repo's own adapter with an environment limited to the session allowlist
|
||||||
|
# (packages/seat/src/session.mjs ENV_ALLOW) plus the adapter's MOSAIC_* inputs and the
|
||||||
|
# PATH the session builds. Output, exit code and the slice of the upstream log for this run go
|
||||||
|
# to out/<LABEL>.*.
|
||||||
|
client() {
|
||||||
|
local label=$1 kind=$2 key=$3 request=$4
|
||||||
|
local home=$STATE/home-$label sess=$STATE/sess-$label
|
||||||
|
mkdir -p "$home" "$sess"
|
||||||
|
local common=(PATH="$REPO/node_modules/.bin:/usr/bin:/bin" HOME="$home" USER=agent LOGNAME=agent LANG=C.UTF-8 TERM=dumb
|
||||||
|
ANTHROPIC_BASE_URL="$URL" MOSAIC_REQUEST="$request" MOSAIC_SYSTEM_PROMPT_FILE="$STATE/prompt.txt" MOSAIC_WORKSPACE="$STATE/ws" MOSAIC_SESSION_DIR="$sess")
|
||||||
|
local before; before=$(wc -l < "$STATE/upstream.jsonl" 2>/dev/null || echo 0)
|
||||||
|
local rc
|
||||||
|
if [ "$kind" = claude ]; then
|
||||||
|
local auth=(); [ "$key" = "-" ] || auth=(ANTHROPIC_AUTH_TOKEN="$key")
|
||||||
|
timeout -k 2 "${TMO:-$CLIENT_TIMEOUT}" env -i "${common[@]}" "${auth[@]}" MOSAIC_CLAUDE_BIN="$CLAUDE_BIN" MOSAIC_MODEL="$MODEL" MOSAIC_TOOLS=Read \
|
||||||
|
MOSAIC_CLAUDE_SETTINGS="$STATE/claude-settings.json" MOSAIC_CLAUDE_MCP_CONFIG="$STATE/claude-mcp.json" \
|
||||||
|
sh "$REPO/adapters/claude/adapter.sh" > "$OUT/$label.stdout" 2> "$OUT/$label.stderr" < /dev/null
|
||||||
|
else
|
||||||
|
local auth=(); [ "$key" = "-" ] || auth=(ANTHROPIC_API_KEY="$key")
|
||||||
|
# kind "pi" adds the one thing pi needs beyond the allowlist: a models.json under the
|
||||||
|
# session HOME that points the built-in anthropic provider at the proxy (pi docs
|
||||||
|
# models.md "Overriding Built-in Providers"). kind "pi-env" is the allowlist alone.
|
||||||
|
if [ "$kind" = pi ]; then
|
||||||
|
mkdir -p "$home/.pi/agent"
|
||||||
|
printf '{"providers":{"anthropic":{"baseUrl":"%s"}}}\n' "$URL" > "$home/.pi/agent/models.json"
|
||||||
|
fi
|
||||||
|
timeout -k 2 "${TMO:-$CLIENT_TIMEOUT}" env -i "${common[@]}" "${auth[@]}" PI_PROVIDER=anthropic PI_MODEL="$MODEL" MOSAIC_TOOLS=read \
|
||||||
|
sh "$REPO/adapters/pi/adapter.sh" > "$OUT/$label.stdout" 2> "$OUT/$label.stderr" < /dev/null
|
||||||
|
fi
|
||||||
|
rc=$?
|
||||||
|
echo "$rc" > "$OUT/$label.rc"
|
||||||
|
snap_queue "$label"
|
||||||
|
sed -n "$((before + 1)),\$p" "$STATE/upstream.jsonl" > "$OUT/$label.upstream.jsonl" 2>/dev/null
|
||||||
|
note "client $label ($kind, key=$key): exit=$rc, upstream requests=$(wc -l < "$OUT/$label.upstream.jsonl"), stdout: $(head -c 160 "$OUT/$label.stdout" | tr '\n' ' ')"
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- setup -----------------------------------------------------------------------------
|
||||||
|
mkdir -p "$OUT" "$STATE/home" "$STATE/ws"
|
||||||
|
: > "$OUT/run.log"; : > "$OUT/mgmt-calls.log"; : > "$OUT/probes.log"
|
||||||
|
ip link set lo up || { echo "cannot bring lo up" >&2; exit 1; }
|
||||||
|
note "network inside the namespace: $(ip -o addr show | awk '{print $2 ":" $4}' | tr '\n' ' ')"
|
||||||
|
echo "probe-file-content: STAND-IN-PROBE-7f3a" > "$STATE/ws/probe.txt"
|
||||||
|
echo 'You are a test agent. Follow the request exactly.' > "$STATE/prompt.txt"
|
||||||
|
echo '{}' > "$STATE/claude-settings.json"
|
||||||
|
echo '{"mcpServers":{}}' > "$STATE/claude-mcp.json"
|
||||||
|
sed -e "s#@PROXY_PORT@#$PROXY_PORT#; s#@MGMT_KEY@#$MGMT_KEY#; s#@BOOTSTRAP_KEY@#$BOOTSTRAP_KEY#; s#@STATE@#$STATE#; s#@UPSTREAM_PORT@#$UP_PORT#; s#@UPSTREAM_KEY@#$UPSTREAM_KEY#" \
|
||||||
|
"$PKT/config.template.yaml" > "$STATE/config.yaml"
|
||||||
|
cp "$STATE/config.yaml" "$OUT/config.as-written.yaml"
|
||||||
|
|
||||||
|
start_upstream; wait_port "$UP_PORT" || { note "stand-in upstream did not start"; exit 1; }
|
||||||
|
start_proxy; wait_port "$PROXY_PORT" || { note "stand-in proxy did not start"; exit 1; }
|
||||||
|
note "stand-in upstream pid $UP_PID on 127.0.0.1:$UP_PORT; stand-in proxy pid $PX_PID on 127.0.0.1:$PROXY_PORT"
|
||||||
|
note "listeners visible inside the namespace: $(ss -ltnH | awk '{print $4}' | sort | tr '\n' ' ') (the host's 8317 is not among them)"
|
||||||
|
head -1 "$STATE/proxy.out" | tee -a "$OUT/run.log"
|
||||||
|
cp "$STATE/config.yaml" "$OUT/config.after-start.yaml"
|
||||||
|
|
||||||
|
# --- S1 issue two client keys from the command line ------------------------------------
|
||||||
|
KEY_A=sk-standin-agentA-$(openssl rand -hex 8)
|
||||||
|
KEY_B=sk-standin-agentB-$(openssl rand -hex 8)
|
||||||
|
echo "$KEY_A" > "$OUT/key-A.txt"; echo "$KEY_B" > "$OUT/key-B.txt"
|
||||||
|
note "S1 issue: GET the list, then PUT [bootstrap, A, B]"
|
||||||
|
mgmt S1 GET /v8/management/config/access/api-keys | tee -a "$OUT/run.log"
|
||||||
|
mgmt S1 PUT /v8/management/config/access/api-keys "[\"$BOOTSTRAP_KEY\",\"$KEY_A\",\"$KEY_B\"]" | tee -a "$OUT/run.log"
|
||||||
|
mgmt S1 GET /v8/management/config/access/api-keys | tee -a "$OUT/run.log"
|
||||||
|
probe S1-A-immediately "$KEY_A"
|
||||||
|
probe S1-B-immediately "$KEY_B"
|
||||||
|
cp "$STATE/config.yaml" "$OUT/config.after-issue.yaml"
|
||||||
|
|
||||||
|
# --- S2 the two clients, key A ---------------------------------------------------------
|
||||||
|
client S2-claude-A claude "$KEY_A" 'TOOL-TEST read probe.txt in your working directory and tell me what it says'
|
||||||
|
client S2-pi-env-A pi-env "$KEY_A" 'TOOL-TEST read probe.txt in your working directory and tell me what it says'
|
||||||
|
client S2-pi-A pi "$KEY_A" 'TOOL-TEST read probe.txt in your working directory and tell me what it says'
|
||||||
|
mgmt S2 GET /v8/management/observability/usage/api-keys | tee -a "$OUT/run.log"; cp "$STATE/mgmt.body" "$OUT/usage-api-keys.after-S2.json"
|
||||||
|
|
||||||
|
# --- S3 key B works too (plain streamed turn) ------------------------------------------
|
||||||
|
client S3-claude-B claude "$KEY_B" 'Say hello in one short sentence.'
|
||||||
|
|
||||||
|
# --- S4 revoke A -----------------------------------------------------------------------
|
||||||
|
note "S4 revoke A: DELETE /v0/management/api-keys?value=A"
|
||||||
|
mgmt S4 DELETE "/v0/management/api-keys?value=$KEY_A" | tee -a "$OUT/run.log"
|
||||||
|
mgmt S4 GET /v8/management/config/access/api-keys | tee -a "$OUT/run.log"
|
||||||
|
probe S4-A-after-revoke "$KEY_A"
|
||||||
|
probe S4-B-after-revoke "$KEY_B"
|
||||||
|
client S4-claude-A-revoked claude "$KEY_A" 'Say hello in one short sentence.'
|
||||||
|
client S4-pi-A-revoked pi "$KEY_A" 'Say hello in one short sentence.'
|
||||||
|
client S4-claude-B-after claude "$KEY_B" 'Say hello in one short sentence.'
|
||||||
|
mgmt S4 GET /v8/management/observability/usage/api-keys | tee -a "$OUT/run.log"; cp "$STATE/mgmt.body" "$OUT/usage-api-keys.after-S4.json"
|
||||||
|
cp "$STATE/config.yaml" "$OUT/config.after-revoke.yaml"
|
||||||
|
|
||||||
|
# --- S4b do issued keys survive a proxy restart? ----------------------------------------
|
||||||
|
note "S4b restart the stand-in proxy (same config file, same command)"
|
||||||
|
kill "$PX_PID" 2>/dev/null; wait "$PX_PID" 2>/dev/null; PX_PID=""
|
||||||
|
start_proxy; wait_port "$PROXY_PORT" || { note "stand-in proxy did not restart"; exit 1; }
|
||||||
|
probe S4b-B-after-restart "$KEY_B"
|
||||||
|
probe S4b-A-after-restart "$KEY_A"
|
||||||
|
|
||||||
|
# --- S5 unknown key and missing key ----------------------------------------------------
|
||||||
|
probe S5-unknown "sk-standin-never-issued-0000"
|
||||||
|
probe S5-missing -
|
||||||
|
TMO=330 client S5-claude-unknown claude "sk-standin-never-issued-0000" 'Say hello in one short sentence.'
|
||||||
|
client S5-pi-unknown pi "sk-standin-never-issued-0000" 'Say hello in one short sentence.'
|
||||||
|
client S5-claude-missing claude - 'Say hello in one short sentence.'
|
||||||
|
client S5-pi-missing pi - 'Say hello in one short sentence.'
|
||||||
|
|
||||||
|
# --- S6 upstream down ------------------------------------------------------------------
|
||||||
|
kill "$UP_PID" 2>/dev/null; wait "$UP_PID" 2>/dev/null; UP_PID=""
|
||||||
|
note "S6 stand-in upstream stopped"
|
||||||
|
probe S6-B-upstream-down "$KEY_B"
|
||||||
|
client S6-claude-B-upstream-down claude "$KEY_B" 'Say hello in one short sentence.'
|
||||||
|
client S6-pi-B-upstream-down pi "$KEY_B" 'Say hello in one short sentence.'
|
||||||
|
|
||||||
|
# --- collect ---------------------------------------------------------------------------
|
||||||
|
mgmt S7 GET /v8/management/observability/usage/api-keys | tee -a "$OUT/run.log"; cp "$STATE/mgmt.body" "$OUT/usage-api-keys.final.json"
|
||||||
|
# Queue read semantics: the queue is empty here (snap_queue drains it). Make three events
|
||||||
|
# (upstream is down, so each is a failed 500), then read once with ?count=100 and twice
|
||||||
|
# without. The numbers go to out/queue-read-semantics.txt.
|
||||||
|
for n in 1 2 3; do curl -s -m 10 -o /dev/null -H 'Content-Type: application/json' -H 'anthropic-version: 2023-06-01' -H "x-api-key: $KEY_B" -d '{"model":"claude-sonnet-5-5","max_tokens":8,"messages":[{"role":"user","content":"hi"}]}' "$URL/v1/messages"; done
|
||||||
|
{
|
||||||
|
echo "3 events pending. GET queue?count=100 -> $(curl -s -m 10 -H "Authorization: Bearer $MGMT_KEY" "$URL/v8/management/observability/usage/queue?count=100" | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{try{console.log(JSON.parse(s).length+" event(s)")}catch{console.log("not JSON: "+s.slice(0,80))}})')"
|
||||||
|
echo "then plain GET queue -> $(curl -s -m 10 -H "Authorization: Bearer $MGMT_KEY" "$URL/v8/management/observability/usage/queue" | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{try{console.log(JSON.parse(s).length+" event(s)")}catch{console.log("not JSON: "+s.slice(0,80))}})')"
|
||||||
|
echo "then plain GET queue again -> $(curl -s -m 10 -H "Authorization: Bearer $MGMT_KEY" "$URL/v8/management/observability/usage/queue" | node -e 'let s="";process.stdin.on("data",d=>s+=d).on("end",()=>{try{console.log(JSON.parse(s).length+" event(s)")}catch{console.log("not JSON: "+s.slice(0,80))}})')"
|
||||||
|
} > "$OUT/queue-read-semantics.txt"
|
||||||
|
snap_queue final
|
||||||
|
mgmt S7 GET /v8/management/observability/logs | tee -a "$OUT/run.log" >/dev/null; cp "$STATE/mgmt.body" "$OUT/logs-endpoint.final.json"
|
||||||
|
stop_all; UP_PID=""; PX_PID=""
|
||||||
|
mkdir -p "$OUT/proxy-logs"
|
||||||
|
cp "$STATE/upstream.jsonl" "$OUT/upstream.all.jsonl"
|
||||||
|
cp "$STATE/proxy.out" "$OUT/proxy.out.txt"
|
||||||
|
cp "$STATE/upstream.out" "$OUT/upstream.out.txt"
|
||||||
|
[ ! -d "$STATE/auth/logs" ] || cp -r "$STATE/auth/logs/." "$OUT/proxy-logs/"
|
||||||
|
note "inner script done; proxy log files: $(ls "$OUT/proxy-logs" | wc -l), size $(du -sk "$OUT/proxy-logs" | cut -f1) KiB"
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
0
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ROUNDTRIP-OK: 1 probe-file-content: STAND-IN-PROBE-7f3a
|
||||||
|
2
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ROUNDTRIP-OK: probe-file-content: STAND-IN-PROBE-7f3a
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
{"ts":"2026-10-13T20:57:56.131Z","method":"POST","url":"/v1/messages?beta=true","headers":{"host":"127.0.0.1:18400","user-agent":"pi (linux 7.2.2-1-cachyos; x64)","content-length":"1293","accept":"application/json","accept-encoding":"gzip, deflate","anthropic-dangerous-direct-browser-access":"true","anthropic-version":"2023-06-01","authorization":"Bearer standin-upstream-key-0001","content-type":"application/json","x-stainless-arch":"x64","x-stainless-lang":"js","x-stainless-os":"Linux","x-stainless-package-version":"0.123.0","x-stainless-retry-count":"0","x-stainless-runtime":"node","x-stainless-runtime-version":"v26.8.1","x-stainless-timeout":"300"},"auth":{"header":"authorization-bearer","presented":"standin-upstream-key-0001","ok":true},"summary":{"model":"claude-sonnet-5-5","stream":true,"max_tokens":128000,"tools":["read"],"cache_control_blocks":3,"has_tool_result":false,"messages":1,"reply":"tool"},"body":{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":[{"type":"text","text":"TOOL-TEST read probe.txt in your working directory and tell me what it says","cache_control":{"type":"ephemeral"}}]}],"max_tokens":128000,"stream":true,"system":[{"type":"text","text":"You are a test agent. Follow the request exactly.\nCurrent working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"read","description":"Read the contents of a file. Supports text files and images (jpg, png, gif, webp, bmp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue with offset until complete.","eager_input_streaming":true,"input_schema":{"type":"object","properties":{"path":{"type":"string","description":"Path to the file to read (relative or absolute)"},"offset":{"type":"number","description":"Line number to start reading from (1-indexed)"},"limit":{"type":"number","description":"Maximum number of lines to read"}},"required":["path"]},"cache_control":{"type":"ephemeral"}}],"thinking":{"type":"adaptive","display":"summarized"},"output_config":{"effort":"medium"}}}
|
||||||
|
{"ts":"2026-10-13T20:57:56.145Z","method":"POST","url":"/v1/messages?beta=true","headers":{"host":"127.0.0.1:18400","user-agent":"pi (linux 7.2.2-1-cachyos; x64)","content-length":"1640","accept":"application/json","accept-encoding":"gzip, deflate","anthropic-dangerous-direct-browser-access":"true","anthropic-version":"2023-06-01","authorization":"Bearer standin-upstream-key-0001","content-type":"application/json","x-stainless-arch":"x64","x-stainless-lang":"js","x-stainless-os":"Linux","x-stainless-package-version":"0.123.0","x-stainless-retry-count":"0","x-stainless-runtime":"node","x-stainless-runtime-version":"v26.8.1","x-stainless-timeout":"300"},"auth":{"header":"authorization-bearer","presented":"standin-upstream-key-0001","ok":true},"summary":{"model":"claude-sonnet-5-5","stream":true,"max_tokens":128000,"tools":["read"],"cache_control_blocks":3,"has_tool_result":true,"messages":3,"reply":"text"},"body":{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":[{"type":"text","text":"TOOL-TEST read probe.txt in your working directory and tell me what it says"}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_standin8","name":"read","input":{"path":"/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws/probe.txt"}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_standin8","content":"probe-file-content: STAND-IN-PROBE-7f3a\n","is_error":false,"cache_control":{"type":"ephemeral"}}]}],"max_tokens":128000,"stream":true,"system":[{"type":"text","text":"You are a test agent. Follow the request exactly.\nCurrent working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"read","description":"Read the contents of a file. Supports text files and images (jpg, png, gif, webp, bmp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue with offset until complete.","eager_input_streaming":true,"input_schema":{"type":"object","properties":{"path":{"type":"string","description":"Path to the file to read (relative or absolute)"},"offset":{"type":"number","description":"Line number to start reading from (1-indexed)"},"limit":{"type":"number","description":"Maximum number of lines to read"}},"required":["path"]},"cache_control":{"type":"ephemeral"}}],"thinking":{"type":"adaptive","display":"summarized"},"output_config":{"effort":"medium"}}}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id.
|
||||||
|
Connection error.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
STAND-IN-ANSWER-11 (streamed in three chunks)
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
124
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
STAND-IN-ANSWER-15 (streamed in three chunks)
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id.
|
||||||
|
401 {"error":"Invalid API key"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Not logged in · Please run /login
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
Failed to authenticate. API Error: 401 {"error":"Invalid API key"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id.
|
||||||
|
No API key found for anthropic.
|
||||||
|
|
||||||
|
Use /login to log into a provider via OAuth or API key. See:
|
||||||
|
/mnt/storage/src/mosaic-stack/node_modules/@earendil-works/pi-coding-agent/docs/providers.md
|
||||||
|
/mnt/storage/src/mosaic-stack/node_modules/@earendil-works/pi-coding-agent/docs/models.md
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id.
|
||||||
|
401 {"error":"Invalid API key"}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
124
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
1
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id.
|
||||||
|
500 {"type":"error","error":{"type":"api_error","message":"Post \"http://127.0.0.1:18400/v1/messages?beta=true\": dial tcp 127.0.0.1:18400: connect: connection refused"}}
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
proxy request logs parsed: 51; upstream requests recorded: 10
|
||||||
|
stand-in upstream accepted only its own made-up key; any other presented key would be marked ok:false below.
|
||||||
|
|
||||||
|
## S2-claude-A: exit 0; upstream requests 2
|
||||||
|
client stdout: ROUNDTRIP-OK: 1 probe-file-content: STAND-IN-PROBE-7f3a 2
|
||||||
|
usage queue after the run: 2 event(s); client key sk-standin-agentA-021acca63aaddf78 (config-inline) failed=false status=200 | client key sk-standin-agentA-021acca63aaddf78 (config-inline) failed=false status=200
|
||||||
|
upstream request 1: POST /v1/messages?beta=true reply=tool stream=true tools=["Read"] tool_result_in_history=false
|
||||||
|
key the proxy saw : key A (Bearer sk-s...df78) [header Authorization: Bearer]
|
||||||
|
key the upstream saw: standin-upstream-key-0001 via authorization-bearer, accepted=true; client key present in upstream headers: false
|
||||||
|
anthropic-version : client 2023-06-01 -> upstream 2023-06-01
|
||||||
|
anthropic-beta : identical (9 flags upstream; client 9)
|
||||||
|
cache_control blocks: client 3 -> upstream 3
|
||||||
|
body : byte-for-byte equal as JSON
|
||||||
|
headers dropped: none; changed: x-stainless-package-version 0.128.0 -> 0.112.1; added: none
|
||||||
|
upstream request 2: POST /v1/messages?beta=true reply=text stream=true tools=["Read"] tool_result_in_history=true
|
||||||
|
key the proxy saw : key A (Bearer sk-s...df78) [header Authorization: Bearer]
|
||||||
|
key the upstream saw: standin-upstream-key-0001 via authorization-bearer, accepted=true; client key present in upstream headers: false
|
||||||
|
anthropic-version : client 2023-06-01 -> upstream 2023-06-01
|
||||||
|
anthropic-beta : identical (9 flags upstream; client 9)
|
||||||
|
cache_control blocks: client 3 -> upstream 3
|
||||||
|
body : byte-for-byte equal as JSON
|
||||||
|
headers dropped: none; changed: x-stainless-package-version 0.128.0 -> 0.112.1; added: none
|
||||||
|
## S2-pi-A: exit 0; upstream requests 2
|
||||||
|
client stdout: ROUNDTRIP-OK: probe-file-content: STAND-IN-PROBE-7f3a
|
||||||
|
client stderr: Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id.
|
||||||
|
usage queue after the run: 2 event(s); client key sk-standin-agentA-021acca63aaddf78 (config-inline) failed=false status=200 | client key sk-standin-agentA-021acca63aaddf78 (config-inline) failed=false status=200
|
||||||
|
upstream request 1: POST /v1/messages?beta=true reply=tool stream=true tools=["read"] tool_result_in_history=false
|
||||||
|
key the proxy saw : key A (sk-s...df78) [header x-api-key]
|
||||||
|
key the upstream saw: standin-upstream-key-0001 via authorization-bearer, accepted=true; client key present in upstream headers: false
|
||||||
|
anthropic-version : client 2023-06-01 -> upstream 2023-06-01
|
||||||
|
anthropic-beta : identical (1 flags upstream; client 1)
|
||||||
|
cache_control blocks: client 3 -> upstream 3
|
||||||
|
body : byte-for-byte equal as JSON
|
||||||
|
headers dropped: sec-fetch-mode, accept-language; changed: none; added: none
|
||||||
|
upstream request 2: POST /v1/messages?beta=true reply=text stream=true tools=["read"] tool_result_in_history=true
|
||||||
|
key the proxy saw : key A (sk-s...df78) [header x-api-key]
|
||||||
|
key the upstream saw: standin-upstream-key-0001 via authorization-bearer, accepted=true; client key present in upstream headers: false
|
||||||
|
anthropic-version : client 2023-06-01 -> upstream 2023-06-01
|
||||||
|
anthropic-beta : identical (1 flags upstream; client 1)
|
||||||
|
cache_control blocks: client 3 -> upstream 3
|
||||||
|
body : byte-for-byte equal as JSON
|
||||||
|
headers dropped: accept-language, sec-fetch-mode; changed: none; added: none
|
||||||
|
## S2-pi-env-A: exit 1; upstream requests 0
|
||||||
|
client stdout: (empty)
|
||||||
|
client stderr: Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id. Connection error.
|
||||||
|
usage queue after the run: 0 event(s)
|
||||||
|
## S3-claude-B: exit 0; upstream requests 1
|
||||||
|
client stdout: STAND-IN-ANSWER-11 (streamed in three chunks)
|
||||||
|
usage queue after the run: 1 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 (config-inline) failed=false status=200
|
||||||
|
upstream request 1: POST /v1/messages?beta=true reply=text stream=true tools=["Read"] tool_result_in_history=false
|
||||||
|
key the proxy saw : key B (Bearer sk-s...2101) [header Authorization: Bearer]
|
||||||
|
key the upstream saw: standin-upstream-key-0001 via authorization-bearer, accepted=true; client key present in upstream headers: false
|
||||||
|
anthropic-version : client 2023-06-01 -> upstream 2023-06-01
|
||||||
|
anthropic-beta : identical (9 flags upstream; client 9)
|
||||||
|
cache_control blocks: client 3 -> upstream 3
|
||||||
|
body : byte-for-byte equal as JSON
|
||||||
|
headers dropped: none; changed: x-stainless-package-version 0.128.0 -> 0.112.1; added: none
|
||||||
|
## S4-claude-A-revoked: exit 124 (killed by the harness timeout); upstream requests 0
|
||||||
|
client stdout: (empty)
|
||||||
|
usage queue after the run: 0 event(s)
|
||||||
|
## S4-claude-B-after: exit 0; upstream requests 1
|
||||||
|
client stdout: STAND-IN-ANSWER-15 (streamed in three chunks)
|
||||||
|
usage queue after the run: 1 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 (config-inline) failed=false status=200
|
||||||
|
upstream request 1: POST /v1/messages?beta=true reply=text stream=true tools=["Read"] tool_result_in_history=false
|
||||||
|
key the proxy saw : key B (Bearer sk-s...2101) [header Authorization: Bearer]
|
||||||
|
key the upstream saw: standin-upstream-key-0001 via authorization-bearer, accepted=true; client key present in upstream headers: false
|
||||||
|
anthropic-version : client 2023-06-01 -> upstream 2023-06-01
|
||||||
|
anthropic-beta : identical (9 flags upstream; client 9)
|
||||||
|
cache_control blocks: client 3 -> upstream 3
|
||||||
|
body : byte-for-byte equal as JSON
|
||||||
|
headers dropped: none; changed: x-stainless-package-version 0.128.0 -> 0.112.1; added: none
|
||||||
|
## S4-pi-A-revoked: exit 1; upstream requests 0
|
||||||
|
client stdout: (empty)
|
||||||
|
client stderr: Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id. 401 {"error":"Invalid API key"}
|
||||||
|
usage queue after the run: 0 event(s)
|
||||||
|
## S5-claude-missing: exit 1; upstream requests 0
|
||||||
|
client stdout: Not logged in · Please run /login
|
||||||
|
usage queue after the run: 0 event(s)
|
||||||
|
## S5-claude-unknown: exit 1; upstream requests 0
|
||||||
|
client stdout: Failed to authenticate. API Error: 401 {"error":"Invalid API key"}
|
||||||
|
usage queue after the run: 0 event(s)
|
||||||
|
## S5-pi-missing: exit 1; upstream requests 0
|
||||||
|
client stdout: (empty)
|
||||||
|
client stderr: Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id. No API key found for anthropic. Use /login to log into a provider via OAuth or API key. See: /mnt/storage/
|
||||||
|
usage queue after the run: 0 event(s)
|
||||||
|
## S5-pi-unknown: exit 1; upstream requests 0
|
||||||
|
client stdout: (empty)
|
||||||
|
client stderr: Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id. 401 {"error":"Invalid API key"}
|
||||||
|
usage queue after the run: 0 event(s)
|
||||||
|
## S6-claude-B-upstream-down: exit 124 (killed by the harness timeout); upstream requests 0
|
||||||
|
client stdout: (empty)
|
||||||
|
usage queue after the run: 1 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 (config-inline) failed=true status=500
|
||||||
|
## S6-pi-B-upstream-down: exit 1; upstream requests 0
|
||||||
|
client stdout: (empty)
|
||||||
|
client stderr: Warning: Model "claude-sonnet-5-5" not found for provider "anthropic". Using custom model id. 500 {"type":"error","error":{"type":"api_error","message":"Post \"http://127.0.0.1:18400/v1/messages?beta=
|
||||||
|
usage queue after the run: 4 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 (config-inline) failed=true status=500 | client key sk-standin-agentB-aa6b32c15aeb2101 (config-inline) failed=true status=500 | client key sk-standin-agentB-aa6b32c15aeb2101 (config-inline) failed=true status=500
|
||||||
|
|
||||||
|
## direct probes (curl, one request each)
|
||||||
|
S1-A-immediately key=sk-standin-agentA-021acca63aaddf78 -> HTTP 200 {"id":"msg_standin2","type":"message","role":"assist
|
||||||
|
usage queue: 1 event(s); client key sk-standin-agentA-021acca63aaddf78 failed=false
|
||||||
|
S1-B-immediately key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 200 {"id":"msg_standin4","type":"message","role":"assist
|
||||||
|
usage queue: 1 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 failed=false
|
||||||
|
S4-A-after-revoke key=sk-standin-agentA-021acca63aaddf78 -> HTTP 401 {"error":"Invalid API key"}
|
||||||
|
usage queue: 0 event(s)
|
||||||
|
S4-B-after-revoke key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 200 {"id":"msg_standin14","type":"message","role":"assi
|
||||||
|
usage queue: 1 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 failed=false
|
||||||
|
S4b-B-after-restart key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 200 {"id":"msg_standin18","type":"message","role":"as
|
||||||
|
usage queue: 1 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 failed=false
|
||||||
|
S4b-A-after-restart key=sk-standin-agentA-021acca63aaddf78 -> HTTP 401 {"error":"Invalid API key"}
|
||||||
|
usage queue: 0 event(s)
|
||||||
|
S5-unknown key=sk-standin-never-issued-0000 -> HTTP 401 {"error":"Invalid API key"}
|
||||||
|
usage queue: 0 event(s)
|
||||||
|
S5-missing key=- -> HTTP 401 {"error":"Missing API key"}
|
||||||
|
usage queue: 0 event(s)
|
||||||
|
S6-B-upstream-down key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 500 {"type":"error","error":{"type":"api_error","messa
|
||||||
|
usage queue: 1 event(s); client key sk-standin-agentB-aa6b32c15aeb2101 failed=true
|
||||||
|
|
||||||
|
proxy request logs with no upstream call: 25
|
||||||
|
proxy HTTP status counts (main.log): {"200 /v8/management/config/access/api-keys":4,"200 /v1/messages":10,"200 /v8/management/observability/usage/queue":42,"404 /api/hello":7,"200 /v8/management/observability/usage/api-keys":3,"200 /v0/management/api-keys":1,"401 /v1/messages":25,"500 /v1/messages":16,"200 /v8/management/observability/logs":1}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# Made-up CLIProxyAPI v8.0.27 config for the row 96 (#1590) test. run-all.sh fills the
|
||||||
|
# @...@ placeholders into state/config.yaml; nothing here is a real credential.
|
||||||
|
# Each field is cited to docs/config.example.v8.0.27.yaml (line numbers in REPORT.md).
|
||||||
|
config-version: 8
|
||||||
|
server:
|
||||||
|
host: "127.0.0.1"
|
||||||
|
port: 18317
|
||||||
|
management:
|
||||||
|
allow-remote: false
|
||||||
|
secret-key: "$2a$10$xFeCYBYsXuD/k/DTz8ieBupX89NDsJLLQLUTto7KxdNIbUP6lxwZq"
|
||||||
|
disable-control-panel: true
|
||||||
|
# Client keys. One bootstrap key keeps the proxy out of open mode; the test replaces the
|
||||||
|
# list through the management API.
|
||||||
|
access:
|
||||||
|
api-keys:
|
||||||
|
- "standin-bootstrap-key"
|
||||||
|
- "sk-standin-agentA-021acca63aaddf78"
|
||||||
|
- "sk-standin-agentB-aa6b32c15aeb2101"
|
||||||
|
routing:
|
||||||
|
retry:
|
||||||
|
request-retry: 0
|
||||||
|
oauth:
|
||||||
|
auth-dir: "/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/auth"
|
||||||
|
observability:
|
||||||
|
logs:
|
||||||
|
debug: true
|
||||||
|
logging-to-file: true
|
||||||
|
request-log: true
|
||||||
|
logs-max-total-size-mb: 200
|
||||||
|
usage:
|
||||||
|
usage-statistics-enabled: true
|
||||||
|
# The proxy's own upstream key group: the stand-in server is its Claude upstream.
|
||||||
|
api-keys:
|
||||||
|
claude:
|
||||||
|
- name: standin
|
||||||
|
base-url: "http://127.0.0.1:18400"
|
||||||
|
keys:
|
||||||
|
- api-key: "standin-upstream-key-0001"
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
# Made-up CLIProxyAPI v8.0.27 config for the row 96 (#1590) test. run-all.sh fills the
|
||||||
|
# @...@ placeholders into state/config.yaml; nothing here is a real credential.
|
||||||
|
# Each field is cited to docs/config.example.v8.0.27.yaml (line numbers in REPORT.md).
|
||||||
|
config-version: 8
|
||||||
|
observability:
|
||||||
|
logs:
|
||||||
|
request-log: true
|
||||||
|
debug: true
|
||||||
|
logging-to-file: true
|
||||||
|
logs-max-total-size-mb: 200
|
||||||
|
usage:
|
||||||
|
usage-statistics-enabled: true
|
||||||
|
redis-usage-queue-retention-seconds: 60
|
||||||
|
# Client keys. One bootstrap key keeps the proxy out of open mode; the test replaces the
|
||||||
|
# list through the management API.
|
||||||
|
access:
|
||||||
|
api-keys:
|
||||||
|
- "standin-bootstrap-key"
|
||||||
|
- "sk-standin-agentB-aa6b32c15aeb2101"
|
||||||
|
server:
|
||||||
|
host: "127.0.0.1"
|
||||||
|
port: 18317
|
||||||
|
discovery:
|
||||||
|
service-type: _ai-gateway._tcp
|
||||||
|
subtypes:
|
||||||
|
- _chat-completions
|
||||||
|
- _responses
|
||||||
|
- _messages
|
||||||
|
- _generate-content
|
||||||
|
- _interactions
|
||||||
|
management:
|
||||||
|
allow-remote: false
|
||||||
|
secret-key: "$2a$10$xFeCYBYsXuD/k/DTz8ieBupX89NDsJLLQLUTto7KxdNIbUP6lxwZq"
|
||||||
|
disable-control-panel: true
|
||||||
|
oauth:
|
||||||
|
auth-dir: "/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/auth"
|
||||||
|
providers:
|
||||||
|
aistudio:
|
||||||
|
ws-auth: true
|
||||||
|
routing:
|
||||||
|
retry:
|
||||||
|
request-retry: 0
|
||||||
|
cooldown:
|
||||||
|
disable-cooling: false
|
||||||
|
# The proxy's own upstream key group: the stand-in server is its Claude upstream.
|
||||||
|
api-keys:
|
||||||
|
claude:
|
||||||
|
- name: standin
|
||||||
|
base-url: "http://127.0.0.1:18400"
|
||||||
|
keys:
|
||||||
|
- api-key: "standin-upstream-key-0001"
|
||||||
|
credentials:
|
||||||
|
concurrency:
|
||||||
|
cpa-heartbeat-timeout: 3s
|
||||||
|
cpa-cancel-bound: 5s
|
||||||
|
reclaim-grace: 5s
|
||||||
|
cleanup-interval: 5s
|
||||||
|
release-flush-interval: 250ms
|
||||||
|
release-max-backoff: 2s
|
||||||
|
busy-retry-min: 250ms
|
||||||
|
busy-retry-max: 1s
|
||||||
|
max-limit: 1000000
|
||||||
|
in-flight:
|
||||||
|
snapshot-interval: 2s
|
||||||
|
stale-after: 10s
|
||||||
|
max-part-bytes: 262144
|
||||||
|
max-part-count: 64
|
||||||
|
max-revision-bytes: 16777216
|
||||||
|
max-aggregate-groups: 100000
|
||||||
|
max-details: 10000
|
||||||
|
max-string-bytes: 256
|
||||||
|
staging-retention: 1m
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# Made-up CLIProxyAPI v8.0.27 config for the row 96 (#1590) test. run-all.sh fills the
|
||||||
|
# @...@ placeholders into state/config.yaml; nothing here is a real credential.
|
||||||
|
# Each field is cited to docs/config.example.v8.0.27.yaml (line numbers in REPORT.md).
|
||||||
|
config-version: 8
|
||||||
|
server:
|
||||||
|
host: "127.0.0.1"
|
||||||
|
port: 18317
|
||||||
|
management:
|
||||||
|
allow-remote: false
|
||||||
|
secret-key: "$2a$10$xFeCYBYsXuD/k/DTz8ieBupX89NDsJLLQLUTto7KxdNIbUP6lxwZq"
|
||||||
|
disable-control-panel: true
|
||||||
|
# Client keys. One bootstrap key keeps the proxy out of open mode; the test replaces the
|
||||||
|
# list through the management API.
|
||||||
|
access:
|
||||||
|
api-keys:
|
||||||
|
- "standin-bootstrap-key"
|
||||||
|
routing:
|
||||||
|
retry:
|
||||||
|
request-retry: 0
|
||||||
|
oauth:
|
||||||
|
auth-dir: "/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/auth"
|
||||||
|
observability:
|
||||||
|
logs:
|
||||||
|
debug: true
|
||||||
|
logging-to-file: true
|
||||||
|
request-log: true
|
||||||
|
logs-max-total-size-mb: 200
|
||||||
|
usage:
|
||||||
|
usage-statistics-enabled: true
|
||||||
|
# The proxy's own upstream key group: the stand-in server is its Claude upstream.
|
||||||
|
api-keys:
|
||||||
|
claude:
|
||||||
|
- name: standin
|
||||||
|
base-url: "http://127.0.0.1:18400"
|
||||||
|
keys:
|
||||||
|
- api-key: "standin-upstream-key-0001"
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Made-up CLIProxyAPI v8.0.27 config for the row 96 (#1590) test. run-all.sh fills the
|
||||||
|
# @...@ placeholders into state/config.yaml; nothing here is a real credential.
|
||||||
|
# Each field is cited to docs/config.example.v8.0.27.yaml (line numbers in REPORT.md).
|
||||||
|
config-version: 8
|
||||||
|
|
||||||
|
server:
|
||||||
|
host: "127.0.0.1"
|
||||||
|
port: 18317
|
||||||
|
|
||||||
|
management:
|
||||||
|
allow-remote: false
|
||||||
|
secret-key: "standin-mgmt-key-0001"
|
||||||
|
disable-control-panel: true
|
||||||
|
|
||||||
|
# Client keys. One bootstrap key keeps the proxy out of open mode; the test replaces the
|
||||||
|
# list through the management API.
|
||||||
|
access:
|
||||||
|
api-keys:
|
||||||
|
- "standin-bootstrap-key"
|
||||||
|
|
||||||
|
routing:
|
||||||
|
retry:
|
||||||
|
request-retry: 0
|
||||||
|
|
||||||
|
oauth:
|
||||||
|
auth-dir: "/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/auth"
|
||||||
|
|
||||||
|
observability:
|
||||||
|
logs:
|
||||||
|
debug: true
|
||||||
|
logging-to-file: true
|
||||||
|
request-log: true
|
||||||
|
logs-max-total-size-mb: 200
|
||||||
|
usage:
|
||||||
|
usage-statistics-enabled: true
|
||||||
|
|
||||||
|
# The proxy's own upstream key group: the stand-in server is its Claude upstream.
|
||||||
|
api-keys:
|
||||||
|
claude:
|
||||||
|
- name: standin
|
||||||
|
base-url: "http://127.0.0.1:18400"
|
||||||
|
keys:
|
||||||
|
- api-key: "standin-upstream-key-0001"
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
established connections to 127.0.0.1:8317 from other host processes: 2
|
||||||
|
files under the live proxy's data dir newer than the marker (names only):
|
||||||
|
/home/jwoltje/.local/opt/EasyCLIProxyAPI/oauth/logs/core-start-output.log
|
||||||
|
/home/jwoltje/.local/opt/EasyCLIProxyAPI/usage-records/usage.db
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
running proxy processes (pid, start, argv; never environ):
|
||||||
|
113963 Tue Oct 13 08:59:03 2026 /home/jwoltje/.local/opt/EasyCLIProxyAPI/cpa-core/cli-proxy-api -config /home/jwoltje/.local/opt/EasyCLIProxyAPI/cpa-core/config.yaml
|
||||||
|
listener on 127.0.0.1:8317 (host netns):
|
||||||
|
LISTEN 0 4096 127.0.0.1:8317 0.0.0.0:*
|
||||||
|
running proxy config, stat only:
|
||||||
|
/home/jwoltje/.local/opt/EasyCLIProxyAPI/cpa-core/config.yaml mtime=2026-10-12 19:02:22.658701797 -0500 size=68021
|
||||||
|
pi config dir ~/.pi/agent changed since the marker (names only):
|
||||||
|
stray names in /tmp: 0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
running proxy processes (pid, start, argv; never environ):
|
||||||
|
113963 Tue Oct 13 08:59:03 2026 /home/jwoltje/.local/opt/EasyCLIProxyAPI/cpa-core/cli-proxy-api -config /home/jwoltje/.local/opt/EasyCLIProxyAPI/cpa-core/config.yaml
|
||||||
|
listener on 127.0.0.1:8317 (host netns):
|
||||||
|
LISTEN 0 4096 127.0.0.1:8317 0.0.0.0:*
|
||||||
|
running proxy config, stat only:
|
||||||
|
/home/jwoltje/.local/opt/EasyCLIProxyAPI/cpa-core/config.yaml mtime=2026-10-12 19:02:22.658701797 -0500 size=68021
|
||||||
|
pi config dir ~/.pi/agent changed since the marker (names only):
|
||||||
|
stray names in /tmp: 0
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
run started 2026-10-13T20:57:40Z
|
||||||
|
inner exit: 0
|
||||||
|
cleanup done: 0 process(es) signalled, state/ removed: yes
|
||||||
|
host guard: running proxy (pid, start time, argv), its 8317 listener and its config stat UNCHANGED; ~/.pi untouched
|
||||||
|
live-proxy activity during the run (informational, other clients; see out/host-activity.txt):
|
||||||
|
established connections to 127.0.0.1:8317 from other host processes: 2
|
||||||
|
files under the live proxy's data dir newer than the marker (names only):
|
||||||
|
/home/jwoltje/.local/opt/EasyCLIProxyAPI/oauth/logs/core-start-output.log
|
||||||
|
/home/jwoltje/.local/opt/EasyCLIProxyAPI/usage-records/usage.db
|
||||||
|
left behind outside out/: 0
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
sk-standin-agentA-021acca63aaddf78
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
sk-standin-agentB-aa6b32c15aeb2101
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,9 @@
|
|||||||
|
S1 GET /v8/management/config/access/api-keys -> 200 ["standin-bootstrap-key"]
|
||||||
|
S1 PUT /v8/management/config/access/api-keys -> 200 {"config-version":8,"status":"ok"}
|
||||||
|
S1 GET /v8/management/config/access/api-keys -> 200 ["standin-bootstrap-key","sk-standin-agentA-021acca63aaddf78","sk-standin-agentB-aa6b32c15aeb2101"]
|
||||||
|
S2 GET /v8/management/observability/usage/api-keys -> 200 {"claude":{"http://127.0.0.1:18400|standin-upstream-key-0001":{"success":6,"failed":0,"recent_requests":[{"time":"12:40-12:50","success":0,"failed":0},{"time":"12:50-13:00","success":0,"failed":0},{"time":"13:00-13:10","success":0,"failed":0},{"time":"13:10-13:20","success":0,"failed":0},{"time":"13
|
||||||
|
S4 DELETE /v0/management/api-keys?value=sk-standin-agentA-021acca63aaddf78 -> 200 {"status":"ok"}
|
||||||
|
S4 GET /v8/management/config/access/api-keys -> 200 ["standin-bootstrap-key","sk-standin-agentB-aa6b32c15aeb2101"]
|
||||||
|
S4 GET /v8/management/observability/usage/api-keys -> 200 {"claude":{"http://127.0.0.1:18400|standin-upstream-key-0001":{"success":9,"failed":0,"recent_requests":[{"time":"12:40-12:50","success":0,"failed":0},{"time":"12:50-13:00","success":0,"failed":0},{"time":"13:00-13:10","success":0,"failed":0},{"time":"13:10-13:20","success":0,"failed":0},{"time":"13
|
||||||
|
S7 GET /v8/management/observability/usage/api-keys -> 200 {"claude":{"http://127.0.0.1:18400|standin-upstream-key-0001":{"success":1,"failed":13,"recent_requests":[{"time":"12:50-13:00","success":0,"failed":0},{"time":"13:00-13:10","success":0,"failed":0},{"time":"13:10-13:20","success":0,"failed":0},{"time":"13:20-13:30","success":0,"failed":0},{"time":"1
|
||||||
|
S7 GET /v8/management/observability/logs -> 200 {"latest-timestamp":1791925477,"line-count":813,"lines":["[2026-10-13 15:57:40] [--------] [info ] [main.go:641] CLIProxyAPI Version: 8.0.27, Commit: bf934162, BuiltAt: 2026-10-12T16:37:54Z","[2026-10-13 15:57:40] [--------] [info ] [util.go:70] log level changed from info to debug (debug=true)","[2
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
S1-A-immediately key=sk-standin-agentA-021acca63aaddf78 -> HTTP 200 {"id":"msg_standin2","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-1 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,
|
||||||
|
S1-B-immediately key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 200 {"id":"msg_standin4","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-3 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,
|
||||||
|
S4-A-after-revoke key=sk-standin-agentA-021acca63aaddf78 -> HTTP 401 {"error":"Invalid API key"}
|
||||||
|
S4-B-after-revoke key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 200 {"id":"msg_standin14","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-13 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":
|
||||||
|
S4b-B-after-restart key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 200 {"id":"msg_standin18","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-17 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":
|
||||||
|
S4b-A-after-restart key=sk-standin-agentA-021acca63aaddf78 -> HTTP 401 {"error":"Invalid API key"}
|
||||||
|
S5-unknown key=sk-standin-never-issued-0000 -> HTTP 401 {"error":"Invalid API key"}
|
||||||
|
S5-missing key=- -> HTTP 401 {"error":"Missing API key"}
|
||||||
|
S6-B-upstream-down key=sk-standin-agentB-aa6b32c15aeb2101 -> HTTP 500 {"type":"error","error":{"type":"api_error","message":"Post \"http://127.0.0.1:18400/v1/messages?beta=true\": dial tcp 127.0.0.1:18400: connect: connection refused"}}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /api/hello
|
||||||
|
Method: HEAD
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:41.092430159-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Connection: keep-alive
|
||||||
|
User-Agent: Bun/1.4.3
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 404
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /api/hello
|
||||||
|
Method: HEAD
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:56.503277718-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Connection: keep-alive
|
||||||
|
User-Agent: Bun/1.4.3
|
||||||
|
Accept: */*
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 404
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /api/hello
|
||||||
|
Method: HEAD
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:57.283579456-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Connection: keep-alive
|
||||||
|
User-Agent: Bun/1.4.3
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 404
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /api/hello
|
||||||
|
Method: HEAD
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:59:37.710418849-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
User-Agent: Bun/1.4.3
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Connection: keep-alive
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 404
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /api/hello
|
||||||
|
Method: HEAD
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:59:38.804130074-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Connection: keep-alive
|
||||||
|
User-Agent: Bun/1.4.3
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 404
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /api/hello
|
||||||
|
Method: HEAD
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T16:02:39.916662918-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Connection: keep-alive
|
||||||
|
User-Agent: Bun/1.4.3
|
||||||
|
Accept: */*
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 404
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /api/hello
|
||||||
|
Method: HEAD
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T16:02:40.740867699-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Connection: keep-alive
|
||||||
|
User-Agent: Bun/1.4.3
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 404
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,817 @@
|
|||||||
|
[2026-10-13 15:57:40] [--------] [info ] [main.go:641] CLIProxyAPI Version: 8.0.27, Commit: bf934162, BuiltAt: 2026-10-12T16:37:54Z
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [util.go:70] log level changed from info to debug (debug=true)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [main.go:752] Local model mode: using embedded catalogs unless an explicit catalog source is configured
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [updater.go:87] management asset auto-updater skipped: control panel disabled
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [antigravity_version.go:62] periodic antigravity version refresh started (interval=3h0m0s)
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-haiku-4-5-20251001 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-4-5-20250929 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-4-6 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-6 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-7 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-8 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-5 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-5 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-fable-5 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-fable-5-1 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-5-5 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-5-5 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-haiku-5-5 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-5-20251101 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-1-20250805 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-20250514 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-4-20250514 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-3-7-sonnet-20250219 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:738] Registered new model claude-3-5-haiku-20241022 from provider claude
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [model_registry.go:533] Registered client claude:apikey:92b4b32bccd0 from provider claude with 19 models
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [credentials.go:26] -------------------------------------------------------------------
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [service_lifecycle.go:99] core auth auto-refresh started (interval=15m0s)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||||||
|
- using env: export GIN_MODE=release
|
||||||
|
- using code: gin.SetMode(gin.ReleaseMode)
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [reconcile.go:103] auth providers unchanged after config update
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /healthz --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func1 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] HEAD /healthz --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func1 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /management.html --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).serveManagementControlPanel-fm (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.(*Server).unifiedModelsHandler.func8 (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/models/*model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func2 (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/chat/completions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).ChatCompletions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/completions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).Completions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/images/generations --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).ImagesGenerations-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/images/edits --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).ImagesEdits-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/videos --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosGenerations-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/videos/generations --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosGenerations-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/videos/edits --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosEdits-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/videos/extensions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosExtensions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/videos/:request_id --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosRetrieve-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/audio/speech --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).AudioSpeech-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/tts --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAITTS-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/messages --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/claude.(*ClaudeCodeAPIHandler).ClaudeMessages-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/messages/count_tokens --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/claude.(*ClaudeCodeAPIHandler).ClaudeCountTokens-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).ResponsesWebsocket-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Responses-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/responses/compact --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Compact-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/alpha/search --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).codexAlphaSearch-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/live --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).Handle-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/live/:call_id --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSideband-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/realtime --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleRealtimeWebsocket-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).Handle-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).Handle-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/realtime/calls/:call_id --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSideband-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/client_secrets --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).CreateClientSecret-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/sessions --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).CreateLegacySession-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/transcription_sessions --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranscriptionSession-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/realtime/translations --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranslation-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/translations --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranslation-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/translations/client_secrets --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranslation-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/hangup --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleHangup-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/accept --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSIPControl-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/reject --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSIPControl-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/refer --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSIPControl-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /openai/v1/videos --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).VideosCreate-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /openai/v1/videos/:video_id/content --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).VideosContent-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /openai/v1/videos/:video_id --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).VideosRetrieve-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /backend-api/codex/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).ResponsesWebsocket-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /backend-api/codex/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Responses-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /backend-api/codex/responses/compact --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Compact-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /backend-api/codex/alpha/search --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).codexAlphaSearch-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1beta/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.(*Server).geminiModelsHandler.func10 (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1beta/interactions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/gemini.(*GeminiAPIHandler).Interactions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v1beta/models/*action --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/gemini.(*GeminiAPIHandler).GeminiHandler-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1beta/models/*action --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.(*Server).geminiGetHandler.func11 (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET / --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func3 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /anthropic/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func4 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /codex/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func5 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /antigravity/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func6 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func7 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /devin/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func7 (9 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [server_management.go:22] management routes registered after secret key configuration
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/oauth/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/oauth/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PostOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v8/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v8/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v8/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/server/latest-version --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLatestVersion-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/requests/api-call --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).APICall-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/routing/cooldown/reset --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/routing/model-definitions/:channel --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetStaticModelDefinitions-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLogs-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v8/management/observability/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteLogs-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs/errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestErrorLogs-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs/errors/:name --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadRequestErrorLog-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs/requests/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestLogByID-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/usage/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAPIKeyUsage-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/usage/queue --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetUsageQueue-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListAuthFiles-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).UploadAuthFile-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v8/management/credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteAuthFile-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/credentials/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthFileModels-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/credentials/download --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadAuthFile-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v8/management/credentials/status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileStatus-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v8/management/credentials/fields --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileFields-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/credentials/refresh --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RefreshAuthFiles-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/oauth/import --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ImportOAuthV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/oauth/auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).StartOAuthV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/oauth/status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthStatus-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v8/management/oauth/session --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).CancelAuthSession-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/plugins --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPlugins-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v8/management/plugins/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeletePlugin-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/plugins/store --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPluginStore-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/plugins/store/:id/install --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).InstallPluginFromStore-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v8/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetPluginQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v8/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).FetchPluginQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v8/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetPluginQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/oauth-callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PostOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetConfigYAML-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutConfigYAML-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/latest-version --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLatestVersion-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/plugins --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPlugins-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/plugin-store --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPluginStore-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/plugin-store/:id/install --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).InstallPluginFromStore-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/plugins/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeletePlugin-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/plugins/:id/enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchPluginEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/plugins/:id/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetPluginConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/plugins/:id/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutPluginConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/plugins/:id/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchPluginConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).FetchPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/plugins/:id/quota/reset --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/debug --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetDebug-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/debug --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutDebug-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/debug --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutDebug-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/logging-to-file --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLoggingToFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/logging-to-file --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLoggingToFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/logging-to-file --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLoggingToFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/logs-max-total-size-mb --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLogsMaxTotalSizeMB-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/logs-max-total-size-mb --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLogsMaxTotalSizeMB-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/logs-max-total-size-mb --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLogsMaxTotalSizeMB-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/error-logs-max-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetErrorLogsMaxFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/error-logs-max-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutErrorLogsMaxFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/error-logs-max-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutErrorLogsMaxFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/usage-statistics-enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetUsageStatisticsEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/usage-statistics-enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutUsageStatisticsEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/usage-statistics-enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutUsageStatisticsEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/api-call --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).APICall-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/quota-exceeded/switch-project --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetSwitchProject-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/quota-exceeded/switch-project --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchProject-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/quota-exceeded/switch-project --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchProject-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/quota-exceeded/switch-preview-model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetSwitchPreviewModel-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/quota-exceeded/switch-preview-model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchPreviewModel-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/quota-exceeded/switch-preview-model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchPreviewModel-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/reset-quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/quota/providers --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetQuotaProviders-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/quota/fetch --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).FetchCredentialQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/quota/reset --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetCredentialQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/api-key-usage --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAPIKeyUsage-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/usage-queue --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetUsageQueue-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetGeminiKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutGeminiKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchGeminiKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteGeminiKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetInteractionsKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutInteractionsKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchInteractionsKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteInteractionsKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLogs-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteLogs-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/request-error-logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestErrorLogs-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/request-error-logs/:name --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadRequestErrorLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/request-log-by-id/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestLogByID-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/request-log --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/request-log --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/request-log --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/ws-auth --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetWebsocketAuth-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/ws-auth --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutWebsocketAuth-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/ws-auth --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutWebsocketAuth-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/request-retry --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestRetry-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/request-retry --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestRetry-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/request-retry --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestRetry-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/max-retry-credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetMaxRetryCredentials-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/max-retry-credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryCredentials-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/max-retry-credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryCredentials-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/max-retry-interval --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetMaxRetryInterval-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/max-retry-interval --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryInterval-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/max-retry-interval --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryInterval-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/force-model-prefix --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetForceModelPrefix-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/force-model-prefix --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutForceModelPrefix-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/force-model-prefix --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutForceModelPrefix-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/routing/strategy --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRoutingStrategy-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/routing/strategy --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRoutingStrategy-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/routing/strategy --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRoutingStrategy-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetClaudeKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutClaudeKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchClaudeKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteClaudeKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetCodexKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutCodexKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchCodexKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteCodexKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetXAIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutXAIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchXAIKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteXAIKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetMetaKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMetaKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchMetaKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteMetaKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetVertexCompatKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutVertexCompatKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchVertexCompatKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteVertexCompatKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PUT /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/auth-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListAuthFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/auth-files/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthFileModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/model-definitions/:channel --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetStaticModelDefinitions-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/auth-files/download --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadAuthFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/auth-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).UploadAuthFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/auth-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteAuthFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/auth-files/status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileStatus-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] PATCH /v0/management/auth-files/fields --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileFields-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/auth-files/refresh --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RefreshAuthFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] POST /v0/management/vertex/import --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ImportVertexCredential-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/anthropic-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestAnthropicToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/codex-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestCodexToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/antigravity-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestAntigravityToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/kimi-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestKimiToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/kimi-ai-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestKimiAIToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/xai-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestXAIToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/devin-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestDevinToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/meta-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestMetaToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v0/management/get-auth-status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthStatus-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-session --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).CancelAuthSession-fm (11 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [global_logger.go:160] GET /v1/ws --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).AttachWebsocketRoute.func2 (10 handlers)
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [server.go:332] Starting API server on 127.0.0.1:18317
|
||||||
|
[2026-10-13 15:57:40] [--------] [warn ] [xai_version.go:96] failed to fetch latest Grok CLI version from npm, keeping fallback/cached version error=npm registry request failed: Get "https://registry.npmjs.org/@xai-official/grok/latest": dial tcp [2606:4700::6810:622]:443: connect: network is unreachable
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [xai_version.go:79] periodic Grok CLI version refresh started (interval=3h0m0s)
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [events.go:34] watching config file: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [events.go:40] watching auth directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/auth
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:26] starting full client load process
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:61] loaded 1 API key clients
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:386] auth directory scan complete - found 0 .json files, 0 readable
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:66] loaded 0 file-based clients
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:145] triggering server update callback before auth refresh
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [reconcile.go:103] auth providers unchanged after config update
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [clients.go:152] full client load complete - 1 clients (0 auth files + 0 Gemini API keys + 0 Vertex API keys + 1 Claude API keys + 0 Codex keys + 0 xAI keys + 0 Meta API keys + 0 OpenAI-compat)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [service_lifecycle.go:210] file watcher started for config and auth directory changes
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/config/access/api-keys"
|
||||||
|
[2026-10-13 15:57:40] [--------] [warn ] [antigravity_version.go:94] failed to refresh antigravity version, using fallback version error=fetch antigravity Hub updater manifest: Get "https://antigravity-hub-auto-updater-974169037036.us-central1.run.app/manifest/latest-arm64-mac.yml": dial tcp [2600:1900:4245:200::]:443: connect: network is unreachable
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [events.go:82] file system event detected: WRITE /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [events.go:86] config file change details - operation: WRITE, timestamp: 2026-10-13 15:57:40.652
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | PUT "/v8/management/config/access/api-keys"
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:72] config file changed, reloading: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [config_reload.go:89] =========================== CONFIG RELOAD ============================
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [config_reload.go:90] starting config reload from: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:128] config changes detected:
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:130] codex.live-media-relay.ice-servers: updated (0 -> 0 entries, credentials redacted)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:130] payload.default: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:130] payload.default-raw: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:130] payload.override: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:130] payload.override-raw: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:130] payload.filter: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:130] api-keys count: 1 -> 3
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [config_reload.go:141] config successfully reloaded, triggering client reload
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:26] starting full client load process
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:61] loaded 1 API key clients
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:71] skipping auth directory rescan; retaining 0 existing auth files
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [clients.go:145] triggering server update callback before auth refresh
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [reconcile.go:103] auth providers unchanged after config update
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [clients.go:152] full client load complete - 1 clients (0 auth files + 0 Gemini API keys + 0 Vertex API keys + 1 Claude API keys + 0 Codex keys + 0 xAI keys + 0 Meta API keys + 0 OpenAI-compat)
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/config/access/api-keys"
|
||||||
|
[2026-10-13 15:57:40] [4d08fb40] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:40] [4d08fb40] [info ] [gin_logger.go:108] 200 | 5ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [config_reload.go:69] config file content unchanged (hash match), skipping reload
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:40] [226dc6e1] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:40] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:40] [226dc6e1] [info ] [gin_logger.go:108] 200 | 1ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:40] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:41] [--------] [warn ] [gin_logger.go:106] 404 | 0s | 127.0.0.1 | HEAD "/api/hello"
|
||||||
|
[2026-10-13 15:57:41] [77dd3d79] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:41] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:41] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:41] [77dd3d79] [info ] [gin_logger.go:108] 200 | 3ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:57:41] [edc3cbeb] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:41] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:41] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:41] [edc3cbeb] [info ] [gin_logger.go:108] 200 | 3ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:57:41] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:41] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:41] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:55] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:56] [e06c4e7a] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:56] [e06c4e7a] [info ] [gin_logger.go:108] 200 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:57:56] [28646971] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:56] [28646971] [info ] [gin_logger.go:108] 200 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 49ms | 127.0.0.1 | GET "/v8/management/observability/usage/api-keys"
|
||||||
|
[2026-10-13 15:57:56] [--------] [warn ] [gin_logger.go:106] 404 | 0s | 127.0.0.1 | HEAD "/api/hello"
|
||||||
|
[2026-10-13 15:57:56] [7d3d5117] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:57:56] [7d3d5117] [info ] [gin_logger.go:108] 200 | 3ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 54ms | 127.0.0.1 | DELETE "/v0/management/api-keys?value=sk-standin-agentA-021acca63aaddf78"
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [events.go:82] file system event detected: WRITE /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [events.go:86] config file change details - operation: WRITE, timestamp: 2026-10-13 15:57:56.902
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:72] config file changed, reloading: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [config_reload.go:89] =========================== CONFIG RELOAD ============================
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [config_reload.go:90] starting config reload from: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:128] config changes detected:
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:130] codex.live-media-relay.ice-servers: updated (0 -> 0 entries, credentials redacted)
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:130] payload.default: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:130] payload.default-raw: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:130] payload.override: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:130] payload.override-raw: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:130] payload.filter: updated (0 -> 0 rules)
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:130] api-keys count: 3 -> 2
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [config_reload.go:141] config successfully reloaded, triggering client reload
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [clients.go:26] starting full client load process
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [clients.go:61] loaded 1 API key clients
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [clients.go:71] skipping auth directory rescan; retaining 0 existing auth files
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [clients.go:145] triggering server update callback before auth refresh
|
||||||
|
[2026-10-13 15:57:56] [--------] [debug] [reconcile.go:103] auth providers unchanged after config update
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [clients.go:152] full client load complete - 1 clients (0 auth files + 0 Gemini API keys + 0 Vertex API keys + 1 Claude API keys + 0 Codex keys + 0 xAI keys + 0 Meta API keys + 0 OpenAI-compat)
|
||||||
|
[2026-10-13 15:57:56] [--------] [info ] [gin_logger.go:108] 200 | 53ms | 127.0.0.1 | GET "/v8/management/config/access/api-keys"
|
||||||
|
[2026-10-13 15:57:56] [5c9d09ac] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:57:57] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:57] [b537f217] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:57] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:57:57] [b537f217] [info ] [gin_logger.go:108] 200 | 1ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:57:57] [--------] [debug] [config_reload.go:69] config file content unchanged (hash match), skipping reload
|
||||||
|
[2026-10-13 15:57:57] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:57] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:57:57] [--------] [warn ] [gin_logger.go:106] 404 | 0s | 127.0.0.1 | HEAD "/api/hello"
|
||||||
|
[2026-10-13 15:57:57] [3ebfe5fe] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:57:57] [55c485a0] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:57:59] [3c332ae4] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:58:01] [a39de9f2] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:58:06] [42a5df1f] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:58:15] [56206dd3] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:58:31] [54eb4702] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:09] [6a7e5158] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:37] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:37] [c5e90c32] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:37] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:37] [--------] [warn ] [gin_logger.go:106] 404 | 0s | 127.0.0.1 | HEAD "/api/hello"
|
||||||
|
[2026-10-13 15:59:37] [9ce43f01] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:59:37] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:59:37] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 15:59:37] [9ce43f01] [info ] [gin_logger.go:108] 200 | 3ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:37] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [gin_logger.go:108] 200 | 49ms | 127.0.0.1 | GET "/v8/management/observability/usage/api-keys"
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [service_lifecycle.go:221] service context cancelled, shutting down...
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [server.go:413] Stopping API server...
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [server.go:453] API server stopped
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [main.go:641] CLIProxyAPI Version: 8.0.27, Commit: bf934162, BuiltAt: 2026-10-12T16:37:54Z
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [util.go:70] log level changed from info to debug (debug=true)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [main.go:752] Local model mode: using embedded catalogs unless an explicit catalog source is configured
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [updater.go:87] management asset auto-updater skipped: control panel disabled
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [antigravity_version.go:62] periodic antigravity version refresh started (interval=3h0m0s)
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-haiku-4-5-20251001 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-4-5-20250929 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-4-6 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-6 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-7 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-8 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-5 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-5 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-fable-5 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-fable-5-1 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-5-5 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-5-5 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-haiku-5-5 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-5-20251101 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-1-20250805 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-opus-4-20250514 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-sonnet-4-20250514 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-3-7-sonnet-20250219 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:738] Registered new model claude-3-5-haiku-20241022 from provider claude
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [model_registry.go:533] Registered client claude:apikey:92b4b32bccd0 from provider claude with 19 models
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [credentials.go:26] -------------------------------------------------------------------
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [service_lifecycle.go:99] core auth auto-refresh started (interval=15m0s)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
|
||||||
|
- using env: export GIN_MODE=release
|
||||||
|
- using code: gin.SetMode(gin.ReleaseMode)
|
||||||
|
[2026-10-13 15:59:38] [--------] [warn ] [xai_version.go:96] failed to fetch latest Grok CLI version from npm, keeping fallback/cached version error=npm registry request failed: Get "https://registry.npmjs.org/@xai-official/grok/latest": dial tcp [2606:4700::6810:722]:443: connect: network is unreachable
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [xai_version.go:79] periodic Grok CLI version refresh started (interval=3h0m0s)
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [reconcile.go:103] auth providers unchanged after config update
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /healthz --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func1 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] HEAD /healthz --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func1 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /management.html --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).serveManagementControlPanel-fm (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.(*Server).unifiedModelsHandler.func8 (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/models/*model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func2 (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/chat/completions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).ChatCompletions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/completions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).Completions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/images/generations --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).ImagesGenerations-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/images/edits --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).ImagesEdits-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/videos --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosGenerations-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/videos/generations --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosGenerations-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/videos/edits --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosEdits-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/videos/extensions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosExtensions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/videos/:request_id --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAIVideosRetrieve-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [warn ] [antigravity_version.go:94] failed to refresh antigravity version, using fallback version error=fetch antigravity Hub updater manifest: Get "https://antigravity-hub-auto-updater-974169037036.us-central1.run.app/manifest/latest-arm64-mac.yml": dial tcp [2600:1900:4243:200::]:443: connect: network is unreachable
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/audio/speech --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).AudioSpeech-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/tts --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).XAITTS-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/messages --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/claude.(*ClaudeCodeAPIHandler).ClaudeMessages-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/messages/count_tokens --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/claude.(*ClaudeCodeAPIHandler).ClaudeCountTokens-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).ResponsesWebsocket-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Responses-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/responses/compact --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Compact-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/alpha/search --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).codexAlphaSearch-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/live --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).Handle-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/live/:call_id --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSideband-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/realtime --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleRealtimeWebsocket-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).Handle-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).Handle-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/realtime/calls/:call_id --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSideband-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/client_secrets --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).CreateClientSecret-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/sessions --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).CreateLegacySession-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/transcription_sessions --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranscriptionSession-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/realtime/translations --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranslation-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/translations --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranslation-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/translations/client_secrets --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleTranslation-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/hangup --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleHangup-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/accept --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSIPControl-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/reject --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSIPControl-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1/realtime/calls/:call_id/refer --> github.com/router-for-me/CLIProxyAPI/v8/internal/client/codex/live.(*Handler).HandleSIPControl-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /openai/v1/videos --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).VideosCreate-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /openai/v1/videos/:video_id/content --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).VideosContent-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /openai/v1/videos/:video_id --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIAPIHandler).VideosRetrieve-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /backend-api/codex/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).ResponsesWebsocket-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /backend-api/codex/responses --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Responses-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /backend-api/codex/responses/compact --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/openai.(*OpenAIResponsesAPIHandler).Compact-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /backend-api/codex/alpha/search --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).codexAlphaSearch-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1beta/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.(*Server).geminiModelsHandler.func10 (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1beta/interactions --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/gemini.(*GeminiAPIHandler).Interactions-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v1beta/models/*action --> github.com/router-for-me/CLIProxyAPI/v8/sdk/api/handlers/gemini.(*GeminiAPIHandler).GeminiHandler-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1beta/models/*action --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.(*Server).geminiGetHandler.func11 (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET / --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func3 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /anthropic/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func4 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /codex/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func5 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /antigravity/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func6 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func7 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /devin/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).setupRoutes.func7 (9 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [server_management.go:22] management routes registered after secret key configuration
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/oauth/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/oauth/callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PostOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v8/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v8/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v8/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v8/management/config/*path --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ConfigV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/server/latest-version --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLatestVersion-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/requests/api-call --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).APICall-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/routing/cooldown/reset --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/routing/model-definitions/:channel --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetStaticModelDefinitions-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLogs-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v8/management/observability/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteLogs-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs/errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestErrorLogs-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs/errors/:name --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadRequestErrorLog-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/logs/requests/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestLogByID-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/usage/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAPIKeyUsage-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/observability/usage/queue --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetUsageQueue-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListAuthFiles-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).UploadAuthFile-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v8/management/credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteAuthFile-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/credentials/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthFileModels-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/credentials/download --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadAuthFile-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v8/management/credentials/status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileStatus-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v8/management/credentials/fields --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileFields-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/credentials/refresh --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RefreshAuthFiles-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/oauth/import --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ImportOAuthV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/oauth/auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).StartOAuthV8-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/oauth/status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthStatus-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v8/management/oauth/session --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).CancelAuthSession-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/plugins --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPlugins-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v8/management/plugins/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeletePlugin-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/plugins/store --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPluginStore-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/plugins/store/:id/install --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).InstallPluginFromStore-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v8/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetPluginQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v8/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).FetchPluginQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v8/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetPluginQuota-fm (12 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/oauth-callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PostOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-callback --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthCallback-fm (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetConfigYAML-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/config.yaml --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutConfigYAML-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/latest-version --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLatestVersion-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/plugins --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPlugins-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/plugin-store --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListPluginStore-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/plugin-store/:id/install --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).InstallPluginFromStore-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/plugins/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeletePlugin-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/plugins/:id/enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchPluginEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/plugins/:id/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetPluginConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/plugins/:id/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutPluginConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/plugins/:id/config --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchPluginConfig-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).FetchPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/plugins/:id/quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/plugins/:id/quota/reset --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetPluginQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/debug --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetDebug-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/debug --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutDebug-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/debug --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutDebug-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/logging-to-file --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLoggingToFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/logging-to-file --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLoggingToFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/logging-to-file --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLoggingToFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/logs-max-total-size-mb --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLogsMaxTotalSizeMB-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/logs-max-total-size-mb --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLogsMaxTotalSizeMB-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/logs-max-total-size-mb --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutLogsMaxTotalSizeMB-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/error-logs-max-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetErrorLogsMaxFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/error-logs-max-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutErrorLogsMaxFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/error-logs-max-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutErrorLogsMaxFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/usage-statistics-enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetUsageStatisticsEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/usage-statistics-enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutUsageStatisticsEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/usage-statistics-enabled --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutUsageStatisticsEnabled-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/proxy-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteProxyURL-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/api-call --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).APICall-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/quota-exceeded/switch-project --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetSwitchProject-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/quota-exceeded/switch-project --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchProject-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/quota-exceeded/switch-project --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchProject-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/quota-exceeded/switch-preview-model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetSwitchPreviewModel-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/quota-exceeded/switch-preview-model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchPreviewModel-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/quota-exceeded/switch-preview-model --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutSwitchPreviewModel-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/reset-quota --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/quota/providers --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetQuotaProviders-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/quota/fetch --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).FetchCredentialQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/quota/reset --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ResetCredentialQuota-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/api-keys --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteAPIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/api-key-usage --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAPIKeyUsage-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/usage-queue --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetUsageQueue-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetGeminiKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutGeminiKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchGeminiKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/gemini-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteGeminiKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetInteractionsKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutInteractionsKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchInteractionsKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/interactions-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteInteractionsKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetLogs-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteLogs-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/request-error-logs --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestErrorLogs-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/request-error-logs/:name --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadRequestErrorLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/request-log-by-id/:id --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestLogByID-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/request-log --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/request-log --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/request-log --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestLog-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/ws-auth --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetWebsocketAuth-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/ws-auth --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutWebsocketAuth-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/ws-auth --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutWebsocketAuth-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/request-retry --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRequestRetry-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/request-retry --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestRetry-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/request-retry --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRequestRetry-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/max-retry-credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetMaxRetryCredentials-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/max-retry-credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryCredentials-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/max-retry-credentials --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryCredentials-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/max-retry-interval --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetMaxRetryInterval-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/max-retry-interval --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryInterval-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/max-retry-interval --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMaxRetryInterval-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/force-model-prefix --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetForceModelPrefix-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/force-model-prefix --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutForceModelPrefix-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/force-model-prefix --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutForceModelPrefix-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/routing/strategy --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetRoutingStrategy-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/routing/strategy --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRoutingStrategy-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/routing/strategy --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutRoutingStrategy-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetClaudeKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutClaudeKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchClaudeKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/claude-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteClaudeKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetCodexKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutCodexKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchCodexKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/codex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteCodexKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetXAIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutXAIKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchXAIKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/xai-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteXAIKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetMetaKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutMetaKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchMetaKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/meta-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteMetaKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/openai-compatibility --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOpenAICompat-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetVertexCompatKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutVertexCompatKeys-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchVertexCompatKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/vertex-api-key --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteVertexCompatKey-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-excluded-models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOAuthExcludedModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-model-alias --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOAuthModelAlias-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PUT /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PutOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-request-scoped-errors --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteOAuthRequestScopedErrors-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/auth-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ListAuthFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/auth-files/models --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthFileModels-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/model-definitions/:channel --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetStaticModelDefinitions-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/auth-files/download --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DownloadAuthFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/auth-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).UploadAuthFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/auth-files --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).DeleteAuthFile-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/auth-files/status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileStatus-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] PATCH /v0/management/auth-files/fields --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).PatchAuthFileFields-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/auth-files/refresh --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RefreshAuthFiles-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] POST /v0/management/vertex/import --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).ImportVertexCredential-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/anthropic-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestAnthropicToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/codex-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestCodexToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/antigravity-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestAntigravityToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/kimi-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestKimiToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/kimi-ai-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestKimiAIToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/xai-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestXAIToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/devin-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestDevinToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/meta-auth-url --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).RequestMetaToken-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v0/management/get-auth-status --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).GetAuthStatus-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] DELETE /v0/management/oauth-session --> github.com/router-for-me/CLIProxyAPI/v8/internal/api/handlers/management.(*Handler).CancelAuthSession-fm (11 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [global_logger.go:160] GET /v1/ws --> github.com/router-for-me/CLIProxyAPI/v8/internal/api.(*Server).AttachWebsocketRoute.func2 (10 handlers)
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [server.go:332] Starting API server on 127.0.0.1:18317
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [events.go:34] watching config file: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/config.yaml
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [events.go:40] watching auth directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/auth
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [clients.go:26] starting full client load process
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [clients.go:61] loaded 1 API key clients
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [clients.go:386] auth directory scan complete - found 0 .json files, 0 readable
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [clients.go:66] loaded 0 file-based clients
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [clients.go:145] triggering server update callback before auth refresh
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [reconcile.go:103] auth providers unchanged after config update
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [clients.go:152] full client load complete - 1 clients (0 auth files + 0 Gemini API keys + 0 Vertex API keys + 1 Claude API keys + 0 Codex keys + 0 xAI keys + 0 Meta API keys + 0 OpenAI-compat)
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [service_lifecycle.go:210] file watcher started for config and auth directory changes
|
||||||
|
[2026-10-13 15:59:38] [e6f50339] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:59:38] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 15:59:38] [e6f50339] [info ] [gin_logger.go:108] 200 | 2ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:38] [56a17d37] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:38] [3e65ed72] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:38] [000680b9] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 15:59:38] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 15:59:38] [--------] [warn ] [gin_logger.go:106] 404 | 0s | 127.0.0.1 | HEAD "/api/hello"
|
||||||
|
[2026-10-13 15:59:38] [c5b576c8] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:39] [297451ab] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:40] [62bc3d1f] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:43] [a20a6541] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:47] [270670d4] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 15:59:55] [41163905] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:00:13] [34b30b11] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:00:49] [c266012d] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:01:26] [bb34b220] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:02] [86769890] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:39] [e1c39c58] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:39] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:02:39] [44d3fe12] [warn ] [gin_logger.go:106] 401 | 0s | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:39] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:02:39] [--------] [warn ] [gin_logger.go:106] 404 | 0s | 127.0.0.1 | HEAD "/api/hello"
|
||||||
|
[2026-10-13 16:02:40] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:02:40] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:02:40] [eaf1c665] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:40] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:40] [eaf1c665] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=0s err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:02:40] [eaf1c665] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 16:02:40] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:02:40] [--------] [info ] [gin_logger.go:108] 200 | 49ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:02:40] [--------] [warn ] [gin_logger.go:106] 404 | 0s | 127.0.0.1 | HEAD "/api/hello"
|
||||||
|
[2026-10-13 16:02:40] [4aefd81f] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:40] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:40] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:40] [4aefd81f] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:02:40] [4aefd81f] [error] [gin_logger.go:104] 500 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:41] [49a241d8] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:41] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:41] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:41] [49a241d8] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:02:41] [49a241d8] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:42] [722f4e46] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:42] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:42] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:42] [722f4e46] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:02:42] [722f4e46] [error] [gin_logger.go:104] 500 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:44] [4653f804] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:44] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:44] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:44] [4653f804] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:02:44] [4653f804] [error] [gin_logger.go:104] 500 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:49] [cdd40ca9] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:49] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:49] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:49] [cdd40ca9] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:02:49] [cdd40ca9] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:02:59] [05297f34] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:02:59] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:59] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:02:59] [05297f34] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:02:59] [05297f34] [error] [gin_logger.go:104] 500 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:03:15] [513819ae] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:03:15] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:03:15] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:03:15] [513819ae] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:03:15] [513819ae] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:03:48] [cfb7ac32] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:03:48] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:03:48] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:03:48] [cfb7ac32] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:03:48] [cfb7ac32] [error] [gin_logger.go:104] 500 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:04:20] [--------] [info ] [gin_logger.go:108] 200 | 53ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:20] [--------] [info ] [gin_logger.go:108] 200 | 54ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:21] [c4bf5062] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:21] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:21] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:21] [c4bf5062] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:04:21] [c4bf5062] [error] [gin_logger.go:104] 500 | 2ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:04:25] [91e21a9d] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:25] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:25] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:25] [91e21a9d] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:04:25] [91e21a9d] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:04:29] [d855c755] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:29] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:29] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:29] [d855c755] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:04:29] [d855c755] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:04:37] [1d8ef141] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [apply.go:337] thinking: original config from request | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [apply.go:394] thinking: processed config to apply | provider=claude model=claude-sonnet-5-5 mode=level budget=0 level=medium
|
||||||
|
[2026-10-13 16:04:37] [1d8ef141] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=1ms err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:04:37] [1d8ef141] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages?beta=true"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/api-keys"
|
||||||
|
[2026-10-13 16:04:37] [5eadf774] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:37] [5eadf774] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=0s err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:04:37] [5eadf774] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 16:04:37] [4b068ca8] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:37] [4b068ca8] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=0s err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:04:37] [4b068ca8] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 16:04:37] [efd563be] [debug] [conductor_execution.go:1856] Use API key stan...0001 for model claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [apply.go:345] thinking: no config found, passthrough | provider=claude model=claude-sonnet-5-5
|
||||||
|
[2026-10-13 16:04:37] [efd563be] [warn ] [conductor_execution.go:1981] upstream execution failed: provider=claude model=claude-sonnet-5-5 auth=api_key=stan...0001 duration=0s err=Post "http://127.0.0.1:18400/v1/messages?beta=true": dial tcp 127.0.0.1:18400: connect: connection refused
|
||||||
|
[2026-10-13 16:04:37] [efd563be] [error] [gin_logger.go:104] 500 | 1ms | 127.0.0.1 | POST "/v1/messages"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue?count=100"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 51ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 52ms | 127.0.0.1 | GET "/v8/management/observability/usage/queue"
|
||||||
|
[2026-10-13 16:04:37] [--------] [info ] [gin_logger.go:108] 200 | 50ms | 127.0.0.1 | GET "/v8/management/observability/logs"
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [service_lifecycle.go:221] service context cancelled, shutting down...
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [server.go:413] Stopping API server...
|
||||||
|
[2026-10-13 16:04:37] [--------] [debug] [server.go:453] API server stopped
|
||||||
+64
@@ -0,0 +1,64 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:40.860227178-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
User-Agent: curl/8.22.0
|
||||||
|
Accept: */*
|
||||||
|
Content-Type: application/json
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-Api-Key: sk-s...2101
|
||||||
|
Content-Length: 91
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":"ping"}]}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:40.860694809-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: curl/8.22.0
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":[{"type":"text","text":"ping","cache_control":{"type":"ephemeral"}}]}],"stream":false}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:40.861612122-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: application/json
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:40 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"id":"msg_standin4","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-3 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":12}}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
X-Cpa-Trace-Id: 20261013155740-5cf935520c7b2d28-01a1370e-84fc-7319-88b1-835e226dc6e1
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"id":"msg_standin4","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-3 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":12}}
|
||||||
+64
@@ -0,0 +1,64 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:40.717613095-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-Api-Key: sk-s...df78
|
||||||
|
Content-Length: 91
|
||||||
|
User-Agent: curl/8.22.0
|
||||||
|
Accept: */*
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":"ping"}]}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:40.718203989-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: curl/8.22.0
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":[{"type":"text","text":"ping","cache_control":{"type":"ephemeral"}}]}],"stream":false}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:40.722208373-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: application/json
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:40 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"id":"msg_standin2","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-1 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":12}}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Content-Type: application/json
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
X-Cpa-Trace-Id: 20261013155740-5cf935520c7b2d28-01a1370e-846d-78e9-afb9-d0854d08fb40
|
||||||
|
|
||||||
|
{"id":"msg_standin2","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-1 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":12}}
|
||||||
+140
@@ -0,0 +1,140 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:41.247662748-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-App: cli
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
Content-Length: 3921
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
Accept: application/json
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
X-Claude-Code-Session-Id: a929e369-2a8a-4b17-af1c-826aaf3e5f06
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"TOOL-TEST read probe.txt in your working directory and tell me what it says"},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.d9b; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"fdc9ff40f8cccb33117af58f3f15775f45154553326c3e12d14aeccb33a8a417\",\"account_uuid\":\"\",\"session_id\":\"a929e369-2a8a-4b17-af1c-826aaf3e5f06\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:41.248550735-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: text/event-stream
|
||||||
|
Accept-Encoding: identity
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-App: cli
|
||||||
|
X-Claude-Code-Session-Id: a929e369-2a8a-4b17-af1c-826aaf3e5f06
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Package-Version: 0.112.1
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"TOOL-TEST read probe.txt in your working directory and tell me what it says"},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.d9b; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"fdc9ff40f8cccb33117af58f3f15775f45154553326c3e12d14aeccb33a8a417\",\"account_uuid\":\"\",\"session_id\":\"a929e369-2a8a-4b17-af1c-826aaf3e5f06\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:41.250099402-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Cache-Control: no-cache
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:41 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin6","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"tool_use","id":"toolu_standin5","name":"Read","input":{}}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"{\"file_path\":\"/mnt/storage/src/mosaic-stack/agents"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"/researcher/work/i1-proxy-test/state/ws/probe.txt\"}"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
X-Cpa-Trace-Id: 20261013155741-5cf935520c7b2d28-01a1370e-867f-7991-b43b-f7c077dd3d79
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Cache-Control: no-cache
|
||||||
|
Connection: keep-alive
|
||||||
|
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin6","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"tool_use","id":"toolu_standin5","name":"Read","input":{}}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"{\"file_path\":\"/mnt/storage/src/mosaic-stack/agents"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"/researcher/work/i1-proxy-test/state/ws/probe.txt\"}"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
+140
@@ -0,0 +1,140 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:41.287515433-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-App: cli
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
Connection: keep-alive
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
Accept: application/json
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
Content-Length: 4342
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-Claude-Code-Session-Id: a929e369-2a8a-4b17-af1c-826aaf3e5f06
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"TOOL-TEST read probe.txt in your working directory and tell me what it says"},{"role":"system","content":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","output_config":{"effort":"medium"}},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_standin5","name":"Read","input":{"file_path":"/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws/probe.txt"}}]},{"role":"user","content":[{"tool_use_id":"toolu_standin5","type":"tool_result","content":"1\tprobe-file-content: STAND-IN-PROBE-7f3a\n2\t"}]},{"role":"system","content":[{"type":"text","text":"<total_tokens>14999963 tokens left</total_tokens>","cache_control":{"type":"ephemeral"}}]}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.d9b; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"fdc9ff40f8cccb33117af58f3f15775f45154553326c3e12d14aeccb33a8a417\",\"account_uuid\":\"\",\"session_id\":\"a929e369-2a8a-4b17-af1c-826aaf3e5f06\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:41.28843385-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: text/event-stream
|
||||||
|
Accept-Encoding: identity
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-App: cli
|
||||||
|
X-Claude-Code-Session-Id: a929e369-2a8a-4b17-af1c-826aaf3e5f06
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Package-Version: 0.112.1
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"TOOL-TEST read probe.txt in your working directory and tell me what it says"},{"role":"system","content":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","output_config":{"effort":"medium"}},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_standin5","name":"Read","input":{"file_path":"/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws/probe.txt"}}]},{"role":"user","content":[{"tool_use_id":"toolu_standin5","type":"tool_result","content":"1\tprobe-file-content: STAND-IN-PROBE-7f3a\n2\t"}]},{"role":"system","content":[{"type":"text","text":"<total_tokens>14999963 tokens left</total_tokens>","cache_control":{"type":"ephemeral"}}]}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.d9b; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"fdc9ff40f8cccb33117af58f3f15775f45154553326c3e12d14aeccb33a8a417\",\"account_uuid\":\"\",\"session_id\":\"a929e369-2a8a-4b17-af1c-826aaf3e5f06\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:41.289718377-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Cache-Control: no-cache
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:41 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin7","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"ROUNDTRIP-OK: "}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"1\tprobe-file-content: STAND-IN-PROBE-7f3a\n2"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Connection: keep-alive
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Cache-Control: no-cache
|
||||||
|
X-Cpa-Trace-Id: 20261013155741-5cf935520c7b2d28-01a1370e-86a7-7767-af79-15c0edc3cbeb
|
||||||
|
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin7","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"ROUNDTRIP-OK: "}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"1\tprobe-file-content: STAND-IN-PROBE-7f3a\n2"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
+135
@@ -0,0 +1,135 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:56.144438676-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
X-Stainless-Timeout: 300
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Accept-Language: *
|
||||||
|
X-Stainless-Package-Version: 0.123.0
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
User-Agent: pi (linux 7.2.2-1-cachyos; x64)
|
||||||
|
Content-Length: 1640
|
||||||
|
X-Stainless-Runtime-Version: v26.8.1
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Accept: application/json
|
||||||
|
Accept-Encoding: gzip, deflate
|
||||||
|
Content-Type: application/json
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Api-Key: sk-s...df78
|
||||||
|
Sec-Fetch-Mode: cors
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
Connection: keep-alive
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":[{"type":"text","text":"TOOL-TEST read probe.txt in your working directory and tell me what it says"}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_standin8","name":"read","input":{"path":"/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws/probe.txt"}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_standin8","content":"probe-file-content: STAND-IN-PROBE-7f3a\n","is_error":false,"cache_control":{"type":"ephemeral"}}]}],"max_tokens":128000,"stream":true,"system":[{"type":"text","text":"You are a test agent. Follow the request exactly.\nCurrent working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"read","description":"Read the contents of a file. Supports text files and images (jpg, png, gif, webp, bmp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue with offset until complete.","eager_input_streaming":true,"input_schema":{"type":"object","properties":{"path":{"type":"string","description":"Path to the file to read (relative or absolute)"},"offset":{"type":"number","description":"Line number to start reading from (1-indexed)"},"limit":{"type":"number","description":"Maximum number of lines to read"}},"required":["path"]},"cache_control":{"type":"ephemeral"}}],"thinking":{"type":"adaptive","display":"summarized"},"output_config":{"effort":"medium"}}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:56.14511013-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: application/json
|
||||||
|
Accept-Encoding: gzip, deflate
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: pi (linux 7.2.2-1-cachyos; x64)
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Package-Version: 0.123.0
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
X-Stainless-Runtime-Version: v26.8.1
|
||||||
|
X-Stainless-Timeout: 300
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":[{"type":"text","text":"TOOL-TEST read probe.txt in your working directory and tell me what it says"}]},{"role":"assistant","content":[{"type":"tool_use","id":"toolu_standin8","name":"read","input":{"path":"/mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws/probe.txt"}}]},{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_standin8","content":"probe-file-content: STAND-IN-PROBE-7f3a\n","is_error":false,"cache_control":{"type":"ephemeral"}}]}],"max_tokens":128000,"stream":true,"system":[{"type":"text","text":"You are a test agent. Follow the request exactly.\nCurrent working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"read","description":"Read the contents of a file. Supports text files and images (jpg, png, gif, webp, bmp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue with offset until complete.","eager_input_streaming":true,"input_schema":{"type":"object","properties":{"path":{"type":"string","description":"Path to the file to read (relative or absolute)"},"offset":{"type":"number","description":"Line number to start reading from (1-indexed)"},"limit":{"type":"number","description":"Maximum number of lines to read"}},"required":["path"]},"cache_control":{"type":"ephemeral"}}],"thinking":{"type":"adaptive","display":"summarized"},"output_config":{"effort":"medium"}}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:56.146037998-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Cache-Control: no-cache
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:56 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin10","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"ROUNDTRIP-OK: "}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"probe-file-content: STAND-IN-PROBE-7f3a"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
Connection: keep-alive
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
X-Cpa-Trace-Id: 20261013155756-5cf935520c7b2d28-01a1370e-c0b0-766f-bd5e-720228646971
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Cache-Control: no-cache
|
||||||
|
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin10","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"ROUNDTRIP-OK: "}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"probe-file-content: STAND-IN-PROBE-7f3a"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:56.96779983-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept: */*
|
||||||
|
Content-Type: application/json
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-Api-Key: sk-s...df78
|
||||||
|
Content-Length: 91
|
||||||
|
User-Agent: curl/8.22.0
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":"ping"}]}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Content-Type: application/json; charset=utf-8
|
||||||
|
|
||||||
|
{"error":"Invalid API key"}
|
||||||
+146
@@ -0,0 +1,146 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:56.658903816-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Authorization: Bearer sk-s...2101
|
||||||
|
Content-Type: application/json
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
X-Claude-Code-Session-Id: f1d31513-c8a0-4c90-9019-ca5b33aaa7bb
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Content-Length: 3878
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Connection: keep-alive
|
||||||
|
Accept: application/json
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-App: cli
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"3c13c48b0acb544586fca20a3e9cee4a60d237c0ac2242e469daf5c20bce05bc\",\"account_uuid\":\"\",\"session_id\":\"f1d31513-c8a0-4c90-9019-ca5b33aaa7bb\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:56.659775576-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: text/event-stream
|
||||||
|
Accept-Encoding: identity
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-App: cli
|
||||||
|
X-Claude-Code-Session-Id: f1d31513-c8a0-4c90-9019-ca5b33aaa7bb
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Package-Version: 0.112.1
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"3c13c48b0acb544586fca20a3e9cee4a60d237c0ac2242e469daf5c20bce05bc\",\"account_uuid\":\"\",\"session_id\":\"f1d31513-c8a0-4c90-9019-ca5b33aaa7bb\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:56.660866597-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Cache-Control: no-cache
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:56 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin12","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"STAND-IN-ANSWER-"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"11"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" (streamed in three chunks)"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Cache-Control: no-cache
|
||||||
|
X-Cpa-Trace-Id: 20261013155756-5cf935520c7b2d28-01a1370e-c2b2-7d41-951b-7c1f7d3d5117
|
||||||
|
Connection: keep-alive
|
||||||
|
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin12","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"STAND-IN-ANSWER-"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"11"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" (streamed in three chunks)"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
+135
@@ -0,0 +1,135 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:56.13029485-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
X-Stainless-Timeout: 300
|
||||||
|
X-Api-Key: sk-s...df78
|
||||||
|
X-Stainless-Runtime-Version: v26.8.1
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Content-Type: application/json
|
||||||
|
Content-Length: 1293
|
||||||
|
Connection: keep-alive
|
||||||
|
Sec-Fetch-Mode: cors
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Package-Version: 0.123.0
|
||||||
|
Accept: application/json
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Accept-Language: *
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
User-Agent: pi (linux 7.2.2-1-cachyos; x64)
|
||||||
|
Accept-Encoding: gzip, deflate
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":[{"type":"text","text":"TOOL-TEST read probe.txt in your working directory and tell me what it says","cache_control":{"type":"ephemeral"}}]}],"max_tokens":128000,"stream":true,"system":[{"type":"text","text":"You are a test agent. Follow the request exactly.\nCurrent working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"read","description":"Read the contents of a file. Supports text files and images (jpg, png, gif, webp, bmp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue with offset until complete.","eager_input_streaming":true,"input_schema":{"type":"object","properties":{"path":{"type":"string","description":"Path to the file to read (relative or absolute)"},"offset":{"type":"number","description":"Line number to start reading from (1-indexed)"},"limit":{"type":"number","description":"Maximum number of lines to read"}},"required":["path"]},"cache_control":{"type":"ephemeral"}}],"thinking":{"type":"adaptive","display":"summarized"},"output_config":{"effort":"medium"}}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:56.13092441-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: application/json
|
||||||
|
Accept-Encoding: gzip, deflate
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: pi (linux 7.2.2-1-cachyos; x64)
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Package-Version: 0.123.0
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
X-Stainless-Runtime-Version: v26.8.1
|
||||||
|
X-Stainless-Timeout: 300
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":[{"type":"text","text":"TOOL-TEST read probe.txt in your working directory and tell me what it says","cache_control":{"type":"ephemeral"}}]}],"max_tokens":128000,"stream":true,"system":[{"type":"text","text":"You are a test agent. Follow the request exactly.\nCurrent working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"read","description":"Read the contents of a file. Supports text files and images (jpg, png, gif, webp, bmp). Images are sent as attachments. For text files, output is truncated to 2000 lines or 50KB (whichever is hit first). Use offset/limit for large files. When you need the full file, continue with offset until complete.","eager_input_streaming":true,"input_schema":{"type":"object","properties":{"path":{"type":"string","description":"Path to the file to read (relative or absolute)"},"offset":{"type":"number","description":"Line number to start reading from (1-indexed)"},"limit":{"type":"number","description":"Maximum number of lines to read"}},"required":["path"]},"cache_control":{"type":"ephemeral"}}],"thinking":{"type":"adaptive","display":"summarized"},"output_config":{"effort":"medium"}}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:56.132086924-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Cache-Control: no-cache
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:56 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin9","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"tool_use","id":"toolu_standin8","name":"read","input":{}}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"{\"path\":\"/mnt/storage/src/mosaic-stack/agents/re"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"searcher/work/i1-proxy-test/state/ws/probe.txt\"}"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
Connection: keep-alive
|
||||||
|
X-Cpa-Trace-Id: 20261013155756-5cf935520c7b2d28-01a1370e-c0a2-73fe-a377-8dd2e06c4e7a
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Content-Type: text/event-stream
|
||||||
|
Cache-Control: no-cache
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
|
||||||
|
event: message_start
|
||||||
|
data: {"type":"message_start","message":{"id":"msg_standin9","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":1}}}
|
||||||
|
|
||||||
|
event: content_block_start
|
||||||
|
data: {"type":"content_block_start","index":0,"content_block":{"type":"tool_use","id":"toolu_standin8","name":"read","input":{}}}
|
||||||
|
|
||||||
|
event: ping
|
||||||
|
data: {"type":"ping"}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"{\"path\":\"/mnt/storage/src/mosaic-stack/agents/re"}}
|
||||||
|
|
||||||
|
event: content_block_delta
|
||||||
|
data: {"type":"content_block_delta","index":0,"delta":{"type":"input_json_delta","partial_json":"searcher/work/i1-proxy-test/state/ws/probe.txt\"}"}}
|
||||||
|
|
||||||
|
event: content_block_stop
|
||||||
|
data: {"type":"content_block_stop","index":0}
|
||||||
|
|
||||||
|
event: message_delta
|
||||||
|
data: {"type":"message_delta","delta":{"stop_reason":"tool_use","stop_sequence":null},"usage":{"output_tokens":12}}
|
||||||
|
|
||||||
|
event: message_stop
|
||||||
|
data: {"type":"message_stop"}
|
||||||
|
|
||||||
|
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:57.450950084-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
X-Claude-Code-Session-Id: 230ab415-f4d0-484a-afef-8d339dc9c26b
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Connection: keep-alive
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
X-App: cli
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
Content-Length: 3878
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"5de8b8ebda38e61eacbbbc75150c141a80fdb55d4cb5976d449129dc487897d5\",\"account_uuid\":\"\",\"session_id\":\"230ab415-f4d0-484a-afef-8d339dc9c26b\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:57.969659656-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Length: 3878
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-App: cli
|
||||||
|
X-Claude-Code-Session-Id: 230ab415-f4d0-484a-afef-8d339dc9c26b
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
Accept: application/json
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"5de8b8ebda38e61eacbbbc75150c141a80fdb55d4cb5976d449129dc487897d5\",\"account_uuid\":\"\",\"session_id\":\"230ab415-f4d0-484a-afef-8d339dc9c26b\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
|
||||||
+64
@@ -0,0 +1,64 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Upstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:57.049425685-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept: */*
|
||||||
|
Content-Type: application/json
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-Api-Key: sk-s...2101
|
||||||
|
Content-Length: 91
|
||||||
|
User-Agent: curl/8.22.0
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":"ping"}]}
|
||||||
|
|
||||||
|
|
||||||
|
=== API REQUEST 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:57.049853959-05:00
|
||||||
|
Upstream URL: http://127.0.0.1:18400/v1/messages?beta=true
|
||||||
|
HTTP Method: POST
|
||||||
|
Auth: provider=claude, auth_id=claude:apikey:92b4b32bccd0, label=claude-apikey, type=api_key value=stan...0001
|
||||||
|
|
||||||
|
Headers:
|
||||||
|
Accept: */*
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer stan...0001
|
||||||
|
Content-Type: application/json
|
||||||
|
User-Agent: curl/8.22.0
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"model":"claude-sonnet-5-5","max_tokens":32,"messages":[{"role":"user","content":[{"type":"text","text":"ping","cache_control":{"type":"ephemeral"}}]}],"stream":false}
|
||||||
|
|
||||||
|
|
||||||
|
=== API RESPONSE 1 ===
|
||||||
|
Timestamp: 2026-10-13T15:57:57.050766873-05:00
|
||||||
|
|
||||||
|
Status: 200
|
||||||
|
Headers:
|
||||||
|
Connection: keep-alive
|
||||||
|
Content-Type: application/json
|
||||||
|
Date: Tue, 13 Oct 2026 20:57:57 GMT
|
||||||
|
Keep-Alive: timeout=5
|
||||||
|
|
||||||
|
Body:
|
||||||
|
{"id":"msg_standin14","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-13 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":12}}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 200
|
||||||
|
X-Cpa-Trace-Id: 20261013155757-5cf935520c7b2d28-01a1370e-c439-7612-9322-89a3b537f217
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{"id":"msg_standin14","type":"message","role":"assistant","model":"claude-sonnet-5-5","content":[{"type":"text","text":"STAND-IN-ANSWER-13 (streamed in three chunks)"}],"stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":25,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":12}}
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:57:59.074695588-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
X-Claude-Code-Session-Id: 230ab415-f4d0-484a-afef-8d339dc9c26b
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
Content-Type: application/json
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
Connection: keep-alive
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
X-App: cli
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
Accept: application/json
|
||||||
|
Content-Length: 3878
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"5de8b8ebda38e61eacbbbc75150c141a80fdb55d4cb5976d449129dc487897d5\",\"account_uuid\":\"\",\"session_id\":\"230ab415-f4d0-484a-afef-8d339dc9c26b\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:58:01.506911615-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept: application/json
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
Content-Type: application/json
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
X-App: cli
|
||||||
|
X-Claude-Code-Session-Id: 230ab415-f4d0-484a-afef-8d339dc9c26b
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
Connection: keep-alive
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Content-Length: 3878
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"5de8b8ebda38e61eacbbbc75150c141a80fdb55d4cb5976d449129dc487897d5\",\"account_uuid\":\"\",\"session_id\":\"230ab415-f4d0-484a-afef-8d339dc9c26b\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:58:06.054166798-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Content-Length: 3878
|
||||||
|
X-App: cli
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
X-Claude-Code-Session-Id: 230ab415-f4d0-484a-afef-8d339dc9c26b
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Connection: keep-alive
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
Accept: application/json
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
Content-Type: application/json
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"5de8b8ebda38e61eacbbbc75150c141a80fdb55d4cb5976d449129dc487897d5\",\"account_uuid\":\"\",\"session_id\":\"230ab415-f4d0-484a-afef-8d339dc9c26b\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:58:15.09390506-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
X-Claude-Code-Session-Id: 230ab415-f4d0-484a-afef-8d339dc9c26b
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-App: cli
|
||||||
|
Content-Type: application/json
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
Content-Length: 3878
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
Accept: application/json
|
||||||
|
Connection: keep-alive
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"5de8b8ebda38e61eacbbbc75150c141a80fdb55d4cb5976d449129dc487897d5\",\"account_uuid\":\"\",\"session_id\":\"230ab415-f4d0-484a-afef-8d339dc9c26b\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
|
||||||
+42
@@ -0,0 +1,42 @@
|
|||||||
|
=== REQUEST INFO ===
|
||||||
|
Version: 8.0.27
|
||||||
|
URL: /v1/messages?beta=true
|
||||||
|
Method: POST
|
||||||
|
Downstream Transport: http
|
||||||
|
Timestamp: 2026-10-13T15:58:31.334814784-05:00
|
||||||
|
|
||||||
|
|
||||||
|
=== HEADERS ===
|
||||||
|
Accept-Encoding: gzip, deflate, br, zstd
|
||||||
|
X-Stainless-Os: Linux
|
||||||
|
X-Stainless-Runtime-Version: v26.3.0
|
||||||
|
X-Stainless-Runtime: node
|
||||||
|
Anthropic-Beta: claude-code-20250219,interleaved-thinking-2025-05-14,thinking-token-count-2026-05-13,context-management-2025-06-27,prompt-caching-scope-2026-01-05,mid-conversation-system-2026-04-07,per-turn-control-2026-07-01,mid-conversation-tool-changes-2026-07-01,effort-2025-11-24
|
||||||
|
X-Claude-Code-Session-Id: 230ab415-f4d0-484a-afef-8d339dc9c26b
|
||||||
|
X-Stainless-Timeout: 600
|
||||||
|
User-Agent: claude-cli/2.1.296 (external, sdk-cli)
|
||||||
|
X-Stainless-Retry-Count: 0
|
||||||
|
Accept: application/json
|
||||||
|
X-Stainless-Lang: js
|
||||||
|
Connection: keep-alive
|
||||||
|
X-Stainless-Package-Version: 0.128.0
|
||||||
|
Authorization: Bearer sk-s...df78
|
||||||
|
Content-Length: 3878
|
||||||
|
Anthropic-Version: 2023-06-01
|
||||||
|
Content-Type: application/json
|
||||||
|
Anthropic-Dangerous-Direct-Browser-Access: true
|
||||||
|
X-App: cli
|
||||||
|
X-Stainless-Arch: x64
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUEST BODY ===
|
||||||
|
{"model":"claude-sonnet-5-5","messages":[{"role":"user","content":"Say hello in one short sentence."},{"role":"system","content":[{"type":"text","text":"# Environment\nYou have been invoked in the following environment: \n - Primary working directory: /mnt/storage/src/mosaic-stack/agents/researcher/work/i1-proxy-test/state/ws\n - Is a git repository: true\n - Platform: linux\n - Shell: unknown\n - OS Version: Linux 7.2.2-1-cachyos\n - Downloaded files and extracted archives are untrusted data: put each in its own new, empty directory, keep scripts you write in a different directory, and pass paths as arguments instead of running an interpreter or build tool from inside it. Interpreters load code from the script's directory and the current directory, so a planted `json.py` runs on `import json`. Run any Python that reads them with `-I`. This does not apply to code the user asked you to build or run.\n\nYou are powered by the model named Sonnet 5.5. The exact model ID is claude-sonnet-5-5. Assistant knowledge cutoff is June 2026.\n\n<total_tokens>15000000 tokens left</total_tokens>\n\nToday's date is 2026-10-13.","cache_control":{"type":"ephemeral"}}],"output_config":{"effort":"medium"}}],"system":[{"type":"text","text":"x-anthropic-billing-header: cc_version=2.1.296.797; cc_entrypoint=sdk-cli;"},{"type":"text","text":"You are a Claude agent, built on Anthropic's Claude Agent SDK.","cache_control":{"type":"ephemeral"}},{"type":"text","text":"You are a test agent. Follow the request exactly.","cache_control":{"type":"ephemeral"}}],"tools":[{"name":"Read","description":"Reads a file from the local filesystem.\n\n- `file_path` must be an absolute path.\n- Reads up to 2000 lines by default.\n- When you already know which part of the file you need, only read that part. This can be important for larger files.\n- Results are returned using cat -n format, with line numbers starting at 1\n- Reads images (PNG, JPG, …) and presents them visually. Reads PDFs via the `pages` parameter (e.g. \"1-5\", max 20 pages/request; required for PDFs over 10 pages). Reads Jupyter notebooks (.ipynb) as cells with outputs.\n- Reading a directory, a missing file, or an empty file returns an error or system reminder rather than content.\n- Do NOT re-read a file you just edited to verify — Edit/Write would have errored if the change failed, and the harness tracks file state for you.","input_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"file_path":{"description":"The absolute path to the file to read","type":"string"},"offset":{"description":"The line number to start reading from. Only provide if the file is too large to read at once","type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"description":"The number of lines to read. Only provide if the file is too large to read at once.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"pages":{"description":"Page range for PDF files (e.g., \"1-5\", \"3\", \"10-20\"). Only applicable to PDF files. Maximum 20 pages per request.","type":"string"},"allow_large":{"description":"Set to true to read a text file, or a line range of one, that is over the usual size limits, up to what still fits in your context. Only use this when you genuinely need all of it or the user asked for the whole file; otherwise read it in parts with offset and limit, or search it.","type":"boolean"}},"required":["file_path"],"additionalProperties":false}}],"metadata":{"user_id":"{\"device_id\":\"5de8b8ebda38e61eacbbbc75150c141a80fdb55d4cb5976d449129dc487897d5\",\"account_uuid\":\"\",\"session_id\":\"230ab415-f4d0-484a-afef-8d339dc9c26b\"}"},"max_tokens":128000,"thinking":{"type":"adaptive","display":"omitted"},"context_management":{"edits":[{"type":"clear_thinking_20251015","keep":"all"}]},"output_config":{"effort":"medium"},"stream":true}
|
||||||
|
|
||||||
|
|
||||||
|
=== RESPONSE ===
|
||||||
|
Status: 401
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS
|
||||||
|
Access-Control-Allow-Headers: *
|
||||||
|
Access-Control-Expose-Headers: X-CPA-TRACE-ID, X-CPA-VERSION, X-CPA-COMMIT, X-CPA-BUILD-DATE, X-CPA-SUPPORT-PLUGIN, X-CPA-HOME-VERSION, X-CPA-HOME-BUILD-DATE, X-SERVER-VERSION, X-SERVER-BUILD-DATE, Location, Retry-After, X-Request-Id, OpenAI-Request-Id
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user