Skip to content

feat(runtime): /actions /mcp 两域 handler 体抽出 — ADR-0076 D11 步骤③ PR-9 (#2462) - #3568

Merged
os-zhuang merged 1 commit into
mainfrom
feat/d11-step3-extract-actions-mcp
Jul 27, 2026
Merged

feat(runtime): /actions /mcp 两域 handler 体抽出 — ADR-0076 D11 步骤③ PR-9 (#2462)#3568
os-zhuang merged 1 commit into
mainfrom
feat/d11-step3-extract-actions-mcp

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

动机(#2462 D11 步骤③,深耦合批第二刀)

PR-8 子系统就位后,/actions/mcp 抽体成为机械刀。dispatch() 的 if 链至此只剩 /meta/data

改动

  • domains/actions.ts:ADR-0066 D4 权限门 + ADR-0104 参数契约跑在 actionExec.* 上。env 预解析段收敛为两个新 deps 缝——getDefaultEnvironmentId + resolveProjectKernelObjectQL(ADR-0006 Phase 5 直调方 kernel 交换;this.kernel 写入副作用留 dispatcher)。顺删冗余首尾斜杠正则(ADR-0076: remaining objectql/protocol layering work (cross-repo window) #2462 预扫的 CodeQL redos 孪生),split+filter 已覆盖。
  • domains/mcp.ts:JSON-RPC transport + /mcp/skill 下载 + OAuth resource-metadata + principal-bound 工具桥全家。/mcp/skill 先于 /mcp 的匹配优先级用有序注册项复刻(含 ? 变体共四条)。buildMcpBridge 留公共薄委托给直调方(测试)。
  • 静态坑第二例HttpDispatcher.isMcpEnabled 被抽出体引用——内联为 isMcpServerEnabled() 双站点,包装删除。
  • authz identity pin 随体搬家buildMcpBridge(context) 的 discover file/re/key 指向 domains/mcp.ts(pin 语义不变)。

验证

runtime 649 绿;http-conformance 41 绿;dogfood 全套 351 绿;全仓 build 绿。零行为变化。

关联 #2462。剩最后一刀:/meta + /data(终刀)→ catch-all 退役 → 解锁步骤①。

🤖 Generated with Claude Code

…6 D11 step ③ PR-9 (#2462)

The deep-coupling batch rides the PR-8 subsystem out:

- domains/actions.ts: ADR-0066 D4 gate + ADR-0104 param contract on
  actionExec.*; the env pre-resolution block becomes two deps seams —
  getDefaultEnvironmentId + resolveProjectKernelObjectQL (the ADR-0006
  Phase-5 direct-caller kernel swap; the this.kernel write side effect
  stays dispatcher-owned). The redundant leading/trailing-slash regex
  (CodeQL redos twin flagged in #2462) drops for split+filter.
- domains/mcp.ts: transport + /mcp/skill + OAuth resource-metadata +
  the principal-bound bridge; legacy /mcp/skill-before-/mcp precedence
  reproduced with ordered entries incl. '?' forms. buildMcpBridge kept
  as a public thin delegate for direct callers (tests).
- Statics gotcha round 2: HttpDispatcher.isMcpEnabled — extracted body
  referenced the class static; inlined to isMcpServerEnabled() at both
  sites and the wrapper dropped.
- The authz-conformance identity pin for buildMcpBridge(context)
  follows the body: discover file/re/key now point at domains/mcp.ts.

Verified: runtime 649, http-conformance 41, dogfood 351, full build
green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 27, 2026 6:38am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation tests tooling size/xl labels Jul 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): packages/qa, @objectstack/runtime.

18 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/api/index.mdx (via @objectstack/runtime)
  • content/docs/api/wire-format.mdx (via @objectstack/runtime)
  • content/docs/automation/hook-bodies.mdx (via @objectstack/runtime)
  • content/docs/concepts/north-star.mdx (via packages/runtime)
  • content/docs/data-modeling/drivers.mdx (via @objectstack/runtime)
  • content/docs/deployment/index.mdx (via @objectstack/runtime)
  • content/docs/deployment/production-readiness.mdx (via @objectstack/runtime)
  • content/docs/deployment/single-project-mode.mdx (via @objectstack/runtime)
  • content/docs/deployment/vercel.mdx (via @objectstack/runtime)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/runtime)
  • content/docs/permissions/authentication.mdx (via @objectstack/runtime)
  • content/docs/permissions/authorization.mdx (via packages/qa, packages/runtime)
  • content/docs/permissions/delegated-administration.mdx (via packages/qa)
  • content/docs/plugins/packages.mdx (via @objectstack/runtime)
  • content/docs/protocol/kernel/http-protocol.mdx (via @objectstack/runtime)
  • content/docs/protocol/kernel/index.mdx (via @objectstack/runtime)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/runtime)
  • content/docs/releases/implementation-status.mdx (via @objectstack/runtime)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/xl tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant