wbxcallprov/docker/remote-agent/deploy/docker-compose.yml
jmcqueen 93b060bc8b Modernize bot to Node.js 22 with modular architecture and remote SIW agent
- Refactor monolithic index.js (2646 lines) into src/{webex,integrations,
  cards,flows,commands,services} modules; replace node-fetch/form-data
  with native fetch/FormData; move all secrets to .env via dotenv
- Add dockerized remote SIW agent (docker/remote-agent/) with cross-arch
  buildx packaging (arm64 Mac -> linux/amd64), idempotent install.sh
  deploy bundle, and docker-free ZIP inspector for arch verification
- Bot hosts a WebSocket server; agent proxies SIW requests with a
  per-request insecure:true flag, replacing the process-wide
  NODE_TLS_REJECT_UNAUTHORIZED bypass
- Add ESLint flat config + Prettier, rewrite Dockerfile as non-root
  multi-stage node:22-alpine build, README covering setup / deploy /
  remote agent workflow
- Fix parseStoreArg to read trigger.prompt correctly (was indexing past
  the framework's post-match slice); register /help as regex (string
  matcher only compares the first token); switch catch-all to /.+/
  (previous /.*/gim was stateful due to the g flag); remove
  /fixDisplayNames command and its flow/card

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-06 14:48:51 -04:00

26 lines
977 B
YAML

# Runtime-only compose file that ships inside the deploy ZIP.
# Unlike the build-time compose one level up, this one does NOT build
# anything — it references the image loaded from the tarball
# (`wbxprov-remote-agent:__VERSION__`, replaced at package time).
#
# Run:
# ./install.sh # first-time setup (loads image, seeds .env, starts)
# docker compose up -d # subsequent starts once installed
# docker compose logs -f # tail logs
# docker compose down # stop
services:
remote-agent:
image: wbxprov-remote-agent:__VERSION__
container_name: wbxprov-remote-agent
restart: unless-stopped
env_file:
- .env
# The agent is a websocket CLIENT — no ports to publish.
stop_signal: SIGTERM
stop_grace_period: 10s
logging:
driver: json-file
options:
max-size: '10m'
max-file: '3'