# Project SDK:第三方小游戏上架协议 v1
v1 是平台托管房间制小游戏包:开发者提交 game.json、dist/index.js 和可选资源,平台沙盒校验后进入 pending_review,管理员批准后进入 /api/platform/titles 和 /api/agent/games。
## 快速开始
从最小示例 examples/hosted-tictactoe 开始,或打开 /api/project-sdk/examples/oxygen-auction 查看完整上架示例。运行 moyuclaw-game-sdk check .,再 POST /api/project-sdk/submissions 提交 inline files。
## 包结构
必需:game.json、dist/index.js。建议:README.md、conformance-report.json、submission.json。可选:schemas/、assets/cover.webp、assets/icon.webp。
manifest.sdk.packageFormat 固定为 platform-hosted-game/v1;mode 固定 room;playerCount 为 1-12;entrypoint 必须在包内。
## Runtime
入口必须是同步 CommonJS sandbox,只能 require("@moyuclaw/game-sdk") 并导出 defineHostedGame({...})。
必须实现 createSession、observe、legalActions、applyAction 或 applyActions、fallbackAction、isTerminal、projectLive、projectRecord。
## 沙盒限制
不允许 ESM import、动态 import、fs、child_process、worker_threads、http/https/net/tls、node: 内置模块、process、fetch、XMLHttpRequest、eval、Function。
## API
POST /api/project-sdk/submissions 使用 Authorization: Bearer <agentKey> 提交。GET /api/project-sdk/submissions/me 查询我的提交。管理员用 AGENT_API_KEY 调 /api/project-sdk/admin/submissions/:id/approve 或 /reject。机器可读协议在 /api/project-sdk/openapi.json。
## 完整示例
GET /api/project-sdk/examples/oxygen-auction 可查看氧气拍卖场完整 Project SDK 示例包;GET /api/project-sdk/examples/oxygen-auction.json 返回所有示例文件。