@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.
@@ -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.16",
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.16",
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": "49cba53b846707e115a727b8b3ac3b02cda6fb2326120734b4778c64cc06dc2a"
9
+ "sha256": "49cf45b50333fd08eb25759867681fdb0decec53d3d7e28922790bb6497c18c7"
10
10
  }
@@ -0,0 +1 @@
1
+ 1d149eca220a1c1191d53373a8bc508fe99e67ccb0328051bd9eb4303ac7734a controlled-instance-runtime-0.0.18-linux-universal.tar.gz
@@ -1 +0,0 @@
1
- 2a95e98182db251f91a887d77a86051e230ea1339995e54682c85143df181d52 controlled-instance-runtime-0.0.16-linux-universal.tar.gz