Files
Genarrative/server-rs/crates/shared-contracts
suzmii 47b5a17f54 合并 origin/master 到 chore/rust-compile-warnings(第二次同步):按 M/D/G 分桶解冲突
origin/master = e6933762d(落后 106 提交);合并前本分支 HEAD = 1612ee944。
冲突只有 5 处,codex 区域 0 冲突。

M 桶(master 改过的文件 → 取 master 版本,不把我们的删除加回去):
- agent/codex_app_server/**(mod.rs、model_catalog.rs、model_catalog/auth_handoff.rs、real_tests.rs)、
  agent/codex_cli.rs、agent/codex_provider_proxy.rs、build_support/codex_bundle.rs 均与新 master 逐字节相同。
  其中 real_tests.rs / codex_bundle.rs / direct_project_identity.rs 一并取 master 版本,清掉了本分支先前
  在这几个文件里留下的多余 diff(口径:codex 区域一行不删不改)。
- 唯一保留的 codex 侧差异是 codex_app_server/mod.rs 的 1 行:resolve_direct_codex_project_authority
  的 `pub(super)` → `pub(in crate::agent)`。挂载到 codex_provider 后 `pub(super)` 对兄弟模块
  direct_tools_mcp.rs 不可见(E0603),这是收敛必需的适配,不是清理残留。

D 桶(master 未动过、我们删的死码 → 保留删除):patchset.rs、git_inspect.rs、
process_session/{io,lifecycle,persistence,recovery}.rs、generation/pass_artifacts.rs、
agent/runtime_models.rs、debug.rs(+debug/debug_drafts.rs)、process_session/tests/owner_fixture_cleanup.rs 等。
⚠ 复核发现 D 清单里 3 个文件本轮被 master 改过(`git log a8ae81720..origin/master -- <path>` 非 0),逐条判定:
  - repository_context.rs(ad0877219:should_ignore_directory 的 "exports" → ".export"):该函数所在的
    仓库扫描实现已在更早的退役批次(6d5436541)判为不可达并删除,全仓已无该符号 → 改动无处生效,保留删除。
  - generation/pass_artifacts.rs(b04aceb57:黑板字符串去掉「发布包装:exports/README.md」):内容已并入
    project/memory.rs(fbea59251),全仓已无该字符串 → 无需承接,保留删除。
  - generation/draft_writer.rs(b04aceb57 −16:删掉 exports/README.md 写入):属 legacy draft 生成链,
    已在 22540a874 整体退役;全仓 grep 0 引用,恢复只会留下未挂载的孤立文件 → 保留删除。

G 桶(双方都改、我们那侧不改变行为 → 以 master 语义为准):
- agent/generation/trace.rs:唯一冲突块里 master 只把 "exports/README.md" 从产物清单里删掉,而该函数
  (append_local_artifact_write_step)已由我们在退役批次里整段删除 → 保留我们的删除。
- useGameDistributionPublishForm.ts:master 本轮删除该文件(b04aceb57),我们侧只有上一轮同步带来的错误
  正文改动 → 取 master 语义(删除)。

其余文件由 git 自动合并。本提交不含新写的功能改动:收敛形态与残留清理见后续提交。
2026-10-07 16:58:52 +08:00
..

shared-contracts 共享 crate 说明

日期:2026-04-21

1. crate 职责

shared-contracts 是前后端兼容 contract 共享 crate,后续负责:

  1. HTTP 请求与响应 DTO
  2. SSE 事件结构与事件名约定
  3. response envelope、错误结构、兼容头部契约
  4. 各模块对外暴露的共享协议类型

2. 当前阶段说明

当前阶段已完成 Stage1 最小真实落地:

  1. 统一 response envelope / 头部常量
  2. auth/login-options
  3. auth/me
  4. auth/sessions
  5. runtime/settings

当前阶段继续补齐的 Stage2 鉴权 DTO:

  1. auth/entry
  2. auth/refresh
  3. auth/logout
  4. auth/logout-all
  5. auth/phone/send-code
  6. auth/phone/login
  7. auth/wechat/start
  8. auth/wechat/callback
  9. auth/wechat/bind-phone
  10. auth/wechat/miniprogram-login

当前阶段继续补齐的 Stage3 公开请求 DTO:

  1. assets/direct-upload-tickets
  2. assets/read-url
  3. assets/objects/confirm
  4. assets/objects/bind
  5. story-sessions/begin
  6. story-sessions/continue

当前阶段继续补齐的 Stage4 显式成功响应 DTO:

  1. assets/direct-upload-tickets
  2. assets/read-url
  3. assets/objects/confirm
  4. assets/objects/bind
  5. story-sessions/begin
  6. story-sessions/continue

当前阶段新增 Stage6 character visual 兼容 DTO:

  1. assets/character-visual/generate
  2. assets/character-visual/jobs/:taskId
  3. assets/character-visual/publish

当前阶段新增 Stage7 character animation 模板与导入兼容 DTO:

  1. assets/character-animation/templates
  2. assets/character-animation/import-video

当前阶段新增 Stage8 character workflow cache 第一批兼容 DTO:

  1. assets/character-workflow-cache
  2. assets/character-workflow-cache/:characterId

当前阶段新增 Stage9 character animation 主链兼容 DTO:

  1. assets/character-animation/generate
  2. assets/character-animation/jobs/:taskId
  3. assets/character-animation/publish

当前阶段新增 Stage5 story session scoped runtime story 写读 DTO:

  1. BeginStoryRuntimeSessionRequest
  2. ResolveStoryRuntimeActionRequest
  3. StoryRuntimeProjectionResponse
  4. StoryRuntimeMutationResponse
  5. StoryRuntimeSnapshotPayload 仅用于 story session scoped 写侧持久化边界,不复用旧 /api/runtime/story/* 总入口 contract。

WP-DEL 已删除旧 runtime story HTTP DTO:RuntimeStoryStateResolveRequest、RuntimeStoryBootstrapRequest/Response、RuntimeStoryActionResponse 和旧 RuntimeStorySnapshotPayload。runtime_story 模块中仍保留的 RuntimeStoryViewModel、RuntimeStoryPresentation、RuntimeStoryPatch 与 battle presentation 是当前投影/表现构件,不作为旧 HTTP 写入口。

当前仍刻意未做:

  1. SSE 事件结构
  2. 自动代码生成或跨语言 contract 同步
  3. 其他尚未收口模块的 handler 响应体显式 DTO 化

3. 边界约束

  1. shared-contracts 只放协议类型与兼容结构,不承接业务规则、供应商适配或状态写入逻辑。
  2. 各模块 crate 对外暴露的协议优先复用这里的共享定义,避免重复散落。
  3. 前端兼容契约一旦进入本 crate,就必须与任务清单和基线文档同步维护。
  4. assets 模块依赖 platform-oss 的稳定返回类型,默认通过 oss-contracts feature 给 api-server 使用;SpacetimeDB WASM 构建链路必须通过 workspace 依赖关闭默认 feature,避免把 platform-oss / reqwest / wasm-bindgen 带进 spacetime-module。