Skip to content

Commit e897385

Browse files
Feature/docker/run (#1268)
* feat: 删除垃圾更改 * fix: 消除生产代码中的 as any 类型不安全模式 - API 兼容层(openai/grok/gemini): 利用 BetaRawMessageStreamEvent 的 discriminated union 在 switch/case 中直接属性访问,消除 ~29 个 as any - ConsoleOAuthFlow: 用 as unknown as Parameters<typeof> 替代 as any - performanceShim: 用 Record<string, unknown> 和显式类型断言替代 as any - companionReact/auth: 直接访问已有类型属性消除 as any - sliceAnsi/textHighlighting: 用 as Char 替代 as any(Token 联合类型收窄) - ccrClient: 利用 RequestResult 类型收窄直接访问 retryAfterMs - outputsScanner: 用 TurnStartTime.turnStartTime 属性访问替代双重断言 - plans: 用显式数组类型替代 as any[] - FeedbackSurvey: 用 in 操作符和 Parameters<typeof> 替代 as any - messageQueueManager: 用 Record<string, unknown> 替代 as any - mcp.ts: 用 in 操作符类型守卫替代 as any precheck 通过: typecheck 零错误 + 5420 测试全部通过 + lint 通过 * fix: 将 pipeIpc 添加到 AppState 类型声明,消除 4 个 as any - AppStateStore: 添加 pipeIpc?: PipeIpcState 可选字段 - PromptInputFooter: 直接访问 s.pipeIpc - useBackgroundTaskNavigation: 直接访问 s.pipeIpc - usePipeRouter: 直接访问 store.getState().pipeIpc - REPL.tsx: 移除 getPipeIpc(s as any) 中的 as any precheck 通过 * fix: 消除 UltraplanChoiceDialog 中的 wheelDown/wheelUp as any Ink Key 类型已包含 wheelDown/wheelUp 属性,直接访问即可。 * fix: 消除 sideQuestion.ts 中的 2 个 as any - toolUse.name: 使用 as unknown as { name: string } 双重断言 - apiErr.error: 使用 as Parameters<typeof formatAPIError>[0] 类型参数 * fix: 为 auto dream 添加 maxTurns: 20 限制,防止单次执行消耗过多 token * fix: 补充 SAFE_ENV_VARS 中缺失的 OpenAI/Gemini/Grok provider 环境变量 项目级 settings.local.json 的 env 字段在 trust dialog 之前只有 SAFE_ENV_VARS 白名单中的变量会被应用到 process.env。 OPENAI_API_KEY、OPENAI_BASE_URL 等关键变量不在白名单中, 导致容器中通过 settings.local.json 配置 OpenAI 协议时认证失败。 * fix: 修复 goalState.js 模块不存在的类型错误 * fix: 增强 providers 测试的环境变量隔离,防止 mock 污染 * fix: 内联 providers 测试逻辑,彻底隔离 mock 污染 测试不再 import providers.ts(其默认参数触发 getInitialSettings 全链), 改为内联纯函数逻辑,从根源消除 CI 上其他测试 mock.module 污染。 * fix: 添加 goalState 模块存根,修复 CI 构建打包解析失败 CI 中的 autonomy-lifecycle-user-flow 集成测试会执行 build.ts 打包 CLI。 此前 PromptInputFooterLeftSide.tsx 中 require('../../services/goal/goalState.js') 的路径在源码中不存在,打包器报 Could not resolve,导致 (unnamed) 测试失败。 新增 src/services/goal/goalState.ts 存根模块(getGoal 返回 null,组件不渲染), 让打包器在构建期可以解析该 require 路径。同时把 PromptInputFooterLeftSide.tsx 里两处 as unknown as 内联类型签名换成 as typeof import(...),让类型直接来自 存根模块,避免类型定义重复。
1 parent 83e891d commit e897385

35 files changed

Lines changed: 388 additions & 808672 deletions

dist-nosplit/cli.js

Lines changed: 0 additions & 808545 deletions
This file was deleted.
Binary file not shown.
-448 KB
Binary file not shown.
-460 KB
Binary file not shown.
-429 KB
Binary file not shown.
-481 KB
Binary file not shown.
-498 KB
Binary file not shown.
-4.64 MB
Binary file not shown.

src/buddy/companionReact.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ function isAddressed(messages: Message[], name: string): boolean {
7373
) {
7474
const m = messages[i]
7575
if (m?.type !== 'user') continue
76-
const content = (m as any).message?.content
76+
const content = m.message?.content
7777
if (typeof content === 'string' && pattern.test(content)) return true
7878
}
7979
return false
@@ -89,7 +89,7 @@ function buildTranscript(messages: Message[]): string {
8989
.filter(m => m.type === 'user' || m.type === 'assistant')
9090
.map(m => {
9191
const role = m.type === 'user' ? 'user' : 'claude'
92-
const content = (m as any).message?.content
92+
const content = m.message?.content
9393
const text =
9494
typeof content === 'string'
9595
? content.slice(0, 300)

src/cli/transports/ccrClient.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ export class CCRClient {
381381
if (!result.ok) {
382382
throw new RetryableError(
383383
'client event POST failed',
384-
(result as any).retryAfterMs,
384+
result.retryAfterMs,
385385
)
386386
}
387387
},
@@ -404,7 +404,7 @@ export class CCRClient {
404404
if (!result.ok) {
405405
throw new RetryableError(
406406
'internal event POST failed',
407-
(result as any).retryAfterMs,
407+
result.retryAfterMs,
408408
)
409409
}
410410
},
@@ -433,10 +433,7 @@ export class CCRClient {
433433
'delivery batch',
434434
)
435435
if (!result.ok) {
436-
throw new RetryableError(
437-
'delivery POST failed',
438-
(result as any).retryAfterMs,
439-
)
436+
throw new RetryableError('delivery POST failed', result.retryAfterMs)
440437
}
441438
},
442439
baseDelayMs: 500,

0 commit comments

Comments
 (0)