fest-gateway 0.5.0 → 0.5.1
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 +6 -5
- package/dist/cli/copilot.js +150 -28
- package/dist/cli/copilot.js.map +1 -1
- package/dist/server/bin/fest.js +12 -10
- package/dist/server/bin/fest.js.map +1 -1
- package/dist/server/config.js +9 -2
- package/dist/server/config.js.map +1 -1
- package/dist/server/http/client.js +7 -0
- package/dist/server/http/client.js.map +1 -1
- package/dist/server/http/server.js +30 -0
- package/dist/server/http/server.js.map +1 -1
- package/dist/server/pipeline/copilot.js +236 -0
- package/dist/server/pipeline/copilot.js.map +1 -0
- package/dist/server/pipeline/openai.js +2 -2
- package/dist/server/pipeline/openai.js.map +1 -1
- package/dist/server/pipeline/wire.js +56 -0
- package/dist/server/pipeline/wire.js.map +1 -1
- package/dist/server/secret/fingerprint.js +7 -1
- package/dist/server/secret/fingerprint.js.map +1 -1
- package/dist/server/usage/chat.js +95 -0
- package/dist/server/usage/chat.js.map +1 -0
- package/dist/web/dist/assets/{index-BClCav9v.js → index-DJb4NfM5.js} +2 -2
- package/dist/web/dist/assets/{index-BClCav9v.js.map → index-DJb4NfM5.js.map} +1 -1
- package/dist/web/dist/index.html +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -52,13 +52,13 @@ fest whoami # what's logged in, and whether the token is still live
|
|
|
52
52
|
fest logout # forget the local token (does not revoke it server-side)
|
|
53
53
|
fest claude gw # force org credentials + the gateway's extra models
|
|
54
54
|
fest codex # OpenAI Codex CLI, on its own ChatGPT login or API key
|
|
55
|
-
fest copilot # GitHub Copilot CLI
|
|
55
|
+
fest copilot # GitHub Copilot CLI, on its own Copilot login
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
Codex and Copilot CLI are metered into the same dashboard, labelled by client.
|
|
59
|
-
Codex on a ChatGPT login
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
Codex on a ChatGPT login and Copilot CLI on its own login are relayed the way a
|
|
60
|
+
Claude subscription is: your plan pays, and your credential is forwarded, never
|
|
61
|
+
stored. Copilot can also run in its bring-your-own-key mode instead. See [docs/CODEX.md](docs/CODEX.md) and
|
|
62
62
|
[docs/COPILOT.md](docs/COPILOT.md).
|
|
63
63
|
|
|
64
64
|
Without installing anything, `npx fest-gateway login …` does the same job.
|
|
@@ -133,6 +133,7 @@ docker compose run --rm fest token list | token revoke <id>
|
|
|
133
133
|
| `FEST_UPSTREAM_BASE_URL`, `FEST_LOG_LEVEL` | |
|
|
134
134
|
| `FEST_BEDROCK_BASE_URL` | opens the `/bedrock` mount, relaying Claude-in-Bedrock traffic on the *caller's* AWS credential. Must include Bedrock's `/anthropic` segment. Unset means the mount refuses. |
|
|
135
135
|
| `FEST_OPENAI_BASE_URL`, `FEST_CHATGPT_BASE_URL` | where the `/openai` (Codex on an API key) and `/chatgpt` (Codex on a ChatGPT login) mounts relay. Default `https://api.openai.com` and `https://chatgpt.com`; `off` refuses. See [docs/CODEX.md](docs/CODEX.md). |
|
|
136
|
+
| `FEST_COPILOT_BASE_URL`, `FEST_COPILOT_MCP_BASE_URL` | where the `/copilot/<plan>` mount (Copilot CLI on its own login) and the root `/mcp` relay (its built-in GitHub MCP server) go. Default `https://api.{plan}.githubcopilot.com` and `https://api.githubcopilot.com`; `off` refuses. See [docs/COPILOT.md](docs/COPILOT.md). |
|
|
136
137
|
| `FEST_PRICING_REFRESH` | set `0` to never fetch prices. Rates then come only from the vendored snapshot, which is always sufficient. |
|
|
137
138
|
| `FEST_PRICING_URL` | internal mirror of litellm's price file. |
|
|
138
139
|
| `FEST_PUBLIC_URL` | base URL Fest is reachable at. Builds the OAuth redirect URI, and its path sets the mount point. Defaults to `http://<host>:<port>`. |
|
|
@@ -394,7 +395,7 @@ inside it — read the relevant one before working there.
|
|
|
394
395
|
| [ROUTING.md](docs/ROUTING.md) | the routing table format and the substitute path |
|
|
395
396
|
| [PRICING.md](docs/PRICING.md) | where rates come from, and spend vs. value |
|
|
396
397
|
| [CODEX.md](docs/CODEX.md) | Codex CLI through the `/openai` and `/chatgpt` mounts |
|
|
397
|
-
| [COPILOT.md](docs/COPILOT.md) | Copilot CLI
|
|
398
|
+
| [COPILOT.md](docs/COPILOT.md) | Copilot CLI on its own login through `/copilot`, what happens to the GitHub token, and BYOK |
|
|
398
399
|
| [POSTURES.md](docs/POSTURES.md) | subscription vs. key posture |
|
|
399
400
|
| [CANARY.md](docs/CANARY.md) | the version-upgrade gate |
|
|
400
401
|
| [PHASE0.md](docs/PHASE0.md) · [PHASE0-RESULTS.md](docs/PHASE0-RESULTS.md) | the gating experiment, and what it found |
|
package/dist/cli/copilot.js
CHANGED
|
@@ -1,32 +1,91 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `fest copilot`: run the real `copilot` binary (GitHub Copilot CLI)
|
|
3
|
-
*
|
|
2
|
+
* `fest copilot`: run the real `copilot` binary (GitHub Copilot CLI) through
|
|
3
|
+
* Fest.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* traffic is authenticated with the developer's GitHub token against
|
|
7
|
-
* GitHub-run endpoints, and there is no supported way to point it anywhere
|
|
8
|
-
* else. BYOK (`COPILOT_PROVIDER_*`) is the supported way to put Copilot CLI on
|
|
9
|
-
* a model API of your choosing, and it bills that API — so under `fest copilot`
|
|
10
|
-
* a key pays, never the Copilot seat. See `docs/COPILOT.md`.
|
|
5
|
+
* Four modes:
|
|
11
6
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
7
|
+
* - **subscription** (default): Copilot on its own login, the developer's
|
|
8
|
+
* Copilot plan paying. `COPILOT_API_URL` — the override for the host
|
|
9
|
+
* Copilot's `copilot_internal/user` names — points at Fest's `/copilot/<plan>`
|
|
10
|
+
* mount, which relays to that same GitHub host and meters the turn. The
|
|
11
|
+
* GitHub token Copilot sends is forwarded, never stored; see
|
|
12
|
+
* `server/pipeline/copilot.ts` and `docs/COPILOT.md`.
|
|
13
|
+
* - **anthropic**: bring-your-own-key (`COPILOT_PROVIDER_*`), Copilot speaking
|
|
14
|
+
* the Anthropic Messages API to Fest's `/v1/messages` on the developer's own
|
|
15
|
+
* `ANTHROPIC_API_KEY` — the same relay Claude Code's key posture uses.
|
|
16
|
+
* - **gw**: BYOK with no key of the developer's; the Fest token goes in the
|
|
17
|
+
* bearer position, so the server's routing table supplies the credential,
|
|
18
|
+
* exactly as `fest claude gw` does.
|
|
19
|
+
* - **openai**: BYOK on the Responses API to Fest's `/openai/v1` mount on the
|
|
21
20
|
* developer's own `OPENAI_API_KEY`.
|
|
22
21
|
*
|
|
23
|
-
*
|
|
24
|
-
* (gw
|
|
25
|
-
* tell this traffic from Claude Code's — both send `claude-*`
|
|
22
|
+
* In the BYOK modes the identity token rides in `COPILOT_PROVIDER_HEADERS` as
|
|
23
|
+
* `X-Fest-Token` (gw excepted), alongside `X-Fest-Client: copilot` so the
|
|
24
|
+
* dashboard can tell this traffic from Claude Code's — both send `claude-*`
|
|
25
|
+
* model ids. In subscription mode Copilot sends no custom headers, so the
|
|
26
|
+
* token rides in the URL (`/t/<token>`), as it does for `fest claude`, and the
|
|
27
|
+
* server recognises Copilot by its own `copilot-integration-id` header.
|
|
26
28
|
*/
|
|
27
29
|
import { spawn } from "node:child_process";
|
|
30
|
+
import { readFile } from "node:fs/promises";
|
|
31
|
+
import { homedir } from "node:os";
|
|
32
|
+
import { join } from "node:path";
|
|
28
33
|
import { BASE_MODELS } from "../shared/base-models.js";
|
|
29
34
|
import { readCliConfig } from "./config.js";
|
|
35
|
+
/**
|
|
36
|
+
* The plan in a Copilot API host, or null for a host the mount cannot relay to
|
|
37
|
+
* (a GHE.com data-residency tenant, say).
|
|
38
|
+
*/
|
|
39
|
+
export function planFromApiEndpoint(url) {
|
|
40
|
+
const m = /^https:\/\/api\.(individual|business|enterprise)\.githubcopilot\.com\/?$/.exec(url.trim());
|
|
41
|
+
return m ? m[1] : null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The plan of the most recently signed-in account in Copilot's own user cache.
|
|
45
|
+
*
|
|
46
|
+
* Copilot caches its `copilot_internal/user` response under
|
|
47
|
+
* `copilotUserCache["v1:<hash>"]`, one entry per account, in a JSON file with
|
|
48
|
+
* `//` comment lines at the top. Only `endpoints.api` and
|
|
49
|
+
* `retrievedAt` are read; nothing in it is a credential, but nothing else in
|
|
50
|
+
* it is any of Fest's business either. Returns the raw host alongside, so a
|
|
51
|
+
* host the mount cannot serve can be named in the error.
|
|
52
|
+
*/
|
|
53
|
+
export function planFromUserCache(text) {
|
|
54
|
+
let root;
|
|
55
|
+
try {
|
|
56
|
+
root = JSON.parse(text.split("\n").filter((l) => !l.trimStart().startsWith("//")).join("\n"));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const entries = root?.copilotUserCache;
|
|
62
|
+
if (typeof entries !== "object" || entries === null)
|
|
63
|
+
return null;
|
|
64
|
+
let best = null;
|
|
65
|
+
for (const entry of Object.values(entries)) {
|
|
66
|
+
const e = entry;
|
|
67
|
+
const api = e?.response?.endpoints?.api;
|
|
68
|
+
if (typeof api !== "string")
|
|
69
|
+
continue;
|
|
70
|
+
const at = typeof e?.retrievedAt === "string" ? e.retrievedAt : "";
|
|
71
|
+
if (best === null || at > best.at)
|
|
72
|
+
best = { at, api };
|
|
73
|
+
}
|
|
74
|
+
return best === null ? null : { plan: planFromApiEndpoint(best.api), api: best.api };
|
|
75
|
+
}
|
|
76
|
+
/** Where Copilot keeps that cache, most specific first. */
|
|
77
|
+
export function userCacheCandidates(env, home, platform) {
|
|
78
|
+
const file = "copilot-user-cache.json";
|
|
79
|
+
const out = [];
|
|
80
|
+
if (env["COPILOT_CACHE_HOME"])
|
|
81
|
+
out.push(join(env["COPILOT_CACHE_HOME"], file));
|
|
82
|
+
if (platform === "darwin")
|
|
83
|
+
out.push(join(home, "Library", "Caches", "copilot", file));
|
|
84
|
+
if (platform === "win32" && env["LOCALAPPDATA"])
|
|
85
|
+
out.push(join(env["LOCALAPPDATA"], "copilot", file));
|
|
86
|
+
out.push(join(env["XDG_CACHE_HOME"] || join(home, ".cache"), "copilot", file));
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
30
89
|
/**
|
|
31
90
|
* Pure, so it is testable without spawning `copilot`. Throws with a sentence a
|
|
32
91
|
* developer can act on when the mode needs a key that is not there.
|
|
@@ -35,10 +94,22 @@ export function buildCopilotEnv(base, cfg, mode) {
|
|
|
35
94
|
const env = { ...base };
|
|
36
95
|
// Start from a clean provider: an inherited COPILOT_PROVIDER_BEARER_TOKEN
|
|
37
96
|
// silently takes precedence over the API key set below, and an inherited
|
|
38
|
-
// base URL or type would point the session somewhere else entirely.
|
|
97
|
+
// base URL or type would point the session somewhere else entirely. In
|
|
98
|
+
// subscription mode any provider at all would take the session off the
|
|
99
|
+
// Copilot plan, and an inherited API URL off Fest.
|
|
39
100
|
for (const name of Object.keys(env)) {
|
|
40
|
-
if (name.startsWith("COPILOT_PROVIDER_") ||
|
|
101
|
+
if (name.startsWith("COPILOT_PROVIDER_") ||
|
|
102
|
+
name === "COPILOT_PROVIDERS_CONFIG" ||
|
|
103
|
+
name === "COPILOT_API_URL" ||
|
|
104
|
+
name === "COPILOT_OFFLINE") {
|
|
41
105
|
delete env[name];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (mode === "subscription") {
|
|
109
|
+
if (cfg.plan === undefined)
|
|
110
|
+
throw new Error("subscription mode needs the Copilot plan.");
|
|
111
|
+
env["COPILOT_API_URL"] = `${cfg.serverUrl}/t/${cfg.identityToken}/copilot/${cfg.plan}`;
|
|
112
|
+
return env;
|
|
42
113
|
}
|
|
43
114
|
const headers = [`X-Fest-Client: copilot`];
|
|
44
115
|
if (mode === "openai") {
|
|
@@ -82,16 +153,67 @@ export function buildCopilotEnv(base, cfg, mode) {
|
|
|
82
153
|
env["COPILOT_PROVIDER_HEADERS"] = headers.join("\n");
|
|
83
154
|
return env;
|
|
84
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Copilot's arguments under Fest.
|
|
158
|
+
*
|
|
159
|
+
* Copilot sends its built-in GitHub MCP server's calls to the API URL's
|
|
160
|
+
* ORIGIN (`<origin>/mcp/readonly`), and Fest relays them from its root. A
|
|
161
|
+
* gateway mounted under a path does not own its origin's root, so those calls
|
|
162
|
+
* would land on whatever does; switching the server off is the honest option.
|
|
163
|
+
*/
|
|
164
|
+
export function copilotArgs(serverUrl, mode, argv) {
|
|
165
|
+
if (mode !== "subscription")
|
|
166
|
+
return [...argv];
|
|
167
|
+
const path = new URL(serverUrl).pathname.replace(/\/+$/, "");
|
|
168
|
+
return path === "" ? [...argv] : ["--disable-mcp-server", "github-mcp-server", ...argv];
|
|
169
|
+
}
|
|
85
170
|
const note = (s) => void process.stderr.write(`fest copilot: ${s}\n`);
|
|
86
|
-
|
|
171
|
+
async function detectPlan(env) {
|
|
172
|
+
const forced = (env["FEST_COPILOT_PLAN"] ?? "").trim();
|
|
173
|
+
if (forced !== "") {
|
|
174
|
+
const plan = planFromApiEndpoint(`https://api.${forced}.githubcopilot.com`);
|
|
175
|
+
if (plan === null)
|
|
176
|
+
throw new Error("FEST_COPILOT_PLAN must be individual, business or enterprise.");
|
|
177
|
+
return plan;
|
|
178
|
+
}
|
|
179
|
+
for (const path of userCacheCandidates(env, homedir(), process.platform)) {
|
|
180
|
+
let text;
|
|
181
|
+
try {
|
|
182
|
+
text = await readFile(path, "utf8");
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const found = planFromUserCache(text);
|
|
188
|
+
if (found === null)
|
|
189
|
+
continue;
|
|
190
|
+
if (found.plan === null) {
|
|
191
|
+
throw new Error(`your Copilot account is served from ${found.api}, which Fest cannot relay to.`);
|
|
192
|
+
}
|
|
193
|
+
return found.plan;
|
|
194
|
+
}
|
|
195
|
+
throw new Error("could not tell which Copilot plan you are on. Run `copilot` once and sign in, " +
|
|
196
|
+
"or set FEST_COPILOT_PLAN=individual|business|enterprise.");
|
|
197
|
+
}
|
|
198
|
+
export async function runCopilot(argv, mode = "subscription") {
|
|
87
199
|
const cfg = await readCliConfig();
|
|
88
200
|
if (cfg === null)
|
|
89
201
|
throw new Error("not logged in. Run `fest login` first.");
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
202
|
+
const plan = mode === "subscription" ? await detectPlan(process.env) : undefined;
|
|
203
|
+
const env = buildCopilotEnv(process.env, { ...cfg, plan }, mode);
|
|
204
|
+
const args = copilotArgs(cfg.serverUrl, mode, argv);
|
|
205
|
+
if (mode === "subscription") {
|
|
206
|
+
note(`your Copilot ${plan} plan pays; your GitHub login is relayed to GitHub through Fest, never stored.`);
|
|
207
|
+
if (args.length !== argv.length) {
|
|
208
|
+
note("the built-in GitHub MCP server is off: Fest is mounted under a path, and Copilot calls that server at the origin.");
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
note(mode === "gw"
|
|
213
|
+
? "BYOK via gateway routes — org credentials pay, not your Copilot seat."
|
|
214
|
+
: `BYOK on your ${mode === "openai" ? "OPENAI_API_KEY" : "ANTHROPIC_API_KEY"} — that key pays, not your Copilot seat.`);
|
|
215
|
+
}
|
|
216
|
+
const child = spawn("copilot", args, { stdio: "inherit", env });
|
|
95
217
|
const code = await new Promise((resolve, reject) => {
|
|
96
218
|
child.on("error", (err) => {
|
|
97
219
|
reject(err.code === "ENOENT" ? new Error("`copilot` was not found on PATH. Install GitHub Copilot CLI first.") : err);
|
package/dist/cli/copilot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../cli/copilot.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../cli/copilot.ts"],"names":[],"mappings":"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"}
|
package/dist/server/bin/fest.js
CHANGED
|
@@ -33,11 +33,12 @@
|
|
|
33
33
|
* run `codex` through Fest on its own login:
|
|
34
34
|
* a ChatGPT login's plan pays, or an API key's
|
|
35
35
|
* owner. `key` forces API-key mode.
|
|
36
|
-
* fest copilot [gw|openai] [-- copilot args...]
|
|
37
|
-
* run Copilot CLI
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
36
|
+
* fest copilot [anthropic|gw|openai] [-- copilot args...]
|
|
37
|
+
* run Copilot CLI through Fest on its own
|
|
38
|
+
* login: your Copilot plan pays. The modes
|
|
39
|
+
* are BYOK instead: `anthropic` on your
|
|
40
|
+
* ANTHROPIC_API_KEY, `gw` on gateway routes,
|
|
41
|
+
* `openai` on your OPENAI_API_KEY.
|
|
41
42
|
* fest logout forget the local login
|
|
42
43
|
*/
|
|
43
44
|
import { mkdir, rm } from "node:fs/promises";
|
|
@@ -511,9 +512,10 @@ function printHelp() {
|
|
|
511
512
|
" fest whoami\n" +
|
|
512
513
|
" fest claude [gw] [-- claude args...] (gw: force org credentials + gateway models)\n" +
|
|
513
514
|
" fest codex [key] [-- codex args...] (key: force API-key mode over a ChatGPT login)\n" +
|
|
514
|
-
" fest copilot [gw|openai] [-- copilot args...]\n" +
|
|
515
|
-
" (Copilot CLI
|
|
516
|
-
"
|
|
515
|
+
" fest copilot [anthropic|gw|openai] [-- copilot args...]\n" +
|
|
516
|
+
" (Copilot CLI on your Copilot plan; BYOK instead with\n" +
|
|
517
|
+
" anthropic: your ANTHROPIC_API_KEY, gw: gateway routes,\n" +
|
|
518
|
+
" openai: your OPENAI_API_KEY)\n" +
|
|
517
519
|
" fest logout");
|
|
518
520
|
}
|
|
519
521
|
async function cmdLogin(argv) {
|
|
@@ -582,8 +584,8 @@ async function main() {
|
|
|
582
584
|
return;
|
|
583
585
|
}
|
|
584
586
|
case "copilot": {
|
|
585
|
-
const { mode, rest } = modeArgs(argv.slice(1), ["gw", "openai"]);
|
|
586
|
-
await runCopilot(rest, mode ?? "
|
|
587
|
+
const { mode, rest } = modeArgs(argv.slice(1), ["anthropic", "gw", "openai"]);
|
|
588
|
+
await runCopilot(rest, mode ?? "subscription");
|
|
587
589
|
return;
|
|
588
590
|
}
|
|
589
591
|
case "logout":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fest.js","sourceRoot":"","sources":["../../../server/bin/fest.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fest.js","sourceRoot":"","sources":["../../../server/bin/fest.ts"],"names":[],"mappings":"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"}
|
package/dist/server/config.js
CHANGED
|
@@ -59,7 +59,8 @@ function stringFromEnv(name) {
|
|
|
59
59
|
* A Codex upstream: the default, a URL, or `off`.
|
|
60
60
|
*
|
|
61
61
|
* Same https rule as Bedrock, for a stronger reason: on `/chatgpt` the bearer
|
|
62
|
-
* crossing this hop is the developer's whole ChatGPT account
|
|
62
|
+
* crossing this hop is the developer's whole ChatGPT account, and on `/copilot`
|
|
63
|
+
* it is their GitHub token.
|
|
63
64
|
*/
|
|
64
65
|
function codexUpstreamFromEnv(name, fallback) {
|
|
65
66
|
const raw = stringFromEnv(name) ?? fallback;
|
|
@@ -67,7 +68,9 @@ function codexUpstreamFromEnv(name, fallback) {
|
|
|
67
68
|
return null;
|
|
68
69
|
let parsed;
|
|
69
70
|
try {
|
|
70
|
-
|
|
71
|
+
// A template's placeholder is filled in for validation only: `{` is not
|
|
72
|
+
// something to bet on a URL parser accepting in a hostname.
|
|
73
|
+
parsed = new URL(raw.replaceAll("{plan}", "individual"));
|
|
71
74
|
}
|
|
72
75
|
catch {
|
|
73
76
|
throw new Error(`${name} is not a valid URL: ${JSON.stringify(raw)}`);
|
|
@@ -120,6 +123,8 @@ export function loadConfig() {
|
|
|
120
123
|
}
|
|
121
124
|
const openai = codexUpstreamFromEnv("FEST_OPENAI_BASE_URL", "https://api.openai.com");
|
|
122
125
|
const chatgpt = codexUpstreamFromEnv("FEST_CHATGPT_BASE_URL", "https://chatgpt.com");
|
|
126
|
+
const copilot = codexUpstreamFromEnv("FEST_COPILOT_BASE_URL", "https://api.{plan}.githubcopilot.com");
|
|
127
|
+
const copilotMcp = codexUpstreamFromEnv("FEST_COPILOT_MCP_BASE_URL", "https://api.githubcopilot.com");
|
|
123
128
|
const port = intFromEnv("FEST_PORT", 8787);
|
|
124
129
|
const host = (process.env.FEST_HOST ?? "127.0.0.1").trim();
|
|
125
130
|
const publicUrl = (stringFromEnv("FEST_PUBLIC_URL") ?? `http://${host}:${port}`).replace(/\/+$/, "");
|
|
@@ -135,6 +140,8 @@ export function loadConfig() {
|
|
|
135
140
|
bedrockBaseUrl: bedrock?.replace(/\/+$/, "") ?? null,
|
|
136
141
|
openaiBaseUrl: openai,
|
|
137
142
|
chatgptBaseUrl: chatgpt,
|
|
143
|
+
copilotBaseUrl: copilot,
|
|
144
|
+
copilotMcpBaseUrl: copilotMcp,
|
|
138
145
|
secureCookies: boolFromEnv("FEST_SECURE_COOKIES", false),
|
|
139
146
|
publicUrl,
|
|
140
147
|
basePath: basePathFrom(stringFromEnv("FEST_BASE_PATH"), publicUrl),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../server/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../server/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuHH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnE,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,YAAY,CAAC,QAAuB,EAAE,SAAiB;IAC9D,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,iBAAiB,CAAC,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,6DAA6D;QAC7D,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,QAAgB;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wCAAwC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,QAAiB;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC5D,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,2BAA2B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,IAAY,EAAE,QAAgB;IAC1D,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;IAC5C,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,wEAAwE;QACxE,4DAA4D;QAC5D,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wBAAwB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,0FAA0F,CAAC,CAAC;IACrH,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,CAAC,IAAI,EAA4B,CAAC;IACtF,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,2BAA2B,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5F,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACH,MAAM,OAAO,GAAG,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACvD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,0EAA0E;QAC1E,sEAAsE;QACtE,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjG,MAAM,IAAI,KAAK,CACb,qHAAqH,CACtH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,oBAAoB,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CAAC;IACtF,MAAM,OAAO,GAAG,oBAAoB,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,oBAAoB,CAAC,uBAAuB,EAAE,sCAAsC,CAAC,CAAC;IACtG,MAAM,UAAU,GAAG,oBAAoB,CAAC,2BAA2B,EAAE,+BAA+B,CAAC,CAAC;IAEtG,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CACtF,MAAM,EACN,EAAE,CACH,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,eAAe,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAC7C,YAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,oBAAoB,CAAC,CAAC,IAAI,EAAE;QACzE,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC,CAAC,IAAI,EAAE;QACxD,QAAQ,EAAE,KAAK;QACf,eAAe,EAAE,WAAW,CAAC,uBAAuB,EAAE,KAAK,CAAC;QAC5D,UAAU,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI;QAC1D,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI;QACpD,aAAa,EAAE,MAAM;QACrB,cAAc,EAAE,OAAO;QACvB,cAAc,EAAE,OAAO;QACvB,iBAAiB,EAAE,UAAU;QAC7B,aAAa,EAAE,WAAW,CAAC,qBAAqB,EAAE,KAAK,CAAC;QACxD,SAAS;QACT,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC;QAClE,YAAY,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,IAAI;QAC9E,cAAc,EAAE,aAAa,CAAC,uBAAuB,CAAC;QACtD,kBAAkB,EAAE,aAAa,CAAC,2BAA2B,CAAC;QAC9D,cAAc,EAAE,aAAa,CAAC,uBAAuB,CAAC;QACtD,kBAAkB,EAAE,aAAa,CAAC,2BAA2B,CAAC;QAC9D,mBAAmB,EAAE,WAAW,CAAC,4BAA4B,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,GAAe;IAC5C,OAAO;QACL,GAAG,GAAG;QACN,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;QACzE,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;KAC1E,CAAC;AACJ,CAAC"}
|
|
@@ -13,6 +13,10 @@
|
|
|
13
13
|
* user-agent is the SDK's (`Anthropic/JS 0.94.0`). What gives it away is
|
|
14
14
|
* GitHub's own pair, `x-initiator` and `x-interaction-type`, which it adds
|
|
15
15
|
* to every model call. It sends no session id at all.
|
|
16
|
+
* - Copilot CLI on its own login (the `/copilot` mount) talks to GitHub's
|
|
17
|
+
* Copilot API, and sends that API's headers: `copilot-integration-id`
|
|
18
|
+
* (`copilot-developer-cli`) on every call, and `x-client-session-id`, the
|
|
19
|
+
* same id `copilot --resume` takes.
|
|
16
20
|
*
|
|
17
21
|
* `fest codex` and `fest copilot` also send `X-Fest-Client`, which wins when
|
|
18
22
|
* present (`x-fest-*` is stripped before anything goes upstream). The sniffing
|
|
@@ -42,6 +46,8 @@ export function detectClient(headers) {
|
|
|
42
46
|
if (first(headers, "x-initiator") !== null && first(headers, "x-interaction-type") !== null) {
|
|
43
47
|
return "copilot";
|
|
44
48
|
}
|
|
49
|
+
if (first(headers, "copilot-integration-id") !== null)
|
|
50
|
+
return "copilot";
|
|
45
51
|
return null;
|
|
46
52
|
}
|
|
47
53
|
/** The client's own session id, in whichever header it puts one. */
|
|
@@ -49,6 +55,7 @@ export function sessionIdOf(headers) {
|
|
|
49
55
|
return (first(headers, "x-claude-code-session-id") ??
|
|
50
56
|
first(headers, "session-id") ??
|
|
51
57
|
first(headers, "session_id") ??
|
|
58
|
+
first(headers, "x-client-session-id") ??
|
|
52
59
|
null);
|
|
53
60
|
}
|
|
54
61
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../server/http/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../server/http/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,SAAS,KAAK,CAAC,OAAgB,EAAE,IAAY;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,aAAa,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAClG,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9E,IAAI,KAAK,CAAC,OAAO,EAAE,0BAA0B,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACxF,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,wBAAwB,CAAC,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,OAAgB;IAC1C,OAAO,CACL,KAAK,CAAC,OAAO,EAAE,0BAA0B,CAAC;QAC1C,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC;QAC5B,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC;QAC5B,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC;QACrC,IAAI,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -21,6 +21,7 @@ import { handleMessages } from "../pipeline/passthrough.js";
|
|
|
21
21
|
import { splitBedrockMount, refuseUnconfigured } from "../pipeline/bedrock.js";
|
|
22
22
|
import { CHATGPT_MOUNT, CHATGPT_PATHS, OPENAI_MOUNT, OPENAI_PATHS, handleCodexModels, refuseDisabled, splitMount, } from "../pipeline/openai.js";
|
|
23
23
|
import { OPENAI_RESPONSES_WIRE } from "../pipeline/wire.js";
|
|
24
|
+
import { handleCopilot, refuseUnknownPlan, relayCopilotMcp, splitCopilotMount } from "../pipeline/copilot.js";
|
|
24
25
|
import { openaiError } from "./errors.js";
|
|
25
26
|
import { detectInbound } from "../auth/posture.js";
|
|
26
27
|
import { createStaticHost } from "./static.js";
|
|
@@ -185,6 +186,35 @@ export function createServer(deps) {
|
|
|
185
186
|
handleModels(res, routesOf(), Array.isArray(inm) ? inm[0] : inm);
|
|
186
187
|
return;
|
|
187
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* Copilot CLI on its own Copilot login. A mount like the Codex ones
|
|
191
|
+
* below, for the same reason: the credential is the caller's, so
|
|
192
|
+
* routing gets no vote. See `pipeline/copilot.ts`.
|
|
193
|
+
*/
|
|
194
|
+
const copilot = splitCopilotMount(remainder);
|
|
195
|
+
if (copilot !== null) {
|
|
196
|
+
if (deps.config.copilotBaseUrl === null) {
|
|
197
|
+
refuseDisabled(res, "FEST_COPILOT_BASE_URL");
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (copilot.plan === null) {
|
|
201
|
+
refuseUnknownPlan(res);
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
await handleCopilot(req, res, {
|
|
205
|
+
ctx: { ...ctx, publicBaseUrl: deps.config.publicUrl },
|
|
206
|
+
template: deps.config.copilotBaseUrl,
|
|
207
|
+
plan: copilot.plan,
|
|
208
|
+
rest: copilot.rest,
|
|
209
|
+
});
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
// Copilot's built-in GitHub MCP server, which Copilot addresses at the
|
|
213
|
+
// origin and so arrives here without a token or a plan.
|
|
214
|
+
if ((path === "/mcp" || path.startsWith("/mcp/")) && deps.config.copilotMcpBaseUrl !== null) {
|
|
215
|
+
await relayCopilotMcp(req, res, { upstreamBaseUrl: deps.config.copilotMcpBaseUrl, path: remainder });
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
188
218
|
/**
|
|
189
219
|
* Codex, on the developer's own OpenAI key (`/openai`) or ChatGPT login
|
|
190
220
|
* (`/chatgpt`). Mounts, like Bedrock below, and for the same reason:
|