@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.
Files changed (86) hide show
  1. package/LICENSE +191 -0
  2. package/dist/client.d.ts +46 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +109 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/events/emitter.d.ts +40 -0
  7. package/dist/events/emitter.d.ts.map +1 -0
  8. package/dist/events/emitter.js +104 -0
  9. package/dist/events/emitter.js.map +1 -0
  10. package/dist/events/types.d.ts +61 -0
  11. package/dist/events/types.d.ts.map +1 -0
  12. package/dist/events/types.js +48 -0
  13. package/dist/events/types.js.map +1 -0
  14. package/dist/index.d.ts +15 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +27 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/operations/artifacts.d.ts +46 -0
  19. package/dist/operations/artifacts.d.ts.map +1 -0
  20. package/dist/operations/artifacts.js +166 -0
  21. package/dist/operations/artifacts.js.map +1 -0
  22. package/dist/operations/check-runs.d.ts +58 -0
  23. package/dist/operations/check-runs.d.ts.map +1 -0
  24. package/dist/operations/check-runs.js +188 -0
  25. package/dist/operations/check-runs.js.map +1 -0
  26. package/dist/operations/jobs.d.ts +35 -0
  27. package/dist/operations/jobs.d.ts.map +1 -0
  28. package/dist/operations/jobs.js +134 -0
  29. package/dist/operations/jobs.js.map +1 -0
  30. package/dist/operations/runs.d.ts +49 -0
  31. package/dist/operations/runs.d.ts.map +1 -0
  32. package/dist/operations/runs.js +164 -0
  33. package/dist/operations/runs.js.map +1 -0
  34. package/dist/operations/workflows.d.ts +32 -0
  35. package/dist/operations/workflows.d.ts.map +1 -0
  36. package/dist/operations/workflows.js +138 -0
  37. package/dist/operations/workflows.js.map +1 -0
  38. package/dist/plugin.d.ts +254 -0
  39. package/dist/plugin.d.ts.map +1 -0
  40. package/dist/plugin.js +471 -0
  41. package/dist/plugin.js.map +1 -0
  42. package/dist/polling/status-poller.d.ts +58 -0
  43. package/dist/polling/status-poller.d.ts.map +1 -0
  44. package/dist/polling/status-poller.js +167 -0
  45. package/dist/polling/status-poller.js.map +1 -0
  46. package/dist/polling/types.d.ts +54 -0
  47. package/dist/polling/types.d.ts.map +1 -0
  48. package/dist/polling/types.js +21 -0
  49. package/dist/polling/types.js.map +1 -0
  50. package/dist/types/artifacts.d.ts +49 -0
  51. package/dist/types/artifacts.d.ts.map +1 -0
  52. package/dist/types/artifacts.js +22 -0
  53. package/dist/types/artifacts.js.map +1 -0
  54. package/dist/types/check-runs.d.ts +123 -0
  55. package/dist/types/check-runs.d.ts.map +1 -0
  56. package/dist/types/check-runs.js +13 -0
  57. package/dist/types/check-runs.js.map +1 -0
  58. package/dist/types/config.d.ts +131 -0
  59. package/dist/types/config.d.ts.map +1 -0
  60. package/dist/types/config.js +40 -0
  61. package/dist/types/config.js.map +1 -0
  62. package/dist/types/events.d.ts +69 -0
  63. package/dist/types/events.d.ts.map +1 -0
  64. package/dist/types/events.js +19 -0
  65. package/dist/types/events.js.map +1 -0
  66. package/dist/types/index.d.ts +7 -0
  67. package/dist/types/index.d.ts.map +1 -0
  68. package/dist/types/index.js +13 -0
  69. package/dist/types/index.js.map +1 -0
  70. package/dist/types/jobs.d.ts +71 -0
  71. package/dist/types/jobs.d.ts.map +1 -0
  72. package/dist/types/jobs.js +19 -0
  73. package/dist/types/jobs.js.map +1 -0
  74. package/dist/types/workflows.d.ts +101 -0
  75. package/dist/types/workflows.d.ts.map +1 -0
  76. package/dist/types/workflows.js +19 -0
  77. package/dist/types/workflows.js.map +1 -0
  78. package/dist/utils/errors.d.ts +77 -0
  79. package/dist/utils/errors.d.ts.map +1 -0
  80. package/dist/utils/errors.js +122 -0
  81. package/dist/utils/errors.js.map +1 -0
  82. package/dist/utils/validation.d.ts +74 -0
  83. package/dist/utils/validation.d.ts.map +1 -0
  84. package/dist/utils/validation.js +86 -0
  85. package/dist/utils/validation.js.map +1 -0
  86. 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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"}