anyray-connect 0.11.9 → 0.11.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -49,7 +49,7 @@ How the key is sent depends on the auth mode:
49
49
  | Tool | How |
50
50
  | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51
51
  | **Claude Code** | Automatic — writes the `env` block in `~/.claude/settings.json` (`ANTHROPIC_BASE_URL`, placeholder `ANTHROPIC_AUTH_TOKEN`, and `ANTHROPIC_CUSTOM_HEADERS` carrying `x-anyray-metadata`). With `--subscription`, no auth token is written: Claude Code keeps its seat (Pro/Max/Team/Enterprise) sign-in and the gateway passes the OAuth token through (`x-anyray-auth-mode: passthrough`), so spend stays on the subscription. |
52
- | **Codex CLI** | Automatic — writes `~/.codex/anyray.config.toml` as a layered profile, leaving the base `config.toml` untouched so existing MCP servers keep loading; opt in per run with `codex --profile anyray`. With `--subscription`, the provider sets `requires_openai_auth = true` and no static key: Codex attaches its ChatGPT sign-in itself, and the gateway passes the OAuth token through to the ChatGPT Codex backend (`x-anyray-custom-host`), so spend stays on the seat. |
52
+ | **Codex CLI** | Automatic, always-on — writes the `anyray` provider as the default route (`model_provider = "anyray"`) into a managed block in `~/.codex/config.toml`, so plain `codex` routes through the gateway (no `--profile` needed). The block sits before your first `[table]` to keep TOML valid; your own keys/tables are preserved and the original is backed up to `config.toml.anyray-bak`. With `--subscription`, the provider sets `requires_openai_auth = true` and no static key: Codex attaches its ChatGPT sign-in itself, and the gateway passes the OAuth token through to the ChatGPT Codex backend (`x-anyray-custom-host`), so spend stays on the seat. |
53
53
  | **Shell env** | Automatic — a managed, idempotent block in your shell profile with `OPENAI_BASE_URL` / `ANTHROPIC_BASE_URL` + placeholder keys (covers SDK jobs and scripts). |
54
54
  | **Cursor / Windsurf** | Detect + print exact UI steps (their config is app state we don't script). |
55
55
 
@@ -1,17 +1,23 @@
1
1
  /**
2
- * Codex CLI adapter — fully automatic.
2
+ * Codex CLI adapter — fully automatic, always-on.
3
3
  *
4
4
  * Codex (OpenAI's CLI) reaches a backend through a `[model_providers.<id>]`
5
- * entry. We register an `anyray` provider pointed at the gateway and select it
6
- * with a named profile, so a dev opts in with `codex --profile anyray` while
7
- * their default Codex config stays untouched.
5
+ * entry. We register an `anyray` provider pointed at the gateway and make it the
6
+ * DEFAULT (`model_provider = "anyray"` at the top level of `~/.codex/config.toml`),
7
+ * so plain `codex` routes through the gateway — symmetric with the Claude Code
8
+ * and Cursor adapters, which are likewise always-on. (Codex 0.139+ killed the
9
+ * legacy default-`profile` config and made named profiles strictly opt-in via
10
+ * `--profile`, so a profile file can't deliver always-on — the default route has
11
+ * to live in the base config.)
8
12
  *
9
- * Profile format (Codex 0.139+): a named profile lives in its OWN file,
10
- * `~/.codex/<name>.config.toml`, with flat top-level keys NOT an inline
11
- * `[profiles.<name>]` table in `config.toml` (0.139 rejects the legacy table).
12
- * We own the whole `anyray.config.toml` file; `config.toml` is never touched
13
- * except to strip a legacy block left by an older connect (migration). Omitted
14
- * keys inherit the dev's base `config.toml`.
13
+ * We own exactly the marked block (`# >>> anyray connect >>>` `<<<`) and place
14
+ * it before the first `[table]` so its bare selector keys stay in top-level
15
+ * scope (TOML requires bare keys before tables). The dev's own keys/tables are
16
+ * preserved; a pre-existing top-level `model_provider` (and, when we pin one,
17
+ * `model`) is dropped so TOML sees no duplicate. We back up `config.toml` to
18
+ * `config.toml.anyray-bak` before the first change. Older connects wrote an
19
+ * opt-in `anyray.config.toml` profile and/or a legacy `[profiles.anyray]` block;
20
+ * apply removes/subsumes both.
15
21
  *
16
22
  * The only supported wire protocol is the OpenAI *Responses* API
17
23
  * (`wire_api = "responses"`), so we target the gateway's `/v1/responses`. In
@@ -23,27 +29,23 @@
23
29
  * Subscription mode (`authMode: 'subscription'`, ChatGPT Plus/Pro/Team seats):
24
30
  * the provider sets `requires_openai_auth = true` and NO static Authorization
25
31
  * header, so Codex attaches its own ChatGPT sign-in per request
26
- * (`Authorization: Bearer <access token>` + `ChatGPT-Account-ID`) Codex uses
27
- * a configured `base_url` verbatim even with ChatGPT auth. The gateway runs in
28
- * pass-through (`x-anyray-auth-mode: passthrough`) and re-targets the upstream
29
- * at the ChatGPT Codex backend (`x-anyray-custom-host`), forwarding the
30
- * account-id and the Codex client headers (`x-anyray-forward-headers`) so the
31
- * backend still sees a genuine Codex request, and spend stays on the seat. No
32
- * model line is written (the seat backend only accepts real Codex models), so
33
- * the profile inherits the dev's working default model from `config.toml`.
32
+ * (`Authorization: Bearer <access token>` + `ChatGPT-Account-ID`). The gateway
33
+ * runs pass-through (`x-anyray-auth-mode: passthrough`) and re-targets the
34
+ * upstream at the ChatGPT Codex backend (`x-anyray-custom-host`), forwarding the
35
+ * account-id and Codex client headers (`x-anyray-forward-headers`) so the
36
+ * backend still sees a genuine Codex request, and spend stays on the seat.
34
37
  *
35
- * Set `ANYRAY_CODEX_MODEL` to pin a specific model id, and (placeholder mode
36
- * only) `ANYRAY_CODEX_PROVIDER` to pin `x-anyray-provider`.
38
+ * Set `ANYRAY_CODEX_MODEL` to pin a specific model id (placeholder or
39
+ * subscription); unset, the dev's existing default model is inherited and just
40
+ * flows through the gateway. In placeholder mode `ANYRAY_CODEX_PROVIDER` pins
41
+ * `x-anyray-provider`.
37
42
  */
38
43
  import { homedir } from 'node:os';
39
44
  import { join } from 'node:path';
40
- import { writeFile, rm } from 'node:fs/promises';
45
+ import { readFile, writeFile, rm, copyFile } from 'node:fs/promises';
41
46
  import { fileExists } from '../util/jsonFile.js';
42
- import { removeProfileBlock } from '../util/profile.js';
47
+ import { upsertManagedBlock, removeManagedBlock, } from '../util/codexConfig.js';
43
48
  import { effectiveSubscription, metadataHeaderValue } from '../types.js';
44
- /** Model Codex sends when ANYRAY_CODEX_MODEL is unset; the gateway's default
45
- * routing decides the real model/provider, so this is just a required token. */
46
- const DEFAULT_MODEL = 'anyray-default';
47
49
  /** Default intent stamped on Codex traffic so it's filterable (intent:codex)
48
50
  * and labelled in the console; override with ANYRAY_CODEX_INTENT(_LABEL) or the
49
51
  * global --intent. */
@@ -59,15 +61,15 @@ const CHATGPT_CODEX_BACKEND = 'https://chatgpt.com/backend-api/codex';
59
61
  const SUBSCRIPTION_FORWARD_HEADERS = 'chatgpt-account-id,originator,session_id,user-agent,x-codex-turn-metadata,x-codex-window-id,x-client-request-id';
60
62
  /** `$CODEX_HOME` overrides the default `~/.codex` (Codex honors it too). */
61
63
  const codexHome = () => process.env.CODEX_HOME?.trim() || join(homedir(), '.codex');
62
- /** Base config (untouched except for legacy-block cleanup) and our own profile
63
- * file. The profile NAME is the file stem: `anyray.config.toml` → `anyray`. */
64
- const baseConfigPath = () => join(codexHome(), 'config.toml');
65
- const profilePath = () => join(codexHome(), 'anyray.config.toml');
64
+ const configPath = () => join(codexHome(), 'config.toml');
65
+ const backupPath = () => `${configPath()}.anyray-bak`;
66
+ /** Opt-in profile file written by older (pre-always-on) connects — removed on
67
+ * apply/revert so it can't shadow or duplicate the default route. */
68
+ const legacyProfilePath = () => join(codexHome(), 'anyray.config.toml');
66
69
  /**
67
70
  * The `x-anyray-metadata` value for Codex: the resolved attribution (user/team/
68
71
  * session/intent from CLI flags or env) plus a Codex-specific `intent` default
69
- * so every Codex request is tagged even when the operator didn't pass one. The
70
- * header is static, so `session` is a stable grouping label, not per-conversation.
72
+ * so every Codex request is tagged even when the operator didn't pass one.
71
73
  */
72
74
  const codexMetadata = (target) => metadataHeaderValue({
73
75
  ...target.metadata,
@@ -80,33 +82,26 @@ const codexMetadata = (target) => metadataHeaderValue({
80
82
  });
81
83
  /** Escape a string for a TOML basic (double-quoted) string. */
82
84
  const tomlString = (value) => `"${value.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
83
- /** The model the profile pins, or undefined to inherit the base config's model.
84
- * Subscription seats must use a real Codex model, so we never pin `anyray-default`
85
- * therewe inherit the dev's working default instead. */
86
- const resolveModel = (subscription) => {
87
- const explicit = process.env.ANYRAY_CODEX_MODEL?.trim();
88
- if (explicit)
89
- return explicit;
90
- return subscription ? undefined : DEFAULT_MODEL;
91
- };
92
- /** Full contents of the standalone profile file (flat top-level keys). */
93
- const profileFile = (target) => {
85
+ /** The model to pin, or undefined to inherit the dev's existing default (which
86
+ * then just flows through the gateway). We never invent a default model now
87
+ * that the route is global overriding the dev's working model would surprise
88
+ * them, and the ChatGPT seat backend only accepts real Codex models anyway. */
89
+ const resolveModel = () => process.env.ANYRAY_CODEX_MODEL?.trim() || undefined;
90
+ /** The managed block: top-level selector keys followed by the provider table. */
91
+ const blockLines = (target) => {
94
92
  const meta = codexMetadata(target);
95
93
  const subscription = effectiveSubscription(target, 'openai');
96
- // Subscription traffic is ChatGPT-backend-only — the provider pin is not
97
- // the operator's call there, so ANYRAY_CODEX_PROVIDER applies only to
98
- // placeholder mode.
94
+ // Subscription traffic is ChatGPT-backend-only — the provider pin is not the
95
+ // operator's call there, so ANYRAY_CODEX_PROVIDER applies only to placeholder.
99
96
  const provider = subscription
100
97
  ? 'openai'
101
98
  : process.env.ANYRAY_CODEX_PROVIDER?.trim();
102
- const model = resolveModel(subscription);
103
- // Placeholder mode: the dev's personal gateway key (from `--enroll`), else
104
- // the shared placeholder, is the bearer. Subscription mode: the seat OAuth
105
- // token owns Authorization, so the personal key rides x-anyray-api-key.
99
+ const model = resolveModel();
100
+ // Placeholder: the dev's personal gateway key (from `--enroll`), else the
101
+ // shared placeholder, is the bearer. Subscription: the seat OAuth token owns
102
+ // Authorization, so the personal key rides x-anyray-api-key.
106
103
  const headers = subscription
107
104
  ? [
108
- // No static Authorization: requires_openai_auth makes Codex attach its
109
- // ChatGPT sign-in (Bearer access token + ChatGPT-Account-ID) itself.
110
105
  `"x-anyray-auth-mode" = "passthrough"`,
111
106
  `"x-anyray-custom-host" = ${tomlString(CHATGPT_CODEX_BACKEND)}`,
112
107
  `"x-anyray-forward-headers" = ${tomlString(SUBSCRIPTION_FORWARD_HEADERS)}`,
@@ -121,12 +116,11 @@ const profileFile = (target) => {
121
116
  headers.push(`"x-anyray-metadata" = ${tomlString(meta)}`);
122
117
  if (provider)
123
118
  headers.push(`"x-anyray-provider" = ${tomlString(provider)}`);
124
- const lines = [
125
- '# Anyray gateway profile for Codex 0.139+ (a standalone profile file).',
126
- '# Managed by anyray-connect the whole file is owned by the tool.',
127
- '# Use with: codex --profile anyray',
128
- ...(model ? [`model = ${tomlString(model)}`] : []),
119
+ return [
120
+ '# Anyray always-on routing plain `codex` routes through the gateway.',
121
+ '# Managed by anyray-connect (this block is owned by the tool).',
129
122
  'model_provider = "anyray"',
123
+ ...(model ? [`model = ${tomlString(model)}`] : []),
130
124
  '',
131
125
  '[model_providers.anyray]',
132
126
  'name = "Anyray Gateway"',
@@ -135,8 +129,10 @@ const profileFile = (target) => {
135
129
  ...(subscription ? ['requires_openai_auth = true'] : []),
136
130
  `http_headers = { ${headers.join(', ')} }`,
137
131
  ];
138
- return lines.join('\n') + '\n';
139
132
  };
133
+ /** Top-level bare keys our block sets — used to drop pre-existing copies so TOML
134
+ * never sees a duplicate key. We only own `model` when we actually pin one. */
135
+ const ownedKeys = () => resolveModel() ? ['model_provider', 'model'] : ['model_provider'];
140
136
  export const codex = {
141
137
  id: 'codex',
142
138
  title: 'Codex CLI',
@@ -146,73 +142,95 @@ export const codex = {
146
142
  const installed = await fileExists(home);
147
143
  return {
148
144
  installed,
149
- detail: installed ? profilePath() : `no ${home} directory`,
145
+ detail: installed ? configPath() : `no ${home} directory`,
150
146
  };
151
147
  },
152
148
  async apply(target, opts) {
153
- const path = profilePath();
149
+ const path = configPath();
154
150
  const meta = codexMetadata(target);
155
151
  const subscription = effectiveSubscription(target, 'openai');
156
- const model = resolveModel(subscription);
152
+ const model = resolveModel();
157
153
  const messages = [
158
- `${path} ← standalone Codex profile (model_provider = anyray)`,
154
+ `${path} ← always-on default route (model_provider = anyray)`,
159
155
  `Base URL: ${target.openaiBaseUrl}/responses (wire_api = responses)`,
156
+ 'Plain `codex` now routes through the gateway — no --profile needed.',
160
157
  subscription
161
158
  ? 'Subscription mode: Codex keeps your ChatGPT sign-in; its OAuth token passes through the gateway to the ChatGPT backend (never stored). Requires being signed in with ChatGPT, not an API key.'
162
- : `Model: ${model}${process.env.ANYRAY_CODEX_MODEL
163
- ? ''
164
- : ' (default set ANYRAY_CODEX_MODEL to target a specific model)'}`,
165
- ...(subscription && !process.env.ANYRAY_CODEX_MODEL
166
- ? [
167
- 'Model: inherits your config.toml default (the seat backend only accepts real Codex models).',
168
- ]
169
- : []),
159
+ : `Auth: ${target.clientKey
160
+ ? 'personal gateway key (written to the config, not shown here)'
161
+ : 'placeholder token (gateway swaps in the server-held key)'}`,
162
+ model
163
+ ? `Model: ${model} (pinned via ANYRAY_CODEX_MODEL)`
164
+ : 'Model: inherits your existing default (it just flows through the gateway).',
170
165
  `Attribution: ${meta ?? '(none — pass --user)'}`,
171
- 'Run Codex through the gateway with: codex --profile anyray',
172
- '(Plain `codex` keeps your existing default config.)',
173
166
  ];
174
167
  if (opts.dryRun)
175
168
  return { status: 'configured', messages };
176
- // Write our standalone profile file (we own it whole), then strip any
177
- // legacy inline block a pre-0.139 connect left in config.toml so the two
178
- // can't collide (Codex 0.139 errors on a leftover [profiles.anyray] table).
179
- await writeFile(path, profileFile(target));
180
- const migrated = await removeProfileBlock(baseConfigPath());
181
- if (migrated) {
182
- messages.push(`Migrated: removed the legacy [profiles.anyray] block from ${baseConfigPath()}.`);
169
+ const existed = await fileExists(path);
170
+ const current = existed ? await readFile(path, 'utf-8') : '';
171
+ // Back up the pristine config once, before our first change.
172
+ if (existed && !(await fileExists(backupPath()))) {
173
+ await copyFile(path, backupPath());
174
+ messages.push(`Backed up your original config to ${backupPath()}.`);
175
+ }
176
+ const next = upsertManagedBlock(current, blockLines(target), ownedKeys());
177
+ await writeFile(path, next);
178
+ const changedFiles = [path];
179
+ // Drop the redundant opt-in profile file an older connect may have written.
180
+ if (await fileExists(legacyProfilePath())) {
181
+ await rm(legacyProfilePath(), { force: true });
182
+ changedFiles.push(legacyProfilePath());
183
+ messages.push(`Removed the old opt-in profile ${legacyProfilePath()} (the default route replaces it).`);
184
+ }
185
+ return { status: 'configured', messages, changedFiles };
186
+ },
187
+ async pointsAt(origin) {
188
+ const path = configPath();
189
+ if (!(await fileExists(path)))
190
+ return false;
191
+ try {
192
+ const toml = await readFile(path, 'utf-8');
193
+ const base = `base_url = ${tomlString(`${origin}/v1`)}`;
194
+ // Only our managed provider block counts as pointing at the gateway.
195
+ return toml.includes('[model_providers.anyray]') && toml.includes(base);
196
+ }
197
+ catch {
198
+ return false;
183
199
  }
184
- return { status: 'configured', messages, changedFiles: [path] };
185
200
  },
186
201
  async revert(opts) {
187
- const path = profilePath();
188
- const hasProfile = await fileExists(path);
189
- // Also clean up any legacy inline block left in config.toml by old versions.
190
- const base = baseConfigPath();
191
- const hasLegacy = (await fileExists(base))
192
- ? await (async () => {
193
- if (opts.dryRun) {
194
- const { readFile } = await import('node:fs/promises');
195
- return (await readFile(base, 'utf-8')).includes('# >>> anyray connect >>>');
196
- }
197
- return removeProfileBlock(base);
198
- })()
199
- : false;
200
- if (!hasProfile && !hasLegacy) {
202
+ const path = configPath();
203
+ const hasConfig = await fileExists(path);
204
+ const hasLegacyProfile = await fileExists(legacyProfilePath());
205
+ if (!hasConfig && !hasLegacyProfile) {
201
206
  return { status: 'not-found', messages: ['nothing to revert'] };
202
207
  }
203
- const changed = [];
204
208
  const messages = [];
205
- if (hasProfile) {
206
- if (!opts.dryRun)
207
- await rm(path, { force: true });
208
- changed.push(path);
209
- messages.push(opts.dryRun ? `would remove ${path}` : `removed ${path}`);
209
+ const changed = [];
210
+ if (hasConfig) {
211
+ const stripped = removeManagedBlock(await readFile(path, 'utf-8'));
212
+ if (stripped !== null) {
213
+ if (!opts.dryRun)
214
+ await writeFile(path, stripped);
215
+ changed.push(path);
216
+ messages.push(opts.dryRun
217
+ ? `would remove the Anyray default route from ${path}`
218
+ : `removed the Anyray default route from ${path}`);
219
+ }
210
220
  }
211
- if (hasLegacy) {
212
- changed.push(base);
221
+ if (hasLegacyProfile) {
222
+ if (!opts.dryRun)
223
+ await rm(legacyProfilePath(), { force: true });
224
+ changed.push(legacyProfilePath());
213
225
  messages.push(opts.dryRun
214
- ? `would remove the legacy Anyray block from ${base}`
215
- : `removed the legacy Anyray block from ${base}`);
226
+ ? `would remove the old opt-in profile ${legacyProfilePath()}`
227
+ : `removed the old opt-in profile ${legacyProfilePath()}`);
228
+ }
229
+ if (changed.length === 0) {
230
+ return { status: 'not-found', messages: ['nothing to revert'] };
231
+ }
232
+ if (await fileExists(backupPath())) {
233
+ messages.push(`Pre-Anyray backup at ${backupPath()} (restore for a full revert).`);
216
234
  }
217
235
  return { status: 'reverted', messages, changedFiles: changed };
218
236
  },
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/tools/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQxD,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE;iFACiF;AACjF,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAEvC;;uBAEuB;AACvB,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,oBAAoB,GAAG,WAAW,CAAC;AAEzC;iEACiE;AACjE,MAAM,qBAAqB,GAAG,uCAAuC,CAAC;AAEtE;;;+EAG+E;AAC/E,MAAM,4BAA4B,GAChC,iHAAiH,CAAC;AAEpH,4EAA4E;AAC5E,MAAM,SAAS,GAAG,GAAW,EAAE,CAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAE9D;gFACgF;AAChF,MAAM,cAAc,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AACtE,MAAM,WAAW,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,oBAAoB,CAAC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,aAAa,GAAG,CAAC,MAAqB,EAAsB,EAAE,CAClE,mBAAmB,CAAC;IAClB,GAAG,MAAM,CAAC,QAAQ;IAClB,MAAM,EACJ,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE;QACvC,MAAM,CAAC,QAAQ,CAAC,MAAM;QACtB,cAAc;IAChB,WAAW,EACT,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE;QAC7C,MAAM,CAAC,QAAQ,CAAC,WAAW;QAC3B,oBAAoB;CACvB,CAAC,CAAC;AAEL,+DAA+D;AAC/D,MAAM,UAAU,GAAG,CAAC,KAAa,EAAU,EAAE,CAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAE3D;;4DAE4D;AAC5D,MAAM,YAAY,GAAG,CAAC,YAAqB,EAAsB,EAAE;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;AAClD,CAAC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,WAAW,GAAG,CAAC,MAAqB,EAAU,EAAE;IACpD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7D,yEAAyE;IACzE,sEAAsE;IACtE,oBAAoB;IACpB,MAAM,QAAQ,GAAG,YAAY;QAC3B,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAEzC,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,MAAM,OAAO,GAAa,YAAY;QACpC,CAAC,CAAC;YACE,uEAAuE;YACvE,qEAAqE;YACrE,sCAAsC;YACtC,4BAA4B,UAAU,CAAC,qBAAqB,CAAC,EAAE;YAC/D,gCAAgC,UAAU,CAAC,4BAA4B,CAAC,EAAE;YAC1E,GAAG,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,CAAC,wBAAwB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1D,CAAC,CAAC,EAAE,CAAC;SACR;QACH,CAAC,CAAC;YACE,qBAAqB,UAAU,CAC7B,UAAU,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,CACtD,EAAE;SACJ,CAAC;IACN,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpE,IAAI,QAAQ;QAAE,OAAO,CAAC,IAAI,CAAC,yBAAyB,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG;QACZ,wEAAwE;QACxE,oEAAoE;QACpE,qCAAqC;QACrC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,2BAA2B;QAC3B,EAAE;QACF,0BAA0B;QAC1B,yBAAyB;QACzB,cAAc,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;QAChD,wBAAwB;QACxB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;KAC3C,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAgB;IAChC,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,WAAW;IAClB,SAAS,EAAE,IAAI;IAEf,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO;YACL,SAAS;YACT,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY;SAC3D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAqB,EAAE,IAAkB;QACnD,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QAEzC,MAAM,QAAQ,GAAG;YACf,GAAG,IAAI,uDAAuD;YAC9D,aAAa,MAAM,CAAC,aAAa,oCAAoC;YACrE,YAAY;gBACV,CAAC,CAAC,+LAA+L;gBACjM,CAAC,CAAC,UAAU,KAAK,GACb,OAAO,CAAC,GAAG,CAAC,kBAAkB;oBAC5B,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,iEACN,EAAE;YACN,GAAG,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB;gBACjD,CAAC,CAAC;oBACE,6FAA6F;iBAC9F;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,gBAAgB,IAAI,IAAI,sBAAsB,EAAE;YAChD,6DAA6D;YAC7D,qDAAqD;SACtD,CAAC;QACF,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QAE3D,sEAAsE;QACtE,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CACX,6DAA6D,cAAc,EAAE,GAAG,CACjF,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAkB;QAC7B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1C,6EAA6E;QAC7E,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;gBAChB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;oBACtD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAC7C,0BAA0B,CAC3B,CAAC;gBACJ,CAAC;gBACD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,KAAK,CAAC;QAEV,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CACzD,CAAC;QACJ,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,MAAM;gBACT,CAAC,CAAC,6CAA6C,IAAI,EAAE;gBACrD,CAAC,CAAC,wCAAwC,IAAI,EAAE,CACnD,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACjE,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/tools/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Manage the always-on Anyray "default route" inside Codex's base `config.toml`.
3
+ *
4
+ * Always-on means plain `codex` (no `--profile`) routes through the gateway, so
5
+ * we must set the top-level `model_provider = "anyray"` selector. TOML requires
6
+ * every bare key to appear BEFORE the first `[table]`, so we insert our managed
7
+ * block (selector keys + the `[model_providers.anyray]` table) immediately
8
+ * before the first table header in the file — or at EOF when there are none.
9
+ *
10
+ * We own exactly the region between the begin/end markers: re-applying replaces
11
+ * it, reverting removes it. These are the same markers `profile.ts` uses, so an
12
+ * upsert also subsumes (migrates) the legacy opt-in `[profiles.anyray]` block an
13
+ * older connect may have left here. To avoid a duplicate-key parse error we drop
14
+ * any pre-existing top-level key we own (e.g. `model_provider`) that lives
15
+ * OUTSIDE our block — taking over the default route is the whole point.
16
+ *
17
+ * These are pure string transforms (no I/O) so they're trivially testable; the
18
+ * adapter does the file read/write/backup around them.
19
+ */
20
+ const BEGIN = '# >>> anyray connect >>>';
21
+ const END = '# <<< anyray connect <<<';
22
+ const escape = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
23
+ /** Remove every managed anyray block (and the blank line preceding each). */
24
+ const stripBlock = (content) => {
25
+ const pattern = new RegExp(`\\n*${escape(BEGIN)}[\\s\\S]*?${escape(END)}\\n?`, 'g');
26
+ return content.replace(pattern, '');
27
+ };
28
+ /**
29
+ * The code-only prefix of a line: string contents and `#` comments removed, so
30
+ * the remaining `[`/`]` come only from array syntax. Good enough for tracking
31
+ * multi-line arrays; triple-quoted strings (vanishingly rare in a Codex config)
32
+ * are handled separately by the line scanner.
33
+ */
34
+ const codePart = (s) => {
35
+ let out = '';
36
+ let inStr = false;
37
+ let quote = '';
38
+ for (let i = 0; i < s.length; i++) {
39
+ const c = s[i];
40
+ if (inStr) {
41
+ if (c === '\\' && quote === '"') {
42
+ i++; // skip the escaped char in a basic (double-quoted) string
43
+ continue;
44
+ }
45
+ if (c === quote)
46
+ inStr = false;
47
+ continue;
48
+ }
49
+ if (c === '"' || c === "'") {
50
+ inStr = true;
51
+ quote = c;
52
+ continue;
53
+ }
54
+ if (c === '#')
55
+ break; // rest of the line is a comment
56
+ out += c;
57
+ }
58
+ return out;
59
+ };
60
+ const occurrences = (s, sub) => s.split(sub).length - 1;
61
+ const bracketDelta = (code) => occurrences(code, '[') - occurrences(code, ']');
62
+ const unquote = (s) => s.replace(/^['"]|['"]$/g, '');
63
+ /**
64
+ * Classify each line at TOML statement position. A line is only a table header
65
+ * or a key assignment when we're not inside a multi-line array or string —
66
+ * otherwise it's continuation text. Returns one entry per input line.
67
+ */
68
+ const scan = (lines) => {
69
+ const meta = [];
70
+ let arrayDepth = 0;
71
+ let inTriple = false;
72
+ let tripleDelim = '';
73
+ for (const line of lines) {
74
+ if (inTriple) {
75
+ if (occurrences(line, tripleDelim) % 2 === 1)
76
+ inTriple = false;
77
+ meta.push({ kind: 'other' });
78
+ continue;
79
+ }
80
+ if (arrayDepth > 0) {
81
+ arrayDepth = Math.max(0, arrayDepth + bracketDelta(codePart(line)));
82
+ meta.push({ kind: 'other' });
83
+ continue;
84
+ }
85
+ const trimmed = line.trim();
86
+ if (trimmed === '' || trimmed.startsWith('#')) {
87
+ meta.push({ kind: 'other' });
88
+ continue;
89
+ }
90
+ if (trimmed.startsWith('[')) {
91
+ meta.push({ kind: 'table' });
92
+ continue;
93
+ }
94
+ // `key = value` (possibly opening a multi-line array or string).
95
+ const eq = line.indexOf('=');
96
+ const key = eq >= 0 ? unquote(line.slice(0, eq).trim()) : '';
97
+ meta.push({ kind: 'key', key });
98
+ const code = codePart(eq >= 0 ? line.slice(eq + 1) : line);
99
+ for (const d of ['"""', "'''"]) {
100
+ if (occurrences(code, d) % 2 === 1) {
101
+ inTriple = true;
102
+ tripleDelim = d;
103
+ }
104
+ }
105
+ if (!inTriple)
106
+ arrayDepth = Math.max(0, arrayDepth + bracketDelta(code));
107
+ }
108
+ return meta;
109
+ };
110
+ /** Index of the first top-level `[table]` / `[[array]]` header, or -1 if none. */
111
+ const firstTableIndex = (meta) => meta.findIndex((m) => m.kind === 'table');
112
+ /** True when the file already carries our managed block. */
113
+ export const hasManagedBlock = (content) => content.includes(BEGIN);
114
+ /**
115
+ * Insert (or replace) the managed block carrying `blockLines`, placing it just
116
+ * before the first table header so its top-level selector keys stay in
117
+ * top-level scope. `ownedKeys` lists top-level bare keys we set inside the block
118
+ * (e.g. `model_provider`); any copy of one living outside the block, before the
119
+ * first table, is removed so TOML doesn't see a duplicate key.
120
+ */
121
+ export const upsertManagedBlock = (content, blockLines, ownedKeys) => {
122
+ const stripped = stripBlock(content);
123
+ const lines = stripped.split('\n');
124
+ const meta = scan(lines);
125
+ const tableIdx = firstTableIndex(meta);
126
+ const owned = new Set(ownedKeys);
127
+ const cut = tableIdx === -1 ? lines.length : tableIdx;
128
+ const kept = [];
129
+ for (let i = 0; i < lines.length; i++) {
130
+ const m = meta[i];
131
+ if (i < cut && m.kind === 'key' && owned.has(m.key))
132
+ continue; // drop dup
133
+ kept.push(lines[i]);
134
+ }
135
+ // Recompute the boundary after removals, then split top-level keys from tables.
136
+ const keptMeta = scan(kept);
137
+ const boundary = firstTableIndex(keptMeta);
138
+ const head = (boundary === -1 ? kept : kept.slice(0, boundary)).join('\n');
139
+ const tail = boundary === -1 ? '' : kept.slice(boundary).join('\n');
140
+ const block = [BEGIN, ...blockLines, END].join('\n');
141
+ const parts = [head.replace(/\s*$/, ''), block, tail.replace(/^\s*/, '')]
142
+ .filter((p) => p.length > 0)
143
+ .join('\n\n');
144
+ return parts.replace(/\s*$/, '') + '\n';
145
+ };
146
+ /** Remove every managed block; returns null when there was nothing to remove. */
147
+ export const removeManagedBlock = (content) => {
148
+ if (!hasManagedBlock(content))
149
+ return null;
150
+ const next = stripBlock(content).replace(/\s*$/, '');
151
+ return next.length > 0 ? next + '\n' : '';
152
+ };
153
+ //# sourceMappingURL=codexConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexConfig.js","sourceRoot":"","sources":["../../src/util/codexConfig.ts"],"names":[],"mappings":"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"}
@@ -13,14 +13,14 @@
13
13
  * output, and search dumps) and elide the middle behind a CONTENT-FREE marker.
14
14
  * No network, no model call, no stash — a `connect` hook can't reach the
15
15
  * gateway's `/v1/retrieve`, so this trades reversibility for cache-safety and
16
- * zero data exposure. Char-based (a ~4 chars/token heuristic) to stay
16
+ * zero data exposure. Char-based (a ~3.3 chars/token heuristic) to stay
17
17
  * dependency-free and fast on the hot path.
18
18
  *
19
19
  * PRIVACY: nothing here logs or transmits the content; the marker carries only
20
20
  * counts. The trimmed text is handed straight back to Claude Code.
21
21
  */
22
- /** ~4 chars per token — the standard rough heuristic; good enough for a metric. */
23
- const CHARS_PER_TOKEN = 4;
22
+ /** ~3.3 chars per token — calibrated against BPE on English + code. */
23
+ const CHARS_PER_TOKEN = 3.3;
24
24
  /** Generous upper bound on one elision marker's length (actual ~86 chars). Used
25
25
  * to reserve budget so the trimmed total — kept content PLUS markers — stays
26
26
  * under `maxChars`, not just the kept content. */
@@ -125,7 +125,7 @@ export const trimText = (input, opts = {}) => {
125
125
  return passthrough(input);
126
126
  // Net reduction: what the output actually shrank by (original minus the kept
127
127
  // remainder, which already includes the re-sent markers). This keeps
128
- // estTokensSaved === round(charsRemoved / 4) and matches the gateway's
128
+ // estTokensSaved === round(charsRemoved / 3.3) and matches the gateway's
129
129
  // server-side definition, so "saved" means the same thing everywhere.
130
130
  const charsRemoved = len - text.length;
131
131
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"trimOutput.js","sourceRoot":"","sources":["../../src/util/trimOutput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trimOutput.js","sourceRoot":"","sources":["../../src/util/trimOutput.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "anyray-connect",
3
- "version": "0.11.9",
3
+ "version": "0.11.10",
4
4
  "description": "Anyray connect — points local coding tools (Claude Code, Cursor, Windsurf, SDKs) at the Anyray gateway by writing their base URL + a placeholder key. The gateway stays the brain; this is just the on-ramp.",
5
5
  "type": "module",
6
6
  "bin": {