Skip to content

fix: open security alerts - #424

Merged
LeXwDeX merged 20 commits into
mainfrom
fix/423-open-security-alerts
Aug 24, 2026
Merged

fix: open security alerts#424
LeXwDeX merged 20 commits into
mainfrom
fix/423-open-security-alerts

Conversation

@LeXwDeX

@LeXwDeXLeXwDeX commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Closes#423

Why

GitHub /security 面板存在三类开放告警:Dependabot 依赖漏洞(dompurify/astro/nitro/@hey-api/openapi-ts)、CodeQL 代码扫描(1 critical SSRF + 多条 high)、以及 1 条 Secret Scanning(Google API Key,凭据轮换由人工在 Google Cloud Console 处理,不在本 PR 范围)。本交付批量消除代码与依赖侧债务。

What changed

Evidence

  • bun install --frozen-lockfile 一致性通过
  • packages/opencode bun typecheck 通过;根 turbo typecheck 29/29
  • bun run test:dag-core:全部关键行为与覆盖率底线通过
  • 验收测试:tool-data-url 5/5、provider-error 全绿
  • 根 lint 棘轮:4839 ≤ 4850(与基线持平)
  • SDK 新鲜度:sdk/js 与 client 重生成后与提交态零差异

Checklist

  • Why, What changed, and Evidence are filled in.
  • specgit finish exits 0.

Early-return command dispatches (/memory, /trust, /goal non-kick) wrote
their parts and returned without ever entering the session runner, so the
busy→idle status transition never fired and the run CLI — which exits its
event loop only on the idle event — hung forever (#409). The response
parts also lacked time.end, which run mode requires before printing text.
Run the early-return writes as a micro-turn via SessionRunState.startIfIdle
(idle sessions get the busy→idle transition; busy sessions keep today's
inline semantics so the /goal busy guards still read true status), and
stamp time {start,end} on the response parts. Goal kick dispatch stays
outside the turn: its guards read the live session status.
Regression: test/cli/run/early-return-command.test.ts (4 arms, all exit 0
with non-empty output).
chore(specgit): re-init harness, align policy check IDs
@LeXwDeXLeXwDeX mentioned this pull request Aug 24, 2026
Dependency upgrades (Dependabot): dompurify 3.4.13 across ui/session-ui and
root catalog, astro 7.1.0 for web, nitro 3.0.260429-beta across the four
console/stats/enterprise apps, @hey-api/openapi-ts 0.97.3 for sdk/js with
SDK regeneration.
CodeQL source fixes: user-attachments URL prefix validation before fetch
(SSRF), OAuth error-page HTML escaping in snowflake-cortex, rejection-sampling
PKCE verifiers (xai/codex/snowflake-cortex modulo bias), bounded pattern input
in provider-error and linear data-URL parsing in acp/tool (ReDoS), and
least-privilege permissions on ci-typecheck.
Fallout adaptation: regenerated client types made response optional and one
oauth callback param required — httpapi-sdk test, terminal, server-session,
and dialog-connect-provider updated accordingly; web/.wrangler deploy
artifact now ignored.
Acceptance tests pin data-URL parsing and context-overflow classification.
The dev-lineage workflow installs specgit locally (npm install --no-save),
which npm resolves against this repo's root package.json and fails with
EUNSUPPORTEDPROTOCOL on the Bun catalog: protocol. This PR targets main,
so run the main-line global install instead.
@LeXwDeX
LeXwDeX marked this pull request as ready for review August 24, 2026 06:09
The dev-lineage policy lists canonical ids (unit-tests/e2e-tests) that do
not exist as check-run names on the main-line CI matrix, so the acceptance
waiter can never observe them. This PR targets main; require the main-line
check names.
…rness alignment)
# Conflicts:
#	.specgit.yaml
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: open security alerts

1 participant

@LeXwDeX