@aryaminus/controlkeel 0.3.4 → 0.3.6
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 +10 -0
- package/SECURITY.md +63 -0
- package/index.js +51 -0
- package/package.json +23 -2
- package/server.json +2 -2
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.
|
|
4
|
-
"description": "Bootstrap installer for the ControlKeel native CLI.",
|
|
3
|
+
"version": "0.3.6",
|
|
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.
|
|
10
|
+
"version": "0.3.6",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "@aryaminus/controlkeel",
|
|
15
|
-
"version": "0.3.
|
|
15
|
+
"version": "0.3.6",
|
|
16
16
|
"runtimeHint": "npx",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|