Skip to content

Add agentic send helpers#632

Open
heyitsaamir wants to merge 2 commits into
agentic-api-surfacefrom
agentic-send-helpers
Open

Add agentic send helpers#632
heyitsaamir wants to merge 2 commits into
agentic-api-surfacefrom
agentic-send-helpers

Conversation

@heyitsaamir

@heyitsaamir heyitsaamir commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Wires agentic identity into the app-layer send/reply helpers (mirrors Python PR #480):

  • app.send(conversationId, activity, options?) accepts RequestOptions
  • app.reply() supports options via isRequestOptions type guard
  • app.getAgenticIdentity(appId, userId, opts?) factory method
  • ActivitySender refactored to accept pre-built Client; merges agenticIdentity and serviceUrl into all API calls
  • Per-turn ActivitySender in $process with identity from activity.recipient
  • IActivitySender interface extended with readonly agenticIdentity?
  • ActivityContext.send() simplified — delegates to sender directly
  • examples/agent365/ — reactive echo + proactive send sample

@heyitsaamir

Copy link
Copy Markdown
Collaborator Author

Comment thread packages/apps/src/contexts/activity.ts Outdated
Comment thread packages/apps/src/activity-sender.ts Outdated
Comment thread packages/apps/src/app.process.ts Outdated
@heyitsaamir heyitsaamir marked this pull request as ready for review June 26, 2026 20:12
@heyitsaamir heyitsaamir force-pushed the agentic-api-surface branch from eb8d2e2 to c92e38c Compare June 26, 2026 20:19
@heyitsaamir heyitsaamir force-pushed the agentic-send-helpers branch 2 times, most recently from cefad04 to 9088f52 Compare June 26, 2026 20:21
@heyitsaamir heyitsaamir force-pushed the agentic-api-surface branch from c92e38c to b57702e Compare June 26, 2026 20:29
@heyitsaamir heyitsaamir force-pushed the agentic-send-helpers branch from 9088f52 to 6925d74 Compare June 26, 2026 20:29
@heyitsaamir heyitsaamir requested a review from Copilot June 26, 2026 20:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR wires agentic identity and request-level overrides into the @microsoft/teams.apps send/reply pipeline by threading RequestOptions (serviceUrl + agenticIdentity) through App, ActivityContext, and ActivitySender, and adds a new examples/agent365 sample demonstrating reactive + proactive agentic sends.

Changes:

  • Extend app-layer send() / reply() helpers to accept RequestOptions, and add an App.getAgenticIdentity() convenience factory.
  • Refactor ActivitySender to reuse a pre-built Teams API Client and pass RequestOptions into conversation activity operations.
  • Add examples/agent365 workspace showing reactive echo and proactive agentic sends.

Reviewed changes

Copilot reviewed 16 out of 19 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
packages/apps/src/types/plugin/sender.ts Extends IActivitySender with optional agentic identity + RequestOptions support.
packages/apps/src/contexts/activity.ts Simplifies ActivityContext.send() delegation to activitySender.
packages/apps/src/app.ts Adds RequestOptions plumbing to send/reply and introduces getAgenticIdentity().
packages/apps/src/app.spec.ts Updates tests to pass valid ActivityLike payloads (explicit type).
packages/apps/src/app.process.ts Creates per-turn ApiClient/ActivitySender with agentic identity from inbound recipient.
packages/apps/src/app.process.spec.ts Adjusts serviceUrl capture tests to hook ActivitySender.send.
packages/apps/src/activity-sender.ts Refactors sender to reuse Client and forward RequestOptions into API calls.
packages/apps/src/activity-sender.spec.ts Reworks sender tests to mock the API client instead of raw HTTP.
package-lock.json Adds workspace entries for the new @examples/agent365 package.
examples/agent365/turbo.json Adds turbo task config for building the new example workspace.
examples/agent365/tsconfig.json TypeScript configuration for the new example.
examples/agent365/src/proactive.ts Proactive messaging sample using AgenticIdentity with both app.send and API client.
examples/agent365/src/main.ts Reactive echo sample demonstrating automatic propagation of inbound agentic identity/serviceUrl.
examples/agent365/README.md Documentation for running reactive and proactive samples.
examples/agent365/package.json Declares the new example workspace and scripts.
examples/agent365/eslint.config.js ESLint config for the new example workspace.
examples/agent365/appPackage/manifest.json Teams app manifest for the example agent package.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/apps/src/app.ts
Comment thread packages/apps/src/activity-sender.ts
Comment thread packages/apps/src/activity-sender.ts
Comment thread packages/apps/src/app.process.spec.ts
Comment thread packages/apps/src/app.process.spec.ts
@heyitsaamir heyitsaamir force-pushed the agentic-api-surface branch from b57702e to fbf0cbd Compare June 26, 2026 21:59
@heyitsaamir heyitsaamir force-pushed the agentic-send-helpers branch from 6925d74 to b8e2b61 Compare June 26, 2026 21:59
heyitsaamir and others added 2 commits June 26, 2026 15:03
- Add RequestOptions (agenticIdentity, serviceUrl) to app.send()
- Add isRequestOptions guard for reply() overload disambiguation
- Refactor ActivitySender to accept pre-built API Client
- Wire agentic identity from inbound recipient into per-turn sender
- Forward serviceUrl from ConversationReference in all API calls
- Add getAgenticIdentity() factory on App
- Add agenticIdentity to IActivitySender interface
- Simplify ActivityContext.send() to delegate to sender directly
- Add examples/agent365 reactive + proactive sample

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@heyitsaamir heyitsaamir force-pushed the agentic-api-surface branch from fbf0cbd to c5dfbda Compare June 26, 2026 22:03
@heyitsaamir heyitsaamir force-pushed the agentic-send-helpers branch from b8e2b61 to 80a73f2 Compare June 26, 2026 22:04

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 16 out of 19 changed files in this pull request and generated 3 comments.

Comment on lines 45 to 49
if (activity.id) {
const res = isTargeted
? await api.conversations.activities(ref.conversation.id).updateTargeted(activity.id, activity)
: await api.conversations.activities(ref.conversation.id).update(activity.id, activity);
? await this.api.conversations.activities(ref.conversation.id).updateTargeted(activity.id, activity, reqOptions)
: await this.api.conversations.activities(ref.conversation.id).update(activity.id, activity, reqOptions);
return { ...activity, ...res };
Comment on lines 52 to 55
const res = isTargeted
? await api.conversations.activities(ref.conversation.id).createTargeted(activity)
: await api.conversations.activities(ref.conversation.id).create(activity);
? await this.api.conversations.activities(ref.conversation.id).createTargeted(activity, reqOptions)
: await this.api.conversations.activities(ref.conversation.id).create(activity, reqOptions);
return { ...activity, ...res };
Comment on lines +19 to +21
log.info(`[Agent365 reactive] Message received: ${activity.text}`);
log.info(`[Agent365 reactive] From: ${JSON.stringify(activity.from)}`);
log.info(`[Agent365 reactive] Recipient agentic identity: ${JSON.stringify(activity.recipient)}`);
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.

2 participants