Repository navigation
Expand file tree
/
Copy pathentrypoint.sh
More file actions
118 lines (105 loc) · 4.11 KB
/
Copy pathentrypoint.sh
File metadata and controls
118 lines (105 loc) · 4.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/usr/bin/env bash
set -euo pipefail
# Adds slash at the end which is critical to Nginx configuration work properly
nginx_url() {
text=$1
[[ ${text} != */ ]] && text="${text}/"
echo "${text}"
}
cd /PeTTa
EMBEDDING_PROVIDER="${EMBEDDING_PROVIDER:-Local}"
EMBEDDING_MODEL="${EMBEDDING_MODEL:-}"
OPENAIAPI_URL="http://localhost:8080/" # dummy value
MM_URL="http://localhost:8080/" # dummy value
OPENCLAW_URL="http://localhost:8080/" # dummy value
for arg in "$@"; do
if [[ "$arg" == embeddingprovider=* ]]; then
EMBEDDING_PROVIDER="${arg#*=}"
fi
if [[ "$arg" == embeddingModel=* ]]; then
EMBEDDING_MODEL="${arg#*=}"
fi
# URL to redirect OpenAIAPI provider requests
if [[ "$arg" == openaiapi_url=* ]]; then
OPENAIAPI_URL=$(nginx_url "${arg#*=}")
fi
# URL to redirect Mattermost communication channel requests
if [[ "$arg" == MM_URL=* ]]; then
MM_URL=$(nginx_url "${arg#*=}")
fi
# URL to redirect OpenClaw Gateway requests
if [[ "$arg" == openclaw_url=* ]]; then
OPENCLAW_URL=$(nginx_url "${arg#*=}")
fi
done
export EMBEDDING_PROVIDER EMBEDDING_MODEL OPENAIAPI_URL MM_URL OPENCLAW_URL
agent_su=(su --group nogroup nobody)
if [[ -n "${MEMORY_TRANSFER_GID:-}" ]]; then
if [[ ! "${MEMORY_TRANSFER_GID}" =~ ^[1-9][0-9]*$ ]]; then
echo "MEMORY_TRANSFER_GID must be a non-zero numeric private group ID" >&2
exit 1
fi
group_record="$(getent group "${MEMORY_TRANSFER_GID}" 2>/dev/null || true)"
memory_transfer_group="${group_record%%:*}"
if [[ -z "${memory_transfer_group}" ]]; then
memory_transfer_group="omega-transfer-${MEMORY_TRANSFER_GID}"
if ! groupadd --gid "${MEMORY_TRANSFER_GID}" "${memory_transfer_group}"; then
echo "Could not configure transfer group ${MEMORY_TRANSFER_GID}" >&2
exit 1
fi
fi
agent_su=(su --group nogroup --supp-group "${memory_transfer_group}" nobody)
fi
su www-data -s /bin/sh -c "sh /opt/nginx/nginx.sh"
# Optional knowledge-base import
if [[ "${IMPORT_KB_ON_START}" == "1" ]]; then
su nobody -s /bin/sh -c "${OMEGA_DIR}/scripts/import_knowledge.sh"
fi
MEMORY_PORTABILITY_PYTHON='import os
import sys
from config import init_config
from memory_export import create_memory_store
from memory_portability import MemoryTransfer
init_config(sys.argv[1:])
transfer = MemoryTransfer(
transfer_dir="/memory-transfer",
store=create_memory_store(),
)
operation = os.environ["MEMORY_PORTABILITY_OPERATION"]
if operation == "recover":
transfer.recover()
elif operation == "import":
transfer.import_archive(
os.environ["MEMORY_IMPORT_FILE"],
mode=os.environ.get("MEMORY_IMPORT_MODE", "overwrite"),
include_history=os.environ.get("MEMORY_IMPORT_NO_HISTORY") != "1",
include_vectors=os.environ.get("MEMORY_IMPORT_NO_VECTOR") != "1",
)
else:
raise ValueError(f"Unsupported memory portability operation: {operation!r}")'
export MEMORY_PORTABILITY_PYTHON
export PYTHONPATH="${OMEGA_DIR}:${OMEGA_DIR}/src${PYTHONPATH:+:${PYTHONPATH}}"
export MEMORY_PORTABILITY_OPERATION=recover
"${agent_su[@]}" -s /bin/sh -c 'exec python3 -c "$MEMORY_PORTABILITY_PYTHON" "$@"' sh "$@" \
|| { echo "Memory import recovery failed. Aborting startup." >&2; exit 1; }
if [[ -n "${MEMORY_IMPORT_FILE:-}" ]]; then
echo "memory_portability: importing ${MEMORY_IMPORT_FILE}"
export MEMORY_PORTABILITY_OPERATION=import
"${agent_su[@]}" -s /bin/sh -c 'exec python3 -c "$MEMORY_PORTABILITY_PYTHON" "$@"' sh "$@" \
|| { echo "Memory import failed. Aborting startup." >&2; exit 1; }
echo "memory_portability: import complete"
fi
unset MEMORY_PORTABILITY_OPERATION MEMORY_PORTABILITY_PYTHON PYTHONPATH
# Scrub environment: only allowlisted vars survive.
SAFE_VARS="HOME USER PATH HOSTNAME TERM LANG LC_ALL \
PYTHONDONTWRITEBYTECODE PYTHONUNBUFFERED \
HF_HOME SENTENCE_TRANSFORMERS_HOME HF_HUB_OFFLINE TRANSFORMERS_OFFLINE \
CHROMA_DB_PATH EMBEDDING_PROVIDER OMEGA_DIR MEMORY_DIR TEST_SERVER_IP"
env_args=""
for var in $SAFE_VARS; do
eval val=\${$var:-}
if [ -n "$val" ]; then
env_args="$env_args $var=$val"
fi
done
exec env -i $env_args "${agent_su[@]}" -s /bin/sh -c "sh run.sh run.metta GATEWAY_URL=\"http://localhost:8080\" $*"