@aryaminus/controlkeel 0.3.2 → 0.3.5

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/README.md CHANGED
@@ -37,4 +37,14 @@ echo "//npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN_WITH_READ_PACKAGES" >>
37
37
  npm i -g @aryaminus/controlkeel --registry=https://npm.pkg.github.com
38
38
  ```
39
39
 
40
+ ## Security
41
+
42
+ This package uses a postinstall script to download the native ControlKeel binary from GitHub Releases. This is intentional and necessary for cross-platform distribution. For detailed information about security practices and how the postinstall script works, see [SECURITY.md](SECURITY.md).
43
+
44
+ To skip automatic binary download, set the environment variable:
45
+
46
+ ```bash
47
+ CONTROLKEEL_SKIP_DOWNLOAD=1 npm i -g @aryaminus/controlkeel
48
+ ```
49
+
40
50
  <!-- mcp-name: io.github.aryaminus/controlkeel -->
package/SECURITY.md ADDED
@@ -0,0 +1,63 @@
1
+ # Security Policy
2
+
3
+ ## Postinstall Script
4
+
5
+ This package uses a `postinstall` script to download the native ControlKeel binary from GitHub Releases. This is intentional and necessary for the following reasons:
6
+
7
+ ### Why the postinstall script exists
8
+
9
+ ControlKeel is a native CLI tool written in Rust/Elixir that needs to be distributed as platform-specific binaries. Rather than requiring users to manually download the correct binary for their platform, this npm package serves as a bootstrap installer that:
10
+
11
+ 1. Detects the user's platform (OS and architecture)
12
+ 2. Downloads the appropriate pre-compiled binary from GitHub Releases
13
+ 3. Makes it available as the `controlkeel` command
14
+
15
+ ### What the postinstall script does
16
+
17
+ The `postinstall` script (`lib/postinstall.js`) performs the following actions:
18
+
19
+ - Calls `ensureBinary()` to download the platform-specific binary
20
+ - Downloads from official GitHub Releases: `https://github.com/aryaminus/controlkeel/releases/latest`
21
+ - Verifies the download and places the binary in the appropriate location
22
+ - Can be skipped by setting the environment variable `CONTROLKEEL_SKIP_DOWNLOAD=1`
23
+
24
+ ### Security considerations
25
+
26
+ - **Source**: Binaries are downloaded exclusively from official GitHub Releases
27
+ - **Verification**: The download process uses GitHub's authenticated release endpoints
28
+ - **Transparency**: The source code for the bootstrap installer is fully visible in this repository
29
+ - **Opt-out**: Users can skip automatic download by setting `CONTROLKEEL_SKIP_DOWNLOAD=1`
30
+ - **No external dependencies**: The bootstrap installer has no runtime dependencies beyond Node.js built-ins
31
+
32
+ ### Manual verification
33
+
34
+ Users who prefer manual verification can:
35
+
36
+ 1. Set `CONTROLKEEL_SKIP_DOWNLOAD=1` to prevent automatic download
37
+ 2. Download the binary directly from [GitHub Releases](https://github.com/aryaminus/controlkeel/releases/latest)
38
+ 3. Verify the checksums provided in the release notes
39
+ 4. Place the binary in their PATH manually
40
+
41
+ ## Reporting Security Issues
42
+
43
+ If you discover a security vulnerability, please report it responsibly:
44
+
45
+ 1. Do not open a public issue
46
+ 2. Email security details to: [security contact to be added]
47
+ 3. Include steps to reproduce and expected impact
48
+ 4. Allow time for the issue to be investigated and fixed before disclosure
49
+
50
+ ## Supported Versions
51
+
52
+ Security updates are provided for the latest version of the package. Users are encouraged to keep their installation up to date.
53
+
54
+ ## Supply Chain Security
55
+
56
+ This package is designed with supply chain security in mind:
57
+
58
+ - **Minimal attack surface**: The bootstrap installer has no external dependencies
59
+ - **Reproducible builds**: Native binaries are built from source in CI/CD
60
+ - **Signed releases**: GitHub Releases provide cryptographic verification
61
+ - **Transparent source**: All installer code is open and auditable
62
+
63
+ For detailed information about the native binary build process and security practices, see the main repository's [security documentation](https://github.com/aryaminus/controlkeel/blob/main/SECURITY.md).
package/index.js ADDED
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * ControlKeel Bootstrap Installer
5
+ *
6
+ * This is a bootstrap package for the ControlKeel native CLI.
7
+ * The main entry point re-exports the binary functionality.
8
+ *
9
+ * For programmatic use, the package downloads and manages the native
10
+ * ControlKeel binary from GitHub Releases.
11
+ */
12
+
13
+ const { ensureBinary } = require("./lib/install");
14
+
15
+ /**
16
+ * Ensure the ControlKeel binary is downloaded and available.
17
+ * @param {Object} options - Options for binary download
18
+ * @param {boolean} options.forceDownload - Force re-download even if binary exists
19
+ * @returns {Promise<string>} Path to the downloaded binary
20
+ */
21
+ async function getBinaryPath(options = {}) {
22
+ return await ensureBinary(options);
23
+ }
24
+
25
+ /**
26
+ * Main entry point for when this package is required programmatically.
27
+ */
28
+ module.exports = {
29
+ getBinaryPath,
30
+ ensureBinary
31
+ };
32
+
33
+ // If run directly, execute the CLI
34
+ if (require.main === module) {
35
+ const { spawn } = require("node:child_process");
36
+
37
+ getBinaryPath({ forceDownload: false }).then((binaryPath) => {
38
+ const child = spawn(binaryPath, process.argv.slice(2), { stdio: "inherit" });
39
+
40
+ child.on("exit", (code, signal) => {
41
+ if (signal) {
42
+ process.kill(process.pid, signal);
43
+ return;
44
+ }
45
+ process.exit(code ?? 0);
46
+ });
47
+ }).catch((error) => {
48
+ console.error(error.message || error);
49
+ process.exit(1);
50
+ });
51
+ }
package/package.json CHANGED
@@ -1,8 +1,12 @@
1
1
  {
2
2
  "name": "@aryaminus/controlkeel",
3
- "version": "0.3.2",
4
- "description": "Bootstrap installer for the ControlKeel native CLI.",
3
+ "version": "0.3.5",
4
+ "description": "Bootstrap installer for the ControlKeel native CLI - a control plane for agent-generated software delivery.",
5
5
  "license": "Apache-2.0",
6
+ "author": {
7
+ "name": "aryaminus",
8
+ "url": "https://github.com/aryaminus"
9
+ },
6
10
  "repository": {
7
11
  "type": "git",
8
12
  "url": "git+https://github.com/aryaminus/controlkeel.git"
@@ -11,13 +15,30 @@
11
15
  "bugs": {
12
16
  "url": "https://github.com/aryaminus/controlkeel/issues"
13
17
  },
18
+ "keywords": [
19
+ "controlkeel",
20
+ "governance",
21
+ "agent",
22
+ "ai",
23
+ "cli",
24
+ "devops",
25
+ "security",
26
+ "validation",
27
+ "compliance",
28
+ "automation",
29
+ "mcp",
30
+ "model-context-protocol"
31
+ ],
32
+ "main": "index.js",
14
33
  "bin": {
15
34
  "controlkeel": "bin/controlkeel.js"
16
35
  },
17
36
  "files": [
18
37
  "bin",
19
38
  "lib",
39
+ "index.js",
20
40
  "README.md",
41
+ "SECURITY.md",
21
42
  "server.json"
22
43
  ],
23
44
  "scripts": {
package/server.json CHANGED
@@ -7,12 +7,12 @@
7
7
  "url": "https://github.com/aryaminus/controlkeel.git",
8
8
  "source": "github"
9
9
  },
10
- "version": "0.3.2",
10
+ "version": "0.3.5",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@aryaminus/controlkeel",
15
- "version": "0.3.2",
15
+ "version": "0.3.5",
16
16
  "runtimeHint": "npx",
17
17
  "transport": {
18
18
  "type": "stdio"