@task-handoff/node-agent 0.0.16 → 0.0.18
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/dist/cli.js +1 -1
- package/docker/entrypoint.sh +48 -0
- package/docker/instance-launcher.sh +0 -5
- package/package.json +2 -1
- package/runtime-artifacts/{controlled-instance-runtime-0.0.16-linux-universal.manifest.json → controlled-instance-runtime-0.0.18-linux-universal.manifest.json} +2 -2
- package/runtime-artifacts/controlled-instance-runtime-0.0.18-linux-universal.tar.gz +0 -0
- package/runtime-artifacts/controlled-instance-runtime-0.0.18-linux-universal.tar.gz.sha256 +1 -0
- package/runtime-artifacts/controlled-instance-runtime-0.0.16-linux-universal.tar.gz +0 -0
- package/runtime-artifacts/controlled-instance-runtime-0.0.16-linux-universal.tar.gz.sha256 +0 -1
package/docker/entrypoint.sh
CHANGED
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
set -euo pipefail
|
|
3
3
|
|
|
4
|
+
load_private_config() {
|
|
5
|
+
local config_path="/run/task-handoff/instance-private-config.json"
|
|
6
|
+
if [ ! -f "${config_path}" ]; then
|
|
7
|
+
echo "Managed instance private configuration is missing." >&2
|
|
8
|
+
exit 78
|
|
9
|
+
fi
|
|
10
|
+
while IFS=$'\t' read -r key encoded; do
|
|
11
|
+
if [[ ! "${key}" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
|
|
12
|
+
echo "Managed instance private configuration contains an invalid environment key." >&2
|
|
13
|
+
exit 78
|
|
14
|
+
fi
|
|
15
|
+
local value
|
|
16
|
+
value="$(printf '%s' "${encoded}" | base64 --decode)"
|
|
17
|
+
export "${key}=${value}"
|
|
18
|
+
done < <(node -e '
|
|
19
|
+
const fs = require("node:fs");
|
|
20
|
+
const value = JSON.parse(fs.readFileSync(process.argv[1], "utf8"));
|
|
21
|
+
if (value.version !== 1 || typeof value.instanceCredential !== "string" || !value.instanceCredential || !value.environment || typeof value.environment !== "object" || Array.isArray(value.environment)) process.exit(78);
|
|
22
|
+
const environment = { ...value.environment, TASK_HANDOFF_REGISTRATION_TOKEN: value.instanceCredential, TASK_HANDOFF_PRIVATE_CONFIG_LOADED: "1" };
|
|
23
|
+
for (const [key, item] of Object.entries(environment)) {
|
|
24
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key) || typeof item !== "string") process.exit(78);
|
|
25
|
+
process.stdout.write(`${key}\t${Buffer.from(item).toString("base64")}\n`);
|
|
26
|
+
}
|
|
27
|
+
' "${config_path}")
|
|
28
|
+
if [ "${TASK_HANDOFF_PRIVATE_CONFIG_LOADED:-}" != "1" ]; then
|
|
29
|
+
echo "Managed instance private configuration is invalid." >&2
|
|
30
|
+
exit 78
|
|
31
|
+
fi
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if [ "$(id -u)" = "0" ] && [ "${TASK_HANDOFF_PRIVILEGE_DROPPED:-0}" != "1" ]; then
|
|
35
|
+
load_private_config
|
|
36
|
+
mkdir -p /data /home/agent
|
|
37
|
+
chown agent:agent /data /home/agent
|
|
38
|
+
if [ "${TASK_HANDOFF_WORKSPACE_MODE:-}" = "git-clone" ]; then
|
|
39
|
+
mkdir -p "${TASK_HANDOFF_WORKSPACE:-/workspace}"
|
|
40
|
+
chown agent:agent "${TASK_HANDOFF_WORKSPACE:-/workspace}"
|
|
41
|
+
fi
|
|
42
|
+
export TASK_HANDOFF_PRIVILEGE_DROPPED=1
|
|
43
|
+
exec sudo --preserve-env -u agent -- bash "$0" "$@"
|
|
44
|
+
fi
|
|
45
|
+
|
|
4
46
|
mkdir -p \
|
|
5
47
|
"${TASK_HANDOFF_DATA_DIR:-/data/task-handoff}" \
|
|
6
48
|
"${TASK_HANDOFF_APP_CATALOG_DIR:-/data/task-handoff/app-catalog}" \
|
|
@@ -84,12 +126,18 @@ start_web_cap_daemon() {
|
|
|
84
126
|
if [ "${1:-}" = "task-handoff" ] && [ "${2:-}" = "web" ]; then
|
|
85
127
|
bootstrap_workspace
|
|
86
128
|
start_web_cap_daemon
|
|
129
|
+
if [ -n "${TASK_HANDOFF_INSTANCE_LAUNCHER:-}" ]; then
|
|
130
|
+
exec bash "${TASK_HANDOFF_INSTANCE_LAUNCHER}"
|
|
131
|
+
fi
|
|
87
132
|
exec task-handoff-instance-launcher
|
|
88
133
|
fi
|
|
89
134
|
|
|
90
135
|
if [ "${1:-}" = "task-handoff" ]; then
|
|
91
136
|
shift
|
|
92
137
|
if [ "$#" -eq 0 ] || { [ "${1:-}" = "web" ] && [ "$#" -eq 1 ]; }; then
|
|
138
|
+
if [ -n "${TASK_HANDOFF_INSTANCE_LAUNCHER:-}" ]; then
|
|
139
|
+
exec bash "${TASK_HANDOFF_INSTANCE_LAUNCHER}"
|
|
140
|
+
fi
|
|
93
141
|
exec task-handoff-instance-launcher
|
|
94
142
|
fi
|
|
95
143
|
echo "Managed container commands must be launched through the active controlled-instance runtime." >&2
|
|
@@ -21,11 +21,6 @@ bootstrap_wait() {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
if [ ! -L "${current}" ]; then
|
|
24
|
-
if command -v task-handoff-controlled-instance >/dev/null 2>&1; then
|
|
25
|
-
exec task-handoff-controlled-instance web \
|
|
26
|
-
--host "${TASK_HANDOFF_WEB_HOST:-0.0.0.0}" \
|
|
27
|
-
--port "${TASK_HANDOFF_WEB_PORT:-8080}"
|
|
28
|
-
fi
|
|
29
24
|
bootstrap_wait
|
|
30
25
|
fi
|
|
31
26
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@task-handoff/node-agent",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"description": "Prebuilt TaskHandoff node agent runtime.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"@fastify/cookie": "11.1.1",
|
|
24
24
|
"@fastify/static": "8.3.0",
|
|
25
25
|
"@fastify/websocket": "11.2.0",
|
|
26
|
+
"@larksuiteoapi/node-sdk": "1.72.0",
|
|
26
27
|
"commander": "14.0.3",
|
|
27
28
|
"dingtalk-stream": "2.1.5",
|
|
28
29
|
"fastify": "5.8.5",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"packageName": "@task-handoff/controlled-instance",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"platform": "linux",
|
|
5
5
|
"arch": "universal",
|
|
6
6
|
"formatVersion": 1,
|
|
7
7
|
"launcherAbi": 1,
|
|
8
8
|
"entrypoint": "dist/controlled-instance-cli.js",
|
|
9
|
-
"sha256": "
|
|
9
|
+
"sha256": "49cf45b50333fd08eb25759867681fdb0decec53d3d7e28922790bb6497c18c7"
|
|
10
10
|
}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1d149eca220a1c1191d53373a8bc508fe99e67ccb0328051bd9eb4303ac7734a controlled-instance-runtime-0.0.18-linux-universal.tar.gz
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2a95e98182db251f91a887d77a86051e230ea1339995e54682c85143df181d52 controlled-instance-runtime-0.0.16-linux-universal.tar.gz
|