@agents-ensemble/core 0.4.1 → 0.5.1
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.
- package/dist/acp/acp-client.d.ts +3 -0
- package/dist/acp/acp-client.d.ts.map +1 -1
- package/dist/acp/acp-client.js +7 -1
- package/dist/acp/acp-client.js.map +1 -1
- package/dist/acp/acp-preset-bins.d.ts +10 -0
- package/dist/acp/acp-preset-bins.d.ts.map +1 -0
- package/dist/acp/acp-preset-bins.js +27 -0
- package/dist/acp/acp-preset-bins.js.map +1 -0
- package/dist/acp/index.d.ts +5 -0
- package/dist/acp/index.d.ts.map +1 -1
- package/dist/acp/index.js +4 -0
- package/dist/acp/index.js.map +1 -1
- package/dist/acp/resolve-acp-auth.d.ts +13 -0
- package/dist/acp/resolve-acp-auth.d.ts.map +1 -0
- package/dist/acp/resolve-acp-auth.js +31 -0
- package/dist/acp/resolve-acp-auth.js.map +1 -0
- package/dist/acp/resolve-acp-spawn.d.ts +2 -0
- package/dist/acp/resolve-acp-spawn.d.ts.map +1 -1
- package/dist/acp/resolve-acp-spawn.js +12 -6
- package/dist/acp/resolve-acp-spawn.js.map +1 -1
- package/dist/acp/resolve-bundled-acp-bin.d.ts +11 -0
- package/dist/acp/resolve-bundled-acp-bin.d.ts.map +1 -0
- package/dist/acp/resolve-bundled-acp-bin.js +60 -0
- package/dist/acp/resolve-bundled-acp-bin.js.map +1 -0
- package/dist/acp/testing/fake-acp-server.d.ts +2 -0
- package/dist/acp/testing/fake-acp-server.d.ts.map +1 -1
- package/dist/acp/testing/fake-acp-server.js +4 -1
- package/dist/acp/testing/fake-acp-server.js.map +1 -1
- package/dist/acp/validate-acp-preset-prerequisites.d.ts +24 -0
- package/dist/acp/validate-acp-preset-prerequisites.d.ts.map +1 -0
- package/dist/acp/validate-acp-preset-prerequisites.js +121 -0
- package/dist/acp/validate-acp-preset-prerequisites.js.map +1 -0
- package/dist/conductor/conductor-session-driver.d.ts +2 -0
- package/dist/conductor/conductor-session-driver.d.ts.map +1 -1
- package/dist/conductor/conductor-session-driver.js +16 -7
- package/dist/conductor/conductor-session-driver.js.map +1 -1
- package/dist/conductor/conductor-session.d.ts +3 -0
- package/dist/conductor/conductor-session.d.ts.map +1 -1
- package/dist/conductor/conductor-session.js +65 -8
- package/dist/conductor/conductor-session.js.map +1 -1
- package/dist/conductor/resolve-conductor-model-id.d.ts +7 -3
- package/dist/conductor/resolve-conductor-model-id.d.ts.map +1 -1
- package/dist/conductor/resolve-conductor-model-id.js +9 -11
- package/dist/conductor/resolve-conductor-model-id.js.map +1 -1
- package/dist/conductor/session/events/session-log-event.d.ts +4 -0
- package/dist/conductor/session/events/session-log-event.d.ts.map +1 -1
- package/dist/config/deep-merge.d.ts +3 -0
- package/dist/config/deep-merge.d.ts.map +1 -0
- package/dist/config/deep-merge.js +20 -0
- package/dist/config/deep-merge.js.map +1 -0
- package/dist/config/defaults.d.ts +5 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +35 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/load-ensemble-config.d.ts +12 -0
- package/dist/config/load-ensemble-config.d.ts.map +1 -0
- package/dist/config/load-ensemble-config.js +44 -0
- package/dist/config/load-ensemble-config.js.map +1 -0
- package/dist/config/parse-config.d.ts +7 -0
- package/dist/config/parse-config.d.ts.map +1 -0
- package/dist/config/parse-config.js +179 -0
- package/dist/config/parse-config.js.map +1 -0
- package/dist/config/resolve-settings.d.ts +78 -0
- package/dist/config/resolve-settings.d.ts.map +1 -0
- package/dist/config/resolve-settings.js +141 -0
- package/dist/config/resolve-settings.js.map +1 -0
- package/dist/config/types.d.ts +52 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/github/fetch-github-updates.d.ts +16 -3
- package/dist/github/fetch-github-updates.d.ts.map +1 -1
- package/dist/github/fetch-github-updates.js +97 -101
- package/dist/github/fetch-github-updates.js.map +1 -1
- package/dist/github/github-auth.d.ts +15 -0
- package/dist/github/github-auth.d.ts.map +1 -0
- package/dist/github/github-auth.js +44 -0
- package/dist/github/github-auth.js.map +1 -0
- package/dist/github/github-client.d.ts +76 -0
- package/dist/github/github-client.d.ts.map +1 -0
- package/dist/github/github-client.js +198 -0
- package/dist/github/github-client.js.map +1 -0
- package/dist/github/github-monitor-error.d.ts +24 -0
- package/dist/github/github-monitor-error.d.ts.map +1 -0
- package/dist/github/github-monitor-error.js +75 -0
- package/dist/github/github-monitor-error.js.map +1 -0
- package/dist/github/github-monitor.d.ts +5 -3
- package/dist/github/github-monitor.d.ts.map +1 -1
- package/dist/github/github-monitor.js +15 -3
- package/dist/github/github-monitor.js.map +1 -1
- package/dist/github/github-test-fixtures.d.ts +52 -0
- package/dist/github/github-test-fixtures.d.ts.map +1 -1
- package/dist/github/github-test-fixtures.js +42 -0
- package/dist/github/github-test-fixtures.js.map +1 -1
- package/dist/github/index.d.ts +11 -2
- package/dist/github/index.d.ts.map +1 -1
- package/dist/github/index.js +6 -2
- package/dist/github/index.js.map +1 -1
- package/dist/github/issue-context.d.ts +8 -1
- package/dist/github/issue-context.d.ts.map +1 -1
- package/dist/github/issue-context.js +13 -12
- package/dist/github/issue-context.js.map +1 -1
- package/dist/github/resolve-github-auth-token.d.ts +19 -0
- package/dist/github/resolve-github-auth-token.d.ts.map +1 -0
- package/dist/github/resolve-github-auth-token.js +32 -0
- package/dist/github/resolve-github-auth-token.js.map +1 -0
- package/dist/github/run-gh.d.ts +20 -0
- package/dist/github/run-gh.d.ts.map +1 -1
- package/dist/github/run-gh.js +38 -4
- package/dist/github/run-gh.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/profile/load-profile.d.ts +5 -2
- package/dist/profile/load-profile.d.ts.map +1 -1
- package/dist/profile/load-profile.js +9 -7
- package/dist/profile/load-profile.js.map +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { resolveGitHubAuthToken } from './resolve-github-auth-token.js';
|
|
2
|
+
const GITHUB_REST_BASE = 'https://api.github.com';
|
|
3
|
+
const GITHUB_GRAPHQL_URL = 'https://api.github.com/graphql';
|
|
4
|
+
const USER_AGENT = 'agents-ensemble';
|
|
5
|
+
export class GitHubApiError extends Error {
|
|
6
|
+
status;
|
|
7
|
+
retryable;
|
|
8
|
+
constructor(message, options) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'GitHubApiError';
|
|
11
|
+
this.status = options.status;
|
|
12
|
+
this.retryable = options.retryable ?? false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export async function createGitHubClient(options) {
|
|
16
|
+
const resolveTokenFn = options.resolveTokenFn ?? resolveGitHubAuthToken;
|
|
17
|
+
const auth = await resolveTokenFn({
|
|
18
|
+
config: options.config,
|
|
19
|
+
env: options.env,
|
|
20
|
+
});
|
|
21
|
+
if (!auth.token) {
|
|
22
|
+
throw new GitHubApiError('GitHub authentication token not found', {
|
|
23
|
+
status: 401,
|
|
24
|
+
retryable: false,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return buildGitHubClient({
|
|
28
|
+
token: auth.token,
|
|
29
|
+
fetchFn: options.fetchFn,
|
|
30
|
+
signal: options.signal,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
export function buildGitHubClient(options) {
|
|
34
|
+
const fetchFn = options.fetchFn ?? fetch;
|
|
35
|
+
const restRequest = async (path, init = {}) => {
|
|
36
|
+
const url = path.startsWith('http') ? path : `${GITHUB_REST_BASE}${path}`;
|
|
37
|
+
const response = await fetchFn(url, {
|
|
38
|
+
...init,
|
|
39
|
+
signal: options.signal,
|
|
40
|
+
headers: {
|
|
41
|
+
Accept: 'application/vnd.github+json',
|
|
42
|
+
Authorization: `Bearer ${options.token}`,
|
|
43
|
+
'User-Agent': USER_AGENT,
|
|
44
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
45
|
+
...(init.headers ?? {}),
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!response.ok) {
|
|
49
|
+
throw await createRestError(response);
|
|
50
|
+
}
|
|
51
|
+
return (await response.json());
|
|
52
|
+
};
|
|
53
|
+
const restPaginate = async (path) => {
|
|
54
|
+
const items = [];
|
|
55
|
+
let nextUrl = path;
|
|
56
|
+
while (nextUrl) {
|
|
57
|
+
const url = nextUrl.startsWith('http') ? nextUrl : `${GITHUB_REST_BASE}${nextUrl}`;
|
|
58
|
+
const response = await fetchFn(url, {
|
|
59
|
+
signal: options.signal,
|
|
60
|
+
headers: {
|
|
61
|
+
Accept: 'application/vnd.github+json',
|
|
62
|
+
Authorization: `Bearer ${options.token}`,
|
|
63
|
+
'User-Agent': USER_AGENT,
|
|
64
|
+
'X-GitHub-Api-Version': '2022-11-28',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
if (!response.ok) {
|
|
68
|
+
throw await createRestError(response);
|
|
69
|
+
}
|
|
70
|
+
const page = (await response.json());
|
|
71
|
+
items.push(...page);
|
|
72
|
+
nextUrl = parseLinkHeader(response.headers.get('link')).next;
|
|
73
|
+
}
|
|
74
|
+
return items;
|
|
75
|
+
};
|
|
76
|
+
const graphqlRequest = async (query, variables) => {
|
|
77
|
+
const response = await fetchFn(GITHUB_GRAPHQL_URL, {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
signal: options.signal,
|
|
80
|
+
headers: {
|
|
81
|
+
Accept: 'application/vnd.github+json',
|
|
82
|
+
Authorization: `Bearer ${options.token}`,
|
|
83
|
+
'Content-Type': 'application/json',
|
|
84
|
+
'User-Agent': USER_AGENT,
|
|
85
|
+
},
|
|
86
|
+
body: JSON.stringify({ query, variables }),
|
|
87
|
+
});
|
|
88
|
+
if (!response.ok) {
|
|
89
|
+
throw await createRestError(response);
|
|
90
|
+
}
|
|
91
|
+
const payload = (await response.json());
|
|
92
|
+
if (payload.errors?.length) {
|
|
93
|
+
const message = payload.errors.map((error) => error.message).join('; ');
|
|
94
|
+
throw new GitHubApiError(`GitHub GraphQL error: ${message}`, {
|
|
95
|
+
status: response.status,
|
|
96
|
+
retryable: response.status === 429 || response.status >= 500,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (!payload.data) {
|
|
100
|
+
throw new GitHubApiError('GitHub GraphQL response missing data', {
|
|
101
|
+
status: response.status,
|
|
102
|
+
retryable: false,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
return payload.data;
|
|
106
|
+
};
|
|
107
|
+
return {
|
|
108
|
+
async getIssue(owner, repo, issueNumber) {
|
|
109
|
+
return restRequest(`/repos/${owner}/${repo}/issues/${issueNumber}`);
|
|
110
|
+
},
|
|
111
|
+
async listIssueComments(owner, repo, issueNumber) {
|
|
112
|
+
return restPaginate(`/repos/${owner}/${repo}/issues/${issueNumber}/comments?per_page=100`);
|
|
113
|
+
},
|
|
114
|
+
async searchLinkedPullRequests(owner, repo, issueNumber) {
|
|
115
|
+
const query = encodeURIComponent(`${issueNumber} repo:${owner}/${repo} type:pr`);
|
|
116
|
+
const data = await restRequest(`/search/issues?q=${query}&per_page=20`);
|
|
117
|
+
return data.items.filter((pr) => pr.state === 'OPEN' || pr.state === 'open');
|
|
118
|
+
},
|
|
119
|
+
async listPullRequestReviews(owner, repo, prNumber) {
|
|
120
|
+
return restPaginate(`/repos/${owner}/${repo}/pulls/${prNumber}/reviews?per_page=100`);
|
|
121
|
+
},
|
|
122
|
+
async listPullRequestReviewComments(owner, repo, prNumber) {
|
|
123
|
+
return restPaginate(`/repos/${owner}/${repo}/pulls/${prNumber}/comments?per_page=100`);
|
|
124
|
+
},
|
|
125
|
+
async getStatusCheckRollup(owner, repo, prNumber) {
|
|
126
|
+
const query = `
|
|
127
|
+
query($owner: String!, $name: String!, $number: Int!) {
|
|
128
|
+
repository(owner: $owner, name: $name) {
|
|
129
|
+
pullRequest(number: $number) {
|
|
130
|
+
statusCheckRollup {
|
|
131
|
+
contexts(first: 100) {
|
|
132
|
+
pageInfo {
|
|
133
|
+
hasNextPage
|
|
134
|
+
endCursor
|
|
135
|
+
}
|
|
136
|
+
nodes {
|
|
137
|
+
__typename
|
|
138
|
+
... on CheckRun {
|
|
139
|
+
name
|
|
140
|
+
status
|
|
141
|
+
conclusion
|
|
142
|
+
detailsUrl
|
|
143
|
+
}
|
|
144
|
+
... on StatusContext {
|
|
145
|
+
context
|
|
146
|
+
state
|
|
147
|
+
targetUrl
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
`;
|
|
156
|
+
const data = await graphqlRequest(query, {
|
|
157
|
+
owner,
|
|
158
|
+
name: repo,
|
|
159
|
+
number: prNumber,
|
|
160
|
+
});
|
|
161
|
+
const rollup = data.repository?.pullRequest?.statusCheckRollup;
|
|
162
|
+
if (!rollup) {
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
return rollup.contexts.nodes ?? [];
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
async function createRestError(response) {
|
|
170
|
+
let detail = response.statusText;
|
|
171
|
+
try {
|
|
172
|
+
const body = (await response.json());
|
|
173
|
+
if (body.message) {
|
|
174
|
+
detail = body.message;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// ignore JSON parse errors
|
|
179
|
+
}
|
|
180
|
+
const remaining = response.headers.get('x-ratelimit-remaining');
|
|
181
|
+
const retryable = response.status === 429 ||
|
|
182
|
+
response.status >= 500 ||
|
|
183
|
+
(response.status === 403 && remaining === '0');
|
|
184
|
+
return new GitHubApiError(`GitHub API ${response.status}: ${detail}`, { status: response.status, retryable });
|
|
185
|
+
}
|
|
186
|
+
function parseLinkHeader(header) {
|
|
187
|
+
if (!header) {
|
|
188
|
+
return {};
|
|
189
|
+
}
|
|
190
|
+
for (const part of header.split(',')) {
|
|
191
|
+
const match = part.match(/<([^>]+)>;\s*rel="([^"]+)"/);
|
|
192
|
+
if (match?.[2] === 'next') {
|
|
193
|
+
return { next: match[1] };
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return {};
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=github-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-client.js","sourceRoot":"","sources":["../../src/github/github-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** GitHub 監視 poll のフェーズ(`monitor_error` 用)。 */
|
|
2
|
+
export type GitHubMonitorErrorPhase = 'issue_comments' | 'pr_search' | 'pr_reviews' | 'pr_review_comments' | 'pr_status_checks';
|
|
3
|
+
export type GitHubMonitorErrorCause = 'parse' | 'gh_cli' | 'auth' | 'unknown';
|
|
4
|
+
export interface GitHubMonitorPhaseError {
|
|
5
|
+
phase: GitHubMonitorErrorPhase;
|
|
6
|
+
prNumber?: number;
|
|
7
|
+
cause: GitHubMonitorErrorCause;
|
|
8
|
+
retryable: boolean;
|
|
9
|
+
message: string;
|
|
10
|
+
/** `formatGitHubErrorMessage` 用の元エラー。 */
|
|
11
|
+
sourceError?: unknown;
|
|
12
|
+
}
|
|
13
|
+
/** poll フェーズ失敗を harness へ伝えるエラー。 */
|
|
14
|
+
export declare class GitHubMonitorError extends Error {
|
|
15
|
+
readonly phase: GitHubMonitorErrorPhase;
|
|
16
|
+
readonly prNumber?: number;
|
|
17
|
+
readonly cause: GitHubMonitorErrorCause;
|
|
18
|
+
readonly retryable: boolean;
|
|
19
|
+
constructor(options: GitHubMonitorPhaseError);
|
|
20
|
+
}
|
|
21
|
+
export declare function safeUpperString(value: unknown, fallback: string): string;
|
|
22
|
+
export declare function classifyGitHubMonitorError(error: unknown): Pick<GitHubMonitorPhaseError, 'cause' | 'retryable' | 'message'>;
|
|
23
|
+
export declare function createGitHubMonitorPhaseError(phase: GitHubMonitorErrorPhase, error: unknown, prNumber?: number): GitHubMonitorPhaseError;
|
|
24
|
+
//# sourceMappingURL=github-monitor-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-monitor-error.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor-error.ts"],"names":[],"mappings":"AAGA,+CAA+C;AAC/C,MAAM,MAAM,uBAAuB,GAC/B,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE9E,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,oCAAoC;AACpC,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAEhB,OAAO,EAAE,uBAAuB;CAQ7C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,IAAI,CAAC,uBAAuB,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,CA8ClE;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,uBAAuB,CAQzB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { GitHubApiError } from './github-client.js';
|
|
2
|
+
import { RunGhError } from './run-gh.js';
|
|
3
|
+
/** poll フェーズ失敗を harness へ伝えるエラー。 */
|
|
4
|
+
export class GitHubMonitorError extends Error {
|
|
5
|
+
phase;
|
|
6
|
+
prNumber;
|
|
7
|
+
cause;
|
|
8
|
+
retryable;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
super(options.message);
|
|
11
|
+
this.name = 'GitHubMonitorError';
|
|
12
|
+
this.phase = options.phase;
|
|
13
|
+
this.prNumber = options.prNumber;
|
|
14
|
+
this.cause = options.cause;
|
|
15
|
+
this.retryable = options.retryable;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function safeUpperString(value, fallback) {
|
|
19
|
+
if (typeof value === 'string' && value.length > 0) {
|
|
20
|
+
return value.toUpperCase();
|
|
21
|
+
}
|
|
22
|
+
return fallback;
|
|
23
|
+
}
|
|
24
|
+
export function classifyGitHubMonitorError(error) {
|
|
25
|
+
if (error instanceof GitHubMonitorError) {
|
|
26
|
+
return {
|
|
27
|
+
cause: error.cause,
|
|
28
|
+
retryable: error.retryable,
|
|
29
|
+
message: error.message,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (error instanceof RunGhError) {
|
|
33
|
+
return {
|
|
34
|
+
cause: error.cause === 'auth' ? 'auth' : 'gh_cli',
|
|
35
|
+
retryable: error.retryable,
|
|
36
|
+
message: error.message,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (error instanceof GitHubApiError) {
|
|
40
|
+
return {
|
|
41
|
+
cause: error.status === 401 || error.status === 403 ? 'auth' : 'gh_cli',
|
|
42
|
+
retryable: error.retryable,
|
|
43
|
+
message: error.message,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (error instanceof TypeError) {
|
|
47
|
+
return {
|
|
48
|
+
cause: 'parse',
|
|
49
|
+
retryable: false,
|
|
50
|
+
message: error.message,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (error instanceof Error) {
|
|
54
|
+
return {
|
|
55
|
+
cause: 'unknown',
|
|
56
|
+
retryable: false,
|
|
57
|
+
message: error.message,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
cause: 'unknown',
|
|
62
|
+
retryable: false,
|
|
63
|
+
message: String(error),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function createGitHubMonitorPhaseError(phase, error, prNumber) {
|
|
67
|
+
const classified = classifyGitHubMonitorError(error);
|
|
68
|
+
return {
|
|
69
|
+
phase,
|
|
70
|
+
prNumber,
|
|
71
|
+
...classified,
|
|
72
|
+
sourceError: error,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=github-monitor-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-monitor-error.js","sourceRoot":"","sources":["../../src/github/github-monitor-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsBzC,oCAAoC;AACpC,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,KAAK,CAA0B;IAC/B,QAAQ,CAAU;IAClB,KAAK,CAA0B;IAC/B,SAAS,CAAU;IAE5B,YAAY,OAAgC;QAC1C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,QAAgB;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACjD,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;YACvE,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAA8B,EAC9B,KAAc,EACd,QAAiB;IAEjB,MAAM,UAAU,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO;QACL,KAAK;QACL,QAAQ;QACR,GAAG,UAAU;QACb,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { EnsembleConfig } from '../config/types.js';
|
|
2
|
+
import type { GitHubClient } from './github-client.js';
|
|
1
3
|
import { type GitHubMonitorCursor } from './github-monitor-cursor.js';
|
|
2
4
|
import type { GitHubUpdatePayload } from './github-update-types.js';
|
|
3
|
-
import { runGh } from './run-gh.js';
|
|
4
5
|
export declare const DEFAULT_GITHUB_MONITOR_DEBOUNCE_MS = 30000;
|
|
5
6
|
export declare const DEFAULT_GITHUB_MONITOR_POLL_INTERVAL_MS = 60000;
|
|
6
7
|
export declare const DEFAULT_GITHUB_MONITOR_ACTIVE_POLL_INTERVAL_MS = 15000;
|
|
@@ -8,7 +9,8 @@ export declare const DEFAULT_GITHUB_MONITOR_ACTIVE_POLL_INTERVAL_MS = 15000;
|
|
|
8
9
|
export declare const DEFAULT_GITHUB_MONITOR_STOP_POLL_WAIT_MS = 5000;
|
|
9
10
|
export interface GitHubMonitorOptions {
|
|
10
11
|
issueUrl: string;
|
|
11
|
-
|
|
12
|
+
/** harness 設定。GitHub API 認証解決で参照する。 */
|
|
13
|
+
ensembleConfig: EnsembleConfig;
|
|
12
14
|
cursor?: GitHubMonitorCursor;
|
|
13
15
|
debounceMs?: number;
|
|
14
16
|
pollIntervalMs?: number;
|
|
@@ -19,7 +21,7 @@ export interface GitHubMonitorOptions {
|
|
|
19
21
|
onCursorChange?: (cursor: GitHubMonitorCursor) => void;
|
|
20
22
|
onPollError?: (error: unknown) => void;
|
|
21
23
|
shutdownSignal?: AbortSignal;
|
|
22
|
-
|
|
24
|
+
githubClient?: GitHubClient;
|
|
23
25
|
}
|
|
24
26
|
export interface GitHubMonitor {
|
|
25
27
|
start(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-monitor.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github-monitor.d.ts","sourceRoot":"","sources":["../../src/github/github-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAoB,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEtF,eAAO,MAAM,kCAAkC,QAAS,CAAC;AACzD,eAAO,MAAM,uCAAuC,QAAS,CAAC;AAC9D,eAAO,MAAM,8CAA8C,QAAS,CAAC;AACrE,kEAAkE;AAClE,eAAO,MAAM,wCAAwC,OAAQ,CAAC;AAE9D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACjD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACvD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,SAAS,IAAI,mBAAmB,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CAoIhF"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { DebounceBuffer } from './debounce-buffer.js';
|
|
2
2
|
import { fetchGitHubUpdates, } from './fetch-github-updates.js';
|
|
3
|
+
import { formatGitHubErrorMessage } from './github-auth.js';
|
|
4
|
+
import { GitHubMonitorError } from './github-monitor-error.js';
|
|
3
5
|
import { emptyGitHubMonitorCursor, isEmptyGitHubMonitorCursor, normalizeGitHubMonitorCursor, } from './github-monitor-cursor.js';
|
|
4
6
|
export const DEFAULT_GITHUB_MONITOR_DEBOUNCE_MS = 30_000;
|
|
5
7
|
export const DEFAULT_GITHUB_MONITOR_POLL_INTERVAL_MS = 60_000;
|
|
@@ -48,8 +50,8 @@ export function createGitHubMonitor(options) {
|
|
|
48
50
|
const input = {
|
|
49
51
|
issueUrl: options.issueUrl,
|
|
50
52
|
cursor,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
+
ensembleConfig: options.ensembleConfig,
|
|
54
|
+
githubClient: options.githubClient,
|
|
53
55
|
initialCursorPoll: needsBootstrapPoll,
|
|
54
56
|
abortSignal: pollAbortController.signal,
|
|
55
57
|
};
|
|
@@ -61,10 +63,20 @@ export function createGitHubMonitor(options) {
|
|
|
61
63
|
if (result.updates.length > 0) {
|
|
62
64
|
buffer.pushMany(result.updates);
|
|
63
65
|
}
|
|
66
|
+
for (const phaseError of result.errors) {
|
|
67
|
+
const source = phaseError.sourceError ?? new Error(phaseError.message);
|
|
68
|
+
options.onPollError?.(new GitHubMonitorError({
|
|
69
|
+
phase: phaseError.phase,
|
|
70
|
+
prNumber: phaseError.prNumber,
|
|
71
|
+
cause: phaseError.cause,
|
|
72
|
+
retryable: phaseError.retryable,
|
|
73
|
+
message: formatGitHubErrorMessage(source, options.ensembleConfig),
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
64
76
|
}
|
|
65
77
|
catch (error) {
|
|
66
78
|
if (!isAbortError(error)) {
|
|
67
|
-
options.onPollError?.(error);
|
|
79
|
+
options.onPollError?.(new Error(formatGitHubErrorMessage(error, options.ensembleConfig)));
|
|
68
80
|
}
|
|
69
81
|
}
|
|
70
82
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-monitor.js","sourceRoot":"","sources":["../../src/github/github-monitor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"github-monitor.js","sourceRoot":"","sources":["../../src/github/github-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,5 +26,57 @@ export declare const GH_STATUS_CHECK_ROLLUP_STATUS_CONTEXT_SUCCESS: readonly [{
|
|
|
26
26
|
readonly state: "SUCCESS";
|
|
27
27
|
readonly targetUrl: "https://github.com/org/repo/actions/runs/2";
|
|
28
28
|
}];
|
|
29
|
+
/**
|
|
30
|
+
* Issue #185 再現: `__typename` 欠落の StatusContext(gap A)。
|
|
31
|
+
* 実環境の GraphQL レスポンスで `__typename` が省略されるケース。
|
|
32
|
+
*/
|
|
33
|
+
export declare const GH_STATUS_CHECK_ROLLUP_STATUS_CONTEXT_NO_TYPENAME: readonly [{
|
|
34
|
+
readonly context: "ci/legacy-no-typename";
|
|
35
|
+
readonly state: "PENDING";
|
|
36
|
+
readonly targetUrl: "https://github.com/org/repo/actions/runs/3";
|
|
37
|
+
}];
|
|
38
|
+
/**
|
|
39
|
+
* Issue #185 再現: `conclusion` が非 string(gap B)。
|
|
40
|
+
* `(check.conclusion ?? 'UNKNOWN').toUpperCase()` が落ちるパターン。
|
|
41
|
+
*/
|
|
42
|
+
export declare const GH_STATUS_CHECK_ROLLUP_NON_STRING_CONCLUSION: readonly [{
|
|
43
|
+
readonly __typename: "CheckRun";
|
|
44
|
+
readonly name: "ci/broken-conclusion";
|
|
45
|
+
readonly status: "COMPLETED";
|
|
46
|
+
readonly conclusion: 0;
|
|
47
|
+
readonly detailsUrl: "https://github.com/org/repo/actions/runs/4";
|
|
48
|
+
}];
|
|
49
|
+
/**
|
|
50
|
+
* Issue #185 再現: 未知 `__typename`(gap C — WorkflowRun)。
|
|
51
|
+
*/
|
|
52
|
+
export declare const GH_STATUS_CHECK_ROLLUP_WORKFLOW_RUN: readonly [{
|
|
53
|
+
readonly __typename: "WorkflowRun";
|
|
54
|
+
readonly name: "ci/workflow";
|
|
55
|
+
readonly status: "COMPLETED";
|
|
56
|
+
readonly conclusion: "SUCCESS";
|
|
57
|
+
}];
|
|
58
|
+
/** Issue #185 再現: 複合 rollup(正常 + 異常エントリ混在)。 */
|
|
59
|
+
export declare const GH_STATUS_CHECK_ROLLUP_MIXED_ISSUE_185: readonly [{
|
|
60
|
+
readonly context: "ci/legacy-no-typename";
|
|
61
|
+
readonly state: "PENDING";
|
|
62
|
+
readonly targetUrl: "https://github.com/org/repo/actions/runs/3";
|
|
63
|
+
}, {
|
|
64
|
+
readonly __typename: "CheckRun";
|
|
65
|
+
readonly name: "ci/broken-conclusion";
|
|
66
|
+
readonly status: "COMPLETED";
|
|
67
|
+
readonly conclusion: 0;
|
|
68
|
+
readonly detailsUrl: "https://github.com/org/repo/actions/runs/4";
|
|
69
|
+
}, {
|
|
70
|
+
readonly __typename: "WorkflowRun";
|
|
71
|
+
readonly name: "ci/workflow";
|
|
72
|
+
readonly status: "COMPLETED";
|
|
73
|
+
readonly conclusion: "SUCCESS";
|
|
74
|
+
}, {
|
|
75
|
+
readonly __typename: "CheckRun";
|
|
76
|
+
readonly name: "ci/test";
|
|
77
|
+
readonly status: "COMPLETED";
|
|
78
|
+
readonly conclusion: "SUCCESS";
|
|
79
|
+
readonly detailsUrl: "https://github.com/org/repo/actions/runs/1";
|
|
80
|
+
}];
|
|
29
81
|
export declare function ghPrViewStatusCheckRollupJson(checkRuns: readonly object[]): string;
|
|
30
82
|
//# sourceMappingURL=github-test-fixtures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-test-fixtures.d.ts","sourceRoot":"","sources":["../../src/github/github-test-fixtures.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,wCAAwC;;;;;;EAQ3C,CAAC;AAEX,eAAO,MAAM,kCAAkC;;;;;;EAQrC,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,6CAA6C;;;;;EAOhD,CAAC;AAEX,eAAO,MAAM,6CAA6C;;;;;EAOhD,CAAC;AAEX,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAElF"}
|
|
1
|
+
{"version":3,"file":"github-test-fixtures.d.ts","sourceRoot":"","sources":["../../src/github/github-test-fixtures.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,eAAO,MAAM,wCAAwC;;;;;;EAQ3C,CAAC;AAEX,eAAO,MAAM,kCAAkC;;;;;;EAQrC,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,6CAA6C;;;;;EAOhD,CAAC;AAEX,eAAO,MAAM,6CAA6C;;;;;EAOhD,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,iDAAiD;;;;EAMpD,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,4CAA4C;;;;;;EAQ/C,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mCAAmC;;;;;EAOtC,CAAC;AAEX,+CAA+C;AAC/C,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;EAKzC,CAAC;AAEX,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAElF"}
|
|
@@ -34,6 +34,48 @@ export const GH_STATUS_CHECK_ROLLUP_STATUS_CONTEXT_SUCCESS = [
|
|
|
34
34
|
targetUrl: 'https://github.com/org/repo/actions/runs/2',
|
|
35
35
|
},
|
|
36
36
|
];
|
|
37
|
+
/**
|
|
38
|
+
* Issue #185 再現: `__typename` 欠落の StatusContext(gap A)。
|
|
39
|
+
* 実環境の GraphQL レスポンスで `__typename` が省略されるケース。
|
|
40
|
+
*/
|
|
41
|
+
export const GH_STATUS_CHECK_ROLLUP_STATUS_CONTEXT_NO_TYPENAME = [
|
|
42
|
+
{
|
|
43
|
+
context: 'ci/legacy-no-typename',
|
|
44
|
+
state: 'PENDING',
|
|
45
|
+
targetUrl: 'https://github.com/org/repo/actions/runs/3',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
/**
|
|
49
|
+
* Issue #185 再現: `conclusion` が非 string(gap B)。
|
|
50
|
+
* `(check.conclusion ?? 'UNKNOWN').toUpperCase()` が落ちるパターン。
|
|
51
|
+
*/
|
|
52
|
+
export const GH_STATUS_CHECK_ROLLUP_NON_STRING_CONCLUSION = [
|
|
53
|
+
{
|
|
54
|
+
__typename: 'CheckRun',
|
|
55
|
+
name: 'ci/broken-conclusion',
|
|
56
|
+
status: 'COMPLETED',
|
|
57
|
+
conclusion: 0,
|
|
58
|
+
detailsUrl: 'https://github.com/org/repo/actions/runs/4',
|
|
59
|
+
},
|
|
60
|
+
];
|
|
61
|
+
/**
|
|
62
|
+
* Issue #185 再現: 未知 `__typename`(gap C — WorkflowRun)。
|
|
63
|
+
*/
|
|
64
|
+
export const GH_STATUS_CHECK_ROLLUP_WORKFLOW_RUN = [
|
|
65
|
+
{
|
|
66
|
+
__typename: 'WorkflowRun',
|
|
67
|
+
name: 'ci/workflow',
|
|
68
|
+
status: 'COMPLETED',
|
|
69
|
+
conclusion: 'SUCCESS',
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
/** Issue #185 再現: 複合 rollup(正常 + 異常エントリ混在)。 */
|
|
73
|
+
export const GH_STATUS_CHECK_ROLLUP_MIXED_ISSUE_185 = [
|
|
74
|
+
...GH_STATUS_CHECK_ROLLUP_STATUS_CONTEXT_NO_TYPENAME,
|
|
75
|
+
...GH_STATUS_CHECK_ROLLUP_NON_STRING_CONCLUSION,
|
|
76
|
+
...GH_STATUS_CHECK_ROLLUP_WORKFLOW_RUN,
|
|
77
|
+
...GH_STATUS_CHECK_ROLLUP_COMPLETED_SUCCESS,
|
|
78
|
+
];
|
|
37
79
|
export function ghPrViewStatusCheckRollupJson(checkRuns) {
|
|
38
80
|
return JSON.stringify({ statusCheckRollup: checkRuns });
|
|
39
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-test-fixtures.js","sourceRoot":"","sources":["../../src/github/github-test-fixtures.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,wCAAwC,GAAG;IACtD;QACE,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,4CAA4C;KACzD;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD;QACE,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,4CAA4C;KACzD;CACO,CAAC;AAEX,6DAA6D;AAC7D,MAAM,CAAC,MAAM,6CAA6C,GAAG;IAC3D;QACE,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,4CAA4C;KACxD;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,6CAA6C,GAAG;IAC3D;QACE,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,4CAA4C;KACxD;CACO,CAAC;AAEX,MAAM,UAAU,6BAA6B,CAAC,SAA4B;IACxE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"github-test-fixtures.js","sourceRoot":"","sources":["../../src/github/github-test-fixtures.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,wCAAwC,GAAG;IACtD;QACE,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,4CAA4C;KACzD;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,kCAAkC,GAAG;IAChD;QACE,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,aAAa;QACrB,UAAU,EAAE,EAAE;QACd,UAAU,EAAE,4CAA4C;KACzD;CACO,CAAC;AAEX,6DAA6D;AAC7D,MAAM,CAAC,MAAM,6CAA6C,GAAG;IAC3D;QACE,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,4CAA4C;KACxD;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,6CAA6C,GAAG;IAC3D;QACE,UAAU,EAAE,eAAe;QAC3B,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,4CAA4C;KACxD;CACO,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,iDAAiD,GAAG;IAC/D;QACE,OAAO,EAAE,uBAAuB;QAChC,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,4CAA4C;KACxD;CACO,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,4CAA4C,GAAG;IAC1D;QACE,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,sBAAsB;QAC5B,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,4CAA4C;KACzD;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG;IACjD;QACE,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,WAAW;QACnB,UAAU,EAAE,SAAS;KACtB;CACO,CAAC;AAEX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,sCAAsC,GAAG;IACpD,GAAG,iDAAiD;IACpD,GAAG,4CAA4C;IAC/C,GAAG,mCAAmC;IACtC,GAAG,wCAAwC;CACnC,CAAC;AAEX,MAAM,UAAU,6BAA6B,CAAC,SAA4B;IACxE,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC,CAAC;AAC1D,CAAC"}
|
package/dist/github/index.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
export { runGh } from './run-gh.js';
|
|
1
|
+
export { runGh, RunGhError } from './run-gh.js';
|
|
2
|
+
export type { RunGhErrorCause } from './run-gh.js';
|
|
3
|
+
export { resolveGitHubAuthToken } from './resolve-github-auth-token.js';
|
|
4
|
+
export type { GitHubAuthTokenSource, ResolveGitHubAuthTokenOptions, ResolveGitHubAuthTokenResult, } from './resolve-github-auth-token.js';
|
|
5
|
+
export { buildGitHubClient, createGitHubClient, GitHubApiError, } from './github-client.js';
|
|
6
|
+
export type { CreateGitHubClientOptions, GitHubClient, GitHubClientOptions, GitHubIssueComment, GitHubPullRequestRef, GitHubPullRequestReview, GitHubPullRequestReviewComment, GitHubRestIssue, } from './github-client.js';
|
|
7
|
+
export { formatGitHubAuthRecoveryHint, formatGitHubErrorMessage, GITHUB_AUTH_HINT, hasGitHubAuth, isGitHubAuthError, } from './github-auth.js';
|
|
2
8
|
export { fetchIssueContext, } from './issue-context.js';
|
|
9
|
+
export type { FetchIssueContextOptions } from './issue-context.js';
|
|
3
10
|
export { formatIssueContextForPrompt, formatIssueContextYaml, } from './format-issue-context-prompt.js';
|
|
4
11
|
export type { IssueContext, IssueComment, } from './issue-context.js';
|
|
5
12
|
export { createGitHubMonitor, DEFAULT_GITHUB_MONITOR_DEBOUNCE_MS, DEFAULT_GITHUB_MONITOR_POLL_INTERVAL_MS, DEFAULT_GITHUB_MONITOR_ACTIVE_POLL_INTERVAL_MS, } from './github-monitor.js';
|
|
@@ -7,6 +14,8 @@ export type { GitHubMonitor, GitHubMonitorOptions } from './github-monitor.js';
|
|
|
7
14
|
export { emptyGitHubMonitorCursor, isEmptyGitHubMonitorCursor, normalizeGitHubMonitorCursor, } from './github-monitor-cursor.js';
|
|
8
15
|
export type { GitHubMonitorCursor, PullRequestMonitorCursor, } from './github-monitor-cursor.js';
|
|
9
16
|
export type { GitHubUpdateItem, GitHubUpdateKind, GitHubUpdatePayload, } from './github-update-types.js';
|
|
10
|
-
export { fetchGitHubUpdates } from './fetch-github-updates.js';
|
|
17
|
+
export { fetchGitHubUpdates, normalizeStatusCheckRollup } from './fetch-github-updates.js';
|
|
11
18
|
export type { FetchGitHubUpdatesInput, FetchGitHubUpdatesResult, } from './fetch-github-updates.js';
|
|
19
|
+
export { GitHubMonitorError, safeUpperString, classifyGitHubMonitorError, createGitHubMonitorPhaseError, } from './github-monitor-error.js';
|
|
20
|
+
export type { GitHubMonitorErrorPhase, GitHubMonitorErrorCause, GitHubMonitorPhaseError, } from './github-monitor-error.js';
|
|
12
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,YAAY,EACV,qBAAqB,EACrB,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,yBAAyB,EACzB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,EACvB,8BAA8B,EAC9B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,kCAAkC,EAClC,uCAAuC,EACvC,8CAA8C,GAC/C,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAC3F,YAAY,EACV,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC"}
|
package/dist/github/index.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
export { runGh } from './run-gh.js';
|
|
1
|
+
export { runGh, RunGhError } from './run-gh.js';
|
|
2
|
+
export { resolveGitHubAuthToken } from './resolve-github-auth-token.js';
|
|
3
|
+
export { buildGitHubClient, createGitHubClient, GitHubApiError, } from './github-client.js';
|
|
4
|
+
export { formatGitHubAuthRecoveryHint, formatGitHubErrorMessage, GITHUB_AUTH_HINT, hasGitHubAuth, isGitHubAuthError, } from './github-auth.js';
|
|
2
5
|
export { fetchIssueContext, } from './issue-context.js';
|
|
3
6
|
export { formatIssueContextForPrompt, formatIssueContextYaml, } from './format-issue-context-prompt.js';
|
|
4
7
|
export { createGitHubMonitor, DEFAULT_GITHUB_MONITOR_DEBOUNCE_MS, DEFAULT_GITHUB_MONITOR_POLL_INTERVAL_MS, DEFAULT_GITHUB_MONITOR_ACTIVE_POLL_INTERVAL_MS, } from './github-monitor.js';
|
|
5
8
|
export { emptyGitHubMonitorCursor, isEmptyGitHubMonitorCursor, normalizeGitHubMonitorCursor, } from './github-monitor-cursor.js';
|
|
6
|
-
export { fetchGitHubUpdates } from './fetch-github-updates.js';
|
|
9
|
+
export { fetchGitHubUpdates, normalizeStatusCheckRollup } from './fetch-github-updates.js';
|
|
10
|
+
export { GitHubMonitorError, safeUpperString, classifyGitHubMonitorError, createGitHubMonitorPhaseError, } from './github-monitor-error.js';
|
|
7
11
|
//# sourceMappingURL=index.js.map
|
package/dist/github/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAMxE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAW5B,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EACL,mBAAmB,EACnB,kCAAkC,EAClC,uCAAuC,EACvC,8CAA8C,GAC/C,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AAUpC,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAK3F,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,0BAA0B,EAC1B,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { EnsembleConfig } from '../config/types.js';
|
|
1
2
|
import type { IssueRef } from '../issue/issue-ref.js';
|
|
3
|
+
import { type GitHubClient, type CreateGitHubClientOptions } from './github-client.js';
|
|
2
4
|
export interface IssueComment {
|
|
3
5
|
author: string;
|
|
4
6
|
body: string;
|
|
@@ -12,5 +14,10 @@ export interface IssueContext {
|
|
|
12
14
|
labels: string[];
|
|
13
15
|
comments: IssueComment[];
|
|
14
16
|
}
|
|
15
|
-
export
|
|
17
|
+
export interface FetchIssueContextOptions {
|
|
18
|
+
ensembleConfig: EnsembleConfig;
|
|
19
|
+
githubClient?: GitHubClient;
|
|
20
|
+
createClientOptions?: Omit<CreateGitHubClientOptions, 'config'>;
|
|
21
|
+
}
|
|
22
|
+
export declare function fetchIssueContext(issueUrl: string, options: FetchIssueContextOptions): Promise<IssueContext>;
|
|
16
23
|
//# sourceMappingURL=issue-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-context.d.ts","sourceRoot":"","sources":["../../src/github/issue-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"issue-context.d.ts","sourceRoot":"","sources":["../../src/github/issue-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,yBAAyB,EAC/B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,mBAAmB,CAAC,EAAE,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;CACjE;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,YAAY,CAAC,CA0BvB"}
|