mirror of
https://git.openapi.site/https://github.com/desirecore/config-center.git
synced 2026-07-23 06:53:14 +08:00
feat(runtimes): 新增推荐运行时清单与离线兜底版本清单 (#44)
- runtimes/recommended.json:Python 3.13.9 (hatch 1.16.5 pin) + Node.js 24.18.0 LTS, 含 6 平台归档路径与 SHA-256,供主仓库构建时打包离线运行时与首启导入 - runtimes/versions-fallback.json:Node/Python/包管理器版本快照, 客户端联网查询失败时的兜底列表 - schemas + validate.mjs 映射 + 测试(与主仓库 lib/schemas/agent-service/runtime-manifest.ts 同源导出) - 不递增 presetDataVersion:runtimes/ 由客户端直接读取,不参与 compute.json 合并
This commit is contained in:
213
schemas/runtime-recommended.schema.json
Normal file
213
schemas/runtime-recommended.schema.json
Normal file
@@ -0,0 +1,213 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"description": "推荐运行时版本清单:决定构建时打进安装包、首启离线导入的 Python / Node.js 版本。由 config-center 仓库远端维护(30 分钟 git fetch 热更新),主仓库 defaults 内置保底种子",
|
||||
"required": [
|
||||
"python",
|
||||
"node",
|
||||
"minClientVersion"
|
||||
],
|
||||
"properties": {
|
||||
"python": {
|
||||
"type": "object",
|
||||
"description": "Python 推荐版本(python-build-standalone 发行版,经内置 Hatch 安装)。归档必须与内置 Hatch 版本 pin 的发布完全一致(tag + 文件名 + 变体),否则首启离线导入后 hatch 的更新判断会出现偏差",
|
||||
"required": [
|
||||
"name",
|
||||
"version",
|
||||
"distTag",
|
||||
"archives"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Hatch distribution 名(如 \"3.13\"):`hatch python install <name>` 的实参,也是安装目录 hatch/local/<name>/ 的目录名,幂等判断依据"
|
||||
},
|
||||
"version": {
|
||||
"type": "string",
|
||||
"description": "精确 Python 版本(如 \"3.13.9\"),仅用于展示与清单更新判断"
|
||||
},
|
||||
"distTag": {
|
||||
"type": "string",
|
||||
"description": "python-build-standalone 的 release tag(如 \"20251014\")"
|
||||
},
|
||||
"archives": {
|
||||
"type": "object",
|
||||
"description": "各平台归档的相对路径(相对下载源根目录)。键为 `<platform>-<arch>`(Node.js process.platform/arch 语义),值为源站 URL 尾部路径,同时也是 static/runtimes/<platform>-<arch>/ 下的落盘相对路径",
|
||||
"required": [
|
||||
"darwin-arm64",
|
||||
"darwin-x64",
|
||||
"win32-x64",
|
||||
"win32-arm64",
|
||||
"linux-x64",
|
||||
"linux-arm64"
|
||||
],
|
||||
"properties": {
|
||||
"darwin-arm64": {
|
||||
"type": "string",
|
||||
"description": "macOS Apple Silicon 的归档相对路径"
|
||||
},
|
||||
"darwin-x64": {
|
||||
"type": "string",
|
||||
"description": "macOS Intel 的归档相对路径"
|
||||
},
|
||||
"win32-x64": {
|
||||
"type": "string",
|
||||
"description": "Windows x64 的归档相对路径"
|
||||
},
|
||||
"win32-arm64": {
|
||||
"type": "string",
|
||||
"description": "Windows ARM64 的归档相对路径"
|
||||
},
|
||||
"linux-x64": {
|
||||
"type": "string",
|
||||
"description": "Linux x64 的归档相对路径"
|
||||
},
|
||||
"linux-arm64": {
|
||||
"type": "string",
|
||||
"description": "Linux ARM64 的归档相对路径"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"sha256": {
|
||||
"type": "object",
|
||||
"description": "各平台归档的 SHA-256 校验值(十六进制小写)。构建脚本下载后校验,防止归档被镜像/代理篡改或截断",
|
||||
"properties": {
|
||||
"darwin-arm64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "macOS Apple Silicon 归档的 SHA-256"
|
||||
},
|
||||
"darwin-x64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "macOS Intel 归档的 SHA-256"
|
||||
},
|
||||
"win32-x64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Windows x64 归档的 SHA-256"
|
||||
},
|
||||
"win32-arm64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Windows ARM64 归档的 SHA-256"
|
||||
},
|
||||
"linux-x64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Linux x64 归档的 SHA-256"
|
||||
},
|
||||
"linux-arm64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Linux ARM64 归档的 SHA-256"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"node": {
|
||||
"type": "object",
|
||||
"description": "Node.js 推荐版本(官方 dist 归档,经内置 Volta 安装)",
|
||||
"required": [
|
||||
"version",
|
||||
"archives"
|
||||
],
|
||||
"properties": {
|
||||
"version": {
|
||||
"type": "string",
|
||||
"description": "精确 Node.js 版本(如 \"24.18.0\",不带 v 前缀):`volta fetch node@<version>` 的实参。必须是精确三段版本——Volta 对 Exact 版本的解析完全离线,不访问 index.json"
|
||||
},
|
||||
"ltsCodename": {
|
||||
"type": "string",
|
||||
"description": "LTS 代号(如 \"Krypton\"),仅用于展示"
|
||||
},
|
||||
"archives": {
|
||||
"type": "object",
|
||||
"description": "各平台归档的相对路径(相对下载源根目录)。键为 `<platform>-<arch>`(Node.js process.platform/arch 语义),值为源站 URL 尾部路径,同时也是 static/runtimes/<platform>-<arch>/ 下的落盘相对路径",
|
||||
"required": [
|
||||
"darwin-arm64",
|
||||
"darwin-x64",
|
||||
"win32-x64",
|
||||
"win32-arm64",
|
||||
"linux-x64",
|
||||
"linux-arm64"
|
||||
],
|
||||
"properties": {
|
||||
"darwin-arm64": {
|
||||
"type": "string",
|
||||
"description": "macOS Apple Silicon 的归档相对路径"
|
||||
},
|
||||
"darwin-x64": {
|
||||
"type": "string",
|
||||
"description": "macOS Intel 的归档相对路径"
|
||||
},
|
||||
"win32-x64": {
|
||||
"type": "string",
|
||||
"description": "Windows x64 的归档相对路径"
|
||||
},
|
||||
"win32-arm64": {
|
||||
"type": "string",
|
||||
"description": "Windows ARM64 的归档相对路径"
|
||||
},
|
||||
"linux-x64": {
|
||||
"type": "string",
|
||||
"description": "Linux x64 的归档相对路径"
|
||||
},
|
||||
"linux-arm64": {
|
||||
"type": "string",
|
||||
"description": "Linux ARM64 的归档相对路径"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"sha256": {
|
||||
"type": "object",
|
||||
"description": "各平台归档的 SHA-256 校验值(十六进制小写)。构建脚本下载后校验,防止归档被镜像/代理篡改或截断",
|
||||
"properties": {
|
||||
"darwin-arm64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "macOS Apple Silicon 归档的 SHA-256"
|
||||
},
|
||||
"darwin-x64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "macOS Intel 归档的 SHA-256"
|
||||
},
|
||||
"win32-x64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Windows x64 归档的 SHA-256"
|
||||
},
|
||||
"win32-arm64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Windows ARM64 归档的 SHA-256"
|
||||
},
|
||||
"linux-x64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Linux x64 归档的 SHA-256"
|
||||
},
|
||||
"linux-arm64": {
|
||||
"type": "string",
|
||||
"pattern": "^[0-9a-f]{64}$",
|
||||
"description": "Linux ARM64 归档的 SHA-256"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
},
|
||||
"minClientVersion": {
|
||||
"type": "string",
|
||||
"description": "使用此清单所需的最低客户端版本(package.json#version 语义)。远端热更新的清单若要求高于当前客户端版本,则忽略远端、继续使用内置种子——防止老客户端的内置 Hatch/Volta 不认识新版本格式"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
132
schemas/runtime-versions-fallback.schema.json
Normal file
132
schemas/runtime-versions-fallback.schema.json
Normal file
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"description": "离线兜底版本清单:联网查询可安装版本列表失败时的替代数据,消除「空列表 + 无限重试」。各字段条目形状与对应实时接口的最终返回值完全同构,前端无需区分解析",
|
||||
"required": [
|
||||
"generatedAt",
|
||||
"node",
|
||||
"python",
|
||||
"pkgManagers"
|
||||
],
|
||||
"properties": {
|
||||
"generatedAt": {
|
||||
"type": "string",
|
||||
"description": "快照生成时间(ISO 8601),用于展示「离线列表可能不是最新」的提示"
|
||||
},
|
||||
"node": {
|
||||
"type": "array",
|
||||
"description": "Node.js 版本条目快照(nodejs.org/dist/index.json 元素子集,含 version/date/lts/npm 等字段)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"version"
|
||||
],
|
||||
"properties": {
|
||||
"version": {
|
||||
"type": "string",
|
||||
"description": "版本号(带 v 前缀,如 \"v24.18.0\")"
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"python": {
|
||||
"type": "array",
|
||||
"description": "Python 发行版条目快照(与 `hatch python show` 解析结果同构)",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"name",
|
||||
"version"
|
||||
],
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "Hatch distribution 名(如 \"3.13\"、\"pypy3.11\")"
|
||||
},
|
||||
"version": {
|
||||
"type": "string",
|
||||
"description": "精确版本号(如 \"3.13.9\")"
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"pkgManagers": {
|
||||
"type": "object",
|
||||
"description": "包管理器 release 条目快照(与 listAvailablePkgManagers 最终返回形状一致:已过滤预发布、yarn 已归一化 tag_name)",
|
||||
"required": [
|
||||
"npm",
|
||||
"pnpm",
|
||||
"yarn"
|
||||
],
|
||||
"properties": {
|
||||
"npm": {
|
||||
"type": "array",
|
||||
"description": "npm 的正式版本条目",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"tag_name"
|
||||
],
|
||||
"properties": {
|
||||
"tag_name": {
|
||||
"type": "string",
|
||||
"description": "版本 tag(如 \"v11.18.0\")"
|
||||
},
|
||||
"created_at": {
|
||||
"type": "string",
|
||||
"description": "发布时间(ISO 8601)"
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"pnpm": {
|
||||
"type": "array",
|
||||
"description": "pnpm 的正式版本条目",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"tag_name"
|
||||
],
|
||||
"properties": {
|
||||
"tag_name": {
|
||||
"type": "string",
|
||||
"description": "版本 tag(如 \"v10.12.1\")"
|
||||
},
|
||||
"created_at": {
|
||||
"type": "string",
|
||||
"description": "发布时间(ISO 8601)"
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
},
|
||||
"yarn": {
|
||||
"type": "array",
|
||||
"description": "yarn (berry) 的正式版本条目",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"tag_name"
|
||||
],
|
||||
"properties": {
|
||||
"tag_name": {
|
||||
"type": "string",
|
||||
"description": "版本 tag(如 \"v4.17.0\",已从 name 字段归一化)"
|
||||
},
|
||||
"created_at": {
|
||||
"type": "string",
|
||||
"description": "发布时间(ISO 8601)"
|
||||
}
|
||||
},
|
||||
"additionalProperties": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
}
|
||||
Reference in New Issue
Block a user