-
Notifications
You must be signed in to change notification settings - Fork 14
[5/5] Wire announcement maker entry points and setup #273
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
22444c8
8e9b18d
df9e114
346ded5
9aa91bb
d0fa90f
0e5eff4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -98,8 +98,8 @@ Order of grounding sources (highest to lowest): | |
| microsoft/CopilotStudioSamples Employee Self-Service Agent samples. | ||
| 3. `src/skills/` - kit-shipped skill instructions for /create, /update, | ||
| /delete, /test, /scan, /evaluate, /push, /flightcheck, | ||
| /backup-template-configs, /restore-template-configs, and landing-page | ||
| configuration. | ||
| /backup-template-configs, /restore-template-configs, /org-announcements, | ||
| and landing-page configuration. | ||
| 4. `src/reference/` (other subfolders) - additional kit-shipped guidance. | ||
| 5. Web fetch / general knowledge - only when none of the above answer the | ||
| question and only after telling the user you're falling back. | ||
|
|
@@ -323,6 +323,8 @@ After a successful push, `.baseline/` is updated to match the new state. | |
| | Re-apply / put back Workday reference-data customisations | `src/skills/restore-template-configs/SKILL.md` | | ||
| | View or configure ESS landing-page branding, quick links, starter prompts, insight cards, name, or icon | `src/skills/landing-page-config/SKILL.md` | | ||
| | Invoke any tool from the `ess-landing-page-config` MCP server | `src/skills/landing-page-config/SKILL.md` | | ||
| | Create, edit, republish, archive, or manage organization announcements or bulletins | `src/skills/org-announcements/SKILL.md` | | ||
| | Invoke any tool from the `ess-org-announcements` MCP server | `src/skills/org-announcements/SKILL.md` | | ||
|
|
||
| **Trigger phrases for connect:** "connect ServiceNow", "set up ServiceNow", | ||
| "integrate ServiceNow", "connect Workday", "set up Workday", "add ServiceNow", | ||
|
|
@@ -346,6 +348,18 @@ links, starter prompts, Stay Up to Date, Quick Access, the agent name, or the | |
| agent icon, or asks what any landing-page setting controls for employees. Do | ||
| not call an AgentConfiguration MCP tool from a generic flow. | ||
|
|
||
| **Org Announcements invocation:** Before invoking ANY tool from the | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — route announcement intent to its own workflow. These instructions tell the chat agent to read the announcement skill for announcement requests and calls to The important boundary is explicit: missing deployed This Markdown affects runtime agent behavior; it is not merely a feature-design document. The explicit target identifies the deployed agent, while tenant context and authorization remain with the authenticated service path. |
||
| `ess-org-announcements` MCP server, read and follow | ||
| `src/skills/org-announcements/SKILL.md`. Its own `list_agent_configs` and | ||
| `search_agents` tools resolve missing deployed titleIds; do not start or call | ||
| the landing-page server for announcement discovery. This applies whether the user asks to | ||
| see, create, edit, republish, archive, or delete an announcement, mentions | ||
| announcements, org announcements, bulletins, or alerts, or asks who an | ||
| announcement reaches. Org Announcements are scoped to the authenticated tenant | ||
| and selected deployed agent's required `titleId`. The tenant is token-derived; | ||
| the title is not an audience group or author permission. Do not call an Org | ||
| Announcements MCP tool from a generic flow. | ||
|
|
||
| **FlightCheck results rendering:** When presenting `/flightcheck` results (Step 3 | ||
| of `src/skills/flightcheck/SKILL.md`), read `workspace/flightcheck/results.json` | ||
| with your file-reading tool and format the summary banner and tables **yourself, | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -14,6 +14,7 @@ Here's what I can help you with: | |
| | Command | What it does | | ||
| |---------|-------------| | ||
| | `/landing-page` | Configure the branding and content employees see when they open the ESS agent | | ||
| | `/org-announcements` | Create and manage announcements for the selected deployed ESS agent | | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — expose the command in the maker's menu. This adds The menu is an entry point only; the dedicated prompt and skill own the behavior after the maker chooses it. |
||
| | `/connect` | Type Enter to connect ServiceNow or Workday to your agent | | ||
| | `/create` | Create a simple topic with evals, a workflow, or an evaluation test set | | ||
| | `/update` | Update a simple topic with evals, a workflow, or an evaluation test set | | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| --- | ||
| mode: agent | ||
| description: "Create and manage announcements for the selected ESS agent" | ||
| --- | ||
|
|
||
| # Org Announcements | ||
|
|
||
| Read `src/skills/org-announcements/SKILL.md` and follow it. | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — a thin slash-command entry point. This new prompt gives It deliberately does not duplicate configuration reading, authentication, or announcement logic here. Those rules live in the skill so slash-command use and natural-language announcement intent follow the same instructions. |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,6 +4,11 @@ | |
| "command": "{pythonExecutable}", | ||
| "args": ["server.py"], | ||
| "cwd": "${workspaceFolder}/src/mcp/agentconfig_landing_page" | ||
| }, | ||
| "ess-org-announcements": { | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — tell setup how to launch the announcement provider. The new This registers a separate provider beside landing-page configuration. It does not contain a tenant, agent ID, token, or environment-specific endpoint. Those are resolved at runtime; existing user configuration is handled by the shared materialization logic rather than by writing a hand-built |
||
| "command": "{pythonExecutable}", | ||
| "args": ["server.py"], | ||
| "cwd": "${workspaceFolder}/src/mcp/agentconfig_org_announcements" | ||
| } | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -48,6 +48,47 @@ Copilot Studio and deployed to the organization. `/setup` installs and extracts | |
| the Power Platform agent; publication, admin approval, and Integrated apps | ||
| deployment are separate steps. | ||
|
|
||
| ### 📢 Post Organization Announcements | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — explain how to start the feature and what it depends on. The new README section describes the command, natural-language request, and Quick Action; the command table gains the same entry. It explains announcement forms, audience lookup, scheduling, and management at a user-facing level. It also records the important operational boundaries: announcements belong to the selected tenant/agent pair; discovery runs through the announcement provider; Graph uses a separate resource token for the intended authoring account; and a matching scoped widget/backend is required. The readable This is usage and dependency documentation, not evidence that a particular tenant has the feature enabled or that live integration is complete. |
||
|
|
||
| Publish announcements for the selected deployed ESS agent and its audiences. Run | ||
| `/org-announcements`, ask `Create an announcement`, or use the **Post an | ||
| announcement** Quick Action. | ||
|
|
||
| - **Standard announcements** carry a title, description, priority, and up to two | ||
| actions. | ||
| - **Alerts** carry a single link action for time-sensitive notices. | ||
| - **Audiences** are security groups, mail-enabled security groups, or classic | ||
| distribution groups, searched by name or email in one combined query. | ||
| - **Scheduling** publishes an announcement for a start/end window, and expired | ||
| announcements can be published again through the normal editor after reviewing | ||
| and updating their schedule. | ||
| - **Lifecycle** actions archive, unarchive, move back to draft, duplicate, or | ||
| delete an announcement. | ||
|
|
||
| Describe the announcement in chat and the kit opens a pre-filled editor for you | ||
| to review — nothing is saved until you publish or save a draft in that editor. | ||
|
|
||
| Org Announcements are **scoped to the authenticated tenant and selected agent's | ||
| `titleId`**, not shared across agents. The current 100 limit and latest 50 | ||
| archive window apply per tenant-and-agent pair. There is no tenant-wide fallback. | ||
| The title is resolved using `list_agent_configs` and `search_agents` on the | ||
| `ess-org-announcements` provider. Discovery shares neutral Python code with the | ||
| landing-page provider, but does not require its MCP process or initialize its | ||
| configuration. Announcement authoring | ||
| requires the Org Announcements feature to be enabled for your tenant, and | ||
| audience search requires the `Directory.Read.All` Microsoft Graph permission to | ||
| be consented in your tenant. | ||
|
|
||
| Graph uses a separate resource token for the same authoring tenant and account. | ||
| The current account-context check requires readable `tid` and `oid` claims; | ||
| opaque tokens or credentials missing those claims return an explicit | ||
| authentication failure rather than using a different account. The API still | ||
| validates tokens and authorizes every request. | ||
|
|
||
| This development surface requires the matching agent-qualified v1.1 backend | ||
| and scoped widget. The MCP rejects unscoped canonical responses instead of | ||
| silently consuming records from an older backend. | ||
|
|
||
| ### 📖 Pre-Loaded ESS Documentation, Samples & Best Practices | ||
|
|
||
| The kit ships with a complete reference library that the AI agent reads at task time — you don't need to look anything up yourself. | ||
|
|
@@ -332,6 +373,7 @@ Then **run `/setup`** in GitHub Copilot Chat to configure your environment. | |
| |---------|-------------| | ||
| | `/setup` | First-time environment setup — authenticate, discover agent, extract, configure | | ||
| | `/landing-page` | Configure landing-page branding and content | | ||
| | `/org-announcements` | Create and manage announcements for the selected ESS agent | | ||
| | `/connect` | Connect an external system (ServiceNow, Workday) — guided setup with MCP verification | | ||
| | `/create` | Create an eval-driven topic, workflow, or evaluation test set | | ||
| | `/update` | Update a simple topic with evals, a workflow, or an evaluation test set | | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -51,14 +51,17 @@ Before showing the message, run this command without showing it to the user: | |
|
|
||
| ```powershell | ||
| python -m pip install -r scripts/requirements.txt | ||
| python -m pip install -r src/mcp/agentconfig_landing_page/requirements.txt | ||
| python -m pip install -r src/mcp/agentconfig_org_announcements/requirements.txt | ||
| ``` | ||
|
|
||
| If dependency installation fails, show the error and stop. | ||
|
|
||
| **Message:** | ||
|
|
||
| Setup is already complete! Run `/landing-page` to configure the branding and | ||
| content employees see, or type `/menu` to see everything you can do. | ||
| content employees see, `/org-announcements` to post an announcement for your | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — mention announcements when setup is already complete. The existing completion message now points makers to This does not add a new onboarding branch or an announcement write. It keeps the already-set-up user's next-step guidance consistent with the available commands. |
||
| selected deployed agent, or type `/menu` to see everything you can do. | ||
|
SophieS0ng marked this conversation as resolved.
|
||
|
|
||
| **End message.** | ||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -137,6 +137,7 @@ Run this command in the terminal without showing it to the user: | |
|
|
||
| ```powershell | ||
| python -m pip install -r src/mcp/agentconfig_landing_page/requirements.txt | ||
| python -m pip install -r src/mcp/agentconfig_org_announcements/requirements.txt | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — install the provider's own dependencies during setup. Setup guidance now installs This follows the sibling-feature arrangement: announcements owns its runtime requirements while reusing the shared core underneath. Adding the server to defaults alone would not ensure its Python dependencies were installed. |
||
| ``` | ||
|
|
||
| If installation fails, show the error and stop. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -79,9 +79,13 @@ You can customize the active agent's landing page from chat, including accent | |
| colors, categorized starter prompts, quick links, Stay up to date cards, and | ||
| Quick Access cards. Run `/landing-page` whenever you're ready. | ||
|
|
||
| You can also post announcements for the selected deployed ESS agent and its | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Walkthrough — advertise announcements at the end of onboarding. The completion text and command table now explain that the maker can create/manage announcements for the selected deployed agent and its chosen audiences. These are pointers into the existing dedicated flow, not automatic feature initialization or publishing. They keep the first-run experience consistent with the menu and the already-complete setup message. |
||
| chosen audiences. Run `/org-announcements` to create or manage them. | ||
|
|
||
| | Command | What it does | | ||
| |---------|-------------| | ||
| | `/landing-page` | Configure landing-page branding and content | | ||
| | `/org-announcements` | Create and manage announcements for the selected ESS agent | | ||
| | `/create` | Create a new topic or workflow | | ||
| | `/connect` | Set up ServiceNow or Workday integration | | ||
| | `/scan` | Scan for compile errors | | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Walkthrough — include maker routing in the feature's CI coverage.
This adds the existing foundation/setup-router suite to the announcements job. That suite now checks the command, skill, menu, dependency-install guidance, and separate-provider routing introduced by this slice.
The job already exists from earlier chunks; this is one additional test selector, not another workflow or branch-policy change.