Skip to content

feat(codex): add portable Codex command pickers#82224

Merged
steipete merged 8 commits into
openclaw:mainfrom
yaanfpv:codex/codex-plugins-subcommand
May 31, 2026
Merged

feat(codex): add portable Codex command pickers#82224
steipete merged 8 commits into
openclaw:mainfrom
yaanfpv:codex/codex-plugins-subcommand

Conversation

@yaanfpv

@yaanfpv yaanfpv commented May 15, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Moves /codex picker ownership into the Codex plugin: core/native command handling returns portable MessagePresentation buttons for Codex submenus, plugin management, fast mode, permissions, and computer-use.
  • Keeps Telegram generic: it renders portable slash-command buttons as Telegram native command callbacks when possible, while preserving approval callback shortening and the approval-specific bypass path.
  • Removes the Telegram-specific Codex picker callback surface and covers the picker/plugin state behavior with focused Codex and Telegram coverage.

Verification

  • node scripts/run-vitest.mjs extensions/codex/src/command-plugins-management.test.ts extensions/codex/src/commands.test.ts extensions/telegram/src/button-types.test.ts
  • node scripts/run-vitest.mjs extensions/telegram/src/bot.test.ts extensions/telegram/src/button-types.test.ts extensions/telegram/src/bot-native-commands.test.ts extensions/telegram/src/shared.test.ts
  • node scripts/run-vitest.mjs run --config test/vitest/vitest.media-understanding.config.ts --reporter=verbose
  • pnpm check:test-types
  • pnpm tsgo:prod
  • pnpm lint --threads=8
  • git diff --check
  • .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main -> clean, no accepted/actionable findings

Real behavior proof

Behavior addressed: /codex no-arg and submenu pickers now expose native slash-command actions as portable presentation buttons, and Telegram maps those slash buttons into native callback routing without Codex-specific Telegram callback ids.

Real environment tested: Local OpenClaw checkout on the rebased PR head, loading the real Telegram extension button mapper through the repo runtime (node --import tsx).

Exact steps or command run after this patch: Ran this command after the final Telegram native callback and approval preservation fixes:

node --import tsx --input-type=module <<'NODE'
import { buildTelegramPresentationButtons } from './extensions/telegram/src/button-types.ts';

const pluginApprovalId = `plugin:${'a'.repeat(36)}`;
const buttons = buildTelegramPresentationButtons({
  blocks: [
    { type: 'text', text: 'Pick an action' },
    {
      type: 'buttons',
      buttons: [
        { label: 'plugins', value: '/codex plugins menu' },
        { label: 'allow plugin', value: `/approve ${pluginApprovalId} allow-always` },
      ],
    },
  ],
});
console.log(JSON.stringify(buttons, null, 2));
NODE

Evidence after fix: Terminal output from the real mapper:

[
  [
    {
      "text": "plugins",
      "callback_data": "tgcmd:/codex plugins menu"
    },
    {
      "text": "allow plugin",
      "callback_data": "/approve plugin:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa always"
    }
  ]
]

Observed result after fix: The portable Codex slash command is emitted as a Telegram native callback, while the long plugin approval action stays on the raw approval callback path and is shortened to fit Telegram callback data.

What was not tested: No live Telegram bot roundtrip was run.

@clawsweeper

clawsweeper Bot commented May 15, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed May 31, 2026, 9:13 AM ET / 13:13 UTC.

Summary
The PR adds portable Codex MessagePresentation pickers for /codex and related menu commands, plugin enable/disable target pickers, Telegram callback-length test coverage, and adjacent test harness/mock alignment.

PR surface: Source +276, Tests +118. Total +394 across 10 files.

Reproducibility: yes. from source inspection: raw /codex ... presentation values become Telegram callback data, but Telegram only marks tgcmd: callbacks as native while text-command routing can be disabled for native command surfaces. I did not run a live Telegram repro in this read-only review.

Review metrics: 1 noteworthy metric.

  • Command default surface: 1 changed default (/codex no args: status -> picker). Existing chat snippets or operator muscle memory that expect status output from /codex will see a different response after upgrade.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🦪 silver shellfish
Patch quality: 🧂 unranked krab
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P1] Fix native dispatch for slash-command presentation callbacks and cover commands.text=false.
  • Update public Codex slash-command docs for the new picker/default behavior.
  • [P1] Add redacted current-head Telegram Desktop proof showing /codex, /codex plugins menu, and an enable/disable picker button tap; update the PR body so ClawSweeper can re-review.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The PR body has current-head terminal output for the Codex command handler, but live Telegram after the portable refactor is explicitly untested and the available video proof shows the older removed design; current-head redacted Telegram proof is still needed before merge. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Mantis proof suggestion
A fresh current-head Telegram Desktop proof would directly show whether the portable picker renders and whether button callbacks dispatch correctly after the refactor. A maintainer can ask Mantis to capture proof by posting a new PR comment that starts with the OpenClaw Mantis account mention, followed by:

telegram desktop proof: verify current-head /codex and /codex plugins menu buttons, including enable/disable picker taps with native commands enabled.

Risk before merge

  • [P1] Telegram users with native commands enabled and text slash commands disabled can tap a picker button and have the raw /codex ... callback treated as non-native text, so the button may not dispatch even though typing the command works.
  • [P1] The PR intentionally changes no-arg /codex from status output to a menu picker; maintainers should explicitly accept that compatibility shift or keep status as the default and add an explicit menu entry.
  • [P1] The available Telegram Desktop recording proves an older removed picker design, not the current portable presentation refactor at head 51507e152e.

Maintainer options:

  1. Fix callback dispatch and prove current head (recommended)
    Mark slash-command presentation callbacks as native in Telegram or wrap them with the existing tgcmd: path, add focused coverage for commands.text=false, then attach redacted current-head Telegram proof.
  2. Keep status as the no-arg default
    If maintainers do not want the compatibility shift, leave /codex as status and make the picker available only through explicit menu commands.
  3. Accept the default shift with upgrade notes
    Maintainers may intentionally accept /codex opening a picker, but the PR should document /codex status as the explicit status path before merge.

Next step before merge

  • [P1] Human review is needed because the PR has a concrete Telegram dispatch blocker, a default-behavior compatibility choice, and a contributor proof gap that automation cannot supply.

Security
Cleared: No supply-chain, dependency, credential, or new permission boundary issue was found; plugin mutations still go through the existing owner/operator.admin check.

Review findings

  • [P1] Preserve native dispatch for picker button commands — extensions/codex/src/command-handlers.ts:255
  • [P3] Document the new Codex picker command surface — extensions/codex/src/command-handlers.ts:378-379
Review details

Best possible solution:

Land only after Telegram presentation slash-command callbacks preserve native command dispatch, the /codex default change is explicitly accepted and documented, and current-head Telegram proof shows the button path working.

Do we have a high-confidence way to reproduce the issue?

Yes from source inspection: raw /codex ... presentation values become Telegram callback data, but Telegram only marks tgcmd: callbacks as native while text-command routing can be disabled for native command surfaces. I did not run a live Telegram repro in this read-only review.

Is this the best way to solve the issue?

No, not yet; portable picker buttons are the right owner-boundary direction, but Telegram must preserve native command dispatch for those button taps before the implementation is safe to merge.

Full review comments:

  • [P1] Preserve native dispatch for picker button commands — extensions/codex/src/command-handlers.ts:255
    These presentation values become raw Telegram callback_data, but Telegram only sets commandSource: "native" for tgcmd:-prefixed callbacks. With commands.text=false, /codex is a native command surface, so tapping these picker buttons can be processed as ordinary callback text instead of a native /codex command. Please route slash-command presentation callbacks through the native callback path or mark them native before dispatch, and add coverage for native-only command mode.
    Confidence: 0.9
  • [P3] Document the new Codex picker command surface — extensions/codex/src/command-handlers.ts:378-379
    This changes /codex with no args from status output to a picker and adds explicit menu commands plus no-target plugin pickers, but the public slash-command reference still describes the old Codex surface. Please update the docs so users know /codex status is the status path and the new picker commands exist.
    Confidence: 0.82

Overall correctness: patch is incorrect
Overall confidence: 0.89

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 3ca4e5f61676.

Label changes

Label changes:

  • add proof: 🎥 video: Contributor real behavior proof includes video or recording evidence. The PR body has current-head terminal output for the Codex command handler, but live Telegram after the portable refactor is explicitly untested and the available video proof shows the older removed design; current-head redacted Telegram proof is still needed before merge.
  • add rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦪 silver shellfish and patch quality is 🧂 unranked krab.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🧂 unranked krab, so this older rating label is no longer current.

Label justifications:

  • P2: This is a useful bounded feature with a concrete Telegram dispatch bug and compatibility risk, but it is not an urgent production outage.
  • merge-risk: 🚨 compatibility: The PR changes the default no-arg /codex behavior from status output to a picker menu.
  • merge-risk: 🚨 message-delivery: The Telegram picker button callbacks can fail to dispatch as native commands in native-only command configurations.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦪 silver shellfish and patch quality is 🧂 unranked krab.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR body has current-head terminal output for the Codex command handler, but live Telegram after the portable refactor is explicitly untested and the available video proof shows the older removed design; current-head redacted Telegram proof is still needed before merge. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • proof: 🎥 video: Contributor real behavior proof includes video or recording evidence. The PR body has current-head terminal output for the Codex command handler, but live Telegram after the portable refactor is explicitly untested and the available video proof shows the older removed design; current-head redacted Telegram proof is still needed before merge.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The PR changes visible Telegram Codex picker buttons and button tap behavior, so a short Telegram Desktop proof is useful and expected.
Evidence reviewed

PR surface:

Source +276, Tests +118. Total +394 across 10 files.

View PR surface stats
Area Files Added Removed Net
Source 5 290 14 +276
Tests 5 129 11 +118
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 10 419 25 +394

What I checked:

  • Repository policy read: Root AGENTS.md and scoped extension/agent guidance were read; Telegram maintainer notes require real Telegram proof for callback and interactive-surface changes. (AGENTS.md:1, 3ca4e5f61676)
  • PR button values are raw slash commands: The new Codex picker maps each button command directly into the portable presentation value, including /codex plugins menu and the other menu commands. (extensions/codex/src/command-handlers.ts:255, 51507e152ee5)
  • Telegram renderer preserves the raw value as callback data: Current Telegram presentation rendering turns the button value directly into callback_data after sanitization, so the new /codex ... values become raw callback payloads. (extensions/telegram/src/button-types.ts:43, 3ca4e5f61676)
  • Telegram callback source only becomes native for tgcmd payloads: The callback handler only sets commandSource: "native" when parseTelegramNativeCommandCallbackData succeeds; raw /codex ... callback payloads fall through without native source tagging. (extensions/telegram/src/bot-handlers.runtime.ts:2623, 3ca4e5f61676)
  • Native-only command routing depends on commandSource: Text slash command handling is disabled for native command surfaces when commands.text is false unless the event is marked with commandSource: "native". (src/auto-reply/commands-text-routing.ts:36, 3ca4e5f61676)
  • Prepared Telegram proof is stale for the current implementation: The media manifest and contact sheets show the Mantis candidate proof came from the older candidate design with toggle/older picker text, while the PR body says that design was removed and current-head live Telegram was not tested.

Likely related people:

  • kevinslin: Authored and merged the canonical Codex plugin list|enable|disable command surface that this picker branch builds on, and provided PR discussion guidance to keep this branch scoped to picker UX over that surface. (role: adjacent feature owner; confidence: high; commits: 9b97e1ef2fd2, 57fa8a09407b; files: extensions/codex/src/command-plugins-management.ts, extensions/codex/src/commands.test.ts)
  • steipete: Recently force-pushed the branch with Telegram/Codex test alignment and appears in shallow current-main blame for the touched Codex and Telegram command plumbing in this checkout. (role: recent area contributor; confidence: medium; commits: 51507e152ee5, cbf85a912ce9, d87321b8316b; files: extensions/codex/src/command-handlers.ts, extensions/telegram/src/button-types.test.ts, src/agents/embedded-agent-runner.sanitize-session-history.test-harness.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. labels May 15, 2026
@yaanfpv yaanfpv force-pushed the codex/codex-plugins-subcommand branch from 91bf635 to a8c78eb Compare May 15, 2026 17:16
@openclaw-barnacle openclaw-barnacle Bot added the channel: telegram Channel integration: telegram label May 15, 2026
@yaanfpv yaanfpv changed the title feat(codex): /codex plugins for managing Codex sub-plugins from chat feat(codex): chat surface for managing Codex sub-plugins, permissions, and account, with in-place picker UX May 15, 2026
@openclaw-barnacle openclaw-barnacle Bot added size: XL and removed size: L proof: sufficient ClawSweeper judged the real behavior proof convincing. labels May 15, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 15, 2026
@kevinslin

Copy link
Copy Markdown
Contributor

note that cmds like add won't work beyond writing a config in codex home. to properly add a plugin, if it has an app, you'd need to go through oauth flow through codex/chatgpt. i was actually going to take this on next.

for now, would reduce scope of this pr to just list, enable, disable, help

@yaanfpv

yaanfpv commented May 15, 2026

Copy link
Copy Markdown
Contributor Author

Perfect, that scope reduction makes sense and the OAuth flow for plugins with apps is definitely your territory. Will reduce this PR to list, enable, disable, help only tomorrow: dropping add, toggle, remove plus their pickers and tests. The write-authority gate on enable/disable from the earlier review still stands and I'll add that in the same push. Thanks, and looking forward to seeing the OAuth-aware add flow.

@obviyus

obviyus commented May 16, 2026

Copy link
Copy Markdown
Contributor

@openclaw-mantis verify this PR on Telegram Desktop.

Please generate before/after GIF evidence for the Telegram Codex picker UX. Use the /codex and /codex plugins chat flows. The proof should make main show the old/missing/fallback command surface, and this PR should show the compact in-place Telegram inline-button picker, including the 2x2 top-level picker and a plugin-management picker/edit interaction if available. Prioritize a clean visible native Telegram UI delta over logs.

@openclaw-mantis

openclaw-mantis Bot commented May 16, 2026

Copy link
Copy Markdown

Mantis Telegram Desktop Proof

Summary: Mantis captured native Telegram Desktop before/after GIF evidence.

Main screenshot This PR screenshot
Baseline native Telegram Desktop screenshot Candidate native Telegram Desktop screenshot
Main This PR
Baseline native Telegram Desktop proof GIF Candidate native Telegram Desktop proof GIF

Motion-trimmed clips:

Raw QA files: https://artifacts.openclaw.ai/mantis/telegram-desktop/pr-82224/run-25964724153-1/index.json

@kevinslin kevinslin self-requested a review May 16, 2026 21:27
@kevinslin

Copy link
Copy Markdown
Contributor

heads up that i've merged a change to add /codex plugins list|enable|disable in mainline. plz rebase off of that if you still want to add the whatsapp methods. at this point, i wouldn't add any additional methods to plugins (eg. add/toggle) because add isn't well supported and toggle is redundant with enable/disable

https://github.com/openclaw/openclaw/pull/83293/changes#diff-170fe3a75bb47ab2851eb9fddc594d3beeb18a8433ffdbeb296fac5e5a2ff88f

@yaanfpv yaanfpv force-pushed the codex/codex-plugins-subcommand branch from a8c78eb to 997ffd8 Compare May 22, 2026 11:24
yaanfpv added a commit to yaanfpv/openclaw that referenced this pull request May 22, 2026
 chat surface

- /codex (no-arg) returns a 2x2 button picker (plugins / permissions / account / help)
- /codex fast menu, /codex permissions menu, /codex computer-use menu open sub-pickers
- Telegram callback handler dispatches cdx_* callback_data to a new picker library at
  extensions/telegram/src/codex-picker-buttons.ts; navigation buttons editMessage in place,
  leaf actions stay on the existing tgcmd: synthesis path so they fire as real chat commands
  and pass through mainline's canMutateCodexPlugins auth gate from openclaw#83293.
- No new plugin verbs beyond canonical list / enable / disable; toggle / remove / add are
  intentionally not picker-exposed (per maintainer guidance on the prior shape of openclaw#82224).
- Rebased on top of openclaw#83293 (mainline list/enable/disable). openclaw#82219 marketplace work is
  excluded from this PR.

Closes openclaw#82218
Related openclaw#82219, openclaw#83293
@clawsweeper clawsweeper Bot added proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. labels May 22, 2026
@clawsweeper clawsweeper Bot added status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels May 31, 2026
steipete pushed a commit to yaanfpv/openclaw that referenced this pull request May 31, 2026
 chat surface

- /codex (no-arg) returns a 2x2 button picker (plugins / permissions / account / help)
- /codex fast menu, /codex permissions menu, /codex computer-use menu open sub-pickers
- Telegram callback handler dispatches cdx_* callback_data to a new picker library at
  extensions/telegram/src/codex-picker-buttons.ts; navigation buttons editMessage in place,
  leaf actions stay on the existing tgcmd: synthesis path so they fire as real chat commands
  and pass through mainline's canMutateCodexPlugins auth gate from openclaw#83293.
- No new plugin verbs beyond canonical list / enable / disable; toggle / remove / add are
  intentionally not picker-exposed (per maintainer guidance on the prior shape of openclaw#82224).
- Rebased on top of openclaw#83293 (mainline list/enable/disable). openclaw#82219 marketplace work is
  excluded from this PR.

Closes openclaw#82218
Related openclaw#82219, openclaw#83293
@steipete steipete force-pushed the codex/codex-plugins-subcommand branch from 147f6c4 to cbf85a9 Compare May 31, 2026 12:53
@openclaw-barnacle openclaw-barnacle Bot added the agents Agent runtime and tooling label May 31, 2026
yaanfpv and others added 4 commits May 31, 2026 14:12
 chat surface

- /codex (no-arg) returns a 2x2 button picker (plugins / permissions / account / help)
- /codex fast menu, /codex permissions menu, /codex computer-use menu open sub-pickers
- Telegram callback handler dispatches cdx_* callback_data to a new picker library at
  extensions/telegram/src/codex-picker-buttons.ts; navigation buttons editMessage in place,
  leaf actions stay on the existing tgcmd: synthesis path so they fire as real chat commands
  and pass through mainline's canMutateCodexPlugins auth gate from openclaw#83293.
- No new plugin verbs beyond canonical list / enable / disable; toggle / remove / add are
  intentionally not picker-exposed (per maintainer guidance on the prior shape of openclaw#82224).
- Rebased on top of openclaw#83293 (mainline list/enable/disable). openclaw#82219 marketplace work is
  excluded from this PR.

Closes openclaw#82218
Related openclaw#82219, openclaw#83293
@clawsweeper clawsweeper Bot added proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels May 31, 2026
@steipete steipete force-pushed the codex/codex-plugins-subcommand branch from 51507e1 to 8072d13 Compare May 31, 2026 13:36
@openclaw-barnacle openclaw-barnacle Bot added size: L triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. proof: supplied External PR includes structured after-fix real behavior proof. and removed size: M proof: supplied External PR includes structured after-fix real behavior proof. triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. labels May 31, 2026
@steipete

Copy link
Copy Markdown
Contributor

Verification before merge on head 8072d132068ff216c456034d1910e33d326786b5:

  • node scripts/run-vitest.mjs extensions/codex/src/command-plugins-management.test.ts extensions/codex/src/commands.test.ts extensions/telegram/src/button-types.test.ts
  • node scripts/run-vitest.mjs extensions/telegram/src/bot.test.ts extensions/telegram/src/button-types.test.ts extensions/telegram/src/bot-native-commands.test.ts extensions/telegram/src/shared.test.ts
  • node scripts/run-vitest.mjs run --config test/vitest/vitest.media-understanding.config.ts --reporter=verbose
  • pnpm check:test-types
  • pnpm tsgo:prod
  • pnpm lint --threads=8
  • git diff --check
  • .agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main -> clean, no accepted/actionable findings
  • Real behavior proof: node --import tsx --input-type=module against the real Telegram button mapper showed /codex plugins menu becomes tgcmd:/codex plugins menu while long plugin approval callbacks stay shortened on the raw /approve ... always path.
  • CI: 26714121462 completed successfully.

Known gap: no live Telegram bot roundtrip was run.

@steipete steipete merged commit 400be62 into openclaw:main May 31, 2026
178 of 186 checks passed
vincentkoc added a commit that referenced this pull request May 31, 2026
…n-rotation-current

* origin/main:
  docs: strengthen review dependency inspection rules
  refactor: expand acp core package (#88618)
  fix(doctor): diagnose malformed provider catalogs
  fix(agents): normalize prefixed Anthropic model ids (#88587)
  chore: bump OpenClaw version to 2026.5.31
  feat(codex): add portable Codex command pickers (#82224)
  fix(tui): preserve pending local runs during session sync (#87959)
  docs: clarify inline code comments
  fix(auto-reply): warn on substantive private message-tool finals
  fix(tui): use middle truncation for paths and commands in tool display (#88050)
  fix(webchat): suppress stale active session rows (#87962)
  fix(tui): skip history reload when final event has displayable output (#88004)
  test(discord): isolate timer-sensitive request tests
  fix(auth): coerce persisted device auth tokens
  fix(e2e): heartbeat resource-sampled docker lanes

# Conflicts:
#	src/gateway/server-methods/exec-approvals.ts
#	src/gateway/server-methods/nodes-pending.ts
#	src/infra/node-pairing.ts
#	src/tui/tui-command-handlers.test.ts
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 1, 2026
Refactor Codex slash-command pickers so the Codex plugin owns the native command tree and returns portable presentation buttons for channels to render. Telegram now maps portable slash-command buttons to `tgcmd:` native callbacks while preserving approval callback shortening/bypass behavior, and the old Telegram-specific Codex callback menu path is gone.

Verification:
- `node scripts/run-vitest.mjs extensions/codex/src/command-plugins-management.test.ts extensions/codex/src/commands.test.ts extensions/telegram/src/button-types.test.ts`
- `node scripts/run-vitest.mjs extensions/telegram/src/bot.test.ts extensions/telegram/src/button-types.test.ts extensions/telegram/src/bot-native-commands.test.ts extensions/telegram/src/shared.test.ts`
- `node scripts/run-vitest.mjs run --config test/vitest/vitest.media-understanding.config.ts --reporter=verbose`
- `pnpm check:test-types`
- `pnpm tsgo:prod`
- `pnpm lint --threads=8`
- `git diff --check`
- `.agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main`
- CI `26714121462`

Co-authored-by: Soham Patankar <102520430+yaanfpv@users.noreply.github.com>
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
Refactor Codex slash-command pickers so the Codex plugin owns the native command tree and returns portable presentation buttons for channels to render. Telegram now maps portable slash-command buttons to `tgcmd:` native callbacks while preserving approval callback shortening/bypass behavior, and the old Telegram-specific Codex callback menu path is gone.

Verification:
- `node scripts/run-vitest.mjs extensions/codex/src/command-plugins-management.test.ts extensions/codex/src/commands.test.ts extensions/telegram/src/button-types.test.ts`
- `node scripts/run-vitest.mjs extensions/telegram/src/bot.test.ts extensions/telegram/src/button-types.test.ts extensions/telegram/src/bot-native-commands.test.ts extensions/telegram/src/shared.test.ts`
- `node scripts/run-vitest.mjs run --config test/vitest/vitest.media-understanding.config.ts --reporter=verbose`
- `pnpm check:test-types`
- `pnpm tsgo:prod`
- `pnpm lint --threads=8`
- `git diff --check`
- `.agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main`
- CI `26714121462`

Co-authored-by: Soham Patankar <102520430+yaanfpv@users.noreply.github.com>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Refactor Codex slash-command pickers so the Codex plugin owns the native command tree and returns portable presentation buttons for channels to render. Telegram now maps portable slash-command buttons to `tgcmd:` native callbacks while preserving approval callback shortening/bypass behavior, and the old Telegram-specific Codex callback menu path is gone.

Verification:
- `node scripts/run-vitest.mjs extensions/codex/src/command-plugins-management.test.ts extensions/codex/src/commands.test.ts extensions/telegram/src/button-types.test.ts`
- `node scripts/run-vitest.mjs extensions/telegram/src/bot.test.ts extensions/telegram/src/button-types.test.ts extensions/telegram/src/bot-native-commands.test.ts extensions/telegram/src/shared.test.ts`
- `node scripts/run-vitest.mjs run --config test/vitest/vitest.media-understanding.config.ts --reporter=verbose`
- `pnpm check:test-types`
- `pnpm tsgo:prod`
- `pnpm lint --threads=8`
- `git diff --check`
- `.agents/skills/autoreview/scripts/autoreview --mode branch --base origin/main`
- CI `26714121462`

Co-authored-by: Soham Patankar <102520430+yaanfpv@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling channel: telegram Channel integration: telegram extensions: codex mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. proof: supplied External PR includes structured after-fix real behavior proof. proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: L status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants