replicas-engine 0.1.160 → 0.1.163
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/src/index.js +1 -1
- package/package.json +5 -3
- package/scripts/engine-watchdog.sh +78 -0
package/dist/src/index.js
CHANGED
|
@@ -285,7 +285,7 @@ function parseReplicasConfigString(content, filename) {
|
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
// ../shared/src/engine/environment.ts
|
|
288
|
-
var DAYTONA_SNAPSHOT_ID = "
|
|
288
|
+
var DAYTONA_SNAPSHOT_ID = "13-05-2026-royal-york-v9";
|
|
289
289
|
|
|
290
290
|
// ../shared/src/engine/types.ts
|
|
291
291
|
var DEFAULT_CHAT_TITLES = {
|
package/package.json
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "replicas-engine",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.163",
|
|
4
4
|
"description": "Lightweight API server for Replicas workspaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"replicas-engine": "./dist/src/index.js"
|
|
8
|
+
"replicas-engine": "./dist/src/index.js",
|
|
9
|
+
"replicas-engine-watchdog": "./scripts/engine-watchdog.sh"
|
|
9
10
|
},
|
|
10
11
|
"files": [
|
|
11
|
-
"dist"
|
|
12
|
+
"dist",
|
|
13
|
+
"scripts/engine-watchdog.sh"
|
|
12
14
|
],
|
|
13
15
|
"scripts": {
|
|
14
16
|
"dev": "tsx watch src/index.ts",
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Watchdog for replicas-engine: monitors the process and restarts on crash.
|
|
3
|
+
# Uses exponential backoff to avoid tight restart loops on persistent failures.
|
|
4
|
+
# Resets backoff after the engine runs stably for STABLE_THRESHOLD seconds.
|
|
5
|
+
set -u
|
|
6
|
+
|
|
7
|
+
WARMING_FLAG="${1:-}"
|
|
8
|
+
PIDFILE="/tmp/replicas-engine.pid"
|
|
9
|
+
MAX_BACKOFF=60
|
|
10
|
+
BACKOFF=1
|
|
11
|
+
RESTART_COUNT=0
|
|
12
|
+
MAX_RESTARTS=20
|
|
13
|
+
STABLE_THRESHOLD=300
|
|
14
|
+
|
|
15
|
+
log() {
|
|
16
|
+
echo "[$(date -Iseconds)] [engine-watchdog] $*"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
cleanup() {
|
|
20
|
+
log "Watchdog shutting down"
|
|
21
|
+
if [ -f "$PIDFILE" ]; then
|
|
22
|
+
local pid
|
|
23
|
+
pid=$(cat "$PIDFILE")
|
|
24
|
+
if kill -0 "$pid" 2>/dev/null; then
|
|
25
|
+
kill "$pid" 2>/dev/null
|
|
26
|
+
wait "$pid" 2>/dev/null
|
|
27
|
+
fi
|
|
28
|
+
fi
|
|
29
|
+
rm -f "$PIDFILE"
|
|
30
|
+
exit 0
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
trap cleanup SIGTERM SIGINT
|
|
34
|
+
|
|
35
|
+
while true; do
|
|
36
|
+
if [ "$RESTART_COUNT" -ge "$MAX_RESTARTS" ]; then
|
|
37
|
+
log "Exceeded max restarts ($MAX_RESTARTS). Giving up."
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
BOOTSTRAP_LOG="/tmp/replicas-engine-bootstrap-$(date +%Y%m%d-%H%M%S).log"
|
|
42
|
+
log "Starting replicas-engine (attempt $((RESTART_COUNT + 1)))${WARMING_FLAG:+ [warming mode]}"
|
|
43
|
+
|
|
44
|
+
START_TIME=$(date +%s)
|
|
45
|
+
replicas-engine $WARMING_FLAG >> "$BOOTSTRAP_LOG" 2>&1 &
|
|
46
|
+
ENGINE_PID=$!
|
|
47
|
+
echo "$ENGINE_PID" > "$PIDFILE"
|
|
48
|
+
|
|
49
|
+
wait "$ENGINE_PID"
|
|
50
|
+
EXIT_CODE=$?
|
|
51
|
+
END_TIME=$(date +%s)
|
|
52
|
+
UPTIME=$((END_TIME - START_TIME))
|
|
53
|
+
|
|
54
|
+
rm -f "$PIDFILE"
|
|
55
|
+
|
|
56
|
+
# Exit code 0 = clean shutdown, 143 = SIGTERM (sandbox stopping)
|
|
57
|
+
if [ $EXIT_CODE -eq 0 ] || [ $EXIT_CODE -eq 143 ]; then
|
|
58
|
+
log "Engine exited (code $EXIT_CODE). Not restarting."
|
|
59
|
+
exit 0
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
RESTART_COUNT=$((RESTART_COUNT + 1))
|
|
63
|
+
|
|
64
|
+
if [ "$UPTIME" -ge "$STABLE_THRESHOLD" ]; then
|
|
65
|
+
BACKOFF=1
|
|
66
|
+
RESTART_COUNT=1
|
|
67
|
+
log "Engine crashed (exit code $EXIT_CODE, uptime ${UPTIME}s) after stable run. Resetting backoff."
|
|
68
|
+
else
|
|
69
|
+
log "Engine crashed (exit code $EXIT_CODE, uptime ${UPTIME}s). Restart #$RESTART_COUNT in ${BACKOFF}s..."
|
|
70
|
+
sleep "$BACKOFF"
|
|
71
|
+
if [ "$BACKOFF" -lt "$MAX_BACKOFF" ]; then
|
|
72
|
+
BACKOFF=$((BACKOFF * 2))
|
|
73
|
+
if [ "$BACKOFF" -gt "$MAX_BACKOFF" ]; then
|
|
74
|
+
BACKOFF=$MAX_BACKOFF
|
|
75
|
+
fi
|
|
76
|
+
fi
|
|
77
|
+
fi
|
|
78
|
+
done
|