Repository navigation
docs: Factory Microsoft Teams integration + audit existing integrations - #817
Conversation
Add factories/integrations/teams.mdx and wire it through Factory navigation and cross-links. Document verified setup, triggers, tools, and account linking from warp-server. Update factory-as-code for teams provider and microsoft-teams integration type. Correct GitHub default automation list against seed automations.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
This PR was generated with Warp. Comment |
Add workspace-availability prerequisite, use descriptive Teams admin center link text, align connect-your-factory GitHub defaults with all five seed automations, and add a Related pages section on the Teams page.
Rewrite the Factory Microsoft Teams page for shared-channel support from current warp-server behavior, split setup steps by Microsoft Teams vs Warp, document Add-to-team as the unblock for team selection, and align cross-links.
Point the first Warp onboarding step at the Factories web app with the standard VARS.FACTORY_WEB_APP link pattern.
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
|
@warp-staging-factory please resolve the merge conflicts |
Resolve factory-as-code trigger list conflict by keeping main's expanded Slack events (message_im, message_mpim) and this branch's teams provider.
|
Resolved by merging Conflict: Validation: internal links pass; feature-doc compression pass; PR body contract/integrity pass. |
|
Resolved by merging Conflict file: Resolution: kept main’s expanded Slack events ( Validation: internal links pass; feature-doc compression pass; PR body contract/integrity pass. |
There was a problem hiding this comment.
Overview
This PR adds Microsoft Teams integration documentation for Warp Factories and updates related factory integration, automation, factory-as-code, troubleshooting, and sidebar references. I reviewed the attached annotated diff for docs quality, internal links, security-sensitive claims, and implementation/spec alignment; the provided spec context says no approved or repository spec context was found.
Concerns
No blocking concerns found.
Verdict
Found: 0 critical, 0 important, 0 suggestions
Approve
Comment /warp-agent-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
There was a problem hiding this comment.
Review summary
The independent agent completed its review for this commit.
Findings
src/content/docs/factories/integrations/teams.mdx:61— [IMPORTANT] Shared-channel requirements use three undefined, possibly overlapping terms ("host team", "host-tenant user", "Microsoft tenant of the installed Warp app"), so readers can't tell whether guests or external collaborators qualify. Requested change: define "host" once in plain language, state who can and can't start work, use one term throughout, and explain or drop "bound host-tenant sender" on lines 64 and 66.src/content/docs/factories/integrations/teams.mdx:117— [IMPORTANT] The definition-file path is the only way to use a shared channel missing from the picker, but the page never says where to find the Microsoft Graph team UUID or the Bot Framework channel ID (19:...@thread.tacv2). Requested change: add one sentence per value naming where to copy it from, or link to the Microsoft docs that explain it.src/content/docs/factories/factory-as-code.mdx:219— [IMPORTANT] The new sentence saysautoRespondToThreadRepliesapplies toslackas well asmicrosoft-teams, and defaults on. The Slack page doesn't mention the field, and all cited sources are Teams-specific. Requested change: cite a Slack source in## Documentation risk, or limit the sentence tomicrosoft-teams.src/content/docs/factories/integrations/teams.mdx:69— [SUGGESTION] Facts are repeated: private channels and DMs unsupported (lines 55, 69, 75), shared-channel history limit (66, 75), auto-respond default (65, 81), Teams-enabled prerequisite (15, 124). Requested change: run the deletion-only "Cut again" pass and keep each fact in one section.src/content/docs/factories/integrations/teams.mdx:32— [SUGGESTION] Step 4 packs five actions across admin surfaces and has no expected outcome. Requested change: split it into upload and approve steps and add what success looks like, such as the app appearing under Built for your org.src/content/docs/factories/integrations/teams.mdx:37— [SUGGESTION] Steps 2, 3, and 6 bold instructions ("download the production app package", "select at least one channel") instead of UI elements, and "Microsoft Teams teams" reads awkwardly. Requested change: bold only real UI labels and reword the sentence.src/content/docs/factories/integrations/teams.mdx:53— [SUGGESTION] Four bolded phrases in one paragraph dilute emphasis, and "Users" doesn't match "authors" (lines 48-49) oruser_ids. Requested change: remove the bold and use one term, for example "Keywords and authors are optional."src/content/docs/factories/integrations/teams.mdx:133— [SUGGESTION] The privacy paragraph is adapted from the Slack page, and none of the cited sources is a privacy source, even though Teams differs on shared channels and account linking. Requested change: get engineering confirmation, or add aVERIFYmarker listed under## Unverified claims.src/content/docs/factories/integrations/teams.mdx:87— [NIT] Em dash in instructional text. Requested change: replace "review — see" with "review. See" (suggestion block provided inreview.json).
Verdict
Request changes
Define owning-team/organization shared-channel terms, document how to obtain Graph team and Bot Framework channel IDs, scope autoRespond guidance with schema-backed Slack note, and apply the review's setup/privacy/wording nits.
|
Addressed the Agent docs review on head Important
Suggestions/nit Validations: internal links pass; feature-doc compression pass; PR body contract/integrity pass. |
Fix GitHub closed/merged automation wording, clarify Teams binding and bot chat account commands, trim shared-channel repetition, unify workspace terminology, replace host-tenant phrasing, and drop the Slack autoRespond side-claim.
|
Addressed the second Agent docs review payload on head Important: GitHub default automation bullet now says merge completes linked work; an unmerged close is a no-op (dual-event name kept). Suggestions: Teams pending-bind next action; Validations: internal links pass; feature-doc compression pass; PR body contract/integrity pass. |
Co-Authored-By: Oz <oz-agent@warp.dev>
…t-teams-integration
There was a problem hiding this comment.
Review summary
The independent agent completed its review for this commit.
Findings
src/content/docs/factories/factory-as-code.mdx:219— [IMPORTANT]autoRespondToThreadRepliesis described only in prose, so readers can't tell where the key goes. The Linear and Jira keys in the same paragraph are nested, and the only Teams YAML shown is- type: microsoft-teams. The same gap is inteams.mdxunder "Definitions as code". Requested change: add a shortyamlexample showing the exact placement and accepted values, state that omitting the key means default-on, and confirm the key name and nesting againstfactory.schema.json.src/content/docs/factories/automations.mdx:28— [SUGGESTION] The edit changes an existing Slack claim from "Warp team" to "Warp workspace", butslack.mdx:114still says "Warp team" and the PR audit lists Slack as "No change". Requested change: keep the Slack wording and add the Teams clause separately, or updateslack.mdx:114to match and record the Slack change in the audit conclusions. Confirm "workspace" is the correct term.src/content/docs/factories/integrations/teams.mdx:76— [SUGGESTION] The rule that a mention is required to start, plain replies continue, and auto-respond is on by default is stated at lines 65-66, 76, and 112, and again infactory-as-code.mdx:219. The page is about 1,570 words. Requested change: keep the full explanation in one place, most likely the "Shared channel behavior" bullets, and trim the other sections to what is unique to them (for example attachments).src/content/docs/factories/integrations/teams.mdx:72— [SUGGESTION] "Shared-channel history stays limited to the originating thread" repeats the "History tools" bullet at line 67, which also describes agent internals the reader can't act on. Requested change: drop the line 67 bullet, or fold its actionable point (sender must be in the install's organization) into the paragraph at line 63.src/content/docs/factories/integrations/teams.mdx:32— [SUGGESTION] UI verbs don't match the style guide. "choose Upload new app" should be "click Upload new app". On line 35, "and Add it to each Microsoft Teams team" has no verb for the bold button and should read "and click Add to add it to each team the factory should use". Requested change: apply both edits, and check line 26 "choose Microsoft Teams" is an option in a list.src/content/docs/factories/integrations/teams.mdx:84— [NIT] "These are chat messages to the bot, not terminal commands" argues with a reader who isn't confused, andhelp/sign outis slashed shorthand. Requested change: apply the suggestion block that drops the sentence and writes the commands out in prose, and confirm whathelpreturns.src/content/docs/factories/integrations/teams.mdx:39— [NIT] "Select the Microsoft Teams teams" is hard to read. Requested change: apply the suggestion block ("Select the teams the factory should use, then select at least one channel in each.").src/content/docs/factories/integrations/teams.mdx:28— [NIT] "production" in "production app package" is internal wording the reader can't act on. Requested change: apply the suggestion block to say "app package".
Verdict
Request changes
…egration' into docs/factory-microsoft-teams-integration # Conflicts: # src/content/docs/factories/connect-your-factory.mdx # src/content/docs/factories/integrations/teams.mdx # src/content/docs/factories/troubleshooting.mdx
Add nested microsoft-teams autoRespondToThreadReplies YAML examples, align Slack terminology with slack.mdx, and tighten teams.mdx wording (UI verbs, bot chat commands, say-it-once cuts). Co-Authored-By: Oz <oz-agent@warp.dev>
|
Addressed Agent docs review on head
Validation: compression contract pass (~1464 words), internal links clean. |
There was a problem hiding this comment.
Review summary
The independent agent completed its review for this commit.
Findings
src/content/docs/factories/automations.mdx:28— [SUGGESTION] The sentence says Slack accounts link to a member of the factory's "Warp team" and Microsoft accounts link to a member of the factory's "Warp workspace"; the glossary defines workspace as an enterprise-account unit and sibling pages say "Warp team". Requested change: confirm the UI term and use the same one in both sentences, inteams.mdx(lines 15, 17, 38, 63), and inconnect-your-factory.mdx.src/content/docs/factories/integrations/teams.mdx:54— [SUGGESTION] Step 6 (line 31) says to select the connected teams (plural) but this line andfactory-as-code.mdxsay each Teams trigger takes exactly one team. Requested change: state what the seeded teams-app-mentions automation does when more than one team is selected.src/content/docs/factories/integrations/teams.mdx:45— [SUGGESTION] The shared-channel rules are repeated at lines 44-45, 60-67, 65, and 125 and inconnect-your-factory.mdxandtroubleshooting.mdx, and theautoRespondToThreadRepliessnippet at lines 84-91 duplicatesfactory-as-code.mdx. Requested change: keep each rule in one place, remove the line 45 and line 65 bullets, and link tofactory-as-code.mdxinstead of repeating the snippet.src/content/docs/factories/factory-as-code.mdx:432— [SUGGESTION] The paragraph says every filter key accepts anin/not_inobject whileteams.mdxline 113 says Teams filters are inclusion lists only, and it introduces "Graph team UUIDs and Bot Framework channel IDs" without saying what they are. Requested change: state the Teams inclusion-only limit here (or correct it), lead with the plain-language meaning of the values, and link toteams.mdx#configure-microsoft-teams-as-code.src/content/docs/factories/integrations/github.mdx:26— [SUGGESTION] "(which can move linked tracker issues to their completed state). An unmerged close is a no-op." is awkward and uses developer shorthand. Requested change: rewrite as "Completes linked work when a pull request with your factory's label merges, moving linked tracker issues to their completed state. Closing without merging does nothing."src/content/docs/factories/integrations/teams.mdx:26— [SUGGESTION] Every numbered setup step (lines 26-31) opens with a bold full-sentence lead-in, which dilutes emphasis; AGENTS.md reserves bold for UI elements and list-item lead terms. Requested change: remove the bold lead-ins and keep bold only on UI labels such as Integrations, Connect, Add, and Enable.src/content/docs/factories/integrations/teams.mdx:28— [NIT] "opens the Teams admin center, goes to ... and clicks Upload new app, uploads the ZIP, and approves it" has a broken series. Requested change: split into two sentences, for example "A Microsoft Teams admin opens the Teams admin center and goes to Teams apps > Manage apps. Click Upload new app, upload the ZIP, and approve it."
Verdict
Approve with nits
There was a problem hiding this comment.
Review summary
The independent agent completed its review for this commit.
Findings
src/content/docs/factories/integrations/teams.mdx:114— [SUGGESTION] 'These filters are inclusion lists only' conflicts with the general statement infactory-as-code.mdx:432that every filter key acceptsin/not_in. Requested change: state the Teams inclusion-only exception infactory-as-code.mdxnext to the Teams filter sentence, or reconcile the two statements.src/content/docs/factories/integrations/teams.mdx:116— [SUGGESTION] Shared-channel IDs are the only route to configuring shared channels, but the page points to unnamed 'list-teams and list-channels API' fields with no endpoint or link. Requested change: name the endpoints (with a link to the API reference) or give a concrete step for finding the channel ID.src/content/docs/factories/connect-your-factory.mdx:68— [SUGGESTION] 'the same Microsoft 365 organization as the Warp app install' is unclear ('install' as a noun, and 'Warp app' could mean the Warp terminal app). Requested change: rephrase as 'the Microsoft 365 organization where the Warp app is installed in Teams', and apply the same wording to the Teams row introubleshooting.mdx.src/content/docs/factories/automations.mdx:28— [SUGGESTION] Slack is described as linking to the factory's 'Warp team' and Teams to the factory's 'Warp workspace' in the same paragraph;slack.mdxalso says 'Warp team'. Requested change: use one term consistently across the Slack and Teams descriptions.src/content/docs/factories/automations.mdx:37— [SUGGESTION] The filter table lists 'authors' for Teams, butteams.mdx:54says author filtering is available only in definition files. Requested change: qualify the table entry, for example 'authors (definition files only)', or alignteams.mdx.src/content/docs/factories/integrations/teams.mdx:131— [SUGGESTION] 'Disconnect Microsoft Teams' is a lifecycle procedure nested as an H3 under Troubleshooting, which breaks the broad-to-specific section order. Requested change: move it into its own H2 before Troubleshooting.src/content/docs/factories/integrations/teams.mdx:83— [NIT] 'Prefer the UI setup above, then edit the seeded automation' repeats the guidance at line 52. Requested change: delete the repeated sentence and keep one statement.src/content/docs/factories/integrations/teams.mdx:28— [NIT] Step 3 is a malformed run-on: 'goes to … and clicks Upload new app, uploads the ZIP, and approves it.' Requested change: rewrite as 'goes to Teams apps > Manage apps, clicks Upload new app, uploads the ZIP, and approves it.'src/content/docs/factories/integrations/github.mdx:26— [NIT] 'An unmerged close is a no-op' is jargon. Requested change: write 'Closing without merging does nothing.'
Verdict
Approve with nits
There was a problem hiding this comment.
Review summary
The independent agent completed its review for this commit.
Findings
src/content/docs/factories/integrations/teams.mdx:68— [SUGGESTION] The page is about 1,550 words and restates shared-channel rules (caution, 'Start and continue work', 'Use shared channels', as-code section, troubleshooting), thread-reply behavior (lines 44 and 65), and the double-run caveat (lines 56 and 128). Requested change: run a deletion-only 'Cut again' pass, state each rule once, and link to it from the other places.src/content/docs/factories/integrations/teams.mdx:26— [SUGGESTION] Setup steps are third person ('A workspace admin opens...') with bold lead-in sentences. Requested change: write steps in imperative second person (for example 'As a Warp workspace admin, open the top-level Integrations page...') and reserve bold for UI elements.src/content/docs/factories/integrations/teams.mdx:28— [NIT] The verb chain 'opens ..., goes to ..., and clicks Upload new app, uploads the ZIP, and approves it' is broken. Requested change: apply the suggested rewrite 'goes to Teams apps > Manage apps, clicks Upload new app, uploads the ZIP, and approves it'.src/content/docs/factories/integrations/teams.mdx:48— [NIT] 'Microsoft organization' is inconsistent with 'Microsoft 365 organization' used elsewhere. Requested change: use 'Microsoft 365 organization' in thesign outsentence.src/content/docs/factories/integrations/teams.mdx:116— [SUGGESTION] 'copy its channel conversation ID from the Teams link or Microsoft Graph' doesn't say where the ID appears or which Graph call returns it, yet it is the only way to use a shared channel. Requested change: add concrete steps (menu item, URL segment or field holding the19:...@thread.tacv2value) or link to Microsoft documentation, after confirming against the product.src/content/docs/factories/connect-your-factory.mdx:68— [SUGGESTION] The default Teams automation is described as covering 'the channels you configured, including shared channels', but teams.mdx says the picker lists standard channels only and shared channels need a channel ID in the definition. Requested change: shorten to app mentions in the selected channels and link to the shared-channel section for the extra step and same-organization rule.src/content/docs/factories/automations.mdx:28— [SUGGESTION] Slack requires a link to 'an active member of the factory's Warp team' while Microsoft Teams requires 'the factory's Warp workspace' in adjacent sentences. Requested change: use one term for both after confirming the correct one, and merge the two sentences.src/content/docs/factories/integrations/github.mdx:26— [NIT] 'Completes linked work when a pull request with your factory's label merges (which can move linked tracker issues to their completed state). An unmerged close is a no-op.' is clumsy jargon. Requested change: use 'Completes linked work when a pull request with your factory's label merges, moving linked tracker issues to their completed state. Closing without merging does nothing.'
Verdict
Approve with nits



What this feature does
Microsoft Teams can connect to a Warp factory so mentions in standard and shared channels start factory work and results post back in the same thread. Setup covers admin app upload, adding Warp to a Teams team, channel selection, automations, account linking, and shared-channel organization rules. Private channels and DMs stay unsupported.
Summary
Factory Microsoft Teams integration docs under Factories (not Terminal), plus an audit of existing Slack/Linear/GitHub/GitLab factory integration pages. This revision documents shared-channel support from current warp-server behavior and clarifies Microsoft Teams vs Warp setup surfaces.
Changes
src/content/docs/factories/integrations/teams.mdx— First-time setup organized by role and happy path, explicit workspace binding and connection test, task-oriented automation/shared-channel/capability sections, advanced factory-as-code details, and likely-issue-first troubleshootingsrc/sidebar.ts— Microsoft Teams under Factories > Integrationsconnect-your-factory.mdx,automations.mdx,troubleshooting.mdx— Teams cross-links and shared-channel wordingfactory-as-code.mdx—microsoft-teamstype,teamstriggers/filtersintegrations/github.mdx— default automation list aligned with seed automationsContent design plan
Audience and JTBD: A factory admin connecting Microsoft Teams so the team can mention Warp in configured standard or shared channels and get work and replies in-thread.
Problem: Factory Teams setup spans Microsoft Teams admin upload, adding the app to a team, and Warp onboarding; shared-channel rules differ from standard channels and were undocumented.
Goals:
Purpose and value: Sibling Slack/Linear/GitHub/GitLab factory pages already existed; Teams is the chat intake path for Microsoft-first teams.
Content type: Feature documentation (combined), matching other factory integration pages.
Skill and template:
draft_feature_doc/.agents/templates/feature-doc.md(shaped likefactories/integrations/slack.mdx)High-impact scenarios:
Audit conclusions
Unverified claims
None outstanding in shipped prose. Shared-channel eligibility is stated as same Microsoft 365 organization as the Warp app install plus a linked Warp account. Team/channel IDs are obtained from the seeded automation, factory Microsoft Teams list APIs, or Microsoft Teams/Graph for shared channels not in the picker.
Documentation risk
Risk: engineering-review-required
Rationale: Adds a new Factory Microsoft Teams integration page and changes integration setup, trigger, filter, shared-channel behavior, and default-automation claims.
Source files consulted: warp-server@c37956d1846fbfb01e24b1610bb5c953108840c3 (teams/graph.go, logic/ai/ambient_agents/teams_webhook.go, logic/ai/ambient_agents/teams_shared_channel_test.go, logic/ai/ambient_agents/managed_mcp/warp_teams_mcp/shared_history.go, logic/ai/ambient_agents/managed_mcp/warp_teams_mcp/catalog.go, logic/factorysource/defaults/skills/microsoft-teams/SKILL.md, logic/factoryfile/schema/v1alpha1/factory.schema.json, client/packages/factory/src/integrations/teams/TeamsAppUploadInstructionsModal.tsx, client/packages/factory/src/integrations/teams/TeamsConnectRow.tsx, logic/factory_microsoft_teams_integrations.go, public_api/openapi.yaml microsoft-teams teams/channels, model/types/triggers/triggers.go, logic/factorysource/defaults/automations.go)
Engineering review status: pending
Docs override: none
Validation
git diff --check— passtrunk: command not found)autoRespondToThreadRepliesnesting