@appforge-ci/admin-cli 0.3.17 → 0.3.19

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.
@@ -116,6 +116,13 @@ export declare function waitForCommandResolution(api: ApiClient, agentId: string
116
116
  * touch readiness. Only the enum is printed, never agent-reported text.
117
117
  */
118
118
  export declare function formatRebootRecoveryState(a: AgentInfo): string;
119
+ /**
120
+ * The `agents list` token for "can this Mac host a per-build remote-access VM?" (what its last heartbeat reported about its VM helper and
121
+ * Xcode image, migrations/0057, appforge-ci#901): `ok 2/2` (free VM slots out of the 2 macOS allows), `-` when the Mac did not say it can
122
+ * (an older agent, no helper, no image). Shows the Mac's last report; when the Mac is offline the status column already says so, and the
123
+ * scheduler offers it nothing then (the report counts only while its heartbeat is recent). Only numbers and fixed words are printed.
124
+ */
125
+ export declare function formatVmBuildsState(a: Pick<AgentInfo, "vmBuilds" | "vmSlotsFree">): string;
119
126
  /** The reasons behind a WARN/FAIL, one indented line each, for `agents list` to print under the agent's row. The text
120
127
  * is agent-reported, so control characters are neutralised and each line is bounded. Empty for ok / not reported. */
121
128
  export declare function formatRebootRecoveryDetails(a: AgentInfo): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,SAAS,EAmBT,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAmB3B;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE1I;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,qBAAqB,CAAC,EAC1D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAkBT;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CASjD;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,sBAAsB,CAAC,EAC3D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAUD;;;;;;;;;;;;;GAaG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC,GACvG,MAAM,CAIR;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAgC,GAC/C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAS9B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAW9D;AAED;sHACsH;AACtH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAMlE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAqBxD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAwiBtD"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,SAAS,EAoBT,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAoB3B;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE1I;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,qBAAqB,CAAC,EAC1D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAkBT;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CASjD;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,YAAY,GAAG,sBAAsB,CAAC,EAC3D,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,IAAI,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB;AAUD;;;;;;;;;;;;;GAaG;AACH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC,GACvG,MAAM,CAIR;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,GAAE,MAAgC,GAC/C,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAS9B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAW9D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,aAAa,CAAC,GAAG,MAAM,CAI1F;AAED;sHACsH;AACtH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAMlE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAqBxD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAqjBtD"}
@@ -1,6 +1,6 @@
1
1
  import { createRequire } from "node:module";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
- import { ApiClient, computeAgentReadiness, effectiveAgentStatus, isAgentVersionCurrent, parseActiveBuildIds, parseEnforcementLevel, parseRebootRecovery, parseRebootRecoveryReasons, parseVpnFeatures, CURRENT_AGENT_VERSION, ENFORCEMENT_LEVELS, KNOWN_VPN_FEATURES, agentVpnCapabilitiesCurrent, stripControlChars, describeEnforcementLevel, describeVpnFeature, describeVpnPin, orgDisplay, vpnEligibility, } from "@appforge-ci/core";
3
+ import { ApiClient, computeAgentReadiness, effectiveAgentStatus, isAgentVersionCurrent, parseActiveBuildIds, parseEnforcementLevel, parseRebootRecovery, parseRebootRecoveryReasons, parseVpnFeatures, CURRENT_AGENT_VERSION, ENFORCEMENT_LEVELS, KNOWN_VPN_FEATURES, MACOS_VM_LIMIT, agentVpnCapabilitiesCurrent, stripControlChars, describeEnforcementLevel, describeVpnFeature, describeVpnPin, orgDisplay, vpnEligibility, } from "@appforge-ci/core";
4
4
  import { collectSystemInfo } from "@appforge-ci/agent/dist/lib/system-info.js";
5
5
  import { saveConfig as saveAgentConfig, configPath as agentConfigPath } from "@appforge-ci/agent/dist/lib/config.js";
6
6
  import { loadAdminCliConfig } from "../lib/config.js";
@@ -15,6 +15,7 @@ import { installRunnerUser, DEFAULT_RUNNER_USER, DEFAULT_RUNNER_VERSION } from "
15
15
  import { installVmUser, DEFAULT_VM_USER } from "../lib/vm-user.js";
16
16
  import { applyVmUser } from "../lib/vm-user-apply.js";
17
17
  import { installBuildUser, BUILD_USER_NAME } from "../lib/build-user.js";
18
+ import { installVmHelper } from "../lib/vm-helper.js";
18
19
  const require = createRequire(import.meta.url);
19
20
  const UPDATE_POLL_INTERVAL_MS = 5000;
20
21
  /**
@@ -211,6 +212,18 @@ export function formatRebootRecoveryState(a) {
211
212
  return "-";
212
213
  }
213
214
  }
215
+ /**
216
+ * The `agents list` token for "can this Mac host a per-build remote-access VM?" (what its last heartbeat reported about its VM helper and
217
+ * Xcode image, migrations/0057, appforge-ci#901): `ok 2/2` (free VM slots out of the 2 macOS allows), `-` when the Mac did not say it can
218
+ * (an older agent, no helper, no image). Shows the Mac's last report; when the Mac is offline the status column already says so, and the
219
+ * scheduler offers it nothing then (the report counts only while its heartbeat is recent). Only numbers and fixed words are printed.
220
+ */
221
+ export function formatVmBuildsState(a) {
222
+ if (a.vmBuilds !== 1)
223
+ return "-";
224
+ const free = Math.min(MACOS_VM_LIMIT, Math.max(0, Math.floor(Number(a.vmSlotsFree ?? 0)) || 0));
225
+ return `ok ${free}/${MACOS_VM_LIMIT}`;
226
+ }
214
227
  /** The reasons behind a WARN/FAIL, one indented line each, for `agents list` to print under the agent's row. The text
215
228
  * is agent-reported, so control characters are neutralised and each line is bounded. Empty for ok / not reported. */
216
229
  export function formatRebootRecoveryDetails(a) {
@@ -246,7 +259,7 @@ export function formatAgentListLine(a) {
246
259
  // See docs/fleet-management.md's "Concurrent builds" section —
247
260
  // one Mac mini can run more than one build at once now.
248
261
  const slots = `${parseActiveBuildIds(a.activeBuildIds).length}/${a.maxConcurrentBuilds}`;
249
- return `${a.id} ${stripControlChars(a.name).padEnd(20)} ${status.padEnd(10)} slots ${slots.padEnd(5)} ${(ready ? "Ready" : "NotReady").padEnd(9)} reboot ${formatRebootRecoveryState(a).padEnd(4)} cpu ${a.cpuUsagePercent}% mem ${a.memUsagePercent}% disk free ${a.diskFreeGb}GB ${formatVpnState(a)}${formatCapabilityState(a)} last seen ${a.lastSeenAt}${versionSuffix}`;
262
+ return `${a.id} ${stripControlChars(a.name).padEnd(20)} ${status.padEnd(10)} slots ${slots.padEnd(5)} ${(ready ? "Ready" : "NotReady").padEnd(9)} reboot ${formatRebootRecoveryState(a).padEnd(4)} vm ${formatVmBuildsState(a).padEnd(6)} cpu ${a.cpuUsagePercent}% mem ${a.memUsagePercent}% disk free ${a.diskFreeGb}GB ${formatVpnState(a)}${formatCapabilityState(a)} last seen ${a.lastSeenAt}${versionSuffix}`;
250
263
  }
251
264
  export function registerAgentsCommands(program) {
252
265
  const agents = program.command("agents").description("Manage the Mac mini build fleet");
@@ -327,6 +340,16 @@ export function registerAgentsCommands(program) {
327
340
  .action((opts) => {
328
341
  installBuildUser({ user: opts.user, agentUser: opts.agentUser });
329
342
  });
343
+ agents
344
+ .command("install-vm-helper")
345
+ .description(`Let this Mac run per-build remote-access VMs (ssh and screen sharing into a build, appforge-ci#901): install the root-owned /etc/appforge/vm-helper.sh, which starts Tart as the '${DEFAULT_VM_USER}' helper account, and add ONE line to /etc/sudoers.d/appforge-agent that lets the agent's account run that one script as root. Run it ON the Mac, in your own terminal (you will be prompted for your sudo password); needs install-vm-user done first and an appforge-xcode-* image. The sudoers line is validated with visudo before it is written. Idempotent. See docs/manual-vm-validation.md.`)
346
+ .option("--vm-user <name>", "The helper account that holds the graphical session and runs Tart", DEFAULT_VM_USER)
347
+ .option("--agent-user <name>", "The account that runs the agent (default: you; under sudo, the user who ran sudo)")
348
+ .option("--tart-path <path>", "Absolute path to the tart binary (default: Homebrew's, /opt/homebrew/bin/tart)")
349
+ .option("--jobs-root <path>", "The agent's jobs root, if it is not the default ~/appforge/jobs.noindex (APPFORGE_JOBS_DIR)")
350
+ .action((opts) => {
351
+ installVmHelper({ vmUser: opts.vmUser, agentUser: opts.agentUser, tartPath: opts.tartPath, jobsRoot: opts.jobsRoot });
352
+ });
330
353
  agents
331
354
  .command("add-mac")
332
355
  .description("Enroll THIS Mac as a build agent and start it running in the background, in one step — run this ON the Mac mini you want to add (must already be 'appforge-admin login'd)")
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import "../test-support/home-sandbox.js";
3
3
  import { test } from "node:test";
4
4
  import assert from "node:assert/strict";
5
5
  import { CURRENT_AGENT_VERSION } from "@appforge-ci/core";
6
- import { waitForCommandResolution, parseTimeoutSeconds, formatAgentCommandLine, formatVpnState, setVpnApprovedForAgent, formatCapabilityState, formatCapabilityLegend, formatAgentListLine, formatRebootRecoveryDetails, formatRebootRecoveryState, setDedicatedOrgForAgent } from "./agents.js";
6
+ import { waitForCommandResolution, parseTimeoutSeconds, formatAgentCommandLine, formatVpnState, setVpnApprovedForAgent, formatCapabilityState, formatCapabilityLegend, formatAgentListLine, formatRebootRecoveryDetails, formatRebootRecoveryState, formatVmBuildsState, setDedicatedOrgForAgent } from "./agents.js";
7
7
  /**
8
8
  * `parseTimeoutSeconds` guards `agents update`'s `--timeout` option
9
9
  * before it ever reaches `waitForCommandResolution`'s deadline math: a
@@ -289,10 +289,10 @@ test("setDedicatedOrgForAgent returns null and writes nothing for an agent not i
289
289
  });
290
290
  // ---- reboot-recovery verdict (migrations/0054, issue #783) -----------------------------------------------------
291
291
  test("agents list shows the reboot-recovery verdict as a short token, '-' when the Mac never reported one", () => {
292
- assert.match(formatAgentListLine(listedAgent()), /Ready +reboot - +cpu/);
293
- assert.match(formatAgentListLine(listedAgent({ rebootRecovery: "ok" })), /Ready +reboot ok +cpu/);
294
- assert.match(formatAgentListLine(listedAgent({ rebootRecovery: "warn" })), /Ready +reboot WARN +cpu/);
295
- assert.match(formatAgentListLine(listedAgent({ rebootRecovery: "fail" })), /Ready +reboot FAIL +cpu/);
292
+ assert.match(formatAgentListLine(listedAgent()), /Ready +reboot - +vm - +cpu/);
293
+ assert.match(formatAgentListLine(listedAgent({ rebootRecovery: "ok" })), /Ready +reboot ok +vm - +cpu/);
294
+ assert.match(formatAgentListLine(listedAgent({ rebootRecovery: "warn" })), /Ready +reboot WARN +vm - +cpu/);
295
+ assert.match(formatAgentListLine(listedAgent({ rebootRecovery: "fail" })), /Ready +reboot FAIL +vm - +cpu/);
296
296
  // a value this build does not know reads as not reported, and the row still ends with the agent version
297
297
  const odd = formatAgentListLine(listedAgent({ rebootRecovery: "catastrophic" }));
298
298
  assert.match(odd, /reboot -/);
@@ -327,4 +327,23 @@ test("reason text is agent-reported: control characters are neutralised and each
327
327
  assert.doesNotMatch(line, /[\u0000-\u001f\u007f]/);
328
328
  assert.ok(line.length <= 4 + "reboot FAIL: ".length + 240 + 1);
329
329
  });
330
+ // ---- per-build VM capability (migrations/0057, appforge-ci#901) ------------------------------------------------
331
+ test("agents list shows which Macs can run VM builds: 'ok <free>/2' for a Mac whose last heartbeat said its VM helper works, '-' for every other", () => {
332
+ assert.match(formatAgentListLine(listedAgent()), /reboot - +vm - +cpu/, "a Mac that never said so (an older agent, no helper) shows '-'");
333
+ assert.match(formatAgentListLine(listedAgent({ vmBuilds: 0, vmSlotsFree: 0 })), /vm - +cpu/);
334
+ assert.match(formatAgentListLine(listedAgent({ vmBuilds: 1, vmSlotsFree: 2 })), /vm ok 2\/2 +cpu/);
335
+ assert.match(formatAgentListLine(listedAgent({ vmBuilds: 1, vmSlotsFree: 1 })), /vm ok 1\/2 +cpu/);
336
+ assert.match(formatAgentListLine(listedAgent({ vmBuilds: 1, vmSlotsFree: 0 })), /vm ok 0\/2 +cpu/, "capable but full");
337
+ // the row still ends with the agent version
338
+ assert.match(formatAgentListLine(listedAgent({ vmBuilds: 1, vmSlotsFree: 2 })), new RegExp(`agent v${CURRENT_AGENT_VERSION.replace(/\./g, "\\.")}$`));
339
+ });
340
+ test("formatVmBuildsState prints only numbers and fixed words, whatever the API returned", () => {
341
+ assert.equal(formatVmBuildsState({}), "-");
342
+ assert.equal(formatVmBuildsState({ vmBuilds: 1 }), "ok 0/2", "capable, slots unreported");
343
+ assert.equal(formatVmBuildsState({ vmBuilds: 1, vmSlotsFree: 9 }), "ok 2/2", "clamped to what macOS allows");
344
+ assert.equal(formatVmBuildsState({ vmBuilds: 1, vmSlotsFree: -4 }), "ok 0/2");
345
+ assert.equal(formatVmBuildsState({ vmBuilds: 1, vmSlotsFree: "\u001b[2K2" }), "ok 0/2", "a hostile value is a number or nothing");
346
+ assert.equal(formatVmBuildsState({ vmBuilds: "yes", vmSlotsFree: 2 }), "-");
347
+ assert.equal(formatVmBuildsState({ vmBuilds: 0, vmSlotsFree: 2 }), "-");
348
+ });
330
349
  //# sourceMappingURL=agents.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents.test.js","sourceRoot":"","sources":["../../src/commands/agents.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.test.js","sourceRoot":"","sources":["../../src/commands/agents.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Command } from "commander";
2
+ import { type GithubInstallationInfo } from "@appforge-ci/core";
3
+ /** Validates an installation id argument: a positive integer, as GitHub issues them. Exported for testing. */
4
+ export declare function parseInstallationIdArg(raw: string): number | null;
5
+ /** One line per installation. Exported for testing. */
6
+ export declare function formatInstallation(i: GithubInstallationInfo): string;
7
+ /** What to tell the operator after a link, including the things worth knowing about what they just connected. Exported for testing. */
8
+ export declare function linkNotes(i: GithubInstallationInfo, orgId: string): string[];
9
+ export declare function registerGithubCommands(program: Command): void;
10
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/commands/github.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAA4C,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAqB1G,8GAA8G;AAC9G,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIjE;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAIpE;AAED,uIAAuI;AACvI,wBAAgB,SAAS,CAAC,CAAC,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAS5E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAkEtD"}
@@ -0,0 +1,106 @@
1
+ import { ApiClient, MIN_CLONE_TOKEN_AGENT_VERSION } from "@appforge-ci/core";
2
+ import { loadAdminCliConfig } from "../lib/config.js";
3
+ /**
4
+ * `appforge-admin github ...` — private GitHub repository access through the AppForge GitHub App (issue #894, slice 1;
5
+ * docs/github-app.md). Platform admins only: these talk to apps/admin-api, which a customer cannot reach.
6
+ *
7
+ * Why an operator links and not the customer: a GitHub App installation id is a guessable integer, and the control plane
8
+ * will mint a repository read token for whichever installation an org is linked to. Verifying that an org controls an
9
+ * installation needs GitHub's OAuth-during-installation flow (slice 2); until then the operator does that check out of band
10
+ * (the customer installs the App on their account and tells the operator, or the operator watches the install on GitHub),
11
+ * and these commands record the result.
12
+ *
13
+ * Every `<orgId>` here is the CUSTOMER org that owns the app (not the fleet org your Macs are enrolled in).
14
+ */
15
+ function client() {
16
+ const cfg = loadAdminCliConfig();
17
+ return new ApiClient({ baseUrl: cfg.apiUrl, token: cfg.token, adminApiUrl: cfg.adminApiUrl });
18
+ }
19
+ /** Validates an installation id argument: a positive integer, as GitHub issues them. Exported for testing. */
20
+ export function parseInstallationIdArg(raw) {
21
+ if (!/^[1-9][0-9]{0,15}$/.test(raw))
22
+ return null;
23
+ const n = Number(raw);
24
+ return Number.isSafeInteger(n) ? n : null;
25
+ }
26
+ /** One line per installation. Exported for testing. */
27
+ export function formatInstallation(i) {
28
+ const scope = i.repositorySelection === "all" ? "ALL repositories of the account" : "selected repositories";
29
+ const status = i.suspendedAt ? `SUSPENDED since ${i.suspendedAt}` : "active";
30
+ return `${i.installationId} ${i.accountType} ${i.accountLogin} ${scope} ${status} linked ${i.createdAt}`;
31
+ }
32
+ /** What to tell the operator after a link, including the things worth knowing about what they just connected. Exported for testing. */
33
+ export function linkNotes(i, orgId) {
34
+ const notes = [`Next: point an app at it with appforge-admin github set-app ${orgId} <appId> ${i.installationId}`];
35
+ if (i.suspendedAt)
36
+ notes.push("WARNING: GitHub reports this installation as suspended; builds will fail until it is unsuspended. Run `github link` again afterwards to refresh it.");
37
+ if (i.repositorySelection === "all") {
38
+ notes.push("Note: the customer granted the App access to ALL repositories of this account. A build only ever receives a token for the one repository of its app, but any app of this org that is set to this installation can build any of them.");
39
+ }
40
+ return notes;
41
+ }
42
+ export function registerGithubCommands(program) {
43
+ const github = program
44
+ .command("github")
45
+ .description("Private GitHub repository access via the AppForge GitHub App: link an installation to a customer org and an app (platform admins only; see docs/github-app.md)");
46
+ github
47
+ .command("link <orgId> <installationId>")
48
+ .description("Verify a GitHub App installation with GitHub and link it to the customer org (the installation id is in the installation's URL on GitHub). One installation belongs to one org")
49
+ .action(async (orgId, rawId) => {
50
+ const installationId = parseInstallationIdArg(rawId);
51
+ if (installationId === null) {
52
+ console.error(`'${rawId}' is not an installation id: use the positive integer from github.com/settings/installations/<id> (or the organization's equivalent).`);
53
+ process.exit(1);
54
+ }
55
+ const { installation, created } = await client().linkGithubInstallation(orgId, installationId);
56
+ console.log(`${created ? "Linked" : "Refreshed"} installation ${formatInstallation(installation)}`);
57
+ for (const line of linkNotes(installation, orgId))
58
+ console.log(line);
59
+ });
60
+ github
61
+ .command("list <orgId>")
62
+ .description("Show the GitHub App installations linked to a customer org")
63
+ .action(async (orgId) => {
64
+ const { installations } = await client().listGithubInstallations(orgId);
65
+ if (installations.length === 0) {
66
+ console.log("No GitHub App installation is linked to this org.");
67
+ return;
68
+ }
69
+ for (const i of installations)
70
+ console.log(formatInstallation(i));
71
+ });
72
+ github
73
+ .command("unlink <orgId> <installationId>")
74
+ .description("Remove a link. The org's apps that used it go back to cloning without a token")
75
+ .action(async (orgId, rawId) => {
76
+ const installationId = parseInstallationIdArg(rawId);
77
+ if (installationId === null) {
78
+ console.error(`'${rawId}' is not an installation id.`);
79
+ process.exit(1);
80
+ }
81
+ const { unlinkedApps } = await client().unlinkGithubInstallation(orgId, installationId);
82
+ console.log(`Unlinked installation ${installationId}. ${unlinkedApps} app(s) of this org no longer use it.`);
83
+ });
84
+ github
85
+ .command("set-app <orgId> <appId> <installationId>")
86
+ .description("Make an app's builds clone with a token from the installation. Checks first with GitHub that the installation can issue a token for exactly the app's <owner>/<repo> (the URL must be https://github.com/<owner>/<repo>, optionally .git)")
87
+ .action(async (orgId, appId, rawId) => {
88
+ const installationId = parseInstallationIdArg(rawId);
89
+ if (installationId === null) {
90
+ console.error(`'${rawId}' is not an installation id.`);
91
+ process.exit(1);
92
+ }
93
+ await client().setAppGithubInstallation(orgId, appId, installationId);
94
+ console.log(`App ${appId} now builds with a GitHub App token from installation ${installationId}.`);
95
+ console.log("If the app's repository URL is changed later the link is removed again, and this command has to be run again.");
96
+ console.log(`Builds of this app are only given to Macs running agent ${MIN_CLONE_TOKEN_AGENT_VERSION} or newer; on an older Mac they wait in the queue.`);
97
+ });
98
+ github
99
+ .command("clear-app <orgId> <appId>")
100
+ .description("Stop using the GitHub App for an app: its builds clone without a token again (public repositories only)")
101
+ .action(async (orgId, appId) => {
102
+ await client().clearAppGithubInstallation(orgId, appId);
103
+ console.log(`App ${appId} no longer uses a GitHub App installation.`);
104
+ });
105
+ }
106
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/commands/github.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import "../test-support/home-sandbox.js";
2
+ //# sourceMappingURL=github.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.test.d.ts","sourceRoot":"","sources":["../../src/commands/github.test.ts"],"names":[],"mappings":"AACA,OAAO,iCAAiC,CAAC"}
@@ -0,0 +1,60 @@
1
+ // Must stay the FIRST import — see agents.test.ts.
2
+ import "../test-support/home-sandbox.js";
3
+ import { test } from "node:test";
4
+ import assert from "node:assert/strict";
5
+ import { Command } from "commander";
6
+ import { formatInstallation, linkNotes, parseInstallationIdArg, registerGithubCommands } from "./github.js";
7
+ const info = (over = {}) => ({
8
+ installationId: 987654,
9
+ orgId: "org-a",
10
+ accountLogin: "acme",
11
+ accountType: "Organization",
12
+ repositorySelection: "selected",
13
+ createdAt: "2026-10-12 10:00:00",
14
+ suspendedAt: null,
15
+ ...over,
16
+ });
17
+ test("parseInstallationIdArg accepts a positive integer and nothing else", () => {
18
+ assert.equal(parseInstallationIdArg("987654"), 987654);
19
+ assert.equal(parseInstallationIdArg("1"), 1);
20
+ for (const bad of ["", "0", "-1", "12.5", "1e3", "0x10", " 5", "5 ", "abc", "007", "99999999999999999"])
21
+ assert.equal(parseInstallationIdArg(bad), null, JSON.stringify(bad));
22
+ });
23
+ test("formatInstallation shows the account, what was granted and whether it is suspended", () => {
24
+ assert.match(formatInstallation(info()), /^987654 Organization acme selected repositories active linked 2026-10-12 10:00:00$/);
25
+ assert.match(formatInstallation(info({ repositorySelection: "all", accountType: "User", accountLogin: "me" })), /User me ALL repositories of the account/);
26
+ assert.match(formatInstallation(info({ suspendedAt: "2026-10-01T00:00:00Z" })), /SUSPENDED since 2026-10-01T00:00:00Z/);
27
+ });
28
+ test("linkNotes tells the operator the next step and warns about a suspended or all-repositories installation", () => {
29
+ const plain = linkNotes(info(), "org-a");
30
+ assert.equal(plain.length, 1);
31
+ assert.match(plain[0], /appforge-admin github set-app org-a <appId> 987654/);
32
+ const risky = linkNotes(info({ repositorySelection: "all", suspendedAt: "2026-10-01T00:00:00Z" }), "org-a").join("\n");
33
+ assert.match(risky, /suspended/);
34
+ assert.match(risky, /ALL repositories/);
35
+ assert.match(risky, /one repository of its app/);
36
+ });
37
+ test("the github command group registers link / list / unlink / set-app / clear-app, and a bad installation id exits 1 before any network call", async () => {
38
+ const program = new Command();
39
+ registerGithubCommands(program);
40
+ const group = program.commands.find((c) => c.name() === "github");
41
+ assert.deepEqual(group.commands.map((c) => c.name()).sort(), ["clear-app", "link", "list", "set-app", "unlink"]);
42
+ const origErr = console.error;
43
+ const origExit = process.exit;
44
+ const errors = [];
45
+ console.error = (m) => void errors.push(String(m));
46
+ process.exit = (code) => {
47
+ throw new Error(`exit ${code}`);
48
+ };
49
+ try {
50
+ await assert.rejects(group.parseAsync(["link", "org-a", "not-a-number"], { from: "user" }), /exit 1/);
51
+ await assert.rejects(group.parseAsync(["unlink", "org-a", "0"], { from: "user" }), /exit 1/);
52
+ await assert.rejects(group.parseAsync(["set-app", "org-a", "app-1", "three"], { from: "user" }), /exit 1/);
53
+ }
54
+ finally {
55
+ console.error = origErr;
56
+ process.exit = origExit;
57
+ }
58
+ assert.match(errors.join("\n"), /'not-a-number' is not an installation id/);
59
+ });
60
+ //# sourceMappingURL=github.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.test.js","sourceRoot":"","sources":["../../src/commands/github.test.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,6 +4,7 @@ import { apiErrorMessage } from "@appforge-ci/core";
4
4
  import { registerLoginCommand } from "./commands/login.js";
5
5
  import { registerAgentsCommands } from "./commands/agents.js";
6
6
  import { registerVpnHostsCommands } from "./commands/vpn-hosts.js";
7
+ import { registerGithubCommands } from "./commands/github.js";
7
8
  import { registerWarmCacheCommand } from "./commands/warm-cache.js";
8
9
  /**
9
10
  * appforge-admin — fleet management for the AppForge platform operator.
@@ -25,6 +26,7 @@ program
25
26
  registerLoginCommand(program);
26
27
  registerAgentsCommands(program);
27
28
  registerVpnHostsCommands(program);
29
+ registerGithubCommands(program);
28
30
  registerWarmCacheCommand(program);
29
31
  program.parseAsync(process.argv).catch((err) => {
30
32
  // Preserves the original "print whatever was thrown" fallback for a
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,uFAAuF,CAAC;KACpG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,oEAAoE;IACpE,gEAAgE;IAChE,2DAA2D;IAC3D,sEAAsE;IACtE,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,gBAAgB,CAAC;KACtB,WAAW,CAAC,uFAAuF,CAAC;KACpG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC7C,oEAAoE;IACpE,gEAAgE;IAChE,2DAA2D;IAC3D,sEAAsE;IACtE,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { VM_USER_NAME } from "@appforge-ci/agent/dist/lib/vm/vm-helper-script.js";
2
+ import { type BuildUserInstallDeps } from "./build-user.js";
3
+ /**
4
+ * `appforge-admin agents install-vm-helper`: the privileged half of per-build remote access (appforge-ci#901,
5
+ * docs/remote-access.md "Agent side", docs/manual-vm-validation.md). Run ON the Mac, by the operator, in their own terminal (every
6
+ * `sudo` below prompts there), once per Mac, after `install-vm-user` has made the helper account.
7
+ *
8
+ * What it puts in place, and why each piece exists:
9
+ *
10
+ * 1. /etc/appforge/vm-helper.sh, root-owned, mode 0500. The agent runs as an ordinary account, but a Tart macOS guest only starts
11
+ * inside the HELPER account's graphical session, and crossing from one account to the other takes root. This script is the
12
+ * one door: it accepts a small fixed list of subcommands (clone, run, exec, ip, stop, delete, list, set-password, install-key,
13
+ * remove-key, host-key), validates every VM name, image name and shared folder, and runs tart as the helper account. Its
14
+ * source and the rules it holds to are in infra/vms/vm-helper.sh.tmpl.
15
+ * 2. One sudoers line, appended to the EXISTING /etc/sudoers.d/appforge-agent (the other lines stay):
16
+ * <agent user> ALL=(root) NOPASSWD: /etc/appforge/vm-helper.sh *
17
+ * It names the one fixed, root-owned path, so the agent can run that script and nothing else as root. It is validated with
18
+ * `visudo -c` on a copy BEFORE it reaches the real file: a syntax error in sudoers can lock sudo out of the whole Mac.
19
+ * 3. Permission for the helper account to walk through the agent's home directory (`chmod +a "<vm user> allow search"`, the same
20
+ * narrow entry install-build-user gives the build user): the build's shared folders live in the jobs root under that home,
21
+ * and the VM, started by the helper account, has to reach them. "Search" lets it open a path it already knows without being
22
+ * able to list anything.
23
+ *
24
+ * It does NOT create the helper account (install-vm-user does), start anything, or install an image. It checks the first two exist
25
+ * and says what is missing. Idempotent: running it again rewrites the same script and adds no duplicate line.
26
+ *
27
+ * Every real-world action is behind the injectable deps (the same seam build-user.ts uses), so the decisions (which lines are
28
+ * written, what is refused, what the script says) are unit-tested without touching a real account, sudoers file or home directory.
29
+ * What can only be checked by hand, on a Mac, is in docs/manual-vm-validation.md.
30
+ */
31
+ export interface VmHelperInstallDeps extends BuildUserInstallDeps {
32
+ fileExists(path: string): boolean;
33
+ /** The home directory of `user` (the running user's own when it is the one asking about). */
34
+ homeOf(user: string): string;
35
+ }
36
+ export declare const realVmHelperInstallDeps: VmHelperInstallDeps;
37
+ /** The one sudoers line this installer needs. One function so the installer and its tests read the exact same text. */
38
+ export declare function requiredVmHelperSudoersLines(agentUser: string): {
39
+ helper: string;
40
+ };
41
+ export interface InstallVmHelperOptions {
42
+ vmUser?: string;
43
+ agentUser?: string;
44
+ jobsRoot?: string;
45
+ tartPath?: string;
46
+ }
47
+ export declare function installVmHelper(opts?: InstallVmHelperOptions, deps?: VmHelperInstallDeps): void;
48
+ export { VM_USER_NAME };
49
+ //# sourceMappingURL=vm-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-helper.d.ts","sourceRoot":"","sources":["../../src/lib/vm-helper.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,YAAY,EAAwB,MAAM,oDAAoD,CAAC;AACxH,OAAO,EAAkG,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5J;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,6FAA6F;IAC7F,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,uBAAuB,EAAE,mBAIrC,CAAC;AAEF,uHAAuH;AACvH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAElF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,IAAI,GAAE,sBAA2B,EAAE,IAAI,GAAE,mBAA6C,GAAG,IAAI,CAuC5H;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { existsSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { sep } from "node:path";
4
+ import { jobsRootDir } from "@appforge-ci/agent/dist/lib/job-paths.js";
5
+ import { DEFAULT_TART_PATH } from "@appforge-ci/agent/dist/lib/vm-inventory.js";
6
+ import { VM_HELPER_PATH, VM_USER_NAME, renderVmHelperScript } from "@appforge-ci/agent/dist/lib/vm/vm-helper-script.js";
7
+ import { APPFORGE_ETC_DIR, SUDOERS_FILE, ensureSudoersLines, realBuildUserInstallDeps, resolveAgentUser } from "./build-user.js";
8
+ export const realVmHelperInstallDeps = {
9
+ ...realBuildUserInstallDeps,
10
+ fileExists: (p) => existsSync(p),
11
+ homeOf: (user) => (user === realBuildUserInstallDeps.whoami() ? homedir() : `/Users/${user}`),
12
+ };
13
+ /** The one sudoers line this installer needs. One function so the installer and its tests read the exact same text. */
14
+ export function requiredVmHelperSudoersLines(agentUser) {
15
+ return { helper: `${agentUser} ALL=(root) NOPASSWD: ${VM_HELPER_PATH} *` };
16
+ }
17
+ export function installVmHelper(opts = {}, deps = realVmHelperInstallDeps) {
18
+ const vmUser = opts.vmUser ?? VM_USER_NAME;
19
+ const agentUser = resolveAgentUser(opts.agentUser, deps);
20
+ const jobsRoot = opts.jobsRoot ?? jobsRootDir();
21
+ const tartPath = opts.tartPath ?? DEFAULT_TART_PATH;
22
+ // Refuse before changing anything, and say what to do about it.
23
+ if (!deps.userExists(vmUser)) {
24
+ throw new Error(`the helper account '${vmUser}' does not exist on this Mac. Create it first: appforge-admin agents install-vm-user (see docs/fleet-management.md, "macOS guests need a graphical session").`);
25
+ }
26
+ if (!deps.fileExists(tartPath)) {
27
+ throw new Error(`no tart at ${tartPath}. Install it (brew install cirruslabs/cli/tart) or pass --tart-path <absolute path to tart>.`);
28
+ }
29
+ // Rendering validates every value that goes into the root script (no quote, space, $ or backtick), and throws before anything is written.
30
+ const script = renderVmHelperScript({ vmUser, jobsRoot, tartBin: tartPath });
31
+ const home = deps.homeOf(agentUser);
32
+ if (jobsRoot === home || jobsRoot.startsWith(home + sep)) {
33
+ deps.log(`\n==> Letting '${vmUser}' walk through ${home} to reach the build folders (search only: it cannot list or read anything else there)`);
34
+ deps.run("chmod", ["+a", `${vmUser} allow search`, home]);
35
+ }
36
+ else {
37
+ deps.log(`\n jobs root ${jobsRoot} is outside ${home}; make sure '${vmUser}' can traverse every directory above it (ls -led shows the entries)`);
38
+ }
39
+ if (!deps.etcDirExists())
40
+ deps.run("sudo", ["mkdir", "-m", "0755", APPFORGE_ETC_DIR]);
41
+ deps.log(`\n==> Installing the VM helper to ${VM_HELPER_PATH} (root-owned, 0500)`);
42
+ deps.writeRootOwnedFile(VM_HELPER_PATH, script, "0500");
43
+ ensureSudoersLines([requiredVmHelperSudoersLines(agentUser).helper], deps);
44
+ deps.log([
45
+ "",
46
+ `Done. '${agentUser}' can now run ${VM_HELPER_PATH} as root (and nothing else), and it starts Tart as '${vmUser}'.`,
47
+ `Next: make sure this Mac has at least one Xcode image (tart list should show appforge-xcode-*), then run \`appforge-agent doctor\`,`,
48
+ `whose remote-access-vm check verifies the helper, the sudoers line, the account, tart and an image.`,
49
+ `Then follow docs/manual-vm-validation.md to try a real remote-access build.`,
50
+ `(${SUDOERS_FILE} may also hold lines from install-build-user and bootstrap; this adds one and changes none.)`,
51
+ ].join("\n"));
52
+ }
53
+ export { VM_USER_NAME };
54
+ //# sourceMappingURL=vm-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-helper.js","sourceRoot":"","sources":["../../src/lib/vm-helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import "../test-support/home-sandbox.js";
2
+ //# sourceMappingURL=vm-helper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-helper.test.d.ts","sourceRoot":"","sources":["../../src/lib/vm-helper.test.ts"],"names":[],"mappings":"AAAA,OAAO,iCAAiC,CAAC"}
@@ -0,0 +1,102 @@
1
+ import "../test-support/home-sandbox.js";
2
+ import { test } from "node:test";
3
+ import assert from "node:assert/strict";
4
+ import { VM_HELPER_PATH } from "@appforge-ci/agent/dist/lib/vm/vm-helper-script.js";
5
+ import { SUDOERS_FILE } from "./build-user.js";
6
+ import { installVmHelper, requiredVmHelperSudoersLines } from "./vm-helper.js";
7
+ function fakeDeps(over = {}) {
8
+ const calls = [];
9
+ const writes = [];
10
+ const logs = [];
11
+ const validated = [];
12
+ const deps = {
13
+ userExists: (u) => u === "appforge-vm",
14
+ groupExists: () => false,
15
+ isGroupMember: () => false,
16
+ listUserUids: () => "",
17
+ listGroupGids: () => "",
18
+ etcDirExists: () => true,
19
+ readSudoers: () => "administrator ALL=(root) NOPASSWD: /etc/appforge/build-helper.sh *\n",
20
+ validateSudoers: (c) => void validated.push(c),
21
+ writeRootOwnedFile: (path, content, mode) => void writes.push({ path, content, mode }),
22
+ run: (cmd, args) => void calls.push({ cmd, args }),
23
+ whoami: () => "administrator",
24
+ sudoUser: () => null,
25
+ log: (l) => void logs.push(l),
26
+ fileExists: () => true,
27
+ homeOf: (u) => `/Users/${u}`,
28
+ ...over,
29
+ };
30
+ return { deps, calls, writes, logs, validated };
31
+ }
32
+ test("the sudoers line scopes the agent's account to the ONE root-owned helper path, as root, and nothing broader", () => {
33
+ const { helper } = requiredVmHelperSudoersLines("administrator");
34
+ assert.equal(helper, `administrator ALL=(root) NOPASSWD: ${VM_HELPER_PATH} *`);
35
+ assert.equal(VM_HELPER_PATH, "/etc/appforge/vm-helper.sh");
36
+ assert.ok(!helper.includes("ALL=(ALL)"));
37
+ assert.ok(!/NOPASSWD: ALL/.test(helper));
38
+ });
39
+ test("installs the root-owned script (0500), validates the new sudoers content with visudo before writing it, keeps the existing lines, and lets the helper account traverse the home", () => {
40
+ const { deps, calls, writes, validated } = fakeDeps();
41
+ installVmHelper({ jobsRoot: "/Users/administrator/appforge/jobs.noindex" }, deps);
42
+ const script = writes.find((w) => w.path === VM_HELPER_PATH);
43
+ assert.equal(script.mode, "0500");
44
+ assert.match(script.content, /^VM_USER="appforge-vm"$/m);
45
+ assert.match(script.content, /^JOBS_ROOT="\/Users\/administrator\/appforge\/jobs\.noindex"$/m);
46
+ assert.match(script.content, /^TART_BIN="\/opt\/homebrew\/bin\/tart"$/m);
47
+ assert.doesNotMatch(script.content, /@@[A-Z_]+@@/);
48
+ const sudoers = writes.find((w) => w.path === SUDOERS_FILE);
49
+ assert.equal(sudoers.mode, "0440");
50
+ assert.match(sudoers.content, /^administrator ALL=\(root\) NOPASSWD: \/etc\/appforge\/build-helper\.sh \*$/m, "the existing line stays");
51
+ assert.match(sudoers.content, /^administrator ALL=\(root\) NOPASSWD: \/etc\/appforge\/vm-helper\.sh \*$/m);
52
+ assert.equal(validated.length, 1);
53
+ assert.equal(validated[0], sudoers.content, "visudo saw exactly what was written");
54
+ assert.ok(writes.indexOf(sudoers) > writes.indexOf(script), "the helper exists before the rule that points at it");
55
+ assert.deepEqual(calls, [{ cmd: "chmod", args: ["+a", "appforge-vm allow search", "/Users/administrator"] }], "search-only on the home, nothing else");
56
+ });
57
+ test("running it again adds no second sudoers line and rewrites no sudoers file", () => {
58
+ const { deps, writes } = fakeDeps({ readSudoers: () => `administrator ALL=(root) NOPASSWD: ${VM_HELPER_PATH} *\n` });
59
+ installVmHelper({ jobsRoot: "/Users/administrator/appforge/jobs.noindex" }, deps);
60
+ assert.equal(writes.filter((w) => w.path === SUDOERS_FILE).length, 0);
61
+ assert.equal(writes.filter((w) => w.path === VM_HELPER_PATH).length, 1, "the script itself is refreshed (a new release may change it)");
62
+ });
63
+ test("a syntax error visudo finds stops the install before the real sudoers file is touched", () => {
64
+ const { deps, writes } = fakeDeps({
65
+ validateSudoers: () => {
66
+ throw new Error("visudo: syntax error");
67
+ },
68
+ });
69
+ assert.throws(() => installVmHelper({ jobsRoot: "/Users/administrator/appforge/jobs.noindex" }, deps), /syntax error/);
70
+ assert.equal(writes.filter((w) => w.path === SUDOERS_FILE).length, 0);
71
+ });
72
+ test("refuses, changing nothing, when the helper account or tart is missing, and tells the operator what to run", () => {
73
+ const a = fakeDeps({ userExists: () => false });
74
+ assert.throws(() => installVmHelper({}, a.deps), /install-vm-user/);
75
+ assert.deepEqual(a.writes, []);
76
+ assert.deepEqual(a.calls, []);
77
+ const b = fakeDeps({ fileExists: () => false });
78
+ assert.throws(() => installVmHelper({}, b.deps), /no tart at \/opt\/homebrew\/bin\/tart.*--tart-path/);
79
+ assert.deepEqual(b.writes, []);
80
+ });
81
+ test("refuses a value that could break out of the root script, before writing anything", () => {
82
+ const { deps, writes, calls } = fakeDeps();
83
+ assert.throws(() => installVmHelper({ jobsRoot: '/Users/x/jobs"; rm -rf / #' }, deps), /refusing to install the VM helper/);
84
+ assert.throws(() => installVmHelper({ vmUser: "evil user" }, fakeDeps({ userExists: () => true }).deps), /refusing to install the VM helper/);
85
+ assert.throws(() => installVmHelper({ tartPath: "/opt/tart;x" }, deps), /refusing to install the VM helper/);
86
+ assert.deepEqual(writes, []);
87
+ assert.deepEqual(calls, []);
88
+ });
89
+ test("under sudo the invoking user is the agent account, never root; a root shell must say which", () => {
90
+ const sudo = fakeDeps({ whoami: () => "root", sudoUser: () => "administrator" });
91
+ installVmHelper({ jobsRoot: "/Users/administrator/appforge/jobs.noindex" }, sudo.deps);
92
+ assert.match(sudo.writes.find((w) => w.path === SUDOERS_FILE).content, /^administrator ALL=\(root\) NOPASSWD: \/etc\/appforge\/vm-helper\.sh \*$/m);
93
+ assert.doesNotMatch(sudo.writes.find((w) => w.path === SUDOERS_FILE).content, /^root /m);
94
+ assert.throws(() => installVmHelper({}, fakeDeps({ whoami: () => "root", sudoUser: () => null }).deps), /--agent-user/);
95
+ });
96
+ test("a jobs root outside the agent's home gets no ACL on the home, and the operator is told to check the path", () => {
97
+ const { deps, calls, logs } = fakeDeps();
98
+ installVmHelper({ jobsRoot: "/Volumes/builds/jobs.noindex" }, deps);
99
+ assert.deepEqual(calls, []);
100
+ assert.ok(logs.some((l) => /outside \/Users\/administrator/.test(l)));
101
+ });
102
+ //# sourceMappingURL=vm-helper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vm-helper.test.js","sourceRoot":"","sources":["../../src/lib/vm-helper.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appforge-ci/admin-cli",
3
- "version": "0.3.17",
3
+ "version": "0.3.19",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -15,8 +15,8 @@
15
15
  "dependencies": {
16
16
  "chalk": "^5.3.0",
17
17
  "commander": "^12.1.0",
18
- "@appforge-ci/core": "0.3.17",
19
- "@appforge-ci/agent": "0.3.17"
18
+ "@appforge-ci/agent": "0.3.19",
19
+ "@appforge-ci/core": "0.3.19"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/node": "^20.16.5",