@vymalo/opencode-oauth2 0.14.1 → 0.15.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 (47) hide show
  1. package/dist/cache.d.ts +14 -3
  2. package/dist/cache.js +32 -86
  3. package/dist/cache.js.map +1 -1
  4. package/dist/config.d.ts +3 -37
  5. package/dist/config.js +39 -136
  6. package/dist/config.js.map +1 -1
  7. package/dist/lib.d.ts +2 -2
  8. package/dist/lib.js +1 -1
  9. package/dist/lib.js.map +1 -1
  10. package/dist/model-discovery.d.ts +2 -2
  11. package/dist/model-discovery.js +1 -1
  12. package/dist/opencode.d.ts +1 -1
  13. package/dist/opencode.js +1 -1
  14. package/dist/opencode.js.map +1 -1
  15. package/dist/plugin.d.ts +4 -2
  16. package/dist/plugin.js +62 -31
  17. package/dist/plugin.js.map +1 -1
  18. package/dist/scheduler.d.ts +1 -1
  19. package/dist/types.d.ts +1 -7
  20. package/package.json +3 -2
  21. package/dist/logging.d.ts +0 -13
  22. package/dist/logging.js +0 -64
  23. package/dist/logging.js.map +0 -1
  24. package/dist/oauth/browser.d.ts +0 -1
  25. package/dist/oauth/browser.js +0 -33
  26. package/dist/oauth/browser.js.map +0 -1
  27. package/dist/oauth/client.d.ts +0 -56
  28. package/dist/oauth/client.js +0 -424
  29. package/dist/oauth/client.js.map +0 -1
  30. package/dist/oauth/device-code.d.ts +0 -28
  31. package/dist/oauth/device-code.js +0 -247
  32. package/dist/oauth/device-code.js.map +0 -1
  33. package/dist/oauth/discovery.d.ts +0 -8
  34. package/dist/oauth/discovery.js +0 -38
  35. package/dist/oauth/discovery.js.map +0 -1
  36. package/dist/oauth/http-utils.d.ts +0 -33
  37. package/dist/oauth/http-utils.js +0 -118
  38. package/dist/oauth/http-utils.js.map +0 -1
  39. package/dist/oauth/local-callback.d.ts +0 -10
  40. package/dist/oauth/local-callback.js +0 -84
  41. package/dist/oauth/local-callback.js.map +0 -1
  42. package/dist/oauth/pkce.d.ts +0 -5
  43. package/dist/oauth/pkce.js +0 -17
  44. package/dist/oauth/pkce.js.map +0 -1
  45. package/dist/oauth/subject-token.d.ts +0 -20
  46. package/dist/oauth/subject-token.js +0 -81
  47. package/dist/oauth/subject-token.js.map +0 -1
@@ -1,81 +0,0 @@
1
- import { readFile } from "node:fs/promises";
2
- import { DEFAULT_K8S_SA_TOKEN_PATH } from "../config.js";
3
- import { readResponseBodyPreview, scrubSecrets } from "./http-utils.js";
4
- /**
5
- * Read the platform-supplied JWT that the plugin will present as the subject
6
- * token (or assertion) for the `jwt_bearer` and `token_exchange` flows.
7
- *
8
- * Each source resolves fresh on every call — we never cache the JWT itself,
9
- * only the OIDC access token it gets exchanged for. K8s projected SA tokens
10
- * rotate; GHA OIDC tokens are short-lived (~10 min); both are cheap to
11
- * re-fetch on demand.
12
- */
13
- export async function resolveSubjectToken(source, options = {}) {
14
- switch (source.type) {
15
- case "github_actions": return resolveGithubActionsToken(source.audience, options);
16
- case "kubernetes_sa": return readJwtFile(source.tokenPath ?? DEFAULT_K8S_SA_TOKEN_PATH, "kubernetes_sa");
17
- case "file": return readJwtFile(source.path, "file");
18
- case "env": return resolveEnvToken(source.var, options.env ?? process.env);
19
- }
20
- }
21
- async function readJwtFile(path, sourceLabel) {
22
- let raw;
23
- try {
24
- raw = await readFile(path, "utf8");
25
- } catch (error) {
26
- const code = error.code;
27
- if (code === "ENOENT") {
28
- throw new Error(`subjectTokenSource (${sourceLabel}): no file at ${path} — check the mount/path`);
29
- }
30
- throw new Error(`subjectTokenSource (${sourceLabel}): failed to read ${path}: ${error instanceof Error ? error.message : String(error)}`);
31
- }
32
- const trimmed = raw.trim();
33
- if (trimmed.length === 0) {
34
- throw new Error(`subjectTokenSource (${sourceLabel}): file at ${path} is empty`);
35
- }
36
- return trimmed;
37
- }
38
- function resolveEnvToken(name, env) {
39
- const value = env[name];
40
- if (typeof value !== "string" || value.trim().length === 0) {
41
- throw new Error(`subjectTokenSource (env): ${name} is not set or is empty`);
42
- }
43
- return value.trim();
44
- }
45
- async function resolveGithubActionsToken(audience, options) {
46
- const env = options.env ?? process.env;
47
- const requestUrl = env.ACTIONS_ID_TOKEN_REQUEST_URL;
48
- const requestToken = env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;
49
- if (!requestUrl || !requestToken) {
50
- throw new Error(`subjectTokenSource (github_actions): ACTIONS_ID_TOKEN_REQUEST_URL and ACTIONS_ID_TOKEN_REQUEST_TOKEN must be set — this only works inside a GitHub Actions job with \`permissions: { id-token: write }\``);
51
- }
52
- const url = new URL(requestUrl);
53
- url.searchParams.set("audience", audience);
54
- const fetchImpl = options.fetchImpl ?? fetch;
55
- const controller = new AbortController();
56
- const timer = setTimeout(() => controller.abort(), options.timeoutMs ?? 15e3);
57
- let response;
58
- try {
59
- response = await fetchImpl(url.toString(), {
60
- method: "GET",
61
- headers: {
62
- Authorization: `Bearer ${requestToken}`,
63
- Accept: "application/json"
64
- },
65
- signal: controller.signal
66
- });
67
- } finally {
68
- clearTimeout(timer);
69
- }
70
- if (!response.ok) {
71
- const preview = await readResponseBodyPreview(response, 500);
72
- throw new Error(`subjectTokenSource (github_actions): OIDC token request failed (${response.status})${preview ? `: ${scrubSecrets(preview)}` : ""}`);
73
- }
74
- const payload = await response.json();
75
- if (typeof payload.value !== "string" || payload.value.length === 0) {
76
- throw new Error("subjectTokenSource (github_actions): response had no `value` field — GitHub may have changed the API shape");
77
- }
78
- return payload.value;
79
- }
80
-
81
- //# sourceMappingURL=subject-token.js.map
@@ -1 +0,0 @@
1
- {"mappings":"AAAA,SAAS,gBAAgB;AAEzB,SAAS,iCAA0D;AACnE,SAAS,yBAAyB,oBAAoB;;;;;;;;;;AAqBtD,OAAO,eAAe,oBACpB,QACA,UAAsC,CAAC,GACtB;CACjB,QAAQ,OAAO,MAAf;EACE,KAAK,kBACH,OAAO,0BAA0B,OAAO,UAAU,OAAO;EAC3D,KAAK,iBACH,OAAO,YAAY,OAAO,aAAa,2BAA2B,eAAe;EACnF,KAAK,QACH,OAAO,YAAY,OAAO,MAAM,MAAM;EACxC,KAAK,OACH,OAAO,gBAAgB,OAAO,KAAK,QAAQ,OAAO,QAAQ,GAAG;CACjE;AACF;AAEA,eAAe,YAAY,MAAc,aAAsC;CAC7E,IAAI;CACJ,IAAI;EACF,MAAM,MAAM,SAAS,MAAM,MAAM;CACnC,SAAS,OAAO;EACd,MAAM,OAAQ,MAAgC;EAC9C,IAAI,SAAS,UAAU;GACrB,MAAM,IAAI,MACR,uBAAuB,YAAY,gBAAgB,KAAK,wBAC1D;EACF;EACA,MAAM,IAAI,MACR,uBAAuB,YAAY,oBAAoB,KAAK,IAC1D,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAEzD;CACF;CACA,MAAM,UAAU,IAAI,KAAK;CACzB,IAAI,QAAQ,WAAW,GAAG;EACxB,MAAM,IAAI,MAAM,uBAAuB,YAAY,aAAa,KAAK,UAAU;CACjF;CACA,OAAO;AACT;AAEA,SAAS,gBAAgB,MAAc,KAAiD;CACtF,MAAM,QAAQ,IAAI;CAClB,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,CAAC,CAAC,WAAW,GAAG;EAC1D,MAAM,IAAI,MAAM,6BAA6B,KAAK,wBAAwB;CAC5E;CACA,OAAO,MAAM,KAAK;AACpB;AAEA,eAAe,0BACb,UACA,SACiB;CACjB,MAAM,MAAM,QAAQ,OAAO,QAAQ;CACnC,MAAM,aAAa,IAAI;CACvB,MAAM,eAAe,IAAI;CAEzB,IAAI,CAAC,cAAc,CAAC,cAAc;EAChC,MAAM,IAAI,MACR,0MACF;CACF;CAEA,MAAM,MAAM,IAAI,IAAI,UAAU;CAC9B,IAAI,aAAa,IAAI,YAAY,QAAQ;CAEzC,MAAM,YAAY,QAAQ,aAAa;CACvC,MAAM,aAAa,IAAI,gBAAgB;CACvC,MAAM,QAAQ,iBAAiB,WAAW,MAAM,GAAG,QAAQ,aAAa,IAAM;CAE9E,IAAI;CACJ,IAAI;EACF,WAAW,MAAM,UAAU,IAAI,SAAS,GAAG;GACzC,QAAQ;GACR,SAAS;IACP,eAAe,UAAU;IACzB,QAAQ;GACV;GACA,QAAQ,WAAW;EACrB,CAAC;CACH,UAAU;EACR,aAAa,KAAK;CACpB;CAEA,IAAI,CAAC,SAAS,IAAI;EAChB,MAAM,UAAU,MAAM,wBAAwB,UAAU,GAAG;EAC3D,MAAM,IAAI,MACR,mEAAmE,SAAS,OAAO,GACjF,UAAU,KAAK,aAAa,OAAO,MAAM,IAE7C;CACF;CAEA,MAAM,UAAW,MAAM,SAAS,KAAK;CACrC,IAAI,OAAO,QAAQ,UAAU,YAAY,QAAQ,MAAM,WAAW,GAAG;EACnE,MAAM,IAAI,MACR,4GACF;CACF;CACA,OAAO,QAAQ;AACjB","names":[],"sources":["../../src/oauth/subject-token.ts"],"version":3,"file":"subject-token.js","sourceRoot":""}