Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,24 @@ jobs:

- name: Build
run: pnpm build

- name: Install browser test tools
run: |
npm install --prefix /tmp/liaison-browser-tests --no-audit --no-fund playwright@1.58.2
/tmp/liaison-browser-tests/node_modules/.bin/playwright install --with-deps chromium

- name: Core browser regression
env:
PLAYWRIGHT_MODULE: /tmp/liaison-browser-tests/node_modules/playwright
run: bash e2e/run-core.sh

- name: Upload browser evidence
if: failure()
uses: actions/upload-artifact@v4
with:
name: core-browser-screenshots
path: |
/tmp/models-*.png
/tmp/session-model-*.png
/tmp/liaison-shell-*.png
/tmp/product-polish-*.png
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@ English | [简体中文](./README_zh.md) | [日本語](./README_ja.md) | [한국
Download the self-contained Docker bundle, extract it, and run the installer (Docker 20.10+ with Compose is required):

```bash
wget https://github.com/liaisonio/liaison/releases/download/v1.13.0/liaison-1.13.0-linux-amd64.tar.gz
tar -xzf liaison-1.13.0-linux-amd64.tar.gz
cd liaison-1.13.0-linux-amd64
wget https://github.com/liaisonio/liaison/releases/download/v1.14.1/liaison-1.14.1-linux-amd64.tar.gz
tar -xzf liaison-1.14.1-linux-amd64.tar.gz
cd liaison-1.14.1-linux-amd64
./install.sh
```

Expand Down
6 changes: 3 additions & 3 deletions README_de.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ Installiere das tar.gz-Serverpaket und anschließend einen Konnektor.
**1. Herunterladen**

```bash
wget https://github.com/liaisonio/liaison/releases/download/v1.13.0/liaison-1.13.0-linux-amd64.tar.gz
tar -xzf liaison-1.13.0-linux-amd64.tar.gz
cd liaison-1.13.0-linux-amd64
wget https://github.com/liaisonio/liaison/releases/download/v1.14.1/liaison-1.14.1-linux-amd64.tar.gz
tar -xzf liaison-1.14.1-linux-amd64.tar.gz
cd liaison-1.14.1-linux-amd64
```

**2. Installationsskript ausführen**
Expand Down
6 changes: 3 additions & 3 deletions README_es.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ Instala el paquete tar.gz del servidor y después instala un conector.
**1. Descargar**

```bash
wget https://github.com/liaisonio/liaison/releases/download/v1.13.0/liaison-1.13.0-linux-amd64.tar.gz
tar -xzf liaison-1.13.0-linux-amd64.tar.gz
cd liaison-1.13.0-linux-amd64
wget https://github.com/liaisonio/liaison/releases/download/v1.14.1/liaison-1.14.1-linux-amd64.tar.gz
tar -xzf liaison-1.14.1-linux-amd64.tar.gz
cd liaison-1.14.1-linux-amd64
```

**2. Ejecutar el script de instalación**
Expand Down
6 changes: 3 additions & 3 deletions README_fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@ Installez le paquet tar.gz du serveur, puis installez un connecteur.
**1. Télécharger**

```bash
wget https://github.com/liaisonio/liaison/releases/download/v1.13.0/liaison-1.13.0-linux-amd64.tar.gz
tar -xzf liaison-1.13.0-linux-amd64.tar.gz
cd liaison-1.13.0-linux-amd64
wget https://github.com/liaisonio/liaison/releases/download/v1.14.1/liaison-1.14.1-linux-amd64.tar.gz
tar -xzf liaison-1.14.1-linux-amd64.tar.gz
cd liaison-1.14.1-linux-amd64
```

**2. Exécuter le script d'installation**
Expand Down
6 changes: 3 additions & 3 deletions README_ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@
**1. ダウンロード**

```bash
wget https://github.com/liaisonio/liaison/releases/download/v1.13.0/liaison-1.13.0-linux-amd64.tar.gz
tar -xzf liaison-1.13.0-linux-amd64.tar.gz
cd liaison-1.13.0-linux-amd64
wget https://github.com/liaisonio/liaison/releases/download/v1.14.1/liaison-1.14.1-linux-amd64.tar.gz
tar -xzf liaison-1.14.1-linux-amd64.tar.gz
cd liaison-1.14.1-linux-amd64
```

**2. インストールスクリプトを実行**
Expand Down
6 changes: 3 additions & 3 deletions README_ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,9 @@
**1. 다운로드**

```bash
wget https://github.com/liaisonio/liaison/releases/download/v1.13.0/liaison-1.13.0-linux-amd64.tar.gz
tar -xzf liaison-1.13.0-linux-amd64.tar.gz
cd liaison-1.13.0-linux-amd64
wget https://github.com/liaisonio/liaison/releases/download/v1.14.1/liaison-1.14.1-linux-amd64.tar.gz
tar -xzf liaison-1.14.1-linux-amd64.tar.gz
cd liaison-1.14.1-linux-amd64
```

**2. 설치 스크립트 실행**
Expand Down
6 changes: 3 additions & 3 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,9 @@
下载自带所有镜像的 Docker 离线包,解压后运行安装脚本(需要 Docker 20.10+ 及 Compose):

```bash
wget https://github.com/liaisonio/liaison/releases/download/v1.13.0/liaison-1.13.0-linux-amd64.tar.gz
tar -xzf liaison-1.13.0-linux-amd64.tar.gz
cd liaison-1.13.0-linux-amd64
wget https://github.com/liaisonio/liaison/releases/download/v1.14.1/liaison-1.14.1-linux-amd64.tar.gz
tar -xzf liaison-1.14.1-linux-amd64.tar.gz
cd liaison-1.14.1-linux-amd64
./install.sh
```

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.13.0
1.14.1
9 changes: 8 additions & 1 deletion api/agent_sessions.proto
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,17 @@ message AgentModelSelection {
}
message RunAgentTurnRequest {
string prompt = 1;
AgentModelSelection model_selection = 2; // Omitted: system default.
AgentModelSelection model_selection = 2; // Omitted: saved session choice, otherwise system default.
repeated AgentResourceReference references = 3; // Management only, max 8; server reauthorizes every ID.
}

// PATCH /api/v1/agent/sessions/{id}; owner-scoped, rejects active turns.
// Empty model_selection follows the system default. No credentials are accepted.
message UpdateAgentSessionModelRequest {
uint64 version = 1;
AgentModelSelection model_selection = 2;
}

message AgentResourceReference {
string type = 1; // connector, device, application
string id = 2; // Positive decimal ID; names are resolved by the server.
Expand Down
43 changes: 43 additions & 0 deletions api/edge_lifecycle.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
syntax = "proto3";
package liaison.edge_lifecycle;
option go_package = "github.com/liaisonio/liaison/api/edge_lifecycle;edge_lifecycle";

// Additive Edge RPC contract: edge_installation_status, empty JSON object input.
// Existing Manager/Edge versions do not need to implement this RPC.
// This is a read-only preflight; verified ownership is NOT uninstall authority.
// Console: GET /api/v1/edges/{id}/installation requires connectors.uninstall
// plus visibility of the specified connector. Offline/old Edges return a safe
// unsupported status. Execution additionally requires local Edge opt-in.
message InstallationStatus {
uint32 version = 1;
string platform = 2;
string instance_id = 3;
string service = 4;
string installation_kind = 5;
bool legacy = 6;
bool ownership_verified = 7;
bool can_uninstall = 8;
// Stable, safe reason code. Never contains credentials or raw native errors.
string reason = 9;
string runtime_id = 10; // Random per-process binding; rejects commands after restart.
}

// POST /api/v1/edges/{id}/uninstall: authenticated, scoped management
// permission plus exact connector name and freshly obtained instance binding.
message CreateUninstallTask { string confirm_name = 1; string instance_id = 2; }
// GET /api/v1/edges/{id}/uninstall/{task_id}: same authorization as create.
// The reserved task ID "active" retrieves the outstanding task, or null.
message UninstallTask {
string id = 1; uint64 edge_id = 2; string instance_id = 3;
string status = 4; string reason = 5; string expires_at = 6; // RFC3339 in HTTP JSON
}
// Edge RPC edge_uninstall: the URL is constrained to the configured Manager
// hostname. Token is short-lived and permits only reporting this task's result.
message UninstallCommand {
string task_id = 1; string instance_id = 2; int64 expires_at = 3;
string callback_url = 4; string callback_token = 5;
string runtime_id = 6;
}
// POST /api/v1/edge-uninstall-results/{task_id}, authenticated by the task-only
// bearer token, never a user token or an Edge long-lived credential.
message UninstallResult { string status = 1; string reason = 2; }
20 changes: 20 additions & 0 deletions cmd/edge/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,35 @@ package main
import (
"context"
"errors"
"fmt"
"os"
"time"

"github.com/jumboframes/armorigo/log"
"github.com/jumboframes/armorigo/sigaction"
"github.com/liaisonio/liaison/pkg/edge"
"github.com/liaisonio/liaison/pkg/edge/config"
"github.com/liaisonio/liaison/pkg/edge/lifecycle"
)

func main() {
if len(os.Args) > 1 && (os.Args[1] == "--edge-install-new" || os.Args[1] == "--edge-upgrade-instance") {
ctx, cancel := context.WithTimeout(context.Background(), 90*time.Second)
defer cancel()
if err := lifecycle.RunInstallCommand(ctx, os.Args[1:], os.Stdin, os.Stdout); err != nil {
fmt.Fprintln(os.Stderr, "Edge installation failed:", err)
os.Exit(1)
}
return
}
if len(os.Args) == 3 && os.Args[1] == "--edge-uninstall-worker" {
ctx, cancel := context.WithTimeout(context.Background(), 80*time.Second)
defer cancel()
if err := lifecycle.RunWorker(ctx, os.Args[2]); err != nil {
os.Exit(1)
}
return
}
err := config.Init()
if err != nil {
// 如果是显示指纹的错误,正常退出
Expand Down
4 changes: 4 additions & 0 deletions db/migrations/20260919010000_add_agent_session_model.down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-- Prefer application rollback with these additive columns retained.
-- Only run after stopping the new application; this discards session selections.
ALTER TABLE agent_sessions DROP COLUMN model_name;
ALTER TABLE agent_sessions DROP COLUMN model_provider;
4 changes: 4 additions & 0 deletions db/migrations/20260919010000_add_agent_session_model.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-- Public model identifiers only. Empty values follow the current system default.
-- Runtime schema bootstrap adds the same columns on embedded SQLite installs.
ALTER TABLE agent_sessions ADD COLUMN model_provider VARCHAR(128) NOT NULL DEFAULT '';
ALTER TABLE agent_sessions ADD COLUMN model_name VARCHAR(200) NOT NULL DEFAULT '';
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
-- Rollback only after all uninstall tasks have reached confirmed terminal states.
DROP TABLE IF EXISTS edge_uninstall_tasks;
15 changes: 15 additions & 0 deletions db/migrations/20260919020000_create_edge_uninstall_tasks.up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
CREATE TABLE IF NOT EXISTS edge_uninstall_tasks (
`id` varchar(32) PRIMARY KEY,
`edge_id` integer NOT NULL,
`active_edge` integer,
`created_by` integer NOT NULL,
`instance_id` varchar(80) NOT NULL,
`status` varchar(32) NOT NULL,
`reason` varchar(80) NOT NULL DEFAULT '',
`token_hash` varchar(64) NOT NULL,
`expires_at` datetime NOT NULL,
`created_at` datetime,
`updated_at` datetime
);
CREATE INDEX IF NOT EXISTS idx_edge_uninstall_tasks_edge_id ON edge_uninstall_tasks(edge_id);
CREATE UNIQUE INDEX IF NOT EXISTS idx_edge_uninstall_tasks_active_edge ON edge_uninstall_tasks(active_edge);
2 changes: 2 additions & 0 deletions deploy/docker/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ JWT_SECRET=
# chat-completions streaming API. Secrets are injected as environment variables
# and are never written into liaison.yaml.
AGENT_ENABLED=false
# Installation chooses zh/en once from the host timezone; saved UI settings win.
AGENT_OUTPUT_LANGUAGE=
AGENT_BASE_URL=https://api.openai.com/v1
AGENT_MODEL=gpt-4.1-mini
OPENAI_API_KEY=
Expand Down
13 changes: 13 additions & 0 deletions deploy/docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,3 +142,16 @@ A: 是的。删掉 `certs/server.*` 然后 `docker compose restart liaison`,entr

**Q: 能换成 nginx 前置?**
A: 可以,把 `MANAGER_PORT` 绑回 `127.0.0.1:8443`,前面架 nginx 反代到 `https://127.0.0.1:8443`。`server_url` 通过 `.env` 的 `SERVER_URL` 手动指定(取消 compose 文件里对应注释)。
# AI 输出语言

首次运行 `install.sh` 时,根据宿主机时区推荐 `zh`(中国大陆相关时区)
或 `en`(其他及未知时区),交互安装可确认选择。无人值守安装可显式指定:

```bash
AGENT_OUTPUT_LANGUAGE=en bash install.sh
```

选择写入 `.env`,不跟随浏览器,也不在每次启动时重新检测。
直接使用 Compose 时请在 `.env` 设置 `AGENT_OUTPUT_LANGUAGE=zh` 或 `en`;
未设置则保留原有中文默认。升级保留已有选择,数据库中保存的模型语言配置优先。
管理员之后可在“设置 → 模型配置”中修改;回退安装默认值不会覆盖已保存的设置。
28 changes: 28 additions & 0 deletions deploy/docker/ai-output-language.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash
# Sourced by installers only. No network requests or runtime locale detection.
liaison_ai_language() {
local existing="${1:-}" zone="${TZ:-}" choice="${AGENT_OUTPUT_LANGUAGE:-}"
# Upgrades preserve existing installation defaults, including legacy Chinese.
if [ -n "$existing" ]; then
choice="$existing"
elif [ -z "$choice" ]; then
if [ -z "$zone" ] && command -v timedatectl >/dev/null 2>&1; then
zone=$(timedatectl show -p Timezone --value 2>/dev/null || true)
fi
if [ -z "$zone" ] && [ -r /etc/timezone ]; then zone=$(head -n 1 /etc/timezone); fi
if [ -z "$zone" ]; then zone=$(readlink /etc/localtime 2>/dev/null || true); fi
zone=${zone##*/zoneinfo/}
zone=${zone#:}
case "$zone" in
Asia/Shanghai|Asia/Chongqing|Asia/Chungking|Asia/Harbin|Asia/Urumqi|PRC) choice=zh ;;
*) choice=en ;;
esac
if [ -t 0 ]; then
printf 'AI output language / AI 输出语言 [zh/en] (%s, timezone: %s): ' "$choice" "${zone:-unknown}" >&2
local answer=""
read -r answer || true
choice=${answer:-$choice}
fi
fi
case "$choice" in zh|en) printf '%s\n' "$choice" ;; *) printf 'AGENT_OUTPUT_LANGUAGE must be zh or en\n' >&2; return 1 ;; esac
}
1 change: 1 addition & 0 deletions deploy/docker/conf/liaison.yaml.template
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ ${WEB_TLS_CERTS}
guacd_bridge_addr: ${GUACD_BRIDGE_ADDR}
guacd_bridge_host: ${GUACD_BRIDGE_HOST}
agent:
output_language: ${AGENT_OUTPUT_LANGUAGE}
enabled: ${AGENT_ENABLED}
base_url: ${AGENT_BASE_URL}
model: ${AGENT_MODEL}
Expand Down
1 change: 1 addition & 0 deletions deploy/docker/docker-compose.release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ services:
AGENT_ENABLED: ${AGENT_ENABLED:-false}
AGENT_BASE_URL: ${AGENT_BASE_URL:-https://api.openai.com/v1}
AGENT_MODEL: ${AGENT_MODEL:-gpt-4.1-mini}
AGENT_OUTPUT_LANGUAGE: ${AGENT_OUTPUT_LANGUAGE:-zh}
AGENT_REQUEST_TIMEOUT: ${AGENT_REQUEST_TIMEOUT:-2m}
AGENT_MAX_MODEL_STEPS: ${AGENT_MAX_MODEL_STEPS:-12}
AGENT_APPROVAL_EXPIRY: ${AGENT_APPROVAL_EXPIRY:-15m}
Expand Down
1 change: 1 addition & 0 deletions deploy/docker/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ services:
AGENT_ENABLED: ${AGENT_ENABLED:-false}
AGENT_BASE_URL: ${AGENT_BASE_URL:-https://api.openai.com/v1}
AGENT_MODEL: ${AGENT_MODEL:-gpt-4.1-mini}
AGENT_OUTPUT_LANGUAGE: ${AGENT_OUTPUT_LANGUAGE:-zh}
AGENT_REQUEST_TIMEOUT: ${AGENT_REQUEST_TIMEOUT:-2m}
AGENT_MAX_MODEL_STEPS: ${AGENT_MAX_MODEL_STEPS:-12}
AGENT_APPROVAL_EXPIRY: ${AGENT_APPROVAL_EXPIRY:-15m}
Expand Down
5 changes: 4 additions & 1 deletion deploy/docker/entrypoint-liaison.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ mkdir -p "$DATA_DIR" "$CERTS_DIR" "$LOG_DIR"
: "${AGENT_ENABLED:=false}"
: "${AGENT_BASE_URL:=https://api.openai.com/v1}"
: "${AGENT_MODEL:=gpt-4.1-mini}"
: "${AGENT_OUTPUT_LANGUAGE:=zh}"
case "$AGENT_OUTPUT_LANGUAGE" in zh|en) ;; *) echo 'AGENT_OUTPUT_LANGUAGE must be zh or en' >&2; exit 1 ;; esac
export AGENT_OUTPUT_LANGUAGE
: "${AGENT_REQUEST_TIMEOUT:=2m}"
: "${AGENT_MAX_MODEL_STEPS:=12}"
: "${AGENT_APPROVAL_EXPIRY:=15m}"
Expand Down Expand Up @@ -65,7 +68,7 @@ if [ ! -f "$CONF_DIR/liaison.yaml" ]; then
export FRONTIER_PORT FRONTIER_CONTROLPLANE_PORT MANAGER_PORT SERVER_URL JWT_SECRET GUACD_ADDR GUACD_BRIDGE_ADDR GUACD_BRIDGE_HOST
export AGENT_ENABLED AGENT_BASE_URL AGENT_MODEL AGENT_REQUEST_TIMEOUT AGENT_MAX_MODEL_STEPS AGENT_APPROVAL_EXPIRY
# shellcheck disable=SC2016
envsubst '${FRONTIER_PORT} ${FRONTIER_CONTROLPLANE_PORT} ${MANAGER_PORT} ${SERVER_URL} ${JWT_SECRET} ${GUACD_ADDR} ${GUACD_BRIDGE_ADDR} ${GUACD_BRIDGE_HOST} ${AGENT_ENABLED} ${AGENT_BASE_URL} ${AGENT_MODEL} ${AGENT_REQUEST_TIMEOUT} ${AGENT_MAX_MODEL_STEPS} ${AGENT_APPROVAL_EXPIRY} ${WEB_TLS_CERTS} ${LIAISON_WEB_DOMAIN}' \
envsubst '${AGENT_OUTPUT_LANGUAGE} ${FRONTIER_PORT} ${FRONTIER_CONTROLPLANE_PORT} ${MANAGER_PORT} ${SERVER_URL} ${JWT_SECRET} ${GUACD_ADDR} ${GUACD_BRIDGE_ADDR} ${GUACD_BRIDGE_HOST} ${AGENT_ENABLED} ${AGENT_BASE_URL} ${AGENT_MODEL} ${AGENT_REQUEST_TIMEOUT} ${AGENT_MAX_MODEL_STEPS} ${AGENT_APPROVAL_EXPIRY} ${WEB_TLS_CERTS} ${LIAISON_WEB_DOMAIN}' \
< "$CONF_DIR/liaison.yaml.template" > "$CONF_DIR/liaison.yaml"
echo "[entrypoint] rendered $CONF_DIR/liaison.yaml (public_host=$LIAISON_PUBLIC_HOST manager_port=$MANAGER_PORT frontier_port=$FRONTIER_PORT controlplane_port=$FRONTIER_CONTROLPLANE_PORT)"
fi
Expand Down
18 changes: 18 additions & 0 deletions deploy/docker/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ set -eu

SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
cd "$SCRIPT_DIR"
. "$SCRIPT_DIR/ai-output-language.sh"

GREEN=$'\033[0;32m'
YELLOW=$'\033[1;33m'
Expand Down Expand Up @@ -98,12 +99,18 @@ else
warn " no input — using $PUBLIC_HOST"
fi

if [ -f data/.initialized ]; then
INSTALL_AI_LANGUAGE=$(liaison_ai_language zh)
else
INSTALL_AI_LANGUAGE=$(liaison_ai_language)
fi
cp .env.example .env
INSTALL_MANAGER_PORT="${MANAGER_PORT:-443}"
# Portable in-place sed (BSD + GNU).
sed \
-e "s|^LIAISON_PUBLIC_HOST=.*|LIAISON_PUBLIC_HOST=${PUBLIC_HOST}|" \
-e "s|^MANAGER_PORT=.*|MANAGER_PORT=${INSTALL_MANAGER_PORT}|" \
-e "s|^AGENT_OUTPUT_LANGUAGE=.*|AGENT_OUTPUT_LANGUAGE=${INSTALL_AI_LANGUAGE}|" \
.env > .env.tmp && mv .env.tmp .env
log "==> Wrote .env (LIAISON_PUBLIC_HOST=${PUBLIC_HOST}, MANAGER_PORT=${INSTALL_MANAGER_PORT})"
fi
Expand All @@ -120,6 +127,17 @@ if ! grep -q '^JWT_SECRET=.' .env; then
fi

# Load the final values for post-start messages.
# Old installations used Chinese before this option existed.
if ! grep -q '^AGENT_OUTPUT_LANGUAGE=.' .env; then
if [ -f data/.initialized ]; then
INSTALL_AI_LANGUAGE=zh
else
INSTALL_AI_LANGUAGE=$(liaison_ai_language)
fi
sed '/^AGENT_OUTPUT_LANGUAGE=/d' .env > .env.tmp
printf 'AGENT_OUTPUT_LANGUAGE=%s\n' "$INSTALL_AI_LANGUAGE" >> .env.tmp
mv .env.tmp .env
fi
# shellcheck disable=SC1091
set -a; . ./.env; set +a
: "${LIAISON_PUBLIC_HOST:=localhost}"
Expand Down
1 change: 1 addition & 0 deletions deploy/docker/package-docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ docker save "$GUACD_IMAGE" -o "$PACK_DIR/images/guacd.tar"
# Pin the image tag inside the shipped compose via .env, so the release works
# out of the box regardless of what LIAISON_IMAGE_TAG is set to in the user's shell.
cp deploy/docker/docker-compose.release.yaml "$PACK_DIR/docker-compose.yaml"
cp deploy/docker/ai-output-language.sh "$PACK_DIR/ai-output-language.sh"
{
cat deploy/docker/.env.example
echo ""
Expand Down
Loading
Loading