@alpacakit/integrations 0.1.0-beta.31 → 0.1.0-beta.36

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 (52) hide show
  1. package/README.md +6 -2
  2. package/dist/auth.d.ts +2 -2
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +9 -1
  5. package/dist/catalog.d.ts +3 -3
  6. package/dist/catalog.d.ts.map +1 -1
  7. package/dist/catalog.js +10 -3
  8. package/dist/code-hosts/facets.d.ts +2 -2
  9. package/dist/code-hosts/facets.d.ts.map +1 -1
  10. package/dist/code-hosts/facets.js +4 -48
  11. package/dist/code-hosts/gitea-pull-request-snapshot.js +0 -1
  12. package/dist/code-hosts/gitea.d.ts.map +1 -1
  13. package/dist/code-hosts/gitea.js +100 -12
  14. package/dist/code-hosts/github.d.ts.map +1 -1
  15. package/dist/code-hosts/github.js +71 -21
  16. package/dist/code-hosts/gitlab.d.ts.map +1 -1
  17. package/dist/code-hosts/gitlab.js +70 -18
  18. package/dist/code-hosts/helpers.d.ts +12 -3
  19. package/dist/code-hosts/helpers.d.ts.map +1 -1
  20. package/dist/code-hosts/helpers.js +67 -7
  21. package/dist/code-hosts/repository-host.d.ts +4 -0
  22. package/dist/code-hosts/repository-host.d.ts.map +1 -0
  23. package/dist/code-hosts/repository-host.js +61 -0
  24. package/dist/code-hosts/repository-info.d.ts +4 -0
  25. package/dist/code-hosts/repository-info.d.ts.map +1 -0
  26. package/dist/code-hosts/repository-info.js +11 -0
  27. package/dist/code-hosts/strategy.d.ts +3 -2
  28. package/dist/code-hosts/strategy.d.ts.map +1 -1
  29. package/dist/definition.d.ts +18 -3
  30. package/dist/definition.d.ts.map +1 -1
  31. package/dist/definition.js +5 -0
  32. package/dist/error.d.ts +1 -0
  33. package/dist/error.d.ts.map +1 -1
  34. package/dist/index.d.ts +5 -5
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -3
  37. package/dist/model.d.ts +10 -8
  38. package/dist/model.d.ts.map +1 -1
  39. package/dist/runtime.d.ts +12 -3
  40. package/dist/runtime.d.ts.map +1 -1
  41. package/dist/runtime.js +25 -4
  42. package/dist/testing/contracts.d.ts +13 -2
  43. package/dist/testing/contracts.d.ts.map +1 -1
  44. package/dist/testing/contracts.js +108 -1
  45. package/dist/testing/index.d.ts +1 -1
  46. package/dist/testing/index.d.ts.map +1 -1
  47. package/dist/testing/index.js +1 -1
  48. package/dist/transport/http-transport.js +1 -1
  49. package/dist/values.d.ts +13 -2
  50. package/dist/values.d.ts.map +1 -1
  51. package/dist/values.js +13 -2
  52. package/package.json +2 -2
@@ -2,18 +2,18 @@
2
2
  import { createSchemaRuntimeCodec } from "@alpacakit/core";
3
3
  import { z } from "zod";
4
4
  import { bearerMaterialHandlers } from "../auth.js";
5
- import { defineIntegration } from "../definition.js";
5
+ import { defineIntegration, } from "../definition.js";
6
6
  import { INTEGRATION_ERROR_CODE, IntegrationError, isIntegrationError, withIntegrationIdentity, } from "../error.js";
7
7
  import { integrationId, workItemRef, } from "../ids.js";
8
8
  import { collectPaginated } from "../transport/collect.js";
9
9
  import { createOpaqueCursorCodec } from "../transport/cursor.js";
10
10
  import { HttpTransport } from "../transport/http-transport.js";
11
11
  import { PageParamPager } from "../transport/pager.js";
12
- import { AUTHORIZATION_SCHEME, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_STATE, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
12
+ import { AUTHORIZATION_SCHEME, GIT_PROTOCOL, HTTP_METHOD, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_STATE, REPOSITORY_REMOTE_RESOLUTION_KIND, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_STATE, } from "../values.js";
13
13
  import { createCodeHostAccount, createCodeHostRepository, createCodeHostRepositoryHost, createCodeHostWorkItems, probeCodeHostDoctor, } from "./facets.js";
14
14
  import { createGitLabIssueLabelChangeRequests, createGitLabLabelCreateRequest, } from "./gitlab-label-requests.js";
15
15
  import { gitLabDeviceLogin } from "./gitlab-login.js";
16
- import { ambientToken, matchesRemote } from "./helpers.js";
16
+ import { ambientToken, hasRepositoryNameConflictDetail, parseGitRemote, } from "./helpers.js";
17
17
  import { rawGitLabApprovalsCodec, rawGitLabEventListCodec, rawGitLabIssueLinkListCodec, rawGitLabNamespaceCodec, rawGitLabUserListCodec, rawPullRequestCodec, rawReactionListCodec, rawRepositoryCodec, } from "./schemas.js";
18
18
  import { CODE_HOST_CHANGE_FEED_KIND, refNumber, } from "./strategy.js";
19
19
  import { CODE_HOST_LABEL_KIND, CODE_HOST_RESOURCE, GITLAB_REACTIONS, } from "./values.js";
@@ -62,7 +62,9 @@ const settingsSchema = z
62
62
  .strict()
63
63
  .transform((settings) => ({
64
64
  project: settings.project,
65
- baseUrl: (settings.baseUrl ?? GITLAB_DEFAULT_BASE_URL).replace(/\/$/, ""),
65
+ baseUrl: new URL(settings.baseUrl ?? GITLAB_DEFAULT_BASE_URL)
66
+ .toString()
67
+ .replace(/\/$/u, ""),
66
68
  }));
67
69
  const gitLabCursorCodec = createOpaqueCursorCodec({
68
70
  integration: GITLAB_INTEGRATION_ID,
@@ -71,12 +73,51 @@ const gitLabCursorCodec = createOpaqueCursorCodec({
71
73
  .object({ lastEventId: z.string(), observedAtMs: z.number().int() })
72
74
  .strict(),
73
75
  });
76
+ function splitGitLabProject(project) {
77
+ const parts = project.split("/");
78
+ return {
79
+ owner: parts.slice(0, -1).join("/"),
80
+ repository: parts.at(-1) ?? project,
81
+ };
82
+ }
83
+ function resolveGitLabRemote(remoteUrl) {
84
+ const parsed = parseGitRemote(remoteUrl);
85
+ if (parsed.kind === "rejected") {
86
+ return {
87
+ kind: REPOSITORY_REMOTE_RESOLUTION_KIND.rejected,
88
+ detail: `GitLab remote ${parsed.detail}.`,
89
+ };
90
+ }
91
+ if (parsed.pathSegments.length < 2) {
92
+ return {
93
+ kind: REPOSITORY_REMOTE_RESOLUTION_KIND.rejected,
94
+ detail: "GitLab remote path must contain a namespace and project.",
95
+ };
96
+ }
97
+ const projectSegment = parsed.pathSegments.at(-1);
98
+ const projectName = projectSegment.endsWith(".git")
99
+ ? projectSegment.slice(0, -4)
100
+ : projectSegment;
101
+ if (projectName === "") {
102
+ return {
103
+ kind: REPOSITORY_REMOTE_RESOLUTION_KIND.rejected,
104
+ detail: "GitLab remote project must not be empty.",
105
+ };
106
+ }
107
+ const project = [...parsed.pathSegments.slice(0, -1), projectName].join("/");
108
+ const repository = splitGitLabProject(project);
109
+ return {
110
+ kind: REPOSITORY_REMOTE_RESOLUTION_KIND.matched,
111
+ repository: { owner: repository.owner, name: repository.repository },
112
+ baseUrl: parsed.webOrigin,
113
+ };
114
+ }
74
115
  export function gitlab() {
75
116
  return defineIntegration({
76
117
  id: GITLAB_INTEGRATION_ID,
77
118
  settingsCodec: createSchemaRuntimeCodec(settingsSchema),
78
- remoteMatch: (remoteUrl, settings) => matchesRemote(remoteUrl, new URL(settings.baseUrl).hostname, settings.project),
79
119
  repositoryScope: {
120
+ resolveRemote: resolveGitLabRemote,
80
121
  applySettings: (input) => {
81
122
  if (input.kind === REPOSITORY_SETTINGS_UPDATE_KIND.baseUrl) {
82
123
  return {
@@ -85,17 +126,20 @@ export function gitlab() {
85
126
  };
86
127
  }
87
128
  const project = `${input.repository.owner}/${input.repository.name}`;
88
- const baseUrl = input.baseUrl ?? input.current?.baseUrl;
129
+ const baseUrl = input.baseUrl ?? input.current?.baseUrl ?? GITLAB_DEFAULT_BASE_URL;
89
130
  return {
90
131
  project,
91
- ...(baseUrl === undefined ? {} : { baseUrl }),
132
+ baseUrl,
92
133
  };
93
134
  },
94
- projectRepository: (settings) => {
95
- const parts = settings.project.split("/");
135
+ project: (settings) => {
136
+ const project = splitGitLabProject(settings.project);
96
137
  return {
97
- owner: parts.slice(0, -1).join("/"),
98
- name: parts.at(-1) ?? settings.project,
138
+ repository: {
139
+ owner: project.owner,
140
+ name: project.repository,
141
+ },
142
+ baseUrl: settings.baseUrl,
99
143
  };
100
144
  },
101
145
  },
@@ -142,9 +186,7 @@ function createGitLabSession(settings, authorization, ports, connectionId) {
142
186
  function gitLabStrategy(settings) {
143
187
  const project = encodeURIComponent(settings.project);
144
188
  const projectPath = `/projects/${project}`;
145
- const parts = settings.project.split("/");
146
- const repository = parts.at(-1) ?? settings.project;
147
- const owner = parts.slice(0, -1).join("/") || settings.project;
189
+ const { owner, repository } = splitGitLabProject(settings.project);
148
190
  const webBaseUrl = `${settings.baseUrl}/${settings.project}`;
149
191
  const issueBody = (input, assigneeIds) => ({
150
192
  ...(input.title === undefined ? {} : { title: input.title }),
@@ -306,7 +348,7 @@ function gitLabStrategy(settings) {
306
348
  resource: CODE_HOST_RESOURCE.reaction,
307
349
  });
308
350
  },
309
- provisionRequest: async (transport, input) => {
351
+ createNewRequest: async (transport, input) => {
310
352
  const namespace = await transport.request({
311
353
  method: HTTP_METHOD.get,
312
354
  path: `/namespaces/${encodeURIComponent(input.ref.owner)}`,
@@ -318,14 +360,13 @@ function gitLabStrategy(settings) {
318
360
  body: {
319
361
  name: input.ref.name,
320
362
  namespace_id: namespace.id,
321
- visibility: input.isPrivate === false
322
- ? GITLAB_VISIBILITY.public
323
- : GITLAB_VISIBILITY.private,
363
+ visibility: GITLAB_VISIBILITY.private,
324
364
  description: input.description ?? "",
325
365
  },
326
366
  resource: CODE_HOST_RESOURCE.repository,
327
367
  };
328
368
  },
369
+ isCreateNewConflict: isGitLabRepositoryCreateConflict,
329
370
  workItemCreateRequest: async (transport, input) => ({
330
371
  method: HTTP_METHOD.post,
331
372
  path: `${projectPath}/issues`,
@@ -598,6 +639,17 @@ function normalizeGitLabMergeState(status) {
598
639
  function includesGitLabStatus(statuses, status) {
599
640
  return statuses.includes(status);
600
641
  }
642
+ function isGitLabRepositoryCreateConflict(error) {
643
+ if (isIntegrationError(error, INTEGRATION_ERROR_CODE.conflict) &&
644
+ (error.data.status === 409 ||
645
+ (error.data.status === 422 &&
646
+ hasRepositoryNameConflictDetail(error.data.detail)))) {
647
+ return true;
648
+ }
649
+ return (isIntegrationError(error, INTEGRATION_ERROR_CODE.failed) &&
650
+ error.data.status === 400 &&
651
+ hasRepositoryNameConflictDetail(error.data.bodyTail));
652
+ }
601
653
  function createGitLabRelations(transport, projectPath, project) {
602
654
  const list = (ref) => collectPaginated(transport, {
603
655
  method: HTTP_METHOD.get,
@@ -1,6 +1,6 @@
1
1
  import type { Authorization } from "../auth.js";
2
2
  import type { CommentRef, WorkItemRef } from "../ids.js";
3
- import type { EnsureRepositoryInput } from "../model.js";
3
+ import type { CreateNewRepositoryInput } from "../model.js";
4
4
  import type { Exec, SessionPorts } from "../ports.js";
5
5
  import type { HttpTransport } from "../transport/http-transport.js";
6
6
  import type { RequestSpec } from "../transport/types.js";
@@ -9,7 +9,15 @@ export declare function commentIdentity(ref: CommentRef): {
9
9
  readonly targetNumber: string;
10
10
  readonly comment: string;
11
11
  };
12
- export declare function matchesRemote(remoteUrl: string, expectedHost: string, expectedPath: string): boolean;
12
+ export type ParsedGitRemote = {
13
+ readonly kind: "parsed";
14
+ readonly webOrigin: string;
15
+ readonly pathSegments: readonly string[];
16
+ } | {
17
+ readonly kind: "rejected";
18
+ readonly detail: string;
19
+ };
20
+ export declare function parseGitRemote(remoteUrl: string): ParsedGitRemote;
13
21
  export declare function ambientToken(options: {
14
22
  readonly env: Record<string, string>;
15
23
  readonly envNames: readonly string[];
@@ -17,6 +25,7 @@ export declare function ambientToken(options: {
17
25
  readonly args: string[];
18
26
  readonly exec: Exec;
19
27
  }): Promise<Authorization | null>;
20
- export declare function orgOrUserRepositoryRequest(transport: HttpTransport, input: EnsureRepositoryInput): Promise<RequestSpec>;
28
+ export declare function orgOrUserRepositoryRequest(transport: HttpTransport, input: CreateNewRepositoryInput): Promise<RequestSpec>;
29
+ export declare function hasRepositoryNameConflictDetail(detail: string | null): boolean;
21
30
  export declare function waitFor(ports: SessionPorts, seconds: number, signal: AbortSignal): Promise<void>;
22
31
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/code-hosts/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG;IAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAYA;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAeT;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA4BhC;AAED,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAsBtB;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAef"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/code-hosts/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKzD,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG;IAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAYA;AAED,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAwCjE;AAuCD,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA4BhC;AAED,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAsBtB;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAOT;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -11,18 +11,74 @@ export function commentIdentity(ref) {
11
11
  comment: separator === -1 ? ref : ref.slice(separator + 2),
12
12
  };
13
13
  }
14
- export function matchesRemote(remoteUrl, expectedHost, expectedPath) {
15
- const normalizedPath = expectedPath.replace(/^\//, "").replace(/\.git$/, "");
14
+ export function parseGitRemote(remoteUrl) {
15
+ if (remoteUrl.trim() !== remoteUrl || /[\s?#]/u.test(remoteUrl)) {
16
+ return rejectedGitRemote("contains whitespace, a query, or a fragment");
17
+ }
16
18
  try {
17
19
  const url = new URL(remoteUrl);
18
- return (url.hostname.toLowerCase() === expectedHost.toLowerCase() &&
19
- url.pathname.replace(/^\//, "").replace(/\.git$/, "") === normalizedPath);
20
+ if (!["http:", "https:", "ssh:"].includes(url.protocol)) {
21
+ return rejectedGitRemote("must use HTTP(S) or SSH");
22
+ }
23
+ if (url.password !== "" ||
24
+ ((url.protocol === "http:" || url.protocol === "https:") &&
25
+ url.username !== "")) {
26
+ return rejectedGitRemote("must not contain credentials");
27
+ }
28
+ const path = parseRemotePath(url.pathname.replace(/^\//u, ""));
29
+ return path.kind === "rejected"
30
+ ? path
31
+ : {
32
+ kind: "parsed",
33
+ webOrigin: url.protocol === "ssh:" ? `https://${url.hostname}` : url.origin,
34
+ pathSegments: path.pathSegments,
35
+ };
20
36
  }
21
37
  catch {
22
- const match = remoteUrl.match(/^(?:[^@]+@)?([^:]+):(.+)$/);
23
- return (match?.[1]?.toLowerCase() === expectedHost.toLowerCase() &&
24
- match[2]?.replace(/\.git$/, "") === normalizedPath);
38
+ const match = remoteUrl.match(/^(?:[^@/:]+@)?([^@/:]+):(.+)$/u);
39
+ if (match?.[1] === undefined || match[2] === undefined) {
40
+ return rejectedGitRemote("is not a supported Git remote");
41
+ }
42
+ const path = parseRemotePath(match[2]);
43
+ if (path.kind === "rejected")
44
+ return path;
45
+ let webOrigin;
46
+ try {
47
+ webOrigin = new URL(`https://${match[1]}`).origin;
48
+ }
49
+ catch {
50
+ return rejectedGitRemote("contains an invalid host");
51
+ }
52
+ return { kind: "parsed", webOrigin, pathSegments: path.pathSegments };
53
+ }
54
+ }
55
+ function parseRemotePath(path) {
56
+ const encodedSegments = path.split("/");
57
+ if (encodedSegments.length === 0 ||
58
+ encodedSegments.some((segment) => segment.length === 0)) {
59
+ return rejectedGitRemote("contains an empty path segment");
25
60
  }
61
+ const pathSegments = [];
62
+ for (const encoded of encodedSegments) {
63
+ let segment;
64
+ try {
65
+ segment = decodeURIComponent(encoded);
66
+ }
67
+ catch {
68
+ return rejectedGitRemote("contains invalid path encoding");
69
+ }
70
+ if (segment === "." ||
71
+ segment === ".." ||
72
+ segment.includes("/") ||
73
+ segment.includes("\\")) {
74
+ return rejectedGitRemote("contains an unsafe path segment");
75
+ }
76
+ pathSegments.push(segment);
77
+ }
78
+ return { kind: "parsed", pathSegments };
79
+ }
80
+ function rejectedGitRemote(detail) {
81
+ return { kind: "rejected", detail };
26
82
  }
27
83
  export async function ambientToken(options) {
28
84
  for (const name of options.envNames) {
@@ -72,6 +128,10 @@ export async function orgOrUserRepositoryRequest(transport, input) {
72
128
  resource: CODE_HOST_RESOURCE.repository,
73
129
  };
74
130
  }
131
+ export function hasRepositoryNameConflictDetail(detail) {
132
+ return (detail !== null &&
133
+ /(?:repository|name|path)[\s\S]*(?:already exists|already (?:been )?taken)|(?:already exists|already (?:been )?taken)[\s\S]*(?:repository|name|path)/iu.test(detail));
134
+ }
75
135
  export async function waitFor(ports, seconds, signal) {
76
136
  if (signal.aborted) {
77
137
  throw signal.reason;
@@ -0,0 +1,4 @@
1
+ import type { RepositoryHost } from "../model.js";
2
+ import type { CodeHostSession } from "./facets.js";
3
+ export declare function createCodeHostRepositoryHost(session: CodeHostSession): RepositoryHost;
4
+ //# sourceMappingURL=repository-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-host.d.ts","sourceRoot":"","sources":["../../src/code-hosts/repository-host.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,eAAe,GACvB,cAAc,CAoChB"}
@@ -0,0 +1,61 @@
1
+ import { INTEGRATION_ERROR_CODE, IntegrationError, isIntegrationError, } from "../error.js";
2
+ import { CREATE_NEW_REPOSITORY_RESULT_KIND } from "../values.js";
3
+ import { normalizeRepositoryInfo } from "./repository-info.js";
4
+ import { rawRepositoryCodec } from "./schemas.js";
5
+ export function createCodeHostRepositoryHost(session) {
6
+ const { transport, strategy } = session;
7
+ const find = async (ref) => {
8
+ const raw = await transport.requestOptional(strategy.paths.repository(ref), rawRepositoryCodec);
9
+ return raw === null
10
+ ? null
11
+ : normalizeRepositoryInfo(raw, ref, strategy.ownerKind);
12
+ };
13
+ return {
14
+ find,
15
+ createNew: async (input) => {
16
+ const { ref } = input;
17
+ const request = await strategy.createNewRequest(transport, input);
18
+ try {
19
+ const raw = await transport.request(request, rawRepositoryCodec);
20
+ return {
21
+ kind: CREATE_NEW_REPOSITORY_RESULT_KIND.created,
22
+ repository: normalizeRepositoryInfo(raw, ref, strategy.ownerKind),
23
+ };
24
+ }
25
+ catch (error) {
26
+ if (strategy.isCreateNewConflict(error)) {
27
+ return { kind: CREATE_NEW_REPOSITORY_RESULT_KIND.conflict };
28
+ }
29
+ if (isIntegrationError(error, INTEGRATION_ERROR_CODE.conflict)) {
30
+ throw repositoryCreateInvalidInput(error);
31
+ }
32
+ if (isRepositoryCreateOutcomeUnknown(error)) {
33
+ return { kind: CREATE_NEW_REPOSITORY_RESULT_KIND.outcomeUnknown };
34
+ }
35
+ throw error;
36
+ }
37
+ },
38
+ };
39
+ }
40
+ function repositoryCreateInvalidInput(error) {
41
+ return new IntegrationError({
42
+ code: INTEGRATION_ERROR_CODE.invalidInput,
43
+ message: "Repository creation input was rejected by the provider",
44
+ data: {
45
+ reason: error.data.detail ?? `provider returned HTTP ${error.data.status}`,
46
+ },
47
+ integrationId: error.integrationId,
48
+ connectionId: error.connectionId,
49
+ cause: error,
50
+ });
51
+ }
52
+ function isRepositoryCreateOutcomeUnknown(error) {
53
+ if (isIntegrationError(error, INTEGRATION_ERROR_CODE.notAvailable)) {
54
+ return true;
55
+ }
56
+ if (!isIntegrationError(error, INTEGRATION_ERROR_CODE.failed)) {
57
+ return false;
58
+ }
59
+ const { status } = error.data;
60
+ return status === null || status >= 500 || (status >= 200 && status < 300);
61
+ }
@@ -0,0 +1,4 @@
1
+ import type { RepositoryInfo, RepositoryRef } from "../model.js";
2
+ import type { RawRepository } from "./schemas.js";
3
+ export declare function normalizeRepositoryInfo(raw: RawRepository, ref: RepositoryRef, fallbackOwnerKind: RepositoryInfo["ownerKind"]): RepositoryInfo;
4
+ //# sourceMappingURL=repository-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-info.d.ts","sourceRoot":"","sources":["../../src/code-hosts/repository-info.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,aAAa,EAClB,iBAAiB,EAAE,cAAc,CAAC,WAAW,CAAC,GAC7C,cAAc,CAShB"}
@@ -0,0 +1,11 @@
1
+ import { ownerKindOf } from "./account.js";
2
+ export function normalizeRepositoryInfo(raw, ref, fallbackOwnerKind) {
3
+ return {
4
+ repositoryId: String(raw.id),
5
+ ref,
6
+ defaultBranch: raw.defaultBranch,
7
+ url: raw.url,
8
+ isPrivate: raw.isPrivate,
9
+ ownerKind: ownerKindOf(raw, fallbackOwnerKind),
10
+ };
11
+ }
@@ -1,5 +1,5 @@
1
1
  import type { ChangeFeedCursor, CommentReaction } from "../ids.js";
2
- import type { ChangeFeedPage, CommentKind, CreateLabelInput, CreatePullRequestInput, CreateWorkItemInput, EnsureRepositoryInput, MergeMethod, OwnerKind, PatchWorkItemInput, PullRequestIdentity, PullRequestReviewContext, PullRequestStatus, RepositoryRef, WorkItemLabels, WorkItemListQuery, WorkItemRelations, WorkItemSearchQuery } from "../model.js";
2
+ import type { ChangeFeedPage, CommentKind, CreateLabelInput, CreateNewRepositoryInput, CreatePullRequestInput, CreateWorkItemInput, MergeMethod, OwnerKind, PatchWorkItemInput, PullRequestIdentity, PullRequestReviewContext, PullRequestStatus, RepositoryRef, WorkItemLabels, WorkItemListQuery, WorkItemRelations, WorkItemSearchQuery } from "../model.js";
3
3
  import type { HttpTransport } from "../transport/http-transport.js";
4
4
  import type { CursorCodec, Pager, RequestSpec } from "../transport/types.js";
5
5
  import type { NormalizationVocabulary } from "./normalize.js";
@@ -100,7 +100,8 @@ export type CodeHostStrategy = {
100
100
  readonly workItemRelations: (transport: HttpTransport) => WorkItemRelations;
101
101
  readonly markReadyForReview?: (transport: HttpTransport, number: string) => Promise<void>;
102
102
  readonly ensureLinkedBranch?: (transport: HttpTransport, workItem: string, branch: string) => Promise<void>;
103
- readonly provisionRequest: (transport: HttpTransport, input: EnsureRepositoryInput) => Promise<RequestSpec>;
103
+ readonly createNewRequest: (transport: HttpTransport, input: CreateNewRepositoryInput) => Promise<RequestSpec>;
104
+ readonly isCreateNewConflict: (error: unknown) => boolean;
104
105
  readonly workItemCreateRequest: (transport: HttpTransport, input: CreateWorkItemInput) => Promise<RequestSpec>;
105
106
  readonly workItemPatchRequest: (transport: HttpTransport, number: string, input: PatchWorkItemInput) => Promise<RequestSpec>;
106
107
  readonly pullRequestAssigneesRequest: (transport: HttpTransport, number: string, logins: string[]) => Promise<RequestSpec>;
@@ -1 +1 @@
1
- {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/code-hosts/strategy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/code-hosts/strategy.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import type { IntegrationAuthProfileId, IntegrationConnectionId, IntegrationId }
4
4
  import type { DoctorCapability, IntegrationLoginCapability } from "./login.js";
5
5
  import type { Account, Repository, RepositoryHost, RepositoryRef, WorkItems } from "./model.js";
6
6
  import type { SessionPorts } from "./ports.js";
7
- import type { INTEGRATION_SETTINGS_INPUT_KIND, REPOSITORY_SETTINGS_UPDATE_KIND } from "./values.js";
7
+ import type { INTEGRATION_SETTINGS_INPUT_KIND, REPOSITORY_REMOTE_RESOLUTION_KIND, REPOSITORY_SETTINGS_UPDATE_KIND } from "./values.js";
8
8
  export type IntegrationConnectionRecord = {
9
9
  readonly id: IntegrationConnectionId;
10
10
  readonly integrationId: IntegrationId;
@@ -43,14 +43,29 @@ export type IntegrationSettingsInput = {
43
43
  readonly kind: typeof INTEGRATION_SETTINGS_INPUT_KIND.raw;
44
44
  readonly settings: JsonObject;
45
45
  };
46
+ export type RepositoryRemoteResolution = {
47
+ readonly kind: typeof REPOSITORY_REMOTE_RESOLUTION_KIND.matched;
48
+ readonly repository: RepositoryRef;
49
+ readonly baseUrl: string | null;
50
+ } | {
51
+ readonly kind: typeof REPOSITORY_REMOTE_RESOLUTION_KIND.unmatched;
52
+ } | {
53
+ readonly kind: typeof REPOSITORY_REMOTE_RESOLUTION_KIND.rejected;
54
+ readonly detail: string;
55
+ };
56
+ export type RepositoryScope = {
57
+ readonly repository: RepositoryRef;
58
+ readonly baseUrl: string;
59
+ };
60
+ export declare function sameRepositoryScope(left: RepositoryScope, right: RepositoryScope): boolean;
46
61
  export interface RepositoryScopeAdapter<TSettings> {
47
62
  applySettings(input: RepositorySettingsApplication<TSettings>): JsonObject;
48
- projectRepository(settings: TSettings): RepositoryRef;
63
+ project(settings: TSettings): RepositoryScope;
64
+ resolveRemote(remoteUrl: string): RepositoryRemoteResolution;
49
65
  }
50
66
  export interface IntegrationDefinition<Id extends IntegrationId = IntegrationId, TSettings = JsonObject, TSession = unknown> {
51
67
  readonly id: Id;
52
68
  readonly settingsCodec: RuntimeCodec<TSettings>;
53
- readonly remoteMatch?: (remoteUrl: string, settings: TSettings) => boolean;
54
69
  readonly repositoryScope?: RepositoryScopeAdapter<TSettings>;
55
70
  readonly auth?: IntegrationAuthCapability;
56
71
  readonly login?: IntegrationLoginCapability;
@@ -1 +1 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../src/definition.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ export function sameRepositoryScope(left, right) {
2
+ return (left.baseUrl === right.baseUrl &&
3
+ left.repository.owner === right.repository.owner &&
4
+ left.repository.name === right.repository.name);
5
+ }
1
6
  export function defineIntegration(definition) {
2
7
  return definition;
3
8
  }
package/dist/error.d.ts CHANGED
@@ -37,6 +37,7 @@ export type IntegrationErrorData = {
37
37
  readonly resource: string;
38
38
  };
39
39
  [INTEGRATION_ERROR_CODE.conflict]: {
40
+ readonly status: number;
40
41
  readonly detail: string | null;
41
42
  };
42
43
  [INTEGRATION_ERROR_CODE.rateLimited]: {
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /** Provider-neutral development-management integration runtime. */
2
2
  export { ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE, type AbortableHttpClient, type AbortableHttpClientOptions, createAbortableHttpClient, } from "./abortable-http-client.js";
3
- export { type AmbientAuthResolver, type Authorization, authorizationHeader, bearerMaterialHandlers, envResolver, type IntegrationAuthBinding, type IntegrationAuthCapability, type IntegrationAuthMaterial, type IntegrationAuthMaterialKind, type IntegrationAuthProfile, type MaterialHandler, type MaterialHandlers, requireSecret, type SecretRef, } from "./auth.js";
3
+ export { type AmbientAuthResolver, type Authorization, authorizationHeader, bearerMaterialHandlers, envResolver, type IntegrationAuthBinding, type IntegrationAuthCapability, type IntegrationAuthMaterial, type IntegrationAuthMaterialKind, type IntegrationAuthProfile, type MaterialHandler, type MaterialHandlers, requireSecret, type SecretRef, sameIntegrationAuthBinding, } from "./auth.js";
4
4
  export { createIntegrationDefinitionCatalog, type IntegrationDefinitionCatalog, } from "./catalog.js";
5
5
  export { BUILTIN_INTEGRATION_ID, type BuiltinIntegrationId, findGitCredentialScheme, gitCredentialScheme, templatePaths, } from "./code-hosts/builtin.js";
6
6
  export { GITEA_INTEGRATION_ID, type GiteaSettings, gitea, } from "./code-hosts/gitea.js";
7
7
  export { GITHUB_INTEGRATION_ID, type GitHubSettings, github, } from "./code-hosts/github.js";
8
8
  export { GITLAB_INTEGRATION_ID, type GitLabSettings, gitlab, } from "./code-hosts/gitlab.js";
9
- export type { ConnectContext, IntegrationConnectionRecord, IntegrationDefinition, IntegrationSettingsInput, RepositoryScopeAdapter, RepositorySettingsApplication, RepositorySettingsUpdate, } from "./definition.js";
10
- export { defineIntegration } from "./definition.js";
9
+ export type { ConnectContext, IntegrationConnectionRecord, IntegrationDefinition, IntegrationSettingsInput, RepositoryRemoteResolution, RepositoryScope, RepositoryScopeAdapter, RepositorySettingsApplication, RepositorySettingsUpdate, } from "./definition.js";
10
+ export { defineIntegration, sameRepositoryScope } from "./definition.js";
11
11
  export { AUTH_FAILURE_REASON, type AuthFailureReason, INTEGRATION_ERROR_CODE, IntegrationError, type IntegrationErrorCode, type IntegrationErrorData, type IntegrationErrorOptions, isIntegrationError, NOT_AVAILABLE_CAUSE, type NotAvailableCause, } from "./error.js";
12
12
  export type { ChangeFeedCursor, CommentReaction, CommentRef, IntegrationAuthProfileId, IntegrationConnectionId, IntegrationId, MilestoneRef, PullRequestRef, WorkItemRef, } from "./ids.js";
13
13
  export { changeFeedCursor, commentReaction, commentRef, integrationAuthProfileId, integrationConnectionId, integrationId, milestoneRef, pullRequestRef, workItemRef, } from "./ids.js";
@@ -15,10 +15,10 @@ export type { DoctorCapability, DoctorCheck, DoctorCheckStatus, IntegrationLogin
15
15
  export * from "./model.js";
16
16
  export type { Clock, Exec, ExecChunk, ExecExit, ExecProcess, ExecSpawnOptions, HttpClient, HttpTelemetry, IntegrationPorts, Logger, SecretResolver, SecretResolvers, SessionPorts, TelemetrySink, } from "./ports.js";
17
17
  export { parseRepositoryRef } from "./repository-ref.js";
18
- export { type ConnectionCheck, createIntegrationRuntime, type Integration, type IntegrationRuntime, type IntegrationRuntimeOptions, } from "./runtime.js";
18
+ export { type ConnectionCheck, createIntegrationRuntime, type Integration, type IntegrationRemoteResolution, type IntegrationRuntime, type IntegrationRuntimeOptions, } from "./runtime.js";
19
19
  export { createOpaqueCursorCodec } from "./transport/cursor.js";
20
20
  export { HttpTransport, type HttpTransportOptions, } from "./transport/http-transport.js";
21
21
  export { LinkHeaderPager, PageParamPager, type PageParamPagerOptions, } from "./transport/pager.js";
22
22
  export type { CursorCodec, HttpMethod, Pager, RequestSpec, } from "./transport/types.js";
23
- export { AUTHORIZATION_KIND, AUTHORIZATION_SCHEME, COMMENT_KIND, COMMENT_SIDE, CONNECTION_STATUS, DOCTOR_CHECK_STATUS, ENSURE_REPOSITORY_RESULT_KIND, EXEC_CHANNEL, FILE_CHANGE_STATUS, GIT_PROTOCOL, HTTP_MEDIA_TYPE, HTTP_METHOD, INTEGRATION_AUTH_BINDING_KIND, INTEGRATION_AUTH_MATERIAL_KIND, INTEGRATION_LOGIN_METHOD, INTEGRATION_SETTINGS_INPUT_KIND, LOG_LEVEL, LOGIN_EVENT_TYPE, MEMBERSHIP, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_FEEDBACK_KIND, PULL_REQUEST_REVIEW_CONTEXT_AVAILABILITY, PULL_REQUEST_REVIEW_STATE, PULL_REQUEST_STATE, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_SEARCH_FIELD, WORK_ITEM_STATE, } from "./values.js";
23
+ export { AUTHORIZATION_KIND, AUTHORIZATION_SCHEME, COMMENT_KIND, COMMENT_SIDE, CONNECTION_STATUS, CREATE_NEW_REPOSITORY_RESULT_KIND, DOCTOR_CHECK_STATUS, EXEC_CHANNEL, FILE_CHANGE_STATUS, GIT_PROTOCOL, HTTP_MEDIA_TYPE, HTTP_METHOD, INTEGRATION_AUTH_BINDING_KIND, INTEGRATION_AUTH_MATERIAL_KIND, INTEGRATION_LOGIN_METHOD, INTEGRATION_REMOTE_RESOLUTION_KIND, INTEGRATION_SETTINGS_INPUT_KIND, LOG_LEVEL, LOGIN_EVENT_TYPE, MEMBERSHIP, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_FEEDBACK_KIND, PULL_REQUEST_REVIEW_CONTEXT_AVAILABILITY, PULL_REQUEST_REVIEW_STATE, PULL_REQUEST_STATE, REPOSITORY_REMOTE_RESOLUTION_KIND, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_SEARCH_FIELD, WORK_ITEM_STATE, } from "./values.js";
24
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  /** Provider-neutral development-management integration runtime. */
2
2
  export { ABORTABLE_HTTP_CLIENT_CLOSED_MESSAGE, createAbortableHttpClient, } from "./abortable-http-client.js";
3
- export { authorizationHeader, bearerMaterialHandlers, envResolver, requireSecret, } from "./auth.js";
3
+ export { authorizationHeader, bearerMaterialHandlers, envResolver, requireSecret, sameIntegrationAuthBinding, } from "./auth.js";
4
4
  export { createIntegrationDefinitionCatalog, } from "./catalog.js";
5
5
  export { BUILTIN_INTEGRATION_ID, findGitCredentialScheme, gitCredentialScheme, templatePaths, } from "./code-hosts/builtin.js";
6
6
  export { GITEA_INTEGRATION_ID, gitea, } from "./code-hosts/gitea.js";
7
7
  export { GITHUB_INTEGRATION_ID, github, } from "./code-hosts/github.js";
8
8
  export { GITLAB_INTEGRATION_ID, gitlab, } from "./code-hosts/gitlab.js";
9
- export { defineIntegration } from "./definition.js";
9
+ export { defineIntegration, sameRepositoryScope } from "./definition.js";
10
10
  export { AUTH_FAILURE_REASON, INTEGRATION_ERROR_CODE, IntegrationError, isIntegrationError, NOT_AVAILABLE_CAUSE, } from "./error.js";
11
11
  export { changeFeedCursor, commentReaction, commentRef, integrationAuthProfileId, integrationConnectionId, integrationId, milestoneRef, pullRequestRef, workItemRef, } from "./ids.js";
12
12
  export * from "./model.js";
@@ -15,4 +15,4 @@ export { createIntegrationRuntime, } from "./runtime.js";
15
15
  export { createOpaqueCursorCodec } from "./transport/cursor.js";
16
16
  export { HttpTransport, } from "./transport/http-transport.js";
17
17
  export { LinkHeaderPager, PageParamPager, } from "./transport/pager.js";
18
- export { AUTHORIZATION_KIND, AUTHORIZATION_SCHEME, COMMENT_KIND, COMMENT_SIDE, CONNECTION_STATUS, DOCTOR_CHECK_STATUS, ENSURE_REPOSITORY_RESULT_KIND, EXEC_CHANNEL, FILE_CHANGE_STATUS, GIT_PROTOCOL, HTTP_MEDIA_TYPE, HTTP_METHOD, INTEGRATION_AUTH_BINDING_KIND, INTEGRATION_AUTH_MATERIAL_KIND, INTEGRATION_LOGIN_METHOD, INTEGRATION_SETTINGS_INPUT_KIND, LOG_LEVEL, LOGIN_EVENT_TYPE, MEMBERSHIP, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_FEEDBACK_KIND, PULL_REQUEST_REVIEW_CONTEXT_AVAILABILITY, PULL_REQUEST_REVIEW_STATE, PULL_REQUEST_STATE, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_SEARCH_FIELD, WORK_ITEM_STATE, } from "./values.js";
18
+ export { AUTHORIZATION_KIND, AUTHORIZATION_SCHEME, COMMENT_KIND, COMMENT_SIDE, CONNECTION_STATUS, CREATE_NEW_REPOSITORY_RESULT_KIND, DOCTOR_CHECK_STATUS, EXEC_CHANNEL, FILE_CHANGE_STATUS, GIT_PROTOCOL, HTTP_MEDIA_TYPE, HTTP_METHOD, INTEGRATION_AUTH_BINDING_KIND, INTEGRATION_AUTH_MATERIAL_KIND, INTEGRATION_LOGIN_METHOD, INTEGRATION_REMOTE_RESOLUTION_KIND, INTEGRATION_SETTINGS_INPUT_KIND, LOG_LEVEL, LOGIN_EVENT_TYPE, MEMBERSHIP, MERGE_METHOD, MERGE_STATE_STATUS, MERGEABILITY, OWNER_KIND, PULL_REQUEST_FEEDBACK_KIND, PULL_REQUEST_REVIEW_CONTEXT_AVAILABILITY, PULL_REQUEST_REVIEW_STATE, PULL_REQUEST_STATE, REPOSITORY_REMOTE_RESOLUTION_KIND, REPOSITORY_SETTINGS_UPDATE_KIND, REVIEW_DECISION, WORK_ITEM_KIND, WORK_ITEM_QUERY_STATE, WORK_ITEM_SEARCH_FIELD, WORK_ITEM_STATE, } from "./values.js";