@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
@@ -1,9 +1,10 @@
1
1
  import { canonicalRepositoryName } from "@usine/core/repository";
2
- import { Context, DateTime, Effect, Layer, Ref } from "effect";
2
+ import { Context, Data, DateTime, Effect, Layer, Match, Ref } from "effect";
3
3
  import { AttachmentAlreadyExpired, AttachmentConflict, ExpiredAttachment, LiveAttachment, MissingAttachment, } from "./attachment.js";
4
4
  const SWEEP_INTERVAL = "1 minute";
5
5
  const samePair = (left, right) => left.worker === right.worker &&
6
6
  canonicalRepositoryName(left.repository) === canonicalRepositoryName(right.repository);
7
+ const Learning = Data.taggedEnum();
7
8
  /**
8
9
  * The in-memory attachment store, keyed by attachment ID. A Gateway restart clears it; the
9
10
  * executor re-attaches with the same IDs when it renews or restarts.
@@ -20,11 +21,11 @@ export class Attachments extends Context.Service()("@usine/gateway/Attachments")
20
21
  return yield* new AttachmentAlreadyExpired({ worker, repository, expiresAt });
21
22
  const outcome = yield* Ref.modify(entries, (current) => {
22
23
  const previous = current.get(id);
23
- if (previous !== undefined && !samePair(previous, attachment))
24
+ if (previous !== undefined && !samePair(previous.attachment, attachment))
24
25
  return ["conflict", current];
25
26
  return [
26
27
  previous === undefined ? "attached" : "renewed",
27
- new Map(current).set(id, attachment),
28
+ new Map(current).set(id, { attachment, newNames: previous?.newNames ?? [] }),
28
29
  ];
29
30
  });
30
31
  if (outcome === "conflict")
@@ -40,12 +41,12 @@ export class Attachments extends Context.Service()("@usine/gateway/Attachments")
40
41
  const detach = Effect.fn("Attachments.detach")(function* (id) {
41
42
  yield* Effect.annotateCurrentSpan({ attachment: id });
42
43
  const removed = yield* Ref.modify(entries, (current) => {
43
- const attachment = current.get(id);
44
- if (attachment === undefined)
45
- return [attachment, current];
44
+ const entry = current.get(id);
45
+ if (entry === undefined)
46
+ return [entry, current];
46
47
  const next = new Map(current);
47
48
  next.delete(id);
48
- return [attachment, next];
49
+ return [entry.attachment, next];
49
50
  });
50
51
  if (removed === undefined) {
51
52
  yield* Effect.logInfo("Nothing to detach", { attachment: id });
@@ -62,22 +63,53 @@ export class Attachments extends Context.Service()("@usine/gateway/Attachments")
62
63
  const now = yield* DateTime.now;
63
64
  const current = yield* Ref.get(entries);
64
65
  return [...current.values()]
66
+ .map(({ attachment }) => attachment)
65
67
  .filter((attachment) => attachment.isLiveAt(now))
66
68
  .sort((left, right) => DateTime.toEpochMillis(left.expiresAt) - DateTime.toEpochMillis(right.expiresAt));
67
69
  });
68
70
  const find = Effect.fn("Attachments.find")(function* (id) {
69
71
  const now = yield* DateTime.now;
70
- const attachment = (yield* Ref.get(entries)).get(id);
71
- if (attachment === undefined)
72
+ const entry = (yield* Ref.get(entries)).get(id);
73
+ if (entry === undefined)
72
74
  return new MissingAttachment();
73
- return attachment.isLiveAt(now)
74
- ? new LiveAttachment({ attachment })
75
- : new ExpiredAttachment({ expiredAt: attachment.expiresAt });
75
+ return entry.attachment.isLiveAt(now)
76
+ ? new LiveAttachment(entry)
77
+ : new ExpiredAttachment({ expiredAt: entry.attachment.expiresAt });
78
+ });
79
+ const learnNewName = Effect.fn("Attachments.learnNewName")(function* (id, name) {
80
+ yield* Effect.annotateCurrentSpan({ attachment: id, newName: name });
81
+ const now = yield* DateTime.now;
82
+ const learning = yield* Ref.modify(entries, (current) => {
83
+ const entry = current.get(id);
84
+ if (entry === undefined || !entry.attachment.isLiveAt(now))
85
+ return [Learning.Kept({ reason: "not-live" }), current];
86
+ if (new LiveAttachment(entry).serves(name))
87
+ return [Learning.Kept({ reason: "already-served" }), current];
88
+ return [
89
+ Learning.Learned({ attachment: entry.attachment }),
90
+ new Map(current).set(id, { ...entry, newNames: [...entry.newNames, name] }),
91
+ ];
92
+ });
93
+ yield* Match.valueTags(learning, {
94
+ Learned: ({ attachment }) => Effect.logInfo("Learned the new name of an attached repository", {
95
+ attachment: id,
96
+ worker: attachment.worker,
97
+ repository: attachment.repository,
98
+ newName: name,
99
+ }),
100
+ Kept: ({ reason }) => Effect.logDebug("Kept the names an attachment serves", {
101
+ attachment: id,
102
+ newName: name,
103
+ reason,
104
+ }),
105
+ });
76
106
  });
77
107
  const sweep = Effect.fn("Attachments.sweep")(function* () {
78
108
  const now = yield* DateTime.now;
79
109
  const expired = yield* Ref.modify(entries, (current) => {
80
- const gone = [...current.values()].filter((attachment) => !attachment.isLiveAt(now));
110
+ const gone = [...current.values()]
111
+ .map(({ attachment }) => attachment)
112
+ .filter((attachment) => !attachment.isLiveAt(now));
81
113
  if (gone.length === 0)
82
114
  return [gone, current];
83
115
  const next = new Map(current);
@@ -95,7 +127,7 @@ export class Attachments extends Context.Service()("@usine/gateway/Attachments")
95
127
  return expired.length;
96
128
  });
97
129
  yield* Effect.forever(Effect.sleep(SWEEP_INTERVAL).pipe(Effect.andThen(sweep()))).pipe(Effect.forkScoped);
98
- return { attach, detach, list, find, sweep };
130
+ return { attach, detach, list, find, learnNewName, sweep };
99
131
  }));
100
132
  }
101
133
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/attachment/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/attachment/store.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Context, Effect, Layer, Option, Schema } from "effect";
2
- import { Headers } from "effect/unstable/http";
2
+ import { Headers } from "effect/http";
3
3
  import { GatewaySettings } from "../settings.ts";
4
4
  declare const CallerClaims_base: Schema.Class<CallerClaims, Schema.Struct<{
5
5
  readonly attachment: Schema.brand<Schema.String, "AttachmentId">;
@@ -1 +1 @@
1
- {"version":3,"file":"caller.d.ts","sourceRoot":"","sources":["../../src/caller/caller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAY,KAAK,EAAE,MAAM,EAAoB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;;;;;;AAEjD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAIhC;CAAG;AAEL;;;GAGG;AACH,eAAO,MAAM,WAAW,wCAAyC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;;;;AAElD,6JAA6J;AAC7J,qBAAa,mBAAoB,SAAQ,wBAGxC;CAAG;AAEJ,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;;oBAgCxC,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;qBACnD,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;IACzF;;;OAGG;kCAC2B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;;AAd9F;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,iBAWA;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,oDAsFnB;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,UAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAgB/E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,YAAa,OAAO,CAAC,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAahF,CAAC;AAEJ,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,YAAa,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,OACqB,CAAC"}
1
+ {"version":3,"file":"caller.d.ts","sourceRoot":"","sources":["../../src/caller/caller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAoB,MAAM,EAAE,MAAM,QAAQ,CAAC;AAElF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;;;;;;AAEjD;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAIhC;CAAG;AAEL;;;GAGG;AACH,eAAO,MAAM,WAAW,wCAAyC,CAAC;AAClE,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAC;;;;AAElD,6JAA6J;AAC7J,qBAAa,mBAAoB,SAAQ,wBAGxC;CAAG;AAEJ,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;;oBAgCxC,CAAC,MAAM,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;qBACnD,CAAC,KAAK,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,mBAAmB,CAAC;IACzF;;;OAGG;kCAC2B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;;AAd9F;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,iBAWA;IAChC,MAAM,CAAC,QAAQ,CAAC,KAAK,oDAsFnB;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,UAAW,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAgB/E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,YAAa,OAAO,CAAC,OAAO,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAahF,CAAC;AAEJ,iFAAiF;AACjF,eAAO,MAAM,wBAAwB,YAAa,OAAO,CAAC,OAAO,KAAG,OAAO,CAAC,OACqB,CAAC"}
@@ -1,7 +1,8 @@
1
1
  import { RepositoryName } from "@usine/core/repository";
2
2
  import { WorkerName } from "@usine/core/worker";
3
- import { Context, Effect, Encoding, Layer, Option, Redacted, Result, Schema } from "effect";
4
- import { Headers } from "effect/unstable/http";
3
+ import { Context, Effect, Layer, Option, Redacted, Result, Schema } from "effect";
4
+ import { Base64, Base64Url } from "effect/encoding";
5
+ import { Headers } from "effect/http";
5
6
  import { AttachmentId } from "../attachment/attachment.js";
6
7
  import { GatewaySettings } from "../settings.js";
7
8
  /**
@@ -56,20 +57,20 @@ export class CallerTokens extends Context.Service()("@usine/gateway/CallerTokens
56
57
  worker: claims.worker,
57
58
  repository: claims.repository,
58
59
  });
59
- const signed = `ugw1.${Encoding.encodeBase64Url(encodeClaims(claims))}`;
60
+ const signed = `ugw1.${Base64Url.encode(encodeClaims(claims))}`;
60
61
  const mac = yield* Effect.promise(() => crypto.subtle.sign("HMAC", key, toArrayBuffer(encoder.encode(signed))));
61
- return Redacted.make(`${signed}.${Encoding.encodeBase64Url(new Uint8Array(mac))}`);
62
+ return Redacted.make(`${signed}.${Base64Url.encode(new Uint8Array(mac))}`);
62
63
  });
63
64
  const verify = Effect.fn("CallerTokens.verify")(function* (token) {
64
65
  const match = TOKEN_FORMAT.exec(Redacted.value(token));
65
66
  const payload = match?.[1];
66
- const mac = Option.fromNullishOr(match?.[2]).pipe(Option.flatMap((value) => Result.getSuccess(Encoding.decodeBase64Url(value))));
67
+ const mac = Option.fromNullishOr(match?.[2]).pipe(Option.flatMap((value) => Result.getSuccess(Base64Url.decode(value))));
67
68
  if (payload === undefined || Option.isNone(mac))
68
69
  return yield* new CallerTokenRejected({ reason: "malformed" });
69
70
  const authentic = yield* Effect.promise(() => crypto.subtle.verify("HMAC", key, toArrayBuffer(mac.value), toArrayBuffer(encoder.encode(`ugw1.${payload}`))));
70
71
  if (!authentic)
71
72
  return yield* new CallerTokenRejected({ reason: "bad-signature" });
72
- const claims = Result.getSuccess(Encoding.decodeBase64UrlString(payload)).pipe(Option.flatMap(decodeClaims));
73
+ const claims = Result.getSuccess(Base64Url.decodeString(payload)).pipe(Option.flatMap(decodeClaims));
73
74
  if (Option.isNone(claims))
74
75
  return yield* new CallerTokenRejected({ reason: "malformed" });
75
76
  yield* Effect.annotateCurrentSpan({
@@ -111,7 +112,7 @@ export const tokenFromAuthorization = (value) => {
111
112
  return Option.some(Redacted.make(parameter));
112
113
  if (scheme !== "basic")
113
114
  return Option.none();
114
- return Result.getSuccess(Encoding.decodeBase64String(parameter)).pipe(Option.flatMap((pair) => {
115
+ return Result.getSuccess(Base64.decodeString(parameter)).pipe(Option.flatMap((pair) => {
115
116
  const separator = pair.indexOf(":");
116
117
  const user = separator === -1 ? pair : pair.slice(0, separator);
117
118
  const password = separator === -1 ? "" : pair.slice(separator + 1);
@@ -1 +1 @@
1
- {"version":3,"file":"caller.js","sourceRoot":"","sources":["../../src/caller/caller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"caller.js","sourceRoot":"","sources":["../../src/caller/caller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { DateTime, Effect, FileSystem, Option, Schema } from "effect";
2
+ declare const ChatGptAuthFileError_base: Schema.Class<ChatGptAuthFileError, Schema.TaggedStruct<"ChatGptAuthFileError", {
3
+ readonly path: Schema.String;
4
+ readonly operation: Schema.Literals<readonly ["read", "write"]>;
5
+ readonly message: Schema.String;
6
+ }>, import("effect/Cause").YieldableError>;
7
+ /**
8
+ * The error when a ChatGPT login's `auth.json` can't be read or written, or isn't a Codex
9
+ * ChatGPT login. The message never contains a token.
10
+ */
11
+ export declare class ChatGptAuthFileError extends ChatGptAuthFileError_base {
12
+ }
13
+ declare const ChatGptTokens_base: Schema.Class<ChatGptTokens, Schema.Struct<{
14
+ readonly accessToken: Schema.Redacted<Schema.NonEmptyString>;
15
+ readonly refreshToken: Schema.Redacted<Schema.NonEmptyString>;
16
+ /** The ChatGPT account or workspace ID, sent as `ChatGPT-Account-ID`. */
17
+ readonly accountId: Schema.Option<Schema.NonEmptyString>;
18
+ /** The access token's `exp` claim, if it has one. */
19
+ readonly expiresAt: Schema.Option<Schema.DateTimeUtc>;
20
+ /** When the tokens were last refreshed, from `last_refresh`. */
21
+ readonly lastRefresh: Schema.Option<Schema.DateTimeUtc>;
22
+ }>, {}>;
23
+ /** A ChatGPT login's tokens as the Gateway holds them in memory. */
24
+ export declare class ChatGptTokens extends ChatGptTokens_base {
25
+ }
26
+ /** Returns the expiry in a JWT's `exp` claim, in seconds since the epoch. */
27
+ export declare const jwtExpiry: (jwt: string) => Option.Option<DateTime.Utc>;
28
+ /** Returns the ChatGPT account ID in an ID token's claims. */
29
+ export declare const idTokenAccount: (idToken: string) => Option.Option<string>;
30
+ /** Reads and parses the Codex `auth.json` at `path`. */
31
+ export declare const readAuthFile: (path: string) => Effect.Effect<ChatGptTokens, ChatGptAuthFileError, FileSystem.FileSystem>;
32
+ /**
33
+ * Writes rotated tokens into the Codex `auth.json` at `path` and sets `last_refresh`, keeping
34
+ * its other fields. Writes a temporary file with mode 0600 next to it and renames it over the
35
+ * file, so a reader sees either file whole, and removes the temporary file if that fails or is
36
+ * interrupted. Returns `false`, writing nothing, if the file's refresh token isn't one `owns`
37
+ * accepts, such as a login the operator copied in that the next reload reads.
38
+ */
39
+ export declare const writeAuthFile: (path: string, tokens: ChatGptTokens, idToken: Option.Option<string>, owns: (refreshToken: string) => boolean) => Effect.Effect<boolean, ChatGptAuthFileError, FileSystem.FileSystem>;
40
+ /**
41
+ * Checks that the Gateway can write the rotated tokens next to the auth file at `path`, by
42
+ * creating and removing a file there, so a missing write permission shows before the first
43
+ * refresh.
44
+ */
45
+ export declare const checkAuthFileWritable: (path: string) => Effect.Effect<void, ChatGptAuthFileError, FileSystem.FileSystem>;
46
+ export {};
47
+ //# sourceMappingURL=auth-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-file.d.ts","sourceRoot":"","sources":["../../src/chatgpt/auth-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAQ,UAAU,EAAE,MAAM,EAAoB,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;AAG9F;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,yBAOzC;CAAG;;;;IAQF,yEAAyE;;IAEzE,qDAAqD;;IAErD,gEAAgE;;;AARlE,oEAAoE;AACpE,qBAAa,aAAc,SAAQ,kBASjC;CAAG;AAmCL,6EAA6E;AAC7E,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAI/D,CAAC;AAEJ,8DAA8D;AAC9D,eAAO,MAAM,cAAc,YAAa,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAMlE,CAAC;AAiCJ,wDAAwD;AACxD,eAAO,MAAM,YAAY,6FAWvB,CAAC;AAKH;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,6FAIH,MAAM,KAAK,OAAO,wEAuCvC,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,oFAiBhC,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { DateTime, Effect, Exit, FileSystem, Option, Redacted, Result, Schema } from "effect";
2
+ import { Base64Url } from "effect/encoding";
3
+ /**
4
+ * The error when a ChatGPT login's `auth.json` can't be read or written, or isn't a Codex
5
+ * ChatGPT login. The message never contains a token.
6
+ */
7
+ export class ChatGptAuthFileError extends Schema.TaggedError()("ChatGptAuthFileError", {
8
+ path: Schema.String,
9
+ operation: Schema.Literals(["read", "write"]),
10
+ message: Schema.String,
11
+ }) {
12
+ }
13
+ const Token = Schema.Redacted(Schema.NonEmptyString);
14
+ /** A ChatGPT login's tokens as the Gateway holds them in memory. */
15
+ export class ChatGptTokens extends Schema.Class("@usine/gateway/ChatGptTokens")({
16
+ accessToken: Token,
17
+ refreshToken: Token,
18
+ /** The ChatGPT account or workspace ID, sent as `ChatGPT-Account-ID`. */
19
+ accountId: Schema.Option(Schema.NonEmptyString),
20
+ /** The access token's `exp` claim, if it has one. */
21
+ expiresAt: Schema.Option(Schema.DateTimeUtc),
22
+ /** When the tokens were last refreshed, from `last_refresh`. */
23
+ lastRefresh: Schema.Option(Schema.DateTimeUtc),
24
+ }) {
25
+ }
26
+ const JsonObject = Schema.Record(Schema.String, Schema.Json);
27
+ const decodeJsonObject = Schema.decodeUnknownOption(JsonObject);
28
+ const decodeAuthFileObject = Schema.decodeUnknownOption(Schema.fromJsonString(JsonObject));
29
+ /** The fields of Codex's `auth.json` that the Gateway reads; the others are kept as they are. */
30
+ const AuthFileFields = Schema.Struct({
31
+ tokens: Schema.Struct({
32
+ access_token: Schema.NonEmptyString,
33
+ refresh_token: Schema.NonEmptyString,
34
+ id_token: Schema.optionalKey(Schema.NullOr(Schema.String)),
35
+ account_id: Schema.optionalKey(Schema.NullOr(Schema.String)),
36
+ }),
37
+ last_refresh: Schema.optionalKey(Schema.NullOr(Schema.DateTimeUtcFromString)),
38
+ });
39
+ const decodeAuthFileFields = Schema.decodeUnknownOption(AuthFileFields);
40
+ const JwtClaims = Schema.fromJsonString(Schema.Struct({
41
+ exp: Schema.optionalKey(Schema.Number),
42
+ "https://api.openai.com/auth": Schema.optionalKey(Schema.Struct({ chatgpt_account_id: Schema.optionalKey(Schema.String) })),
43
+ }));
44
+ const decodeJwtClaims = Schema.decodeUnknownOption(JwtClaims);
45
+ /** Returns a JWT's claims without checking its signature, which only the issuer can. */
46
+ const jwtClaims = (jwt) => Option.fromNullishOr(jwt.split(".")[1]).pipe(Option.flatMap((payload) => Result.getSuccess(Base64Url.decodeString(payload))), Option.flatMap(decodeJwtClaims));
47
+ /** Returns the expiry in a JWT's `exp` claim, in seconds since the epoch. */
48
+ export const jwtExpiry = (jwt) => jwtClaims(jwt).pipe(Option.flatMap(({ exp }) => Option.fromNullishOr(exp)), Option.flatMap((seconds) => DateTime.make(seconds * 1000)));
49
+ /** Returns the ChatGPT account ID in an ID token's claims. */
50
+ export const idTokenAccount = (idToken) => jwtClaims(idToken).pipe(Option.flatMap((claims) => Option.fromNullishOr(claims["https://api.openai.com/auth"]?.chatgpt_account_id)), Option.filter((account) => account !== ""));
51
+ const nonEmpty = (value) => Option.fromNullishOr(value).pipe(Option.filter((text) => text !== ""));
52
+ /** Returns the tokens in the text of a Codex `auth.json`. */
53
+ const tokensFromAuthFile = (path, text) => {
54
+ const fields = decodeAuthFileObject(text).pipe(Option.flatMap(decodeAuthFileFields));
55
+ if (Option.isNone(fields))
56
+ return Result.fail(new ChatGptAuthFileError({
57
+ path,
58
+ operation: "read",
59
+ message: `${path} isn't a Codex ChatGPT login: it needs tokens.access_token and tokens.refresh_token, as codex login writes them.`,
60
+ }));
61
+ const { tokens, last_refresh } = fields.value;
62
+ return Result.succeed(new ChatGptTokens({
63
+ accessToken: Redacted.make(tokens.access_token),
64
+ refreshToken: Redacted.make(tokens.refresh_token),
65
+ accountId: nonEmpty(tokens.account_id).pipe(Option.orElse(() => nonEmpty(tokens.id_token).pipe(Option.flatMap(idTokenAccount)))),
66
+ expiresAt: jwtExpiry(tokens.access_token),
67
+ lastRefresh: Option.fromNullishOr(last_refresh),
68
+ }));
69
+ };
70
+ /** Reads and parses the Codex `auth.json` at `path`. */
71
+ export const readAuthFile = Effect.fn("ChatGptAuthFile.read")(function* (path) {
72
+ yield* Effect.annotateCurrentSpan({ authFile: path });
73
+ const fs = yield* FileSystem.FileSystem;
74
+ const text = yield* fs
75
+ .readFileString(path)
76
+ .pipe(Effect.mapError((error) => new ChatGptAuthFileError({ path, operation: "read", message: error.message })));
77
+ return yield* Effect.fromResult(tokensFromAuthFile(path, text));
78
+ });
79
+ /** Returns the path of a new temporary file next to `path`. */
80
+ const besides = (path, suffix) => `${path}.${crypto.randomUUID()}.${suffix}`;
81
+ /**
82
+ * Writes rotated tokens into the Codex `auth.json` at `path` and sets `last_refresh`, keeping
83
+ * its other fields. Writes a temporary file with mode 0600 next to it and renames it over the
84
+ * file, so a reader sees either file whole, and removes the temporary file if that fails or is
85
+ * interrupted. Returns `false`, writing nothing, if the file's refresh token isn't one `owns`
86
+ * accepts, such as a login the operator copied in that the next reload reads.
87
+ */
88
+ export const writeAuthFile = Effect.fn("ChatGptAuthFile.write")(function* (path, tokens, idToken, owns) {
89
+ yield* Effect.annotateCurrentSpan({ authFile: path });
90
+ const fs = yield* FileSystem.FileSystem;
91
+ const failed = (message) => new ChatGptAuthFileError({ path, operation: "write", message });
92
+ const text = yield* fs
93
+ .readFileString(path)
94
+ .pipe(Effect.mapError((error) => failed(error.message)));
95
+ const current = yield* Effect.fromOption(decodeAuthFileObject(text)).pipe(Effect.mapError(() => failed(`${path} is no longer a JSON object, so it wasn't replaced.`)));
96
+ const inFile = decodeAuthFileFields(current).pipe(Option.map(({ tokens: held }) => held.refresh_token));
97
+ if (!Option.exists(inFile, owns))
98
+ return false;
99
+ const previousTokens = Option.getOrElse(decodeJsonObject(current.tokens), () => ({}));
100
+ const next = {
101
+ ...current,
102
+ tokens: {
103
+ ...previousTokens,
104
+ access_token: Redacted.value(tokens.accessToken),
105
+ refresh_token: Redacted.value(tokens.refreshToken),
106
+ ...Option.match(idToken, { onNone: () => ({}), onSome: (id_token) => ({ id_token }) }),
107
+ },
108
+ last_refresh: Option.match(tokens.lastRefresh, {
109
+ onNone: () => current.last_refresh ?? null,
110
+ onSome: DateTime.formatIso,
111
+ }),
112
+ };
113
+ const temporary = besides(path, "tmp");
114
+ yield* fs.writeFileString(temporary, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 }).pipe(Effect.andThen(fs.rename(temporary, path)), Effect.onExit((exit) => Exit.isSuccess(exit) ? Effect.void : fs.remove(temporary).pipe(Effect.ignore)), Effect.mapError((error) => failed(error.message)));
115
+ return true;
116
+ });
117
+ /**
118
+ * Checks that the Gateway can write the rotated tokens next to the auth file at `path`, by
119
+ * creating and removing a file there, so a missing write permission shows before the first
120
+ * refresh.
121
+ */
122
+ export const checkAuthFileWritable = Effect.fn("ChatGptAuthFile.checkWritable")(function* (path) {
123
+ yield* Effect.annotateCurrentSpan({ authFile: path });
124
+ const fs = yield* FileSystem.FileSystem;
125
+ const probe = besides(path, "check");
126
+ yield* fs.writeFileString(probe, "", { mode: 0o600 }).pipe(Effect.andThen(fs.remove(probe)), Effect.mapError((error) => new ChatGptAuthFileError({
127
+ path,
128
+ operation: "write",
129
+ message: `The gateway can't write next to ${path}, so it couldn't save a refreshed login: ${error.message}`,
130
+ })));
131
+ });
132
+ //# sourceMappingURL=auth-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-file.js","sourceRoot":"","sources":["../../src/chatgpt/auth-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { Context, Effect, FileSystem, Layer, Schema } from "effect";
2
+ import { HttpClient } from "effect/http";
3
+ import type { ChatGptAccess, ChatGptLogin } from "../llm/llm.ts";
4
+ import { type ChatGptAuthFileError } from "./auth-file.ts";
5
+ /** The OAuth token endpoint that Codex refreshes ChatGPT logins at. */
6
+ export declare const CHATGPT_TOKEN_URL = "https://auth.openai.com/oauth/token";
7
+ declare const ChatGptLoginUnavailable_base: Schema.Class<ChatGptLoginUnavailable, Schema.TaggedStruct<"ChatGptLoginUnavailable", {
8
+ readonly authFile: Schema.String;
9
+ readonly reason: Schema.Literals<readonly ["unreadable", "refresh-failed", "refresh-rejected"]>;
10
+ readonly message: Schema.String;
11
+ }>, import("effect/Cause").YieldableError>;
12
+ /**
13
+ * The error for a request whose ChatGPT login has no usable access token: the auth file can't
14
+ * be read (`unreadable`), a refresh failed and is tried again after a short backoff
15
+ * (`refresh-failed`), or the token endpoint rejected the refresh token, which only a new login
16
+ * fixes (`refresh-rejected`). The message names no token and no text from the token endpoint.
17
+ * The reverse proxy answers 401 for `refresh-rejected`, and otherwise 503, which Codex retries.
18
+ */
19
+ export declare class ChatGptLoginUnavailable extends ChatGptLoginUnavailable_base {
20
+ }
21
+ declare const ChatGptLogins_base: Context.ServiceClass<ChatGptLogins, "@usine/gateway/ChatGptLogins", {
22
+ /**
23
+ * Returns the login's access token and account. Reads the auth file on first use, and
24
+ * refreshes first if the token expires within five minutes or the upstream refused it.
25
+ * Requests that need a refresh share one; it runs in the service's scope, so a request
26
+ * that ends doesn't stop it between the token endpoint's rotation and the write-back.
27
+ */
28
+ readonly access: (login: ChatGptLogin) => Effect.Effect<ChatGptAccess, ChatGptLoginUnavailable>;
29
+ /**
30
+ * Records that the upstream refused `access` with 401, so the next request refreshes first,
31
+ * unless this process refreshed it less than a minute ago.
32
+ */
33
+ readonly refused: (login: ChatGptLogin, access: ChatGptAccess) => Effect.Effect<void>;
34
+ /**
35
+ * Reads the login's auth file again. Keeps the tokens in memory if the file has their
36
+ * refresh token or one they replaced, and otherwise uses the file's login.
37
+ */
38
+ readonly reload: (login: ChatGptLogin) => Effect.Effect<void, ChatGptAuthFileError>;
39
+ }>;
40
+ /**
41
+ * The ChatGPT logins the Gateway holds, keyed by auth file. Each login's tokens stay in memory;
42
+ * an access token is refreshed before it expires, one refresh at a time, and the rotated tokens
43
+ * are written back to the auth file. A request never gets an access token that a failed
44
+ * refresh should have replaced.
45
+ */
46
+ export declare class ChatGptLogins extends ChatGptLogins_base {
47
+ static readonly layer: Layer.Layer<ChatGptLogins, never, FileSystem.FileSystem | HttpClient.HttpClient>;
48
+ }
49
+ export {};
50
+ //# sourceMappingURL=logins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logins.d.ts","sourceRoot":"","sources":["../../src/chatgpt/logins.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAGP,MAAM,EAEN,UAAU,EACV,KAAK,EAIL,MAAM,EAGP,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EACL,KAAK,oBAAoB,EAM1B,MAAM,gBAAgB,CAAC;AAExB,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,wCAAwC,CAAC;;;;;;AA2BvE;;;;;;GAMG;AACH,qBAAa,uBAAwB,SAAQ,4BAO5C;CAAG;;IA4HA;;;;;OAKG;qBACc,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;IAC/F;;;OAGG;sBACe,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACrF;;;OAGG;qBACc,CAAC,KAAK,EAAE,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC;;AAzBvF;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,kBAqBA;IACjC,MAAM,CAAC,QAAQ,CAAC,KAAK,mFAiTnB;CACH"}