Files
deta-agent-plugins/plugins/studio/bin/deta-mcp.sh
T
ringo 7d3f9e2933
CI / contract (push) Has been cancelled
refactor(plugin)!: 插件改名 studio、新增 writer、统一本机 stdio 管道
命名结构(品牌=市场,产品=插件):市场名保持 deta;插件 deta → studio(displayName DETA Studio),新增 writer(DETA Writer)。安装标识 studio@deta / writer@deta;MCP 服务名 studio_mcp / writer_mcp,可同时安装。plugins/deta → plugins/studio(git mv 保留历史),新增 plugins/writer。

连接形态统一为单一本机 stdio 管道:.mcp.json 与 cordis.patch.yml 均声明 stdio → bin/deta-mcp.sh --profile <产品>,并按官方插件写法补 cwd: "."(缺它时 Cwd=- ,相对命令按宿主进程 cwd 解析会静默起不来);启动器新增 --profile 档位(工作区 ~/.deta/<产品>/workspace、工具面缺省 full),运行时按 DETA_SERVER_ROOT → ~/.deta/runtime → 开发检出解析,入口优先打包产物;DETA_TOKEN 可选注入(缺省时云类工具返回 auth_required)。原远程端点声明(含 OAuth/401 段落)从插件移除。

文档与治理:根 README 与两个插件 README 改为单一管道口径;技能 aml-design 对齐本机全量面;新增 scripts/check-plugin-contract.mjs(E1 禁工具清单 / E2 必须给出 list_capabilities / E3 禁解释内部实现 / E4 市场条目一致性 / W1 开发检出依赖)与 .gitea/workflows/ci.yml。版本:studio 0.3.1、writer 0.1.0。
2026-09-20 11:56:23 +08:00

74 lines
3.2 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# DETA 产品插件的本机 MCP stdio 启动器(唯一入口,多产品共用)
#
# 两个宿主(Codex 插件 / dsh 组合包)都通过本脚本拉起同一个领域服务;
# 产品差异只由 --profile 决定(工作区默认位置、工具面),宿主侧只声明"调哪个脚本、带哪个档位"。
#
# 用法:deta-mcp.sh [--profile <studio|writer>]
#
# 依赖:node + 已构建的领域服务运行时
#
# 环境变量:
# DETA_SERVER_ROOT 领域服务运行时根目录(未设时自动查找,见下)
# DETA_WORKSPACE AML 工作目录(引擎侧工作区真值;缺省 ~/.deta/<profile>/workspace)
# ANT_HEADLESS_WORKSPACE 同上(兼容旧名,DETA_WORKSPACE 优先)
# DETA_TOKEN deta.city 门户令牌(可选;不注入则云类工具返回 auth_required)
# ANT_WORKSPACE_BRIDGE_URL 网关基址(可选;与项目 ID 一起启用 Studio 执行器中继)
# DETA_SURFACE 工具面覆盖(缺省 full)
set -euo pipefail
# ── 产品档位:宿主在声明里传 --profile;缺省 studio ──
PROFILE="${DETA_PROFILE:-studio}"
while [ $# -gt 0 ]; do
case "$1" in
--profile) PROFILE="${2:?--profile 需要一个值}"; shift 2 ;;
*) break ;;
esac
done
# ── 运行时解析:显式 DETA_SERVER_ROOT → 本机引擎包安装位置 → 本机开发检出(打印提示)──
ROOT="${DETA_SERVER_ROOT:-}"
if [ -z "$ROOT" ]; then
for cand in "$HOME/.deta/runtime" "$HOME/Dev/ant/ant-copilot"; do
if [ -f "$cand/dist/deta-mcp.mjs" ] || [ -f "$cand/dist/src/headless/mcp-server.js" ]; then ROOT="$cand"; break; fi
done
fi
if ! command -v node >/dev/null 2>&1; then
echo "[deta] 未找到 node,请先安装 Node.js" >&2
exit 1
fi
# 入口优先取 esbuild 打包形态:tsc 产物在 Node ESM 下会因依赖包的目录 import 直接失败
ENTRY=""
if [ -n "$ROOT" ]; then
if [ -f "$ROOT/dist/deta-mcp.mjs" ]; then
ENTRY="$ROOT/dist/deta-mcp.mjs"
elif [ -f "$ROOT/dist/src/headless/mcp-server.js" ]; then
ENTRY="$ROOT/dist/src/headless/mcp-server.js"
echo "[deta] 警告:回落到未打包产物,请先在该运行时目录执行 npm run build:mcp" >&2
fi
fi
if [ -z "$ENTRY" ]; then
echo "[deta] 未找到领域服务运行时(已尝试:DETA_SERVER_ROOT、\$HOME/.deta/runtime、\$HOME/Dev/ant/ant-copilot)" >&2
echo "[deta] 请安装本机引擎包,或设置 DETA_SERVER_ROOT 指向已构建的领域服务仓库" >&2
exit 1
fi
if [ "$ROOT" = "$HOME/Dev/ant/ant-copilot" ]; then
echo "[deta] 提示:使用本机开发检出 ${ROOT}(非打包运行时)" >&2
fi
# ── 工作目录:宿主不会传项目目录(cwd 通常是插件根),按产品档位定稳定位置 ──
WS="${DETA_WORKSPACE:-${ANT_HEADLESS_WORKSPACE:-$HOME/.deta/$PROFILE/workspace}}"
mkdir -p "$WS"
export ANT_HEADLESS_WORKSPACE="$WS"
# ── 工具面:产品档位缺省全量面;DETA_SURFACE 可覆盖(如 engine)──
export DETA_TOOL_SURFACE="${DETA_SURFACE:-full}"
echo "[deta] 档位=${PROFILE} 运行时=${ROOT} 工作区=${WS} 工具面=${DETA_TOOL_SURFACE} 云令牌=$([ -n "${DETA_TOKEN:-}" ] && echo 已注入 || echo 未注入)" >&2
exec node "$ENTRY" "$@"