@trebired/git-host 2.2.0 → 3.0.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.
Files changed (37) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +102 -10
  3. package/bin/git-host-actions-runner-darwin-arm64 +0 -0
  4. package/bin/git-host-actions-runner-darwin-x64 +0 -0
  5. package/bin/git-host-actions-runner-linux-arm64-gnu +0 -0
  6. package/bin/git-host-actions-runner-linux-x64-gnu +0 -0
  7. package/dist/core/actions/environment.d.ts +9 -0
  8. package/dist/core/actions/environment.d.ts.map +1 -0
  9. package/dist/core/actions/environment.js +64 -0
  10. package/dist/core/actions/environment.js.map +1 -0
  11. package/dist/core/actions/local_runner.d.ts +5 -0
  12. package/dist/core/actions/local_runner.d.ts.map +1 -1
  13. package/dist/core/actions/local_runner.js +70 -18
  14. package/dist/core/actions/local_runner.js.map +1 -1
  15. package/dist/core/actions/node_runner.d.ts.map +1 -1
  16. package/dist/core/actions/node_runner.js +2 -1
  17. package/dist/core/actions/node_runner.js.map +1 -1
  18. package/dist/core/actions/redaction.d.ts +13 -2
  19. package/dist/core/actions/redaction.d.ts.map +1 -1
  20. package/dist/core/actions/redaction.js +20 -5
  21. package/dist/core/actions/redaction.js.map +1 -1
  22. package/dist/core/actions/sandbox.d.ts +4 -0
  23. package/dist/core/actions/sandbox.d.ts.map +1 -0
  24. package/dist/core/actions/sandbox.js +46 -0
  25. package/dist/core/actions/sandbox.js.map +1 -0
  26. package/dist/core/forge_actions.d.ts.map +1 -1
  27. package/dist/core/forge_actions.js +23 -3
  28. package/dist/core/forge_actions.js.map +1 -1
  29. package/dist/index.d.ts +2 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -1
  33. package/dist/types/forge/workflows.d.ts +30 -1
  34. package/dist/types/forge/workflows.d.ts.map +1 -1
  35. package/dist/types/index.d.ts +1 -1
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -4,6 +4,19 @@ All notable changes to `@trebired/git-host` will be documented here.
4
4
 
5
5
  This project follows semantic versioning once published.
6
6
 
7
+ ## 3.0.0
8
+
9
+ - **Security (breaking):** the Actions execution engine no longer spreads the embedding process's full `process.env` into workflow steps. Previously every step inherited the entire host environment, so any caller who could trigger a run could read (and echo) host process secrets, and those inherited values were not redacted from logs. Steps now run with a minimal, clean base env.
10
+ - Added a documented default passthrough allowlist needed for tooling to work — `PATH`, `HOME`, `LANG`, `LC_ALL`, `TZ`, `TERM` (plus the platform equivalents on Windows) — with everything else opt-in.
11
+ - Added `actions.environment` configuration: `passthrough` (additive allowlist of `process.env` keys), `baseEnv` (explicit key/value pairs), `sensitiveKeys` (key names whose resolved values are always masked), and `inheritProcessEnv` (explicit, warning-logged opt-in that reproduces the pre-3.0 full-inheritance behavior exactly).
12
+ - Extended output redaction so all values from the secrets map plus any `environment.sensitiveKeys` are masked in `step.output`/`job.output` event chunks, step output previews, and step summaries derived from step/action errors.
13
+ - Added off-by-default local-runner isolation hooks under `actions.localRunner`: `uid`/`gid` privilege drop (passed to `spawn` where supported), `execTimeoutMs` per-step wall-clock kill (SIGTERM → SIGKILL), and a `beforeSpawn(childSpec)` hook so callers can wrap the step shell in their own sandbox (bwrap/nsjail/container) without forking. Documented the local-runner trust boundary: it executes arbitrary code as the host user, so only trusted workflows should run on it.
14
+ - Added `createBubblewrapSandbox()`, a batteries-included `beforeSpawn` sandbox for Linux that wraps each step in `bwrap` with an isolated filesystem view (read-only system paths plus a writable job workspace), no network by default, and fresh pid/ipc/uts/user namespaces — configurable via `allowNetwork`, `roBind`, `bind`, `systemPaths`, and `bwrapPath`.
15
+ - Added a startup warning when the local runner would execute steps as root with no `localRunner.uid` drop and no `beforeSpawn` sandbox (workflow code would run as root on the host).
16
+ - Corrected the published package `license` metadata to `AGPL-3.0-only` to match the bundled `LICENSE`.
17
+
18
+ **Migration:** if a workflow relied on an inherited host env variable, add it to `actions.environment.passthrough` (or `actions.environment.baseEnv`), or set `actions.environment.inheritProcessEnv: true` to restore the previous behavior.
19
+
7
20
  ## 2.2.0
8
21
 
9
22
  - Added a GitHub-Actions-inspired workflow schema (`gha-subset-v1`) alongside the existing flat shell-step format: `on.workflow_dispatch.inputs`, `on.push.branches`/`tags`, top-level `env`/`permissions`/`concurrency`, and multiple `jobs` with `runs-on`, `needs`, `if`, `env`, and `strategy.matrix`, normalized and validated against an explicit supported subset. Old flat workflow files keep running unchanged.
package/README.md CHANGED
@@ -209,8 +209,8 @@ Supported subset:
209
209
  download time — the same asset shape and download path the release API already
210
210
  serves. GitHub Actions has no built-in equivalent for this (you'd reach for a
211
211
  marketplace action like `softprops/action-gh-release`); this is an intentional
212
- Operlorn-only addition, not an attempt to mirror GitHub syntax for something GitHub
213
- doesn't ship itself.
212
+ first-party addition to git-host's Actions, not an attempt to mirror GitHub syntax
213
+ for something GitHub doesn't ship itself.
214
214
 
215
215
  ```yaml
216
216
  - uses: actions/publish-release-asset@v1
@@ -364,20 +364,116 @@ const forge = createGitForge({
364
364
  });
365
365
  ```
366
366
 
367
- Runtime env merge order:
367
+ Runtime env merge order (later layers win):
368
368
 
369
- - base process env
369
+ - clean base env (see below — **not** the full host `process.env` by default)
370
370
  - static `actions.env`
371
371
  - host-provided execution env
372
372
  - workflow `env`
373
373
  - job `env`
374
374
  - step `env`
375
+ - host-provided secrets
375
376
 
376
- Secrets are available to expressions and the runtime env, but their values are redacted from:
377
+ #### Step environment isolation
378
+
379
+ By default the runtime does **not** spread the embedding process's `process.env`
380
+ into workflow steps, so host process secrets can never leak into (or be echoed
381
+ by) a workflow. Instead it builds a minimal base env from a small passthrough
382
+ allowlist needed for tooling to work: `PATH`, `HOME`, `LANG`, `LC_ALL`, `TZ`,
383
+ `TERM` (plus the platform equivalents on Windows). Everything else is opt-in via
384
+ `actions.environment`:
385
+
386
+ ```ts
387
+ const forge = createGitForge({
388
+ actions: {
389
+ environment: {
390
+ // Additive allowlist of extra process.env keys to expose to steps.
391
+ passthrough: ["NODE_EXTRA_CA_CERTS"],
392
+ // Explicit key/value pairs injected into the clean base env.
393
+ baseEnv: { CI: "true" },
394
+ // Key names whose resolved values are always masked from logs/output.
395
+ sensitiveKeys: ["DEPLOY_KEY"],
396
+ // Escape hatch: restore the pre-2.x behavior of inheriting the ENTIRE host
397
+ // process env. Explicit opt-in, logged with a warning. Not redacted.
398
+ inheritProcessEnv: false,
399
+ },
400
+ },
401
+ gitHost,
402
+ storage,
403
+ });
404
+ ```
405
+
406
+ > **Migration note (breaking):** before this release every step inherited the
407
+ > full host `process.env`. If a workflow relied on an inherited variable, add it
408
+ > to `environment.passthrough` (or `environment.baseEnv`), or set
409
+ > `environment.inheritProcessEnv: true` to reproduce the old behavior exactly.
410
+
411
+ Secrets are available to expressions and the runtime env, but their values —
412
+ along with the resolved values of any `environment.sensitiveKeys` — are redacted
413
+ from:
377
414
 
378
415
  - live socket output
379
- - persisted event payloads
416
+ - persisted event payloads (`step.output`/`job.output` chunks)
380
417
  - step output previews
418
+ - step summaries derived from step/action errors
419
+
420
+ #### Local runner trust boundary and isolation hooks
421
+
422
+ The local runner executes each step as `spawn(shell, ["-lc", command])` **as the
423
+ host user, unsandboxed by default**, with full filesystem reach; only the per-job
424
+ git workspace is scratch. **Only run untrusted workflows behind a sandbox.** If
425
+ the runtime detects it is running as root with no `localRunner.uid` drop and no
426
+ `beforeSpawn` sandbox, it logs a warning at startup.
427
+
428
+ For a batteries-included sandbox on Linux, pass `createBubblewrapSandbox()` as the
429
+ `beforeSpawn` hook. It wraps each step in [bubblewrap](https://github.com/containers/bubblewrap)
430
+ (`bwrap` must be on `PATH`) with an isolated filesystem view (read-only system
431
+ paths plus a writable job workspace), no network, and fresh pid/ipc/uts/user
432
+ namespaces:
433
+
434
+ ```ts
435
+ import { createBubblewrapSandbox, createGitForge } from "@trebired/git-host";
436
+
437
+ const forge = createGitForge({
438
+ actions: {
439
+ localRunner: {
440
+ beforeSpawn: createBubblewrapSandbox({
441
+ allowNetwork: false, // default: no network for steps
442
+ roBind: ["/opt/toolchain"], // extra read-only host paths
443
+ bind: [], // extra writable host paths
444
+ }),
445
+ },
446
+ },
447
+ gitHost,
448
+ storage,
449
+ });
450
+ ```
451
+
452
+ For finer control (or a different sandbox such as nsjail or a container),
453
+ `actions.localRunner` also exposes lower-level off-by-default knobs:
454
+
455
+ ```ts
456
+ const forge = createGitForge({
457
+ actions: {
458
+ localRunner: {
459
+ uid: 65534, // drop privileges (passed to spawn where supported)
460
+ gid: 65534,
461
+ execTimeoutMs: 600_000, // per-step wall-clock kill (SIGTERM -> SIGKILL)
462
+ // Wrap the shell in your own sandbox (bwrap/nsjail/container). Return a
463
+ // modified child spec, or nothing to keep the default.
464
+ beforeSpawn(child) {
465
+ return {
466
+ ...child,
467
+ command: "bwrap",
468
+ args: ["--unshare-all", "--", child.command, ...child.args],
469
+ };
470
+ },
471
+ },
472
+ },
473
+ gitHost,
474
+ storage,
475
+ });
476
+ ```
381
477
 
382
478
  ### Workflow APIs
383
479
 
@@ -536,7 +632,3 @@ Repository Actions workflow binaries are built in CI for:
536
632
  - Linux arm64 GNU
537
633
  - macOS x64
538
634
  - macOS arm64
539
-
540
- ## License
541
-
542
- MIT
@@ -0,0 +1,9 @@
1
+ import type { GitForgeActionsEnvironmentOptions, GitForgeLocalRunnerOptions } from "../../types.js";
2
+ declare function defaultPassthroughKeys(): string[];
3
+ declare function buildStepBaseEnv(policy: GitForgeActionsEnvironmentOptions | undefined): Record<string, string>;
4
+ declare function runnerNeedsPrivilegeWarning(input: {
5
+ localRunner: GitForgeLocalRunnerOptions | undefined;
6
+ uid: number | null;
7
+ }): boolean;
8
+ export { buildStepBaseEnv, defaultPassthroughKeys, runnerNeedsPrivilegeWarning, };
9
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../../src/core/actions/environment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAwBnG,iBAAS,sBAAsB,aAE9B;AAiBD,iBAAS,gBAAgB,CAAC,MAAM,EAAE,iCAAiC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAavG;AAID,iBAAS,2BAA2B,CAAC,KAAK,EAAE;IAC1C,WAAW,EAAE,0BAA0B,GAAG,SAAS,CAAC;IACpD,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB,WAMA;AAED,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAC5B,CAAC"}
@@ -0,0 +1,64 @@
1
+ // Minimal set of variables that generic tooling (shells, git, common CLIs) needs
2
+ // to function. Everything else is opt-in so host process secrets never leak into
3
+ // workflow steps by default.
4
+ const POSIX_PASSTHROUGH = ["PATH", "HOME", "LANG", "LC_ALL", "TZ", "TERM"];
5
+ const WINDOWS_PASSTHROUGH = [
6
+ "PATH",
7
+ "Path",
8
+ "PATHEXT",
9
+ "SystemRoot",
10
+ "SystemDrive",
11
+ "HOMEDRIVE",
12
+ "HOMEPATH",
13
+ "USERPROFILE",
14
+ "TEMP",
15
+ "TMP",
16
+ "COMSPEC",
17
+ "LANG",
18
+ "LC_ALL",
19
+ "TZ",
20
+ "TERM",
21
+ ];
22
+ function defaultPassthroughKeys() {
23
+ return process.platform === "win32" ? WINDOWS_PASSTHROUGH : POSIX_PASSTHROUGH;
24
+ }
25
+ function inheritKeys(keys) {
26
+ const inherited = {};
27
+ for (const key of keys) {
28
+ const value = process.env[key];
29
+ if (value !== undefined) {
30
+ inherited[key] = value;
31
+ }
32
+ }
33
+ return inherited;
34
+ }
35
+ // Builds the clean base environment for a workflow step. By default only the
36
+ // documented passthrough allowlist (plus any caller additions and explicit
37
+ // `baseEnv`) is exposed; `inheritProcessEnv` restores full `process.env`
38
+ // inheritance for callers that depend on the historical behavior.
39
+ function buildStepBaseEnv(policy) {
40
+ const baseEnv = { ...(policy?.baseEnv || {}) };
41
+ if (policy?.inheritProcessEnv) {
42
+ return {
43
+ ...process.env,
44
+ ...baseEnv,
45
+ };
46
+ }
47
+ const allow = new Set([...defaultPassthroughKeys(), ...(policy?.passthrough || [])]);
48
+ return {
49
+ ...inheritKeys(allow),
50
+ ...baseEnv,
51
+ };
52
+ }
53
+ // True when the local runner would execute steps as root without any privilege
54
+ // drop or sandbox, which means workflow code runs as root on the host.
55
+ function runnerNeedsPrivilegeWarning(input) {
56
+ if (input.uid !== 0)
57
+ return false;
58
+ const { localRunner } = input;
59
+ const dropsPrivileges = localRunner?.uid !== undefined && localRunner.uid !== 0;
60
+ const sandboxed = typeof localRunner?.beforeSpawn === "function";
61
+ return !dropsPrivileges && !sandboxed;
62
+ }
63
+ export { buildStepBaseEnv, defaultPassthroughKeys, runnerNeedsPrivilegeWarning, };
64
+ //# sourceMappingURL=environment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../src/core/actions/environment.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,iFAAiF;AACjF,6BAA6B;AAC7B,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,MAAM,mBAAmB,GAAG;IAC1B,MAAM;IACN,MAAM;IACN,SAAS;IACT,YAAY;IACZ,aAAa;IACb,WAAW;IACX,UAAU;IACV,aAAa;IACb,MAAM;IACN,KAAK;IACL,SAAS;IACT,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,MAAM;CACP,CAAC;AAEF,SAAS,sBAAsB;IAC7B,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,iBAAiB,CAAC;AAChF,CAAC;AAED,SAAS,WAAW,CAAC,IAAsB;IACzC,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,kEAAkE;AAClE,SAAS,gBAAgB,CAAC,MAAqD;IAC7E,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;IAC/C,IAAI,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC9B,OAAO;YACL,GAAI,OAAO,CAAC,GAA8B;YAC1C,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,sBAAsB,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO;QACL,GAAG,WAAW,CAAC,KAAK,CAAC;QACrB,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,uEAAuE;AACvE,SAAS,2BAA2B,CAAC,KAGpC;IACC,IAAI,KAAK,CAAC,GAAG,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,eAAe,GAAG,WAAW,EAAE,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,OAAO,WAAW,EAAE,WAAW,KAAK,UAAU,CAAC;IACjE,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC;AACxC,CAAC;AAED,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,2BAA2B,GAC5B,CAAC"}
@@ -1,13 +1,18 @@
1
1
  import { type ChildProcess } from "node:child_process";
2
+ import type { GitForgeLocalRunnerOptions } from "../../types.js";
2
3
  type RunShellCommandInput = {
4
+ beforeSpawn?: GitForgeLocalRunnerOptions["beforeSpawn"];
3
5
  command: string;
4
6
  cwd: string;
5
7
  env: NodeJS.ProcessEnv;
8
+ execTimeoutMs?: number;
9
+ gid?: number;
6
10
  heartbeatIntervalMs: number;
7
11
  onHeartbeat: () => void | Promise<void>;
8
12
  onOutput: (stream: "stderr" | "stdout", chunk: string) => void | Promise<void>;
9
13
  onSpawn?: (child: ChildProcess | null) => void;
10
14
  shell: string;
15
+ uid?: number;
11
16
  };
12
17
  type RunShellCommandResult = {
13
18
  exitCode: number;
@@ -1 +1 @@
1
- {"version":3,"file":"local_runner.d.ts","sourceRoot":"","sources":["../../../src/core/actions/local_runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAM9D,KAAK,oBAAoB,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AASF,iBAAe,uBAAuB,CAAC,KAAK,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,iBA0BA;AAED,iBAAe,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqC1F;AA4CD,iBAAe,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM;;;;GAG/D;AAED,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"local_runner.d.ts","sourceRoot":"","sources":["../../../src/core/actions/local_runner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,YAAY,EAAqB,MAAM,oBAAoB,CAAC;AAIjF,OAAO,KAAK,EAAgC,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE9F,KAAK,oBAAoB,GAAG;IAC1B,WAAW,CAAC,EAAE,0BAA0B,CAAC,aAAa,CAAC,CAAC;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAgEF,iBAAe,uBAAuB,CAAC,KAAK,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,iBA0BA;AASD,iBAAe,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA4B1F;AA4CD,iBAAe,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM;;;;GAG/D;AAED,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,YAAY,GACb,CAAC"}
@@ -4,10 +4,62 @@ import { spawn } from "node:child_process";
4
4
  import { GitHostError } from "../../errors.js";
5
5
  import { runGit } from "../run_git.js";
6
6
  const OUTPUT_PREVIEW_LIMIT = 4000;
7
+ // Grace period between the SIGTERM and the follow-up SIGKILL for timed-out steps.
8
+ const TIMEOUT_SIGKILL_GRACE_MS = 5000;
7
9
  function appendPreview(current, chunk) {
8
10
  const next = `${current}${chunk}`;
9
11
  return next.length <= OUTPUT_PREVIEW_LIMIT ? next : next.slice(-OUTPUT_PREVIEW_LIMIT);
10
12
  }
13
+ // Builds the concrete process to spawn for a step and lets callers wrap it (for
14
+ // example with a sandbox such as bwrap/nsjail) via the `beforeSpawn` hook.
15
+ async function resolveChildSpec(input) {
16
+ const base = {
17
+ args: ["-lc", input.command],
18
+ command: input.shell,
19
+ cwd: input.cwd,
20
+ env: input.env,
21
+ ...(input.gid === undefined ? {} : { gid: input.gid }),
22
+ ...(input.uid === undefined ? {} : { uid: input.uid }),
23
+ };
24
+ const next = input.beforeSpawn ? await input.beforeSpawn(base) : undefined;
25
+ return next || base;
26
+ }
27
+ function spawnChildSpec(spec) {
28
+ const options = {
29
+ cwd: spec.cwd,
30
+ env: spec.env,
31
+ stdio: ["ignore", "pipe", "pipe"],
32
+ ...(spec.gid === undefined ? {} : { gid: spec.gid }),
33
+ ...(spec.uid === undefined ? {} : { uid: spec.uid }),
34
+ };
35
+ return spawn(spec.command, spec.args, options);
36
+ }
37
+ // Escalates a per-step wall-clock timeout from SIGTERM to SIGKILL. Returns a
38
+ // disposer that cancels the pending signals once the child settles.
39
+ function attachExecTimeout(child, execTimeoutMs) {
40
+ if (!execTimeoutMs || execTimeoutMs <= 0)
41
+ return () => { };
42
+ const term = setTimeout(() => child.kill("SIGTERM"), execTimeoutMs);
43
+ const kill = setTimeout(() => child.kill("SIGKILL"), execTimeoutMs + TIMEOUT_SIGKILL_GRACE_MS);
44
+ term.unref?.();
45
+ kill.unref?.();
46
+ return () => {
47
+ clearTimeout(term);
48
+ clearTimeout(kill);
49
+ };
50
+ }
51
+ function wireChildOutput(child, input, preview) {
52
+ child.stdout?.setEncoding("utf8");
53
+ child.stdout?.on("data", (chunk) => {
54
+ preview.value = appendPreview(preview.value, chunk);
55
+ void input.onOutput("stdout", chunk);
56
+ });
57
+ child.stderr?.setEncoding("utf8");
58
+ child.stderr?.on("data", (chunk) => {
59
+ preview.value = appendPreview(preview.value, chunk);
60
+ void input.onOutput("stderr", chunk);
61
+ });
62
+ }
11
63
  async function materializeJobWorkspace(input) {
12
64
  fs.rmSync(input.workspacePath, { force: true, recursive: true });
13
65
  fs.mkdirSync(path.dirname(input.workspacePath), { recursive: true });
@@ -35,42 +87,42 @@ async function materializeJobWorkspace(input) {
35
87
  });
36
88
  }
37
89
  }
90
+ function resolveExitCode(code, signal) {
91
+ if (typeof code === "number")
92
+ return code;
93
+ if (signal === "SIGKILL")
94
+ return 137;
95
+ if (signal === "SIGTERM" || signal === "SIGINT")
96
+ return 130;
97
+ return 1;
98
+ }
38
99
  async function runShellCommand(input) {
39
- let outputPreview = "";
100
+ const preview = { value: "" };
101
+ const spec = await resolveChildSpec(input);
40
102
  const exitCode = await new Promise((resolve, reject) => {
41
- const child = spawn(input.shell, ["-lc", input.command], {
42
- cwd: input.cwd,
43
- env: input.env,
44
- stdio: ["ignore", "pipe", "pipe"],
45
- });
103
+ const child = spawnChildSpec(spec);
46
104
  input.onSpawn?.(child);
47
105
  const heartbeat = setInterval(() => {
48
106
  void input.onHeartbeat();
49
107
  }, Math.max(250, input.heartbeatIntervalMs));
50
- child.stdout?.setEncoding("utf8");
51
- child.stdout?.on("data", (chunk) => {
52
- outputPreview = appendPreview(outputPreview, chunk);
53
- void input.onOutput("stdout", chunk);
54
- });
55
- child.stderr?.setEncoding("utf8");
56
- child.stderr?.on("data", (chunk) => {
57
- outputPreview = appendPreview(outputPreview, chunk);
58
- void input.onOutput("stderr", chunk);
59
- });
108
+ const disposeTimeout = attachExecTimeout(child, input.execTimeoutMs);
109
+ wireChildOutput(child, input, preview);
60
110
  child.on("error", (error) => {
61
111
  clearInterval(heartbeat);
112
+ disposeTimeout();
62
113
  input.onSpawn?.(null);
63
114
  reject(error);
64
115
  });
65
116
  child.on("close", (code, signal) => {
66
117
  clearInterval(heartbeat);
118
+ disposeTimeout();
67
119
  input.onSpawn?.(null);
68
- resolve(typeof code === "number" ? code : (signal === "SIGTERM" || signal === "SIGINT" ? 130 : 1));
120
+ resolve(resolveExitCode(code, signal));
69
121
  });
70
122
  });
71
123
  return {
72
124
  exitCode,
73
- outputPreview,
125
+ outputPreview: preview.value,
74
126
  };
75
127
  }
76
128
  async function assertBinaryAvailable(command, cwd) {
@@ -1 +1 @@
1
- {"version":3,"file":"local_runner.js","sourceRoot":"","sources":["../../../src/core/actions/local_runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local_runner.js","sourceRoot":"","sources":["../../../src/core/actions/local_runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAwC,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAuBvC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,kFAAkF;AAClF,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAEtC,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa;IACnD,MAAM,IAAI,GAAG,GAAG,OAAO,GAAG,KAAK,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC;AACxF,CAAC;AAED,gFAAgF;AAChF,2EAA2E;AAC3E,KAAK,UAAU,gBAAgB,CAAC,KAA2B;IACzD,MAAM,IAAI,GAAiC;QACzC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QAC5B,OAAO,EAAE,KAAK,CAAC,KAAK;QACpB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,GAAG,EAAE,KAAK,CAAC,GAA6B;QACxC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;KACvD,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,OAAO,IAAI,IAAI,IAAI,CAAC;AACtB,CAAC;AAED,SAAS,cAAc,CAAC,IAAkC;IACxD,MAAM,OAAO,GAAiB;QAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;KACrD,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,6EAA6E;AAC7E,oEAAoE;AACpE,SAAS,iBAAiB,CAAC,KAAmB,EAAE,aAAiC;IAC/E,IAAI,CAAC,aAAa,IAAI,aAAa,IAAI,CAAC;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,wBAAwB,CAAC,CAAC;IAC/F,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACf,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IACf,OAAO,GAAG,EAAE;QACV,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,YAAY,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB,EAAE,KAA2B,EAAE,OAA0B;IACnG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,KAItC;IACC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE;QAC3G,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;KACvC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,uDAAuD,EAAE;YAC7G,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;QACxE,GAAG,EAAE,KAAK,CAAC,aAAa;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,2CAA2C,EAAE;YACjG,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,cAAc;YACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAmB,EAAE,MAA6B;IACzE,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC5D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAA2B;IACxD,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC7C,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACrE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACvC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,cAAc,EAAE,CAAC;YACjB,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,cAAc,EAAE,CAAC;YACjB,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO;QACL,QAAQ;QACR,aAAa,EAAE,OAAO,CAAC,KAAK;KAC7B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAe,EAAE,GAAW;IAC/D,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,KAAK,GAAG,CAAC;IACT,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,OAAO,EAAE,CAAC,EAAE;QAC5D,GAAG;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACjD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,YAAY,CAAC,6BAA6B,EAAE,qBAAqB,OAAO,yCAAyC,EAAE;YAC3H,OAAO;SACR,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,GAAW;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;QAC5C,GAAG;QACH,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACzC,MAAM,IAAI,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACrD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IACH,OAAO;QACL,QAAQ;QACR,MAAM;QACN,MAAM;KACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAuB,EAAE,GAAW;IAC9D,MAAM,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1C,OAAO,MAAM,iBAAiB,CAAC,GAAG,OAAO,YAAY,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,YAAY,GACb,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"node_runner.d.ts","sourceRoot":"","sources":["../../../src/core/actions/node_runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,sBAAsB,EAEtB,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AA6LpB,iBAAS,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,sBAAsB,CAgDnF;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"node_runner.d.ts","sourceRoot":"","sources":["../../../src/core/actions/node_runner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,sBAAsB,EAEtB,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AA6LpB,iBAAS,iBAAiB,CAAC,KAAK,EAAE,yBAAyB,GAAG,sBAAsB,CAgDnF;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { text } from "../../utils/text.js";
3
+ import { buildStepBaseEnv } from "./environment.js";
3
4
  import { appendPreview, normalizeRunnerInput } from "./runner/protocol.js";
4
5
  import { materializeWorkspace } from "./workspace.js";
5
6
  function createRunnerState() {
@@ -10,7 +11,7 @@ function createRunnerState() {
10
11
  }
11
12
  function buildStepEnv(input, step) {
12
13
  return {
13
- ...process.env,
14
+ ...buildStepBaseEnv(input.actions?.environment),
14
15
  ...(input.actions?.env || {}),
15
16
  ...(step.env || {}),
16
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"node_runner.js","sourceRoot":"","sources":["../../../src/core/actions/node_runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node_runner.js","sourceRoot":"","sources":["../../../src/core/actions/node_runner.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,16 @@
1
1
  import type { CreateGitForgeActionsOptions, GitForgeWorkflowRun, GitForgeWorkflowRunStep } from "../../types.js";
2
+ declare function collectSensitiveValues(input: {
3
+ env?: Record<string, string>;
4
+ secrets?: Record<string, string>;
5
+ sensitiveKeys?: string[];
6
+ }): string[];
2
7
  declare function redactSecrets(input: string, secrets: string[]): string;
3
- declare function createRunRedactor(actions: CreateGitForgeActionsOptions | undefined, run: GitForgeWorkflowRun, step: GitForgeWorkflowRunStep, secrets: Record<string, string> | undefined): (chunk: string, stream?: "stderr" | "stdout") => Promise<string>;
4
- export { createRunRedactor, redactSecrets, };
8
+ declare function createRunRedactor(input: {
9
+ actions: CreateGitForgeActionsOptions | undefined;
10
+ env?: Record<string, string>;
11
+ run: GitForgeWorkflowRun;
12
+ secrets: Record<string, string> | undefined;
13
+ step: GitForgeWorkflowRunStep;
14
+ }): (chunk: string, stream?: "stderr" | "stdout") => Promise<string>;
15
+ export { collectSensitiveValues, createRunRedactor, redactSecrets, };
5
16
  //# sourceMappingURL=redaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../src/core/actions/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAOhH,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAMtD;AAED,iBAAS,iBAAiB,CACxB,OAAO,EAAE,4BAA4B,GAAG,SAAS,EACjD,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,uBAAuB,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,IAGV,OAAO,MAAM,EAAE,SAAQ,QAAQ,GAAG,QAAmB,qBAYvF;AAED,OAAO,EACL,iBAAiB,EACjB,aAAa,GACd,CAAC"}
1
+ {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../src/core/actions/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAUhH,iBAAS,sBAAsB,CAAC,KAAK,EAAE;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B,YAMA;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAMtD;AAED,iBAAS,iBAAiB,CAAC,KAAK,EAAE;IAChC,OAAO,EAAE,4BAA4B,GAAG,SAAS,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,EAAE,mBAAmB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5C,IAAI,EAAE,uBAAuB,CAAC;CAC/B,IAOkC,OAAO,MAAM,EAAE,SAAQ,QAAQ,GAAG,QAAmB,qBAYvF;AAED,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,CAAC"}
@@ -1,7 +1,17 @@
1
- function sanitizeSecretValues(secrets) {
2
- return Array.from(new Set(Object.values(secrets || {}).filter(Boolean)))
1
+ function sanitizeSecretValues(values) {
2
+ return Array.from(new Set([...values].filter((value) => Boolean(value))))
3
3
  .sort((left, right) => right.length - left.length);
4
4
  }
5
+ // Gathers every value that must be masked from streamed and persisted output:
6
+ // all values in the secrets map plus, for any caller-declared sensitive key, the
7
+ // resolved value from secrets and from the step environment.
8
+ function collectSensitiveValues(input) {
9
+ const values = [...Object.values(input.secrets || {})];
10
+ for (const key of input.sensitiveKeys || []) {
11
+ values.push(input.secrets?.[key], input.env?.[key]);
12
+ }
13
+ return sanitizeSecretValues(values);
14
+ }
5
15
  function redactSecrets(input, secrets) {
6
16
  let next = input;
7
17
  for (const secret of secrets) {
@@ -9,8 +19,13 @@ function redactSecrets(input, secrets) {
9
19
  }
10
20
  return next;
11
21
  }
12
- function createRunRedactor(actions, run, step, secrets) {
13
- const secretValues = sanitizeSecretValues(secrets);
22
+ function createRunRedactor(input) {
23
+ const { actions, run, step } = input;
24
+ const secretValues = collectSensitiveValues({
25
+ env: input.env,
26
+ secrets: input.secrets,
27
+ sensitiveKeys: actions?.environment?.sensitiveKeys,
28
+ });
14
29
  return async function redactText(chunk, stream = "stdout") {
15
30
  let next = redactSecrets(String(chunk || ""), secretValues);
16
31
  if (actions?.redactOutput) {
@@ -24,5 +39,5 @@ function createRunRedactor(actions, run, step, secrets) {
24
39
  return next;
25
40
  };
26
41
  }
27
- export { createRunRedactor, redactSecrets, };
42
+ export { collectSensitiveValues, createRunRedactor, redactSecrets, };
28
43
  //# sourceMappingURL=redaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../../src/core/actions/redaction.ts"],"names":[],"mappings":"AAEA,SAAS,oBAAoB,CAAC,OAA2C;IACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SACrE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,OAAiB;IACrD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,OAAiD,EACjD,GAAwB,EACxB,IAA6B,EAC7B,OAA2C;IAE3C,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,SAA8B,QAAQ;QACpF,IAAI,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;gBAChC,KAAK,EAAE,IAAI;gBACX,GAAG;gBACH,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EACL,iBAAiB,EACjB,aAAa,GACd,CAAC"}
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../../src/core/actions/redaction.ts"],"names":[],"mappings":"AAEA,SAAS,oBAAoB,CAAC,MAAoC;IAChE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACvF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,iFAAiF;AACjF,6DAA6D;AAC7D,SAAS,sBAAsB,CAAC,KAI/B;IACC,MAAM,MAAM,GAA8B,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAClF,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,OAAiB;IACrD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,KAM1B;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,YAAY,GAAG,sBAAsB,CAAC;QAC1C,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa;KACnD,CAAC,CAAC;IACH,OAAO,KAAK,UAAU,UAAU,CAAC,KAAa,EAAE,SAA8B,QAAQ;QACpF,IAAI,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;QAC5D,IAAI,OAAO,EAAE,YAAY,EAAE,CAAC;YAC1B,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;gBAChC,KAAK,EAAE,IAAI;gBACX,GAAG;gBACH,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GitForgeBubblewrapSandboxOptions, GitForgeLocalRunnerChildSpec } from "../../types.js";
2
+ declare function createBubblewrapSandbox(options?: GitForgeBubblewrapSandboxOptions): (child: GitForgeLocalRunnerChildSpec) => GitForgeLocalRunnerChildSpec;
3
+ export { createBubblewrapSandbox, };
4
+ //# sourceMappingURL=sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../../src/core/actions/sandbox.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gCAAgC,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAuCpG,iBAAS,uBAAuB,CAAC,OAAO,GAAE,gCAAqC,IAEjD,OAAO,4BAA4B,KAAG,4BAA4B,CAO/F;AAED,OAAO,EACL,uBAAuB,GACxB,CAAC"}