gcb-host 0.3.0 → 0.5.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # gcb-host
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`51f0a65`](https://github.com/code-vaults/git-credential-broker/commit/51f0a65babcb9585a9ef56a5eeb754c9adc54bf0), [`5dedb25`](https://github.com/code-vaults/git-credential-broker/commit/5dedb25dbb47fd61f85bed444f1744214addcc22), [`705c139`](https://github.com/code-vaults/git-credential-broker/commit/705c13916643a4951476240b84f732feb236b964), [`e5bd34e`](https://github.com/code-vaults/git-credential-broker/commit/e5bd34ecabda5510763eef6e8689f6c3c14b0316), [`914535b`](https://github.com/code-vaults/git-credential-broker/commit/914535be1fb6223a0f055c2730fcaf304d976991)]:
8
+ - gcb-core@0.5.0
9
+
10
+ ## 0.4.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [#78](https://github.com/code-vaults/git-credential-broker/pull/78) [`75af9c8`](https://github.com/code-vaults/git-credential-broker/commit/75af9c8427ab72602ae43f6a82ab4458b3549ecf) Thanks [@JounQin](https://github.com/JounQin)! - Let a person submit a pull request review through the broker: bare `--as-user` uses the broker's
15
+ authorized person through the app broker, while `--as-user <login>` writes a typed host request,
16
+ checked against the broker allowlist, that runs `gh pr review` without a shell. `--approve`,
17
+ `--request-changes` and `--review-comment` are the review events. `pr:edit` also supports the
18
+ same person identities, so a pull request's title, body or base can be changed through the broker.
19
+ The catalog also gains `issue:edit` and `issue:comment`, with the same app/person identity
20
+ handling.
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies [[`75af9c8`](https://github.com/code-vaults/git-credential-broker/commit/75af9c8427ab72602ae43f6a82ab4458b3549ecf)]:
25
+ - gcb-core@0.4.0
26
+
3
27
  ## 0.3.0
4
28
 
5
29
  ### Minor Changes
package/README.md ADDED
@@ -0,0 +1,42 @@
1
+ # gcb-host
2
+
3
+ Host-side `gcb`: the broker, configuration, providers and administration commands.
4
+
5
+ The broker holds the GitHub App private key and mints short-lived, single-repository installation
6
+ tokens. It runs outside the container; the container-side [`gcb-client`](https://www.npmjs.com/package/gcb-client) never receives a
7
+ long-lived credential.
8
+
9
+ ```sh
10
+ npm install --global gcb-host
11
+ # writes broker.config.yml and validates the deployment (default mode: host)
12
+ gcb init --config broker.config.yml \
13
+ --cert /path/to/app.private-key.pem \
14
+ --allow owner/repo \
15
+ --client-id <client-id> \
16
+ --app-id <app-id>
17
+ gcb doctor --config broker.config.yml
18
+ gcb daemon --config broker.config.yml
19
+ ```
20
+
21
+ ## Commands
22
+
23
+ `gcb init`, `gcb config`, `gcb diagnose`, `gcb doctor`, `gcb authorize`, `gcb stage`,
24
+ `gcb compose`, and `gcb daemon`/`gcb host`.
25
+
26
+ The host broker also serves typed person requests from `gcb-client --as-user <login>` (create,
27
+ review, reply, edit and catalogued-action routes), using the `gh-<login>` configuration directory on
28
+ this machine. The catalogued-action route is what `gcb gh <action> --as-user <login>` uses; it is
29
+ validated against the same action catalog and allowlist, never raw argv.
30
+
31
+ See the [repository README](https://github.com/code-vaults/git-credential-broker#readme) for the
32
+ configuration reference, allowlist rules and deployment shapes.
33
+
34
+ ## Requirements
35
+
36
+ - Node.js 24 or newer
37
+ - `gh` for the host-broker person routes and catalogued execution
38
+ - a GitHub App private key outside every directory the container can write
39
+
40
+ ## License
41
+
42
+ MIT
@@ -1,5 +1,24 @@
1
+ /** What one bounded action process produced. */
2
+ export interface BoundedResult {
3
+ readonly stdout: string;
4
+ readonly stderr: string;
5
+ readonly code: number;
6
+ }
7
+ /**
8
+ * Run an action with streaming output caps.
9
+ *
10
+ * execFile's maxBuffer kills the child once a fixed buffer fills; a large diff or log would then be
11
+ * reported as a gh failure even though only the excess output is unusable. Read both streams to the
12
+ * end, keep the first bytes of each, and tell the caller where the cut is.
13
+ */
14
+ export declare function runBounded(command: string, args: readonly string[], options: {
15
+ cwd: string;
16
+ env: NodeJS.ProcessEnv;
17
+ timeoutMs: number;
18
+ writeCaveat?: boolean;
19
+ }): Promise<BoundedResult>;
1
20
  /** Usage text for `host`. */
2
- export declare const HOST_BROKER_USAGE = "Usage: gcb host [options]\n\nRun on the host, once, beside the trees the container also sees. It finds the checkouts under the\nroots it is given \u2014 ones created later included \u2014 and fulfils their typed requests to create a pull\nrequest, issue or fork, or reply to a review comment, with the gh account each request names. The\nresult is authored by a person rather than by the app's bot. It cannot push, merge or close anything.\n\n --root <dir> A tree to serve, repeatable (default: $HOME)\n --depth <n> How far below a root to look for checkouts (default: 4)\n --repo <path> Serve this one checkout instead of discovering any\n --config <path> Broker config whose allowlist fork, reply and explicit-repository requests use\n (default: $GIT_BROKER_CONFIG, else ./broker.config.yml)\n --command <path> The program that creates, replies or forks\n (default: $GIT_BROKER_PR_COMMAND, else gh)\n --arg <token> An extra argument for that program, before the subcommand (repeatable)\n --interval <seconds> How often to look for requests (default: 5)\n --once Fulfil what is waiting, then exit\n -h, --help Show this help\n\nThe container asks for this by passing --as-user to `pr`. Requests are files under\n<git dir>/gcb/pr-requests, which is shared with the container and untracked by git\n\u2014 so the paths on the two sides never have to match: each writes and reads its own view of the same\ndirectory, and only the roots this process scans are host-side paths.\n";
21
+ export declare const HOST_BROKER_USAGE = "Usage: gcb host [options]\n\nRun on the host, once, beside the trees the container also sees. It finds the checkouts under the\nroots it is given \u2014 ones created later included \u2014 and fulfils their typed requests to create a pull\nrequest, reply to a review comment, submit a review, edit a pull request, run a catalogued action or\nfork, with the gh account each request names. The result is authored by a person rather than by the app's bot.\n\n --root <dir> A tree to serve, repeatable (default: $HOME)\n --depth <n> How far below a root to look for checkouts (default: 4)\n --repo <path> Serve this one checkout instead of discovering any\n --config <path> Broker config whose allowlist fork, reply and explicit-repository requests use\n (default: $GIT_BROKER_CONFIG, else ./broker.config.yml)\n --command <path> The program that creates, replies or forks\n (default: $GCB_HOST_COMMAND, else gh)\n --arg <token> An extra argument for that program, before the subcommand (repeatable)\n --interval <seconds> How often to look for requests (default: 5)\n --once Fulfil what is waiting, then exit\n -h, --help Show this help\n\nThe container asks for this by passing --as-user to `pr`. Requests are files under\n<git dir>/gcb/host-broker, which is shared with the container and untracked by git\n\u2014 so the paths on the two sides never have to match: each writes and reads its own view of the same\ndirectory, and only the roots this process scans are host-side paths.\n";
3
22
  /**
4
23
  * Read a pull request's number and URL out of a program's output.
5
24
  *
@@ -13,16 +32,6 @@ export declare function pullRequestUrl(output: string): {
13
32
  number: number;
14
33
  url: string;
15
34
  } | undefined;
16
- /**
17
- * Pull the issue number and URL out of the program's output.
18
- *
19
- * @param output - the program's standard output.
20
- * @returns the number and URL, or `undefined`.
21
- */
22
- export declare function issueUrl(output: string): {
23
- number: number;
24
- url: string;
25
- } | undefined;
26
35
  /**
27
36
  * Run the `host` command.
28
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/commands/host.ts"],"names":[],"mappings":"AA8CA,6BAA6B;AAC7B,eAAO,MAAM,iBAAiB,ukDAuB7B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAK1F;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAKpF;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8F5E"}
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/commands/host.ts"],"names":[],"mappings":"AAqDA,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GACzF,OAAO,CAAC,aAAa,CAAC,CA0FxB;AAED,6BAA6B;AAC7B,eAAO,MAAM,iBAAiB,8kDAuB7B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAK1F;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8F5E"}
@@ -1,35 +1,141 @@
1
1
  /**
2
- * `host` — the host broker for typed person actions: create, reply and fork with the gh account
3
- * each request names.
2
+ * `host` — the host broker for typed person actions: create, review, reply, edit, run catalogued
3
+ * actions, and fork with the gh account each request names.
4
4
  *
5
5
  * This runs on the host, beside the checkout the container also sees, and it does exactly one thing:
6
- * it turns a request file into a pull request, issue, reply or fork, using the gh account the request
7
- * names. That is the whole point — content authored by a person is what automated reviewers will
6
+ * it turns a request file into a pull request, review, reply, pull request edit, catalogued action
7
+ * or fork, using the gh account the request names. That is the whole point — content authored by a person is what automated reviewers will
8
8
  * actually review, and the app cannot be that person.
9
9
  *
10
- * It has no other power. It cannot push, merge, close or read anything, and it never runs a shell: the
11
- * program it calls is configuration, and it is called with an argument list built here.
10
+ * It has no other power than the catalogued actions: it cannot push or merge, and it never runs a
11
+ * shell; the program it calls is configuration, and it is called with an argument list built here.
12
12
  */
13
- import { execFile } from 'node:child_process';
13
+ import { execFile, spawn } from 'node:child_process';
14
14
  import { existsSync, mkdtempSync, rmSync, statSync, writeFileSync } from 'node:fs';
15
15
  import { homedir, tmpdir } from 'node:os';
16
+ import { StringDecoder } from 'node:string_decoder';
16
17
  import { join, resolve } from 'node:path';
17
18
  import { promisify } from 'node:util';
18
- import { channelDir, clearOpener, discoverCheckouts, findGitDir, listRequests, readOpener, claimRequest, removeRequest, requestProblems, writeOpener, writeResult, HOST, REPOSITORY, } from 'gcb-core';
19
+ import { channelDir, clearHostBroker, discoverCheckouts, findGitDir, listRequests, readHostBroker, claimRequest, removeRequest, requestProblems, writeHostBroker, writeResult, HOST, REPOSITORY, ANSWER_TIMEOUT_MS, buildGhArgv, getGhAction, } from 'gcb-core';
19
20
  import { fail, listFlag, parseArgs, say, warn } from 'gcb-core';
20
21
  import { applyProxyChoice, parseProxy } from '../http.js';
21
22
  import { loadConfig, resolveConfigPath } from '../config.js';
22
23
  import { hostConfig, repoAllowed } from '../policy.js';
23
24
  const run = promisify(execFile);
24
- /** How long one `pr create` or `issue create` may take. */
25
+ /** How long one create, review, reply, edit or fork program may take. */
25
26
  const CREATE_TIMEOUT_MS = 120_000;
27
+ /** Per-stream byte budget for a host action, small enough that JSON escaping stays under readResult's cap. */
28
+ const HOST_ACTION_OUTPUT_BYTES = 48_000;
29
+ /**
30
+ * Run an action with streaming output caps.
31
+ *
32
+ * execFile's maxBuffer kills the child once a fixed buffer fills; a large diff or log would then be
33
+ * reported as a gh failure even though only the excess output is unusable. Read both streams to the
34
+ * end, keep the first bytes of each, and tell the caller where the cut is.
35
+ */
36
+ export function runBounded(command, args, options) {
37
+ return new Promise((resolve) => {
38
+ let child;
39
+ try {
40
+ child = spawn(command, [...args], {
41
+ cwd: options.cwd,
42
+ env: options.env,
43
+ shell: false,
44
+ detached: true,
45
+ stdio: ['ignore', 'pipe', 'pipe'],
46
+ });
47
+ }
48
+ catch (error) {
49
+ resolve({ stdout: '', stderr: error.message, code: 1 });
50
+ return;
51
+ }
52
+ const suffix = '\n[output truncated]\n';
53
+ const timeoutNote = options.writeCaveat === false
54
+ ? 'the action timed out\n'
55
+ : 'the action timed out; a write may have completed before it was killed\n';
56
+ const outKeep = HOST_ACTION_OUTPUT_BYTES - Buffer.byteLength(suffix);
57
+ const errKeep = outKeep - Buffer.byteLength(timeoutNote);
58
+ const stdout = new StringDecoder('utf8');
59
+ const stderr = new StringDecoder('utf8');
60
+ let out = '';
61
+ let err = '';
62
+ let outBytes = 0;
63
+ let errBytes = 0;
64
+ let outCut = false;
65
+ let errCut = false;
66
+ let timedOut = false;
67
+ let settled = false;
68
+ const append = (decoder, chunk, stream) => {
69
+ const limit = stream === 'out' ? outKeep : errKeep;
70
+ const used = stream === 'out' ? outBytes : errBytes;
71
+ if (used >= limit) {
72
+ if (stream === 'out')
73
+ outCut = true;
74
+ else
75
+ errCut = true;
76
+ return;
77
+ }
78
+ const piece = chunk.subarray(0, limit - used);
79
+ const text = decoder.write(piece);
80
+ if (stream === 'out') {
81
+ out += text;
82
+ outBytes += piece.length;
83
+ if (piece.length < chunk.length)
84
+ outCut = true;
85
+ }
86
+ else {
87
+ err += text;
88
+ errBytes += piece.length;
89
+ if (piece.length < chunk.length)
90
+ errCut = true;
91
+ }
92
+ };
93
+ child.stdout?.on('data', (chunk) => append(stdout, chunk, 'out'));
94
+ child.stderr?.on('data', (chunk) => append(stderr, chunk, 'err'));
95
+ child.on('error', (error) => finish({ stdout: out, stderr: err || error.message, code: 1 }));
96
+ const timer = setTimeout(() => {
97
+ timedOut = true;
98
+ if (child.pid !== undefined) {
99
+ try {
100
+ process.kill(-child.pid, 'SIGKILL');
101
+ }
102
+ catch {
103
+ child.kill('SIGKILL');
104
+ }
105
+ }
106
+ }, options.timeoutMs);
107
+ function finish(result) {
108
+ if (settled)
109
+ return;
110
+ settled = true;
111
+ clearTimeout(timer);
112
+ out += stdout.end();
113
+ err += stderr.end();
114
+ if (outCut)
115
+ out += suffix;
116
+ if (errCut)
117
+ err += suffix;
118
+ if (err === '' && result.stderr !== '')
119
+ err = result.stderr;
120
+ if (timedOut) {
121
+ if (err !== '' && !err.endsWith('\n'))
122
+ err += '\n';
123
+ err += timeoutNote;
124
+ }
125
+ resolve({ ...result, stdout: out, stderr: err });
126
+ }
127
+ child.on('close', (code, signal) => {
128
+ finish({ stdout: out, stderr: err, code: timedOut || signal !== null ? 1 : (code ?? 1) });
129
+ });
130
+ });
131
+ }
26
132
  /** Usage text for `host`. */
27
133
  export const HOST_BROKER_USAGE = `Usage: gcb host [options]
28
134
 
29
135
  Run on the host, once, beside the trees the container also sees. It finds the checkouts under the
30
136
  roots it is given — ones created later included — and fulfils their typed requests to create a pull
31
- request, issue or fork, or reply to a review comment, with the gh account each request names. The
32
- result is authored by a person rather than by the app's bot. It cannot push, merge or close anything.
137
+ request, reply to a review comment, submit a review, edit a pull request, run a catalogued action or
138
+ fork, with the gh account each request names. The result is authored by a person rather than by the app's bot.
33
139
 
34
140
  --root <dir> A tree to serve, repeatable (default: $HOME)
35
141
  --depth <n> How far below a root to look for checkouts (default: 4)
@@ -37,14 +143,14 @@ result is authored by a person rather than by the app's bot. It cannot push, mer
37
143
  --config <path> Broker config whose allowlist fork, reply and explicit-repository requests use
38
144
  (default: $GIT_BROKER_CONFIG, else ./broker.config.yml)
39
145
  --command <path> The program that creates, replies or forks
40
- (default: $GIT_BROKER_PR_COMMAND, else gh)
146
+ (default: $GCB_HOST_COMMAND, else gh)
41
147
  --arg <token> An extra argument for that program, before the subcommand (repeatable)
42
148
  --interval <seconds> How often to look for requests (default: 5)
43
149
  --once Fulfil what is waiting, then exit
44
150
  -h, --help Show this help
45
151
 
46
152
  The container asks for this by passing --as-user to \`pr\`. Requests are files under
47
- <git dir>/gcb/pr-requests, which is shared with the container and untracked by git
153
+ <git dir>/gcb/host-broker, which is shared with the container and untracked by git
48
154
  — so the paths on the two sides never have to match: each writes and reads its own view of the same
49
155
  directory, and only the roots this process scans are host-side paths.
50
156
  `;
@@ -64,19 +170,6 @@ export function pullRequestUrl(output) {
64
170
  return undefined;
65
171
  return { number: Number(digits), url: match[0] };
66
172
  }
67
- /**
68
- * Pull the issue number and URL out of the program's output.
69
- *
70
- * @param output - the program's standard output.
71
- * @returns the number and URL, or `undefined`.
72
- */
73
- export function issueUrl(output) {
74
- const match = /https:\/\/[^\s]+\/issues\/(\d+)/.exec(output);
75
- const digits = match?.[1];
76
- if (!match || digits === undefined)
77
- return undefined;
78
- return { number: Number(digits), url: match[0] };
79
- }
80
173
  /**
81
174
  * Run the `host` command.
82
175
  *
@@ -94,7 +187,7 @@ export async function runHostBroker(argv) {
94
187
  const roots = listFlag(args, 'root');
95
188
  const scanned = roots.length > 0 ? roots.map((root) => resolve(root)) : [homedir()];
96
189
  const depth = Number(args.value('depth') ?? '4');
97
- const command = args.value('command') ?? process.env['GIT_BROKER_PR_COMMAND'] ?? 'gh';
190
+ const command = args.value('command') ?? process.env['GCB_HOST_COMMAND'] ?? 'gh';
98
191
  const configPath = args.value('config');
99
192
  let config;
100
193
  /** Whether the broker config allowlist permits this host/repository for a fork, reply or explicit repository. */
@@ -131,12 +224,12 @@ export async function runHostBroker(argv) {
131
224
  /** Advertise a channel, without rewriting the marker on every sweep. */
132
225
  const advertise = (dir) => {
133
226
  advertised.add(dir);
134
- if (readOpener(dir)?.pid !== process.pid) {
135
- writeOpener(dir, {
227
+ if (readHostBroker(dir)?.pid !== process.pid) {
228
+ writeHostBroker(dir, {
136
229
  pid: process.pid,
137
230
  command,
138
231
  startedAt: new Date().toISOString(),
139
- kinds: ['pull-request', 'issue', 'reply', 'fork'],
232
+ kinds: ['pull-request', 'review', 'reply', 'edit', 'action', 'fork'],
140
233
  });
141
234
  }
142
235
  };
@@ -146,8 +239,8 @@ export async function runHostBroker(argv) {
146
239
  process.on('exit', () => {
147
240
  for (const dir of advertised) {
148
241
  try {
149
- if (readOpener(dir)?.pid === process.pid)
150
- clearOpener(dir);
242
+ if (readHostBroker(dir)?.pid === process.pid)
243
+ clearHostBroker(dir);
151
244
  }
152
245
  catch {
153
246
  // Nothing useful is left to do while exiting.
@@ -158,7 +251,7 @@ export async function runHostBroker(argv) {
158
251
  process.on('SIGINT', stop);
159
252
  process.on('SIGTERM', stop);
160
253
  say(single === undefined ? `serving the checkouts under ${scanned.join(', ')}` : `serving ${single}`);
161
- say(`creating pull requests, issues, replies and forks with ${command}${extra.length > 0 ? ` ${extra.join(' ')}` : ''}, as the request's account or this user`);
254
+ say(`creating pull requests, issues, reviews, replies and forks with ${command}${extra.length > 0 ? ` ${extra.join(' ')}` : ''}, as the request's account or this user`);
162
255
  for (;;) {
163
256
  for (const { repo, dir } of targets()) {
164
257
  // One checkout the container has made hostile — its channel directory replaced by a file, say —
@@ -190,6 +283,13 @@ async function sweep(dir, repo, command, extra, allowed) {
190
283
  for (const id of listRequests(dir)) {
191
284
  // Claimed, not read: two host brokers — a service and a hand-run --once — would otherwise both act on the
192
285
  // same request and each create it, under the person's name.
286
+ let requestAge = 0;
287
+ try {
288
+ requestAge = Date.now() - statSync(join(dir, `${id}.json`)).mtimeMs;
289
+ }
290
+ catch {
291
+ // The claim below reports a vanished request; age is only used after a successful claim.
292
+ }
193
293
  const request = claimRequest(dir, id);
194
294
  if (!request) {
195
295
  // Either unreadable or already claimed, and the two are not worth telling apart here: removing
@@ -197,6 +297,12 @@ async function sweep(dir, repo, command, extra, allowed) {
197
297
  warn(`skipped ${id}: unreadable, or another host broker has it`);
198
298
  continue;
199
299
  }
300
+ if (requestAge > ANSWER_TIMEOUT_MS) {
301
+ writeResult(dir, id, { error: `request ${id} expired before the host claimed it` });
302
+ removeRequest(dir, id);
303
+ warn(`refused ${id}: it expired before the host claimed it`);
304
+ continue;
305
+ }
200
306
  const problems = requestProblems(request);
201
307
  if (problems.length > 0) {
202
308
  writeResult(dir, id, { error: problems.join('; ') });
@@ -219,18 +325,28 @@ async function sweep(dir, repo, command, extra, allowed) {
219
325
  if (result.error !== undefined) {
220
326
  warn(`failed to open ${request.kind === 'fork'
221
327
  ? 'fork'
222
- : request.kind === 'issue'
223
- ? 'issue'
224
- : request.kind === 'reply'
225
- ? `reply on #${request.number}`
226
- : request.head}: ${result.error}`);
328
+ : request.kind === 'reply'
329
+ ? `reply on #${request.number}`
330
+ : request.kind === 'review'
331
+ ? `review on #${request.number}`
332
+ : request.kind === 'edit'
333
+ ? `edit on #${request.number}`
334
+ : request.kind === 'action'
335
+ ? request.action
336
+ : request.head}: ${result.error}`);
227
337
  }
228
338
  else {
229
339
  say(request.kind === 'fork'
230
340
  ? `forked ${request.repo} as ${request.account ?? 'this user'}: ${result.url}`
231
341
  : request.kind === 'reply'
232
342
  ? `replied on #${result.number} as ${request.account ?? 'this user'}: ${result.url}`
233
- : `opened #${result.number} as ${request.account ?? 'this user'}: ${result.url}`);
343
+ : request.kind === 'review'
344
+ ? `reviewed #${result.number} (${request.event}) as ${request.account ?? 'this user'}${result.url === undefined ? '' : `: ${result.url}`}`
345
+ : request.kind === 'edit'
346
+ ? `edited #${result.number} as ${request.account ?? 'this user'}${result.url === undefined ? '' : `: ${result.url}`}`
347
+ : request.kind === 'action'
348
+ ? `ran ${request.action} as ${request.account ?? 'this user'}`
349
+ : `opened #${result.number} as ${request.account ?? 'this user'}: ${result.url}`);
234
350
  }
235
351
  answered += 1;
236
352
  }
@@ -263,12 +379,50 @@ function hostEnv(proxy, account) {
263
379
  return env;
264
380
  }
265
381
  /**
266
- * Create one pull request, issue or fork.
382
+ * Run one person operation: check the allowlist, then call the program and turn its failure into a result.
267
383
  *
268
- * @param repo - the checkout to create it in.
384
+ * The typed routes differ only in the argv they build, so the check and the catch live here once
385
+ * instead of being copied per route.
386
+ */
387
+ async function personRun(host, repository, allowed, work) {
388
+ if (!HOST.test(host))
389
+ return { error: `not a host: ${JSON.stringify(host)}` };
390
+ try {
391
+ if (!allowed(host, repository)) {
392
+ return { error: `repository ${repository} is not in the allowlist for ${host}` };
393
+ }
394
+ }
395
+ catch (error) {
396
+ return { error: error.message };
397
+ }
398
+ try {
399
+ return await work(host);
400
+ }
401
+ catch (error) {
402
+ const failure = error;
403
+ const reason = (failure.stderr ?? failure.message ?? 'the command failed').trim();
404
+ return { error: reason.slice(0, 300) || 'the command failed' };
405
+ }
406
+ }
407
+ /** Run work with a body in a private temp file, and remove it afterwards. */
408
+ async function withBodyFile(body, work) {
409
+ const scratch = mkdtempSync(join(tmpdir(), 'gcb-body-'));
410
+ try {
411
+ const bodyFile = join(scratch, 'body.md');
412
+ writeFileSync(bodyFile, body, 'utf8');
413
+ return await work(bodyFile);
414
+ }
415
+ finally {
416
+ rmSync(scratch, { recursive: true, force: true });
417
+ }
418
+ }
419
+ /**
420
+ * Create one pull request, issue, review, reply, edit or comment.
421
+ *
422
+ * @param repo - the checkout to run it in.
269
423
  * @param command - the program to call.
270
424
  * @param extra - arguments to pass before the subcommand.
271
- * @param request - what to create.
425
+ * @param request - what to do.
272
426
  * @returns the number and URL, or the reason it did not work.
273
427
  */
274
428
  async function openOne(repo, command, extra, request, allowed) {
@@ -309,19 +463,51 @@ async function openOne(repo, command, extra, request, allowed) {
309
463
  return { error: reason.slice(0, 300) || 'the command failed' };
310
464
  }
311
465
  }
312
- if (request.kind === 'reply') {
466
+ if (request.kind === 'action') {
313
467
  const host = request.host ?? 'github.com';
314
- if (!HOST.test(host))
315
- return { error: `not a host: ${JSON.stringify(host)}` };
316
- try {
317
- if (!allowed(host, request.repo)) {
318
- return { error: `repository ${request.repo} is not in the allowlist for ${host}` };
468
+ return personRun(host, request.repo, allowed, async (host) => {
469
+ const action = getGhAction(request.action);
470
+ const deadline = Date.now() + action.timeoutSeconds * 1_000;
471
+ if (action.target === 'issue') {
472
+ try {
473
+ buildGhArgv(request.action, request.values, request.repo);
474
+ }
475
+ catch (error) {
476
+ return { error: error.message };
477
+ }
478
+ const number = Number(request.values['number']);
479
+ if (!Number.isSafeInteger(number) || number <= 0) {
480
+ return { error: `${String(number)} is not an issue number` };
481
+ }
482
+ const probe = await runBounded(command, [...extra, 'api', `repos/${request.repo}/issues/${String(number)}`, '--jq', '.pull_request != null'], {
483
+ cwd: repo,
484
+ env: forkEnv(request.proxy, request.account, host),
485
+ timeoutMs: Math.max(1, deadline - Date.now()),
486
+ });
487
+ if (probe.code !== 0) {
488
+ return { error: probe.stderr.trim() || 'could not verify the issue target' };
489
+ }
490
+ if (probe.stdout.trim() === 'true') {
491
+ return { error: `#${String(number)} is a pull request, not an issue` };
492
+ }
319
493
  }
320
- }
321
- catch (error) {
322
- return { error: error.message };
323
- }
324
- try {
494
+ const body = typeof request.values['body'] === 'string' ? request.values['body'] : undefined;
495
+ const invoke = async (bodyFile) => {
496
+ const argv = buildGhArgv(request.action, request.values, request.repo, bodyFile);
497
+ const result = await runBounded(command, [...extra, ...argv], {
498
+ cwd: repo,
499
+ env: forkEnv(request.proxy, request.account, host),
500
+ timeoutMs: Math.max(1, deadline - Date.now()),
501
+ writeCaveat: Object.values(action.permissions).some((permission) => permission === 'write'),
502
+ });
503
+ return result;
504
+ };
505
+ return body === undefined ? invoke() : withBodyFile(body, invoke);
506
+ });
507
+ }
508
+ if (request.kind === 'reply') {
509
+ const host = request.host ?? 'github.com';
510
+ return personRun(host, request.repo, allowed, async (host) => {
325
511
  const { stdout, stderr } = await run(command, [
326
512
  ...extra,
327
513
  'api',
@@ -348,12 +534,58 @@ async function openOne(repo, command, extra, request, allowed) {
348
534
  return { error: `no reply URL in the output: ${(stdout.trim() || stderr.trim()).slice(0, 300)}` };
349
535
  }
350
536
  return { number: request.number, url: reply.html_url };
351
- }
352
- catch (error) {
353
- const failure = error;
354
- const reason = (failure.stderr ?? failure.message ?? 'the command failed').trim();
355
- return { error: reason.slice(0, 300) || 'the command failed' };
356
- }
537
+ });
538
+ }
539
+ if (request.kind === 'edit') {
540
+ const host = request.host ?? 'github.com';
541
+ return personRun(host, request.repo, allowed, async (host) => {
542
+ const invoke = (bodyFile) => run(command, [
543
+ ...extra,
544
+ 'pr',
545
+ 'edit',
546
+ String(request.number),
547
+ '--repo',
548
+ request.repo,
549
+ ...(request.title === undefined ? [] : [`--title=${request.title}`]),
550
+ ...(bodyFile === undefined ? [] : ['--body-file', bodyFile]),
551
+ ...(request.base === undefined ? [] : [`--base=${request.base}`]),
552
+ ], {
553
+ cwd: repo,
554
+ timeout: CREATE_TIMEOUT_MS,
555
+ maxBuffer: 1 << 20,
556
+ env: forkEnv(request.proxy, request.account, host),
557
+ }).then(({ stdout }) => pullRequestUrl(stdout) ?? { number: request.number });
558
+ return request.body === undefined ? invoke() : withBodyFile(request.body, invoke);
559
+ });
560
+ }
561
+ if (request.kind === 'review') {
562
+ const host = request.host ?? 'github.com';
563
+ const flag = request.event === 'approve'
564
+ ? '--approve'
565
+ : request.event === 'request-changes'
566
+ ? '--request-changes'
567
+ : '--comment';
568
+ return personRun(host, request.repo, allowed, async (host) => {
569
+ const invoke = (bodyFile) => run(command, [
570
+ ...extra,
571
+ 'pr',
572
+ 'review',
573
+ String(request.number),
574
+ '--repo',
575
+ request.repo,
576
+ flag,
577
+ ...(bodyFile === undefined ? [] : ['--body-file', bodyFile]),
578
+ ], {
579
+ cwd: repo,
580
+ timeout: CREATE_TIMEOUT_MS,
581
+ maxBuffer: 1 << 20,
582
+ env: forkEnv(request.proxy, request.account, host),
583
+ }).then(({ stdout }) => {
584
+ const match = /https:\/\/[^\s]+\/pull\/\d+(?:#pullrequestreview-\d+)?/.exec(stdout);
585
+ return match?.[0] === undefined ? { number: request.number } : { number: request.number, url: match[0] };
586
+ });
587
+ return request.body.trim() === '' ? invoke() : withBodyFile(request.body, invoke);
588
+ });
357
589
  }
358
590
  // An explicit repository is the allowlist's decision, not the checkout's: the request may name a
359
591
  // repository this machine has no checkout of. Without one, gh still resolves the checkout.
@@ -371,47 +603,39 @@ async function openOne(repo, command, extra, request, allowed) {
371
603
  }
372
604
  }
373
605
  // The body goes to a private temp file: the program is given a path, never a string to interpret.
374
- const scratch = mkdtempSync(join(tmpdir(), 'gcb-'));
375
- const bodyFile = join(scratch, 'body.md');
376
- writeFileSync(bodyFile, request.body, 'utf8');
377
- const issue = request.kind === 'issue';
378
606
  try {
379
- const { stdout, stderr } = await run(command, [
380
- ...extra,
381
- issue ? 'issue' : 'pr',
382
- 'create',
383
- // Without an explicit repository gh resolves the checkout it runs in; with one the allowlist
384
- // above is the boundary, and no checkout of the target is required.
385
- ...(!issue && request.draft === true ? ['--draft'] : []),
386
- ...(target === undefined ? [] : ['--repo', target]),
387
- ...(issue ? [] : ['--base', request.base, '--head', request.head]),
388
- '--title',
389
- request.title,
390
- '--body-file',
391
- bodyFile,
392
- ], {
393
- cwd: repo,
394
- timeout: CREATE_TIMEOUT_MS,
395
- maxBuffer: 1 << 20,
396
- env: target === undefined
397
- ? hostEnv(request.proxy, request.account)
398
- : forkEnv(request.proxy, request.account, 'github.com'),
607
+ return await withBodyFile(request.body, async (bodyFile) => {
608
+ const { stdout, stderr } = await run(command, [
609
+ ...extra,
610
+ 'pr',
611
+ 'create',
612
+ // Without an explicit repository gh resolves the checkout it runs in; with one the allowlist
613
+ // above is the boundary, and no checkout of the target is required.
614
+ ...(request.draft === true ? ['--draft'] : []),
615
+ ...(target === undefined ? [] : ['--repo', target]),
616
+ '--base', request.base, '--head', request.head,
617
+ `--title=${request.title}`,
618
+ '--body-file',
619
+ bodyFile,
620
+ ], {
621
+ cwd: repo,
622
+ timeout: CREATE_TIMEOUT_MS,
623
+ maxBuffer: 1 << 20,
624
+ env: target === undefined
625
+ ? hostEnv(request.proxy, request.account)
626
+ : forkEnv(request.proxy, request.account, 'github.com'),
627
+ });
628
+ const found = pullRequestUrl(stdout);
629
+ if (!found) {
630
+ return { error: `no pull request URL in the output: ${(stdout.trim() || stderr.trim()).slice(0, 300)}` };
631
+ }
632
+ return found;
399
633
  });
400
- const found = issue ? issueUrl(stdout) : pullRequestUrl(stdout);
401
- if (!found) {
402
- return {
403
- error: `no ${issue ? 'issue' : 'pull request'} URL in the output: ${(stdout.trim() || stderr.trim()).slice(0, 300)}`,
404
- };
405
- }
406
- return found;
407
634
  }
408
635
  catch (error) {
409
636
  const failure = error;
410
637
  const reason = (failure.stderr ?? failure.message ?? 'the command failed').trim();
411
638
  return { error: reason.slice(0, 300) || 'the command failed' };
412
639
  }
413
- finally {
414
- rmSync(scratch, { recursive: true, force: true });
415
- }
416
640
  }
417
641
  //# sourceMappingURL=host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/commands/host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["../../src/commands/host.ts"],"names":[],"mappings":"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"}
package/lib/gh.d.ts CHANGED
@@ -29,11 +29,5 @@ export interface GhRunOptions {
29
29
  /** Per-command proxy: absent = copy env, null = direct, string = this proxy. */
30
30
  readonly proxy?: string | null;
31
31
  }
32
- /**
33
- * Run one allowed action.
34
- *
35
- * @param options - action, values, repository and token.
36
- * @returns the bounded process result.
37
- */
38
32
  export declare function runGhAction(options: GhRunOptions): Promise<GhRunResult>;
39
33
  //# sourceMappingURL=gh.d.ts.map
package/lib/gh.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"AAaA,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGvE,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,8DAA8D;AAC9D,eAAO,MAAM,aAAa,OAAQ,CAAC;AAEnC,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA6J7E"}
1
+ {"version":3,"file":"gh.d.ts","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"AAaA,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGvE,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,8DAA8D;AAC9D,eAAO,MAAM,aAAa,OAAQ,CAAC;AAEnC,uCAAuC;AACvC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,uCAAuC;AACvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,gFAAgF;IAChF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AA0FD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmL7E"}
package/lib/gh.js CHANGED
@@ -22,12 +22,82 @@ export const KILL_GRACE_MS = 2_000;
22
22
  * @param options - action, values, repository and token.
23
23
  * @returns the bounded process result.
24
24
  */
25
+ /** Run the issue-target probe with a process-group deadline. */
26
+ function probeIssueTarget(command, env, cwd, repo, issueNumber, timeoutMs) {
27
+ return new Promise((resolve, reject) => {
28
+ const child = spawn(command, ['api', `repos/${repo}/issues/${String(issueNumber)}`, '--jq', '.pull_request != null'], { cwd, env, shell: false, detached: true, stdio: ['ignore', 'pipe', 'pipe'] });
29
+ let stdout = '';
30
+ let stderr = '';
31
+ let settled = false;
32
+ let timedOut = false;
33
+ const killGroup = (signal) => {
34
+ if (child.pid === undefined)
35
+ return;
36
+ try {
37
+ process.kill(-child.pid, signal);
38
+ }
39
+ catch {
40
+ child.kill(signal);
41
+ }
42
+ };
43
+ const timer = setTimeout(() => {
44
+ timedOut = true;
45
+ killGroup('SIGTERM');
46
+ setTimeout(() => killGroup('SIGKILL'), 200).unref();
47
+ }, timeoutMs);
48
+ child.stdout?.on('data', (chunk) => {
49
+ if (stdout.length < 64_000)
50
+ stdout += chunk.toString();
51
+ });
52
+ child.stderr?.on('data', (chunk) => {
53
+ if (stderr.length < 64_000)
54
+ stderr += chunk.toString();
55
+ });
56
+ child.on('error', (error) => {
57
+ if (settled)
58
+ return;
59
+ settled = true;
60
+ clearTimeout(timer);
61
+ reject(error);
62
+ });
63
+ child.on('close', (code) => {
64
+ if (settled)
65
+ return;
66
+ settled = true;
67
+ clearTimeout(timer);
68
+ if (timedOut)
69
+ reject(new Error('issue-target probe timed out'));
70
+ else if (code === 0)
71
+ resolve(stdout);
72
+ else
73
+ reject(new Error(stderr.trim() || `gh api exited ${String(code)}`));
74
+ });
75
+ });
76
+ }
77
+ /** Refuse an issue-only action when the number names a pull request. */
78
+ async function assertIssueTarget(command, env, cwd, repo, number, timeoutMs) {
79
+ const issueNumber = Number(number);
80
+ if (!Number.isSafeInteger(issueNumber) || issueNumber <= 0) {
81
+ throw new Error(`${String(number)} is not an issue number`);
82
+ }
83
+ try {
84
+ const stdout = await probeIssueTarget(command, env, cwd, repo, issueNumber, timeoutMs);
85
+ if (stdout.trim() === 'true') {
86
+ throw new Error(`#${String(issueNumber)} is a pull request, not an issue`);
87
+ }
88
+ }
89
+ catch (error) {
90
+ const message = error.message;
91
+ if (message.includes('is a pull request'))
92
+ throw error;
93
+ throw new Error(`could not verify that #${String(issueNumber)} is an issue: ${message}`);
94
+ }
95
+ }
25
96
  export async function runGhAction(options) {
26
97
  const maxBytes = options.maxOutputBytes ?? DEFAULT_GH_OUTPUT_BYTES;
27
98
  if (!Number.isSafeInteger(maxBytes) || maxBytes < 0) {
28
99
  throw new Error('maxOutputBytes must be a non-negative safe integer');
29
100
  }
30
- const argv = buildGhArgv(options.action, options.values, options.repo);
31
101
  const home = mkdtempSync(path.join(tmpdir(), 'gcb-gh-'));
32
102
  const configDir = path.join(home, 'gh');
33
103
  mkdirSync(configDir, { recursive: true });
@@ -63,8 +133,25 @@ export async function runGhAction(options) {
63
133
  if (!usesJq)
64
134
  env.GH_TOKEN = options.token;
65
135
  applyProxyChoice(env, options.proxy);
66
- const timeoutMs = options.timeoutMs ?? getGhAction(options.action).timeoutSeconds * 1000;
136
+ const action = getGhAction(options.action);
137
+ const timeoutMs = options.timeoutMs ?? action.timeoutSeconds * 1000;
138
+ const deadline = Date.now() + timeoutMs;
67
139
  try {
140
+ if (action.target === 'issue') {
141
+ const number = options.values['number'];
142
+ if (typeof number !== 'string' && typeof number !== 'number') {
143
+ throw new Error(`${options.action} needs an issue number`);
144
+ }
145
+ await assertIssueTarget(options.ghPath ?? 'gh', env, home, options.repo, number, Math.max(1, deadline - Date.now()));
146
+ }
147
+ // A body stays out of the process table; only its path reaches argv. A title still travels in
148
+ // argv, so this is about the free-form body rather than everything the person wrote.
149
+ let bodyFile;
150
+ if (typeof options.values['body'] === 'string') {
151
+ bodyFile = path.join(home, 'body.md');
152
+ writeFileSync(bodyFile, options.values['body'], { mode: 0o600 });
153
+ }
154
+ const argv = buildGhArgv(action.name, options.values, options.repo, bodyFile);
68
155
  return await new Promise((resolve) => {
69
156
  let stdout = '';
70
157
  let stderr = '';
@@ -173,7 +260,7 @@ export async function runGhAction(options) {
173
260
  if (!signalGroup('SIGTERM'))
174
261
  return;
175
262
  setTimeout(() => chase(), KILL_GRACE_MS).unref();
176
- }, timeoutMs);
263
+ }, Math.max(1, deadline - Date.now()));
177
264
  child.stdout?.on('data', (chunk) => take('stdout', chunk));
178
265
  child.stderr?.on('data', (chunk) => take('stderr', chunk));
179
266
  child.on('error', (error) => finish({ code: null, signal: null, error: error.message }));
package/lib/gh.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gh.js","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAqB,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE7D,8DAA8D;AAC9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AA8BnC;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAqB;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,uBAAuB,CAAC;IACnE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,YAAY,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IAClD,IAAI,MAAM,EAAE,CAAC;QACX,yFAAyF;QACzF,yEAAyE;QACzE,IAAI,CAAC;YACH,aAAa,CACX,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EACjC,GAAG,IAAI,uBAAuB,OAAO,CAAC,KAAK,mBAAmB,EAC9D,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAC1C,MAAM,GAAG,GAAsB;QAC7B,IAAI,EAAE,IAAI;QACV,aAAa,EAAE,SAAS;QACxB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,GAAG;QACb,kBAAkB,EAAE,GAAG;QACvB,qBAAqB,EAAE,GAAG;QAC1B,mBAAmB,EAAE,GAAG;QACxB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;KAC3B,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5D,CAAC;IACD,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1C,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;IAEzF,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;YAChD,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;YAChD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,IAAI,KAAiC,CAAC;YACtC,IAAI,SAAqC,CAAC;YAE1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE;gBAChD,GAAG,EAAE,IAAI;gBACT,GAAG;gBACH,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,CAAC,MAAyE,EAAQ,EAAE;gBACjG,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,KAAK,KAAK,SAAS;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC7C,2FAA2F;gBAC3F,2FAA2F;gBAC3F,oBAAoB;gBACpB,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;gBAChD,MAAM,UAAU,GAAG,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC;gBAChD,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACzC,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACzC,IAAI,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,UAAU;oBAAE,SAAS,GAAG,IAAI,CAAC;gBACrE,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC;YAEF,MAAM,WAAW,GAAG,CAAC,MAAM,GAA0B,SAAS,EAAW,EAAE;gBACzE,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;oBAAE,OAAO,KAAK,CAAC;gBAC1C,IAAI,CAAC;oBACH,wFAAwF;oBACxF,2DAA2D;oBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBACjC,OAAO,IAAI,CAAC;gBACd,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,yFAAyF;oBACzF,8CAA8C;oBAC9C,IAAK,KAA+B,CAAC,IAAI,KAAK,OAAO;wBAAE,OAAO,KAAK,CAAC;oBACpE,OAAO,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC3F,CAAC;YACH,CAAC,CAAC;YAEF,4FAA4F;YAC5F,+FAA+F;YAC/F,iEAAiE;YACjE,MAAM,KAAK,GAAG,GAAS,EAAE;gBACvB,IAAI,SAAS,KAAK,SAAS;oBAAE,OAAO;gBACpC,IAAI,CAAC,WAAW,EAAE;oBAAE,OAAO;gBAC3B,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;oBAC9B,IAAI,WAAW,EAAE;wBAAE,OAAO;oBAC1B,aAAa,CAAC,MAAM,CAAC,CAAC;oBACtB,IAAI,SAAS,KAAK,MAAM;wBAAE,SAAS,GAAG,SAAS,CAAC;gBAClD,CAAC,EAAE,GAAG,CAAC,CAAC;gBACR,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,MAAM,CAAC;YACrB,CAAC,CAAC;YAEF,MAAM,IAAI,GAAG,GAAS,EAAE;gBACtB,yFAAyF;gBACzF,0DAA0D;gBAC1D,IAAI,OAAO;oBAAE,OAAO;gBACpB,KAAK,EAAE,CAAC;YACV,CAAC,CAAC;YAEF,MAAM,IAAI,GAAG,CAAC,MAA2B,EAAE,KAAa,EAAQ,EAAE;gBAChE,IAAI,SAAS,IAAI,QAAQ;oBAAE,OAAO;gBAClC,MAAM,IAAI,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;gBAC7D,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;oBACrB,SAAS,GAAG,IAAI,CAAC;oBACjB,IAAI,EAAE,CAAC;oBACP,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC;gBAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBACtC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACxB,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC;gBAC9B,CAAC;gBACD,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;oBACxB,SAAS,GAAG,IAAI,CAAC;oBACjB,IAAI,EAAE,CAAC;gBACT,CAAC;YACH,CAAC,CAAC;YAEF,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC;gBAChB,yFAAyF;gBACzF,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;oBAAE,OAAO;gBACpC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YACnD,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACnE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACnE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAChG,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,IAAY,EAAE,QAAgB;IAC/C,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,IAAI,GAAG,IAAI,GAAG,QAAQ;YAAE,MAAM;QAClC,IAAI,IAAI,SAAS,CAAC;QAClB,IAAI,IAAI,IAAI,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"gh.js","sourceRoot":"","sources":["../src/gh.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gcb-host",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "Host-side gcb broker, configuration, providers and administration commands.",
5
5
  "license": "MIT",
6
6
  "author": "JounQin <admin@1stg.me>",
@@ -27,7 +27,7 @@
27
27
  }
28
28
  },
29
29
  "dependencies": {
30
- "gcb-core": "0.3.0",
30
+ "gcb-core": "0.5.0",
31
31
  "node-fetch-native": "^1.6.7",
32
32
  "x-fetch": "^0.3.0",
33
33
  "yaml": "^2.9.1"