k88936
|
5d5aafe251
|
删除无人消费的认证失败分类字段与 error_kind 映射
- 删除 ClientAuthError::error_kind():该分类由本次改动自行发明,全仓无消费方
- 删除 ClientAuthStateView.error_kind 字段及 4 个赋值点(含 read_client_auth_state 里写死的 "network")
- 删除 clientAuth.ts RustAuthStateView 的 errorKind 声明,该字段从未被读取
- 保留行为不变:失败仍以 error_message 投影,前端只看 status/user/apiBaseUrl/errorMessage
|
2026-10-01 16:39:14 +08:00 |
|
k88936
|
387dba37f3
|
Merge remote-tracking branch 'origin/master' into fix/log-cmd-refuse-reason
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m5s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m20s
Project CI / Backend tests (pull_request) Successful in 4m42s
Project CI / Native shell tests (pull_request) Successful in 5m49s
Project CI / Frontend tests (pull_request) Successful in 2m1s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m47s
Project CI / Repository checks (pull_request) Successful in 2m26s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 12m7s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 11m44s
# Conflicts:
# docs/project-memory/shared-memory/decision-log.md
|
2026-10-01 16:21:11 +08:00 |
|
k88936
|
774f95be94
|
Merge pull request '退役 DirectProject 工具调用与回合流账本' (#560) from refactor/remove-toolcall.jsonl-legacy into master
Project CI / AI game creator shell Rust crates (push) Successful in 1m35s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m17s
Project CI / Backend tests (push) Successful in 4m8s
Project CI / Frontend tests (push) Successful in 1m49s
Project CI / Native shell tests (push) Successful in 6m21s
Project CI / Repository checks (push) Successful in 2m24s
Project CI / AI game creator shell web tests (push) Successful in 1m43s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 10m25s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 11m50s
Reviewed-on: #560
|
2026-10-01 16:13:14 +08:00 |
|
k88936
|
ba79cbcece
|
Merge remote-tracking branch 'origin/master' into fix/log-cmd-refuse-reason
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m14s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m47s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
|
2026-10-01 16:10:34 +08:00 |
|
k88936
|
454fbd5e91
|
Merge remote-tracking branch 'origin/master' into fix/wrong-report
|
2026-10-01 16:09:14 +08:00 |
|
k88936
|
2220682e58
|
修正回合绑定失败被说成回包丢失
- ResponseDeliveryFailure 新增 interrupt_reason,按 cause 给回合终态说明
- 只有 response-write-failed 保留「执行许可回包丢失」;turn-bind-mismatch 改为说明回合绑定不一致、作用域无法确认
- 新增 response_delivery_failure_texts_match_their_cause 用例钉住两句文案
- 同步更新 shared-memory 决策记录里的收束说明口径
|
2026-10-01 16:08:00 +08:00 |
|
k88936
|
90d37481a4
|
注释澄清认证错误形状读取不校验 status 是有意为之
- isClientAuthError 文档写明 status 故意不校验:无调用方读它,纳入校验会把可用文案换成兜底文案
- 需要 status 参与判断时先补校验再用
|
2026-10-01 16:06:12 +08:00 |
|
k88936
|
8b50db9893
|
修复登录失败分流把空文案的业务变体误判为需上报
- resolveClientAuthFailure 改用 clientAuthErrorKind 判分流,不再用 clientAuthErrorNotice 是否为 null 当判据
- 空文案的 input/session 变体改为给兜底提示、不进错误池,保持"预期拒绝永不进池"的约束
- clientAuthErrorNotice 文档注明 null 同时表示 fault 与空文案,不能当分流判据
- clientAuthHost.test.ts 增加空文案业务变体的分流用例
|
2026-10-01 16:05:47 +08:00 |
|
k88936
|
6a1973b0e3
|
Merge remote-tracking branch 'origin/master' into feat/typed-tool-error
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m44s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m19s
Project CI / Backend tests (pull_request) Successful in 3m55s
Project CI / Frontend tests (pull_request) Successful in 2m16s
Project CI / Native shell tests (pull_request) Successful in 6m55s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 10m2s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m28s
Project CI / Repository checks (pull_request) Successful in 2m57s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m18s
# Conflicts:
# apps/ai-game-creator-shell/src-tauri/src/agent/direct_tools_mcp.rs
# docs/project-memory/shared-memory/decision-log.md
|
2026-10-01 16:04:30 +08:00 |
|
k88936
|
fbfc0b62b9
|
审批解析移出临界区后再留痕
- respond 的 target 解析抽成 resolve_approval_gate,锁内只做状态判定与 ticket 登记
- 新增 ApprovalGateOutcome(Proceed / Cached / Deny),拒绝原因带出临界区,state 释放后才调用 denied 写日志
- 拒绝留痕不再持有 state 做同步文件 I/O(app_log 写入与日志轮转),不再拉长审批临界区
- 15 条拒绝原因分类逐条等价迁移,行为与返回形状不变
|
2026-10-01 16:04:02 +08:00 |
|
k88936
|
a723d10ce3
|
回退列表工具 offset 上限的收窄,agc_list_registered_assets 恢复无上限
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 38s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 47s
Project CI / AI game creator shell Rust smoke (pull_request) Failing after 43s
Project CI / Backend tests (pull_request) Failing after 15s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m17s
Project CI / Repository checks (pull_request) Failing after 28s
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
- 回退 4e5adb2a3:page 的 max_offset 恢复成 Option<usize>,删掉 TOOL_PAGE_MAX_OFFSET 常量
- agc_list_registered_assets 传 None(offset 无上限,与它原本的行为一致),agc_list_project_files / agc_list_account_assets 仍传原来的 Some(500)
- agc_list_registered_assets 的 inputSchema offset 去掉 maximum: 500,恢复到原公开入参范围
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: 41 passed / 0 failed
|
2026-10-01 15:56:49 +08:00 |
|
k88936
|
75d9e25634
|
首尾换行回到按空白裁剪,不再当控制字符报错
- 回退 3f70c6911 的收紧:optional_text 恢复成先 trim、再查 is_control
- prompt 末尾带 \n(\r\n 等)视为普通首尾空白裁掉,与首尾空格同口径;中间的控制字符仍然报 has_control_characters
- 测试改为断言行尾换行被接受且裁成 "生成过场",另加一条中间换行仍被拒的断言
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: 41 passed / 0 failed
|
2026-10-01 15:56:12 +08:00 |
|
k88936
|
493457c3ea
|
拒绝原因留痕前统一脱敏
- log_denied_reason 在唯一出口调用 sanitize_diagnostic_message,透传的宿主错误文本不再把绝对路径写进日志
- 去重键改用脱敏后的文本,内存与 stderr 拷贝同样不带原文
- 新增 denied_reason_logging_scrubs_embedded_paths 用例固化该约定
- 同步更新 shared-memory 决策记录里的脱敏口径
|
2026-10-01 15:48:25 +08:00 |
|
k88936
|
ce4ada8bb3
|
回包失败留痕改为记录真实原因
- response_write_failed 改名为 response_delivery_failed,新增 ResponseDeliveryFailure 枚举
- 两个调用点分别传 Write(stdin 写入 / flush 失败)与 TurnBindMismatch(bind_turn 返回 false)
- 日志键改为 agent.direct_codex.approval.response_delivery_failed 并带 cause 字段,回合绑定失败不再被误报成写入失败
- 同步更新 shared-memory 决策记录里的日志键口径
|
2026-10-01 15:44:25 +08:00 |
|
k88936
|
e3041d84e5
|
未绑定执行器与回包失败的留痕加有界去重
- 未绑定宿主执行器的交互兜底按进程级 (method, outcome) 只写第一行,新增 distinct_outcomes
- 适配器拒绝留痕抽出共用的 log_once,回包未送达同样按回合内原因只记一次
- 上限沿用 MAX_DENIED_REASON_LOGS = 64,模型重试不再逐次刷日志
- 同步更新 shared-memory 决策记录里的去重口径
|
2026-10-01 15:41:26 +08:00 |
|
k88936
|
7c67a6fcc0
|
agc_generate_image 的 kind 传了非字符串不再静默当成 image
- bridge_image_generation_kind 原来用 and_then(Value::as_str)…unwrap_or("image"):{"kind":true}、{"kind":5}、{"kind":[]} 都会被当成 image 继续生成;空串也会被静默当默认值
- 改成按 schema 语义区分:缺省与显式 null 用默认 image;字符串按原值走 canonical 校验(空串/未知值走 KindUnsupported);其它类型返回新的 GenerateImageError::KindNotText { got }
- 测试补四条断言:kind=true 报「kind 必须是字符串」、kind="" 报「不是受支持的素材类型」、缺省与 null 仍解析为 image
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: 41 passed;agent:: tests::project:: 1078 passed(两条失败为既有 flaky:art_director_request_exposes_canvas_only_for_the_keyed_owner_route / background_agent_runtime_can_generate_platform_art_asset,单独重跑通过)
|
2026-10-01 15:39:56 +08:00 |
|
k88936
|
c34e45e0c4
|
未绑定执行器时的交互拒绝按真实结果留痕
- 未绑定宿主执行器的交互兜底不再一律记成审批拒绝
- 新增稳定键 agent.direct_codex.interaction.no_adapter,字段为 method / outcome / request_id
- outcome 区分 decline / empty-permissions / unsupported-method,权限申请与未知方法不再被误标为 decline
- 同步更新 shared-memory 决策记录里的日志键口径
|
2026-10-01 15:38:05 +08:00 |
|
k88936
|
b61fa52e8f
|
AGC 登录失败按类型化变体分流:业务拒绝不再进错误池
- AuthenticatedClient 登录/发码 catch 改用 resolveClientAuthFailure:input/session 变体只给提示,fault 变体与未识别拒绝包成 ClientActionError 交给错误池
- clientAuth.ts 新增 resolveClientAuthFailure,判定只看结构化 type,不做文案匹配
- 删除 errorReporting.ts 的 shouldCaptureClientError,不再存在叶子自行判定要不要上报的口径
- clientAuthHost.test.ts 新增分流用例,auth.suite.ts 的登录失败用例改为结构化拒绝并断言提示文案
|
2026-10-01 15:33:47 +08:00 |
|
lhk229
|
55375b1406
|
清理测试编译warning (#509)
Project CI / AI game creator shell Rust crates (push) Successful in 1m18s
Project CI / AI game creator shell Rust smoke (push) Successful in 1m30s
Project CI / Backend tests (push) Successful in 3m58s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 10m12s
Project CI / Native shell tests (push) Successful in 5m49s
Project CI / Frontend tests (push) Successful in 2m18s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 9m50s
Project CI / AI game creator shell web tests (push) Failing after 2m11s
Project CI / Repository checks (push) Successful in 2m55s
Reviewed-on: https://git.genarrative.world/git/GenarrativeAI/Genarrative/pulls/509
Co-authored-by: Linghong <ink29535@proton.me>
Co-committed-by: Linghong <ink29535@proton.me>
|
2026-10-01 15:29:23 +08:00 |
|
k88936
|
5013f4385f
|
AGC 前端错误分流基元:ClientActionError 与认证变体分类
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m50s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m9s
Project CI / Backend tests (pull_request) Failing after 16s
Project CI / Frontend tests (pull_request) Successful in 2m3s
Project CI / Repository checks (pull_request) Failing after 14s
Project CI / AI game creator shell web tests (pull_request) Failing after 1m42s
Project CI / Native shell tests (pull_request) Successful in 5m41s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m10s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 11m9s
- 新增 clientActionError.ts:ClientActionError 承载 source/action/page 上下文与 cause
- 新增 clientAuthError.ts:isClientAuthError 形状读取 + clientAuthErrorKind 的 input/session/fault 分类 + clientAuthErrorNotice 文案
- captureClientError 解包 ClientActionError 的上下文,并优先使用 cause 的栈信息
- getClientAuthErrorMessage 认识结构化拒绝,非 Error 形状不再字符串化成 [object Object]
- 新增 clientAuthError.test.ts,并在 errorReporting.test.ts 用解包用例替换 shouldCaptureClientError 用例
|
2026-10-01 15:27:31 +08:00 |
|
k88936
|
fe62482547
|
Merge branch 'master' into refactor/remove-toolcall.jsonl-legacy
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m53s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m39s
Project CI / Backend tests (pull_request) Successful in 4m10s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 7m34s
Project CI / Native shell tests (pull_request) Successful in 6m15s
Project CI / Frontend tests (pull_request) Successful in 2m15s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m23s
Project CI / Repository checks (pull_request) Successful in 2m45s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m19s
|
2026-10-01 15:24:49 +08:00 |
|
k88936
|
3f70c69119
|
首尾的控制字符不再被 trim 静默吞掉,统一按控制字符报错
- optional_text 原来先 trim 再查 is_control:`"prompt\n"`、`"\tprompt"` 这类落在首尾的控制字符被静默裁掉、当成合法值,而同一个字符出现在中间却会报错
- 改成先按原串查控制字符,再用 trim 做空值与长度判定:控制字符在哪个位置都报 has_control_characters
- 纯空白值("\n\t"、" ")仍然算空值、报原来的 empty 错误;首尾的普通空格仍按原样裁掉
- 测试补三条断言:prompt 末尾带 \n 必须被拒、纯空白 brief 仍报空、brief 首尾普通空格仍会被裁剪
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent:: 953 passed / 0 failed
|
2026-10-01 15:18:02 +08:00 |
|
k88936
|
8d55f71911
|
AGC 认证命令错误结构化
- 新增 auth_error.rs:ClientAuthError 具体变体枚举,serde tag=type + ts-rs 导出,附变体名契约测试
- auth_session.rs 全量改为 Result<_, ClientAuthError>:请求/响应/凭据落盘/运行时会话安装按具体变体建模
- 路由语义由变体承担:会话 401/403 走 SessionAuthorityRejected/PermissionDenied,登录 401 保留服务端原因
- 400 变体按请求粒度命名(passwordEntryInputRejected 等),服务端只给 status+message,不做文案匹配
- 注册 auth_error 模块,生成 src/services/generated/ClientAuthError.ts
|
2026-10-01 15:13:57 +08:00 |
|
k88936
|
66e4ece692
|
入参给了非字符串值时按字段报类型错,不再混进「不能为空」
- ToolTextField 增加 not_text(got),optional_text 在 as_str() 失败时返回它;原来数字/布尔/数组/对象会和空串、null 一起落到 field.empty(),{"prompt":5} 报成「prompt 不能为空」
- 9 个工具 enum 按字段各加一个 NotText 变体(KindNotText、PromptNotText、AspectRatioNotText…),文案形如「生成图片失败:aspectRatio 必须是字符串,当前是「5」。」,仍是一 case 一变体、文案写在变体上
- GenerateImageTextField 改为实现 ToolTextField,删掉 generate_image_optional_text / generate_image_required_text 这两份与共享实现重复的拷贝,generate_image 改走 optional_text / required_text
- 空串 / null / 缺省仍按原来的空值语义处理,只有「有值但不是字符串」换成类型错
- 新增 non_text_field_values_report_a_type_error_instead_of_an_empty_value 覆盖 create_or_derive、prepare_game_art、generate_image 三条路径
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: 41 passed;全量 agent:: 952 passed(唯一失败 concurrent_distinct_frozen_root_steers_create_only_one_replacement 是既有 flaky,单独重跑通过)
|
2026-10-01 15:01:20 +08:00 |
|
k88936
|
fe200598c0
|
文档先行:AGC 命令错误结构化与错误报告口径
- 新增 ADR:命令错误按具体变体结构化(ts-rs 导出)、报告池只收没人处理的错误、前端按 type 分流不匹配文案
- 更新【技术方案】AGC错误报告与诊断上传:采集口径改为"只收没有调用方处理的错误",补命令变体分流与 clientApi 边界
- 更新共享记忆 decision-log:记录本次口径与影响范围
- 更新共享记忆 pitfalls:记录"输错密码被当成客户端缺陷上报"的现象、根因与判据
- 修正 DirectTurnError 模块注释中"命令边界只给字符串"的过期描述,改为结构化拒单载荷
- docs/README.md 登记新 ADR
|
2026-10-01 14:52:28 +08:00 |
|
k88936
|
4e5adb2a30
|
分页 offset 上限收成必填参数与单一常量,三个列表工具口径一致
- arguments::page 的 max_offset 由 Option<usize> 改成 usize:调用点必须显式给出上限,不能靠漏传 Option 变成无上限
- 新增 TOOL_PAGE_MAX_OFFSET = 500(与 agc_list_project_files / agc_list_account_assets 的 inputSchema offset.maximum 一致),三个列表工具统一传它;agc_list_registered_assets 原来传 None(无上限),现在同样收敛到 500
- agc_list_registered_assets 的 inputSchema offset 同步补 maximum: 500,保持 schema 与校验一致(这是一个公开入参范围的收窄)
- 只改 offset 边界来源;limit 默认值与上限、分页语义不变
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent:: 952 passed / 0 failed
|
2026-10-01 14:41:17 +08:00 |
|
k88936
|
1359c7c2b3
|
去掉 list_registered_assets 的 kind 错误里那份会漂移的示例清单
- KindNotManifestClass 原文案列举 9 个示例 kind,而真实白名单是 GameCreationAppAssetKind 的 19 个值,枚举演进后没人会回来同步这句
- 按「不维护第二份清单」的口径,文案只保留「必须用 canonical kind」,取值示例由 kind 参数的 schema description(direct-tools.json 的 agc_list_registered_assets.parameters.kind)承担
- 只改文案,判定逻辑不变
验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过
|
2026-10-01 14:37:03 +08:00 |
|
k88936
|
0d21f838ed
|
生成图片的允许值与边界提成常量,校验与诊断文案共用同一份
- 新增 GENERATE_IMAGE_ASPECT_RATIOS / _IMAGE_SIZES / _SLICE_MODES 与 grid 轴、sliceCount 的 MIN/MAX 常量,放在 direct_tool_bridge 的 GENERATE_IMAGE_ARGUMENTS 旁
- generate_image_input 的 aspectRatio / imageSize / sliceMode / grid 轴区间 / sliceCount 区间校验改为读常量;generate_image/error.rs 的对应文案也改为读同一批常量(KindUnsupported 早已从 PLATFORM_ART_ASSET_GENERATION_KINDS 派生,这次把其余几组对齐)
- 只改取值来源,判定范围与文案取值不变
- 未纳入本次:commands.rs 的 LOCAL_PROJECT_ASSET_ASPECT_RATIOS/_IMAGE_SIZES 与 agent_native_tools.rs 的 canvas.asset_generate schema 仍是各自的副本(面向非 agent 的栏目画布入口),统一它们属于另一次改动
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: agent::direct_tools_mcp:: 71 passed
|
2026-10-01 14:35:53 +08:00 |
|
k88936
|
ea33e8c166
|
DirectProject 审批拒绝原因留痕
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 1m43s
Project CI / Backend tests (pull_request) Failing after 17s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m13s
Project CI / Frontend tests (pull_request) Successful in 2m12s
Project CI / Repository checks (pull_request) Failing after 13s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m57s
Project CI / Native shell tests (pull_request) Successful in 5m54s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m41s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 10m49s
宿主拒绝 app-server 的审批 / 交互请求时,原因必须落 AppData `RUST` 日志。稳定键 `agent.direct_codex.approval.denied`,字段为 `thread_id` / `method` / `reason` / `distinct_reasons`;未绑定宿主执行器时 `reason=no-bound-host-execution-adapter`,回包写入失败另记 `agent.direct_codex.approval.response_write_failed`。
|
2026-10-01 14:32:25 +08:00 |
|
k88936
|
235adde72c
|
联网搜索响应超限的诊断带上实际收到的字节数
- WebSearchError::ResponseTooLarge 原来只记 max_bytes,用户只看到「超过上限 524288 bytes」,不知道实际多大
- 两个构造点都已拿到真实大小:content_length() 与 bytes.len() + chunk.len(),变体加 got_bytes 并写进文案
- 判定与两个构造点位置不变,仅补上实际值
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge::tests::search_parser_accepts_only_bounded_public_https_results 通过
|
2026-10-01 14:14:29 +08:00 |
|
k88936
|
23a111985a
|
联网搜索 maxResults 非整数的诊断上限改为随变体携带,不再写死 5
- WebSearchError::MaxResultsNotInteger 原文案把上限写死成「1 到 5」,同一份文件里 MaxResultsOutOfRange 却是从 DIRECT_TOOL_BRIDGE_MAX_SEARCH_RESULTS 取 {max};常量一改,两条诊断就会自相矛盾
- 变体加上 max: u64,构造点传 DIRECT_TOOL_BRIDGE_MAX_SEARCH_RESULTS as u64,文案改成「1 到 {max}」
- 只影响这一条诊断的取值来源,判定区间不变
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge::tests::search_parser_accepts_only_bounded_public_https_results 通过
|
2026-10-01 14:11:27 +08:00 |
|
k88936
|
b2d01ef8c1
|
write_file 入参形状校验收进 write_file_input,MCP 预检不再漏掉未知字段
- 其它 *_input 解析器都先调 ToolArgumentsRejection::check,只有 write_file_input 没有;工具桥路径靠 bridge_write_file_with_permit 里另一次 check 兜住,但独立客户端 MCP 预检 validate_write_file_arguments 只调 write_file_input,带未知字段的入参能通过预检、要等回客户端桥才被拒
- 在 write_file_input 开头补上同一份 check(path/content 白名单),两个入口共用一条规则;写文件门禁里的那次 check 保留,保证「先查形状、再过权限」的现有顺序不变
- 测试补一条:{"path":"game/index.html","content":"…","unexpected":1} 必须被 validate_write_file_arguments 拒绝
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: 40 passed;agent::direct_tools_mcp::tests::tool_catalog_preserves_reviewed_resource_contracts 通过
|
2026-10-01 14:08:52 +08:00 |
|
k88936
|
c9e4a7e397
|
美术准备模式缺省时直接构造 ReuseOrCreate,去掉生产路径的 expect
- art_preparation_mode 在 mode 缺省时走 from_tool_value(None).expect("default art preparation mode"),依赖「None 必然映射为 ReuseOrCreate」这条隐式不变式
- 缺省值就是 ReuseOrCreate,直接返回该变体即可;显式传入 mode 的解析路径不变,少一条潜在 panic 分支
- bridge_argument_bounds_are_deterministic 断言缺省模式仍为 ReuseOrCreate,继续通过
验证:cargo check --bin genarrative-ai-game-creator-shell --tests;cargo test -- agent::direct_tool_bridge::tests::bridge_argument_bounds_are_deterministic 通过
|
2026-10-01 14:03:43 +08:00 |
|
k88936
|
822e89bdc0
|
生成图片的 gridX/gridY 解析不再把超大整数截断成合法网格
- generate_image_grid_axis 原来用 `value as u32`,u64 直接截断:4294967297(2^32+1)会变成 1,随后 1..=32 的区间校验把这个巨大输入当成合法网格静默接受
- 改成 u32::try_from,超出 u32 的值直接落到 GridAxisNotInteger 拒绝分支,不再依赖截断后的值
- 补一条回归测试:gridX=4294967297 必须被拒绝,gridX=4/gridY=4 仍通过
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge::tests::generate_image_grid_axis_rejects_values_beyond_u32 通过
|
2026-10-01 14:00:03 +08:00 |
|
k88936
|
28f6ddc7dc
|
去掉权限策略不可用诊断里重复的「读取项目权限策略失败」前缀
- ProjectPermissionRejection::PolicyUnavailable 的 cause 来自 read_project_permission_policy_at,本身多数已带「读取/解析项目权限策略失败:」,包装文案再拼一次会得到「读取项目权限策略失败,无法确认……:读取项目权限策略失败:…」
- 包装文案只保留「无法确认该动作是否被允许,本次操作未执行:」,cause 原样保留;判定与变体结构不变
验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过
|
2026-10-01 13:53:06 +08:00 |
|
k88936
|
6788a75ca6
|
分页 limit 的诊断改成「非负整数」,与 offset 保持一致
- ToolPageRejection::LimitNotInteger 原文案说 limit「必须是整数」,但负数(如 -1)走到这个分支时本身就是整数,读起来自相矛盾
- 解析用的是 as_u64,真实约束是非负;文案改成与 OffsetNotInteger 相同的「非负整数」,只改措辞,判定与变体结构不变
验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过
|
2026-10-01 13:52:52 +08:00 |
|
k88936
|
cf90d7a8db
|
修正美术重生成「已绑定另一项美术重生成请求」文案里多余的「稳定」
- prepare_game_art/error.rs 的 BoundToAnotherBrief 变体描述的是当前客户端回合已绑定另一项美术重生成请求,「稳定」是残留错译,会让模型误以为存在「稳定/不稳定」两种请求
- 只改这一处用户可见文案,判定逻辑与变体结构不变
验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过
|
2026-10-01 13:52:29 +08:00 |
|
kdletters
|
73090437f4
|
后台 chunk 体积告警阈值提到 700 以恢复 master 直推门禁
Project CI / AI game creator shell Rust crates (push) Successful in 1m43s
Project CI / AI game creator shell Rust smoke (push) Successful in 2m16s
Project CI / Backend tests (push) Successful in 3m39s
Project CI / Frontend tests (push) Successful in 1m51s
Project CI / Native shell tests (push) Successful in 5m35s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 9m27s
Project CI / Repository checks (push) Successful in 2m17s
Project CI / AI game creator shell web tests (push) Successful in 1m43s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 9m52s
- apps/admin-web:vite chunkSizeWarningLimit 由 600 提到 700;当前 index chunk 为 600.23 kB,超出 600 会触发 vite warning,而 scripts/build-gate.mjs 把 warning 当作构建失败
- 背景:远端 master 的 a344686b5(后台项目工程新增按需全量同步时间排序)把该 chunk 推过阈值,任何人直推 master 都会被 check:repository-ci 拦下;本次沿 2026-05-01 把 500 提到 600 的同一口径处理,后台按路由真正拆分另行排期
|
2026-10-01 13:45:07 +08:00 |
|
k88936
|
9372845c35
|
内置工具失败改成 typed 错误穿出派发边界,事件带原始 error,软失败清零
- dispatch 返回 Result<Value, ToolCallError>:不再在工具内部吞掉错误再补一个失败 Value,handle_direct_tool_bridge 在唯一一处 match 里同时组装发给模型的内容与诊断
- 新增 ToolCallError { message, redact_limit, error, images },error 直接存序列化后的 typed 错误;每个内置工具在自己的 agent/tool/<tool>/error.rs 定义 typed enum,共用 case(参数不是对象 / 未审核字段等)抽到 agent/tool/error.rs 的 ToolFailure
- AgentRuntimeErrorEvent 增加 error 字段携带原始 typed 错误,schema 升到 agent-runtime-error.v3;应用日志详情行扩成 message=… error=… metadata=…,各带独立长度预算
- 软失败清零:import_account_assets、run_validation、browser_playtest、environment_check、apply_patch、editor_execute、cocos_execute 原先返回 Ok(失败载荷) 的分支改为 typed 错误,并把 status / dispatched / retryAllowed 等载荷带进错误,模型仍能看到
- 失败证据截图走 ToolFailure::attached_images 与 ToolCallError.images,截图放 #[serde(skip)] 字段,不混进诊断里的 error
- bridge_tool_result 去掉 is_error 入参,isError 只在组装处按 Ok/Err 分支写一次;MCP 线上 isError 字段与校验不变
- 修正上一提交遗留的两处 rustfmt:direct_tools_mcp.rs、runtime_tools/context.rs(同一 workspace 整体格式门禁要求)
- 同步更新技术方案文档字段表与共享记忆决策记录
验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过;cargo test --bin genarrative-ai-game-creator-shell -- agent:: 951 passed / 0 failed;npm run check:encoding、git diff --check 通过;Windows 专属 cocos/unity/godot 分支在 Linux 下临时去 cfg 交叉编译通过(无真实 Windows 构建)
|
2026-10-01 13:30:32 +08:00 |
|
kdletters
|
127def0a8a
|
修复 AGC Claude 执行认证与错误诊断
官方 Claude 模型复用当前平台会话令牌
保留 Claude 失败终态摘要并增加回归测试
补充 AGC 排障记忆
|
2026-10-01 13:21:57 +08:00 |
|
k88936
|
cdb2223140
|
Merge branch 'master' into refactor/remove-toolcall.jsonl-legacy
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m44s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m20s
Project CI / Backend tests (pull_request) Successful in 3m40s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 7m3s
Project CI / Frontend tests (pull_request) Successful in 2m2s
Project CI / Native shell tests (pull_request) Successful in 5m47s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m5s
Project CI / AI game creator shell web tests (pull_request) Failing after 1m55s
Project CI / Repository checks (pull_request) Successful in 2m26s
|
2026-10-01 12:58:04 +08:00 |
|
k88936
|
c0e6396bad
|
Merge branch 'master' into refactor/remove-toolcall.jsonl-legacy
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
|
2026-10-01 11:55:43 +08:00 |
|
suzmii
|
bdab523a90
|
Merge branch 'master' into fix/agc-rust-staging-idempotency
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m44s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m14s
Project CI / Backend tests (pull_request) Successful in 3m35s
Project CI / Frontend tests (pull_request) Successful in 1m57s
Project CI / Native shell tests (pull_request) Successful in 5m35s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m26s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m38s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 9m44s
Project CI / Repository checks (pull_request) Successful in 2m29s
|
2026-10-01 11:52:08 +08:00 |
|
lhk229
|
a344686b59
|
为后台项目工程新增按需全量同步时间排序 (#546)
Project CI / AI game creator shell Rust smoke (push) Successful in 1m44s
Project CI / AI game creator shell Rust crates (push) Successful in 1m9s
Project CI / AI game creator shell Rust lane 1/2 (push) Has been cancelled
Project CI / Frontend tests (push) Has been cancelled
Project CI / Backend tests (push) Has been cancelled
Project CI / Repository checks (push) Has been cancelled
Project CI / AI game creator shell web tests (push) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (push) Has been cancelled
Project CI / Native shell tests (push) Has been cancelled
新增按钮读取所选渠道全部项目并按同步时间降序、用户与项目 ID 升序展示
复用本地分页并支持全量刷新、恢复默认顺序、进度提示与取消读取
为全量读取增加超时、数量和游标边界,失败时保留原结果
补充三项关键交互测试并同步技术方案、运维说明与共享记忆
Reviewed-on: #546
|
2026-10-01 11:51:10 +08:00 |
|
k88936
|
29c4442ae9
|
修掉 dispatch 放行成功分支未使用的 reply 绑定
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 1m17s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Failing after 1m17s
Project CI / AI game creator shell Rust smoke (pull_request) Failing after 1m17s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m25s
Project CI / Backend tests (pull_request) Failing after 19s
Project CI / Repository checks (pull_request) Failing after 25s
Project CI / Frontend tests (pull_request) Successful in 2m54s
Project CI / AI game creator shell web tests (pull_request) Successful in 2m55s
Project CI / Native shell tests (pull_request) Has been cancelled
- thread_manager/dispatch.rs:放行成功分支的 `Ok(reply)` 改成 `Ok(_)`——终态文案已改由运行态事件下发,`reply` 不再被消费,留着会触发 unused_variables 警告
- 验证:cargo test --bin genarrative-ai-game-creator-shell thread_manager::(62 passed / 0 failed)、cargo fmt --check、npm run check:encoding、git diff --check
|
2026-10-01 11:36:37 +08:00 |
|
k88936
|
f7aa2af905
|
删除无调用方的 direct_taonier_active_now_millis
- direct_runtime/mod.rs:删除从未被调用的 direct_taonier_active_now_millis(函数体内唯一的 unix_millis 用法随之消失),宿主时钟只留 direct_now_ms
- 验证:cargo test --bin genarrative-ai-game-creator-shell direct_runtime(101 passed / 0 failed)、cargo fmt --check、npm run check:encoding、git diff --check
|
2026-10-01 11:36:37 +08:00 |
|
suzmii
|
e7fa90ae18
|
修复AGC随包资源校验边界
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m28s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m4s
Project CI / Backend tests (pull_request) Successful in 3m43s
Project CI / Frontend tests (pull_request) Successful in 2m7s
Project CI / Native shell tests (pull_request) Successful in 5m38s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 8m37s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 9m14s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m38s
Project CI / Repository checks (pull_request) Successful in 2m14s
修复变参 feature 解析、Windows Codex 缓存幂等性、插件缓存产物检查和插件根目录链接校验。
补齐 staging/backup 忽略规则与 feature 回归测试。
|
2026-10-01 11:35:27 +08:00 |
|
k88936
|
4999653a5e
|
统一错误事件收成一个 message,去掉 public_text / recovery_hint / detail
- AgentRuntimeErrorEvent 只留一个 message:产生失败的 typed 错误在失败现场写好的人类可读文案;persist_agent_runtime_error 由 10 个入参减到 8 个,agent_runtime_error_app_log_lines 同步收口
- 删掉 recovery_hint 与 detail 两个字段及其入参;开发者信息不另开字段,全部进 metadata:tool、脱敏 arguments、directTurn、dispatchDenied
- 应用日志详情行由 hint=… summary=… detail=… metadata=… 收成 message=… metadata=…,身份行不变
- message 预算:sidecar 8 KiB、应用日志 1200 字符(取原来 detail 的预算,用户只上传 AppData 日志、拿不到 sidecar)
- direct-codex 路径把 typed Display 全文作为 message;retryable / recovery_hint 仍由 typed DirectTurnError 判定,只留在前端要解析的 direct-codex-failure:v2 文案里
- runtime_state.rs 那条改为只记原始 error(投影后的用户文案已经写进 project.jsonl,不再存第二份)
- 同步修正技术方案文档的字段表与共享记忆的决策记录
|
2026-10-01 10:55:26 +08:00 |
|
k88936
|
1dfe0dd8d4
|
内置工具错误改成每工具一个 typed enum,工具桥与 MCP 预检收口
- 每个内置工具在 agent/tool/<tool>/error.rs 定义自己的错误 enum:一个 case 一个变体,用户(以及转述给用户的模型)可见文案写在变体的 to_user_msg() 上,捕获处只调 to_user_msg()
- 跨工具重复的 case(入参形状、项目权限门禁、分页、清单读取、资源登记完成投影、客户端 Direct 回合门禁、宿主执行门禁、未登记工具名)在 agent/tool/error.rs 定义一次,各工具用包装变体 + From 复用,不复制文案
- 工具失败诊断的 code 由「反推错误文案」改成稳定的工具名,开发者信息进 metadata:tool、脱敏 arguments、directTurn、dispatchDenied
- 统一错误事件去掉 retryable 字段,AGENT_RUNTIME_ERROR_SCHEMA_VERSION 升到 agent-runtime-error.v2
- 独立客户端 MCP 的 validate_* 改成调用工具桥同一份入参规则,再用该工具 enum 的 to_user_msg() 渲染,删掉重复的字符串文案
- project/verification.rs 的项目权限策略判定改为返回 typed ProjectPermissionRejection(Denied / PolicyUnavailable)
- 同步更新技术方案文档的字段表与共享记忆的决策记录
|
2026-10-01 10:51:50 +08:00 |
|
k88936
|
3611b1e4b9
|
修 emit 活动白名单漏项并统一宿主时钟
- runtime_driver/entrypoints.rs:emit 白名单补 host-review / error-feedback——DirectRuntime 实际会传这两个活动,漏项在 debug 构建 panic、release 构建静默丢掉整次进度回填
- runtime_driver/entrypoints.rs:updated_at 改用 direct_now_ms(),删掉内联 Unix-ms 计算,宿主只留一个时钟
- runtime_driver/entrypoints.rs:新增用例钉住 DirectRuntime 传过的全部活动值都在白名单内
- docs:工具调用卡片技术方案「背景与现状」补 superseded 说明,去掉失效的 src/app/types.ts:1090 指针
- 验证:cargo test --bin genarrative-ai-game-creator-shell agent::(930 passed / 0 failed / 5 ignored)、npm run check:encoding、npm run check:doc-index、git diff --check
|
2026-10-01 10:29:15 +08:00 |
|