import { integrationScope as scope } from "../../../automation/integrations" import type { IntegrationScopeRequirement } from "../../../automation/integrations" export const LINEAR_READ_SCOPE = "read" export const LINEAR_WRITE_SCOPE = "write" export const LINEAR_ISSUE_CREATE_SCOPE = "issues:create" export const LINEAR_COMMENT_CREATE_SCOPE = "comments:create" export const LINEAR_READ_WRITE_REQUIREMENT = scope.and( LINEAR_READ_SCOPE, LINEAR_WRITE_SCOPE, ) export const LINEAR_ISSUE_CREATE_REQUIREMENT = scope.any( LINEAR_WRITE_SCOPE, LINEAR_ISSUE_CREATE_SCOPE, ) export const LINEAR_COMMENT_CREATE_REQUIREMENT = scope.any( LINEAR_WRITE_SCOPE, LINEAR_COMMENT_CREATE_SCOPE, ) /** * Allows a Linear action through OAuth or a personal API key. * * @param requiredScope - Scope required from OAuth connections. */ export function linearAccountOptions( requiredScope: IntegrationScopeRequirement, ) { return { connections: [ { connectionMethodId: "oauth", requiredScope }, { connectionMethodId: "api-key" }, ], } as const } export const LINEAR_READ_ACCOUNT_OPTIONS = linearAccountOptions(LINEAR_READ_SCOPE) export const LINEAR_WRITE_ACCOUNT_OPTIONS = linearAccountOptions(LINEAR_WRITE_SCOPE) export const LINEAR_ISSUE_CREATE_ACCOUNT_OPTIONS = linearAccountOptions( LINEAR_ISSUE_CREATE_REQUIREMENT, ) export const LINEAR_COMMENT_CREATE_ACCOUNT_OPTIONS = linearAccountOptions( LINEAR_COMMENT_CREATE_REQUIREMENT, )