feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(teams): add native Teams bridge and message actions - #153

Merged
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan
Jul 28, 2026
Merged

feat(teams): add native Teams bridge and message actions#153
patroza merged 4 commits into
fork/discordfrom
port/chat-platform-adapter-plan

Conversation

@patroza

@patrozapatroza commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • port the remaining Teams work from the legacy private repository:
  • add a transport-neutral T3 start/continue path shared by Discord and Teams
  • add a Discord-free Teams SDK entrypoint with authenticated native message handling
  • deliver final T3 answers back to Teams and support stop, approve <request-id>, and deny <request-id>
  • implement the Start T3 investigation message action for triggering T3 from a selected message without installing the conversational bot in that conversation
  • support native, t3-only, and legacy discord Graph-poller delivery modes
  • add the Teams app manifest template, environment configuration, tests, and step-by-step deployment guide

Operating modes

ModeDiscord requiredBot participant requiredResult delivery
Native Teams replacementNoYesFinal answer in Teams
Teams message actionNoNoPrivate confirmation; follow in T3 Code
Graph polling / t3-onlyNoNoT3 Code + optional workflow webhook acknowledgement
Graph polling / discordYesNoDiscord compatibility bridge

Provenance

SourcePorted behavior
pvt#30Chat-platform adapter plan
pvt#1Teams Graph intake, history, images, trigger modes, channel mapping
pvt#6Message-action requirements, now implemented

Adapted locally

  • rebased onto the current fork/discord overlay and current link-store schema
  • replaced Discord-only orchestration with startOrContinueT3Turn
  • updated the Teams integration to the current @microsoft/teams.apps SDK
  • made DISCORD_BOT_TOKEN optional for the Teams-only entrypoint
  • retained all Teams features behind explicit TEAMS_* flags

Validation

  • vp test run apps/discord-bot/src/features/TeamsNativeApp.test.ts apps/discord-bot/src/config.test.ts apps/discord-bot/src/teams/config.test.ts apps/discord-bot/src/teams/presentation.test.ts apps/discord-bot/src/store/ThreadLinkStore.test.ts ✅ (33 tests)
  • vp run --filter @t3tools/discord-bot typecheck
  • vp check ✅ (existing warnings only)
  • ELECTRON_SKIP_BINARY_DOWNLOAD=1 vp run -r --cache --log labeled typecheck

Deployment

See docs/integrations/microsoft-teams-discord-bot.md for tenant registration, app packaging, channel mapping, Teams-only startup, message-action rollout, Graph permissions, and production checks.

@patroza
patrozaforce-pushed the fork/discord branch 2 times, most recently from e1fe9f9 to f15a095CompareJuly 28, 2026 14:17
@patroza

Copy link
Copy Markdown
OwnerAuthor

@omegent rebase and then also include other teams pr from legacy repo

patrozaand others added 2 commits July 28, 2026 16:38
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
@omegent-app
omegent-appBotforce-pushed the port/chat-platform-adapter-plan branch from d6a9294 to 4ba40a7CompareJuly 28, 2026 16:43
@omegent-app

Copy link
Copy Markdown

Rebase + legacy Teams PRs

Done on port/chat-platform-adapter-plan (force-pushed; now 2 commits cleanly atop current fork/discord):

  1. Rebased onto latest fork/discord (dropped rewritten overlay history noise).
  2. Included other Teams PRs from aaaomega/t3code-pvt:

Checks

  • Teams/config unit tests green
  • apps/discord-bot typecheck green

PR description updated with provenance.

@omegent-app

Copy link
Copy Markdown

Wiring Teams config, ThreadLinkStore, LinkedTurnRouter, and main.

grok-4.5 · effort high · 7m 40s

@patrozapatroza changed the title Plan Teams and Slack chat-platform supportfeat(teams): add native Teams bridge and message actionsJul 28, 2026
@patroza
patroza marked this pull request as ready for review July 28, 2026 21:02
@patroza
patroza merged this pull request into fork/discordJul 28, 2026
3 checks passed
patroza added a commit that referenced this pull request Jul 28, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 29, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
patroza added a commit that referenced this pull request Jul 30, 2026
* Add multi-platform chat adapter plan
* feat(discord-bot): port Teams intake module + message-action plan
Rebase the chat-platform adapter plan onto current fork/discord and fold in
the other Teams work from the legacy private repo:
- aaaomega/t3code-pvt#1 — Graph-based Teams intake (poll → Discord/T3)
- aaaomega/t3code-pvt#6 — Teams message-action planning doc
Wire optional TEAMS_* config, sourceKind/sourceThreadId link keys, shared
LinkedTurnRouter start/continue helper, and docs cross-links. Teams stays
off unless TEAMS_ENABLED=1.
* feat(teams): add native Discord-free T3 bridge
* feat(teams): surface pending T3 interactions
---------
Co-authored-by: t3 agent <patroza@users.noreply.github.com>
Co-authored-by: omegent-app[bot] <306514130+omegent-app[bot]@users.noreply.github.com>
Co-authored-by: T3 Code PR Stack <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for freeto 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.

1 participant

@patroza