@generacy-ai/generacy-plugin-github-actions 0.0.0-preview-20260304013206
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.
- package/LICENSE +191 -0
- package/dist/client.d.ts +46 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +109 -0
- package/dist/client.js.map +1 -0
- package/dist/events/emitter.d.ts +40 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +104 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/types.d.ts +61 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +48 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/operations/artifacts.d.ts +46 -0
- package/dist/operations/artifacts.d.ts.map +1 -0
- package/dist/operations/artifacts.js +166 -0
- package/dist/operations/artifacts.js.map +1 -0
- package/dist/operations/check-runs.d.ts +58 -0
- package/dist/operations/check-runs.d.ts.map +1 -0
- package/dist/operations/check-runs.js +188 -0
- package/dist/operations/check-runs.js.map +1 -0
- package/dist/operations/jobs.d.ts +35 -0
- package/dist/operations/jobs.d.ts.map +1 -0
- package/dist/operations/jobs.js +134 -0
- package/dist/operations/jobs.js.map +1 -0
- package/dist/operations/runs.d.ts +49 -0
- package/dist/operations/runs.d.ts.map +1 -0
- package/dist/operations/runs.js +164 -0
- package/dist/operations/runs.js.map +1 -0
- package/dist/operations/workflows.d.ts +32 -0
- package/dist/operations/workflows.d.ts.map +1 -0
- package/dist/operations/workflows.js +138 -0
- package/dist/operations/workflows.js.map +1 -0
- package/dist/plugin.d.ts +254 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +471 -0
- package/dist/plugin.js.map +1 -0
- package/dist/polling/status-poller.d.ts +58 -0
- package/dist/polling/status-poller.d.ts.map +1 -0
- package/dist/polling/status-poller.js +167 -0
- package/dist/polling/status-poller.js.map +1 -0
- package/dist/polling/types.d.ts +54 -0
- package/dist/polling/types.d.ts.map +1 -0
- package/dist/polling/types.js +21 -0
- package/dist/polling/types.js.map +1 -0
- package/dist/types/artifacts.d.ts +49 -0
- package/dist/types/artifacts.d.ts.map +1 -0
- package/dist/types/artifacts.js +22 -0
- package/dist/types/artifacts.js.map +1 -0
- package/dist/types/check-runs.d.ts +123 -0
- package/dist/types/check-runs.d.ts.map +1 -0
- package/dist/types/check-runs.js +13 -0
- package/dist/types/check-runs.js.map +1 -0
- package/dist/types/config.d.ts +131 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +40 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/events.d.ts +69 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +19 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +13 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/jobs.d.ts +71 -0
- package/dist/types/jobs.d.ts.map +1 -0
- package/dist/types/jobs.js +19 -0
- package/dist/types/jobs.js.map +1 -0
- package/dist/types/workflows.d.ts +101 -0
- package/dist/types/workflows.d.ts.map +1 -0
- package/dist/types/workflows.js +19 -0
- package/dist/types/workflows.js.map +1 -0
- package/dist/utils/errors.d.ts +77 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +122 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/validation.d.ts +74 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +86 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { JobNotFoundError, RunNotFoundError } from '../utils/errors.js';
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
/**
|
|
4
|
+
* Map Octokit step response to our Step type
|
|
5
|
+
*/
|
|
6
|
+
function mapStep(step) {
|
|
7
|
+
return {
|
|
8
|
+
name: step.name ?? '',
|
|
9
|
+
status: step.status ?? 'queued',
|
|
10
|
+
conclusion: step.conclusion,
|
|
11
|
+
number: step.number ?? 0,
|
|
12
|
+
started_at: step.started_at ?? null,
|
|
13
|
+
completed_at: step.completed_at ?? null,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Map Octokit job response to our Job type
|
|
18
|
+
*/
|
|
19
|
+
function mapJob(job) {
|
|
20
|
+
return {
|
|
21
|
+
id: job.id,
|
|
22
|
+
run_id: job.run_id,
|
|
23
|
+
name: job.name ?? '',
|
|
24
|
+
status: job.status ?? 'queued',
|
|
25
|
+
conclusion: job.conclusion,
|
|
26
|
+
steps: (job.steps ?? []).map(mapStep),
|
|
27
|
+
started_at: job.started_at ?? null,
|
|
28
|
+
completed_at: job.completed_at ?? null,
|
|
29
|
+
runner_id: job.runner_id ?? null,
|
|
30
|
+
runner_name: job.runner_name ?? null,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
34
|
+
/**
|
|
35
|
+
* Get jobs for a workflow run
|
|
36
|
+
*
|
|
37
|
+
* @param client - GitHub API client
|
|
38
|
+
* @param runId - Workflow run ID
|
|
39
|
+
* @returns Array of jobs
|
|
40
|
+
*/
|
|
41
|
+
export async function getJobs(client, runId) {
|
|
42
|
+
const owner = client.getOwner();
|
|
43
|
+
const repo = client.getRepo();
|
|
44
|
+
try {
|
|
45
|
+
const response = await client.request((octokit) => octokit.rest.actions.listJobsForWorkflowRun({
|
|
46
|
+
owner,
|
|
47
|
+
repo,
|
|
48
|
+
run_id: runId,
|
|
49
|
+
}));
|
|
50
|
+
return response.jobs.map(mapJob);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof Error && error.message.includes('Not Found')) {
|
|
54
|
+
throw new RunNotFoundError(runId, error);
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get a specific job by ID
|
|
61
|
+
*
|
|
62
|
+
* @param client - GitHub API client
|
|
63
|
+
* @param jobId - Job ID
|
|
64
|
+
* @returns The job
|
|
65
|
+
*/
|
|
66
|
+
export async function getJob(client, jobId) {
|
|
67
|
+
const owner = client.getOwner();
|
|
68
|
+
const repo = client.getRepo();
|
|
69
|
+
try {
|
|
70
|
+
const job = await client.request((octokit) => octokit.rest.actions.getJobForWorkflowRun({
|
|
71
|
+
owner,
|
|
72
|
+
repo,
|
|
73
|
+
job_id: jobId,
|
|
74
|
+
}));
|
|
75
|
+
return mapJob(job);
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (error instanceof Error && error.message.includes('Not Found')) {
|
|
79
|
+
throw new JobNotFoundError(jobId, error);
|
|
80
|
+
}
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Download job logs
|
|
86
|
+
*
|
|
87
|
+
* @param client - GitHub API client
|
|
88
|
+
* @param jobId - Job ID
|
|
89
|
+
* @returns Job logs as a string
|
|
90
|
+
*/
|
|
91
|
+
export async function getJobLogs(client, jobId) {
|
|
92
|
+
const owner = client.getOwner();
|
|
93
|
+
const repo = client.getRepo();
|
|
94
|
+
try {
|
|
95
|
+
const response = await client.requestRaw((octokit) => octokit.rest.actions.downloadJobLogsForWorkflowRun({
|
|
96
|
+
owner,
|
|
97
|
+
repo,
|
|
98
|
+
job_id: jobId,
|
|
99
|
+
}));
|
|
100
|
+
// The response is a redirect URL, we need to follow it
|
|
101
|
+
if (typeof response === 'string') {
|
|
102
|
+
return response;
|
|
103
|
+
}
|
|
104
|
+
// Handle ArrayBuffer or similar response
|
|
105
|
+
if (response && typeof response === 'object' && 'data' in response) {
|
|
106
|
+
const data = response.data;
|
|
107
|
+
if (typeof data === 'string') {
|
|
108
|
+
return data;
|
|
109
|
+
}
|
|
110
|
+
if (data instanceof ArrayBuffer) {
|
|
111
|
+
return new TextDecoder().decode(data);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return String(response);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
if (error instanceof Error && error.message.includes('Not Found')) {
|
|
118
|
+
throw new JobNotFoundError(jobId, error);
|
|
119
|
+
}
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get failed jobs from a workflow run
|
|
125
|
+
*
|
|
126
|
+
* @param client - GitHub API client
|
|
127
|
+
* @param runId - Workflow run ID
|
|
128
|
+
* @returns Array of failed jobs
|
|
129
|
+
*/
|
|
130
|
+
export async function getFailedJobs(client, runId) {
|
|
131
|
+
const jobs = await getJobs(client, runId);
|
|
132
|
+
return jobs.filter((job) => job.conclusion === 'failure');
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/operations/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { GitHubClient } from '../client.js';
|
|
2
|
+
import type { WorkflowRun } from '../types/workflows.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get a specific workflow run by ID
|
|
5
|
+
*
|
|
6
|
+
* @param client - GitHub API client
|
|
7
|
+
* @param runId - Workflow run ID
|
|
8
|
+
* @returns The workflow run
|
|
9
|
+
*/
|
|
10
|
+
export declare function getWorkflowRun(client: GitHubClient, runId: number): Promise<WorkflowRun>;
|
|
11
|
+
/**
|
|
12
|
+
* List workflow runs for a workflow
|
|
13
|
+
*
|
|
14
|
+
* @param client - GitHub API client
|
|
15
|
+
* @param workflow - Workflow file name or ID
|
|
16
|
+
* @param options - List options
|
|
17
|
+
* @returns Array of workflow runs
|
|
18
|
+
*/
|
|
19
|
+
export declare function listWorkflowRuns(client: GitHubClient, workflow: string | number, options?: {
|
|
20
|
+
branch?: string;
|
|
21
|
+
event?: string;
|
|
22
|
+
status?: 'completed' | 'action_required' | 'cancelled' | 'failure' | 'neutral' | 'skipped' | 'stale' | 'success' | 'timed_out' | 'in_progress' | 'queued' | 'requested' | 'waiting' | 'pending';
|
|
23
|
+
per_page?: number;
|
|
24
|
+
page?: number;
|
|
25
|
+
}): Promise<WorkflowRun[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Cancel a workflow run
|
|
28
|
+
*
|
|
29
|
+
* @param client - GitHub API client
|
|
30
|
+
* @param runId - Workflow run ID
|
|
31
|
+
*/
|
|
32
|
+
export declare function cancelWorkflowRun(client: GitHubClient, runId: number): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Re-run a workflow run
|
|
35
|
+
*
|
|
36
|
+
* @param client - GitHub API client
|
|
37
|
+
* @param runId - Workflow run ID
|
|
38
|
+
* @returns The new workflow run
|
|
39
|
+
*/
|
|
40
|
+
export declare function rerunWorkflowRun(client: GitHubClient, runId: number): Promise<WorkflowRun>;
|
|
41
|
+
/**
|
|
42
|
+
* Re-run failed jobs in a workflow run
|
|
43
|
+
*
|
|
44
|
+
* @param client - GitHub API client
|
|
45
|
+
* @param runId - Workflow run ID
|
|
46
|
+
* @returns The updated workflow run
|
|
47
|
+
*/
|
|
48
|
+
export declare function rerunFailedJobs(client: GitHubClient, runId: number): Promise<WorkflowRun>;
|
|
49
|
+
//# sourceMappingURL=runs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/operations/runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAuCzD;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAoBtB;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,GAAG,iBAAiB,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAChM,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,WAAW,EAAE,CAAC,CAkBxB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAwBtB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,CAAC,CAwBtB"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { RunNotFoundError } from '../utils/errors.js';
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
/**
|
|
4
|
+
* Map Octokit workflow run response to our WorkflowRun type
|
|
5
|
+
*/
|
|
6
|
+
function mapWorkflowRun(run) {
|
|
7
|
+
return {
|
|
8
|
+
id: run.id,
|
|
9
|
+
name: run.name ?? '',
|
|
10
|
+
path: run.path ?? '',
|
|
11
|
+
head_branch: run.head_branch ?? '',
|
|
12
|
+
head_sha: run.head_sha ?? '',
|
|
13
|
+
status: run.status ?? 'queued',
|
|
14
|
+
conclusion: run.conclusion,
|
|
15
|
+
html_url: run.html_url ?? '',
|
|
16
|
+
created_at: run.created_at ?? '',
|
|
17
|
+
updated_at: run.updated_at ?? '',
|
|
18
|
+
run_started_at: run.run_started_at ?? null,
|
|
19
|
+
actor: run.actor
|
|
20
|
+
? {
|
|
21
|
+
id: run.actor.id,
|
|
22
|
+
login: run.actor.login,
|
|
23
|
+
avatar_url: run.actor.avatar_url ?? '',
|
|
24
|
+
type: run.actor.type ?? 'User',
|
|
25
|
+
}
|
|
26
|
+
: {
|
|
27
|
+
id: 0,
|
|
28
|
+
login: 'unknown',
|
|
29
|
+
avatar_url: '',
|
|
30
|
+
type: 'User',
|
|
31
|
+
},
|
|
32
|
+
event: run.event ?? '',
|
|
33
|
+
run_attempt: run.run_attempt ?? 1,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
37
|
+
/**
|
|
38
|
+
* Get a specific workflow run by ID
|
|
39
|
+
*
|
|
40
|
+
* @param client - GitHub API client
|
|
41
|
+
* @param runId - Workflow run ID
|
|
42
|
+
* @returns The workflow run
|
|
43
|
+
*/
|
|
44
|
+
export async function getWorkflowRun(client, runId) {
|
|
45
|
+
const owner = client.getOwner();
|
|
46
|
+
const repo = client.getRepo();
|
|
47
|
+
try {
|
|
48
|
+
const run = await client.request((octokit) => octokit.rest.actions.getWorkflowRun({
|
|
49
|
+
owner,
|
|
50
|
+
repo,
|
|
51
|
+
run_id: runId,
|
|
52
|
+
}));
|
|
53
|
+
return mapWorkflowRun(run);
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (error instanceof Error && error.message.includes('Not Found')) {
|
|
57
|
+
throw new RunNotFoundError(runId, error);
|
|
58
|
+
}
|
|
59
|
+
throw error;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* List workflow runs for a workflow
|
|
64
|
+
*
|
|
65
|
+
* @param client - GitHub API client
|
|
66
|
+
* @param workflow - Workflow file name or ID
|
|
67
|
+
* @param options - List options
|
|
68
|
+
* @returns Array of workflow runs
|
|
69
|
+
*/
|
|
70
|
+
export async function listWorkflowRuns(client, workflow, options) {
|
|
71
|
+
const owner = client.getOwner();
|
|
72
|
+
const repo = client.getRepo();
|
|
73
|
+
const runs = await client.request((octokit) => octokit.rest.actions.listWorkflowRuns({
|
|
74
|
+
owner,
|
|
75
|
+
repo,
|
|
76
|
+
workflow_id: workflow,
|
|
77
|
+
branch: options?.branch,
|
|
78
|
+
event: options?.event,
|
|
79
|
+
status: options?.status,
|
|
80
|
+
per_page: options?.per_page ?? 30,
|
|
81
|
+
page: options?.page ?? 1,
|
|
82
|
+
}));
|
|
83
|
+
return runs.workflow_runs.map(mapWorkflowRun);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Cancel a workflow run
|
|
87
|
+
*
|
|
88
|
+
* @param client - GitHub API client
|
|
89
|
+
* @param runId - Workflow run ID
|
|
90
|
+
*/
|
|
91
|
+
export async function cancelWorkflowRun(client, runId) {
|
|
92
|
+
const owner = client.getOwner();
|
|
93
|
+
const repo = client.getRepo();
|
|
94
|
+
try {
|
|
95
|
+
await client.request((octokit) => octokit.rest.actions.cancelWorkflowRun({
|
|
96
|
+
owner,
|
|
97
|
+
repo,
|
|
98
|
+
run_id: runId,
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
if (error instanceof Error && error.message.includes('Not Found')) {
|
|
103
|
+
throw new RunNotFoundError(runId, error);
|
|
104
|
+
}
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Re-run a workflow run
|
|
110
|
+
*
|
|
111
|
+
* @param client - GitHub API client
|
|
112
|
+
* @param runId - Workflow run ID
|
|
113
|
+
* @returns The new workflow run
|
|
114
|
+
*/
|
|
115
|
+
export async function rerunWorkflowRun(client, runId) {
|
|
116
|
+
const owner = client.getOwner();
|
|
117
|
+
const repo = client.getRepo();
|
|
118
|
+
try {
|
|
119
|
+
await client.request((octokit) => octokit.rest.actions.reRunWorkflow({
|
|
120
|
+
owner,
|
|
121
|
+
repo,
|
|
122
|
+
run_id: runId,
|
|
123
|
+
}));
|
|
124
|
+
// Wait a moment for the rerun to be created
|
|
125
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
126
|
+
// Fetch the updated run
|
|
127
|
+
return getWorkflowRun(client, runId);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (error instanceof Error && error.message.includes('Not Found')) {
|
|
131
|
+
throw new RunNotFoundError(runId, error);
|
|
132
|
+
}
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Re-run failed jobs in a workflow run
|
|
138
|
+
*
|
|
139
|
+
* @param client - GitHub API client
|
|
140
|
+
* @param runId - Workflow run ID
|
|
141
|
+
* @returns The updated workflow run
|
|
142
|
+
*/
|
|
143
|
+
export async function rerunFailedJobs(client, runId) {
|
|
144
|
+
const owner = client.getOwner();
|
|
145
|
+
const repo = client.getRepo();
|
|
146
|
+
try {
|
|
147
|
+
await client.request((octokit) => octokit.rest.actions.reRunWorkflowFailedJobs({
|
|
148
|
+
owner,
|
|
149
|
+
repo,
|
|
150
|
+
run_id: runId,
|
|
151
|
+
}));
|
|
152
|
+
// Wait a moment for the rerun to be created
|
|
153
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
154
|
+
// Fetch the updated run
|
|
155
|
+
return getWorkflowRun(client, runId);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
if (error instanceof Error && error.message.includes('Not Found')) {
|
|
159
|
+
throw new RunNotFoundError(runId, error);
|
|
160
|
+
}
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=runs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../../src/operations/runs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { GitHubClient } from '../client.js';
|
|
2
|
+
import type { WorkflowRun, TriggerWorkflowParams, Workflow } from '../types/workflows.js';
|
|
3
|
+
/**
|
|
4
|
+
* Trigger a workflow by workflow file name or ID
|
|
5
|
+
*
|
|
6
|
+
* @param client - GitHub API client
|
|
7
|
+
* @param params - Workflow trigger parameters
|
|
8
|
+
* @returns The newly created workflow run
|
|
9
|
+
*/
|
|
10
|
+
export declare function triggerWorkflow(client: GitHubClient, params: TriggerWorkflowParams): Promise<WorkflowRun>;
|
|
11
|
+
/**
|
|
12
|
+
* Trigger a workflow dispatch event
|
|
13
|
+
*
|
|
14
|
+
* @param client - GitHub API client
|
|
15
|
+
* @param workflow - Workflow file name or ID
|
|
16
|
+
* @param ref - Git ref (branch/tag)
|
|
17
|
+
* @param inputs - Workflow inputs
|
|
18
|
+
* @returns The newly created workflow run
|
|
19
|
+
*/
|
|
20
|
+
export declare function triggerWorkflowDispatch(client: GitHubClient, workflow: string, ref: string, inputs?: Record<string, string>): Promise<WorkflowRun>;
|
|
21
|
+
/**
|
|
22
|
+
* Get workflow ID by filename
|
|
23
|
+
*/
|
|
24
|
+
export declare function getWorkflowId(client: GitHubClient, filename: string): Promise<number>;
|
|
25
|
+
/**
|
|
26
|
+
* List all workflows in the repository
|
|
27
|
+
*
|
|
28
|
+
* @param client - GitHub API client
|
|
29
|
+
* @returns Array of workflows
|
|
30
|
+
*/
|
|
31
|
+
export declare function listWorkflows(client: GitHubClient): Promise<Workflow[]>;
|
|
32
|
+
//# sourceMappingURL=workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/operations/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAwC1F;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,WAAW,CAAC,CAmDtB;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAqB7E"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { WorkflowNotFoundError } from '../utils/errors.js';
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
/**
|
|
4
|
+
* Map Octokit workflow run response to our WorkflowRun type
|
|
5
|
+
*/
|
|
6
|
+
function mapWorkflowRun(run) {
|
|
7
|
+
return {
|
|
8
|
+
id: run.id,
|
|
9
|
+
workflow_id: run.workflow_id,
|
|
10
|
+
name: run.name ?? '',
|
|
11
|
+
path: run.path ?? '',
|
|
12
|
+
head_branch: run.head_branch ?? '',
|
|
13
|
+
head_sha: run.head_sha ?? '',
|
|
14
|
+
status: run.status ?? 'queued',
|
|
15
|
+
conclusion: run.conclusion,
|
|
16
|
+
html_url: run.html_url ?? '',
|
|
17
|
+
created_at: run.created_at ?? '',
|
|
18
|
+
updated_at: run.updated_at ?? '',
|
|
19
|
+
run_started_at: run.run_started_at ?? null,
|
|
20
|
+
actor: run.actor
|
|
21
|
+
? {
|
|
22
|
+
id: run.actor.id,
|
|
23
|
+
login: run.actor.login,
|
|
24
|
+
avatar_url: run.actor.avatar_url ?? '',
|
|
25
|
+
type: run.actor.type ?? 'User',
|
|
26
|
+
}
|
|
27
|
+
: {
|
|
28
|
+
id: 0,
|
|
29
|
+
login: 'unknown',
|
|
30
|
+
avatar_url: '',
|
|
31
|
+
type: 'User',
|
|
32
|
+
},
|
|
33
|
+
event: run.event ?? '',
|
|
34
|
+
run_attempt: run.run_attempt ?? 1,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/* eslint-enable @typescript-eslint/no-explicit-any */
|
|
38
|
+
/**
|
|
39
|
+
* Trigger a workflow by workflow file name or ID
|
|
40
|
+
*
|
|
41
|
+
* @param client - GitHub API client
|
|
42
|
+
* @param params - Workflow trigger parameters
|
|
43
|
+
* @returns The newly created workflow run
|
|
44
|
+
*/
|
|
45
|
+
export async function triggerWorkflow(client, params) {
|
|
46
|
+
const owner = client.getOwner();
|
|
47
|
+
const repo = client.getRepo();
|
|
48
|
+
const workflow = params.workflow;
|
|
49
|
+
const ref = params.ref ?? 'main';
|
|
50
|
+
try {
|
|
51
|
+
// Trigger the workflow dispatch event
|
|
52
|
+
await client.request((octokit) => octokit.rest.actions.createWorkflowDispatch({
|
|
53
|
+
owner,
|
|
54
|
+
repo,
|
|
55
|
+
workflow_id: workflow,
|
|
56
|
+
ref,
|
|
57
|
+
inputs: params.inputs,
|
|
58
|
+
}));
|
|
59
|
+
// Wait a moment for the run to be created
|
|
60
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
61
|
+
// Fetch the latest run for this workflow
|
|
62
|
+
const runs = await client.request((octokit) => octokit.rest.actions.listWorkflowRuns({
|
|
63
|
+
owner,
|
|
64
|
+
repo,
|
|
65
|
+
workflow_id: workflow,
|
|
66
|
+
event: 'workflow_dispatch',
|
|
67
|
+
per_page: 1,
|
|
68
|
+
}));
|
|
69
|
+
if (runs.workflow_runs.length === 0) {
|
|
70
|
+
throw new WorkflowNotFoundError(String(workflow));
|
|
71
|
+
}
|
|
72
|
+
const latestRun = runs.workflow_runs[0];
|
|
73
|
+
if (!latestRun) {
|
|
74
|
+
throw new WorkflowNotFoundError(String(workflow));
|
|
75
|
+
}
|
|
76
|
+
return mapWorkflowRun(latestRun);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error instanceof Error &&
|
|
80
|
+
error.message.includes('Not Found')) {
|
|
81
|
+
throw new WorkflowNotFoundError(String(workflow), error);
|
|
82
|
+
}
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Trigger a workflow dispatch event
|
|
88
|
+
*
|
|
89
|
+
* @param client - GitHub API client
|
|
90
|
+
* @param workflow - Workflow file name or ID
|
|
91
|
+
* @param ref - Git ref (branch/tag)
|
|
92
|
+
* @param inputs - Workflow inputs
|
|
93
|
+
* @returns The newly created workflow run
|
|
94
|
+
*/
|
|
95
|
+
export async function triggerWorkflowDispatch(client, workflow, ref, inputs) {
|
|
96
|
+
return triggerWorkflow(client, { workflow, ref, inputs });
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get workflow ID by filename
|
|
100
|
+
*/
|
|
101
|
+
export async function getWorkflowId(client, filename) {
|
|
102
|
+
const owner = client.getOwner();
|
|
103
|
+
const repo = client.getRepo();
|
|
104
|
+
const workflows = await client.request((octokit) => octokit.rest.actions.listRepoWorkflows({
|
|
105
|
+
owner,
|
|
106
|
+
repo,
|
|
107
|
+
}));
|
|
108
|
+
const workflow = workflows.workflows.find((w) => w.path.endsWith(filename) || w.name === filename);
|
|
109
|
+
if (!workflow) {
|
|
110
|
+
throw new WorkflowNotFoundError(filename);
|
|
111
|
+
}
|
|
112
|
+
return workflow.id;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* List all workflows in the repository
|
|
116
|
+
*
|
|
117
|
+
* @param client - GitHub API client
|
|
118
|
+
* @returns Array of workflows
|
|
119
|
+
*/
|
|
120
|
+
export async function listWorkflows(client) {
|
|
121
|
+
const owner = client.getOwner();
|
|
122
|
+
const repo = client.getRepo();
|
|
123
|
+
const result = await client.request((octokit) => octokit.rest.actions.listRepoWorkflows({
|
|
124
|
+
owner,
|
|
125
|
+
repo,
|
|
126
|
+
}));
|
|
127
|
+
return result.workflows.map((w) => ({
|
|
128
|
+
id: w.id,
|
|
129
|
+
name: w.name,
|
|
130
|
+
path: w.path,
|
|
131
|
+
state: w.state,
|
|
132
|
+
created_at: w.created_at,
|
|
133
|
+
updated_at: w.updated_at,
|
|
134
|
+
html_url: w.html_url,
|
|
135
|
+
badge_url: w.badge_url,
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/operations/workflows.ts"],"names":[],"mappings":"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"}
|