@firedrill-run/ci-client 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/NOTICE.md ADDED
@@ -0,0 +1,15 @@
1
+ # Distribution notices
2
+
3
+ The Firedrill CI client wrapper and platform-authored orchestration are proprietary
4
+ to Reload Tech Inc. This package does not grant a source redistribution license
5
+ for those components and imposes no local license-key execution check.
6
+
7
+ Bundled historical Firedrill engine contributions retain their Apache-2.0 license.
8
+ They are limited to compiler, schema, target invocation and capture support; no
9
+ world kernel, state store or server is distributed. Third-party modules retain
10
+ their original licenses. Complete package license and NOTICE files are included
11
+ under `dist/licenses/`; inline license notices are preserved in the bundle.
12
+
13
+ `dist/distribution.json` records the reviewed emitted module paths and the source
14
+ revision used to build the client. It is a dependency-boundary receipt, not a
15
+ claim that npm can publicly verify a private source repository.
package/README.md ADDED
@@ -0,0 +1,42 @@
1
+ # Firedrill CI client
2
+
3
+ Install on a Node.js 24 runner with `npm install --save-dev @firedrill-run/cloud @firedrill-run/ci-client`.
4
+ Run `npx firedrill ci --help` (or `npx firedrill-ci --help`). This package is an
5
+ authenticated client, not a standalone world runtime. Your own agent command
6
+ runs in a separate process on your runner.
7
+
8
+ ```sh
9
+ firedrill ci run --auth github \
10
+ --project prj_... --environment env_... --repository-binding repo_... \
11
+ --revision "$CHECKED_OUT_SHA" \
12
+ --agent-command python --agent-arguments '["test/firedrill_agent.py"]'
13
+ ```
14
+
15
+ GitHub jobs require `id-token: write` and a configured Firedrill repository
16
+ binding. Check out the exact base/head revision for a pull request, never its
17
+ synthetic merge commit. Other triggers run their exact revision. OIDC exchange
18
+ and the managed service retain repository, project and invocation authorization.
19
+
20
+ Other runners can use `--auth token` with a service credential supplied through
21
+ `FIREDRILL_CREDENTIAL`, plus explicit `--runner-id` and `--idempotency-scope`.
22
+ Keep the same scope and exact arguments after uncertain network outcomes. This
23
+ does not create a repository connection, approve Tools, or invent missing builds.
24
+
25
+ An explicit `--agent-command` is required even when source declares a module,
26
+ command or HTTP target. The source's target identity, protocol bindings and
27
+ timeout remain authoritative; only its launcher is replaced by your selected
28
+ subprocess. The command receives invocation JSON on stdin and scoped world
29
+ bindings in its environment, writes one JSON value to stdout, and logs to stderr.
30
+ No shell is used. GitHub, OIDC, control and dynamic-loader variables are stripped;
31
+ model credentials remain caller-owned. File/capture content is caller-provided
32
+ and must be redacted before collection. This is not an OS sandbox.
33
+
34
+ Exit 0 means the service's returned gate allows the suite, 1 blocks it, and 2
35
+ means setup failed. JSON, JUnit and terminal reports remain under `.firedrill/ci`.
36
+ Capture is off unless explicitly selected. `--capture-logs always` (or
37
+ `retain-on-failure`) captures subprocess stderr through the canonical capture
38
+ manager. The screenshots/video/files options are retention policies, not
39
+ automatic browser recording or a subprocess file-submission protocol; use the
40
+ SDK's explicit capture callback when that integration is needed.
41
+ This client does not run a local world
42
+ or require access to the private source repository or a private GitHub Action.
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import { runCiCli } from "./client-cli.js";
3
+ const controller = new AbortController();
4
+ let signalExitCode;
5
+ const interrupt = () => {
6
+ signalExitCode = 130;
7
+ controller.abort();
8
+ };
9
+ const terminate = () => {
10
+ signalExitCode = 143;
11
+ controller.abort();
12
+ };
13
+ process.once("SIGINT", interrupt);
14
+ process.once("SIGTERM", terminate);
15
+ try {
16
+ process.exitCode = await runCiCli(process.argv.slice(2), {
17
+ cwd: process.cwd(),
18
+ environment: process.env,
19
+ stdout: process.stdout,
20
+ stderr: process.stderr,
21
+ signal: controller.signal
22
+ });
23
+ } finally {
24
+ if (signalExitCode !== void 0) process.exitCode = signalExitCode;
25
+ process.removeListener("SIGINT", interrupt);
26
+ process.removeListener("SIGTERM", terminate);
27
+ }