Skip to content

fix(bridge): empty silent get_pending_status wrap when pending_count is 0 (patch)#222

Merged
liplus-lin-lay merged 1 commit into
mainfrom
221-spec-silent-additionalcontext-when-pending_count-==-0-suppress-per-turn-empty-reminder
May 25, 2026
Merged

fix(bridge): empty silent get_pending_status wrap when pending_count is 0 (patch)#222
liplus-lin-lay merged 1 commit into
mainfrom
221-spec-silent-additionalcontext-when-pending_count-==-0-suppress-per-turn-empty-reminder

Conversation

@liplus-lin-lay
Copy link
Copy Markdown
Member

目的

get_pending_status の wrap delivery で pending_count == 0 の時に hookSpecificOutput.additionalContext を返さない (silent) ようにする。 これにより LI_PLUS_WEBHOOK_DELIVERY=mcp_hook 環境下で毎ターン注入されていた "No pending GitHub webhook events." reminder の noise が解消される。

Closes #221

変更点

実装 (mcp-server/server/index.js)

wrapGetPendingStatusAsDecisionJson に早期 return ロジック追加:

  • payload を一度パースし、payload.pending_count === 0 なら remote 戻り値をそのまま返す (no wrap)
  • Claude Code は decision schema 未一致 JSON を silent discard するため、hook 経由で additionalContext に何も注入されない
  • 手動 tool 呼び出しでは remote の raw {pending_count: 0, types: {}, latest_received_at: null} が見える (self-describing)
  • 非 0 / parse 失敗 / non-object payload の path は従来通り wrap

docstring に Empty silent (#221) サブセクション追記。

Test (mcp-server/test/get-pending-status-decision-shape.test.mjs)

  • wraps zero-pending payload with explicit no-events sentencereturns zero-pending payload untouched (empty silent, #221) に書き換え。 assert.deepEqual(wrapped, remote) で untouched 保証、 parsed.pending_count === 0hookSpecificOutput 不在を assert
  • preserves sibling result fields like isError when wrapping は pending_count=3 ペイロードに切り替え (wrap-path のテストとして残す)
  • 残り 3 テスト (non-empty wrap / non-JSON fallback / non-text passthrough) は無変更
  • ローカル npm test 23/23 pass

Docs (docs/0-requirements.md / .ja.md)

F3.1 セクションに Empty silent (#221) サブ仕様を追加。 EN / JA 両方更新。

AI 自己レビュー (auto モード)

分類

  • 観測対象は token-noise 削減 (内部最適化、user-visible 仕様変更ではあるが小規模)
  • リモート (Worker + DO) 側の戻り値構造は変更なし (PR 内 diff も触っていない)
  • 既存 23 テスト全 pass、 新規 1 テスト追加
  • patch 維持

影響範囲

  • consumer 側 (liplus-language adapter/claude/hooks-settings.md) は無変更で empty reminder が消える (本 PR がコーディネーション案件の下流)
  • manual tool 呼び出しで以前は wrap shape を期待していたコードがあれば破壊変更だが、 README / docs / 既存テストでそのような consumer は見当たらない

CI 待ち

push 直後。 CI pass を確認したら、 auto モード規約に従い gh pr merge --squash で直接マージする。

🤖 Generated with Claude Code

…is 0 (#221)

wrapGetPendingStatusAsDecisionJson で payload.pending_count === 0 の時に
ラップせずリモート戻り値をそのまま返すよう変更。Claude Code は decision
schema 未一致 JSON を silent discard するため、hook 経由で
additionalContext に空 reminder ("No pending GitHub webhook events.") が
注入されなくなり、毎ターンの空 noise を排除できる。手動 tool 呼び出し
ではリモートの raw payload が返るため AI は直接判定できる。

リモート (Worker + DO) 側の戻り値構造は変更しない。

- mcp-server/server/index.js: 早期 return ロジック追加、docstring 更新
- mcp-server/test/get-pending-status-decision-shape.test.mjs: 既存の
  zero-pending wrap テストを "returns zero-pending payload untouched"
  に書き換え、"preserves sibling result fields" は pending_count=3 で
  wrap-path 維持
- docs/0-requirements.md / .ja.md: F3.1 に empty silent サブ仕様追加

Closes #221
@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
github-webhook-mcp 5f38278 May 25 2026, 01:02 AM

@liplus-lin-lay liplus-lin-lay added this to the v0.11.5 milestone May 25, 2026
Copy link
Copy Markdown
Member Author

@liplus-lin-lay liplus-lin-lay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI self-review (auto mode)

分類確認

  • consumer 観測 surface (token noise 削減) を含むが、 wrap 関数の早期 return 追加 1 箇所 + dead test 書き換え + docs F3.1 サブ仕様追記の小規模
  • リモート (Worker + DO) 側未変更、 互換破壊なし
  • patch 維持

自己 diff 確認

  • mcp-server/server/index.js: 早期 return ブランチ追加、 docstring に Empty silent (#221) 段落追記。 既存 wrap path (非 0 / non-object / parse 失敗) 全保存
  • mcp-server/test/get-pending-status-decision-shape.test.mjs:
    • 既存 zero-pending wrap テスト → untouched assertion へ書き換え (deepEqual で remote と一致、 parsed payload に hookSpecificOutput 不在を確認)
    • sibling preservation テストは pending_count=3 ペイロードへ切替 (wrap-path テストとして残存)
  • docs/0-requirements.md / .ja.md: F3.1 直後に Empty silent (#221) サブ仕様を追加。 EN / JA 両方同期

CI

  • test: pass (19s, 23/23 unit tests green)
  • CI workflow: pass
  • Workers Builds: pass

マージ判断

auto mode: AI 自己レビュー pass → AI 直マージ (gh pr merge --squash)。 release-version.md の patch 規約に沿い、 v0.11.5 milestone の next release 候補として保留。

@liplus-lin-lay liplus-lin-lay merged commit e6bd41c into main May 25, 2026
3 checks passed
@liplus-lin-lay liplus-lin-lay deleted the 221-spec-silent-additionalcontext-when-pending_count-==-0-suppress-per-turn-empty-reminder branch May 25, 2026 01:03
Sign up for free to 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.

spec: silent additionalContext when pending_count == 0 (suppress per-turn empty reminder)

1 participant