@agent-relay/github-primitive 4.0.9 → 4.0.40

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 (65) hide show
  1. package/dist/actions/branches.d.ts +13 -0
  2. package/dist/actions/branches.d.ts.map +1 -0
  3. package/dist/actions/branches.js +59 -0
  4. package/dist/actions/branches.js.map +1 -0
  5. package/dist/actions/commits.d.ts +15 -0
  6. package/dist/actions/commits.d.ts.map +1 -0
  7. package/dist/actions/commits.js +71 -0
  8. package/dist/actions/commits.js.map +1 -0
  9. package/dist/actions/files.d.ts +40 -0
  10. package/dist/actions/files.d.ts.map +1 -0
  11. package/dist/actions/files.js +133 -0
  12. package/dist/actions/files.js.map +1 -0
  13. package/dist/actions/issues.d.ts +29 -0
  14. package/dist/actions/issues.d.ts.map +1 -0
  15. package/dist/actions/issues.js +120 -0
  16. package/dist/actions/issues.js.map +1 -0
  17. package/dist/actions/pulls.d.ts +40 -0
  18. package/dist/actions/pulls.d.ts.map +1 -0
  19. package/dist/actions/pulls.js +169 -0
  20. package/dist/actions/pulls.js.map +1 -0
  21. package/dist/actions/repos.d.ts +18 -0
  22. package/dist/actions/repos.d.ts.map +1 -0
  23. package/dist/actions/repos.js +70 -0
  24. package/dist/actions/repos.js.map +1 -0
  25. package/dist/actions/users.d.ts +13 -0
  26. package/dist/actions/users.d.ts.map +1 -0
  27. package/dist/actions/users.js +51 -0
  28. package/dist/actions/users.js.map +1 -0
  29. package/dist/actions/utils.d.ts +39 -0
  30. package/dist/actions/utils.d.ts.map +1 -0
  31. package/dist/actions/utils.js +173 -0
  32. package/dist/actions/utils.js.map +1 -0
  33. package/dist/adapter.d.ts +49 -0
  34. package/dist/adapter.d.ts.map +1 -0
  35. package/dist/adapter.js +493 -0
  36. package/dist/adapter.js.map +1 -0
  37. package/dist/client.d.ts +149 -0
  38. package/dist/client.d.ts.map +1 -0
  39. package/dist/client.js +254 -0
  40. package/dist/client.js.map +1 -0
  41. package/dist/cloud-runtime.d.ts +31 -0
  42. package/dist/cloud-runtime.d.ts.map +1 -0
  43. package/dist/cloud-runtime.js +202 -0
  44. package/dist/cloud-runtime.js.map +1 -0
  45. package/dist/constants.d.ts +8 -0
  46. package/dist/constants.d.ts.map +1 -0
  47. package/dist/constants.js +8 -0
  48. package/dist/constants.js.map +1 -0
  49. package/dist/index.d.ts +15 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +15 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/local-runtime.d.ts +46 -0
  54. package/dist/local-runtime.d.ts.map +1 -0
  55. package/dist/local-runtime.js +225 -0
  56. package/dist/local-runtime.js.map +1 -0
  57. package/dist/types.d.ts +513 -0
  58. package/dist/types.d.ts.map +1 -0
  59. package/dist/types.js +50 -0
  60. package/dist/types.js.map +1 -0
  61. package/dist/workflow-step.d.ts +79 -0
  62. package/dist/workflow-step.d.ts.map +1 -0
  63. package/dist/workflow-step.js +459 -0
  64. package/dist/workflow-step.js.map +1 -0
  65. package/package.json +2 -2
@@ -0,0 +1,169 @@
1
+ import { asArray, asRecord, assertNonEmptyString, assertOwnerRepo, assertPositiveInteger, booleanValue, mapGitHubOwner, mapLogin, mapLogins, numberValue, hasDefinedValue, optionalRecord, optionalString, queryWithPerPage, removeUndefinedValues, repoEndpoint, stateValue, stringValue, withActionError, } from './utils.js';
2
+ /**
3
+ * List pull requests for a repository.
4
+ *
5
+ * Query options are mapped to GitHub REST parameters and the adapter determines
6
+ * whether the call is executed through `gh api` or the configured cloud proxy.
7
+ */
8
+ export async function listPRs(adapter, owner, repo, options = {}) {
9
+ return withActionError(`list GitHub pull requests for ${owner}/${repo}`, async () => {
10
+ assertOwnerRepo(owner, repo);
11
+ const query = queryWithPerPage({
12
+ state: options.state,
13
+ base: options.base,
14
+ head: options.head,
15
+ sort: options.sort,
16
+ direction: options.direction,
17
+ }, options.perPage);
18
+ const response = await adapter.request('GET', repoEndpoint(owner, repo, '/pulls'), {
19
+ query,
20
+ });
21
+ return asArray(response, 'pull requests').map(mapPR);
22
+ });
23
+ }
24
+ /**
25
+ * Fetch a single pull request by number.
26
+ */
27
+ export async function getPR(adapter, owner, repo, number) {
28
+ return withActionError(`get GitHub pull request #${number} in ${owner}/${repo}`, async () => {
29
+ assertOwnerRepo(owner, repo);
30
+ assertPositiveInteger(number, 'pull request number');
31
+ const response = await adapter.request('GET', repoEndpoint(owner, repo, `/pulls/${number}`));
32
+ return mapPR(response);
33
+ });
34
+ }
35
+ /**
36
+ * Create a pull request.
37
+ *
38
+ * The supplied base and head refs are passed directly to the GitHub REST API,
39
+ * supporting same-repository branches and owner-qualified fork refs.
40
+ */
41
+ export async function createPR(adapter, owner, repo, title, body, base, head, options = {}) {
42
+ return withActionError(`create GitHub pull request in ${owner}/${repo}`, async () => {
43
+ assertOwnerRepo(owner, repo);
44
+ const prTitle = assertNonEmptyString(title, 'pull request title');
45
+ const baseRef = assertNonEmptyString(base, 'pull request base');
46
+ const headRef = assertNonEmptyString(head, 'pull request head');
47
+ const response = await adapter.request('POST', repoEndpoint(owner, repo, '/pulls'), {
48
+ body: removeUndefinedValues({
49
+ title: prTitle,
50
+ body,
51
+ base: baseRef,
52
+ head: headRef,
53
+ draft: options.draft,
54
+ maintainer_can_modify: options.maintainerCanModify,
55
+ }),
56
+ });
57
+ return mapPR(response);
58
+ });
59
+ }
60
+ /**
61
+ * Update an existing pull request.
62
+ *
63
+ * At least one update field must be provided. GitHub accepts base branch
64
+ * changes and maintainer edit permissions through the same endpoint.
65
+ */
66
+ export async function updatePR(adapter, owner, repo, number, updates) {
67
+ return withActionError(`update GitHub pull request #${number} in ${owner}/${repo}`, async () => {
68
+ assertOwnerRepo(owner, repo);
69
+ assertPositiveInteger(number, 'pull request number');
70
+ if (!hasDefinedValue(updates)) {
71
+ throw new Error('At least one pull request update field must be provided.');
72
+ }
73
+ const response = await adapter.request('PATCH', repoEndpoint(owner, repo, `/pulls/${number}`), {
74
+ body: removeUndefinedValues({
75
+ title: updates.title,
76
+ body: updates.body,
77
+ state: updates.state,
78
+ base: updates.base,
79
+ maintainer_can_modify: updates.maintainerCanModify,
80
+ }),
81
+ });
82
+ return mapPR(response);
83
+ });
84
+ }
85
+ /**
86
+ * Merge a pull request and return the fresh pull request representation.
87
+ *
88
+ * GitHub's merge endpoint returns a small confirmation payload, so this action
89
+ * fetches the pull request after a successful merge to preserve the typed PR
90
+ * return value used by the primitive.
91
+ */
92
+ export async function mergePR(adapter, owner, repo, number, options = {}) {
93
+ return withActionError(`merge GitHub pull request #${number} in ${owner}/${repo}`, async () => {
94
+ assertOwnerRepo(owner, repo);
95
+ assertPositiveInteger(number, 'pull request number');
96
+ await adapter.request('PUT', repoEndpoint(owner, repo, `/pulls/${number}/merge`), {
97
+ body: removeUndefinedValues({
98
+ commit_title: options.commitTitle,
99
+ commit_message: options.commitMessage,
100
+ merge_method: options.mergeMethod,
101
+ }),
102
+ });
103
+ return getPR(adapter, owner, repo, number);
104
+ });
105
+ }
106
+ export function mapPR(value) {
107
+ const pull = asRecord(value, 'pull request');
108
+ const base = asRecord(pull.base, 'pull request base');
109
+ const head = asRecord(pull.head, 'pull request head');
110
+ const baseRepo = optionalRecord(base.repo);
111
+ const headRepo = optionalRecord(head.repo);
112
+ return {
113
+ number: numberValue(pull.number),
114
+ id: numberValue(pull.id),
115
+ title: stringValue(pull.title),
116
+ body: optionalString(pull.body),
117
+ user: mapGitHubOwner(pull.user),
118
+ state: stateValue(pull.state),
119
+ draft: booleanValue(pull.draft),
120
+ locked: booleanValue(pull.locked),
121
+ mergeable: typeof pull.mergeable === 'boolean' ? pull.mergeable : undefined,
122
+ mergeableState: stringValue(pull.mergeable_state),
123
+ merged: booleanValue(pull.merged),
124
+ mergedAt: optionalString(pull.merged_at),
125
+ mergedBy: pull.merged_by ? mapLogin(pull.merged_by) : undefined,
126
+ base: {
127
+ ref: stringValue(base.ref),
128
+ sha: stringValue(base.sha),
129
+ repo: {
130
+ name: stringValue(baseRepo?.name),
131
+ fullName: stringValue(baseRepo?.full_name),
132
+ },
133
+ },
134
+ head: {
135
+ ref: stringValue(head.ref),
136
+ sha: stringValue(head.sha),
137
+ repo: headRepo
138
+ ? {
139
+ name: stringValue(headRepo.name),
140
+ fullName: stringValue(headRepo.full_name),
141
+ }
142
+ : undefined,
143
+ },
144
+ requestedReviewers: mapLogins(pull.requested_reviewers),
145
+ labels: Array.isArray(pull.labels) ? pull.labels.map(mapPullLabel) : [],
146
+ commentsCount: numberValue(pull.comments),
147
+ reviewCommentsCount: numberValue(pull.review_comments),
148
+ commitsCount: numberValue(pull.commits),
149
+ additionsCount: numberValue(pull.additions),
150
+ deletionsCount: numberValue(pull.deletions),
151
+ changedFilesCount: numberValue(pull.changed_files),
152
+ createdAt: stringValue(pull.created_at),
153
+ updatedAt: stringValue(pull.updated_at),
154
+ };
155
+ }
156
+ function mapPullLabel(value) {
157
+ if (typeof value === 'string') {
158
+ return {
159
+ name: value,
160
+ color: '',
161
+ };
162
+ }
163
+ const label = asRecord(value, 'pull request label');
164
+ return {
165
+ name: stringValue(label.name),
166
+ color: stringValue(label.color),
167
+ };
168
+ }
169
+ //# sourceMappingURL=pulls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulls.js","sourceRoot":"","sources":["../../src/actions/pulls.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ListReposParams, Repo } from '../types.js';
2
+ import { type GitHubActionAdapter } from './utils.js';
3
+ /**
4
+ * List repositories visible to the authenticated GitHub identity.
5
+ *
6
+ * The action delegates to the supplied adapter, so local runtimes use `gh api`
7
+ * and cloud runtimes use the configured Nango or relay-cloud proxy.
8
+ */
9
+ export declare function listRepos(adapter: GitHubActionAdapter, options?: ListReposParams): Promise<Repo[]>;
10
+ /**
11
+ * Fetch a single repository by owner and repository name.
12
+ *
13
+ * The same REST endpoint is used for both local and cloud runtimes through the
14
+ * adapter request abstraction.
15
+ */
16
+ export declare function getRepo(adapter: GitHubActionAdapter, owner: string, repo: string): Promise<Repo>;
17
+ export declare function mapRepo(value: unknown): Repo;
18
+ //# sourceMappingURL=repos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repos.d.ts","sourceRoot":"","sources":["../../src/actions/repos.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAaL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,EAAE,CAAC,CAejB;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtG;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAmC5C"}
@@ -0,0 +1,70 @@
1
+ import { asArray, asRecord, booleanValue, mapGitHubOwner, numberValue, optionalRecord, optionalString, queryWithPerPage, repoEndpoint, stringValue, visibilityValue, withActionError, } from './utils.js';
2
+ /**
3
+ * List repositories visible to the authenticated GitHub identity.
4
+ *
5
+ * The action delegates to the supplied adapter, so local runtimes use `gh api`
6
+ * and cloud runtimes use the configured Nango or relay-cloud proxy.
7
+ */
8
+ export async function listRepos(adapter, options = {}) {
9
+ return withActionError('list GitHub repositories', async () => {
10
+ const query = queryWithPerPage({
11
+ visibility: options.visibility,
12
+ affiliation: options.affiliation,
13
+ sort: options.sort,
14
+ direction: options.direction,
15
+ }, options.perPage);
16
+ const response = await adapter.request('GET', '/user/repos', { query });
17
+ return asArray(response, 'repositories').map(mapRepo);
18
+ });
19
+ }
20
+ /**
21
+ * Fetch a single repository by owner and repository name.
22
+ *
23
+ * The same REST endpoint is used for both local and cloud runtimes through the
24
+ * adapter request abstraction.
25
+ */
26
+ export async function getRepo(adapter, owner, repo) {
27
+ return withActionError(`get GitHub repository ${owner}/${repo}`, async () => {
28
+ const response = await adapter.request('GET', repoEndpoint(owner, repo));
29
+ return mapRepo(response);
30
+ });
31
+ }
32
+ export function mapRepo(value) {
33
+ const repo = asRecord(value, 'repository');
34
+ const isPrivate = booleanValue(repo.private);
35
+ const permissions = optionalRecord(repo.permissions);
36
+ return {
37
+ id: numberValue(repo.id),
38
+ name: stringValue(repo.name),
39
+ fullName: stringValue(repo.full_name, stringValue(repo.name)),
40
+ owner: mapGitHubOwner(repo.owner),
41
+ description: optionalString(repo.description),
42
+ private: isPrivate,
43
+ fork: booleanValue(repo.fork),
44
+ createdAt: stringValue(repo.created_at),
45
+ updatedAt: stringValue(repo.updated_at),
46
+ pushedAt: stringValue(repo.pushed_at),
47
+ size: numberValue(repo.size),
48
+ stargazersCount: numberValue(repo.stargazers_count),
49
+ watchersCount: numberValue(repo.watchers_count),
50
+ language: optionalString(repo.language),
51
+ forksCount: numberValue(repo.forks_count),
52
+ openIssuesCount: numberValue(repo.open_issues_count),
53
+ defaultBranch: stringValue(repo.default_branch),
54
+ topics: Array.isArray(repo.topics) ? repo.topics.filter(isString) : [],
55
+ visibility: visibilityValue(repo.visibility, isPrivate),
56
+ permissions: permissions
57
+ ? {
58
+ admin: booleanValue(permissions.admin),
59
+ maintain: booleanValue(permissions.maintain),
60
+ push: booleanValue(permissions.push),
61
+ triage: booleanValue(permissions.triage),
62
+ pull: booleanValue(permissions.pull),
63
+ }
64
+ : undefined,
65
+ };
66
+ }
67
+ function isString(value) {
68
+ return typeof value === 'string';
69
+ }
70
+ //# sourceMappingURL=repos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repos.js","sourceRoot":"","sources":["../../src/actions/repos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { GetUserParams, GitHubUserSummary, ListOrganizationsParams, OrganizationInfo } from '../types.js';
2
+ import { type GitHubActionAdapter } from './utils.js';
3
+ /**
4
+ * Fetch the authenticated user, or a public user by username.
5
+ */
6
+ export declare function getUser(adapter: GitHubActionAdapter, params?: GetUserParams): Promise<GitHubUserSummary>;
7
+ /**
8
+ * List organizations for the authenticated user, or for a public user.
9
+ */
10
+ export declare function listOrganizations(adapter: GitHubActionAdapter, params?: ListOrganizationsParams): Promise<OrganizationInfo[]>;
11
+ export declare function mapUser(value: unknown): GitHubUserSummary;
12
+ export declare function mapOrganization(value: unknown): OrganizationInfo;
13
+ //# sourceMappingURL=users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../src/actions/users.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EASL,KAAK,mBAAmB,EACzB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAQ5B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,mBAAmB,EAC5B,MAAM,GAAE,uBAA4B,GACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW7B;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAczD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAUhE"}
@@ -0,0 +1,51 @@
1
+ import { asArray, asRecord, assertNonEmptyString, numberValue, optionalString, queryWithPerPage, stringValue, withActionError, } from './utils.js';
2
+ /**
3
+ * Fetch the authenticated user, or a public user by username.
4
+ */
5
+ export async function getUser(adapter, params = {}) {
6
+ return withActionError('get GitHub user', async () => {
7
+ const path = params.username
8
+ ? `/users/${encodeURIComponent(assertNonEmptyString(params.username, 'username'))}`
9
+ : '/user';
10
+ const response = await adapter.request('GET', path);
11
+ return mapUser(response);
12
+ });
13
+ }
14
+ /**
15
+ * List organizations for the authenticated user, or for a public user.
16
+ */
17
+ export async function listOrganizations(adapter, params = {}) {
18
+ return withActionError('list GitHub organizations', async () => {
19
+ const path = params.username
20
+ ? `/users/${encodeURIComponent(assertNonEmptyString(params.username, 'username'))}/orgs`
21
+ : '/user/orgs';
22
+ const response = await adapter.request('GET', path, {
23
+ query: queryWithPerPage({}, params.perPage),
24
+ });
25
+ return asArray(response, 'organizations').map(mapOrganization);
26
+ });
27
+ }
28
+ export function mapUser(value) {
29
+ const user = asRecord(value, 'user');
30
+ const login = stringValue(user.login);
31
+ if (!login) {
32
+ throw new Error('GitHub user response did not include a login.');
33
+ }
34
+ return {
35
+ login,
36
+ name: optionalString(user.name),
37
+ id: numberValue(user.id),
38
+ type: optionalString(user.type),
39
+ };
40
+ }
41
+ export function mapOrganization(value) {
42
+ const organization = asRecord(value, 'organization');
43
+ return {
44
+ login: stringValue(organization.login),
45
+ id: numberValue(organization.id),
46
+ description: optionalString(organization.description),
47
+ url: optionalString(organization.url),
48
+ avatarUrl: optionalString(organization.avatar_url),
49
+ };
50
+ }
51
+ //# sourceMappingURL=users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/actions/users.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,OAAO,EACP,QAAQ,EACR,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,GAEhB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAA4B,EAC5B,SAAwB,EAAE;IAE1B,OAAO,eAAe,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;YAC1B,CAAC,CAAC,UAAU,kBAAkB,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,EAAE;YACnF,CAAC,CAAC,OAAO,CAAC;QACZ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA4B,EAC5B,SAAkC,EAAE;IAEpC,OAAO,eAAe,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;YAC1B,CAAC,CAAC,UAAU,kBAAkB,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,OAAO;YACxF,CAAC,CAAC,YAAY,CAAC;QACjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAU,KAAK,EAAE,IAAI,EAAE;YAC3D,KAAK,EAAE,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC;SAC5C,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,KAAK;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAErD,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC;QACtC,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,WAAW,EAAE,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC;QACrD,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC;QACrC,SAAS,EAAE,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { type GitHubApiRequestMethod, type GitHubApiRequestOptions, type GitHubOwner, type GitHubQueryParams, type GitHubRuntime } from '../types.js';
2
+ export interface GitHubActionAdapter {
3
+ getRuntime(): GitHubRuntime;
4
+ request<TResponse = unknown>(method: GitHubApiRequestMethod, path: string, options?: GitHubApiRequestOptions): Promise<TResponse>;
5
+ }
6
+ export type UnknownRecord = Record<string, unknown>;
7
+ export declare function withActionError<T>(description: string, operation: () => Promise<T>): Promise<T>;
8
+ export declare function assertOwnerRepo(owner: string, repo: string): void;
9
+ export declare function assertNonEmptyString(value: string | undefined, name: string): string;
10
+ export declare function assertPositiveInteger(value: number, name: string): number;
11
+ export declare function repoEndpoint(owner: string, repo: string, suffix?: string): string;
12
+ export declare function contentsEndpoint(owner: string, repo: string, path?: string): string;
13
+ export declare function branchEndpoint(owner: string, repo: string, branch: string): string;
14
+ export declare function normalizeRepoPath(path: string | undefined): string;
15
+ export declare function normalizePerPage(perPage: number | undefined): number | undefined;
16
+ export declare function removeUndefinedValues(values: Record<string, unknown>): Record<string, Exclude<unknown, undefined>>;
17
+ export declare function hasDefinedValue(values: Record<string, unknown>): boolean;
18
+ export declare function optionalRecord(value: unknown): Record<string, unknown> | undefined;
19
+ export declare function appendQuery(path: string, query: GitHubQueryParams | undefined): string;
20
+ export declare function nonEmpty(value: string | undefined): string | undefined;
21
+ export declare function trimTrailingSlash(value: string | undefined): string | undefined;
22
+ export declare function queryWithPerPage(query: GitHubQueryParams, perPage: number | undefined): GitHubQueryParams;
23
+ export declare function asRecord(value: unknown, name: string): UnknownRecord;
24
+ export declare function asArray(value: unknown, name: string): unknown[];
25
+ export declare function mapGitHubOwner(value: unknown): GitHubOwner;
26
+ export declare function mapLogin(value: unknown): {
27
+ login: string;
28
+ };
29
+ export declare function mapLogins(value: unknown): Array<{
30
+ login: string;
31
+ }>;
32
+ export declare function stringValue(value: unknown, fallback?: string): string;
33
+ export declare function optionalString(value: unknown): string | undefined;
34
+ export declare function numberValue(value: unknown, fallback?: number): number;
35
+ export declare function booleanValue(value: unknown, fallback?: boolean): boolean;
36
+ export declare function stateValue(value: unknown): 'open' | 'closed';
37
+ export declare function visibilityValue(value: unknown, isPrivate: boolean): 'public' | 'private' | 'internal';
38
+ export declare function errorMessage(error: unknown): string;
39
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/actions/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import { GitHubApiError, } from '../types.js';
2
+ export async function withActionError(description, operation) {
3
+ try {
4
+ return await operation();
5
+ }
6
+ catch (error) {
7
+ if (error instanceof GitHubApiError) {
8
+ throw new GitHubApiError(`Failed to ${description}: ${error.message}`, {
9
+ status: error.status,
10
+ responseBody: error.responseBody,
11
+ responseHeaders: error.responseHeaders,
12
+ cause: error,
13
+ });
14
+ }
15
+ throw new GitHubApiError(`Failed to ${description}: ${errorMessage(error)}`, { cause: error });
16
+ }
17
+ }
18
+ export function assertOwnerRepo(owner, repo) {
19
+ assertNonEmptyString(owner, 'owner');
20
+ assertNonEmptyString(repo, 'repo');
21
+ }
22
+ export function assertNonEmptyString(value, name) {
23
+ if (typeof value !== 'string' || !value.trim()) {
24
+ throw new GitHubApiError(`GitHub ${name} must be a non-empty string.`);
25
+ }
26
+ return value.trim();
27
+ }
28
+ export function assertPositiveInteger(value, name) {
29
+ if (!Number.isInteger(value) || value < 1) {
30
+ throw new GitHubApiError(`GitHub ${name} must be a positive integer.`);
31
+ }
32
+ return value;
33
+ }
34
+ export function repoEndpoint(owner, repo, suffix = '') {
35
+ assertOwnerRepo(owner, repo);
36
+ return `/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}${suffix}`;
37
+ }
38
+ export function contentsEndpoint(owner, repo, path = '') {
39
+ const normalizedPath = normalizeRepoPath(path);
40
+ const suffix = normalizedPath ? `/contents/${encodeRepoPath(normalizedPath)}` : '/contents';
41
+ return repoEndpoint(owner, repo, suffix);
42
+ }
43
+ export function branchEndpoint(owner, repo, branch) {
44
+ const normalizedBranch = assertNonEmptyString(branch, 'branch');
45
+ return repoEndpoint(owner, repo, `/branches/${encodeURIComponent(normalizedBranch)}`);
46
+ }
47
+ export function normalizeRepoPath(path) {
48
+ return path?.trim().replace(/^\/+/, '').replace(/\/+$/, '') ?? '';
49
+ }
50
+ export function normalizePerPage(perPage) {
51
+ if (typeof perPage === 'undefined') {
52
+ return undefined;
53
+ }
54
+ if (!Number.isInteger(perPage) || perPage < 1) {
55
+ throw new GitHubApiError('GitHub perPage must be a positive integer.');
56
+ }
57
+ return Math.min(perPage, 100);
58
+ }
59
+ export function removeUndefinedValues(values) {
60
+ const result = {};
61
+ for (const [key, value] of Object.entries(values)) {
62
+ if (typeof value !== 'undefined') {
63
+ result[key] = value;
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+ export function hasDefinedValue(values) {
69
+ return Object.values(values).some((value) => typeof value !== 'undefined');
70
+ }
71
+ export function optionalRecord(value) {
72
+ return typeof value === 'object' && value !== null && !Array.isArray(value)
73
+ ? value
74
+ : undefined;
75
+ }
76
+ export function appendQuery(path, query) {
77
+ if (!query) {
78
+ return path;
79
+ }
80
+ const params = new URLSearchParams();
81
+ for (const [name, rawValue] of Object.entries(query)) {
82
+ const values = Array.isArray(rawValue) ? rawValue : [rawValue];
83
+ for (const value of values) {
84
+ if (value !== null && typeof value !== 'undefined') {
85
+ params.append(name, String(value));
86
+ }
87
+ }
88
+ }
89
+ const serialized = params.toString();
90
+ if (!serialized) {
91
+ return path;
92
+ }
93
+ return `${path}${path.includes('?') ? '&' : '?'}${serialized}`;
94
+ }
95
+ export function nonEmpty(value) {
96
+ const trimmed = value?.trim();
97
+ return trimmed ? trimmed : undefined;
98
+ }
99
+ export function trimTrailingSlash(value) {
100
+ const trimmed = nonEmpty(value);
101
+ return trimmed?.replace(/\/+$/, '');
102
+ }
103
+ export function queryWithPerPage(query, perPage) {
104
+ const normalizedPerPage = normalizePerPage(perPage);
105
+ return typeof normalizedPerPage === 'undefined'
106
+ ? query
107
+ : {
108
+ ...query,
109
+ per_page: normalizedPerPage,
110
+ };
111
+ }
112
+ export function asRecord(value, name) {
113
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
114
+ throw new GitHubApiError(`GitHub API response for ${name} was not an object.`);
115
+ }
116
+ return value;
117
+ }
118
+ export function asArray(value, name) {
119
+ if (!Array.isArray(value)) {
120
+ throw new GitHubApiError(`GitHub API response for ${name} was not an array.`);
121
+ }
122
+ return value;
123
+ }
124
+ export function mapGitHubOwner(value) {
125
+ const owner = asRecord(value, 'owner');
126
+ return {
127
+ login: stringValue(owner.login),
128
+ type: stringValue(owner.type, 'User'),
129
+ id: numberValue(owner.id),
130
+ avatarUrl: optionalString(owner.avatar_url),
131
+ htmlUrl: optionalString(owner.html_url),
132
+ };
133
+ }
134
+ export function mapLogin(value) {
135
+ const record = asRecord(value, 'user');
136
+ return {
137
+ login: stringValue(record.login),
138
+ };
139
+ }
140
+ export function mapLogins(value) {
141
+ if (!Array.isArray(value)) {
142
+ return [];
143
+ }
144
+ return value.map(mapLogin);
145
+ }
146
+ export function stringValue(value, fallback = '') {
147
+ return typeof value === 'string' ? value : fallback;
148
+ }
149
+ export function optionalString(value) {
150
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
151
+ }
152
+ export function numberValue(value, fallback = 0) {
153
+ return typeof value === 'number' && Number.isFinite(value) ? value : fallback;
154
+ }
155
+ export function booleanValue(value, fallback = false) {
156
+ return typeof value === 'boolean' ? value : fallback;
157
+ }
158
+ export function stateValue(value) {
159
+ return value === 'closed' ? 'closed' : 'open';
160
+ }
161
+ export function visibilityValue(value, isPrivate) {
162
+ if (value === 'public' || value === 'private' || value === 'internal') {
163
+ return value;
164
+ }
165
+ return isPrivate ? 'private' : 'public';
166
+ }
167
+ export function errorMessage(error) {
168
+ return error instanceof Error ? error.message : String(error);
169
+ }
170
+ function encodeRepoPath(path) {
171
+ return path.split('/').map(encodeURIComponent).join('/');
172
+ }
173
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/actions/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { GitHubAction, GitHubClientInterface, type BranchInfo, type CloseIssueParams, type CommitInfo, type CreateBranchParams, type CreateCommitParams, type CreateFileParams, type CreateIssueParams, type CreatePRParams, type DeleteFileParams, type FileInfo, type GetPRParams, type GetRepoParams, type GetUserParams, type GitHubActionName, type GitHubActionOutputMap, type GitHubActionParamsMap, type GitHubActionResult, type GitHubRuntime, type GitHubRuntimeAvailability, type GitHubRuntimeConfig, type GitHubRuntimeDetectionResult, type Issue, type ListCommitsParams, type ListFilesParams, type ListIssuesParams, type ListOrganizationsParams, type ListPRsParams, type ListReposParams, type MergePRParams, type OrganizationInfo, type PullRequest, type ReadFileParams, type Repository, type RepositoryRef, type RequiredGitHubRuntimeConfig, type UpdateFileParams, type UpdateIssueParams, type UpdatePRParams } from './types.js';
2
+ export declare function normalizeGitHubRuntimeConfig(config?: GitHubRuntimeConfig): RequiredGitHubRuntimeConfig;
3
+ export declare class GitHubRuntimeDetector {
4
+ static detect(config?: GitHubRuntimeConfig): Promise<GitHubRuntimeDetectionResult>;
5
+ static testRuntime(runtime: GitHubRuntime, config?: GitHubRuntimeConfig): Promise<GitHubRuntimeAvailability>;
6
+ static detectRuntime(config?: GitHubRuntimeConfig): Promise<GitHubRuntime>;
7
+ }
8
+ export declare abstract class BaseGitHubAdapter extends GitHubClientInterface {
9
+ private retryUsed;
10
+ constructor(config?: GitHubRuntimeConfig);
11
+ executeAction<Name extends GitHubAction>(action: Name, params: GitHubActionParamsMap[Name]): Promise<GitHubActionResult<GitHubActionOutputMap[Name]>>;
12
+ executeAction<TOutput = unknown>(action: GitHubAction | GitHubActionName, params?: unknown): Promise<GitHubActionResult<TOutput>>;
13
+ listRepositories(params?: ListReposParams): Promise<Repository[]>;
14
+ getRepository(params: GetRepoParams): Promise<Repository>;
15
+ listIssues(params: ListIssuesParams): Promise<Issue[]>;
16
+ createIssue(params: CreateIssueParams): Promise<Issue>;
17
+ updateIssue(params: UpdateIssueParams): Promise<Issue>;
18
+ closeIssue(params: CloseIssueParams): Promise<Issue>;
19
+ listPullRequests(params: ListPRsParams): Promise<PullRequest[]>;
20
+ getPullRequest(params: GetPRParams): Promise<PullRequest>;
21
+ createPullRequest(params: CreatePRParams): Promise<PullRequest>;
22
+ updatePullRequest(params: UpdatePRParams): Promise<PullRequest>;
23
+ mergePullRequest(params: MergePRParams): Promise<PullRequest>;
24
+ listFiles(params: ListFilesParams): Promise<FileInfo[]>;
25
+ readFile(params: ReadFileParams): Promise<string>;
26
+ createFile(params: CreateFileParams): Promise<void>;
27
+ updateFile(params: UpdateFileParams): Promise<FileInfo>;
28
+ deleteFile(params: DeleteFileParams): Promise<void>;
29
+ listBranches(params: RepositoryRef): Promise<BranchInfo[]>;
30
+ createBranch(params: CreateBranchParams): Promise<void>;
31
+ listCommits(params: ListCommitsParams): Promise<CommitInfo[]>;
32
+ createCommit(params: CreateCommitParams): Promise<CommitInfo>;
33
+ getUser(params?: GetUserParams): Promise<GitHubActionOutputMap[GitHubAction.GetUser]>;
34
+ listOrganizations(params?: ListOrganizationsParams): Promise<OrganizationInfo[]>;
35
+ protected executeWithRetries<T>(operation: () => Promise<T>): Promise<T>;
36
+ protected isRetryableError(error: unknown): boolean;
37
+ protected retryDelayMs(attempt: number, error: unknown): number;
38
+ private dispatchAction;
39
+ }
40
+ export declare class GitHubAdapterFactory {
41
+ static create(config?: GitHubRuntimeConfig): Promise<GitHubClientInterface>;
42
+ static detect(config?: GitHubRuntimeConfig): Promise<GitHubRuntimeDetectionResult>;
43
+ static detectRuntime(config?: GitHubRuntimeConfig): Promise<GitHubRuntime>;
44
+ static testRuntime(runtime: GitHubRuntime, config?: GitHubRuntimeConfig): Promise<GitHubRuntimeAvailability>;
45
+ }
46
+ export declare const GitHubClientFactory: typeof GitHubAdapterFactory;
47
+ export declare function detectGitHubRuntime(config?: GitHubRuntimeConfig): Promise<GitHubRuntimeDetectionResult>;
48
+ export declare function createGitHubAdapter(config?: GitHubRuntimeConfig): Promise<GitHubClientInterface>;
49
+ //# sourceMappingURL=adapter.d.ts.map