Skip to content

Fix Teams preinstallation, allowlists, and scheduled delivery - #76

Open
JeffPengCoder wants to merge 2 commits into
NVIDIA:feat/teams-channelfrom
JeffPengCoder:fix/teams-pr71-onboarding
Open

JeffPengCoder wants to merge 2 commits into
NVIDIA:feat/teams-channelfrom
JeffPengCoder:fix/teams-pr71-onboarding

Conversation

@JeffPengCoder

@JeffPengCoder JeffPengCoder commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor

Description

Follow-up to #71, targeting its source branch so the author can merge these fixes into the existing PR.

The documented scheduled Teams delivery cannot run while the generated OpenClaw configuration hard-codes cron.enabled=false. The allowlist validator also accepts ['*'] and blank entries despite requiring Entra object IDs; the pinned runtime treats * as a wildcard. This change makes cron an explicit opt-in and validates concrete user GUIDs and nonempty Secret key names.

Add openclaw.msteams.install=true for credential-free plugin preparation on the existing PVC. Messaging stays disabled, no bot Secret is referenced, and no Teams listener or ingress is exposed until enabled=true. Existing enabled configurations continue to install the plugin automatically.

The installation guide now explains tenant-side prerequisites, the Microsoft developer CLI, public HTTPS routing, conversation initialization, scheduler activation, and the difference between component health and real Teams delivery. The generated agent documentation bundle is refreshed.

Validation

  • Full repository suite: 220 tests, 218 passed, 2 existing conditional skips, 0 failed.
  • Teams-focused suite: 8 passed, including wildcard, blank, malformed, scalar and non-string allowlists, credential-free preinstallation, and explicit scheduler enablement.
  • Standalone inference: 4 passed.
  • Helm lint: stack defaults, credential-free Teams preinstallation, and standalone inference passed.
  • Agent documentation bundle check and git diff --check passed.

For the pinned plugin used by #71, ARM64 kind checks also verified installation/loading, configuration validation, an unsigned webhook request returning 401 on port 3978, Gateway health returning 200, and loading after recreating a persistent OpenClaw Pod. The additional follow-up behavior is covered by the chart tests above. Authenticated tenant DM round trips, proactive delivery, and phone notifications still require real tenant acceptance testing.

Checklist

  • Changes are limited to Teams onboarding, validation, scheduler configuration, tests, and generated documentation.
  • Commit is signed off under the Developer Certificate of Origin.
  • Documentation and its generated bundle are up to date.
  • No credentials or environment-specific deployment details are included.

Follow-up diagnostic code (2026-11-04)

Commit 3deea66aab4a09973af1602b4f8c14f9c4037bf1 adds a portable one-shot Graph delegated diagnostic. This is a separate diagnostic route; it does not turn the native Bot channel into a delegated user channel or change existing Bot credentials. This follow-up changes code/tests only.

  • Default is User.Read-only identity verification. Sending requires an explicit --send and a distinct recipient Entra GUID; chat members use concrete GUID bindings.
  • Host, Kubernetes context, namespace, ServiceAccount, image, credentials file and evidence location are configurable. No environment-specific account, application or host identifiers are included.
  • Credentials pass over SSH/Kubernetes stdin into a read-only projected Secret file. Password, client-secret and token values are redacted, including escaped error payloads. Consent/MFA failures never trigger password retries or resets.
  • Isolated resources carry an ownership token and are cleaned with UID preconditions, including partial creation and collision cases. Cleanup failure cannot be reported as overall success.

Validation: full suite 229 tests, 227 passed, 2 existing skips, 0 failed; focused Node tests 9/9 and Python runner tests 9/9; standalone inference 4/4; Helm lint, documentation-bundle check and git diff --check passed. A real isolated identity probe using the new runner completed token acquisition and Graph /me with HTTP 200 and removed all three temporary resources. No chat was created and no Teams message was sent. The separate delegated chat consent and full Teams round-trip remain unvalidated.

Signed-off-by: Jeff Peng <jepeng@nvidia.com>
Signed-off-by: Jeff Peng <jepeng@nvidia.com>

This branch has not been deployed

No deployments
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.

1 participant