Skip to content
Merged
Show file tree
Hide file tree
Changes from 70 commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
6aa13c8
feat(onboard): use OpenShell providers for messaging credentials
ericksoa Mar 30, 2026
451dc57
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Mar 30, 2026
d898544
fix(security): verify messaging providers exist after sandbox creation
ericksoa Mar 30, 2026
499053d
fix(security): test provider creation and sandbox attachment for mess…
ericksoa Mar 30, 2026
9d4d5e1
fix(security): address CodeRabbit review findings
ericksoa Mar 30, 2026
752fc94
fix(security): update credential-exposure test for blocklist pattern
ericksoa Mar 30, 2026
3fa1cf6
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Mar 30, 2026
00c267f
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Mar 31, 2026
6d23a16
fix(onboard): address review feedback for messaging credential providers
ericksoa Mar 31, 2026
3cfa41e
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Mar 31, 2026
1824df4
test(onboard): add unit tests for provider and utility functions
ericksoa Mar 31, 2026
fa571a4
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Mar 31, 2026
34f1587
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Mar 31, 2026
030fb54
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Mar 31, 2026
a5ed2d3
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Mar 31, 2026
1babf82
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Mar 31, 2026
209aecd
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Mar 31, 2026
8efb2c0
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Mar 31, 2026
230f508
fix(security): address remaining CodeRabbit review feedback on PR #1081
ericksoa Apr 1, 2026
503abf5
Merge branch 'feat/messaging-credential-providers' of https://github.…
ericksoa Apr 1, 2026
35f2c10
Merge branch 'main' into feat/messaging-credential-providers
cv Apr 1, 2026
c7a2643
Merge branch 'main' into feat/messaging-credential-providers
cv Apr 1, 2026
5e1799e
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Apr 2, 2026
c497dc3
Merge branch 'main' into feat/messaging-credential-providers
cv Apr 2, 2026
8cb7d9a
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Apr 2, 2026
d14e405
fix: check upsertProvider result and skip recreation when providers e…
ericksoa Apr 2, 2026
6dd38a5
fix: upgrade Telegram provider to full L7 URL-path credential injection
ericksoa Apr 2, 2026
b57fb18
feat: replace host-side telegram bridge with native OpenClaw channels
ericksoa Apr 2, 2026
8b6a06e
fix: normalize messaging tokens and derive credential blocklist
ericksoa Apr 2, 2026
dc2b83c
test: pin OpenShell install to v0.0.20 to isolate e2e hang
ericksoa Apr 2, 2026
fd54399
fix: prevent forward start from hanging on piped stdio inheritance
ericksoa Apr 2, 2026
90cd28c
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Apr 2, 2026
92546cc
fix: add stderr capture, verification, and retry to dashboard forward
ericksoa Apr 2, 2026
acf0db3
Merge remote-tracking branch 'origin/main' into feat/messaging-creden…
ericksoa Apr 2, 2026
c521f75
fix: remove void-return checks on ensureDashboardForward after merge
ericksoa Apr 2, 2026
2058c9f
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Apr 2, 2026
b1b616d
merge: integrate main into feat/messaging-credential-providers
ericksoa Apr 3, 2026
088cef8
fix(security): address coderabbit review feedback on messaging providers
ericksoa Apr 3, 2026
6c6818f
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Apr 3, 2026
d5c275b
test(e2e): add messaging credential provider E2E test
ericksoa Apr 3, 2026
4393df6
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Apr 3, 2026
ce95b90
ci: add messaging-providers to e2e-brev workflow dispatch options
ericksoa Apr 3, 2026
ac1c36b
Merge branch 'feat/messaging-credential-providers' of https://github.…
ericksoa Apr 3, 2026
aa8d056
ci: add messaging-providers-e2e to nightly workflow
ericksoa Apr 3, 2026
3a328d8
fix(e2e): run install.sh in messaging providers test for bare runners
ericksoa Apr 3, 2026
aa8b625
fix(security): revert non-root fail-fast in configure_messaging_channels
ericksoa Apr 3, 2026
457394f
fix(e2e): handle non-root sandbox and Node.js warnings in messaging test
ericksoa Apr 3, 2026
c140754
fix(e2e): accept Telegram 404 as valid proxy rewrite proof
ericksoa Apr 3, 2026
25a2dd9
Merge branch 'main' into feat/messaging-credential-providers
cv Apr 3, 2026
fc1dba2
merge: integrate main into feat/messaging-credential-providers
ericksoa Apr 3, 2026
07c10ca
Merge branch 'feat/messaging-credential-providers' of https://github.…
ericksoa Apr 3, 2026
2123c05
fix: remove stale telegram-bridge spawn from services.ts
ericksoa Apr 3, 2026
e76e8b9
Merge branch 'main' into feat/messaging-credential-providers
ericksoa Apr 3, 2026
3fc08b8
feat: prompt for messaging channel tokens during interactive onboard
ericksoa Apr 3, 2026
c540958
Merge branch 'feat/messaging-credential-providers' of https://github.…
ericksoa Apr 3, 2026
c50c3b4
fix: prompt for each messaging token individually during onboard
ericksoa Apr 3, 2026
21acf9a
fix: ask which messaging channels first, then prompt only those tokens
ericksoa Apr 3, 2026
ca5f607
fix: prompt for each messaging token separately with setup instructions
ericksoa Apr 3, 2026
fd12dff
feat: make messaging channels its own onboard step (6 of 8)
ericksoa Apr 3, 2026
cf23928
fix: use preset-style selection UX for messaging channels
ericksoa Apr 3, 2026
c9d6f33
fix: move messaging channels to step 5, before sandbox creation
ericksoa Apr 3, 2026
17d1a1f
fix: match policy preset UX for messaging channel selection
ericksoa Apr 3, 2026
638851b
fix: use exact Y/n/list pattern from policy presets for messaging
ericksoa Apr 3, 2026
b1de2c9
Revert "fix: use exact Y/n/list pattern from policy presets for messa…
ericksoa Apr 3, 2026
163ba05
fix: replace comma-separated messaging selector with numbered toggle
ericksoa Apr 4, 2026
3275015
Merge branch 'main' into feat/messaging-credential-providers
cv Apr 4, 2026
92e6807
fix: use single-keypress toggle for messaging channel selection
ericksoa Apr 4, 2026
0e67dbf
fix: redraw messaging toggle list in place with ANSI escape codes
ericksoa Apr 4, 2026
f768095
Merge branch 'main' into feat/messaging-credential-providers
cv Apr 4, 2026
ee014e8
fix: clear screen below cursor on redraw to prevent prompt duplication
ericksoa Apr 4, 2026
af8e06a
merge: integrate main into feat/messaging-credential-providers
ericksoa Apr 4, 2026
ac60cc7
fix(onboard): bake messaging channels into openclaw.json at build time
ericksoa Apr 5, 2026
ea66a75
merge: integrate main into feat/messaging-credential-providers
ericksoa Apr 5, 2026
366c518
fix(start): remove dead runtime openclaw.json patching from configure…
ericksoa Apr 5, 2026
e29bd43
fix(start): allow CLI clients in auto-pair watcher
ericksoa Apr 5, 2026
68de9fa
feat(onboard): collect Telegram user ID for DM allowlisting
ericksoa Apr 5, 2026
04dc48d
test(e2e): verify DM allowlisting in messaging providers test
ericksoa Apr 5, 2026
de910ea
fix(start): add explicit return 0 to configure_messaging_channels
ericksoa Apr 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/e2e-brev.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ name: e2e-brev
# through $(cmd), backticks, quote breakout, ${VAR} expansion,
# process table leak checks, and SANDBOX_NAME validation.
# Requires running sandbox.
# messaging-providers — 20+ tests validating PR #1081: provider creation, credential
# isolation, openclaw.json config patching, network reachability,
# and L7 proxy token rewriting for Telegram + Discord. Creates
# its own sandbox (e2e-msg-provider). (~15 min)
# all — Runs credential-sanitization + telegram-injection (NOT full,
# which destroys the sandbox the security tests need).
#
Expand All @@ -41,6 +45,7 @@ on:
- full
- credential-sanitization
- telegram-injection
- messaging-providers
- all
use_launchable:
description: "Use CI launchable (true) or bare brev create + brev-setup.sh (false)"
Expand Down
39 changes: 37 additions & 2 deletions .github/workflows/nightly-e2e.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
# cloud-experimental-e2e Experimental cloud inference test (main script skips embedded
# check-docs + final cleanup; follow-up steps run check-docs,
# skip/05-network-policy.sh, then cleanup.sh --verify with if: always()).
# messaging-providers-e2e Validates messaging credential provider/placeholder/L7-proxy chain
# for Telegram + Discord. Uses fake tokens. See PR #1081.
# gpu-e2e Local Ollama inference on a GPU self-hosted runner.
# Controlled by the GPU_E2E_ENABLED repository variable.
# Set vars.GPU_E2E_ENABLED to "true" in repo settings to enable.
Expand Down Expand Up @@ -161,6 +163,39 @@ jobs:
path: /tmp/nemoclaw-e2e-cloud-experimental-install.log
if-no-files-found: ignore

# ── Messaging Providers E2E ──────────────────────────────────
# Validates the full provider/placeholder/L7-proxy chain for messaging
# credentials (Telegram, Discord). Uses fake tokens by default — the L7
# proxy rewrites placeholders and the real API returns 401, proving the
# chain works. See: PR #1081
messaging-providers-e2e:
if: github.repository == 'NVIDIA/NemoClaw'
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Run messaging providers E2E test
env:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
NEMOCLAW_NON_INTERACTIVE: "1"
NEMOCLAW_ACCEPT_THIRD_PARTY_SOFTWARE: "1"
NEMOCLAW_SANDBOX_NAME: "e2e-msg-provider"
NEMOCLAW_RECREATE_SANDBOX: "1"
GITHUB_TOKEN: ${{ github.token }}
TELEGRAM_BOT_TOKEN: "test-fake-telegram-token-e2e"
DISCORD_BOT_TOKEN: "test-fake-discord-token-e2e"
run: bash test/e2e/test-messaging-providers.sh

- name: Upload install log on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: install-log-messaging-providers
path: /tmp/nemoclaw-e2e-install.log
if-no-files-found: ignore

# ── GPU E2E (Ollama local inference) ──────────────────────────
# Enable by setting repository variable GPU_E2E_ENABLED=true
# (Settings → Secrets and variables → Actions → Variables)
Expand Down Expand Up @@ -213,8 +248,8 @@ jobs:

notify-on-failure:
runs-on: ubuntu-latest
needs: [cloud-e2e, cloud-experimental-e2e, gpu-e2e]
if: ${{ always() && (needs.cloud-e2e.result == 'failure' || needs.cloud-experimental-e2e.result == 'failure' || needs.gpu-e2e.result == 'failure') }}
needs: [cloud-e2e, cloud-experimental-e2e, messaging-providers-e2e, gpu-e2e]
if: ${{ always() && (needs.cloud-e2e.result == 'failure' || needs.cloud-experimental-e2e.result == 'failure' || needs.messaging-providers-e2e.result == 'failure' || needs.gpu-e2e.result == 'failure') }}
permissions:
issues: write
steps:
Expand Down
Loading
Loading