cyrus-config-updater 0.2.63 → 0.2.64-test.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.
@@ -52,6 +52,10 @@ export declare class ConfigUpdater {
52
52
  * Handle MCP server configuration
53
53
  */
54
54
  private handleConfigureMcpRoute;
55
+ /**
56
+ * Handle GitHub installation tokens push
57
+ */
58
+ private handleGitHubTokensRoute;
55
59
  /**
56
60
  * Handle GitHub CLI check
57
61
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigUpdater.d.ts","sourceRoot":"","sources":["../src/ConfigUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA+B/C;;;;;;;GAOG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAe;gBAG/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,MAAM;IAOxB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAqBhB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;YACW,sBAAsB;IAapC;;OAEG;YACW,mBAAmB;IAajC;;OAEG;YACW,qBAAqB;IAMnC;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;YACW,uBAAuB;IAMrC;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;YACW,oBAAoB;IAMlC;;OAEG;YACW,2BAA2B;IAMzC;;OAEG;YACW,sBAAsB;IAMpC;;OAEG;YACW,sBAAsB;IAMpC;;OAEG;YACW,qBAAqB;CAKnC"}
1
+ {"version":3,"file":"ConfigUpdater.d.ts","sourceRoot":"","sources":["../src/ConfigUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAiC/C;;;;;;;GAOG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAe;gBAG/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,MAAM;IAOxB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAyBhB;;OAEG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;YACW,sBAAsB;IAapC;;OAEG;YACW,mBAAmB;IAajC;;OAEG;YACW,qBAAqB;IAMnC;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;YACW,uBAAuB;IAMrC;;OAEG;YACW,uBAAuB;IAMrC;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;YACW,oBAAoB;IAMlC;;OAEG;YACW,2BAA2B;IAMzC;;OAEG;YACW,sBAAsB;IAMpC;;OAEG;YACW,sBAAsB;IAMpC;;OAEG;YACW,qBAAqB;CAKnC"}
@@ -3,6 +3,7 @@ import { handleCheckGlab } from "./handlers/checkGlab.js";
3
3
  import { handleConfigureMcp } from "./handlers/configureMcp.js";
4
4
  import { handleCyrusConfig } from "./handlers/cyrusConfig.js";
5
5
  import { handleCyrusEnv } from "./handlers/cyrusEnv.js";
6
+ import { handleGitHubTokens } from "./handlers/githubTokens.js";
6
7
  import { handleRepository, handleRepositoryDelete, } from "./handlers/repository.js";
7
8
  import { handleDeleteSkill, handleListSkills, handleUpdateSkill, } from "./handlers/skills.js";
8
9
  import { handleTestMcp } from "./handlers/testMcp.js";
@@ -34,6 +35,7 @@ export class ConfigUpdater {
34
35
  this.registerDeleteRoute("/api/update/repository", this.handleRepositoryDeleteRoute);
35
36
  this.registerRoute("/api/update/test-mcp", this.handleTestMcpRoute);
36
37
  this.registerRoute("/api/update/configure-mcp", this.handleConfigureMcpRoute);
38
+ this.registerRoute("/api/update/github-tokens", this.handleGitHubTokensRoute);
37
39
  this.registerRoute("/api/check-gh", this.handleCheckGhRoute);
38
40
  this.registerRoute("/api/check-glab", this.handleCheckGlabRoute);
39
41
  this.registerRoute("/api/update/skill", this.handleUpdateSkillRoute);
@@ -172,6 +174,12 @@ export class ConfigUpdater {
172
174
  async handleConfigureMcpRoute(payload) {
173
175
  return handleConfigureMcp(payload, this.cyrusHome);
174
176
  }
177
+ /**
178
+ * Handle GitHub installation tokens push
179
+ */
180
+ async handleGitHubTokensRoute(payload) {
181
+ return handleGitHubTokens(payload, this.cyrusHome);
182
+ }
175
183
  /**
176
184
  * Handle GitHub CLI check
177
185
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigUpdater.js","sourceRoot":"","sources":["../src/ConfigUpdater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConfigUpdater.js","sourceRoot":"","sources":["../src/ConfigUpdater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type ApiResponse } from "../types.js";
2
+ /**
3
+ * Install the Cyrus git credential helper and wire it into the global git
4
+ * config for github.com. Idempotent — safe to run on every token push and
5
+ * on EdgeWorker startup.
6
+ *
7
+ * - Copies the self-contained helper script to
8
+ * `<cyrusHome>/scripts/git-credential-cyrus.cjs` (executable).
9
+ * - Enables `credential."https://github.com".useHttpPath` so git passes the
10
+ * repo path (and thus the org) to the helper.
11
+ * - Replaces any inherited helpers for github.com (e.g. gh's keyring helper)
12
+ * with an empty entry followed by the Cyrus helper. Helper values must be
13
+ * prefixed with `!` to invoke an arbitrary command — without it git would
14
+ * look for a `git credential-<name>` binary.
15
+ *
16
+ * Returns the absolute path of the installed helper script.
17
+ */
18
+ export declare function ensureGitHubCredentialHelper(cyrusHome: string): string;
19
+ /**
20
+ * Handle a GitHub installation tokens push from cyrus-hosted.
21
+ *
22
+ * Persists the per-installation tokens to `<cyrusHome>/github-tokens.json`
23
+ * (atomically, mode 0600) and ensures the git credential helper is
24
+ * installed so concurrent git operations against different GitHub orgs
25
+ * each authenticate with the right token.
26
+ *
27
+ * @param rawPayload - Unvalidated payload from the request
28
+ * @param cyrusHome - Path to the Cyrus home directory
29
+ */
30
+ export declare function handleGitHubTokens(rawPayload: unknown, cyrusHome: string): Promise<ApiResponse>;
31
+ //# sourceMappingURL=githubTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"githubTokens.d.ts","sourceRoot":"","sources":["../../src/handlers/githubTokens.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,KAAK,WAAW,EAGhB,MAAM,aAAa,CAAC;AAUrB;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA6BtE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CA4CtB"}
@@ -0,0 +1,110 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import { chmodSync, copyFileSync, mkdirSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { GitHubTokenStore } from "cyrus-core";
6
+ import { GitHubTokensPayloadSchema, } from "../types.js";
7
+ /** Path of the bundled credential helper script within this package */
8
+ function bundledHelperPath() {
9
+ // Resolves from both src/handlers (tests) and dist/handlers (published)
10
+ // to <package root>/scripts/git-credential-cyrus.cjs.
11
+ const here = dirname(fileURLToPath(import.meta.url));
12
+ return join(here, "..", "..", "scripts", "git-credential-cyrus.cjs");
13
+ }
14
+ /**
15
+ * Install the Cyrus git credential helper and wire it into the global git
16
+ * config for github.com. Idempotent — safe to run on every token push and
17
+ * on EdgeWorker startup.
18
+ *
19
+ * - Copies the self-contained helper script to
20
+ * `<cyrusHome>/scripts/git-credential-cyrus.cjs` (executable).
21
+ * - Enables `credential."https://github.com".useHttpPath` so git passes the
22
+ * repo path (and thus the org) to the helper.
23
+ * - Replaces any inherited helpers for github.com (e.g. gh's keyring helper)
24
+ * with an empty entry followed by the Cyrus helper. Helper values must be
25
+ * prefixed with `!` to invoke an arbitrary command — without it git would
26
+ * look for a `git credential-<name>` binary.
27
+ *
28
+ * Returns the absolute path of the installed helper script.
29
+ */
30
+ export function ensureGitHubCredentialHelper(cyrusHome) {
31
+ const scriptDir = join(cyrusHome, "scripts");
32
+ const scriptDest = join(scriptDir, "git-credential-cyrus.cjs");
33
+ mkdirSync(scriptDir, { recursive: true });
34
+ copyFileSync(bundledHelperPath(), scriptDest);
35
+ chmodSync(scriptDest, 0o755);
36
+ const credentialKey = "credential.https://github.com";
37
+ const git = (args) => {
38
+ execFileSync("git", args, { stdio: "ignore" });
39
+ };
40
+ // Pass the repo path to the helper so it can resolve the org.
41
+ git(["config", "--global", `${credentialKey}.useHttpPath`, "true"]);
42
+ // Clear inherited helpers (an empty value resets git's helper list for
43
+ // this key). --replace-all also makes repeated runs idempotent: every
44
+ // call ends with exactly ["", "!node <script>"].
45
+ git(["config", "--global", "--replace-all", `${credentialKey}.helper`, ""]);
46
+ // Quote the script path — helper commands are run through the shell.
47
+ git([
48
+ "config",
49
+ "--global",
50
+ "--add",
51
+ `${credentialKey}.helper`,
52
+ `!node "${scriptDest}"`,
53
+ ]);
54
+ return scriptDest;
55
+ }
56
+ /**
57
+ * Handle a GitHub installation tokens push from cyrus-hosted.
58
+ *
59
+ * Persists the per-installation tokens to `<cyrusHome>/github-tokens.json`
60
+ * (atomically, mode 0600) and ensures the git credential helper is
61
+ * installed so concurrent git operations against different GitHub orgs
62
+ * each authenticate with the right token.
63
+ *
64
+ * @param rawPayload - Unvalidated payload from the request
65
+ * @param cyrusHome - Path to the Cyrus home directory
66
+ */
67
+ export async function handleGitHubTokens(rawPayload, cyrusHome) {
68
+ const parseResult = GitHubTokensPayloadSchema.safeParse(rawPayload);
69
+ if (!parseResult.success) {
70
+ const firstIssue = parseResult.error.issues[0];
71
+ const path = firstIssue?.path.join(".") || "unknown";
72
+ const message = firstIssue?.message || "Invalid payload";
73
+ return {
74
+ success: false,
75
+ error: "GitHub tokens payload validation failed",
76
+ details: `${path}: ${message}`,
77
+ };
78
+ }
79
+ const payload = parseResult.data;
80
+ // Persist the tokens first — even if git configuration fails below, the
81
+ // EdgeWorker can still resolve tokens from the store for API calls.
82
+ try {
83
+ new GitHubTokenStore(cyrusHome).save(payload.tokens);
84
+ }
85
+ catch (error) {
86
+ return {
87
+ success: false,
88
+ error: "Failed to save GitHub tokens",
89
+ details: error instanceof Error ? error.message : String(error),
90
+ };
91
+ }
92
+ try {
93
+ ensureGitHubCredentialHelper(cyrusHome);
94
+ }
95
+ catch (error) {
96
+ return {
97
+ success: false,
98
+ error: "Failed to configure git credential helper",
99
+ details: error instanceof Error ? error.message : String(error),
100
+ };
101
+ }
102
+ return {
103
+ success: true,
104
+ message: "GitHub installation tokens updated successfully",
105
+ data: {
106
+ tokensCount: payload.tokens.length,
107
+ },
108
+ };
109
+ }
110
+ //# sourceMappingURL=githubTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"githubTokens.js","sourceRoot":"","sources":["../../src/handlers/githubTokens.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export { ConfigUpdater } from "./ConfigUpdater.js";
2
+ export { ensureGitHubCredentialHelper, handleGitHubTokens, } from "./handlers/githubTokens.js";
2
3
  export * from "./types.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACN,4BAA4B,EAC5B,kBAAkB,GAClB,MAAM,4BAA4B,CAAC;AACpC,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { ConfigUpdater } from "./ConfigUpdater.js";
2
+ export { ensureGitHubCredentialHelper, handleGitHubTokens, } from "./handlers/githubTokens.js";
2
3
  export * from "./types.js";
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACN,4BAA4B,EAC5B,kBAAkB,GAClB,MAAM,4BAA4B,CAAC;AACpC,cAAc,YAAY,CAAC"}
package/dist/types.d.ts CHANGED
@@ -263,6 +263,24 @@ export interface CheckGlabData {
263
263
  isInstalled: boolean;
264
264
  isAuthenticated: boolean;
265
265
  }
266
+ /**
267
+ * GitHub installation tokens push payload schema.
268
+ * Sent by cyrus-hosted with one short-lived GitHub App installation token
269
+ * per installation (org or user account) the team has attached.
270
+ */
271
+ export declare const GitHubTokensPayloadSchema: z.ZodObject<{
272
+ tokens: z.ZodArray<z.ZodObject<{
273
+ installationId: z.ZodString;
274
+ organization: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
275
+ accountType: z.ZodDefault<z.ZodOptional<z.ZodNullable<z.ZodEnum<{
276
+ Organization: "Organization";
277
+ User: "User";
278
+ }>>>>;
279
+ token: z.ZodString;
280
+ expiresAt: z.ZodString;
281
+ }, z.core.$strip>>;
282
+ }, z.core.$strip>;
283
+ export type GitHubTokensPayload = z.infer<typeof GitHubTokensPayloadSchema>;
266
284
  /**
267
285
  * Error response to send back to cyrus-hosted
268
286
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -10,4 +10,22 @@ export const CyrusConfigPayloadSchema = EdgeConfigPayloadSchema.extend({
10
10
  restartCyrus: z.boolean().optional(),
11
11
  backupConfig: z.boolean().optional(),
12
12
  });
13
+ /**
14
+ * GitHub installation tokens push payload schema.
15
+ * Sent by cyrus-hosted with one short-lived GitHub App installation token
16
+ * per installation (org or user account) the team has attached.
17
+ */
18
+ export const GitHubTokensPayloadSchema = z.object({
19
+ tokens: z.array(z.object({
20
+ installationId: z.string().min(1),
21
+ organization: z.string().nullable().optional().default(null),
22
+ accountType: z
23
+ .enum(["Organization", "User"])
24
+ .nullable()
25
+ .optional()
26
+ .default(null),
27
+ token: z.string().min(1),
28
+ expiresAt: z.string().min(1),
29
+ })),
30
+ });
13
31
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACtE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACtE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAwEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,KAAK,CACd,CAAC,CAAC,MAAM,CAAC;QACR,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC5D,WAAW,EAAE,CAAC;aACZ,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;aAC9B,QAAQ,EAAE;aACV,QAAQ,EAAE;aACV,OAAO,CAAC,IAAI,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5B,CAAC,CACF;CACD,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyrus-config-updater",
3
- "version": "0.2.63",
3
+ "version": "0.2.64-test.0",
4
4
  "description": "Configuration update handlers for Cyrus agent",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,13 +12,14 @@
12
12
  }
13
13
  },
14
14
  "files": [
15
- "dist"
15
+ "dist",
16
+ "scripts"
16
17
  ],
17
18
  "dependencies": {
18
19
  "@modelcontextprotocol/sdk": "^1.29.0",
19
20
  "fastify": "^5.8.5",
20
21
  "zod": "^4.3.6",
21
- "cyrus-core": "0.2.63"
22
+ "cyrus-core": "0.2.64-test.0"
22
23
  },
23
24
  "devDependencies": {
24
25
  "@types/node": "^20.12.7",
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * git-credential-cyrus — git credential helper for multi-org GitHub access.
4
+ *
5
+ * Self-contained Node script (no dependencies). Installed by Cyrus at
6
+ * `<cyrusHome>/scripts/git-credential-cyrus.cjs` and wired into git via:
7
+ *
8
+ * git config --global credential."https://github.com".useHttpPath true
9
+ * git config --global --replace-all credential."https://github.com".helper ""
10
+ * git config --global --add credential."https://github.com".helper "!node <this file>"
11
+ *
12
+ * For `get` operations against github.com it looks up the org (first path
13
+ * segment) in `<cyrusHome>/github-tokens.json` — the per-installation
14
+ * GitHub App tokens pushed by cyrus-hosted — and prints credentials for a
15
+ * case-insensitive org match. If no org matches but exactly one non-expired
16
+ * token exists, that token is used. Otherwise it prints nothing and exits 0
17
+ * so git falls through to other helpers / prompts.
18
+ */
19
+ "use strict";
20
+
21
+ const fs = require("node:fs");
22
+ const os = require("node:os");
23
+ const path = require("node:path");
24
+
25
+ function main() {
26
+ // Only the `get` operation produces credentials; `store`/`erase` are no-ops.
27
+ if (process.argv[2] !== "get") return;
28
+
29
+ let input = "";
30
+ try {
31
+ input = fs.readFileSync(0, "utf8");
32
+ } catch {
33
+ return;
34
+ }
35
+
36
+ const attrs = {};
37
+ for (const line of input.split("\n")) {
38
+ const idx = line.indexOf("=");
39
+ if (idx > 0) {
40
+ attrs[line.slice(0, idx)] = line.slice(idx + 1);
41
+ }
42
+ }
43
+
44
+ if ((attrs.host || "").toLowerCase() !== "github.com") return;
45
+
46
+ // With credential.useHttpPath=true git sends e.g. path=owner/repo.git
47
+ const org = (attrs.path || "").split("/")[0] || "";
48
+
49
+ const cyrusHome = process.env.CYRUS_HOME || path.join(os.homedir(), ".cyrus");
50
+ const tokensFile = path.join(cyrusHome, "github-tokens.json");
51
+
52
+ let tokens = [];
53
+ try {
54
+ const parsed = JSON.parse(fs.readFileSync(tokensFile, "utf8"));
55
+ if (Array.isArray(parsed.tokens)) tokens = parsed.tokens;
56
+ } catch {
57
+ return;
58
+ }
59
+
60
+ const now = Date.now();
61
+ const valid = tokens.filter((t) => {
62
+ if (!t || typeof t.token !== "string" || t.token.length === 0) return false;
63
+ const expiresAt = Date.parse(t.expiresAt);
64
+ return !Number.isNaN(expiresAt) && expiresAt > now;
65
+ });
66
+
67
+ let match;
68
+ if (org) {
69
+ const lowered = org.toLowerCase();
70
+ match = valid.find(
71
+ (t) =>
72
+ typeof t.organization === "string" &&
73
+ t.organization.toLowerCase() === lowered,
74
+ );
75
+ }
76
+ if (!match && valid.length === 1) {
77
+ match = valid[0];
78
+ }
79
+ if (!match) return;
80
+
81
+ process.stdout.write(`username=x-access-token\npassword=${match.token}\n`);
82
+ }
83
+
84
+ main();