You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cd4bd9f
Browse filesBrowse the repository at this point in the historyBrowse files
authored
docs: Factory Microsoft Teams integration + audit existing integrations (#817)
* docs: add Factory Microsoft Teams integration and audit related pages
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.
* docs: address Teams integration review findings
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.
* docs: cover Teams shared channels and clarify setup surfaces
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.
* docs: restore Factories web app orientation on Teams setup step
Point the first Warp onboarding step at the Factories web app with the
standard VARS.FACTORY_WEB_APP link pattern.
* docs: address Agent docs review on Teams shared-channel page
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.
* docs: cut Teams page to feature-doc word budget
* docs: address second Agent docs review on factory Teams PR
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.
* docs: clarify Microsoft Teams factory setup
Co-Authored-By: Oz <oz-agent@warp.dev>
* docs: address Agent review on Teams factory integration
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>
* docs: clarify Teams account and history rules
---------
Co-authored-by: warp-agent-staging[bot] <240773466+warp-agent-staging[bot]@users.noreply.github.com>
Co-authored-by: Oz <oz-agent@warp.dev>
Co-authored-by: Hong Yi Chen <hongyi@warp.dev>
Copy file name to clipboardExpand all lines: src/content/docs/factories/automations.mdx
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,9 +23,9 @@ One event can match more than one automation, and each match starts its own run.
23
23
24
24
## Filters don't control access
25
25
26
-
Filters decide when work starts, not what a running agent can reach. Access comes from what you authorize on each provider: the GitHub App installation, the GitLab bot's project membership, the Slack app's authorization, the Linear OAuth scope, or the Jira app installation. Tightening a filter never shrinks that access, and removing one never widens it. To change what an integration can reach, change what you authorize for that provider.
26
+
Filters decide when work starts, not what a running agent can reach. Access comes from what you authorize on each provider: the GitHub App installation, the GitLab bot's project membership, the Slack app's authorization, the Microsoft Teams installation, the Linear OAuth scope, or the Jira app installation. Tightening a filter never shrinks that access, and removing one never widens it. To change what an integration can reach, change what you authorize for that provider.
27
27
28
-
Filters are still your main control over who starts runs. On GitHub and GitLab, the event author doesn't need to be a Warp team member, so use author, member, and branch filters to decide whose activity starts work. Slack mentions and direct messages additionally require a Slack account linked to a member of the factory's Warp team. A custom webhook authenticates each delivery with the webhook's own secret or the sender's signature, so anyone holding that credential can start work; its filters only decide which deliveries do.
28
+
Filters are still your main control over who starts runs. On GitHub and GitLab, the event author doesn't need to be a Warp team member, so use author, member, and branch filters to decide whose activity starts work. Slack mentions and direct messages additionally require a Slack account linked to an active member of the factory's Warp team. Microsoft Teams mentions require a Microsoft account linked to an active member of the factory's Warp workspace. A custom webhook authenticates each delivery with the webhook's own secret or the sender's signature, so anyone holding that credential can start work; its filters only decide which deliveries do.
29
29
30
30
## What each source can filter on
31
31
@@ -34,6 +34,7 @@ Every source filters on where the event happened: a repository, project, convers
34
34
| Source | Filters |
35
35
| --- | --- |
36
36
|[Slack](/factories/integrations/slack/)| Conversations, authors or members, keywords, emoji, and reacted-message authors |
37
+
|[Microsoft Teams](/factories/integrations/teams/)| Team, channels (standard picker; shared by channel ID), authors, and keywords |
37
38
|[GitHub](/factories/integrations/github/)| Repository, branches, base branches, paths, labels, authors, assignees, mentioned users or teams, reviewers, review states, workflows, and conclusions |
38
39
|[GitLab](/factories/integrations/gitlab/)| Project, actions, and base branch |
39
40
|[Linear](/factories/integrations/linear/)| Teams, labels, project, workflow state, assignee, mentioned user, and, for comment events, a specific issue |
@@ -142,7 +143,7 @@ For exact matching semantics, limits, and validation rules, see [payload filter
142
143
## Related pages
143
144
144
145
* [**Connect your factory**](/factories/connect-your-factory/) - Choose the sources that route work into the factory.
145
-
* [Slack](/factories/integrations/slack/), [GitHub](/factories/integrations/github/), [GitLab](/factories/integrations/gitlab/), [Linear](/factories/integrations/linear/), and [Jira](/factories/integrations/jira/) integration guides - Per-source setup, events, and filter details.
146
+
* [Slack](/factories/integrations/slack/), [Microsoft Teams](/factories/integrations/teams/), [GitHub](/factories/integrations/github/), [GitLab](/factories/integrations/gitlab/), [Linear](/factories/integrations/linear/), and [Jira](/factories/integrations/jira/) integration guides - Per-source setup, events, and filter details.
146
147
* [**Custom webhooks**](/factories/webhooks/) - Start automations from any system that can POST JSON, with the setup flow and authentication modes.
147
148
* [**Definitions as code**](/factories/factory-as-code/) - Manage automations, triggers, and filters as version-controlled files.
148
149
* [**warp-factory-examples**](https://github.com/warpdotdev/warp-factory-examples) - Complete factory definitions with example automations and filters.
Copy file name to clipboardExpand all lines: src/content/docs/factories/connect-your-factory.mdx
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
1
---
2
2
title: Connect your factory
3
3
description: >-
4
-
Route work into your factory from Slack, GitHub, GitLab, Linear, Jira, local
5
-
agents, direct runs, and schedules.
4
+
Route work into your factory from Slack, Microsoft Teams, GitHub, GitLab,
5
+
Linear, Jira, local agents, direct runs, and schedules.
6
6
sidebar:
7
7
label: "Connect your factory"
8
8
---
@@ -22,6 +22,7 @@ Once a source is connected, here's the concrete action that hands it work — ea
22
22
| Source | Best for | Start work by | Continues in |
23
23
| --- | --- | --- | --- |
24
24
|[Slack](/factories/integrations/slack/)| Chat and support requests |[Mentioning the app in a channel, thread, or DM](/factories/integrations/slack/#start-and-continue-work-from-slack)| The Slack thread or DM |
25
+
|[Microsoft Teams](/factories/integrations/teams/)| Chat in standard and shared channels |[Mentioning the Warp app in a configured channel](/factories/integrations/teams/#start-and-continue-work)| The Teams thread |
25
26
|[GitHub](/factories/integrations/github/)| Issues, pull requests, reviews, and CI |[Adding the factory's label and mentioning **@warp**](/factories/integrations/github/#mention-the-factory)| The issue, pull request, or review thread |
26
27
|[GitLab](/factories/integrations/gitlab/)| Merge request activity and bot mentions |[Mentioning the factory's bot in a merge request comment](/factories/integrations/gitlab/#mention-the-factory)| The merge request thread |
27
28
|[Linear](/factories/integrations/linear/)| Planned issues |[Assigning the issue to the factory, or mentioning the Warp app in a comment](/factories/integrations/linear/#route-agent-sessions)| The Linear issue and its agent session |
@@ -59,11 +60,12 @@ Every request lands with the foreman agent, which turns it into a work item and
59
60
60
61
When you create a factory through the setup wizard, Warp adds default automations for each tool you connect, so common requests work immediately:
61
62
62
-
***GitHub** - Starts work when the factoryis mentioned or assigned, and follows up when pull requests close or merge, completing a linked tracker issue when it can. See the [GitHub integration guide](/factories/integrations/github/).
63
+
***GitHub** - Starts work from mentions and assignments, when the factory's label is applied to an issue or pull request, and when a review is submitted on a labeled pull request. It also follows up when labeled pull requests close or merge, completing a linked tracker issue when it can. See the [GitHub integration guide](/factories/integrations/github/).
63
64
***GitLab** - Starts work when someone mentions the factory's bot in a merge request comment. See the [GitLab integration guide](/factories/integrations/gitlab/).
64
65
***Jira** - Starts work when someone assigns or mentions Warp on a work item in one of the Jira projects you selected. See the [Jira integration guide](/factories/integrations/jira/).
65
66
***Linear** - Starts work when a new agent session arrives from one of the Linear teams you selected. See the [Linear integration guide](/factories/integrations/linear/).
66
67
***Slack** - Starts work from mentions and messages, as described in the [Slack integration guide](/factories/integrations/slack/).
68
+
***Microsoft Teams** - Starts work from app mentions in the channels you configured, including shared channels when the sender is in the same Microsoft 365 organization as the Warp app install and has linked that account to Warp. See the [Microsoft Teams integration guide](/factories/integrations/teams/).
67
69
68
70
These defaults are starting points. Review each automation's filters, agent, and run settings, and adjust them to match your workflow. For automation files you can adapt, such as CI failure triage, a scheduled dependency audit, and Slack reaction intake, see [`06-common-automations`](https://github.com/warpdotdev/warp-factory-examples/tree/main/examples/06-common-automations) in the [warp-factory-examples](https://github.com/warpdotdev/warp-factory-examples) repository.
Copy file name to clipboardExpand all lines: src/content/docs/factories/factory-as-code.mdx
+15-3Lines changed: 15 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -204,11 +204,12 @@ cloudProviders:
204
204
205
205
### `integrations`
206
206
207
-
Optional. The integration providers attached to the factory. `type` accepts `slack`, `linear`, or `jira`. Use `linear.teamIds` or `jira.projectKeys` to limit the teams or projects available to the factory. Declare at most one issue tracker: `linear`and `jira` are mutually exclusive, and omitting a tracker is also valid. GitHub is not declared here; repository access comes from `repositories` and the connected GitHub App.
207
+
Optional. The integration providers attached to the factory. `type` accepts `slack`, `microsoft-teams`, `linear`, or `jira`. Use `linear.teamIds` or `jira.projectKeys` to limit the teams or projects available to the factory. Declare at most one issue tracker: `linear`and `jira` are mutually exclusive, and omitting a tracker is also valid. GitHub is not declared here; repository access comes from `repositories` and the connected GitHub App.
208
208
209
209
```yaml
210
210
integrations:
211
211
- type: slack
212
+
- type: microsoft-teams
212
213
- type: linear
213
214
linear:
214
215
teamIds:
@@ -226,6 +227,15 @@ integrations:
226
227
- OPS
227
228
```
228
229
230
+
For `microsoft-teams`, optional `autoRespondToThreadReplies` nests under the `microsoft-teams` key. Set it to `false` to require another mention for plain replies in an existing factory thread. Omit the key (or set `true`) to keep the default-on behavior:
231
+
232
+
```yaml
233
+
integrations:
234
+
- type: microsoft-teams
235
+
microsoft-teams:
236
+
autoRespondToThreadReplies: false
237
+
```
238
+
229
239
The legacy `providers` key is accepted when reading older definitions. It uses the same `gcp` and `aws` maps and nested YAML keys as `cloudProviders`. Use `cloudProviders`; when Warp rewrites the definition, it emits `cloudProviders`.
230
240
231
241
### `agentDefaults`
@@ -410,15 +420,16 @@ The providers and their events:
Slack, Linear, and Jira triggers require the matching [integration](/platform/integrations/) to be connected. GitHub triggers work through the factory's `repositories`, and GitLab triggers through the group connected to your workspace — see the [GitLab integration](/factories/integrations/gitlab/). `webhook` triggers listen to [custom webhooks](/factories/webhooks/) declared under [`webhooks/`](#webhooksnameyaml).
428
+
Slack, Microsoft Teams, Linear, and Jira triggers require the matching factory integration to be connected — see the [Slack](/factories/integrations/slack/), [Microsoft Teams](/factories/integrations/teams/), [Linear](/factories/integrations/linear/), and [Jira](/factories/integrations/jira/) guides. GitHub triggers work through the factory's `repositories`, and GitLab triggers through the group connected to your workspace — see the [GitLab integration](/factories/integrations/gitlab/). `webhook` triggers listen to [custom webhooks](/factories/webhooks/) declared under [`webhooks/`](#webhooksnameyaml).
418
429
419
430
### `triggers[].filter`
420
431
421
-
Optional. Narrows which events start runs. The keys a filter accepts depend on the provider and event: for example `repos`, `labels`, and `authors` for GitHub events, or `channels`, `users`, and `keywords` for Slack messages. Filter keys combine with AND, an omitted key matches everything, and each key takes a list that matches any of its values (or an `in`/`not_in` object to include or exclude). Slack and Linear filters take names (channels, users, teams, projects, states), and Warp resolves them to IDs when it applies the change.
432
+
Optional. Narrows which events start runs. The keys a filter accepts depend on the provider and event: for example `repos`, `labels`, and `authors` for GitHub events, or `channels`, `users`, and `keywords` for Slack messages. Filter keys combine with AND, an omitted key matches everything, and each key takes a list that matches any of its values (or an `in`/`not_in` object to include or exclude). Slack and Linear filters take names (channels, users, teams, projects, states), and Warp resolves them to IDs when it applies the change. Microsoft Teams filters take Graph team UUIDs and Bot Framework channel IDs, and each Teams trigger must include exactly one team and at least one channel.
422
433
423
434
A `webhook` trigger with the `received` event requires `webhook_ids` in its filter, a list of webhook UIDs (`in` only; the file name isn't accepted), and takes an optional `payload` pattern that mirrors the delivery's JSON body. See [payload filters for webhook triggers](/factories/automations/#payload-filters-for-webhook-triggers) for the pattern grammar.
424
435
@@ -431,6 +442,7 @@ The published trigger catalog currently uses these filter keys across its provid
Copy file name to clipboardExpand all lines: src/content/docs/factories/integrations/github.mdx
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,16 +20,18 @@ When you connect a factory to GitHub, repository activity starts work in your fa
20
20
1. In the <ahref={VARS.FACTORY_WEB_APP_URL}>{VARS.FACTORY_WEB_APP}</a>, click **+** next to **Factories** to open the setup wizard, then choose **I want to use repos from GitHub** under **Connect your code host**.
21
21
2. Under **Select your repos**, choose the repositories to provide code and context for the factory.
22
22
23
-
That's all the setup GitHub needs. A new factory arrives with two automations already switched on, so it responds to GitHub activity right away:
23
+
That's all the setup GitHub needs. A new factory arrives with default automations already switched on, so it responds to GitHub activity right away:
24
24
25
-
***Mentions and assignments** - Start work by mentioning **@warp**. See [Mention the factory](#mention-the-factory) below.
26
-
***Pull request merges** - Close out work by merging a pull request with your factory's label. Any work items linked to the pull request move to their tracker's completed state. Closing without merging does nothing.
25
+
***Mentions and assignments** - Start work by mentioning **@warp** or assigning the factory. See [Mention the factory](#mention-the-factory) below.
26
+
***Pull request closed or merged** - 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.
27
+
***Issue labeled** and **Pull request labeled** - Start work when the factory's label is applied to an issue or pull request.
28
+
***Pull request review submitted** - Start work when a review is submitted on a pull request that carries the factory's label.
27
29
28
30
To confirm the connection works, mention **@warp** on a test issue and check that a work item starts in the factory's [dashboard](/factories/factory-dashboard/).
29
31
30
32
## Add a custom automation
31
33
32
-
The defaults cover mentions, assignments, and pull request completion. To start work from any other GitHub activity, such as a failed CI run or a review request, add an automation with a GitHub trigger for that event, then narrow it with the filters below. To learn how to edit those filters, see [Automations](/factories/automations/#edit-filters-on-an-automation).
34
+
The defaults cover mentions, assignments, label routing, review submissions, and pull request completion. To start work from any other GitHub activity, such as a failed CI run or a review request, add an automation with a GitHub trigger for that event, then narrow it with the filters below. To learn how to edit those filters, see [Automations](/factories/automations/#edit-filters-on-an-automation).
33
35
34
36
The CI failure triage automation in [`06-common-automations`](https://github.com/warpdotdev/warp-factory-examples/tree/main/examples/06-common-automations) in the [warp-factory-examples](https://github.com/warpdotdev/warp-factory-examples) repository starts work when a workflow run fails on the default branch:
0 commit comments