Skip to content

[5/5] Wire announcement maker entry points and setup - #273

Draft
rebova-microsoft wants to merge 2 commits into
users/rebova/org-announcements-review-runtimefrom
users/rebova/org-announcements-review-maker
Draft

rebova-microsoft wants to merge 2 commits into
users/rebova/org-announcements-review-runtimefrom
users/rebova/org-announcements-review-maker

Conversation

@rebova-microsoft

@rebova-microsoft rebova-microsoft commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Description

Make the completed announcement flow discoverable through its skill, prompt, setup defaults, and Maker Profile Quick Action.

Current diff

  • Resolve missing deployed titleIds through the announcements provider itself; do not require the landing-page MCP process.
  • Map Standard priority labels explicitly: Important is 0, Informational is 1, and unspecified priority defaults to Informational.
  • Continue a requested review-only create after a successful unresolved audience lookup, preserving supplied content and leaving unresolved audiences unset. Do not guess group IDs, substitute a previous group, or misreport directory failures as no matches.
  • Explain the distinction between opening repairable copies and saving valid actions. Preserve actual action kinds/targets; the backend validates every present action on Draft save as well as Publish.
  • Document agent scope, supported credential limitations, structured feature errors versus SDK tool errors, and safe recovery.
  • Add only the announcements provider to current shipped defaults. Preserve upstream planner removal and active-interpreter symlink handling.
  • Include the announcement Quick Action and bundled 0.4.25 VSIX without rebuilding or increasing its version. Keep upstream release history and reinstall checks.
  • Keep setup/title-ownership tests independent of collection order and complete the feature CI/routing coverage.

Feature contract

Announcement scope is the authenticated tenant plus the selected deployed titleId, not all agents. A matching scoped widget/backend is required. No copy-title parameter, extra rename write, model-visible mutation, or recovery-envelope field is added.

Stack and dependency

This is slice 5/5. Head: users/rebova/org-announcements-review-maker. Base: users/rebova/org-announcements-review-runtime. The current diff is only this slice against its immediate predecessor; these are stacked review chunks, not parallel PRs against the integration branch.

Bootstrap prerequisite: #262 merged into release/planner-landing-page on September 10, 2026. This stack remains pinned to cacb1bec056428809f1ccb0383561190d516bee4, which is an ancestor of merge commit 8a04f5f40f334e729a3497877edca655730f1be2. Unchanged prerequisite work is excluded from this slice. No rewrite is needed solely to account for that merge. The future release target remains TBD and its final promotion baseline must be confirmed separately.

Testing

654 offline Python tests passed on the integrated stack, covering the announcement provider and setup/maker routing, including the priority, unresolved-audience, repairable-copy, and committed-refresh regressions. Extension source and the bundled VSIX are unchanged by these corrections.

Local execution used Python 3.13.15. No local Python 3.11 or live-service acceptance is claimed.

Readiness

  • Paired hosted-widget and real-backend integration remain required before rollout; mock acceptance is not backend validation.
  • This is not release approval and performs no deployment. The future release branch is still TBD.
  • The prerelease integration branch remains baseline-only until reviewed chunks are merged through the normal review process.
  • Relevant offline tests pass.
  • Python 3.11 CI results.
  • Authorized live integration and end-to-end validation.

@rebova-microsoft rebova-microsoft left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

File-by-file walkthrough: make the feature available to makers

The earlier PRs supply the clients and MCP tools. This slice supplies the ways a maker reaches them: command routing, setup registration, instructions for the chat agent, and the Maker Profile button/package.

These comments explain the 19 changed text files. The VSIX is binary, so its explanation is attached at file level rather than to an invented source line. This is an explanatory review, not an approval or a resolution of existing feedback. Registration and documentation do not establish that the paired widget/backend is deployed.

Comment thread .github/workflows/ci.yml
run: >-
python -m pytest
tests/mcp/agentconfig_org_announcements
tests/setup/test_foundation_setup_router.py

Copy link
Copy Markdown
Contributor Author

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.

Comment thread setup/README.md
This installs everything the standard installer does, plus the **ESS Maker Profile** extension which provides:
- A chat-only layout with all developer surfaces hidden
- Big-button "Quick Actions" rail for common tasks (Connect, Customize landing page, Create, Scan, FlightCheck, Push)
- Big-button "Quick Actions" rail for common tasks (Connect, Customize landing page, Post an announcement, Create, Scan, FlightCheck, Push)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — make installer documentation match the button rail.

The Maker Profile's advertised Quick Actions now includes Post an announcement. This is a one-line documentation update so someone reading the setup guide knows the entry point exists.

It does not change the installer or install a second application; the actual button and packaged extension changes are elsewhere in this PR.

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

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The 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 ess-org-announcements. They also add the command to the kit's grounding sources and routing table.

The important boundary is explicit: missing deployed titleId values are resolved through the announcement provider's own read-only tools. Announcements does not start or call the landing-page MCP process, even though both providers share Python discovery code underneath. Landing-page configuration remains a separate flow.

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.

| 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 |

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — expose the command in the maker's menu.

This adds /org-announcements and a short description scoped to the selected deployed ESS agent. It makes the new flow discoverable alongside /landing-page without combining the two workflows.

The menu is an entry point only; the dedicated prompt and skill own the behavior after the maker chooses it.


# Org Announcements

Read `src/skills/org-announcements/SKILL.md` and follow it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — a thin slash-command entry point.

This new prompt gives /org-announcements an agent-mode entry point and delegates directly to src/skills/org-announcements/SKILL.md.

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.

assert "MCP: List Servers" in skill


def test_org_announcements_prompt_routes_to_setup_gated_skill() -> None:

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — keep the command, instructions, setup, and CI connected.

The added cases check that the prompt delegates to the skill, setup/server guidance is present, target discovery stays on the announcement provider, tenant/agent scope is disclosed, and chat is instructed to open once rather than duplicate the widget's writes.

They also check dependency-install guidance, registration across entry points, separate CI jobs, the approved branch filters, and the distinction between SDK tool errors and coded feature errors.

Several checks intentionally assert normalized instruction text. They guard the shipped agent guidance, not the model's behavior in a real conversation; deliberate wording changes need matching assertions. They do not replace the later local/E2E exercise.

3. **Pins a "Quick actions" button rail in the primary sidebar** — a custom Webview view with big icon-labeled buttons:
- **Connect** → `/setup`
- **Customize landing page** → guided landing-page configuration
- **Post an announcement** → guided organization-announcement authoring

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — document the new Quick Action in the extension guide.

This one-line addition describes Post an announcement as a guided authoring entry point alongside the other Maker Profile actions.

It changes the extension's feature list only. The click routing lives in extension.js, and the announcement form itself remains in Vorpal.

## 0.4.25 (POC)

- **Customize landing page** is available in Quick Actions. The setup-gated action opens a guided Copilot chat for branding, quick links, starter prompts, and insight cards.
- Added **Post an announcement** to Quick Actions. The setup-gated action opens

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — describe the contents of the updated 0.4.25 POC package.

These release notes add the setup-gated announcement Quick Action, clarify that scope/limits apply per tenant and agent, and tell the maker to reinstall the reviewed package to refresh the rail/tutorial.

The existing 0.4.25 history is retained; this PR replaces the package contents without increasing that version. The notes are not a claim that a backend rollout or feature deployment occurred.

const ACTIONS = [
{ id: 'setup', icon: '🔌', label: 'Setup', sub: 'Sign in to your environment', query: '/setup', requires: [] },
{ id: 'landingPage', icon: '🎨', label: 'Customize landing page', sub: 'Branding, links, prompts, cards', query: 'Customize my landing page', requires: ['setup'] },
{ id: 'announcements', icon: '📢', label: 'Post an announcement', sub: 'Reach audiences in the selected agent', query: 'Create an organization announcement', requires: ['setup'] },

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — a button that starts the same chat flow, not another editor implementation.

The new announcements action is gated on setup and sends Create an organization announcement into chat. The normal instruction routing then selects the announcement skill and opens the widget; the button does not call Save or publish directly.

The other additions give the built-in tutorial an Announcements navigation link and section. Existing actions stay in place. This file owns the Maker Profile entry point and tutorial, while the visual announcement form remains in Vorpal.

assert.deepStrictEqual(landingPage.requires, ['setup']);
});

test('announcements action sends the skill-triggering query', () => {

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — guard the ninth action's routing and scope wording.

The action-count expectation changes from eight to nine. New assertions check the announcement label, chat query, description, and setup prerequisite, plus tutorial wording that identifies per-agent scope rather than promising a tenant-wide announcement collection.

These are extension structure/routing checks. They do not send the chat request, exercise the Vorpal form, or publish an announcement.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Walkthrough — the installable Maker Profile package.

A VSIX is the packaged extension makers install, so this binary changes alongside the source that adds the announcement Quick Action and tutorial. The filename and manifest version remain 0.4.25; the archive grows from 30,666 to 31,073 bytes.

The packaged extension.js and package.json match the corresponding source files at this PR's commit. This is a package update, not a source-code hunk or a backend deployment, so the explanation is attached to the file rather than an invented line number. The changelog calls for reinstalling the reviewed package to pick up its changed contents.

@rebova-microsoft

Copy link
Copy Markdown
Contributor Author

Commit 5c7e56e makes the priority mapping explicit, keeps requested review-only drafts opening after unresolved audience lookup, and distinguishes repairable copy content from backend-valid actions. The branch includes the contracts/runtime follow-ups through merge commits. No test-harness configuration, private fixture data, or live bug-bash checkout changes are included.

Add the announcements skill, prompt, setup materialization, and Maker Profile entry point. Keep discovery on the announcements provider, require deployed-agent context, and document recovery and credential limits. Preserve the reviewed 0.4.25 package and existing upstream setup behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: eddd3818-bb74-42d3-bcf3-7e0670a57f27
Map Important and Informational explicitly, continue review-only creation after unresolved audience lookup, and distinguish repairable copies from backend-valid saved actions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 15e9d51c-c328-48e6-9948-8819f9e57f90
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