scm

SCM (Source Control Management) exports — Centralized SCM provider module. Replaces dual-path GitHub clients with unified IScmProvider interface.

Classes

GitHubProvider

Defined in: packages/nexus-agents/src/scm/github-provider.ts:202

GitHub provider using the gh CLI.

Requires: gh CLI installed and authenticated.

Implements

Constructors

Constructor
new GitHubProvider(repo): GitHubProvider;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:205

Parameters
repo

string

Returns

GitHubProvider

Properties

platform
readonly platform: "github";

Defined in: packages/nexus-agents/src/scm/github-provider.ts:203

Platform identifier.

Implementation of

IScmProvider.platform

repo
readonly repo: string;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:205

Repository in owner/repo format.

Implementation of

IScmProvider.repo

Methods

addComment()
addComment(issueNumber, body): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:362

Parameters
issueNumber

number

body

string

Returns

Promise<Result<void, ScmError>>

Implementation of

IScmProvider.addComment

addLabels()
addLabels(issueNumber, labels): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:250

Parameters
issueNumber

number

labels

readonly string[]

Returns

Promise<Result<void, ScmError>>

Implementation of

IScmProvider.addLabels

createIssue()
createIssue(
   title, 
   body, 
   labels?
): Promise<Result<ScmIssue, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:321

Parameters
title

string

body

string

labels?

readonly string[]

Returns

Promise<Result<ScmIssue, ScmError>>

Implementation of

IScmProvider.createIssue

createPR()
createPR(options): Promise<Result<ScmPullRequest, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:259

Parameters
options

CreatePROptions

Returns

Promise<Result<ScmPullRequest, ScmError>>

Implementation of

IScmProvider.createPR

getIssue()
getIssue(number): Promise<Result<ScmIssue, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:207

Parameters
number

number

Returns

Promise<Result<ScmIssue, ScmError>>

Implementation of

IScmProvider.getIssue

getPRStatus()
getPRStatus(prNumber): Promise<Result<ScmPRStatus, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:308

Parameters
prNumber

number

Returns

Promise<Result<ScmPRStatus, ScmError>>

Implementation of

IScmProvider.getPRStatus

listComments()
listComments(issueNumber): Promise<Result<readonly ScmComment[], ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:371

Parameters
issueNumber

number

Returns

Promise<Result<readonly ScmComment[], ScmError>>

Implementation of

IScmProvider.listComments

listIssues()
listIssues(filters?): Promise<Result<readonly ScmIssue[], ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:220

Parameters
filters?

IssueFilters

Returns

Promise<Result<readonly ScmIssue[], ScmError>>

Implementation of

IScmProvider.listIssues

listRepositoryLabels()
listRepositoryLabels(): Promise<Result<readonly string[], ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:241

Returns

Promise<Result<readonly string[], ScmError>>

Implementation of

IScmProvider.listRepositoryLabels

mergePR()
mergePR(prNumber, options?): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider.ts:294

Parameters
prNumber

number

options?

MergePROptions

Returns

Promise<Result<void, ScmError>>

Implementation of

IScmProvider.mergePR


GitHubReviewer

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:255

GitHub-specific reviewer that adds PR detail and review capabilities to a GitHubProvider. Implements IScmReviewer trait.

Example

const provider = createGitHubProvider('owner/repo');
const reviewer = new GitHubReviewer(provider);
const detail = await reviewer.getPullRequestDetail(42);

Implements

Constructors

Constructor
new GitHubReviewer(provider): GitHubReviewer;

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:256

Parameters
provider

GitHubProvider

Returns

GitHubReviewer

Methods

createReview()
createReview(
   prNumber, 
   body, 
   decision
): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:295

Post a review on a pull request.

Parameters
prNumber

number

body

string

decision

ScmReviewDecision

Returns

Promise<Result<void, ScmError>>

Implementation of

IScmReviewer.createReview

getIssueDetail()
getIssueDetail(issueNumber): Promise<Result<ScmIssueDetail, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:335

Fetch issue with author association and state.

Parameters
issueNumber

number

Returns

Promise<Result<ScmIssueDetail, ScmError>>

Implementation of

IScmReviewer.getIssueDetail

getPullRequestDetail()
getPullRequestDetail(prNumber): Promise<Result<ScmPullRequestDetail, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:258

Fetch PR with full file diffs and stats.

Parameters
prNumber

number

Returns

Promise<Result<ScmPullRequestDetail, ScmError>>

Implementation of

IScmReviewer.getPullRequestDetail

listCommentDetails()
listCommentDetails(issueNumber): Promise<Result<readonly ScmCommentDetail[], ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:360

List comments with author associations.

Parameters
issueNumber

number

Returns

Promise<Result<readonly ScmCommentDetail[], ScmError>>

Implementation of

IScmReviewer.listCommentDetails


GitHubUserInfo

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:395

GitHub-specific user info provider. Implements IScmUserInfo trait.

Implements

Constructors

Constructor
new GitHubUserInfo(): GitHubUserInfo;
Returns

GitHubUserInfo

Methods

fetchUserMetadata()
fetchUserMetadata(username): Promise<Result<ScmUserMetadata, ScmError>>;

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:396

Fetch user metadata for reputation assessment.

Parameters
username

string

Returns

Promise<Result<ScmUserMetadata, ScmError>>

Implementation of

IScmUserInfo.fetchUserMetadata


ScmError

Defined in: packages/nexus-agents/src/scm/types.ts:122

Unified SCM error with platform-aware context.

Extends

  • Error

Constructors

Constructor
new ScmError(
   message, 
   platform, 
   statusCode?, 
   context?
): ScmError;

Defined in: packages/nexus-agents/src/scm/types.ts:123

Parameters
message

string

platform

ScmPlatform

statusCode?

number

context?

Record<string, unknown>

Returns

ScmError

Overrides
Error.constructor

Properties

cause?
optional cause?: unknown;

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts:24

Inherited from
Error.cause
context?
readonly optional context?: Record<string, unknown>;

Defined in: packages/nexus-agents/src/scm/types.ts:127

message
message: string;

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1075

Inherited from
Error.message
name
name: string;

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1074

Inherited from
Error.name
platform
readonly platform: ScmPlatform;

Defined in: packages/nexus-agents/src/scm/types.ts:125

stack?
optional stack?: string;

Defined in: node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts:1076

Inherited from
Error.stack
statusCode?
readonly optional statusCode?: number;

Defined in: packages/nexus-agents/src/scm/types.ts:126

stackTraceLimit
static stackTraceLimit: number;

Defined in: node_modules/.pnpm/@types+node@25.9.8/node_modules/@types/node/globals.d.ts:67

The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

Inherited from
Error.stackTraceLimit

Methods

captureStackTrace()
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/.pnpm/@types+node@25.9.8/node_modules/@types/node/globals.d.ts:51

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
Parameters
targetObject

object

constructorOpt?

Function

Returns

void

Inherited from
Error.captureStackTrace
prepareStackTrace()
static prepareStackTrace(err, stackTraces): any;

Defined in: node_modules/.pnpm/@types+node@25.9.8/node_modules/@types/node/globals.d.ts:55

Parameters
err

Error

stackTraces

CallSite[]

Returns

any

See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

Inherited from
Error.prepareStackTrace

Interfaces

CreatePROptions

Defined in: packages/nexus-agents/src/scm/types.ts:88

PR creation options.

Properties

base
readonly base: string;

Defined in: packages/nexus-agents/src/scm/types.ts:92

body
readonly body: string;

Defined in: packages/nexus-agents/src/scm/types.ts:90

readonly head: string;

Defined in: packages/nexus-agents/src/scm/types.ts:91

title
readonly title: string;

Defined in: packages/nexus-agents/src/scm/types.ts:89


CreateScmProviderConfig

Defined in: packages/nexus-agents/src/scm/factory.ts:19

Configuration for creating an SCM provider.

Properties

platform?
readonly optional platform?: ScmPlatform;

Defined in: packages/nexus-agents/src/scm/factory.ts:23

SCM platform (default: github)

repo
readonly repo: string;

Defined in: packages/nexus-agents/src/scm/factory.ts:21

Repository in owner/repo format

token?
readonly optional token?: TokenResolverConfig;

Defined in: packages/nexus-agents/src/scm/factory.ts:25

Token configuration (env vars checked automatically if omitted)


IScmProvider

Defined in: packages/nexus-agents/src/scm/types.ts:197

Core SCM provider interface.

All methods return Result<T, ScmError> for consistent error handling across GitHub REST API, gh CLI, and future GitLab/Gitea backends.

Properties

platform
readonly platform: ScmPlatform;

Defined in: packages/nexus-agents/src/scm/types.ts:199

Platform identifier.

repo
readonly repo: string;

Defined in: packages/nexus-agents/src/scm/types.ts:202

Repository in owner/repo format.

Methods

addComment()
addComment(issueNumber, body): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:221

Parameters
issueNumber

number

body

string

Returns

Promise<Result<void, ScmError>>

addLabels()
addLabels(issueNumber, labels): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:213

Parameters
issueNumber

number

labels

readonly string[]

Returns

Promise<Result<void, ScmError>>

createIssue()
createIssue(
   title, 
   body, 
   labels?
): Promise<Result<ScmIssue, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:208

Parameters
title

string

body

string

labels?

readonly string[]

Returns

Promise<Result<ScmIssue, ScmError>>

createPR()
createPR(options): Promise<Result<ScmPullRequest, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:216

Parameters
options

CreatePROptions

Returns

Promise<Result<ScmPullRequest, ScmError>>

getIssue()
getIssue(number): Promise<Result<ScmIssue, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:205

Parameters
number

number

Returns

Promise<Result<ScmIssue, ScmError>>

getPRStatus()
getPRStatus(prNumber): Promise<Result<ScmPRStatus, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:218

Parameters
prNumber

number

Returns

Promise<Result<ScmPRStatus, ScmError>>

listComments()
listComments(issueNumber): Promise<Result<readonly ScmComment[], ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:222

Parameters
issueNumber

number

Returns

Promise<Result<readonly ScmComment[], ScmError>>

listIssues()
listIssues(filters?): Promise<Result<readonly ScmIssue[], ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:206

Parameters
filters?

IssueFilters

Returns

Promise<Result<readonly ScmIssue[], ScmError>>

listRepositoryLabels()
listRepositoryLabels(): Promise<Result<readonly string[], Error>>;

Defined in: packages/nexus-agents/src/scm/types.ts:207

Returns

Promise<Result<readonly string[], Error>>

mergePR()
mergePR(prNumber, options?): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:217

Parameters
prNumber

number

options?

MergePROptions

Returns

Promise<Result<void, ScmError>>


IScmReviewer

Defined in: packages/nexus-agents/src/scm/types.ts:235

Review trait — PR review capabilities.

Implemented by platforms supporting code review workflows. Consumers declare this trait when they need PR file diffs or review posting.

Methods

createReview()
createReview(
   prNumber, 
   body, 
   decision
): Promise<Result<void, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:240

Post a review on a pull request.

Parameters
prNumber

number

body

string

decision

ScmReviewDecision

Returns

Promise<Result<void, ScmError>>

getIssueDetail()
getIssueDetail(issueNumber): Promise<Result<ScmIssueDetail, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:247

Fetch issue with author association and state.

Parameters
issueNumber

number

Returns

Promise<Result<ScmIssueDetail, ScmError>>

getPullRequestDetail()
getPullRequestDetail(prNumber): Promise<Result<ScmPullRequestDetail, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:237

Fetch PR with full file diffs and stats.

Parameters
prNumber

number

Returns

Promise<Result<ScmPullRequestDetail, ScmError>>

listCommentDetails()
listCommentDetails(issueNumber): Promise<Result<readonly ScmCommentDetail[], ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:250

List comments with author associations.

Parameters
issueNumber

number

Returns

Promise<Result<readonly ScmCommentDetail[], ScmError>>


IScmUserInfo

Defined in: packages/nexus-agents/src/scm/types.ts:259

User info trait — user metadata for reputation assessment.

Implemented by platforms supporting user profile queries. Consumers declare this trait when they need author reputation data.

Methods

fetchUserMetadata()
fetchUserMetadata(username): Promise<Result<ScmUserMetadata, ScmError>>;

Defined in: packages/nexus-agents/src/scm/types.ts:261

Fetch user metadata for reputation assessment.

Parameters
username

string

Returns

Promise<Result<ScmUserMetadata, ScmError>>


IssueFilters

Defined in: packages/nexus-agents/src/scm/types.ts:111

Issue filter options.

Properties

labels?
readonly optional labels?: readonly string[];

Defined in: packages/nexus-agents/src/scm/types.ts:112

limit?
readonly optional limit?: number;

Defined in: packages/nexus-agents/src/scm/types.ts:114

state?
readonly optional state?: "open" | "closed" | "all";

Defined in: packages/nexus-agents/src/scm/types.ts:113


MergePROptions

Defined in: packages/nexus-agents/src/scm/types.ts:96

PR merge options.

Properties

commitMessage?
readonly optional commitMessage?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:99

commitTitle?
readonly optional commitTitle?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:98

deleteBranch?
readonly optional deleteBranch?: boolean;

Defined in: packages/nexus-agents/src/scm/types.ts:100

method?
readonly optional method?: "merge" | "squash" | "rebase";

Defined in: packages/nexus-agents/src/scm/types.ts:97


ScmComment

Defined in: packages/nexus-agents/src/scm/types.ts:80

SCM comment representation.

Extended by

Properties

author
readonly author: string;

Defined in: packages/nexus-agents/src/scm/types.ts:83

body
readonly body: string;

Defined in: packages/nexus-agents/src/scm/types.ts:82

createdAt
readonly createdAt: string;

Defined in: packages/nexus-agents/src/scm/types.ts:84

id
readonly id: number;

Defined in: packages/nexus-agents/src/scm/types.ts:81


ScmCommentDetail

Defined in: packages/nexus-agents/src/scm/types.ts:169

Extended comment with author association.

Extends

Properties

author
readonly author: string;

Defined in: packages/nexus-agents/src/scm/types.ts:83

Inherited from

ScmComment.author

authorAssociation
readonly authorAssociation: string;

Defined in: packages/nexus-agents/src/scm/types.ts:170

body
readonly body: string;

Defined in: packages/nexus-agents/src/scm/types.ts:82

Inherited from

ScmComment.body

createdAt
readonly createdAt: string;

Defined in: packages/nexus-agents/src/scm/types.ts:84

Inherited from

ScmComment.createdAt

id
readonly id: number;

Defined in: packages/nexus-agents/src/scm/types.ts:81

Inherited from

ScmComment.id


ScmFileChange

Defined in: packages/nexus-agents/src/scm/types.ts:139

File change in a pull request.

Properties

additions
readonly additions: number;

Defined in: packages/nexus-agents/src/scm/types.ts:144

deletions
readonly deletions: number;

Defined in: packages/nexus-agents/src/scm/types.ts:145

filename
readonly filename: string;

Defined in: packages/nexus-agents/src/scm/types.ts:140

patch?
readonly optional patch?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:146

previousFilename?
readonly optional previousFilename?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:147

rawStatus?
readonly optional rawStatus?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:143

status
readonly status: 
  | "unknown"
  | "removed"
  | "added"
  | "modified"
  | "renamed"
  | "copied"
  | "changed"
  | "unchanged";

Defined in: packages/nexus-agents/src/scm/types.ts:141


ScmIssue

Defined in: packages/nexus-agents/src/scm/types.ts:48

SCM issue representation.

Extended by

Properties

author
readonly author: string;

Defined in: packages/nexus-agents/src/scm/types.ts:53

body
readonly body: string;

Defined in: packages/nexus-agents/src/scm/types.ts:51

createdAt
readonly createdAt: string;

Defined in: packages/nexus-agents/src/scm/types.ts:54

labels
readonly labels: readonly string[];

Defined in: packages/nexus-agents/src/scm/types.ts:52

number
readonly number: number;

Defined in: packages/nexus-agents/src/scm/types.ts:49

title
readonly title: string;

Defined in: packages/nexus-agents/src/scm/types.ts:50

url?
readonly optional url?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:65

Web URL of the issue, when the producer has it.

createIssue gets it from gh issue create’s stdout and used to discard it, which left a caller with no way to recover the identity if the number could not be scraped — and pipeline/task-tracker.ts was already reading url through a cast, so TrackedTask.url was permanently undefined on the GitHub path. Optional because mapIssue builds from a --json field list that does not request it.


ScmIssueDetail

Defined in: packages/nexus-agents/src/scm/types.ts:162

Extended issue with association and state. Used by IScmReviewer.

Extends

Properties

author
readonly author: string;

Defined in: packages/nexus-agents/src/scm/types.ts:53

Inherited from

ScmIssue.author

authorAssociation
readonly authorAssociation: string;

Defined in: packages/nexus-agents/src/scm/types.ts:163

body
readonly body: string;

Defined in: packages/nexus-agents/src/scm/types.ts:51

Inherited from

ScmIssue.body

createdAt
readonly createdAt: string;

Defined in: packages/nexus-agents/src/scm/types.ts:54

Inherited from

ScmIssue.createdAt

labels
readonly labels: readonly string[];

Defined in: packages/nexus-agents/src/scm/types.ts:52

Inherited from

ScmIssue.labels

number
readonly number: number;

Defined in: packages/nexus-agents/src/scm/types.ts:49

Inherited from

ScmIssue.number

state
readonly state: string;

Defined in: packages/nexus-agents/src/scm/types.ts:164

title
readonly title: string;

Defined in: packages/nexus-agents/src/scm/types.ts:50

Inherited from

ScmIssue.title

url
readonly url: string;

Defined in: packages/nexus-agents/src/scm/types.ts:165

Web URL of the issue, when the producer has it.

createIssue gets it from gh issue create’s stdout and used to discard it, which left a caller with no way to recover the identity if the number could not be scraped — and pipeline/task-tracker.ts was already reading url through a cast, so TrackedTask.url was permanently undefined on the GitHub path. Optional because mapIssue builds from a --json field list that does not request it.

Overrides

ScmIssue.url


ScmPRStatus

Defined in: packages/nexus-agents/src/scm/types.ts:104

PR status for merge eligibility.

Properties

checksStatus
readonly checksStatus: "success" | "failure" | "pending";

Defined in: packages/nexus-agents/src/scm/types.ts:106

mergeable
readonly mergeable: boolean;

Defined in: packages/nexus-agents/src/scm/types.ts:105

reviewStatus
readonly reviewStatus: "pending" | "approved" | "changes_requested";

Defined in: packages/nexus-agents/src/scm/types.ts:107


ScmPullRequest

Defined in: packages/nexus-agents/src/scm/types.ts:69

SCM pull/merge request representation.

Extended by

Properties

author
readonly author: string;

Defined in: packages/nexus-agents/src/scm/types.ts:73

base
readonly base: string;

Defined in: packages/nexus-agents/src/scm/types.ts:74

body
readonly body: string;

Defined in: packages/nexus-agents/src/scm/types.ts:72

head
readonly head: string;

Defined in: packages/nexus-agents/src/scm/types.ts:75

number
readonly number: number;

Defined in: packages/nexus-agents/src/scm/types.ts:70

title
readonly title: string;

Defined in: packages/nexus-agents/src/scm/types.ts:71

url
readonly url: string;

Defined in: packages/nexus-agents/src/scm/types.ts:76


ScmPullRequestDetail

Defined in: packages/nexus-agents/src/scm/types.ts:151

Extended PR with file diffs and stats. Used by IScmReviewer.

Extends

Properties

additions
readonly additions: number;

Defined in: packages/nexus-agents/src/scm/types.ts:156

author
readonly author: string;

Defined in: packages/nexus-agents/src/scm/types.ts:73

Inherited from

ScmPullRequest.author

authorAssociation
readonly authorAssociation: string;

Defined in: packages/nexus-agents/src/scm/types.ts:153

base
readonly base: string;

Defined in: packages/nexus-agents/src/scm/types.ts:74

Inherited from

ScmPullRequest.base

body
readonly body: string;

Defined in: packages/nexus-agents/src/scm/types.ts:72

Inherited from

ScmPullRequest.body

deletions
readonly deletions: number;

Defined in: packages/nexus-agents/src/scm/types.ts:157

draft
readonly draft: boolean;

Defined in: packages/nexus-agents/src/scm/types.ts:152

files
readonly files: readonly ScmFileChange[];

Defined in: packages/nexus-agents/src/scm/types.ts:155

head
readonly head: string;

Defined in: packages/nexus-agents/src/scm/types.ts:75

Inherited from

ScmPullRequest.head

headSha
readonly headSha: string;

Defined in: packages/nexus-agents/src/scm/types.ts:158

labels
readonly labels: readonly string[];

Defined in: packages/nexus-agents/src/scm/types.ts:154

number
readonly number: number;

Defined in: packages/nexus-agents/src/scm/types.ts:70

Inherited from

ScmPullRequest.number

title
readonly title: string;

Defined in: packages/nexus-agents/src/scm/types.ts:71

Inherited from

ScmPullRequest.title

url
readonly url: string;

Defined in: packages/nexus-agents/src/scm/types.ts:76

Inherited from

ScmPullRequest.url


ScmToken

Defined in: packages/nexus-agents/src/scm/types.ts:24

Resolved SCM token with metadata.

Properties

platform
readonly platform: ScmPlatform;

Defined in: packages/nexus-agents/src/scm/types.ts:30

SCM platform this token is for

strategy
readonly strategy: TokenStrategy;

Defined in: packages/nexus-agents/src/scm/types.ts:28

How the token was resolved

value
readonly value: string;

Defined in: packages/nexus-agents/src/scm/types.ts:26

The raw token value


ScmUserMetadata

Defined in: packages/nexus-agents/src/scm/types.ts:177

User metadata for reputation assessment.

Properties

company
readonly company: string | null;

Defined in: packages/nexus-agents/src/scm/types.ts:180

createdAt
readonly createdAt: string;

Defined in: packages/nexus-agents/src/scm/types.ts:184

followers
readonly followers: number;

Defined in: packages/nexus-agents/src/scm/types.ts:181

following
readonly following: number;

Defined in: packages/nexus-agents/src/scm/types.ts:182

login
readonly login: string;

Defined in: packages/nexus-agents/src/scm/types.ts:178

name
readonly name: string | null;

Defined in: packages/nexus-agents/src/scm/types.ts:179

publicRepos
readonly publicRepos: number;

Defined in: packages/nexus-agents/src/scm/types.ts:183


TokenResolverConfig

Defined in: packages/nexus-agents/src/scm/types.ts:34

Token resolution configuration.

Properties

envVar?
readonly optional envVar?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:40

Custom env var name override

platform?
readonly optional platform?: ScmPlatform;

Defined in: packages/nexus-agents/src/scm/types.ts:38

SCM platform to resolve for

token?
readonly optional token?: string;

Defined in: packages/nexus-agents/src/scm/types.ts:36

Explicit token (highest priority)

Type Aliases

FullCapableProvider

type FullCapableProvider = IScmProvider & IScmReviewer & IScmUserInfo;

Defined in: packages/nexus-agents/src/scm/types.ts:274

Convenience type: provider with all capabilities. Used by full triage workflows that need review + user info.


ReviewCapableProvider

type ReviewCapableProvider = IScmProvider & IScmReviewer;

Defined in: packages/nexus-agents/src/scm/types.ts:268

Convenience type: provider with review capabilities. Used by PR review workflows.


ScmPlatform

type ScmPlatform = "github" | "gitlab" | "gitea";

Defined in: packages/nexus-agents/src/scm/types.ts:18

Supported SCM platforms.


ScmReviewDecision

type ScmReviewDecision = "approve" | "request_changes" | "comment";

Defined in: packages/nexus-agents/src/scm/types.ts:174

Review decision for a pull request.


TokenStrategy

type TokenStrategy = "env" | "cli" | "config";

Defined in: packages/nexus-agents/src/scm/types.ts:21

Token resolution strategy.

Functions

createFullGitHubProvider()

function createFullGitHubProvider(repo): GitHubProvider & IScmReviewer & IScmUserInfo;

Defined in: packages/nexus-agents/src/scm/github-provider-traits.ts:438

Creates a full-capability GitHub provider with all traits.

Returns an object that implements IScmProvider & IScmReviewer & IScmUserInfo. Consumers can narrow the type to only the traits they need.

Parameters

repo

string

Returns

GitHubProvider & IScmReviewer & IScmUserInfo

Example

const provider = createFullGitHubProvider('owner/repo');
// Use as ReviewCapableProvider
const detail = await provider.getPullRequestDetail(42);
// Use as IScmUserInfo
const user = await provider.fetchUserMetadata('octocat');

createGitHubProvider()

function createGitHubProvider(repo): IScmProvider;

Defined in: packages/nexus-agents/src/scm/factory.ts:82

Creates a GitHub provider directly (convenience shortcut).

Parameters

repo

string

Repository in owner/repo format

Returns

IScmProvider

GitHub provider instance


createScmProvider()

function createScmProvider(config): Promise<Result<IScmProvider, ScmError>>;

Defined in: packages/nexus-agents/src/scm/factory.ts:44

Creates an SCM provider for the specified repository.

Token resolution is automatic — checks env vars and CLI auth. Currently supports GitHub (gh CLI). GitLab/Gitea planned.

Parameters

config

CreateScmProviderConfig

Provider configuration

Returns

Promise<Result<IScmProvider, ScmError>>

SCM provider instance or error

Example

const result = await createScmProvider({ repo: 'owner/repo' });
if (!result.ok) { console.error(result.error); return; }
const issues = await result.value.listIssues();

getTokenEnvVars()

function getTokenEnvVars(platform?): readonly string[];

Defined in: packages/nexus-agents/src/scm/token-resolver.ts:139

Returns the list of environment variable names for a platform. Useful for documentation and error messages.

Parameters

platform?

ScmPlatform = 'github'

Returns

readonly string[]


hasToken()

function hasToken(platform?): boolean;

Defined in: packages/nexus-agents/src/scm/token-resolver.ts:131

Synchronous check: is any token available for the given platform? Only checks environment variables (no CLI auth, which is async).

Parameters

platform?

ScmPlatform = 'github'

Returns

boolean


resolveToken()

function resolveToken(config?): Promise<Result<ScmToken, Error>>;

Defined in: packages/nexus-agents/src/scm/token-resolver.ts:96

Resolves an SCM token using the priority chain:

  1. Explicit config
  2. Environment variables
  3. CLI auth

Parameters

config?

TokenResolverConfig

Token resolution configuration

Returns

Promise<Result<ScmToken, Error>>

Resolved token or error