@generacy-ai/control-plane 0.5.0 → 0.7.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 (67) hide show
  1. package/README.md +5 -0
  2. package/dist/bin/control-plane.js +38 -0
  3. package/dist/bin/control-plane.js.map +1 -1
  4. package/dist/bin/git-credential-generacy.d.ts +3 -0
  5. package/dist/bin/git-credential-generacy.d.ts.map +1 -0
  6. package/dist/bin/git-credential-generacy.js +114 -0
  7. package/dist/bin/git-credential-generacy.js.map +1 -0
  8. package/dist/bin/git-token-proxy.d.ts +3 -0
  9. package/dist/bin/git-token-proxy.d.ts.map +1 -0
  10. package/dist/bin/git-token-proxy.js +70 -0
  11. package/dist/bin/git-token-proxy.js.map +1 -0
  12. package/dist/src/git-token-proxy/allowlists.d.ts +17 -0
  13. package/dist/src/git-token-proxy/allowlists.d.ts.map +1 -0
  14. package/dist/src/git-token-proxy/allowlists.js +38 -0
  15. package/dist/src/git-token-proxy/allowlists.js.map +1 -0
  16. package/dist/src/git-token-proxy/handler.d.ts +10 -0
  17. package/dist/src/git-token-proxy/handler.d.ts.map +1 -0
  18. package/dist/src/git-token-proxy/handler.js +86 -0
  19. package/dist/src/git-token-proxy/handler.js.map +1 -0
  20. package/dist/src/git-token-proxy/index.d.ts +5 -0
  21. package/dist/src/git-token-proxy/index.d.ts.map +1 -0
  22. package/dist/src/git-token-proxy/index.js +5 -0
  23. package/dist/src/git-token-proxy/index.js.map +1 -0
  24. package/dist/src/git-token-proxy/logging.d.ts +9 -0
  25. package/dist/src/git-token-proxy/logging.d.ts.map +1 -0
  26. package/dist/src/git-token-proxy/logging.js +14 -0
  27. package/dist/src/git-token-proxy/logging.js.map +1 -0
  28. package/dist/src/git-token-proxy/upstream-errors.d.ts +14 -0
  29. package/dist/src/git-token-proxy/upstream-errors.d.ts.map +1 -0
  30. package/dist/src/git-token-proxy/upstream-errors.js +10 -0
  31. package/dist/src/git-token-proxy/upstream-errors.js.map +1 -0
  32. package/dist/src/index.d.ts +1 -0
  33. package/dist/src/index.d.ts.map +1 -1
  34. package/dist/src/index.js +1 -0
  35. package/dist/src/index.js.map +1 -1
  36. package/dist/src/router.d.ts.map +1 -1
  37. package/dist/src/router.js +7 -0
  38. package/dist/src/router.js.map +1 -1
  39. package/dist/src/routes/git-token.d.ts +15 -0
  40. package/dist/src/routes/git-token.d.ts.map +1 -0
  41. package/dist/src/routes/git-token.js +85 -0
  42. package/dist/src/routes/git-token.js.map +1 -0
  43. package/dist/src/schemas.d.ts +30 -0
  44. package/dist/src/schemas.d.ts.map +1 -1
  45. package/dist/src/schemas.js +12 -0
  46. package/dist/src/schemas.js.map +1 -1
  47. package/dist/src/services/cloud-pull-client.d.ts +19 -0
  48. package/dist/src/services/cloud-pull-client.d.ts.map +1 -0
  49. package/dist/src/services/cloud-pull-client.js +149 -0
  50. package/dist/src/services/cloud-pull-client.js.map +1 -0
  51. package/dist/src/services/cluster-api-key.d.ts +8 -0
  52. package/dist/src/services/cluster-api-key.d.ts.map +1 -0
  53. package/dist/src/services/cluster-api-key.js +39 -0
  54. package/dist/src/services/cluster-api-key.js.map +1 -0
  55. package/dist/src/services/git-token-manager.d.ts +17 -0
  56. package/dist/src/services/git-token-manager.d.ts.map +1 -0
  57. package/dist/src/services/git-token-manager.js +73 -0
  58. package/dist/src/services/git-token-manager.js.map +1 -0
  59. package/dist/src/services/jit-git-token-client.d.ts +21 -0
  60. package/dist/src/services/jit-git-token-client.d.ts.map +1 -0
  61. package/dist/src/services/jit-git-token-client.js +105 -0
  62. package/dist/src/services/jit-git-token-client.js.map +1 -0
  63. package/dist/src/types/git-token.d.ts +24 -0
  64. package/dist/src/types/git-token.d.ts.map +1 -0
  65. package/dist/src/types/git-token.js +13 -0
  66. package/dist/src/types/git-token.js.map +1 -0
  67. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,GAexB,MAAM,cAAc,CAAC;AAEtB,QAAQ;AACR,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,WAAW;AACX,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,aAAa,GAEd,MAAM,8BAA8B,CAAC;AAEtC,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,SAAS,GAGV,MAAM,aAAa,CAAC;AAErB,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,4CAA4C;AAC5C,OAAO,EACL,kBAAkB,GAKnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,UAAU;AACV,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,GAexB,MAAM,cAAc,CAAC;AAEtB,QAAQ;AACR,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,WAAW;AACX,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,aAAa,GAEd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,uBAAuB,EACvB,aAAa,GAKd,MAAM,oCAAoC,CAAC;AAE5C,SAAS;AACT,OAAO,EACL,iBAAiB,EACjB,SAAS,GAGV,MAAM,aAAa,CAAC;AAErB,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,4CAA4C;AAC5C,OAAO,EACL,kBAAkB,GAKnB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAkGjD,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAyGjD,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
@@ -4,6 +4,7 @@ import { handleGetCredential, handleGetCredentialValue, handlePutCredential } fr
4
4
  import { handlePostLifecycle } from './routes/lifecycle.js';
5
5
  import { handlePostAuditBatch } from './routes/audit.js';
6
6
  import { handlePostStatus } from './routes/status.js';
7
+ import { handlePostGitToken } from './routes/git-token.js';
7
8
  import { handleGetManifest, handleGetValues, handlePutEnv, handleDeleteEnv, handlePostFile, } from './routes/app-config.js';
8
9
  const routes = [
9
10
  {
@@ -48,6 +49,12 @@ const routes = [
48
49
  paramNames: [],
49
50
  handler: handlePostStatus,
50
51
  },
52
+ {
53
+ method: 'POST',
54
+ pattern: /^\/git-token$/,
55
+ paramNames: [],
56
+ handler: handlePostGitToken,
57
+ },
51
58
  {
52
59
  method: 'GET',
53
60
  pattern: /^\/app-config\/manifest$/,
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type http from 'node:http';
2
+ import type { ActorContext } from '../context.js';
3
+ import type { GitTokenCacheEntry } from '../types/git-token.js';
4
+ export interface GitTokenManagerLike {
5
+ getToken(credentialId: string): Promise<GitTokenCacheEntry>;
6
+ }
7
+ export interface CreateGitTokenHandlerOptions {
8
+ gitTokenManager: GitTokenManagerLike;
9
+ defaultCredentialId: string;
10
+ }
11
+ export type GitTokenRouteHandler = (req: http.IncomingMessage, res: http.ServerResponse, actor: ActorContext, params: Record<string, string>) => Promise<void>;
12
+ export declare function setGitTokenManager(manager: GitTokenManagerLike, defaultCredentialId: string): void;
13
+ export declare function createGitTokenHandler(options: CreateGitTokenHandlerOptions): GitTokenRouteHandler;
14
+ export declare function handlePostGitToken(req: http.IncomingMessage, res: http.ServerResponse, actor: ActorContext, params: Record<string, string>): Promise<void>;
15
+ //# sourceMappingURL=git-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-token.d.ts","sourceRoot":"","sources":["../../../src/routes/git-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,OAAO,KAAK,EAAsB,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,mBAAmB,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAC;AAInB,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAElG;AAoBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,oBAAoB,CAgDjG;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,85 @@
1
+ import { readBody } from '../util/read-body.js';
2
+ import { GitTokenRequestSchema } from '../schemas.js';
3
+ import { GitHelperError } from '../types/git-token.js';
4
+ let bound;
5
+ export function setGitTokenManager(manager, defaultCredentialId) {
6
+ bound = { manager, defaultCredentialId };
7
+ }
8
+ const HTTP_STATUS_BY_CODE = {
9
+ CLUSTER_API_KEY_MISSING: 503,
10
+ CREDENTIAL_NOT_CONFIGURED: 400,
11
+ CLOUD_UNREACHABLE: 502,
12
+ CLOUD_AUTH_REJECTED: 502,
13
+ CLOUD_REQUEST_INVALID: 502,
14
+ CLOUD_UPSTREAM_ERROR: 502,
15
+ CLOUD_RESPONSE_INVALID: 502,
16
+ };
17
+ function sendError(res, status, code, message, details) {
18
+ const body = { error: message, code };
19
+ if (details !== undefined)
20
+ body.details = details;
21
+ res.setHeader('Content-Type', 'application/json');
22
+ res.writeHead(status);
23
+ res.end(JSON.stringify(body));
24
+ }
25
+ export function createGitTokenHandler(options) {
26
+ return async function handlePostGitToken(req, res) {
27
+ let raw = '';
28
+ try {
29
+ raw = await readBody(req);
30
+ }
31
+ catch {
32
+ // Treat read failure as empty body — fall through to default credential.
33
+ }
34
+ let credentialId = options.defaultCredentialId;
35
+ if (raw.trim().length > 0) {
36
+ let parsed;
37
+ try {
38
+ parsed = JSON.parse(raw);
39
+ }
40
+ catch {
41
+ // Malformed JSON → fall back to default credential (FR: missing/invalid body still produces a token).
42
+ parsed = {};
43
+ }
44
+ const validated = GitTokenRequestSchema.safeParse(parsed);
45
+ if (!validated.success) {
46
+ sendError(res, 400, 'INVALID_REQUEST', 'Invalid request body', { issues: validated.error.issues });
47
+ return;
48
+ }
49
+ if (validated.data.credentialId !== undefined) {
50
+ credentialId = validated.data.credentialId;
51
+ }
52
+ }
53
+ let entry;
54
+ try {
55
+ entry = await options.gitTokenManager.getToken(credentialId);
56
+ }
57
+ catch (err) {
58
+ if (err instanceof GitHelperError) {
59
+ const status = HTTP_STATUS_BY_CODE[err.code] ?? 500;
60
+ sendError(res, status, err.code, err.message, err.details);
61
+ return;
62
+ }
63
+ sendError(res, 500, 'INTERNAL_ERROR', 'git-token request failed');
64
+ return;
65
+ }
66
+ res.setHeader('Content-Type', 'application/json');
67
+ res.writeHead(200);
68
+ res.end(JSON.stringify({
69
+ token: entry.token,
70
+ expiresAt: entry.expiresAt.toISOString(),
71
+ }));
72
+ };
73
+ }
74
+ export async function handlePostGitToken(req, res, actor, params) {
75
+ if (!bound) {
76
+ sendError(res, 503, 'SERVICE_UNAVAILABLE', 'git-token manager not initialized');
77
+ return;
78
+ }
79
+ const handler = createGitTokenHandler({
80
+ gitTokenManager: bound.manager,
81
+ defaultCredentialId: bound.defaultCredentialId,
82
+ });
83
+ await handler(req, res, actor, params);
84
+ }
85
+ //# sourceMappingURL=git-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-token.js","sourceRoot":"","sources":["../../../src/routes/git-token.ts"],"names":[],"mappings":"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"}
@@ -372,6 +372,36 @@ export declare const ErrorResponseSchema: z.ZodObject<{
372
372
  details?: unknown;
373
373
  }>;
374
374
  export type ErrorResponse = z.infer<typeof ErrorResponseSchema>;
375
+ export declare const GitTokenRequestSchema: z.ZodObject<{
376
+ credentialId: z.ZodOptional<z.ZodString>;
377
+ }, "strip", z.ZodTypeAny, {
378
+ credentialId?: string | undefined;
379
+ }, {
380
+ credentialId?: string | undefined;
381
+ }>;
382
+ export type GitTokenRequest = z.infer<typeof GitTokenRequestSchema>;
383
+ export declare const GitTokenResponseSchema: z.ZodObject<{
384
+ token: z.ZodString;
385
+ expiresAt: z.ZodString;
386
+ }, "strip", z.ZodTypeAny, {
387
+ token: string;
388
+ expiresAt: string;
389
+ }, {
390
+ token: string;
391
+ expiresAt: string;
392
+ }>;
393
+ export type GitTokenResponseShape = z.infer<typeof GitTokenResponseSchema>;
394
+ export declare const CloudPullResponseSchema: z.ZodObject<{
395
+ token: z.ZodString;
396
+ expiresAt: z.ZodString;
397
+ }, "strip", z.ZodTypeAny, {
398
+ token: string;
399
+ expiresAt: string;
400
+ }, {
401
+ token: string;
402
+ expiresAt: string;
403
+ }>;
404
+ export type CloudPullResponseShape = z.infer<typeof CloudPullResponseSchema>;
375
405
  export declare const AppConfigEnvEntrySchema: z.ZodObject<{
376
406
  name: z.ZodString;
377
407
  description: z.ZodOptional<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -115,6 +115,18 @@ export const ErrorResponseSchema = z.object({
115
115
  code: z.string(),
116
116
  details: z.unknown().optional(),
117
117
  });
118
+ // Git token (JIT git credential helper — #766)
119
+ export const GitTokenRequestSchema = z.object({
120
+ credentialId: z.string().min(1).optional(),
121
+ });
122
+ export const GitTokenResponseSchema = z.object({
123
+ token: z.string().min(1),
124
+ expiresAt: z.string().datetime({ offset: false }),
125
+ });
126
+ export const CloudPullResponseSchema = z.object({
127
+ token: z.string().min(1),
128
+ expiresAt: z.string().datetime({ offset: false }),
129
+ });
118
130
  // App Config schemas
119
131
  export const AppConfigEnvEntrySchema = z.object({
120
132
  name: z.string().min(1),
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { CloudPullResponse } from '../types/git-token.js';
2
+ import type { ClusterApiKeyReader } from './cluster-api-key.js';
3
+ export interface CloudPullClient {
4
+ pull(credentialId: string): Promise<CloudPullResponse>;
5
+ }
6
+ export interface CreateCloudPullClientOptions {
7
+ apiKeyReader: ClusterApiKeyReader;
8
+ /** Override the API URL env var name (default `GENERACY_API_URL`). Test-only knob. */
9
+ apiUrlEnv?: string;
10
+ /** Override the cloud endpoint path. Defaults to `/api/clusters/git-installation-token`. */
11
+ cloudPath?: string;
12
+ /** Log sink. Defaults to `console`. */
13
+ logger?: {
14
+ info: (obj: Record<string, unknown>) => void;
15
+ warn: (obj: Record<string, unknown>) => void;
16
+ };
17
+ }
18
+ export declare function createCloudPullClient(options: CreateCloudPullClientOptions): CloudPullClient;
19
+ //# sourceMappingURL=cloud-pull-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-pull-client.d.ts","sourceRoot":"","sources":["../../../src/services/cloud-pull-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,mBAAmB,CAAC;IAClC,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;KAAE,CAAC;CACzG;AAmCD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,eAAe,CA4J5F"}
@@ -0,0 +1,149 @@
1
+ import http from 'node:http';
2
+ import https from 'node:https';
3
+ import { URL } from 'node:url';
4
+ import { CloudPullResponseSchema } from '../schemas.js';
5
+ import { GitHelperError } from '../types/git-token.js';
6
+ const DEFAULT_CLOUD_PATH = '/api/clusters/git-installation-token';
7
+ function postJson(url, body, headers) {
8
+ const isHttps = url.protocol === 'https:';
9
+ const transport = isHttps ? https : http;
10
+ return new Promise((resolve, reject) => {
11
+ const req = transport.request({
12
+ protocol: url.protocol,
13
+ hostname: url.hostname,
14
+ port: url.port || (isHttps ? 443 : 80),
15
+ path: `${url.pathname}${url.search}`,
16
+ method: 'POST',
17
+ headers: { ...headers, 'content-length': Buffer.byteLength(body).toString() },
18
+ }, (res) => {
19
+ const chunks = [];
20
+ res.on('data', (c) => chunks.push(c));
21
+ res.on('end', () => {
22
+ resolve({ status: res.statusCode ?? 0, body: Buffer.concat(chunks).toString('utf8') });
23
+ });
24
+ res.on('error', reject);
25
+ });
26
+ req.on('error', reject);
27
+ req.write(body);
28
+ req.end();
29
+ });
30
+ }
31
+ export function createCloudPullClient(options) {
32
+ const envName = options.apiUrlEnv ?? 'GENERACY_API_URL';
33
+ const cloudPath = options.cloudPath ?? DEFAULT_CLOUD_PATH;
34
+ const logger = options.logger ?? {
35
+ info: (obj) => console.log(JSON.stringify(obj)),
36
+ warn: (obj) => console.warn(JSON.stringify(obj)),
37
+ };
38
+ return {
39
+ async pull(credentialId) {
40
+ const start = Date.now();
41
+ const apiUrlRaw = process.env[envName];
42
+ if (!apiUrlRaw) {
43
+ throw new GitHelperError('CLOUD_UNREACHABLE', `${envName} is not set — cannot reach cloud on-demand pull endpoint`);
44
+ }
45
+ // Resolve API key first so a missing key short-circuits with the right code.
46
+ const apiKey = await options.apiKeyReader.read();
47
+ let url;
48
+ try {
49
+ url = new URL(cloudPath, apiUrlRaw);
50
+ }
51
+ catch (err) {
52
+ throw new GitHelperError('CLOUD_UNREACHABLE', `Invalid ${envName}: ${err.message}`);
53
+ }
54
+ const headers = {
55
+ authorization: `Bearer ${apiKey}`,
56
+ 'content-type': 'application/json',
57
+ accept: 'application/json',
58
+ };
59
+ let outcome;
60
+ try {
61
+ outcome = await postJson(url, JSON.stringify({ credentialId }), headers);
62
+ }
63
+ catch (err) {
64
+ const cause = err.code ?? err.message;
65
+ logger.warn({
66
+ event: 'git-token-cloud-pull',
67
+ result: 'error',
68
+ errorCode: 'CLOUD_UNREACHABLE',
69
+ durationMs: Date.now() - start,
70
+ });
71
+ throw new GitHelperError('CLOUD_UNREACHABLE', `Cloud on-demand pull endpoint unreachable (${cause})`, { cause });
72
+ }
73
+ if (outcome.status === 401 || outcome.status === 403) {
74
+ logger.warn({
75
+ event: 'git-token-cloud-pull',
76
+ result: 'error',
77
+ errorCode: 'CLOUD_AUTH_REJECTED',
78
+ httpStatus: outcome.status,
79
+ durationMs: Date.now() - start,
80
+ });
81
+ throw new GitHelperError('CLOUD_AUTH_REJECTED', `Cloud rejected cluster API key (HTTP ${outcome.status})`, { httpStatus: outcome.status });
82
+ }
83
+ if (outcome.status >= 400 && outcome.status < 500) {
84
+ logger.warn({
85
+ event: 'git-token-cloud-pull',
86
+ result: 'error',
87
+ errorCode: 'CLOUD_REQUEST_INVALID',
88
+ httpStatus: outcome.status,
89
+ durationMs: Date.now() - start,
90
+ });
91
+ throw new GitHelperError('CLOUD_REQUEST_INVALID', `Cloud returned ${outcome.status} for git-token request`, { httpStatus: outcome.status });
92
+ }
93
+ if (outcome.status >= 500) {
94
+ logger.warn({
95
+ event: 'git-token-cloud-pull',
96
+ result: 'error',
97
+ errorCode: 'CLOUD_UPSTREAM_ERROR',
98
+ httpStatus: outcome.status,
99
+ durationMs: Date.now() - start,
100
+ });
101
+ throw new GitHelperError('CLOUD_UPSTREAM_ERROR', `Cloud upstream error (HTTP ${outcome.status})`, { httpStatus: outcome.status });
102
+ }
103
+ let parsed;
104
+ try {
105
+ parsed = JSON.parse(outcome.body);
106
+ }
107
+ catch {
108
+ logger.warn({
109
+ event: 'git-token-cloud-pull',
110
+ result: 'error',
111
+ errorCode: 'CLOUD_RESPONSE_INVALID',
112
+ httpStatus: outcome.status,
113
+ durationMs: Date.now() - start,
114
+ });
115
+ throw new GitHelperError('CLOUD_RESPONSE_INVALID', 'Cloud returned a non-JSON body');
116
+ }
117
+ const result = CloudPullResponseSchema.safeParse(parsed);
118
+ if (!result.success) {
119
+ logger.warn({
120
+ event: 'git-token-cloud-pull',
121
+ result: 'error',
122
+ errorCode: 'CLOUD_RESPONSE_INVALID',
123
+ httpStatus: outcome.status,
124
+ durationMs: Date.now() - start,
125
+ });
126
+ throw new GitHelperError('CLOUD_RESPONSE_INVALID', 'Cloud response did not match expected schema', { issues: result.error.issues });
127
+ }
128
+ const expiresAtMs = Date.parse(result.data.expiresAt);
129
+ if (!Number.isFinite(expiresAtMs) || expiresAtMs <= Date.now()) {
130
+ logger.warn({
131
+ event: 'git-token-cloud-pull',
132
+ result: 'error',
133
+ errorCode: 'CLOUD_RESPONSE_INVALID',
134
+ httpStatus: outcome.status,
135
+ durationMs: Date.now() - start,
136
+ });
137
+ throw new GitHelperError('CLOUD_RESPONSE_INVALID', 'Cloud returned an already-past expiresAt');
138
+ }
139
+ logger.info({
140
+ event: 'git-token-cloud-pull',
141
+ result: 'ok',
142
+ httpStatus: outcome.status,
143
+ durationMs: Date.now() - start,
144
+ });
145
+ return { token: result.data.token, expiresAt: result.data.expiresAt };
146
+ },
147
+ };
148
+ }
149
+ //# sourceMappingURL=cloud-pull-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-pull-client.js","sourceRoot":"","sources":["../../../src/services/cloud-pull-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export interface ClusterApiKeyReader {
2
+ read(): Promise<string>;
3
+ }
4
+ export interface CreateClusterApiKeyReaderOptions {
5
+ keyPath?: string;
6
+ }
7
+ export declare function createClusterApiKeyReader(options?: CreateClusterApiKeyReaderOptions): ClusterApiKeyReader;
8
+ //# sourceMappingURL=cluster-api-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-api-key.d.ts","sourceRoot":"","sources":["../../../src/services/cluster-api-key.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,mBAAmB;IAClC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,gCAAgC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gCAAqC,GAC7C,mBAAmB,CAwCrB"}
@@ -0,0 +1,39 @@
1
+ import { stat, readFile } from 'node:fs/promises';
2
+ import { GitHelperError } from '../types/git-token.js';
3
+ const DEFAULT_KEY_PATH = '/var/lib/generacy/cluster-api-key';
4
+ export function createClusterApiKeyReader(options = {}) {
5
+ const keyPath = options.keyPath ?? DEFAULT_KEY_PATH;
6
+ let cachedValue;
7
+ let lastMtimeMs = -1;
8
+ return {
9
+ async read() {
10
+ try {
11
+ const st = await stat(keyPath);
12
+ // `mtime.getTime()` is integer-ms (truncated from the kernel's
13
+ // nanosecond mtime). `mtimeMs` may carry fractional nanoseconds that
14
+ // round-trip differently through utimes() — using getTime() keeps the
15
+ // cache invariant stable across FS-precision quirks.
16
+ const mtimeMs = st.mtime.getTime();
17
+ if (mtimeMs !== lastMtimeMs || cachedValue === undefined) {
18
+ const raw = await readFile(keyPath, 'utf8');
19
+ cachedValue = raw.replace(/\r?\n+$/, '');
20
+ lastMtimeMs = mtimeMs;
21
+ }
22
+ if (!cachedValue) {
23
+ throw new GitHelperError('CLUSTER_API_KEY_MISSING', `Cluster API key file at ${keyPath} is empty`);
24
+ }
25
+ return cachedValue;
26
+ }
27
+ catch (err) {
28
+ if (err instanceof GitHelperError)
29
+ throw err;
30
+ const code = err.code;
31
+ if (code === 'ENOENT' || code === 'EACCES' || code === 'EPERM') {
32
+ throw new GitHelperError('CLUSTER_API_KEY_MISSING', `Cluster API key file at ${keyPath} is missing or unreadable`, { cause: code });
33
+ }
34
+ throw err;
35
+ }
36
+ },
37
+ };
38
+ }
39
+ //# sourceMappingURL=cluster-api-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-api-key.js","sourceRoot":"","sources":["../../../src/services/cluster-api-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,gBAAgB,GAAG,mCAAmC,CAAC;AAU7D,MAAM,UAAU,yBAAyB,CACvC,UAA4C,EAAE;IAE9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACpD,IAAI,WAA+B,CAAC;IACpC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC;IAErB,OAAO;QACL,KAAK,CAAC,IAAI;YACR,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,+DAA+D;gBAC/D,qEAAqE;gBACrE,sEAAsE;gBACtE,qDAAqD;gBACrD,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,OAAO,KAAK,WAAW,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBACzD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC5C,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBACzC,WAAW,GAAG,OAAO,CAAC;gBACxB,CAAC;gBACD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,MAAM,IAAI,cAAc,CACtB,yBAAyB,EACzB,2BAA2B,OAAO,WAAW,CAC9C,CAAC;gBACJ,CAAC;gBACD,OAAO,WAAW,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,cAAc;oBAAE,MAAM,GAAG,CAAC;gBAC7C,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;gBACjD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC/D,MAAM,IAAI,cAAc,CACtB,yBAAyB,EACzB,2BAA2B,OAAO,2BAA2B,EAC7D,EAAE,KAAK,EAAE,IAAI,EAAE,CAChB,CAAC;gBACJ,CAAC;gBACD,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { GitTokenCacheEntry } from '../types/git-token.js';
2
+ import type { CloudPullClient } from './cloud-pull-client.js';
3
+ export declare const REFRESH_WINDOW_MS: number;
4
+ export interface GitTokenManager {
5
+ getToken(credentialId: string): Promise<GitTokenCacheEntry>;
6
+ }
7
+ export interface CreateGitTokenManagerOptions {
8
+ cloudPullClient: CloudPullClient;
9
+ /** Override the clock. Defaults to `Date.now`. */
10
+ now?: () => number;
11
+ logger?: {
12
+ info: (obj: Record<string, unknown>) => void;
13
+ warn: (obj: Record<string, unknown>) => void;
14
+ };
15
+ }
16
+ export declare function createGitTokenManager(options: CreateGitTokenManagerOptions): GitTokenManager;
17
+ //# sourceMappingURL=git-token-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-token-manager.d.ts","sourceRoot":"","sources":["../../../src/services/git-token-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,4BAA4B;IAC3C,eAAe,EAAE,eAAe,CAAC;IACjC,kDAAkD;IAClD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;KAAE,CAAC;CACzG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,GAAG,eAAe,CA+E5F"}
@@ -0,0 +1,73 @@
1
+ import { GitHelperError } from '../types/git-token.js';
2
+ export const REFRESH_WINDOW_MS = 5 * 60_000;
3
+ export function createGitTokenManager(options) {
4
+ const now = options.now ?? Date.now;
5
+ const logger = options.logger ?? {
6
+ info: (obj) => console.log(JSON.stringify(obj)),
7
+ warn: (obj) => console.warn(JSON.stringify(obj)),
8
+ };
9
+ let cache = null;
10
+ let inFlight = null;
11
+ async function refresh(credentialId) {
12
+ const start = now();
13
+ try {
14
+ const response = await options.cloudPullClient.pull(credentialId);
15
+ const expiresAtMs = Date.parse(response.expiresAt);
16
+ const fetchedAtMs = now();
17
+ if (!Number.isFinite(expiresAtMs) || expiresAtMs <= fetchedAtMs) {
18
+ throw new GitHelperError('CLOUD_RESPONSE_INVALID', 'Cloud returned an expiresAt at or before now');
19
+ }
20
+ const entry = {
21
+ token: response.token,
22
+ expiresAt: new Date(expiresAtMs),
23
+ credentialId,
24
+ fetchedAt: new Date(fetchedAtMs),
25
+ };
26
+ cache = entry;
27
+ logger.info({
28
+ event: 'git-token-get',
29
+ result: 'refresh-success',
30
+ credentialId,
31
+ expiresAt: response.expiresAt,
32
+ durationMs: now() - start,
33
+ });
34
+ return entry;
35
+ }
36
+ catch (err) {
37
+ const errorCode = err instanceof GitHelperError ? err.code : 'UNKNOWN';
38
+ logger.warn({
39
+ event: 'git-token-get',
40
+ result: 'refresh-error',
41
+ credentialId,
42
+ errorCode,
43
+ durationMs: now() - start,
44
+ });
45
+ throw err;
46
+ }
47
+ }
48
+ return {
49
+ async getToken(credentialId) {
50
+ const start = now();
51
+ if (cache &&
52
+ cache.credentialId === credentialId &&
53
+ cache.expiresAt.getTime() - now() > REFRESH_WINDOW_MS) {
54
+ logger.info({
55
+ event: 'git-token-get',
56
+ result: 'cache-hit',
57
+ credentialId,
58
+ expiresAt: cache.expiresAt.toISOString(),
59
+ durationMs: now() - start,
60
+ });
61
+ return cache;
62
+ }
63
+ if (inFlight) {
64
+ return inFlight;
65
+ }
66
+ inFlight = refresh(credentialId).finally(() => {
67
+ inFlight = null;
68
+ });
69
+ return inFlight;
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=git-token-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-token-manager.js","sourceRoot":"","sources":["../../../src/services/git-token-manager.ts"],"names":[],"mappings":"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"}