diff --git a/plugins/studio/.codex-plugin/plugin.json b/plugins/studio/.codex-plugin/plugin.json index bedfacd..ecb5bc0 100644 --- a/plugins/studio/.codex-plugin/plugin.json +++ b/plugins/studio/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "studio", - "version": "0.3.7", + "version": "0.3.8", "description": "DETA Studio 插件:以 AML 为唯一事实源编辑建筑模型,编译为建筑模型并执行规则校验。", "author": { "name": "DETA", diff --git a/plugins/studio/bin/deta-mcp.sh b/plugins/studio/bin/deta-mcp.sh index 5b01f84..f8f0dde 100755 --- a/plugins/studio/bin/deta-mcp.sh +++ b/plugins/studio/bin/deta-mcp.sh @@ -100,12 +100,27 @@ if [ -z "${DETA_TOKEN:-}" ] && [ -f "$HOME/.deta/credentials.json" ]; then if [ -n "${DETA_TOKEN:-}" ]; then TOKEN_SOURCE="$HOME/.deta/credentials.json"; fi fi +# ── 网关桥(云项目工作区读写 / host-call 中继):显式 env → 本机网关 → 生产网关 ── +# 缺它时 build_model 无法把模型写进云项目(会退回只写本地工作区),用户会以为已同步。 +if [ -z "${ANT_WORKSPACE_BRIDGE_URL:-}" ]; then + if (exec 3<>/dev/tcp/127.0.0.1/3180) 2>/dev/null; then + ANT_WORKSPACE_BRIDGE_URL="http://127.0.0.1:3180" + BRIDGE_STATE="本机网关 ${ANT_WORKSPACE_BRIDGE_URL}" + else + ANT_WORKSPACE_BRIDGE_URL="https://deta.city/workspace-api" + BRIDGE_STATE="生产网关 ${ANT_WORKSPACE_BRIDGE_URL}" + fi + export ANT_WORKSPACE_BRIDGE_URL +else + BRIDGE_STATE="环境变量 ${ANT_WORKSPACE_BRIDGE_URL}" +fi + if [ -n "${DETA_TOKEN:-}" ]; then CLOUD_STATE="已注入(来源=${TOKEN_SOURCE})" else CLOUD_STATE="未注入——云类工具返回 auth_required 时调 login 工具(浏览器点一下即可);无该工具的形态用 ~/.deta/bin/deta login" fi -echo "[deta] 档位=${PROFILE} 运行时=${ROOT} 工作区=${WS} 工具面=${DETA_TOOL_SURFACE} 云令牌=${CLOUD_STATE}" >&2 +echo "[deta] 档位=${PROFILE} 运行时=${ROOT} 工作区=${WS} 工具面=${DETA_TOOL_SURFACE} 云令牌=${CLOUD_STATE} 网关桥=${BRIDGE_STATE}" >&2 exec node "$ENTRY" "$@" diff --git a/plugins/studio/package-lock.json b/plugins/studio/package-lock.json index b9ba5d9..70d1632 100644 --- a/plugins/studio/package-lock.json +++ b/plugins/studio/package-lock.json @@ -1,12 +1,12 @@ { "name": "deta-studio-plugin", - "version": "0.3.7", + "version": "0.3.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "deta-studio-plugin", - "version": "0.3.7", + "version": "0.3.8", "license": "Proprietary" } } diff --git a/plugins/studio/package.json b/plugins/studio/package.json index 2b872ef..422f76b 100644 --- a/plugins/studio/package.json +++ b/plugins/studio/package.json @@ -1,6 +1,6 @@ { "name": "deta-studio-plugin", - "version": "0.3.7", + "version": "0.3.8", "description": "DETA Studio:AML 建筑模型读写与编译校验(Codex 插件 / dsh 组合包 双壳)", "type": "module", "license": "Proprietary", diff --git a/plugins/writer/bin/deta-mcp.sh b/plugins/writer/bin/deta-mcp.sh index 0c0fc07..5cd9ee5 100755 --- a/plugins/writer/bin/deta-mcp.sh +++ b/plugins/writer/bin/deta-mcp.sh @@ -100,12 +100,27 @@ if [ -z "${DETA_TOKEN:-}" ] && [ -f "$HOME/.deta/credentials.json" ]; then if [ -n "${DETA_TOKEN:-}" ]; then TOKEN_SOURCE="$HOME/.deta/credentials.json"; fi fi +# ── 网关桥(云项目工作区读写 / host-call 中继):显式 env → 本机网关 → 生产网关 ── +# 缺它时 build_model 无法把模型写进云项目(会退回只写本地工作区),用户会以为已同步。 +if [ -z "${ANT_WORKSPACE_BRIDGE_URL:-}" ]; then + if (exec 3<>/dev/tcp/127.0.0.1/3180) 2>/dev/null; then + ANT_WORKSPACE_BRIDGE_URL="http://127.0.0.1:3180" + BRIDGE_STATE="本机网关 ${ANT_WORKSPACE_BRIDGE_URL}" + else + ANT_WORKSPACE_BRIDGE_URL="https://deta.city/workspace-api" + BRIDGE_STATE="生产网关 ${ANT_WORKSPACE_BRIDGE_URL}" + fi + export ANT_WORKSPACE_BRIDGE_URL +else + BRIDGE_STATE="环境变量 ${ANT_WORKSPACE_BRIDGE_URL}" +fi + if [ -n "${DETA_TOKEN:-}" ]; then CLOUD_STATE="已注入(来源=${TOKEN_SOURCE})" else CLOUD_STATE="未注入——云类工具返回 auth_required 时调 login 工具(浏览器点一下即可);无该工具的形态用 ~/.deta/bin/deta login" fi -echo "[deta] 档位=${PROFILE} 运行时=${ROOT} 工作区=${WS} 工具面=${DETA_TOOL_SURFACE} 云令牌=${CLOUD_STATE}" >&2 +echo "[deta] 档位=${PROFILE} 运行时=${ROOT} 工作区=${WS} 工具面=${DETA_TOOL_SURFACE} 云令牌=${CLOUD_STATE} 网关桥=${BRIDGE_STATE}" >&2 exec node "$ENTRY" "$@"