k88936
|
bab88d62e0
|
includeSequenceFrames 类型错回显改用 not_text_repr
- direct_tool_bridge 里 IncludeSequenceFramesNotBoolean.got 由 value.to_string() 换成 not_text_repr(value)
- 与该工具其它「字段给了错误类型」的变体同一口径:回显按 120 字符截断
|
2026-10-01 17:55:04 +08:00 |
|
JenkenB
|
97617608ba
|
修正 Web 预检错误分流
Project CI / AI game creator shell Rust smoke (push) Successful in 1m46s
Project CI / AI game creator shell Rust crates (push) Successful in 1m10s
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
Project CI / Backend tests (push) Successful in 4m33s
Project CI / Native shell tests (push) Successful in 6m15s
Project CI / Frontend tests (push) Successful in 2m3s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 10m31s
Project CI / AI game creator shell Rust lane 1/2 (push) Failing after 11m48s
Project CI / AI game creator shell web tests (push) Successful in 2m3s
Project CI / Repository checks (push) Successful in 3m31s
|
2026-10-01 17:54:53 +08:00 |
|
k88936
|
47b6454696
|
web_search 的 maxResults 类型错回显改用 not_text_repr
- direct_tool_bridge 里 MaxResultsNotInteger.got 由 value.to_string() 换成 not_text_repr(value)
- 与 query 的 QueryNotText 一致:不受信回显按 120 字符截断,不再把整段值带进错误消息与序列化 typed error
|
2026-10-01 17:54:51 +08:00 |
|
k88936
|
75e3152412
|
agc_generate_image 的 kind 不合法时回显截到 120 字符
- KindUnsupported 的 got 原来把整段 kind 原样带进文案与序列化错误;这条路径没有长度校验,与上方 KindNotText 的 not_text_repr 口径也不一致
- 改用 bounded_echo(kind),与其它不受信回显同一上限;仍保留开头的原值,模型能看出自己传了什么
验证:cargo fmt --check 通过
|
2026-10-01 17:52:38 +08:00 |
|
k88936
|
0354fd353c
|
assetIds/localPaths 与 sliceCount 的类型错回显改用 not_text_repr
- ImportAccountAssetsField::not_string_array 与 GenerateImageError::SliceCountInvalid 原来把整个值 to_string() 后嵌进错误,MCP 预检又原样回给调用方,超大数组会整份被反射
- 改用共享的 not_text_repr(120 字符截断),与其它「给错类型」的回显同一口径
验证:cargo fmt --check 通过
|
2026-10-01 17:52:06 +08:00 |
|
k88936
|
6a4efa15ee
|
未登记的客户端工具名在构造处截到 120 字符
- dispatch 兜底分支构造 UnknownClientToolRejection 时改用 bounded_echo,客户端给的超长工具名不再原样进 to_user_msg 与序列化诊断
- 该名字在构造处就有界,后续 clone/序列化都受同一上限约束
验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过;cargo fmt --check 通过
|
2026-10-01 17:51:44 +08:00 |
|
k88936
|
7d51504e09
|
不认识的字段名回显限长到 120 字符,回显口径收进 tool/error.rs
- ToolArgumentsRejection::check 构造 UnknownField 时改成 bounded_echo(field),超长键名不再整份进文案与诊断
- 有界回显的常量与 bounded_echo 从 arguments.rs 移到公共 tool/error.rs(BOUNDED_ECHO_MAX_CHARS=120),not_text_repr 变成它的 JSON 值封装,实现仍只有一份
验证:cargo check --bin genarrative-ai-game-creator-shell --tests 通过;cargo fmt --check 通过
|
2026-10-01 17:50:57 +08:00 |
|
k88936
|
0e60ecb769
|
共享入参解析器补「入参必须是对象」的契约断言与文档
- optional_text/required_text/page 加 debug_assert!(arguments.is_object()):非对象时 Value::get 恒为 None,会把 NotObject 静默判成「没给字段」或默认分页
- 文档写明调用方必须先跑 ToolArgumentsRejection::check;所有现有调用点已满足,release 行为不变
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: agent::direct_tools_mcp:: 72 passed / 0 failed;cargo fmt --check 通过
|
2026-10-01 17:49:25 +08:00 |
|
k88936
|
b7d77053ea
|
分页 offset/limit 的类型错回显改用 not_text_repr,与其它字段同一限长口径
- arguments::page 的 OffsetNotInteger / LimitNotInteger 原来用 value.to_string() 无界回显,超大对象/字符串会整份进错误消息与诊断
- 改用共享的 not_text_repr(120 字符截断),与 optional_text 及内联判类型的字段一致
验证:cargo fmt --check 通过
|
2026-10-01 17:47:23 +08:00 |
|
k88936
|
c2a27aed2a
|
新增认证失败上报判据的端到端测试
- 新测试 mock 模块级 @tauri-apps/api/core invoke,从而能观察 report_client_error 是否被调用
- 覆盖:手机号或密码错误、发码限流不写错误池;网络不可达带 auth/login 上报一次
- 已用变异验证:把分流改成一律上报时,两条业务用例会失败
|
2026-10-01 17:41:45 +08:00 |
|
k88936
|
ae3811a8aa
|
部分导入按失败回的口径落注释:不再按 write_permit 区分 isError
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m35s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m19s
Project CI / Backend tests (pull_request) Failing after 18s
Project CI / Frontend tests (pull_request) Successful in 2m0s
Project CI / Repository checks (pull_request) Failing after 21s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m48s
Project CI / Native shell tests (pull_request) Successful in 5m44s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 10m38s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 11m15s
- bridge_import_account_assets 的 failed/partial 分支补注释,说明 partial 与 failed 一样按失败回是有意为之,口径已确认
- 只加注释,不改行为:report 仍在消息里,Direct 回合与外部 MCP 客户端的 isError 保持一致
|
2026-10-01 17:16:36 +08:00 |
|
k88936
|
bdd315f12f
|
AGC 壳 Rust 单测统一 mock provider 请求预算,修掉分片 4 第二次往返超时
Project CI / AI game creator shell Rust crates (pull_request) Successful in 2m1s
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m37s
Project CI / Backend tests (pull_request) Successful in 3m54s
Project CI / Frontend tests (pull_request) Successful in 1m54s
Project CI / Native shell tests (pull_request) Successful in 5m53s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 9m53s
Project CI / Repository checks (pull_request) Successful in 2m28s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m52s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 11m53s
- tests/mod.rs 新增 MOCK_PROVIDER_REQUEST_TIMEOUT(30 秒),作为「等一条 mock provider 请求到达」的唯一预算
- tests/sessions.rs 的 7 处 recv_timeout 由散落的 2 秒 / 10 秒改为引用该常量,确认「不会有下一个请求」的 200ms 负向断言保持不变
- wait_for_captured_mock_request 的内联 10 秒预算改为引用同一常量
- pitfalls 记录该超时是 CI 分片并发放大所致,而非产品缺陷,并附本次复核证据
|
2026-10-01 17:16:16 +08:00 |
|
k88936
|
a7cc28134d
|
AGC Rust 分片失败复核改按名单精确匹配,覆盖 bin 目标用例名
- run-rust-shell-test-shards.mjs:extractFailingTestNames 改为按本片名单精确匹配用例名,不再用 `tests::` / `process_session::tests::` 前缀白名单——bin 目标的 `agent::…::tests::…` 原先永远进不了复核,偶发假红直接判红
- run-rust-shell-test-shards.mjs:复核也失败时同时保留首次失败现场,不再只留复核那一次
- run-rust-shell-test-shards.test.mjs:新增「命名空间用例名也会进复核」的回归用例
- 验证:node --test apps/ai-game-creator-shell/scripts/run-rust-shell-test-shards.test.mjs 3 项通过
|
2026-10-01 17:16:16 +08:00 |
|
k88936
|
c177dde5c3
|
AGC 壳通知计数按线程隔离,修掉跨用例后台广播串台
- runtime_driver/entrypoints.rs:测试通知计数从进程级 AtomicU64 改成线程作用域 Cell,只统计本测试线程发出的通知
- runtime_driver/entrypoints.rs:`--test-threads=1` 只串行测试线程,前一个用例放行留下的后台回合仍在宿主 async runtime 工作线程上广播「运行中的项目」通知,不再是断言的取样来源
- thread_manager/mod.rs:同步用例注释,说明计数为何按线程隔离,断言语义(放行 1 / 内容变化 1 / 重复进度 0 / 收口 1)不变
- pitfalls:记录现场、根因、现行口径与验证(修复前 5 次红 3 次,修复后 CI 那一片连跑 18 次全绿)
|
2026-10-01 17:16:16 +08:00 |
|
k88936
|
ede3457464
|
edit_image 的派生失败转发内层前缀:补注释说明这是有意为之
- ResourceEdit 继续原样转发 CreateOrDeriveResourceError 的「生成或派生资源失败:…」,不改文案
- 注释写清理由:该路径与 agc_create_or_derive_resource 同源,内层文案指向真实失败环节;调用方身份由运行时错误事件的 code(工具名)承担,不靠前缀区分工具
|
2026-10-01 17:13:44 +08:00 |
|
k88936
|
5b59d50a8c
|
错误事件 sidecar 的 error 字段递归脱敏,保留 typed 错误的 JSON 形状
- persist_agent_runtime_error 落盘前对 error 的字符串叶子走与 message 同一条脱敏流水线(URL/项目路径/绝对路径/密钥),键、类型、数组长度都不动
- 每个叶子有 4000 字符预算(AGENT_RUNTIME_ERROR_MAX_ERROR_TEXT_CHARS),sidecar 本身的 16 KiB 上限不变
- 返回的 AgentRuntimeErrorEvent.error 与落盘内容一致;应用日志那条 error 行原本就已脱敏,行为不变
- 新增回归测试:形状留住(变体名/字段名/数字/布尔),叶子脱敏(<absolute-path>、<redacted-url>、无 token)
- 更新原测试里「typed 错误原样进 sidecar」的注释
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::runtime_error:: 4 passed / 0 failed;cargo fmt --check 通过
|
2026-10-01 17:12:32 +08:00 |
|
kdletters
|
bc6f40d6db
|
完善 Claude sidecar 超时诊断
认证缺失时提前返回可操作错误
超时时保留 sidecar stderr 摘要
|
2026-10-01 17:04:24 +08:00 |
|
k88936
|
6b31d4971b
|
Merge remote-tracking branch 'origin/master' into fix/wrong-report
Project CI / AI game creator shell Rust smoke (pull_request) Successful in 2m33s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 1m12s
Project CI / Backend tests (pull_request) Successful in 3m55s
Project CI / Frontend tests (pull_request) Successful in 2m12s
Project CI / Native shell tests (pull_request) Successful in 6m29s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 10m27s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 11m29s
Project CI / AI game creator shell web tests (pull_request) Successful in 1m53s
Project CI / Repository checks (pull_request) Successful in 2m34s
# Conflicts:
# docs/project-memory/shared-memory/decision-log.md
|
2026-10-01 17:01:52 +08:00 |
|
k88936
|
c7da67ed47
|
非字符串回显限长补齐到内联判类型的四处(承接上一提交)
- arguments.rs 导出 not_text_repr,optional_text 与内联判类型的字段共用同一份截断口径
- 抠图 backgroundMode / screenColor、美术准备 mode、生成图片 kind 这四处原来直接 value.to_string(),现在同样限长到 120 字符
- 测试补一条:art_preparation_mode 的超大数组回显必须带截断标记且长度可控
验证:cargo test --bin genarrative-ai-game-creator-shell -- non_text_field_values 通过;cargo fmt --check 通过
|
2026-10-01 16:55:29 +08:00 |
|
k88936
|
a22e3448a6
|
抠图的 backgroundMode / screenColor 类型错改成「必须是字符串」
- BackgroundModeNotText、ScreenColorNotText 只在入参不是字符串时触发,文案却回的是取值白名单,模型会以为类型对了、只是值不对
- 改成与本模块其它 *NotText 变体一致的「必须是字符串」;取值白名单仍由 BackgroundModeUnsupported / ScreenColorMalformed 承担
- 文案字面变化:backgroundMode「必须是 complex 或 flat」→「必须是字符串」;screenColor「必须是 auto 或 #RRGGBB」→「必须是字符串」
验证:cargo fmt --all --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml -- --check 通过
|
2026-10-01 16:52:42 +08:00 |
|
k88936
|
97c3fc83c1
|
非字符串入参的回显截断到 120 字符,不再把整个对象原样带进诊断
- arguments::optional_text 里的 not_text 改为传截断后的序列化值:类型错只需要看出「传了什么」
- got 同时出现在 to_user_msg 与序列化 error 里,限长后工具结果与诊断 sidecar 都不会被超大数组/对象灌爆
- 复用 runtime_state::truncate_agent_runtime_text,不新增第二套截断实现
- 测试补一条:超大数组回显必须带截断标记且长度可控
验证:cargo test --bin genarrative-ai-game-creator-shell -- non_text_field_values 通过;cargo fmt --check 通过
|
2026-10-01 16:51:50 +08:00 |
|
k88936
|
8fefd393b2
|
Merge remote-tracking branch 'origin/master' into fix/wrong-report
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
# Conflicts:
# docs/project-memory/shared-memory/decision-log.md
|
2026-10-01 16:51:37 +08:00 |
|
k88936
|
8834f844e6
|
分页助手加 debug_assert,默认 limit 配到上限之上会在测试期炸出来
- arguments::page 增加 debug_assert!(default_limit <= max_limit):默认值本身越界时不再让省略 limit 的请求静默地每次都报 LimitOutOfRange
- 文档注释写清这条调用点契约;三个列表工具当前都满足(50/100 对 100)
验证:cargo test --bin genarrative-ai-game-creator-shell -- agent::direct_tool_bridge:: agent::direct_tools_mcp:: 72 passed / 0 failed;cargo fmt --check 通过
|
2026-10-01 16:47:32 +08:00 |
|
k88936
|
402233ae9e
|
去掉续期凭据缺失文案里的 result-unknown 机器前缀
- AuthResponseMalformed 变体就是分流键,该前缀没有任何解析方,去掉后用户看到完整中文提示
- 该模块的 result-unknown 前缀只在本条出现,其它 result-unknown 属于 resource_editor 等其它链路
|
2026-10-01 16:47:12 +08:00 |
|
k88936
|
c5153a7ed2
|
去掉认证网络失败文案里的 network-error 机器前缀
- AUTH_NETWORK_ERROR / AUTH_NETWORK_TIMEOUT 不再带 network-error: 前缀,用户看到的就是完整中文提示
- 前端按 type 分流后不再解析该前缀,没有任何 Rust/TS 消费方依赖它
- auth.suite.ts 与 clientAuthHost.test.ts 的对应 fixture/断言同步更新
|
2026-10-01 16:46:46 +08:00 |
|
k88936
|
9bdeed13a0
|
kind 白名单从 DirectResourceGenerationKind::ALL 取,删掉第二份字符串清单
- DirectResourceGenerationKind 新增 ALL: [Self; 5],顺序与 parse/as_str 一致
- KindUnsupported 的「只允许 …」改为由 ALL 生成,新增 kind 时不再需要手动同步这句文案
- 文案字面不变:image、video、character-animation、sound-effect、background-music
验证:cargo fmt --all --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml -- --check 通过
|
2026-10-01 16:45:10 +08:00 |
|
k88936
|
698b3ffc90
|
抽出 presentAuthFailure 收口登录与发码的失败处理
- 登录/发码两处 catch 的"分流 + 提示 + 上报"逻辑抽成 presentAuthFailure(error, fallback, action)
- 错误池指纹的 action 由调用点传入,避免新增认证动作时各自拼一套导致指纹漂移
|
2026-10-01 16:44:36 +08:00 |
|
k88936
|
3c2dc57c57
|
未登记资源指引抽到 tool/error.rs,生成与抠图共用同一份文案
- UNREGISTERED_SOURCE_HINT 从 create_or_derive_resource/error.rs 移到公共 tool/error.rs
- remove_background 的 SourceAssetNotRegistered 改为拼接同一常量,去掉逐字复制的副本
- 两个工具的 SourceAssetNotRegistered 文案字面不变(前缀各自保留「生成或派生资源失败:」/「抠图失败:」)
- remove_background/error.rs 一处 format! 收口改动使该 match 触发 rustfmt 重排,随该文件一并 rustfmt(只此一个文件,其余文件未动)
验证:cargo fmt --all --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml -- --check 通过
|
2026-10-01 16:44:25 +08:00 |
|
k88936
|
d1e637b9fd
|
修正 DirectTurnEnqueueFailure 文档对 message 来源的描述
- 原文写"一处生成的 Display 文案"不准确:可留痕的宿主/环境失败走 record_direct_codex_failure 的 direct-codex-failure:v2 收口文案
- 文档改为写明两条来源(Display 与脱敏诊断收口文案),并保留"Rust 侧不解析该字符串"的约定
|
2026-10-01 16:43:03 +08:00 |
|
k88936
|
b202c70271
|
退役词表:DirectProject 域不再使用"拒单"
- direct_turn_error.rs 模块文档把"拒单载荷"改写为"入队失败载荷",与 2026-09-24 ADR 的词表一致
- agentRuntimeModel.test.ts 的用例名与注释同步改成"入队失败"
|
2026-10-01 16:42:43 +08:00 |
|
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 |
|