@buda-ai/connector 0.1.34 → 0.1.35
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/agent-templates/scripts/tool-oom-priority.sh +19 -0
- package/dist/bootstrap.cjs +96 -0
- package/dist/cli.js +5450 -6020
- package/package.json +10 -10
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Sourced through BASH_ENV for Pi bash tool processes. Raising the score is
|
|
4
|
+
# permitted without CAP_SYS_RESOURCE and is inherited by every child process.
|
|
5
|
+
case "${BUDA_TOOL_OOM_SCORE_ADJ:-900}" in
|
|
6
|
+
'' | *[!0-9]*)
|
|
7
|
+
_buda_tool_oom_score=900
|
|
8
|
+
;;
|
|
9
|
+
*)
|
|
10
|
+
_buda_tool_oom_score="${BUDA_TOOL_OOM_SCORE_ADJ:-900}"
|
|
11
|
+
;;
|
|
12
|
+
esac
|
|
13
|
+
|
|
14
|
+
if [ "$_buda_tool_oom_score" -gt 1000 ]; then
|
|
15
|
+
_buda_tool_oom_score=1000
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
printf '%s\n' "$_buda_tool_oom_score" >"/proc/$$/oom_score_adj" 2>/dev/null || true
|
|
19
|
+
unset _buda_tool_oom_score
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { readFileSync } = require("fs");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
|
|
6
|
+
const PACKAGE_JSON_PATH = path.join(__dirname, "..", "package.json");
|
|
7
|
+
const NODE_DOWNLOAD_URL = "https://nodejs.org/en/download";
|
|
8
|
+
|
|
9
|
+
function parseVersion(value) {
|
|
10
|
+
const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(value);
|
|
11
|
+
if (!match) throw new Error(`Invalid Node.js version: ${value}`);
|
|
12
|
+
return match.slice(1).map(Number);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function parseMinimumVersion(requirement) {
|
|
16
|
+
const match = /^>=\s*(\d+\.\d+\.\d+)$/.exec(requirement);
|
|
17
|
+
if (!match) {
|
|
18
|
+
throw new Error(
|
|
19
|
+
`Unsupported package.json engines.node requirement: ${JSON.stringify(requirement)}`,
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
return match[1];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function isVersionAtLeast(detected, required) {
|
|
26
|
+
const detectedParts = parseVersion(detected);
|
|
27
|
+
const requiredParts = parseVersion(required);
|
|
28
|
+
for (let index = 0; index < requiredParts.length; index += 1) {
|
|
29
|
+
if (detectedParts[index] > requiredParts[index]) return true;
|
|
30
|
+
if (detectedParts[index] < requiredParts[index]) return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function readNodeRequirement(readPackageJson = readFileSync) {
|
|
36
|
+
const packageJson = JSON.parse(readPackageJson(PACKAGE_JSON_PATH, "utf8"));
|
|
37
|
+
if (
|
|
38
|
+
typeof packageJson !== "object" ||
|
|
39
|
+
packageJson === null ||
|
|
40
|
+
typeof packageJson.engines !== "object" ||
|
|
41
|
+
packageJson.engines === null ||
|
|
42
|
+
typeof packageJson.engines.node !== "string"
|
|
43
|
+
) {
|
|
44
|
+
throw new Error("package.json engines.node must be configured");
|
|
45
|
+
}
|
|
46
|
+
return packageJson.engines.node;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function unsupportedNodeMessage(detected, requirement) {
|
|
50
|
+
return [
|
|
51
|
+
"Buda AI Connector requires a newer version of Node.js.",
|
|
52
|
+
"",
|
|
53
|
+
`Detected: Node.js v${detected}`,
|
|
54
|
+
`Required: Node.js ${requirement}`,
|
|
55
|
+
"Recommended: Node.js 24 LTS",
|
|
56
|
+
"",
|
|
57
|
+
`Upgrade Node.js: ${NODE_DOWNLOAD_URL}`,
|
|
58
|
+
"After upgrading, run your Buda Connector command again.",
|
|
59
|
+
"",
|
|
60
|
+
].join("\n");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async function runBootstrap(options = {}) {
|
|
64
|
+
const detected = options.nodeVersion || process.versions.node;
|
|
65
|
+
const requirement = options.nodeRequirement || readNodeRequirement(options.readPackageJson);
|
|
66
|
+
const required = parseMinimumVersion(requirement);
|
|
67
|
+
if (!isVersionAtLeast(detected, required)) {
|
|
68
|
+
const writeError = options.writeError || ((message) => process.stderr.write(message));
|
|
69
|
+
writeError(unsupportedNodeMessage(detected, requirement));
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const loadCli = options.loadCli || (() => import("./cli.js"));
|
|
74
|
+
await loadCli();
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (require.main === module) {
|
|
79
|
+
runBootstrap()
|
|
80
|
+
.then((exitCode) => {
|
|
81
|
+
process.exitCode = exitCode;
|
|
82
|
+
})
|
|
83
|
+
.catch((error) => {
|
|
84
|
+
console.error("[buda-connector] failed to start:", error);
|
|
85
|
+
process.exitCode = 1;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
module.exports = {
|
|
90
|
+
isVersionAtLeast,
|
|
91
|
+
parseMinimumVersion,
|
|
92
|
+
parseVersion,
|
|
93
|
+
readNodeRequirement,
|
|
94
|
+
runBootstrap,
|
|
95
|
+
unsupportedNodeMessage,
|
|
96
|
+
};
|