@usine/gateway 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/LICENSE +661 -21
  2. package/README.md +99 -11
  3. package/dist/admin/api.d.ts +6 -66
  4. package/dist/admin/api.d.ts.map +1 -1
  5. package/dist/admin/api.js +4 -4
  6. package/dist/admin/api.js.map +1 -1
  7. package/dist/admin/server.d.ts +1 -1
  8. package/dist/admin/server.d.ts.map +1 -1
  9. package/dist/admin/server.js +1 -1
  10. package/dist/admin/server.js.map +1 -1
  11. package/dist/attachment/attachment.d.ts +8 -1
  12. package/dist/attachment/attachment.d.ts.map +1 -1
  13. package/dist/attachment/attachment.js +14 -4
  14. package/dist/attachment/attachment.js.map +1 -1
  15. package/dist/attachment/store.d.ts +7 -0
  16. package/dist/attachment/store.d.ts.map +1 -1
  17. package/dist/attachment/store.js +46 -14
  18. package/dist/attachment/store.js.map +1 -1
  19. package/dist/caller/caller.d.ts +1 -1
  20. package/dist/caller/caller.d.ts.map +1 -1
  21. package/dist/caller/caller.js +8 -7
  22. package/dist/caller/caller.js.map +1 -1
  23. package/dist/chatgpt/auth-file.d.ts +47 -0
  24. package/dist/chatgpt/auth-file.d.ts.map +1 -0
  25. package/dist/chatgpt/auth-file.js +132 -0
  26. package/dist/chatgpt/auth-file.js.map +1 -0
  27. package/dist/chatgpt/logins.d.ts +50 -0
  28. package/dist/chatgpt/logins.d.ts.map +1 -0
  29. package/dist/chatgpt/logins.js +303 -0
  30. package/dist/chatgpt/logins.js.map +1 -0
  31. package/dist/gateway.d.ts +8 -4
  32. package/dist/gateway.d.ts.map +1 -1
  33. package/dist/gateway.js +8 -4
  34. package/dist/gateway.js.map +1 -1
  35. package/dist/github/github.d.ts +19 -8
  36. package/dist/github/github.d.ts.map +1 -1
  37. package/dist/github/github.js +45 -21
  38. package/dist/github/github.js.map +1 -1
  39. package/dist/github/rename.d.ts +30 -0
  40. package/dist/github/rename.d.ts.map +1 -0
  41. package/dist/github/rename.js +83 -0
  42. package/dist/github/rename.js.map +1 -0
  43. package/dist/llm/llm.d.ts +64 -15
  44. package/dist/llm/llm.d.ts.map +1 -1
  45. package/dist/llm/llm.js +89 -37
  46. package/dist/llm/llm.js.map +1 -1
  47. package/dist/node/egress-proxy.js +1 -1
  48. package/dist/node/egress-proxy.js.map +1 -1
  49. package/dist/node/environment.d.ts +15 -10
  50. package/dist/node/environment.d.ts.map +1 -1
  51. package/dist/node/environment.js +51 -24
  52. package/dist/node/environment.js.map +1 -1
  53. package/dist/node/node.d.ts +7 -8
  54. package/dist/node/node.d.ts.map +1 -1
  55. package/dist/node/node.js +22 -23
  56. package/dist/node/node.js.map +1 -1
  57. package/dist/node/reload.d.ts +2 -1
  58. package/dist/node/reload.d.ts.map +1 -1
  59. package/dist/node/reload.js +41 -13
  60. package/dist/node/reload.js.map +1 -1
  61. package/dist/proxy/forward.d.ts +2 -2
  62. package/dist/proxy/forward.d.ts.map +1 -1
  63. package/dist/proxy/forward.js +1 -1
  64. package/dist/proxy/forward.js.map +1 -1
  65. package/dist/proxy/proxy.d.ts +4 -3
  66. package/dist/proxy/proxy.d.ts.map +1 -1
  67. package/dist/proxy/proxy.js +132 -24
  68. package/dist/proxy/proxy.js.map +1 -1
  69. package/package.json +9 -9
@@ -4,11 +4,12 @@ import { AnthropicProvider, OpenAiProvider } from "../llm/llm.ts";
4
4
  import { AdminToken, CallerKey, GatewaySettings } from "../settings.ts";
5
5
  /** The allowlist path if `USINE_GATEWAY_EGRESS_ALLOWLIST` isn't set. */
6
6
  export declare const DEFAULT_EGRESS_ALLOWLIST_PATH = "/etc/usine-gateway/egress-allowlist";
7
- declare const ConflictingAnthropicCredentials_base: Schema.Class<ConflictingAnthropicCredentials, Schema.TaggedStruct<"ConflictingAnthropicCredentials", {
7
+ declare const ConflictingProviderCredentials_base: Schema.Class<ConflictingProviderCredentials, Schema.TaggedStruct<"ConflictingProviderCredentials", {
8
+ readonly provider: Schema.Literals<readonly ["anthropic", "openai"]>;
8
9
  readonly message: Schema.String;
9
10
  }>, import("effect/Cause").YieldableError>;
10
- /** The error when both an Anthropic API key and a subscription token are set. */
11
- export declare class ConflictingAnthropicCredentials extends ConflictingAnthropicCredentials_base {
11
+ /** The error when two credentials are set for one provider, such as an API key and a subscription token. */
12
+ export declare class ConflictingProviderCredentials extends ConflictingProviderCredentials_base {
12
13
  }
13
14
  declare const EnvironmentFileError_base: Schema.Class<EnvironmentFileError, Schema.TaggedStruct<"EnvironmentFileError", {
14
15
  readonly path: Schema.String;
@@ -32,11 +33,15 @@ export declare const readSettingsSource: (base: ConfigProvider.ConfigProvider) =
32
33
  files: string[] | readonly string[];
33
34
  provider: ConfigProvider.ConfigProvider;
34
35
  }, Config.ConfigError | EnvironmentFileError, FileSystem.FileSystem>;
35
- /** The LLM providers and credentials from the settings. */
36
+ /**
37
+ * The LLM providers and credentials from the settings. A ChatGPT login's auth file is read and
38
+ * parsed, and its directory checked for writing, so an unusable file fails here, before the
39
+ * Gateway listens or a reload applies it.
40
+ */
36
41
  export declare const llmProviders: Effect.Effect<{
37
42
  anthropic: Option.Option<AnthropicProvider>;
38
43
  openai: Option.Option<OpenAiProvider>;
39
- }, Config.ConfigError | ConflictingAnthropicCredentials, never>;
44
+ }, import("../chatgpt/auth-file.ts").ChatGptAuthFileError | Config.ConfigError | ConflictingProviderCredentials, FileSystem.FileSystem>;
40
45
  export declare const egressAllowlistPath: Config.Config<string>;
41
46
  /** Reads and parses the allowlist file at `path`. */
42
47
  export declare const readEgressAllowlist: (path: string) => Effect.Effect<import("../egress/egress.ts").EgressAllowlist, import("../egress/egress.ts").EgressAllowlistError | import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
@@ -81,8 +86,8 @@ export interface StartupSettings {
81
86
  readonly listeners: GatewayListeners;
82
87
  }
83
88
  /**
84
- * Reads the Gateway's settings from `source`. Fails on a missing secret, an invalid value, or
85
- * an unreadable allowlist, so the Gateway stops before it listens.
89
+ * Reads the Gateway's settings from `source`. Fails on a missing secret, an invalid value, an
90
+ * unreadable allowlist, or an unusable ChatGPT auth file, so the Gateway stops before it listens.
86
91
  */
87
92
  export declare const readStartupSettings: (source: SettingsSource) => Effect.Effect<{
88
93
  settings: {
@@ -97,12 +102,12 @@ export declare const readStartupSettings: (source: SettingsSource) => Effect.Eff
97
102
  callerKey: import("effect/Redacted").Redacted<string>;
98
103
  };
99
104
  listeners: GatewayListeners;
100
- }, Config.ConfigError | ConflictingAnthropicCredentials | import("../egress/egress.ts").EgressAllowlistError | import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
105
+ }, import("../chatgpt/auth-file.ts").ChatGptAuthFileError | Config.ConfigError | ConflictingProviderCredentials | import("../egress/egress.ts").EgressAllowlistError | import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
101
106
  /**
102
107
  * The Gateway's settings, read once at startup from the files in
103
108
  * `USINE_GATEWAY_ENVIRONMENT_FILES` over the process environment, plus the egress allowlist
104
- * file. Fails on a missing secret, an invalid value, or an unreadable file.
109
+ * file. Fails on a missing secret, an invalid value, or an unreadable or unusable file.
105
110
  */
106
- export declare const settingsFromEnvironment: Layer.Layer<GatewaySettings, Config.ConfigError | ConflictingAnthropicCredentials | import("../egress/egress.ts").EgressAllowlistError | EnvironmentFileError | import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
111
+ export declare const settingsFromEnvironment: Layer.Layer<GatewaySettings, import("../chatgpt/auth-file.ts").ChatGptAuthFileError | Config.ConfigError | ConflictingProviderCredentials | import("../egress/egress.ts").EgressAllowlistError | EnvironmentFileError | import("effect/PlatformError").PlatformError, FileSystem.FileSystem>;
107
112
  export {};
108
113
  //# sourceMappingURL=environment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/node/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG3F,OAAO,EAEL,iBAAiB,EAGjB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGxE,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;;;;AAOnF,iFAAiF;AACjF,qBAAa,+BAAgC,SAAQ,oCAGpD;CAAG;;;;;AAEJ,uFAAuF;AACvF,qBAAa,oBAAqB,SAAQ,yBAGzC;CAAG;AAEJ,iGAAiG;AACjG,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC;CAClD;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;oEAmB7B,CAAC;AAEH,2DAA2D;AAC3D,eAAO,MAAM,YAAY;;;+DA2BvB,CAAC;AAEH,eAAO,MAAM,mBAAmB,uBAE/B,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,0MAM9B,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,kIAAkI;AAClI,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAQD;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;EAInC,CAAC;AAEH,6IAA6I;AAC7I,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAKzD,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAmBD;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;mLAO9B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,sOAOnC,CAAC"}
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/node/environment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAK3F,OAAO,EAEL,iBAAiB,EAOjB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGxE,wEAAwE;AACxE,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;;;;;AAOnF,4GAA4G;AAC5G,qBAAa,8BAA+B,SAAQ,mCAGnD;CAAG;;;;;AAEJ,uFAAuF;AACvF,qBAAa,oBAAqB,SAAQ,yBAGzC;CAAG;AAEJ,iGAAiG;AACjG,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC;CAClD;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;;oEAmB7B,CAAC;AAiBH;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;uIAwDvB,CAAC;AAWH,eAAO,MAAM,mBAAmB,uBAE/B,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,0MAM9B,CAAC;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,kIAAkI;AAClI,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;CAC1B;AAQD;;;GAGG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;EAInC,CAAC;AAEH,6IAA6I;AAC7I,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAKzD,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAaD;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;2OAO9B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,8RAOnC,CAAC"}
@@ -2,15 +2,17 @@ import { GatewayDomain } from "@usine/core/worker";
2
2
  import { Config, ConfigProvider, Effect, FileSystem, Layer, Option, Schema } from "effect";
3
3
  import { parseEgressAllowlist } from "../egress/egress.js";
4
4
  import { GITHUB_ORIGINS } from "../github/github.js";
5
- import { AnthropicApiKey, AnthropicProvider, AnthropicSubscriptionToken, OpenAiProvider, } from "../llm/llm.js";
5
+ import { checkAuthFileWritable, readAuthFile } from "../chatgpt/auth-file.js";
6
+ import { CHATGPT_TOKEN_URL } from "../chatgpt/logins.js";
7
+ import { AnthropicApiKey, AnthropicProvider, AnthropicSubscriptionToken, ChatGptLogin, HostFilePath, LlmProviderName, OpenAiApiKey, OpenAiProvider, } from "../llm/llm.js";
6
8
  import { AdminToken, CallerKey, GatewaySettings } from "../settings.js";
7
9
  import { UpstreamBase } from "../upstream.js";
8
10
  /** The allowlist path if `USINE_GATEWAY_EGRESS_ALLOWLIST` isn't set. */
9
11
  export const DEFAULT_EGRESS_ALLOWLIST_PATH = "/etc/usine-gateway/egress-allowlist";
10
12
  const Secret = Schema.RedactedFromValue(Schema.NonEmptyString);
11
13
  const upstream = (name, fallback) => Config.schema(UpstreamBase, name).pipe(Config.withDefault(UpstreamBase.make(fallback)));
12
- /** The error when both an Anthropic API key and a subscription token are set. */
13
- export class ConflictingAnthropicCredentials extends Schema.TaggedError()("ConflictingAnthropicCredentials", { message: Schema.String }) {
14
+ /** The error when two credentials are set for one provider, such as an API key and a subscription token. */
15
+ export class ConflictingProviderCredentials extends Schema.TaggedError()("ConflictingProviderCredentials", { provider: LlmProviderName, message: Schema.String }) {
14
16
  }
15
17
  /** The error when a file listed in `USINE_GATEWAY_ENVIRONMENT_FILES` can't be read. */
16
18
  export class EnvironmentFileError extends Schema.TaggedError()("EnvironmentFileError", { path: Schema.String, message: Schema.String }) {
@@ -22,7 +24,7 @@ export class EnvironmentFileError extends Schema.TaggedError()("EnvironmentFileE
22
24
  */
23
25
  export const readSettingsSource = Effect.fn("GatewayNode.readSettingsSource")(function* (base) {
24
26
  const fs = yield* FileSystem.FileSystem;
25
- const named = yield* Config.option(Config.string("USINE_GATEWAY_ENVIRONMENT_FILES")).parse(base);
27
+ const named = yield* Config.option(Config.String("USINE_GATEWAY_ENVIRONMENT_FILES")).parse(base);
26
28
  const files = Option.match(named, {
27
29
  onNone: () => [],
28
30
  onSome: (value) => value.split(":").filter((path) => path !== ""),
@@ -33,24 +35,55 @@ export const readSettingsSource = Effect.fn("GatewayNode.readSettingsSource")(fu
33
35
  const provider = contents.reduce((below, text) => ConfigProvider.fromDotEnvContents(text).pipe(ConfigProvider.orElse(below)), base);
34
36
  return { files, provider };
35
37
  });
36
- /** The LLM providers and credentials from the settings. */
38
+ /** Returns the credential set for `provider`, or fails if both of its variables are set. */
39
+ const onlyOne = (provider, [firstName, first], [secondName, second]) => Option.isSome(first) && Option.isSome(second)
40
+ ? Effect.fail(new ConflictingProviderCredentials({
41
+ provider,
42
+ message: `${firstName} and ${secondName} are both set, and the gateway sends only one ${provider} credential. Unset one of them.`,
43
+ }))
44
+ : Effect.succeed(Option.isSome(first) ? first : second);
45
+ /**
46
+ * The LLM providers and credentials from the settings. A ChatGPT login's auth file is read and
47
+ * parsed, and its directory checked for writing, so an unusable file fails here, before the
48
+ * Gateway listens or a reload applies it.
49
+ */
37
50
  export const llmProviders = Effect.gen(function* () {
38
51
  const anthropicKey = yield* Config.option(Config.schema(Secret, "ANTHROPIC_API_KEY"));
39
52
  const subscription = yield* Config.option(Config.schema(Secret, "USINE_GATEWAY_ANTHROPIC_SUBSCRIPTION_TOKEN"));
40
53
  const openAiKey = yield* Config.option(Config.schema(Secret, "OPENAI_API_KEY"));
54
+ const chatGptAuthFile = yield* Config.option(Config.schema(HostFilePath, "USINE_GATEWAY_CHATGPT_AUTH_FILE"));
41
55
  const anthropicUpstream = yield* upstream("USINE_GATEWAY_ANTHROPIC_UPSTREAM", "https://api.anthropic.com");
42
56
  const openAiUpstream = yield* upstream("USINE_GATEWAY_OPENAI_UPSTREAM", "https://api.openai.com");
43
- if (Option.isSome(anthropicKey) && Option.isSome(subscription))
44
- return yield* new ConflictingAnthropicCredentials({
45
- message: "ANTHROPIC_API_KEY and USINE_GATEWAY_ANTHROPIC_SUBSCRIPTION_TOKEN are both set, and the gateway sends only one Anthropic credential. Unset one of them.",
46
- });
47
- const anthropicCredential = Option.orElse(Option.map(anthropicKey, (key) => new AnthropicApiKey({ key })), () => Option.map(subscription, (token) => new AnthropicSubscriptionToken({ token })));
57
+ const chatGptUpstream = yield* upstream("USINE_GATEWAY_CHATGPT_UPSTREAM", "https://chatgpt.com/backend-api/codex");
58
+ const anthropicCredential = yield* onlyOne("anthropic", ["ANTHROPIC_API_KEY", Option.map(anthropicKey, (key) => new AnthropicApiKey({ key }))], [
59
+ "USINE_GATEWAY_ANTHROPIC_SUBSCRIPTION_TOKEN",
60
+ Option.map(subscription, (token) => new AnthropicSubscriptionToken({ token })),
61
+ ]);
62
+ const openAiCredential = yield* onlyOne("openai", ["OPENAI_API_KEY", Option.map(openAiKey, (key) => new OpenAiApiKey({ key }))], [
63
+ "USINE_GATEWAY_CHATGPT_AUTH_FILE",
64
+ Option.map(chatGptAuthFile, (authFile) => new ChatGptLogin({ authFile, tokenUrl: UpstreamBase.make(CHATGPT_TOKEN_URL) })),
65
+ ]);
66
+ if (Option.isSome(openAiCredential) && openAiCredential.value._tag === "ChatGptLogin") {
67
+ yield* readAuthFile(openAiCredential.value.authFile);
68
+ yield* checkAuthFileWritable(openAiCredential.value.authFile);
69
+ }
48
70
  return {
49
71
  anthropic: Option.map(anthropicCredential, (credential) => new AnthropicProvider({ upstream: anthropicUpstream, credential })),
50
- openai: Option.map(openAiKey, (key) => new OpenAiProvider({ upstream: openAiUpstream, key })),
72
+ openai: Option.map(openAiCredential, (credential) => new OpenAiProvider({
73
+ upstream: credential._tag === "ChatGptLogin" ? chatGptUpstream : openAiUpstream,
74
+ credential,
75
+ })),
51
76
  };
52
77
  });
53
- export const egressAllowlistPath = Config.string("USINE_GATEWAY_EGRESS_ALLOWLIST").pipe(Config.withDefault(DEFAULT_EGRESS_ALLOWLIST_PATH));
78
+ /** Returns each provider's credential kind for a log line, or `none`. */
79
+ const providerCredentials = ({ anthropic, openai }) => ({
80
+ anthropic: Option.match(anthropic, {
81
+ onNone: () => "none",
82
+ onSome: (held) => held.credential._tag,
83
+ }),
84
+ openai: Option.match(openai, { onNone: () => "none", onSome: (held) => held.credential._tag }),
85
+ });
86
+ export const egressAllowlistPath = Config.String("USINE_GATEWAY_EGRESS_ALLOWLIST").pipe(Config.withDefault(DEFAULT_EGRESS_ALLOWLIST_PATH));
54
87
  /** Reads and parses the allowlist file at `path`. */
55
88
  export const readEgressAllowlist = Effect.fn("GatewayNode.readEgressAllowlist")(function* (path) {
56
89
  const fs = yield* FileSystem.FileSystem;
@@ -58,8 +91,8 @@ export const readEgressAllowlist = Effect.fn("GatewayNode.readEgressAllowlist")(
58
91
  return yield* Effect.fromResult(parseEgressAllowlist(text));
59
92
  });
60
93
  const listener = (prefix, host, port) => Config.all({
61
- host: Config.string(`${prefix}_HOST`).pipe(Config.withDefault(host)),
62
- port: Config.port(`${prefix}_PORT`).pipe(Config.withDefault(port)),
94
+ host: Config.String(`${prefix}_HOST`).pipe(Config.withDefault(host)),
95
+ port: Config.Port(`${prefix}_PORT`).pipe(Config.withDefault(port)),
63
96
  });
64
97
  /**
65
98
  * Listeners from the environment. The proxies default to loopback, so an unconfigured Gateway
@@ -82,19 +115,13 @@ const startupSettings = Effect.gen(function* () {
82
115
  const egress = yield* readEgressAllowlist(path);
83
116
  yield* Effect.logInfo("Loaded the egress allowlist", { path, rules: egress.rules.length });
84
117
  const providers = yield* llmProviders;
85
- yield* Effect.logInfo("Configured LLM providers", {
86
- anthropic: Option.match(providers.anthropic, {
87
- onNone: () => "none",
88
- onSome: (provider) => provider.credential._tag,
89
- }),
90
- openai: Option.isSome(providers.openai) ? "OpenAiApiKey" : "none",
91
- });
118
+ yield* Effect.logInfo("Configured LLM providers", providerCredentials(providers));
92
119
  const settings = { domain, github: GITHUB_ORIGINS, providers, egress, adminToken, callerKey };
93
120
  return { settings, listeners };
94
121
  });
95
122
  /**
96
- * Reads the Gateway's settings from `source`. Fails on a missing secret, an invalid value, or
97
- * an unreadable allowlist, so the Gateway stops before it listens.
123
+ * Reads the Gateway's settings from `source`. Fails on a missing secret, an invalid value, an
124
+ * unreadable allowlist, or an unusable ChatGPT auth file, so the Gateway stops before it listens.
98
125
  */
99
126
  export const readStartupSettings = Effect.fn("GatewayNode.readStartupSettings")(function* (source) {
100
127
  yield* Effect.logInfo("Reading the gateway settings", { environmentFiles: source.files });
@@ -103,7 +130,7 @@ export const readStartupSettings = Effect.fn("GatewayNode.readStartupSettings")(
103
130
  /**
104
131
  * The Gateway's settings, read once at startup from the files in
105
132
  * `USINE_GATEWAY_ENVIRONMENT_FILES` over the process environment, plus the egress allowlist
106
- * file. Fails on a missing secret, an invalid value, or an unreadable file.
133
+ * file. Fails on a missing secret, an invalid value, or an unreadable or unusable file.
107
134
  */
108
135
  export const settingsFromEnvironment = Layer.effect(GatewaySettings, Effect.gen(function* () {
109
136
  const source = yield* readSettingsSource(yield* ConfigProvider.ConfigProvider);
@@ -1 +1 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/node/environment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/node/environment.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,7 @@
1
1
  import { Context, Layer } from "effect";
2
- import { Attachments } from "../attachment/store.ts";
3
- import { CallerTokens } from "../caller/caller.ts";
4
- import { GatewaySettings, SettingsInForce } from "../settings.ts";
2
+ import { GatewaySettings } from "../settings.ts";
5
3
  import { type GatewayListeners, type Listener } from "./environment.ts";
6
- export { ConflictingAnthropicCredentials, DEFAULT_EGRESS_ALLOWLIST_PATH, EnvironmentFileError, type GatewayListeners, type Listener, listenersFromEnvironment, settingsFromEnvironment, } from "./environment.ts";
4
+ export { ConflictingProviderCredentials, DEFAULT_EGRESS_ALLOWLIST_PATH, EnvironmentFileError, type GatewayListeners, type Listener, listenersFromEnvironment, settingsFromEnvironment, } from "./environment.ts";
7
5
  export { EgressProxyListenError } from "./egress-proxy.ts";
8
6
  export { GatewayReload } from "./reload.ts";
9
7
  declare const GatewayAddresses_base: Context.ServiceClass<GatewayAddresses, "@usine/gateway/node/GatewayAddresses", {
@@ -16,14 +14,15 @@ export declare class GatewayAddresses extends GatewayAddresses_base {
16
14
  }
17
15
  /**
18
16
  * The Gateway on Node: the reverse proxy, forward proxy, and admin API on their listeners,
19
- * sharing one attachment store, caller token signer, and settings. Upstream requests use
20
- * undici, which doesn't change `content-encoding`, so compressed bodies pass through unchanged.
17
+ * sharing one attachment store, caller token signer, settings, and ChatGPT logins. Upstream
18
+ * requests use undici, which doesn't change `content-encoding`, so compressed bodies pass
19
+ * through unchanged. ChatGPT logins read and write their auth files with Node's file system.
21
20
  */
22
- export declare const gatewayLayer: (listeners: GatewayListeners) => Layer.Layer<Attachments | CallerTokens | GatewayAddresses | SettingsInForce, import("./egress-proxy.ts").EgressProxyListenError | import("effect/unstable/http/HttpServerError").ServeError, GatewaySettings>;
21
+ export declare const gatewayLayer: (listeners: GatewayListeners) => Layer.Layer<import("../gateway.ts").Attachments | import("../gateway.ts").CallerTokens | import("../gateway.ts").ChatGptLogins | GatewayAddresses | import("../settings.ts").SettingsInForce, import("./egress-proxy.ts").EgressProxyListenError | import("effect/http/HttpServerError").ServeError, GatewaySettings>;
23
22
  /**
24
23
  * The Gateway configured from its environment files, the process environment, and its
25
24
  * allowlist file, as run by the `usine-gateway` command. On SIGHUP, reloads the egress
26
25
  * allowlist and LLM providers with `GatewayReload`.
27
26
  */
28
- export declare const gatewayFromEnvironment: Layer.Layer<Attachments | CallerTokens | GatewayAddresses | import("./reload.ts").GatewayReload | SettingsInForce, import("effect/Config").ConfigError | import("./environment.ts").ConflictingAnthropicCredentials | import("../gateway.ts").EgressAllowlistError | import("./egress-proxy.ts").EgressProxyListenError | import("./environment.ts").EnvironmentFileError | import("effect/PlatformError").PlatformError | import("effect/unstable/http/HttpServerError").ServeError, import("effect/FileSystem").FileSystem>;
27
+ export declare const gatewayFromEnvironment: Layer.Layer<import("../gateway.ts").Attachments | import("../gateway.ts").CallerTokens | import("../gateway.ts").ChatGptLogins | GatewayAddresses | import("./reload.ts").GatewayReload | import("../settings.ts").SettingsInForce, import("../gateway.ts").ChatGptAuthFileError | import("effect/Config").ConfigError | import("./environment.ts").ConflictingProviderCredentials | import("../gateway.ts").EgressAllowlistError | import("./egress-proxy.ts").EgressProxyListenError | import("./environment.ts").EnvironmentFileError | import("effect/PlatformError").PlatformError | import("effect/http/HttpServerError").ServeError, import("effect/FileSystem").FileSystem>;
29
28
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/node/node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,OAAO,EAAU,KAAK,EAAU,MAAM,QAAQ,CAAC;AAUxE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EAGd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;;oBAKxB,QAAQ;qBAAmB,QAAQ;oBAAkB,QAAQ;;AAHjF,yGAAyG;AACzG,qBAAa,gBAAiB,SAAQ,qBAGK;CAAG;AA2D9C;;;;GAIG;AACH,eAAO,MAAM,YAAY,cAAe,gBAAgB,kNAmBrD,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,+fAUlC,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/node/node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,OAAO,EAAU,KAAK,EAAU,MAAM,QAAQ,CAAC;AAaxE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EAGd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;;oBAKxB,QAAQ;qBAAmB,QAAQ;oBAAkB,QAAQ;;AAHjF,yGAAyG;AACzG,qBAAa,gBAAiB,SAAQ,qBAGK;CAAG;AA0D9C;;;;;GAKG;AACH,eAAO,MAAM,YAAY,cAAe,gBAAgB,0TAgBrD,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,qpBAUlC,CAAC"}
package/dist/node/node.js CHANGED
@@ -1,22 +1,24 @@
1
1
  import { createServer } from "node:http";
2
- import { NodeHttpClient, NodeHttpServer, NodeHttpServerRequest } from "@effect/platform-node";
2
+ import { NodeFileSystem, NodeHttpClient, NodeHttpServer } from "@effect/platform-node";
3
3
  import { ConfigProvider, Context, Effect, Layer, Stream } from "effect";
4
- import { HttpMiddleware, HttpBody, HttpRouter, HttpServer, HttpServerRequest, HttpServerResponse, } from "effect/unstable/http";
4
+ import { HttpMiddleware, HttpBody, HttpRouter, HttpServer, HttpServerRequest, HttpServerResponse, } from "effect/http";
5
+ import { NetAddress } from "effect/net";
5
6
  import { adminRoutes } from "../admin/server.js";
6
- import { Attachments } from "../attachment/store.js";
7
- import { CallerTokens } from "../caller/caller.js";
7
+ import { gatewayServices } from "../gateway.js";
8
8
  import { GatewayProxy } from "../proxy/proxy.js";
9
- import { GatewaySettings, SettingsInForce } from "../settings.js";
9
+ import { GatewaySettings } from "../settings.js";
10
10
  import { serveEgressProxy } from "./egress-proxy.js";
11
11
  import { readSettingsSource, readStartupSettings, } from "./environment.js";
12
12
  import { gatewayReloadLayer, reloadOnHangup } from "./reload.js";
13
- export { ConflictingAnthropicCredentials, DEFAULT_EGRESS_ALLOWLIST_PATH, EnvironmentFileError, listenersFromEnvironment, settingsFromEnvironment, } from "./environment.js";
13
+ export { ConflictingProviderCredentials, DEFAULT_EGRESS_ALLOWLIST_PATH, EnvironmentFileError, listenersFromEnvironment, settingsFromEnvironment, } from "./environment.js";
14
14
  export { EgressProxyListenError } from "./egress-proxy.js";
15
15
  export { GatewayReload } from "./reload.js";
16
16
  /** The bound addresses of the Gateway's three servers, with any port 0 replaced by the assigned port. */
17
17
  export class GatewayAddresses extends Context.Service()("@usine/gateway/node/GatewayAddresses") {
18
18
  }
19
- const boundTo = (address, requested) => address._tag === "TcpAddress" ? { host: address.hostname, port: address.port } : requested;
19
+ const boundTo = (address, requested) => address._tag === "UnixPathAddress"
20
+ ? requested
21
+ : { host: NetAddress.formatHost(address), port: address.port };
20
22
  /** Returns an address this process can connect to for `listener`, which may be bound to all interfaces. */
21
23
  const reachable = (listener) => listener.host === "0.0.0.0" || listener.host === "::"
22
24
  ? { host: "127.0.0.1", port: listener.port }
@@ -30,17 +32,14 @@ const serveProxy = Effect.fn("GatewayNode.serveProxy")(function* (listener) {
30
32
  const response = yield* proxy.handle;
31
33
  if (response.body._tag !== "Stream")
32
34
  return response;
33
- // effect 4.0.0-rc.111 ends a failed stream normally after sending headers. Destroying it first keeps a
34
- // partial download or model response from looking complete to the Worker.
35
- const body = response.body.stream.pipe(Stream.onError(() => Effect.gen(function* () {
36
- yield* Effect.logError("The reverse proxy response body failed", {
37
- host: request.headers.host,
38
- method: request.method,
39
- path: request.url.split("?")[0],
40
- error: "UpstreamBodyFailure",
41
- });
42
- NodeHttpServerRequest.toServerResponse(request).destroy();
43
- }).pipe(Effect.uninterruptible)));
35
+ // The server destroys a response whose body fails after its headers, so the Worker sees a
36
+ // partial download or model response as incomplete.
37
+ const body = response.body.stream.pipe(Stream.onError(() => Effect.logError("The reverse proxy response body failed", {
38
+ host: request.headers.host,
39
+ method: request.method,
40
+ path: request.url.split("?")[0],
41
+ error: "UpstreamBodyFailure",
42
+ })));
44
43
  return HttpServerResponse.setBody(response, HttpBody.stream(body, response.body.contentType, response.body.contentLength));
45
44
  }));
46
45
  const bound = boundTo(server.address, listener);
@@ -56,17 +55,17 @@ const serveAdmin = Effect.fn("GatewayNode.serveAdmin")(function* (listener) {
56
55
  });
57
56
  /**
58
57
  * The Gateway on Node: the reverse proxy, forward proxy, and admin API on their listeners,
59
- * sharing one attachment store, caller token signer, and settings. Upstream requests use
60
- * undici, which doesn't change `content-encoding`, so compressed bodies pass through unchanged.
58
+ * sharing one attachment store, caller token signer, settings, and ChatGPT logins. Upstream
59
+ * requests use undici, which doesn't change `content-encoding`, so compressed bodies pass
60
+ * through unchanged. ChatGPT logins read and write their auth files with Node's file system.
61
61
  */
62
62
  export const gatewayLayer = (listeners) => Layer.effect(GatewayAddresses, Effect.gen(function* () {
63
63
  const proxy = yield* serveProxy(listeners.proxy);
64
64
  const egress = yield* serveEgressProxy(listeners.egress, reachable(proxy));
65
65
  const admin = yield* serveAdmin(listeners.admin);
66
66
  return { proxy, egress, admin };
67
- })).pipe(Layer.provide(GatewayProxy.layer), Layer.provideMerge(Layer.mergeAll(Attachments.layer, CallerTokens.layer, SettingsInForce.layer)), Layer.provide(NodeHttpClient.layerUndici),
68
- // effect 4.0.0-rc.111 reads header redaction settings after the request fiber may have cleared its
69
- // context, so automatic HTTP spans are disabled. Named Gateway spans still record safe fields
67
+ })).pipe(Layer.provide(GatewayProxy.layer), Layer.provideMerge(gatewayServices), Layer.provide(Layer.mergeAll(NodeHttpClient.layerUndici, NodeFileSystem.layer)),
68
+ // No automatic HTTP span records the incoming headers. Named Gateway spans record safe fields
70
69
  // without incoming credentials.
71
70
  Layer.provide(Layer.succeed(HttpMiddleware.TracerDisabledWhen)(() => true)));
72
71
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/node/node.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { ConfigProvider, Context, Effect, FileSystem, Layer } from "effect";
2
+ import { ChatGptLogins } from "../chatgpt/logins.ts";
2
3
  import { SettingsInForce } from "../settings.ts";
3
4
  import { type StartupSettings } from "./environment.ts";
4
5
  declare const GatewayReload_base: Context.ServiceClass<GatewayReload, "@usine/gateway/node/GatewayReload", {
@@ -16,7 +17,7 @@ declare const GatewayReload_base: Context.ServiceClass<GatewayReload, "@usine/ga
16
17
  export declare class GatewayReload extends GatewayReload_base {
17
18
  }
18
19
  /** Returns the reload for a Gateway started with `started`, reading settings from the environment files over `base`. */
19
- export declare const gatewayReloadLayer: (started: StartupSettings, base: ConfigProvider.ConfigProvider) => Layer.Layer<GatewayReload, never, FileSystem.FileSystem | SettingsInForce>;
20
+ export declare const gatewayReloadLayer: (started: StartupSettings, base: ConfigProvider.ConfigProvider) => Layer.Layer<GatewayReload, never, ChatGptLogins | FileSystem.FileSystem | SettingsInForce>;
20
21
  /**
21
22
  * Runs the reload on each SIGHUP while the layer is in scope, one at a time; signals during a
22
23
  * reload trigger one more. The listener also prevents Node's default exit on SIGHUP.
@@ -1 +1 @@
1
- {"version":3,"file":"reload.d.ts","sourceRoot":"","sources":["../../src/node/reload.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,OAAO,EACP,MAAM,EACN,UAAU,EACV,KAAK,EAKN,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAQL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;;IAUtB;;;OAGG;qBACc,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAZxC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,kBASK;CAAG;AA2G3C,wHAAwH;AACxH,eAAO,MAAM,kBAAkB,YAAa,eAAe,QAAQ,cAAc,CAAC,cAAc,+EAiE7F,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,0CAoB1B,CAAC"}
1
+ {"version":3,"file":"reload.d.ts","sourceRoot":"","sources":["../../src/node/reload.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,OAAO,EACP,MAAM,EACN,UAAU,EACV,KAAK,EAKN,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAQL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;;IAUtB;;;OAGG;qBACc,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAZxC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,kBASK;CAAG;AA0I3C,wHAAwH;AACxH,eAAO,MAAM,kBAAkB,YAAa,eAAe,QAAQ,cAAc,CAAC,cAAc,+FAmE7F,CAAC;AAEJ;;;GAGG;AACH,eAAO,MAAM,cAAc,0CAoB1B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Cause, ConfigProvider, Context, Effect, FileSystem, Layer, Option, Queue, Redacted, Semaphore, } from "effect";
2
+ import { ChatGptLogins } from "../chatgpt/logins.js";
2
3
  import { SettingsInForce } from "../settings.js";
3
4
  import { egressAllowlistPath, llmProviders, readEgressAllowlist, readSettingsSource, restartSettings, } from "./environment.js";
4
5
  /**
@@ -20,24 +21,34 @@ const restartValues = ({ domain, adminToken, callerKey, listeners }) => ({
20
21
  USINE_GATEWAY_ADMIN_HOST: listeners.admin.host,
21
22
  USINE_GATEWAY_ADMIN_PORT: String(listeners.admin.port),
22
23
  });
23
- /** Returns each credential variable with its value, or `None` if unset. */
24
+ /** Returns each credential variable with its value, or `undefined` if unset. */
24
25
  const credentialValues = ({ anthropic, openai }) => {
25
- const credential = Option.getOrUndefined(Option.map(anthropic, (provider) => provider.credential));
26
+ const anthropicCredential = Option.getOrUndefined(Option.map(anthropic, (provider) => provider.credential));
27
+ const openAiCredential = Option.getOrUndefined(Option.map(openai, (provider) => provider.credential));
26
28
  return {
27
- ANTHROPIC_API_KEY: credential?._tag === "AnthropicApiKey" ? Redacted.value(credential.key) : undefined,
28
- USINE_GATEWAY_ANTHROPIC_SUBSCRIPTION_TOKEN: credential?._tag === "AnthropicSubscriptionToken"
29
- ? Redacted.value(credential.token)
29
+ ANTHROPIC_API_KEY: anthropicCredential?._tag === "AnthropicApiKey"
30
+ ? Redacted.value(anthropicCredential.key)
30
31
  : undefined,
31
- OPENAI_API_KEY: Option.getOrUndefined(Option.map(openai, (provider) => Redacted.value(provider.key))),
32
+ USINE_GATEWAY_ANTHROPIC_SUBSCRIPTION_TOKEN: anthropicCredential?._tag === "AnthropicSubscriptionToken"
33
+ ? Redacted.value(anthropicCredential.token)
34
+ : undefined,
35
+ OPENAI_API_KEY: openAiCredential?._tag === "OpenAiApiKey" ? Redacted.value(openAiCredential.key) : undefined,
36
+ USINE_GATEWAY_CHATGPT_AUTH_FILE: openAiCredential?._tag === "ChatGptLogin" ? openAiCredential.authFile : undefined,
32
37
  };
33
38
  };
34
- /** Returns the upstream variables that changed, for providers with a credential before and after. */
39
+ /** The variable that sets each credential's upstream. */
40
+ const UPSTREAM_VARIABLES = {
41
+ AnthropicApiKey: "USINE_GATEWAY_ANTHROPIC_UPSTREAM",
42
+ AnthropicSubscriptionToken: "USINE_GATEWAY_ANTHROPIC_UPSTREAM",
43
+ OpenAiApiKey: "USINE_GATEWAY_OPENAI_UPSTREAM",
44
+ ChatGptLogin: "USINE_GATEWAY_CHATGPT_UPSTREAM",
45
+ };
46
+ /** Returns the upstream variables that changed, for providers with the same kind of credential before and after. */
35
47
  const changedUpstreams = (before, after) => {
36
- const differs = (was, is) => Option.getOrElse(Option.zipWith(was, is, (left, right) => left.upstream !== right.upstream), () => false);
37
- return [
38
- ...(differs(before.anthropic, after.anthropic) ? ["USINE_GATEWAY_ANTHROPIC_UPSTREAM"] : []),
39
- ...(differs(before.openai, after.openai) ? ["USINE_GATEWAY_OPENAI_UPSTREAM"] : []),
40
- ];
48
+ const changed = (was, is) => Option.toArray(Option.flatMap(Option.zipWith(was, is, (left, right) => [left, right]), ([left, right]) => left.credential._tag === right.credential._tag && left.upstream !== right.upstream
49
+ ? Option.some(UPSTREAM_VARIABLES[right.credential._tag])
50
+ : Option.none()));
51
+ return [...changed(before.anthropic, after.anthropic), ...changed(before.openai, after.openai)];
41
52
  };
42
53
  /** Returns the names of the variables whose values differ, never the values. */
43
54
  const changedVariables = (before, after) => Object.keys(before).filter((name) => before[name] !== after[name]);
@@ -70,11 +81,26 @@ const keptProviders = (error) => Effect.logError("Kept the previous LLM provider
70
81
  /** The new LLM providers, or `None` if they're invalid. */
71
82
  const nextProviders = llmProviders.pipe(Effect.map(Option.some), Effect.catchTags({
72
83
  ConfigError: ({ message }) => keptProviders(message),
73
- ConflictingAnthropicCredentials: ({ message }) => keptProviders(message),
84
+ ConflictingProviderCredentials: ({ message }) => keptProviders(message),
85
+ ChatGptAuthFileError: ({ message }) => keptProviders(message),
74
86
  }));
87
+ /**
88
+ * Reads a ChatGPT login's auth file again after a reload, so a login the operator copied
89
+ * replaces the one in memory. An unreadable file keeps the login in memory.
90
+ */
91
+ const reloadChatGptLogin = (logins, providers) => {
92
+ const login = Option.getOrUndefined(Option.map(providers.openai, ({ credential }) => credential));
93
+ if (login?._tag !== "ChatGptLogin")
94
+ return Effect.void;
95
+ return logins.reload(login).pipe(Effect.catchTag("ChatGptAuthFileError", ({ message }) => Effect.logError("Kept the ChatGPT login in memory: its auth file could not be read", {
96
+ authFile: login.authFile,
97
+ error: message,
98
+ })));
99
+ };
75
100
  /** Returns the reload for a Gateway started with `started`, reading settings from the environment files over `base`. */
76
101
  export const gatewayReloadLayer = (started, base) => Layer.effect(GatewayReload, Effect.gen(function* () {
77
102
  const inForce = yield* SettingsInForce;
103
+ const logins = yield* ChatGptLogins;
78
104
  const fileSystem = yield* FileSystem.FileSystem;
79
105
  const oneAtATime = yield* Semaphore.make(1);
80
106
  const { domain, adminToken, callerKey } = started.settings;
@@ -94,6 +120,8 @@ export const gatewayReloadLayer = (started, base) => Layer.effect(GatewayReload,
94
120
  providers: Option.getOrElse(providers, () => previous.providers),
95
121
  };
96
122
  yield* inForce.replace(next);
123
+ if (Option.isSome(providers))
124
+ yield* reloadChatGptLogin(logins, next.providers);
97
125
  yield* Effect.logInfo("Reloaded the gateway settings", {
98
126
  environmentFiles: source.files,
99
127
  allowlist: Option.isSome(allowlist.egress) ? "reloaded" : "kept",
@@ -1 +1 @@
1
- {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/node/reload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reload.js","sourceRoot":"","sources":["../../src/node/reload.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Effect } from "effect";
2
- import { Headers, HttpClient, type HttpServerRequest, HttpServerResponse } from "effect/unstable/http";
2
+ import { Headers, HttpClient, type HttpServerRequest, HttpServerResponse } from "effect/http";
3
3
  /** Returns `headers` without hop-by-hop headers, including those listed in `Connection`. */
4
4
  export declare const endToEndHeaders: (headers: Headers.Headers) => Headers.Headers;
5
5
  /**
@@ -8,5 +8,5 @@ export declare const endToEndHeaders: (headers: Headers.Headers) => Headers.Head
8
8
  * in both directions without buffering. The client span is disabled, so no header value is
9
9
  * recorded in a trace.
10
10
  */
11
- export declare const forwardRequest: (client: HttpClient.HttpClient, request: HttpServerRequest.HttpServerRequest, upstream: string, headers: Headers.Headers) => Effect.Effect<HttpServerResponse.HttpServerResponse, import("effect/unstable/http/HttpClientError").HttpClientError, never>;
11
+ export declare const forwardRequest: (client: HttpClient.HttpClient, request: HttpServerRequest.HttpServerRequest, upstream: string, headers: Headers.Headers) => Effect.Effect<HttpServerResponse.HttpServerResponse, import("effect/http/HttpClientError").HttpClientError, never>;
12
12
  //# sourceMappingURL=forward.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../../src/proxy/forward.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,OAAO,EACP,UAAU,EAEV,KAAK,iBAAiB,EACtB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAiB9B,4FAA4F;AAC5F,eAAO,MAAM,eAAe,YAAa,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,OASlE,CAAC;AASF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,WACjB,UAAU,CAAC,UAAU,WACpB,iBAAiB,CAAC,iBAAiB,YAClC,MAAM,WACP,OAAO,CAAC,OAAO,gIAezB,CAAC"}
1
+ {"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../../src/proxy/forward.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAC;AACxC,OAAO,EACL,OAAO,EACP,UAAU,EAEV,KAAK,iBAAiB,EACtB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAiBrB,4FAA4F;AAC5F,eAAO,MAAM,eAAe,YAAa,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,OASlE,CAAC;AASF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,WACjB,UAAU,CAAC,UAAU,WACpB,iBAAiB,CAAC,iBAAiB,YAClC,MAAM,WACP,OAAO,CAAC,OAAO,uHAezB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Effect, Option } from "effect";
2
- import { Headers, HttpClient, HttpClientRequest, HttpServerResponse, } from "effect/unstable/http";
2
+ import { Headers, HttpClient, HttpClientRequest, HttpServerResponse, } from "effect/http";
3
3
  /** Connection-level headers that are never forwarded (RFC 9110, section 7.6.1). */
4
4
  const HOP_BY_HOP = [
5
5
  "connection",