chore(release): bump default image baseline to v0.1.5
parent
da018d515d
commit
914436ac3b
|
|
@ -272,8 +272,8 @@ def _ensure_botinstance_columns() -> None:
|
||||||
"mysql": "LONGTEXT",
|
"mysql": "LONGTEXT",
|
||||||
},
|
},
|
||||||
"image_tag": {
|
"image_tag": {
|
||||||
"postgresql": "TEXT DEFAULT 'nanobot-base:v0.1.4'",
|
"postgresql": "TEXT DEFAULT 'nanobot-base:v0.1.5'",
|
||||||
"mysql": "VARCHAR(255) DEFAULT 'nanobot-base:v0.1.4'",
|
"mysql": "VARCHAR(255) DEFAULT 'nanobot-base:v0.1.5'",
|
||||||
},
|
},
|
||||||
"access_password": {
|
"access_password": {
|
||||||
"postgresql": "TEXT DEFAULT ''",
|
"postgresql": "TEXT DEFAULT ''",
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import docker
|
||||||
|
|
||||||
|
|
||||||
class BotDockerManager:
|
class BotDockerManager:
|
||||||
def __init__(self, host_data_root: str, base_image: str = "nanobot-base:v0.1.4"):
|
def __init__(self, host_data_root: str, base_image: str = "nanobot-base:v0.1.5"):
|
||||||
try:
|
try:
|
||||||
self.client = docker.from_env(timeout=6)
|
self.client = docker.from_env(timeout=6)
|
||||||
self.client.version()
|
self.client.version()
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class BotInstance(SQLModel, table=True):
|
||||||
docker_status: str = Field(default="STOPPED", index=True)
|
docker_status: str = Field(default="STOPPED", index=True)
|
||||||
current_state: Optional[str] = Field(default="IDLE")
|
current_state: Optional[str] = Field(default="IDLE")
|
||||||
last_action: Optional[str] = Field(default=None)
|
last_action: Optional[str] = Field(default=None)
|
||||||
image_tag: str = Field(default="nanobot-base:v0.1.4") # 记录该机器人使用的镜像版本
|
image_tag: str = Field(default="nanobot-base:v0.1.5") # 记录该机器人使用的镜像版本
|
||||||
node_id: str = Field(default="local", index=True)
|
node_id: str = Field(default="local", index=True)
|
||||||
transport_kind: str = Field(default="direct", index=True)
|
transport_kind: str = Field(default="direct", index=True)
|
||||||
runtime_kind: str = Field(default="docker", index=True)
|
runtime_kind: str = Field(default="docker", index=True)
|
||||||
|
|
@ -36,7 +36,7 @@ class BotMessage(SQLModel, table=True):
|
||||||
class NanobotImage(SQLModel, table=True):
|
class NanobotImage(SQLModel, table=True):
|
||||||
__tablename__ = "bot_image"
|
__tablename__ = "bot_image"
|
||||||
|
|
||||||
tag: str = Field(primary_key=True) # e.g., nanobot-base:v0.1.4
|
tag: str = Field(primary_key=True) # e.g., nanobot-base:v0.1.5
|
||||||
image_id: Optional[str] = Field(default=None) # Docker 内部的 Image ID
|
image_id: Optional[str] = Field(default=None) # Docker 内部的 Image ID
|
||||||
version: str # e.g., 0.1.4
|
version: str # e.g., 0.1.4
|
||||||
status: str = Field(default="READY") # READY, BUILDING, ERROR
|
status: str = Field(default="READY") # READY, BUILDING, ERROR
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ EDGE_RELOAD = str(os.getenv("EDGE_RELOAD", "true")).strip().lower() in {"1", "tr
|
||||||
EDGE_AUTH_TOKEN = str(os.getenv("EDGE_AUTH_TOKEN", "") or "").strip()
|
EDGE_AUTH_TOKEN = str(os.getenv("EDGE_AUTH_TOKEN", "") or "").strip()
|
||||||
EDGE_NODE_ID = str(os.getenv("EDGE_NODE_ID", "local") or "local").strip().lower() or "local"
|
EDGE_NODE_ID = str(os.getenv("EDGE_NODE_ID", "local") or "local").strip().lower() or "local"
|
||||||
EDGE_NODE_NAME = str(os.getenv("EDGE_NODE_NAME", "Local Node") or "Local Node").strip() or "Local Node"
|
EDGE_NODE_NAME = str(os.getenv("EDGE_NODE_NAME", "Local Node") or "Local Node").strip() or "Local Node"
|
||||||
EDGE_BASE_IMAGE = str(os.getenv("EDGE_BASE_IMAGE", "nanobot-base:v0.1.4") or "nanobot-base:v0.1.4").strip()
|
EDGE_BASE_IMAGE = str(os.getenv("EDGE_BASE_IMAGE", "nanobot-base:v0.1.5") or "nanobot-base:v0.1.5").strip()
|
||||||
EDGE_LOG_LEVEL = str(os.getenv("EDGE_LOG_LEVEL", "warning") or "warning").strip().lower() or "warning"
|
EDGE_LOG_LEVEL = str(os.getenv("EDGE_LOG_LEVEL", "warning") or "warning").strip().lower() or "warning"
|
||||||
EDGE_ACCESS_LOG = str(os.getenv("EDGE_ACCESS_LOG", "false")).strip().lower() in {"1", "true", "yes", "on"}
|
EDGE_ACCESS_LOG = str(os.getenv("EDGE_ACCESS_LOG", "false")).strip().lower() in {"1", "true", "yes", "on"}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ from app.runtime.base import EdgeRuntimeBackend
|
||||||
class EdgeDockerManager(EdgeRuntimeBackend):
|
class EdgeDockerManager(EdgeRuntimeBackend):
|
||||||
runtime_kind = "docker"
|
runtime_kind = "docker"
|
||||||
|
|
||||||
def __init__(self, host_data_root: str, base_image: str = "nanobot-base:v0.1.4") -> None:
|
def __init__(self, host_data_root: str, base_image: str = "nanobot-base:v0.1.5") -> None:
|
||||||
try:
|
try:
|
||||||
self.client = docker.from_env(timeout=6)
|
self.client = docker.from_env(timeout=6)
|
||||||
self.client.version()
|
self.client.version()
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ export const imageFactoryEn = {
|
||||||
noRegistered: 'No registered image in DB.',
|
noRegistered: 'No registered image in DB.',
|
||||||
dockerTitle: 'Docker Local Images',
|
dockerTitle: 'Docker Local Images',
|
||||||
dockerDesc: 'System no longer scans engines. Register from docker images only.',
|
dockerDesc: 'System no longer scans engines. Register from docker images only.',
|
||||||
dockerTip: 'Build manually then register: docker build -f Dashboard.Dockerfile.manual -t nanobot-base:v0.1.4 .',
|
dockerTip: 'Build manually then register: docker build -f Dashboard.Dockerfile.manual -t nanobot-base:v0.1.5 .',
|
||||||
update: 'Update',
|
update: 'Update',
|
||||||
register: 'Register',
|
register: 'Register',
|
||||||
noDocker: 'No local nanobot-base:* image found.',
|
noDocker: 'No local nanobot-base:* image found.',
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ export const imageFactoryZhCn = {
|
||||||
noRegistered: '数据库暂无登记镜像。',
|
noRegistered: '数据库暂无登记镜像。',
|
||||||
dockerTitle: '可登记镜像(Docker 本地)',
|
dockerTitle: '可登记镜像(Docker 本地)',
|
||||||
dockerDesc: '系统不再扫描 engines,仅从 docker images 获取并手工登记。',
|
dockerDesc: '系统不再扫描 engines,仅从 docker images 获取并手工登记。',
|
||||||
dockerTip: '建议手工构建后再登记: docker build -f Dashboard.Dockerfile.manual -t nanobot-base:v0.1.4 .',
|
dockerTip: '建议手工构建后再登记: docker build -f Dashboard.Dockerfile.manual -t nanobot-base:v0.1.5 .',
|
||||||
update: '更新登记',
|
update: '更新登记',
|
||||||
register: '加入数据库',
|
register: '加入数据库',
|
||||||
noDocker: '本地没有 nanobot-base:* 镜像,请先手工构建。',
|
noDocker: '本地没有 nanobot-base:* 镜像,请先手工构建。',
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ export const managementEn = {
|
||||||
noEngine: 'No source detected (please git clone into engines/)',
|
noEngine: 'No source detected (please git clone into engines/)',
|
||||||
buildHint: 'Backend scans this directory and runs `pip install .` for image build',
|
buildHint: 'Backend scans this directory and runs `pip install .` for image build',
|
||||||
defineVersion: '2. Define version tag',
|
defineVersion: '2. Define version tag',
|
||||||
versionPlaceholder: 'e.g. 0.1.4-custom',
|
versionPlaceholder: 'e.g. 0.1.5-custom',
|
||||||
startBuild: 'Start Build',
|
startBuild: 'Start Build',
|
||||||
readySection: 'Ready Image Versions',
|
readySection: 'Ready Image Versions',
|
||||||
source: 'Source',
|
source: 'Source',
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ export const managementZhCn = {
|
||||||
noEngine: '未检测到源码 (请先 git clone 到 engines/)',
|
noEngine: '未检测到源码 (请先 git clone 到 engines/)',
|
||||||
buildHint: '后端将扫描该目录并执行 `pip install .` 构建镜像',
|
buildHint: '后端将扫描该目录并执行 `pip install .` 构建镜像',
|
||||||
defineVersion: '2. 定义版本号 (Version Tag)',
|
defineVersion: '2. 定义版本号 (Version Tag)',
|
||||||
versionPlaceholder: '例如: 0.1.4-custom',
|
versionPlaceholder: '例如: 0.1.5-custom',
|
||||||
startBuild: '开始构建镜像',
|
startBuild: '开始构建镜像',
|
||||||
readySection: '已就绪的镜像版本',
|
readySection: '已就绪的镜像版本',
|
||||||
source: '来源',
|
source: '来源',
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ export function ManagementModule() {
|
||||||
<div className="flex items-center gap-2 text-slate-500 mb-2">
|
<div className="flex items-center gap-2 text-slate-500 mb-2">
|
||||||
<Layers size={14} /> <span className="text-[10px] font-bold uppercase tracking-widest">{t.kernel}</span>
|
<Layers size={14} /> <span className="text-[10px] font-bold uppercase tracking-widest">{t.kernel}</span>
|
||||||
</div>
|
</div>
|
||||||
<p className="text-sm font-mono text-blue-400 truncate">{selectedBot.image_tag || 'nanobot-base:v0.1.4'}</p>
|
<p className="text-sm font-mono text-blue-400 truncate">{selectedBot.image_tag || 'nanobot-base:v0.1.5'}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="bg-black/20 p-4 rounded-xl border border-white/5">
|
<div className="bg-black/20 p-4 rounded-xl border border-white/5">
|
||||||
<div className="flex items-center gap-2 text-slate-500 mb-2">
|
<div className="flex items-center gap-2 text-slate-500 mb-2">
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ export function CreateBotModal({ isOpen, onClose, onSuccess }: CreateBotModalPro
|
||||||
llm_model: 'gpt-4o',
|
llm_model: 'gpt-4o',
|
||||||
api_key: '',
|
api_key: '',
|
||||||
system_prompt: t.systemPrompt,
|
system_prompt: t.systemPrompt,
|
||||||
image_tag: 'nanobot-base:v0.1.4',
|
image_tag: 'nanobot-base:v0.1.5',
|
||||||
});
|
});
|
||||||
|
|
||||||
const [availableImages, setAvailableImages] = useState<NanobotImage[]>([]);
|
const [availableImages, setAvailableImages] = useState<NanobotImage[]>([]);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue