@cyanautomation/kaseki-agent 1.55.1 → 1.56.1

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 (66) hide show
  1. package/dist/artifact-metadata.d.ts.map +1 -1
  2. package/dist/artifact-metadata.js +15 -0
  3. package/dist/artifact-metadata.js.map +1 -1
  4. package/dist/github-app-token.js +9 -125
  5. package/dist/github-app-token.js.map +1 -1
  6. package/dist/github-utils.d.ts +64 -0
  7. package/dist/github-utils.d.ts.map +1 -0
  8. package/dist/github-utils.js +310 -0
  9. package/dist/github-utils.js.map +1 -0
  10. package/dist/idempotency-store.d.ts +9 -5
  11. package/dist/idempotency-store.d.ts.map +1 -1
  12. package/dist/idempotency-store.js +138 -46
  13. package/dist/idempotency-store.js.map +1 -1
  14. package/dist/job-persistence-manager.d.ts +6 -8
  15. package/dist/job-persistence-manager.d.ts.map +1 -1
  16. package/dist/job-persistence-manager.js +48 -58
  17. package/dist/job-persistence-manager.js.map +1 -1
  18. package/dist/job-scheduler.d.ts +4 -1
  19. package/dist/job-scheduler.d.ts.map +1 -1
  20. package/dist/job-scheduler.js +92 -35
  21. package/dist/job-scheduler.js.map +1 -1
  22. package/dist/kaseki-api/service-bootstrapper.d.ts.map +1 -1
  23. package/dist/kaseki-api/service-bootstrapper.js +7 -2
  24. package/dist/kaseki-api/service-bootstrapper.js.map +1 -1
  25. package/dist/kaseki-api/setup-orchestrator.d.ts.map +1 -1
  26. package/dist/kaseki-api/setup-orchestrator.js +4 -0
  27. package/dist/kaseki-api/setup-orchestrator.js.map +1 -1
  28. package/dist/kaseki-api-routes.d.ts.map +1 -1
  29. package/dist/kaseki-api-routes.js +128 -47
  30. package/dist/kaseki-api-routes.js.map +1 -1
  31. package/dist/kaseki-api-types.d.ts +28 -0
  32. package/dist/kaseki-api-types.d.ts.map +1 -1
  33. package/dist/kaseki-api-types.js +9 -0
  34. package/dist/kaseki-api-types.js.map +1 -1
  35. package/dist/kaseki-api-web.d.ts.map +1 -1
  36. package/dist/kaseki-api-web.js +388 -2
  37. package/dist/kaseki-api-web.js.map +1 -1
  38. package/dist/lib/goal-setting-feedback.d.ts +81 -0
  39. package/dist/lib/goal-setting-feedback.d.ts.map +1 -0
  40. package/dist/lib/goal-setting-feedback.js +181 -0
  41. package/dist/lib/goal-setting-feedback.js.map +1 -0
  42. package/dist/routes/github-issues-routes.d.ts +33 -0
  43. package/dist/routes/github-issues-routes.d.ts.map +1 -0
  44. package/dist/routes/github-issues-routes.js +99 -0
  45. package/dist/routes/github-issues-routes.js.map +1 -0
  46. package/dist/types/goal-setting.d.ts +86 -0
  47. package/dist/types/goal-setting.d.ts.map +1 -0
  48. package/dist/types/goal-setting.js +64 -0
  49. package/dist/types/goal-setting.js.map +1 -0
  50. package/dist/utils/failure-artifact-writer.d.ts.map +1 -1
  51. package/dist/utils/failure-artifact-writer.js +7 -6
  52. package/dist/utils/failure-artifact-writer.js.map +1 -1
  53. package/dist/utils/file-helpers.d.ts +9 -7
  54. package/dist/utils/file-helpers.d.ts.map +1 -1
  55. package/dist/utils/file-helpers.js +120 -83
  56. package/dist/utils/file-helpers.js.map +1 -1
  57. package/dist/webhook-manager.d.ts.map +1 -1
  58. package/dist/webhook-manager.js +11 -2
  59. package/dist/webhook-manager.js.map +1 -1
  60. package/kaseki-agent.sh +1169 -166
  61. package/package.json +1 -1
  62. package/scripts/analyze-goal-feedback.js +287 -0
  63. package/scripts/collect-feedback.js +167 -0
  64. package/scripts/deploy-pi-template.sh +1 -1
  65. package/scripts/generate-inspect-report.js +8 -10
  66. package/scripts/validate-module-imports.js +14 -5
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-metadata.d.ts","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,0BAA0B,EAAwB,MAAM,oBAAoB,CAAC;AAEtF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAqXjF,CAAC"}
1
+ {"version":3,"file":"artifact-metadata.d.ts","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,0BAA0B,EAAwB,MAAM,oBAAoB,CAAC;AAEtF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAsYjF,CAAC"}
@@ -104,6 +104,21 @@ export const ARTIFACT_METADATA_REGISTRY = {
104
104
  availability: ArtifactAvailability.CONDITIONAL,
105
105
  sizeHint: 'medium',
106
106
  },
107
+ 'scouting-validation-errors.jsonl': {
108
+ name: 'scouting-validation-errors.jsonl',
109
+ contentType: 'application/x-jsonl',
110
+ description: 'Structured scouting artifact validation failures with field-level expected/actual details and suggestions',
111
+ availability: ArtifactAvailability.CONDITIONAL,
112
+ triageOrder: 8,
113
+ sizeHint: 'small',
114
+ },
115
+ 'scouting-validation-summary.txt': {
116
+ name: 'scouting-validation-summary.txt',
117
+ contentType: 'text/plain',
118
+ description: 'Concise summary of the latest scouting artifact validation result',
119
+ availability: ArtifactAvailability.CONDITIONAL,
120
+ sizeHint: 'small',
121
+ },
107
122
  'goal-check.json': {
108
123
  name: 'goal-check.json',
109
124
  contentType: 'application/json',
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-metadata.js","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-metadata.js","sourceRoot":"","sources":["../src/artifact-metadata.ts"],"names":[],"mappings":"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"}
@@ -13,145 +13,29 @@
13
13
  * }
14
14
  */
15
15
  import fs from 'fs';
16
- import crypto from 'crypto';
17
- import https from 'https';
18
- import { validateGitHubAppPrivateKey } from './github-app-private-key.js';
16
+ import { generateGitHubAppToken } from './github-utils.js';
19
17
  const APP_ID = process.argv[2];
20
18
  const PRIVATE_KEY_FILE = process.argv[3];
21
19
  const OWNER = process.argv[4];
22
20
  const REPO = process.argv[5];
23
- function loadAndValidatePrivateKey(privateKeyFile) {
24
- const validation = validateGitHubAppPrivateKey(fs.readFileSync(privateKeyFile, 'utf8'));
25
- if (!validation.ok || !validation.normalized) {
26
- const message = validation.remediation
27
- ? `${validation.error} ${validation.remediation}`
28
- : validation.error;
29
- throw new Error(message || 'GitHub App private key is not valid.');
30
- }
31
- return crypto.createPrivateKey(validation.normalized);
32
- }
33
- async function generateJWT(appId, privateKey) {
34
- const now = Math.floor(Date.now() / 1000);
35
- const iat = now - 60; // account for clock skew
36
- const exp = now + 10 * 60; // 10 minutes
37
- const header = {
38
- alg: 'RS256',
39
- typ: 'JWT',
40
- };
41
- const payload = {
42
- iss: appId,
43
- iat,
44
- exp,
45
- };
46
- const headerBase64 = Buffer.from(JSON.stringify(header)).toString('base64url');
47
- const payloadBase64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
48
- const message = `${headerBase64}.${payloadBase64}`;
49
- // Sign with RSA-SHA256
50
- const signer = crypto.createSign('RSA-SHA256');
51
- signer.update(message);
52
- signer.end();
53
- const signature = signer.sign(privateKey, 'base64url');
54
- return `${message}.${signature}`;
55
- }
56
- async function getInstallationId(jwt, owner, repo) {
57
- return new Promise((resolve, reject) => {
58
- const options = {
59
- hostname: 'api.github.com',
60
- path: `/repos/${owner}/${repo}/installation`,
61
- method: 'GET',
62
- headers: {
63
- 'Authorization': `Bearer ${jwt}`,
64
- 'Accept': 'application/vnd.github.machine-man-preview+json',
65
- 'User-Agent': 'Kaseki-Agent',
66
- },
67
- };
68
- const req = https.request(options, (res) => {
69
- let data = '';
70
- res.on('data', (chunk) => {
71
- data += chunk;
72
- });
73
- res.on('end', () => {
74
- if (res.statusCode !== 200) {
75
- reject(new Error(`Failed to get installation ID: ${res.statusCode} ${data}`));
76
- }
77
- else {
78
- try {
79
- const json = JSON.parse(data);
80
- resolve(json.id);
81
- }
82
- catch (e) {
83
- reject(new Error(`Failed to parse installation response: ${e instanceof Error ? e.message : String(e)}`));
84
- }
85
- }
86
- });
87
- });
88
- req.on('error', reject);
89
- req.end();
90
- });
91
- }
92
- async function getAccessToken(jwt, installationId) {
93
- return new Promise((resolve, reject) => {
94
- const options = {
95
- hostname: 'api.github.com',
96
- path: `/app/installations/${installationId}/access_tokens`,
97
- method: 'POST',
98
- headers: {
99
- 'Authorization': `Bearer ${jwt}`,
100
- 'Accept': 'application/vnd.github.machine-man-preview+json',
101
- 'User-Agent': 'Kaseki-Agent',
102
- 'Content-Length': '0',
103
- },
104
- };
105
- const req = https.request(options, (res) => {
106
- let data = '';
107
- res.on('data', (chunk) => {
108
- data += chunk;
109
- });
110
- res.on('end', () => {
111
- if (res.statusCode !== 201) {
112
- reject(new Error(`Failed to get access token: ${res.statusCode} ${data}`));
113
- }
114
- else {
115
- try {
116
- const json = JSON.parse(data);
117
- resolve({
118
- token: json.token,
119
- expires_at: json.expires_at,
120
- });
121
- }
122
- catch (e) {
123
- reject(new Error(`Failed to parse token response: ${e instanceof Error ? e.message : String(e)}`));
124
- }
125
- }
126
- });
127
- });
128
- req.on('error', reject);
129
- req.end();
130
- });
131
- }
132
21
  async function main() {
133
22
  if (!APP_ID || !PRIVATE_KEY_FILE || !OWNER || !REPO) {
134
23
  console.error('Usage: node github-app-token.js <app-id> <private-key-file> <owner> <repo>');
135
24
  process.exit(1);
136
25
  }
137
26
  try {
138
- // Read and validate private key
139
- const privateKey = loadAndValidatePrivateKey(PRIVATE_KEY_FILE);
140
- // Generate JWT
141
- const jwt = await generateJWT(APP_ID, privateKey);
142
- // Get installation ID
143
- const installationId = await getInstallationId(jwt, OWNER, REPO);
144
- // Get access token
145
- const tokenData = await getAccessToken(jwt, installationId);
27
+ const privateKeyContent = fs.readFileSync(PRIVATE_KEY_FILE, 'utf8');
28
+ const tokenData = await generateGitHubAppToken(OWNER, REPO, APP_ID, privateKeyContent);
146
29
  // Output result as JSON
147
30
  console.log(JSON.stringify(tokenData));
31
+ if (tokenData.error) {
32
+ process.exit(1);
33
+ }
148
34
  }
149
35
  catch (error) {
150
- // Output error as JSON
151
- const result = {
152
- error: error instanceof Error ? error.message : String(error),
153
- };
154
- console.log(JSON.stringify(result));
36
+ console.log(JSON.stringify({
37
+ error: error instanceof Error ? error.message : String(error)
38
+ }));
155
39
  process.exit(1);
156
40
  }
157
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"github-app-token.js","sourceRoot":"","sources":["../src/github-app-token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-app-token.js","sourceRoot":"","sources":["../src/github-app-token.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE7B,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACpD,OAAO,CAAC,KAAK,CACX,4EAA4E,CAC7E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAEvF,wBAAwB;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;QACvC,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * GitHub API Utilities
3
+ *
4
+ * Provides helper functions for interacting with GitHub API:
5
+ * - Token generation using GitHub App authentication
6
+ * - URL parsing and validation
7
+ * - Issue fetching with filtering
8
+ */
9
+ interface GitHubIssue {
10
+ number: number;
11
+ title: string;
12
+ body: string | null;
13
+ url: string;
14
+ created_at: string;
15
+ state: string;
16
+ labels: Array<{
17
+ name: string;
18
+ }>;
19
+ }
20
+ interface TokenResult {
21
+ token?: string;
22
+ expires_at?: string;
23
+ error?: string;
24
+ }
25
+ interface ParsedGitHubUrl {
26
+ owner: string;
27
+ repo: string;
28
+ isValid: boolean;
29
+ error?: string;
30
+ }
31
+ /**
32
+ * Parse a GitHub URL and extract owner/repo
33
+ * Accepts formats like:
34
+ * - https://github.com/owner/repo
35
+ * - https://github.com/owner/repo.git
36
+ * - owner/repo (shorthand)
37
+ */
38
+ export declare function parseGitHubUrl(urlOrShorthand: string): ParsedGitHubUrl;
39
+ /**
40
+ * Generate a GitHub App access token
41
+ *
42
+ * Loads GitHub App credentials from host secrets:
43
+ * - github_app_id
44
+ * - github_app_private_key
45
+ *
46
+ * Returns token, expires_at, and error fields
47
+ */
48
+ export declare function generateGitHubAppToken(owner: string, repo: string, overrideAppId?: string, overridePrivateKey?: string): Promise<TokenResult>;
49
+ /**
50
+ * Fetch GitHub issues from a repository with filtering
51
+ *
52
+ * @param owner - GitHub repository owner
53
+ * @param repo - GitHub repository name
54
+ * @param token - GitHub API access token
55
+ * @param options - Filtering options
56
+ * @returns Array of issues matching the criteria
57
+ */
58
+ export declare function fetchGitHubIssues(owner: string, repo: string, token: string, options?: {
59
+ labels?: string[];
60
+ limit?: number;
61
+ state?: 'open' | 'closed' | 'all';
62
+ }): Promise<GitHubIssue[]>;
63
+ export {};
64
+ //# sourceMappingURL=github-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-utils.d.ts","sourceRoot":"","sources":["../src/github-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgCH,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,eAAe,CAsEtE;AA2JD;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,WAAW,CAAC,CAoCtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CAC9B,GACL,OAAO,CAAC,WAAW,EAAE,CAAC,CA8DxB"}
@@ -0,0 +1,310 @@
1
+ /**
2
+ * GitHub API Utilities
3
+ *
4
+ * Provides helper functions for interacting with GitHub API:
5
+ * - Token generation using GitHub App authentication
6
+ * - URL parsing and validation
7
+ * - Issue fetching with filtering
8
+ */
9
+ import crypto from 'crypto';
10
+ import https from 'https';
11
+ import { validateGitHubAppPrivateKey } from './github-app-private-key.js';
12
+ import { readHostSecret } from './secrets/host-secrets-reader.js';
13
+ import { createLogger } from './logger.js';
14
+ const logger = createLogger('github-utils');
15
+ /**
16
+ * Parse a GitHub URL and extract owner/repo
17
+ * Accepts formats like:
18
+ * - https://github.com/owner/repo
19
+ * - https://github.com/owner/repo.git
20
+ * - owner/repo (shorthand)
21
+ */
22
+ export function parseGitHubUrl(urlOrShorthand) {
23
+ if (!urlOrShorthand || typeof urlOrShorthand !== 'string') {
24
+ return {
25
+ owner: '',
26
+ repo: '',
27
+ isValid: false,
28
+ error: 'URL is required and must be a string',
29
+ };
30
+ }
31
+ const trimmed = urlOrShorthand.trim();
32
+ // Try shorthand format first (owner/repo)
33
+ if (!trimmed.startsWith('http')) {
34
+ const parts = trimmed.split('/');
35
+ if (parts.length === 2 && parts[0] && parts[1]) {
36
+ return {
37
+ owner: parts[0],
38
+ repo: parts[1],
39
+ isValid: true,
40
+ };
41
+ }
42
+ return {
43
+ owner: '',
44
+ repo: '',
45
+ isValid: false,
46
+ error: 'Invalid shorthand format. Use "owner/repo" or full GitHub URL',
47
+ };
48
+ }
49
+ // Parse full URL
50
+ try {
51
+ const url = new URL(trimmed);
52
+ if (url.hostname !== 'github.com') {
53
+ return {
54
+ owner: '',
55
+ repo: '',
56
+ isValid: false,
57
+ error: 'Only github.com URLs are supported',
58
+ };
59
+ }
60
+ const parts = url.pathname.split('/').filter((p) => p);
61
+ if (parts.length < 2) {
62
+ return {
63
+ owner: '',
64
+ repo: '',
65
+ isValid: false,
66
+ error: 'URL must contain owner/repo path',
67
+ };
68
+ }
69
+ const owner = parts[0];
70
+ const repo = parts[1].replace(/\.git$/, '');
71
+ return {
72
+ owner,
73
+ repo,
74
+ isValid: true,
75
+ };
76
+ }
77
+ catch (e) {
78
+ return {
79
+ owner: '',
80
+ repo: '',
81
+ isValid: false,
82
+ error: `Invalid URL: ${e instanceof Error ? e.message : String(e)}`,
83
+ };
84
+ }
85
+ }
86
+ /**
87
+ * Load and validate a GitHub App private key from disk
88
+ */
89
+ function loadAndValidatePrivateKey(privateKeyContent) {
90
+ const validation = validateGitHubAppPrivateKey(privateKeyContent);
91
+ if (!validation.ok || !validation.normalized) {
92
+ const message = validation.remediation
93
+ ? `${validation.error} ${validation.remediation}`
94
+ : validation.error;
95
+ throw new Error(message || 'GitHub App private key is not valid.');
96
+ }
97
+ return crypto.createPrivateKey(validation.normalized);
98
+ }
99
+ /**
100
+ * Generate a JWT for GitHub App authentication
101
+ */
102
+ async function generateJWT(appId, privateKey) {
103
+ const now = Math.floor(Date.now() / 1000);
104
+ const iat = now - 60; // account for clock skew
105
+ const exp = now + 10 * 60; // 10 minutes
106
+ const header = {
107
+ alg: 'RS256',
108
+ typ: 'JWT',
109
+ };
110
+ const payload = {
111
+ iss: appId,
112
+ iat,
113
+ exp,
114
+ };
115
+ const headerBase64 = Buffer.from(JSON.stringify(header)).toString('base64url');
116
+ const payloadBase64 = Buffer.from(JSON.stringify(payload)).toString('base64url');
117
+ const message = `${headerBase64}.${payloadBase64}`;
118
+ // Sign with RSA-SHA256
119
+ const signer = crypto.createSign('RSA-SHA256');
120
+ signer.update(message);
121
+ signer.end();
122
+ const signature = signer.sign(privateKey, 'base64url');
123
+ return `${message}.${signature}`;
124
+ }
125
+ /**
126
+ * Get the GitHub App installation ID for a repository
127
+ */
128
+ async function getInstallationId(jwt, owner, repo) {
129
+ return new Promise((resolve, reject) => {
130
+ const options = {
131
+ hostname: 'api.github.com',
132
+ path: `/repos/${owner}/${repo}/installation`,
133
+ method: 'GET',
134
+ headers: {
135
+ 'Authorization': `Bearer ${jwt}`,
136
+ 'Accept': 'application/vnd.github.machine-man-preview+json',
137
+ 'User-Agent': 'Kaseki-Agent',
138
+ },
139
+ };
140
+ const req = https.request(options, (res) => {
141
+ let data = '';
142
+ res.on('data', (chunk) => {
143
+ data += chunk;
144
+ });
145
+ res.on('end', () => {
146
+ if (res.statusCode !== 200) {
147
+ reject(new Error(`Failed to get installation ID: ${res.statusCode} ${data}`));
148
+ }
149
+ else {
150
+ try {
151
+ const json = JSON.parse(data);
152
+ resolve(json.id);
153
+ }
154
+ catch (e) {
155
+ reject(new Error(`Failed to parse installation response: ${e instanceof Error ? e.message : String(e)}`));
156
+ }
157
+ }
158
+ });
159
+ });
160
+ req.on('error', reject);
161
+ req.end();
162
+ });
163
+ }
164
+ /**
165
+ * Get a GitHub App installation access token
166
+ */
167
+ async function getAccessToken(jwt, installationId) {
168
+ return new Promise((resolve, reject) => {
169
+ const options = {
170
+ hostname: 'api.github.com',
171
+ path: `/app/installations/${installationId}/access_tokens`,
172
+ method: 'POST',
173
+ headers: {
174
+ 'Authorization': `Bearer ${jwt}`,
175
+ 'Accept': 'application/vnd.github.machine-man-preview+json',
176
+ 'User-Agent': 'Kaseki-Agent',
177
+ 'Content-Length': '0',
178
+ },
179
+ };
180
+ const req = https.request(options, (res) => {
181
+ let data = '';
182
+ res.on('data', (chunk) => {
183
+ data += chunk;
184
+ });
185
+ res.on('end', () => {
186
+ if (res.statusCode !== 201) {
187
+ reject(new Error(`Failed to get access token: ${res.statusCode} ${data}`));
188
+ }
189
+ else {
190
+ try {
191
+ const json = JSON.parse(data);
192
+ resolve({
193
+ token: json.token,
194
+ expires_at: json.expires_at,
195
+ });
196
+ }
197
+ catch (e) {
198
+ reject(new Error(`Failed to parse token response: ${e instanceof Error ? e.message : String(e)}`));
199
+ }
200
+ }
201
+ });
202
+ });
203
+ req.on('error', reject);
204
+ req.end();
205
+ });
206
+ }
207
+ /**
208
+ * Generate a GitHub App access token
209
+ *
210
+ * Loads GitHub App credentials from host secrets:
211
+ * - github_app_id
212
+ * - github_app_private_key
213
+ *
214
+ * Returns token, expires_at, and error fields
215
+ */
216
+ export async function generateGitHubAppToken(owner, repo, overrideAppId, overridePrivateKey) {
217
+ try {
218
+ const appId = overrideAppId || readHostSecret('github_app_id');
219
+ if (!appId) {
220
+ return {
221
+ error: 'GitHub App ID not found. Configure GITHUB_APP_ID_FILE or .kaseki/secrets/github_app_id',
222
+ };
223
+ }
224
+ const privateKeyContent = overridePrivateKey || readHostSecret('github_app_private_key');
225
+ if (!privateKeyContent) {
226
+ return {
227
+ error: 'GitHub App private key not found. Configure GITHUB_APP_PRIVATE_KEY_FILE or .kaseki/secrets/github_app_private_key',
228
+ };
229
+ }
230
+ // Load and validate private key
231
+ const privateKey = loadAndValidatePrivateKey(privateKeyContent);
232
+ // Generate JWT
233
+ const jwt = await generateJWT(appId, privateKey);
234
+ // Get installation ID
235
+ const installationId = await getInstallationId(jwt, owner, repo);
236
+ // Get access token
237
+ const tokenData = await getAccessToken(jwt, installationId);
238
+ return tokenData;
239
+ }
240
+ catch (error) {
241
+ const errorMessage = error instanceof Error ? error.message : String(error);
242
+ logger.error(`Failed to generate GitHub App token: ${errorMessage}`);
243
+ return {
244
+ error: errorMessage,
245
+ };
246
+ }
247
+ }
248
+ /**
249
+ * Fetch GitHub issues from a repository with filtering
250
+ *
251
+ * @param owner - GitHub repository owner
252
+ * @param repo - GitHub repository name
253
+ * @param token - GitHub API access token
254
+ * @param options - Filtering options
255
+ * @returns Array of issues matching the criteria
256
+ */
257
+ export async function fetchGitHubIssues(owner, repo, token, options = {}) {
258
+ const { labels = [], limit = 5, state = 'open' } = options;
259
+ return new Promise((resolve, reject) => {
260
+ // Build query parameters
261
+ const params = new URLSearchParams();
262
+ params.append('state', state);
263
+ params.append('sort', 'created');
264
+ params.append('direction', 'desc');
265
+ params.append('per_page', String(Math.min(limit, 100))); // GitHub max 100
266
+ if (labels.length > 0) {
267
+ params.append('labels', labels.join(','));
268
+ }
269
+ const path = `/repos/${owner}/${repo}/issues?${params.toString()}`;
270
+ const options_https = {
271
+ hostname: 'api.github.com',
272
+ path,
273
+ method: 'GET',
274
+ headers: {
275
+ 'Authorization': `token ${token}`,
276
+ 'Accept': 'application/vnd.github.v3+json',
277
+ 'User-Agent': 'Kaseki-Agent',
278
+ },
279
+ };
280
+ const req = https.request(options_https, (res) => {
281
+ let data = '';
282
+ res.on('data', (chunk) => {
283
+ data += chunk;
284
+ });
285
+ res.on('end', () => {
286
+ if (res.statusCode !== 200) {
287
+ const errorMsg = `GitHub API error: ${res.statusCode}`;
288
+ logger.error(errorMsg);
289
+ reject(new Error(errorMsg));
290
+ }
291
+ else {
292
+ try {
293
+ const issues = JSON.parse(data);
294
+ // Return only the first `limit` issues
295
+ resolve(issues.slice(0, limit));
296
+ }
297
+ catch (e) {
298
+ reject(new Error(`Failed to parse issues response: ${e instanceof Error ? e.message : String(e)}`));
299
+ }
300
+ }
301
+ });
302
+ });
303
+ req.on('error', (err) => {
304
+ logger.error(`GitHub API request failed: ${err.message}`);
305
+ reject(err);
306
+ });
307
+ req.end();
308
+ });
309
+ }
310
+ //# sourceMappingURL=github-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-utils.js","sourceRoot":"","sources":["../src/github-utils.ts"],"names":[],"mappings":"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"}