looply-cli 0.5.7 → 0.5.9

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.
Files changed (84) hide show
  1. package/dist/.src-hash +1 -1
  2. package/dist/bin.d.ts.map +1 -1
  3. package/dist/bin.js +9 -1
  4. package/dist/bin.js.map +1 -1
  5. package/dist/branch-delivery-wiring.d.ts +41 -0
  6. package/dist/branch-delivery-wiring.d.ts.map +1 -0
  7. package/dist/branch-delivery-wiring.js +85 -0
  8. package/dist/branch-delivery-wiring.js.map +1 -0
  9. package/dist/branch-delivery.d.ts +275 -0
  10. package/dist/branch-delivery.d.ts.map +1 -0
  11. package/dist/branch-delivery.js +659 -0
  12. package/dist/branch-delivery.js.map +1 -0
  13. package/dist/config.d.ts +20 -1
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +24 -0
  16. package/dist/config.js.map +1 -1
  17. package/dist/coordinator-state.d.ts.map +1 -1
  18. package/dist/coordinator-state.js +28 -18
  19. package/dist/coordinator-state.js.map +1 -1
  20. package/dist/daemon-cmd.d.ts.map +1 -1
  21. package/dist/daemon-cmd.js +64 -5
  22. package/dist/daemon-cmd.js.map +1 -1
  23. package/dist/daemon-lock.d.ts +65 -2
  24. package/dist/daemon-lock.d.ts.map +1 -1
  25. package/dist/daemon-lock.js +149 -5
  26. package/dist/daemon-lock.js.map +1 -1
  27. package/dist/daemon.d.ts +12 -1
  28. package/dist/daemon.d.ts.map +1 -1
  29. package/dist/daemon.js +23 -3
  30. package/dist/daemon.js.map +1 -1
  31. package/dist/deliver-cmd.d.ts +41 -0
  32. package/dist/deliver-cmd.d.ts.map +1 -0
  33. package/dist/deliver-cmd.js +189 -0
  34. package/dist/deliver-cmd.js.map +1 -0
  35. package/dist/delivery-rules.d.ts +71 -0
  36. package/dist/delivery-rules.d.ts.map +1 -0
  37. package/dist/delivery-rules.js +186 -0
  38. package/dist/delivery-rules.js.map +1 -0
  39. package/dist/delivery-settings-cache.d.ts +35 -0
  40. package/dist/delivery-settings-cache.d.ts.map +1 -0
  41. package/dist/delivery-settings-cache.js +119 -0
  42. package/dist/delivery-settings-cache.js.map +1 -0
  43. package/dist/github-api.d.ts +99 -0
  44. package/dist/github-api.d.ts.map +1 -0
  45. package/dist/github-api.js +226 -0
  46. package/dist/github-api.js.map +1 -0
  47. package/dist/goal-runs.d.ts +2 -2
  48. package/dist/goal-runs.d.ts.map +1 -1
  49. package/dist/goal-runs.js +13 -11
  50. package/dist/goal-runs.js.map +1 -1
  51. package/dist/machine-settings.d.ts +188 -0
  52. package/dist/machine-settings.d.ts.map +1 -0
  53. package/dist/machine-settings.js +658 -0
  54. package/dist/machine-settings.js.map +1 -0
  55. package/dist/project-terminal.d.ts +6 -0
  56. package/dist/project-terminal.d.ts.map +1 -1
  57. package/dist/project-terminal.js +3 -0
  58. package/dist/project-terminal.js.map +1 -1
  59. package/dist/run-ending-locator.d.ts.map +1 -1
  60. package/dist/run-ending-locator.js +5 -3
  61. package/dist/run-ending-locator.js.map +1 -1
  62. package/dist/serve-cmd.d.ts +8 -0
  63. package/dist/serve-cmd.d.ts.map +1 -1
  64. package/dist/serve-cmd.js +12 -0
  65. package/dist/serve-cmd.js.map +1 -1
  66. package/dist/server-client.d.ts +29 -2
  67. package/dist/server-client.d.ts.map +1 -1
  68. package/dist/server-client.js +39 -2
  69. package/dist/server-client.js.map +1 -1
  70. package/dist/stale-run-sweep.js +11 -10
  71. package/dist/stale-run-sweep.js.map +1 -1
  72. package/dist/untrusted-exec.d.ts +11 -0
  73. package/dist/untrusted-exec.d.ts.map +1 -1
  74. package/dist/untrusted-exec.js +1 -0
  75. package/dist/untrusted-exec.js.map +1 -1
  76. package/dist/workspace-provisioner.d.ts +8 -0
  77. package/dist/workspace-provisioner.d.ts.map +1 -1
  78. package/dist/workspace-provisioner.js +18 -0
  79. package/dist/workspace-provisioner.js.map +1 -1
  80. package/dist/workspace.d.ts +47 -13
  81. package/dist/workspace.d.ts.map +1 -1
  82. package/dist/workspace.js +121 -94
  83. package/dist/workspace.js.map +1 -1
  84. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-rules.js","sourceRoot":"","sources":["../src/delivery-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type DeliverMode, type DeployConfig } from '@looply/core';
2
+ /**
3
+ * THE PROJECT'S REMOTE DELIVERY CHOICE, AS THIS MACHINE LAST HEARD IT.
4
+ *
5
+ * Set in AutoRyn's software-execution settings or the Looply console; pulled by
6
+ * the daemon with the model settings (every five minutes) and written here. A
7
+ * failed pull keeps the last answer, so an offline machine keeps doing what it
8
+ * was last told — never silently switches to merging or back.
9
+ *
10
+ * Precedence: config.yaml `deliver.mode` → this cache → `pr`.
11
+ */
12
+ export declare const DELIVERY_SETTINGS_FILE = "delivery-settings.json";
13
+ export interface DeliverySettingsCache {
14
+ deliver: DeliverMode | null;
15
+ /** The project's deploy step as set remotely; null when none. */
16
+ deploy: DeployConfig | null;
17
+ updatedAt: string | null;
18
+ fetchedAt: string;
19
+ }
20
+ export declare function readDeliverySettingsCache(stateDir: string): DeliverySettingsCache | null;
21
+ /** The mode in force, and where it came from. */
22
+ export declare function resolveDeliverMode(local: DeliverMode | undefined, stateDir: string): {
23
+ mode: DeliverMode;
24
+ from: 'config.yaml' | 'remote' | 'default';
25
+ };
26
+ /** The deploy step in force: config.yaml `deliver.deploy` → the remote setting → none (null). */
27
+ export declare function resolveDeploy(local: DeployConfig | undefined, stateDir: string): DeployConfig | null;
28
+ /** One pull: ask the server, write the cache when the answer changed. Never throws. */
29
+ export declare function makeDeliverySettingsPull(deps: {
30
+ fetch(): Promise<unknown>;
31
+ stateDir: string;
32
+ log(line: string): void;
33
+ now(): number;
34
+ }): () => Promise<'updated' | 'unchanged' | 'failed'>;
35
+ //# sourceMappingURL=delivery-settings-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-settings-cache.d.ts","sourceRoot":"","sources":["../src/delivery-settings-cache.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkD,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAGnH;;;;;;;;;GASG;AAEH,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,iEAAiE;IACjE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAoBxF;AAUD,iDAAiD;AACjD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,CAKnE;AAED,iGAAiG;AACjG,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGpG;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,IAAI,MAAM,CAAC;CACf,GAAG,MAAM,OAAO,CAAC,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC,CA4CpD"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELIVERY_SETTINGS_FILE = void 0;
4
+ exports.readDeliverySettingsCache = readDeliverySettingsCache;
5
+ exports.resolveDeliverMode = resolveDeliverMode;
6
+ exports.resolveDeploy = resolveDeploy;
7
+ exports.makeDeliverySettingsPull = makeDeliverySettingsPull;
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = require("node:path");
10
+ const core_1 = require("@looply/core");
11
+ const server_client_1 = require("./server-client");
12
+ /**
13
+ * THE PROJECT'S REMOTE DELIVERY CHOICE, AS THIS MACHINE LAST HEARD IT.
14
+ *
15
+ * Set in AutoRyn's software-execution settings or the Looply console; pulled by
16
+ * the daemon with the model settings (every five minutes) and written here. A
17
+ * failed pull keeps the last answer, so an offline machine keeps doing what it
18
+ * was last told — never silently switches to merging or back.
19
+ *
20
+ * Precedence: config.yaml `deliver.mode` → this cache → `pr`.
21
+ */
22
+ exports.DELIVERY_SETTINGS_FILE = 'delivery-settings.json';
23
+ function readDeliverySettingsCache(stateDir) {
24
+ try {
25
+ const raw = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(stateDir, exports.DELIVERY_SETTINGS_FILE), 'utf8'));
26
+ let deliver = null;
27
+ let deploy = null;
28
+ if (raw['deliver'] !== null && raw['deliver'] !== undefined) {
29
+ const v = (0, core_1.validateDeliverySettings)({ deliver: raw['deliver'], ...(raw['deploy'] ? { deploy: raw['deploy'] } : {}) });
30
+ if (!v.ok)
31
+ return null;
32
+ deliver = v.settings.deliver;
33
+ deploy = v.settings.deploy ?? null;
34
+ }
35
+ return {
36
+ deliver,
37
+ deploy,
38
+ updatedAt: typeof raw['updatedAt'] === 'string' ? raw['updatedAt'] : null,
39
+ fetchedAt: typeof raw['fetchedAt'] === 'string' ? raw['fetchedAt'] : '',
40
+ };
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ function writeCache(stateDir, value) {
47
+ (0, node_fs_1.mkdirSync)(stateDir, { recursive: true });
48
+ const target = (0, node_path_1.join)(stateDir, exports.DELIVERY_SETTINGS_FILE);
49
+ const tmp = `${target}.${process.pid}.tmp`;
50
+ (0, node_fs_1.writeFileSync)(tmp, JSON.stringify(value, null, 2) + '\n', 'utf8');
51
+ (0, node_fs_1.renameSync)(tmp, target);
52
+ }
53
+ /** The mode in force, and where it came from. */
54
+ function resolveDeliverMode(local, stateDir) {
55
+ if (local !== undefined)
56
+ return { mode: local, from: 'config.yaml' };
57
+ const remote = readDeliverySettingsCache(stateDir)?.deliver ?? null;
58
+ if (remote !== null)
59
+ return { mode: remote, from: 'remote' };
60
+ return { mode: core_1.DEFAULT_DELIVER_MODE, from: 'default' };
61
+ }
62
+ /** The deploy step in force: config.yaml `deliver.deploy` → the remote setting → none (null). */
63
+ function resolveDeploy(local, stateDir) {
64
+ if (local !== undefined)
65
+ return local;
66
+ return readDeliverySettingsCache(stateDir)?.deploy ?? null;
67
+ }
68
+ /** One pull: ask the server, write the cache when the answer changed. Never throws. */
69
+ function makeDeliverySettingsPull(deps) {
70
+ let failureReported = false;
71
+ const reportOnce = (why) => {
72
+ if (failureReported)
73
+ return;
74
+ failureReported = true;
75
+ deps.log(`deliver : could not refresh the project's delivery setting — ${why}`);
76
+ };
77
+ return async () => {
78
+ let body;
79
+ try {
80
+ body = await deps.fetch();
81
+ }
82
+ catch (e) {
83
+ if (!(e instanceof server_client_1.ServerError && (e.isOffline || e.isAuth)))
84
+ reportOnce(e.message);
85
+ return 'failed';
86
+ }
87
+ const b = body;
88
+ if (typeof b !== 'object' || b === null || !('settings' in b)) {
89
+ reportOnce('the server answered with something that is not a settings envelope');
90
+ return 'failed';
91
+ }
92
+ let deliver = null;
93
+ let deploy = null;
94
+ if (b.settings !== null) {
95
+ const v = (0, core_1.validateDeliverySettings)(b.settings);
96
+ if (!v.ok) {
97
+ reportOnce(`the server sent a setting this build refuses (${v.key}: ${v.because})`);
98
+ return 'failed';
99
+ }
100
+ deliver = v.settings.deliver;
101
+ deploy = v.settings.deploy ?? null;
102
+ }
103
+ failureReported = false;
104
+ const updatedAt = typeof b.updatedAt === 'string' ? b.updatedAt : null;
105
+ const before = readDeliverySettingsCache(deps.stateDir);
106
+ if (before !== null && before.deliver === deliver && JSON.stringify(before.deploy) === JSON.stringify(deploy) && before.updatedAt === updatedAt)
107
+ return 'unchanged';
108
+ try {
109
+ writeCache(deps.stateDir, { deliver, deploy, updatedAt, fetchedAt: new Date(deps.now()).toISOString() });
110
+ }
111
+ catch (e) {
112
+ deps.log(`deliver : could not write the delivery setting cache (${e.message})`);
113
+ return 'failed';
114
+ }
115
+ deps.log(`deliver : project delivery setting is ${deliver ?? `the default (${core_1.DEFAULT_DELIVER_MODE})`}`);
116
+ return 'updated';
117
+ };
118
+ }
119
+ //# sourceMappingURL=delivery-settings-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-settings-cache.js","sourceRoot":"","sources":["../src/delivery-settings-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * THE SLICE OF GITHUB A FINISHED BRANCH NEEDS: find or open its pull request,
3
+ * ask whether a branch is protected, read its checks, and merge it.
4
+ *
5
+ * ─────────────────────────────────────────────────────────────────────────────
6
+ * 🔴 THE MACHINE'S OWN CREDENTIALS, AND NOTHING NEW. The token is whatever this
7
+ * machine already pushes with: `gh auth token` when the GitHub CLI is installed
8
+ * and signed in, else git's own credential helper (`git credential fill` for
9
+ * github.com — Git Credential Manager on Windows). Nothing is stored, printed or
10
+ * sent anywhere but api.github.com. Neither may prompt: a daemon has nobody to
11
+ * answer, so `GIT_TERMINAL_PROMPT=0` and `GCM_INTERACTIVE=never` are set, and
12
+ * every child is hidden (`windowsHide`).
13
+ *
14
+ * When neither yields a token the answer is null, and the caller says so
15
+ * plainly: "pushed, but no pull request could be opened because …".
16
+ */
17
+ export interface PullInfo {
18
+ readonly number: number;
19
+ /** The address a person opens. */
20
+ readonly url: string;
21
+ readonly state: 'open' | 'closed';
22
+ readonly merged: boolean;
23
+ /** The branch it targets. */
24
+ readonly base: string;
25
+ readonly headSha: string;
26
+ }
27
+ export type CheckState = 'success' | 'failure' | 'pending';
28
+ export interface CheckResult {
29
+ readonly name: string;
30
+ readonly state: CheckState;
31
+ }
32
+ export interface GitHubApi {
33
+ /** The pull request whose head is `branch`, in any state, newest first; null when none. */
34
+ findPull(branch: string): Promise<PullInfo | null>;
35
+ getPull(n: number): Promise<PullInfo>;
36
+ createPull(input: {
37
+ title: string;
38
+ head: string;
39
+ base: string;
40
+ body: string;
41
+ }): Promise<PullInfo>;
42
+ /** True/false from GitHub; null when it would not say (no rights to read it). */
43
+ branchProtected(branch: string): Promise<boolean | null>;
44
+ /** True when origin has the branch. */
45
+ branchExists(branch: string): Promise<boolean>;
46
+ /** The required status-check names for `base`; null when unknown (unprotected, or not readable). */
47
+ requiredChecks(base: string): Promise<string[] | null>;
48
+ /** Every check run and commit status on `sha`, by name (newest wins). */
49
+ checksFor(sha: string): Promise<CheckResult[]>;
50
+ /** Merge, only if the head is still `sha`. Never a squash of somebody else's commits behind their back. */
51
+ merge(n: number, sha: string, title: string): Promise<{
52
+ merged: boolean;
53
+ message: string;
54
+ sha?: string;
55
+ }>;
56
+ setBase(n: number, base: string): Promise<void>;
57
+ /** Close a pull request a fix-up replaced, with a comment saying by what. */
58
+ closePull(n: number, comment: string): Promise<void>;
59
+ }
60
+ export declare class GitHubError extends Error {
61
+ readonly status: number;
62
+ constructor(message: string, status: number);
63
+ }
64
+ type Fetch = (url: string, init: {
65
+ method: string;
66
+ headers: Record<string, string>;
67
+ body?: string;
68
+ }) => Promise<{
69
+ status: number;
70
+ text(): Promise<string>;
71
+ }>;
72
+ /** A client for one repository, with a token already in hand. */
73
+ export declare function makeGitHubApi(deps: {
74
+ owner: string;
75
+ repo: string;
76
+ token: string;
77
+ fetch?: Fetch;
78
+ }): GitHubApi;
79
+ export type RunText = (bin: string, args: readonly string[], stdin: string, cwd: string) => Promise<{
80
+ code: number;
81
+ stdout: string;
82
+ }>;
83
+ /** `gh` on PATH, as an absolute path (never resolved from the cwd), or null. */
84
+ export declare function ghBinary(env?: NodeJS.ProcessEnv): string | null;
85
+ /**
86
+ * A token for github.com, and where it came from; null when this machine has
87
+ * none Looply can use. Order: `gh auth token`, then git's credential helper.
88
+ */
89
+ export declare function githubToken(deps?: {
90
+ run?: RunText;
91
+ gh?: string | null;
92
+ git?: string | null;
93
+ cwd?: string;
94
+ }): Promise<{
95
+ token: string;
96
+ from: 'gh' | 'git-credential';
97
+ } | null>;
98
+ export {};
99
+ //# sourceMappingURL=github-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-api.d.ts","sourceRoot":"","sources":["../src/github-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GitHubError = void 0;
4
+ exports.makeGitHubApi = makeGitHubApi;
5
+ exports.ghBinary = ghBinary;
6
+ exports.githubToken = githubToken;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_os_1 = require("node:os");
10
+ const node_path_1 = require("node:path");
11
+ const trusted_git_1 = require("./trusted-git");
12
+ /**
13
+ * GitHub's merge-commit method for a pull request merge — a request to GitHub,
14
+ * not a git verb: nothing here runs `git merge`, and `integration.spec.ts`'s
15
+ * verb pin still holds for every local git call.
16
+ */
17
+ const MERGE_COMMIT = 'merge';
18
+ class GitHubError extends Error {
19
+ status;
20
+ constructor(message, status) {
21
+ super(message);
22
+ this.status = status;
23
+ this.name = 'GitHubError';
24
+ }
25
+ }
26
+ exports.GitHubError = GitHubError;
27
+ /** A client for one repository, with a token already in hand. */
28
+ function makeGitHubApi(deps) {
29
+ const doFetch = deps.fetch ?? ((url, init) => fetch(url, init));
30
+ const base = `https://api.github.com/repos/${encodeURIComponent(deps.owner)}/${encodeURIComponent(deps.repo)}`;
31
+ async function call(method, path, body, okMissing = false) {
32
+ const res = await doFetch(`${base}${path}`, {
33
+ method,
34
+ headers: {
35
+ authorization: `Bearer ${deps.token}`,
36
+ accept: 'application/vnd.github+json',
37
+ 'x-github-api-version': '2022-11-28',
38
+ 'user-agent': 'looply-cli',
39
+ ...(body === undefined ? {} : { 'content-type': 'application/json' }),
40
+ },
41
+ ...(body === undefined ? {} : { body: JSON.stringify(body) }),
42
+ });
43
+ const text = await res.text();
44
+ if (okMissing && res.status === 404)
45
+ return null;
46
+ if (res.status < 200 || res.status >= 300) {
47
+ let message = text.slice(0, 300);
48
+ try {
49
+ const j = JSON.parse(text);
50
+ const extra = (j.errors ?? []).map((e) => (typeof e.message === 'string' ? e.message : '')).filter(Boolean);
51
+ if (typeof j.message === 'string')
52
+ message = [j.message, ...extra].join(': ');
53
+ }
54
+ catch {
55
+ /* not JSON: the raw text, bounded */
56
+ }
57
+ throw new GitHubError(`GitHub answered ${res.status} to ${method} ${path}: ${message}`, res.status);
58
+ }
59
+ return (text === '' ? null : JSON.parse(text));
60
+ }
61
+ const toPull = (p) => ({
62
+ number: Number(p['number']),
63
+ url: String(p['html_url']),
64
+ state: p['state'] === 'open' ? 'open' : 'closed',
65
+ merged: p['merged'] === true || (typeof p['merged_at'] === 'string' && p['merged_at'] !== ''),
66
+ base: String(p['base']?.['ref'] ?? ''),
67
+ headSha: String(p['head']?.['sha'] ?? ''),
68
+ });
69
+ return {
70
+ async findPull(branch) {
71
+ const list = await call('GET', `/pulls?state=all&per_page=10&head=${encodeURIComponent(`${deps.owner}:${branch}`)}`);
72
+ const first = (list ?? []).sort((a, b) => Number(b['number']) - Number(a['number']))[0];
73
+ return first === undefined ? null : toPull(first);
74
+ },
75
+ async getPull(n) {
76
+ return toPull((await call('GET', `/pulls/${n}`)) ?? {});
77
+ },
78
+ async createPull(input) {
79
+ return toPull((await call('POST', '/pulls', { ...input, maintainer_can_modify: true })) ?? {});
80
+ },
81
+ async branchProtected(branch) {
82
+ try {
83
+ const b = await call('GET', `/branches/${encodeURIComponent(branch)}`, undefined, true);
84
+ return b === null ? false : b['protected'] === true;
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ },
90
+ async branchExists(branch) {
91
+ return (await call('GET', `/branches/${encodeURIComponent(branch)}`, undefined, true)) !== null;
92
+ },
93
+ async requiredChecks(baseBranch) {
94
+ try {
95
+ const r = await call('GET', `/branches/${encodeURIComponent(baseBranch)}/protection/required_status_checks`, undefined, true);
96
+ if (r === null)
97
+ return null;
98
+ const names = new Set();
99
+ for (const c of Array.isArray(r['contexts']) ? r['contexts'] : [])
100
+ if (typeof c === 'string')
101
+ names.add(c);
102
+ for (const c of Array.isArray(r['checks']) ? r['checks'] : [])
103
+ if (typeof c?.['context'] === 'string')
104
+ names.add(c['context']);
105
+ return [...names];
106
+ }
107
+ catch {
108
+ // 403 without admin rights: unknown, which is handled as "every check must be green".
109
+ return null;
110
+ }
111
+ },
112
+ async checksFor(sha) {
113
+ const out = new Map();
114
+ const runs = await call('GET', `/commits/${sha}/check-runs?per_page=100`);
115
+ for (const r of runs?.check_runs ?? []) {
116
+ const name = String(r['name']);
117
+ if (r['status'] !== 'completed')
118
+ out.set(name, 'pending');
119
+ else
120
+ out.set(name, ['success', 'neutral', 'skipped'].includes(String(r['conclusion'])) ? 'success' : 'failure');
121
+ }
122
+ const status = await call('GET', `/commits/${sha}/status`);
123
+ // Newest first from GitHub: the first of each context is its current state.
124
+ for (const s of status?.statuses ?? []) {
125
+ const name = String(s['context']);
126
+ if (out.has(name))
127
+ continue;
128
+ const st = String(s['state']);
129
+ out.set(name, st === 'success' ? 'success' : st === 'pending' ? 'pending' : 'failure');
130
+ }
131
+ return [...out].map(([name, state]) => ({ name, state }));
132
+ },
133
+ async merge(n, sha, title) {
134
+ try {
135
+ const r = await call('PUT', `/pulls/${n}/merge`, { sha, merge_method: MERGE_COMMIT, commit_title: title });
136
+ return {
137
+ merged: r?.['merged'] === true,
138
+ message: String(r?.['message'] ?? ''),
139
+ ...(typeof r?.['sha'] === 'string' ? { sha: r['sha'] } : {}),
140
+ };
141
+ }
142
+ catch (e) {
143
+ return { merged: false, message: e.message };
144
+ }
145
+ },
146
+ async setBase(n, baseBranch) {
147
+ await call('PATCH', `/pulls/${n}`, { base: baseBranch });
148
+ },
149
+ async closePull(n, comment) {
150
+ await call('POST', `/issues/${n}/comments`, { body: comment });
151
+ await call('PATCH', `/pulls/${n}`, { state: 'closed' });
152
+ },
153
+ };
154
+ }
155
+ const runText = (bin, args, stdin, cwd) => new Promise((resolve) => {
156
+ let child;
157
+ try {
158
+ child = (0, node_child_process_1.spawn)(bin, [...args], {
159
+ cwd,
160
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0', GCM_INTERACTIVE: 'never', GH_PROMPT_DISABLED: '1' },
161
+ stdio: ['pipe', 'pipe', 'ignore'],
162
+ windowsHide: true,
163
+ });
164
+ }
165
+ catch {
166
+ resolve({ code: -1, stdout: '' });
167
+ return;
168
+ }
169
+ const out = [];
170
+ const timer = setTimeout(() => child.kill(), 20_000);
171
+ child.stdout?.on('data', (d) => out.push(d.toString('utf8')));
172
+ child.on('error', () => {
173
+ clearTimeout(timer);
174
+ resolve({ code: -1, stdout: '' });
175
+ });
176
+ child.on('close', (code) => {
177
+ clearTimeout(timer);
178
+ resolve({ code: code ?? -1, stdout: out.join('') });
179
+ });
180
+ child.stdin?.end(stdin);
181
+ });
182
+ /** `gh` on PATH, as an absolute path (never resolved from the cwd), or null. */
183
+ function ghBinary(env = process.env) {
184
+ const win = process.platform === 'win32';
185
+ const names = win ? ['gh.exe'] : ['gh'];
186
+ for (const dir of (env['PATH'] ?? env['Path'] ?? '').split(node_path_1.delimiter)) {
187
+ if (dir === '' || dir === '.')
188
+ continue;
189
+ for (const n of names) {
190
+ const p = (0, node_path_1.join)(dir, n);
191
+ if ((0, node_fs_1.existsSync)(p))
192
+ return p;
193
+ }
194
+ }
195
+ return null;
196
+ }
197
+ /**
198
+ * A token for github.com, and where it came from; null when this machine has
199
+ * none Looply can use. Order: `gh auth token`, then git's credential helper.
200
+ */
201
+ async function githubToken(deps = {}) {
202
+ const run = deps.run ?? runText;
203
+ // NOT the repository: a credential helper named in a repository's own config is
204
+ // exactly what `trusted-git` refuses, so the ask runs where only the person's
205
+ // global and system config apply.
206
+ const cwd = deps.cwd ?? (0, node_os_1.homedir)();
207
+ const gh = deps.gh === undefined ? ghBinary() : deps.gh;
208
+ if (gh !== null) {
209
+ const r = await run(gh, ['auth', 'token', '--hostname', 'github.com'], '', cwd);
210
+ const t = r.stdout.trim();
211
+ if (r.code === 0 && /^[A-Za-z0-9_.-]{20,}$/.test(t))
212
+ return { token: t, from: 'gh' };
213
+ }
214
+ const git = deps.git === undefined ? (0, trusted_git_1.gitBinary)() : deps.git;
215
+ if (git !== null) {
216
+ const r = await run(git, ['credential', 'fill'], 'protocol=https\nhost=github.com\n\n', cwd);
217
+ if (r.code === 0) {
218
+ const m = /^password=(.+)$/m.exec(r.stdout);
219
+ const t = m?.[1]?.trim();
220
+ if (t !== undefined && t !== '')
221
+ return { token: t, from: 'git-credential' };
222
+ }
223
+ }
224
+ return null;
225
+ }
226
+ //# sourceMappingURL=github-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-api.js","sourceRoot":"","sources":["../src/github-api.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,8 @@ import { type RunRegistry } from './workspace';
14
14
  *
15
15
  * READ-ONLY, like the view it serves: it lists directories and reads files,
16
16
  * and the spec pins that it does nothing else. It walks exactly two places —
17
- * the project state and this project's checkouts under
18
- * `~/.looply/workspaces` — never the rest of the disk.
17
+ * the project state and this project's checkouts, in every folder checkouts
18
+ * were made in (`workspacesRoots`) — never the rest of the disk.
19
19
  *
20
20
  * The fold is not re-implemented: a run's events are handed to `runReport`
21
21
  * with the ledger's item events (titles), so the rounds, outcomes, totals and
@@ -1 +1 @@
1
- {"version":3,"file":"goal-runs.d.ts","sourceRoot":"","sources":["../src/goal-runs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtF,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gIAAgI;IAChI,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACpD,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,WAAW,EAAE,CA2C9H;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,UAAU,EAAE,CAWxE;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAClI;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAsBhF;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,4HAA4H;AAC5H,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,EAAE,CAMjE"}
1
+ {"version":3,"file":"goal-runs.d.ts","sourceRoot":"","sources":["../src/goal-runs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEtF,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gIAAgI;IAChI,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;IACpD,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,MAAkB,GAAG,WAAW,EAAE,CA6C9H;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;IACrC,8DAA8D;IAC9D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,UAAU,EAAE,CAWxE;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAClI;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAsBhF;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,4HAA4H;AAC5H,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,EAAE,CAMjE"}
package/dist/goal-runs.js CHANGED
@@ -53,17 +53,19 @@ function ledgersOn(projectStateDir, registry, cwd, home = (0, node_os_1.homedir)
53
53
  continue;
54
54
  add(live.record.stateDir, 'workspace', live.record.workspace);
55
55
  }
56
- const root = (0, workspace_1.workspacesRoot)(cwd, home);
57
- let names;
58
- try {
59
- names = (0, node_fs_1.readdirSync)(root);
60
- }
61
- catch {
62
- names = [];
63
- }
64
- for (const name of [...names].sort()) {
65
- const checkout = (0, node_path_1.join)(root, name);
66
- add((0, node_path_1.join)(checkout, git_driver_1.STATE_DIR, 'state'), 'workspace', checkout);
56
+ // Every folder this project's checkouts were made in: a change of setting applies to new ones only.
57
+ for (const root of (0, workspace_1.workspacesRoots)(cwd, home)) {
58
+ let names;
59
+ try {
60
+ names = (0, node_fs_1.readdirSync)(root);
61
+ }
62
+ catch {
63
+ names = [];
64
+ }
65
+ for (const name of [...names].sort()) {
66
+ const checkout = (0, node_path_1.join)(root, name);
67
+ add((0, node_path_1.join)(checkout, git_driver_1.STATE_DIR, 'state'), 'workspace', checkout);
68
+ }
67
69
  }
68
70
  return out;
69
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"goal-runs.js","sourceRoot":"","sources":["../src/goal-runs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"goal-runs.js","sourceRoot":"","sources":["../src/goal-runs.ts"],"names":[],"mappings":"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"}