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
Properties
platform
readonly platform: "github";
Defined in: packages/nexus-agents/src/scm/github-provider.ts:203
Platform identifier.
Implementation of
repo
readonly repo: string;
Defined in: packages/nexus-agents/src/scm/github-provider.ts:205
Repository in owner/repo format.
Implementation of
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
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
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
createPR()
createPR(options): Promise<Result<ScmPullRequest, ScmError>>;
Defined in: packages/nexus-agents/src/scm/github-provider.ts:259
Parameters
options
Returns
Promise<Result<ScmPullRequest, ScmError>>
Implementation of
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
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
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
listIssues()
listIssues(filters?): Promise<Result<readonly ScmIssue[], ScmError>>;
Defined in: packages/nexus-agents/src/scm/github-provider.ts:220
Parameters
filters?
Returns
Promise<Result<readonly ScmIssue[], ScmError>>
Implementation of
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?
Returns
Promise<Result<void, ScmError>>
Implementation of
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
Returns
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
Returns
Promise<Result<void, ScmError>>
Implementation of
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
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
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
statusCode?
number
context?
Record<string, unknown>
Returns
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
head
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
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?
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?
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
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
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
createdAt
readonly createdAt: string;
Defined in: packages/nexus-agents/src/scm/types.ts:84
Inherited from
id
readonly id: number;
Defined in: packages/nexus-agents/src/scm/types.ts:81
Inherited from
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
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
createdAt
readonly createdAt: string;
Defined in: packages/nexus-agents/src/scm/types.ts:54
Inherited from
labels
readonly labels: readonly string[];
Defined in: packages/nexus-agents/src/scm/types.ts:52
Inherited from
number
readonly number: number;
Defined in: packages/nexus-agents/src/scm/types.ts:49
Inherited from
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
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
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
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
body
readonly body: string;
Defined in: packages/nexus-agents/src/scm/types.ts:72
Inherited from
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
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
title
readonly title: string;
Defined in: packages/nexus-agents/src/scm/types.ts:71
Inherited from
url
readonly url: string;
Defined in: packages/nexus-agents/src/scm/types.ts:76
Inherited from
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
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
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:
- Explicit config
- Environment variables
- CLI auth
Parameters
config?
Token resolution configuration
Returns
Promise<Result<ScmToken, Error>>
Resolved token or error