@codeam/shared 2.61.63 → 2.61.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -758,13 +758,43 @@ var INTEGRATION_REGISTRY = {
758
758
  name: "Microsoft Teams",
759
759
  icon: "microsoft_teams",
760
760
  category: "comms",
761
- // COMING SOON placeholder catalog entry (no OAuth provider / MCP yet). The
762
- // agent will post review pings + read threads AS THE USER over Microsoft Graph
763
- // once the provider lands. `enabled:false` renders it as a dimmed "coming
764
- // soon" tile inside the (live) comms category.
765
- enabled: false,
766
- auth: { kind: "oauth_redirect" },
767
- delivery: {}
761
+ // LIVEMicrosoft identity platform v2.0 OAuth (multi-tenant, Confidential).
762
+ // The agent reads chats/channels + posts AS THE USER over Microsoft Graph.
763
+ // MS_TEAMS_OAUTH_CLIENT_ID/SECRET/REDIRECT_URI are in Secret Manager (prod+dev);
764
+ // the backend TeamsOAuthProvider is config-gated (503 if env unset).
765
+ // ⚠️ Chat.* + ChannelMessage.Read.All (`.All`) require TENANT-ADMIN consent
766
+ // (MC1163922, Oct-2025) the connecting user must be an org admin, or their
767
+ // IT admin approves the app for the tenant. Not a self-serve funnel like Slack.
768
+ enabled: true,
769
+ auth: {
770
+ kind: "oauth_redirect",
771
+ // Delegated Microsoft Graph scopes. `offline_access` → rotating refresh
772
+ // (Teams access tokens are ~1h). ⚠️ Changing these requires the user to
773
+ // RE-LINK — the token carries only the scopes granted at link time.
774
+ scopes: [
775
+ "User.Read",
776
+ "User.ReadBasic.All",
777
+ "Team.ReadBasic.All",
778
+ "Channel.ReadBasic.All",
779
+ "ChannelMessage.Read.All",
780
+ "ChannelMessage.Send",
781
+ "Chat.Read",
782
+ "Chat.ReadWrite",
783
+ "offline_access"
784
+ ]
785
+ },
786
+ delivery: {
787
+ mcp: {
788
+ // @floriscornel/teams-mcp (Node): BYO Graph access token via AUTH_TOKEN
789
+ // (env only, never argv). Headless. Version PINNED; bump only after
790
+ // re-verifying headless. Tools: get/send channel + chat messages, replies.
791
+ command: "npx",
792
+ args: ["-y", "@floriscornel/teams-mcp@0.9.0"],
793
+ envMapping: {
794
+ AUTH_TOKEN: "accessToken"
795
+ }
796
+ }
797
+ }
768
798
  },
769
799
  google_chat: {
770
800
  id: "google_chat",
@@ -1373,6 +1403,34 @@ var INTEGRATION_REGISTRY = {
1373
1403
  }
1374
1404
  }
1375
1405
  }
1406
+ },
1407
+ confluence: {
1408
+ id: "confluence",
1409
+ name: "Confluence",
1410
+ icon: "confluence",
1411
+ category: "docs",
1412
+ // Confluence is served by the SAME Atlassian OAuth + the SAME `mcp-atlassian`
1413
+ // server as Jira (the `jira` entry already requests Confluence scopes). This
1414
+ // entry is a DISPLAY ALIAS so Confluence is explicit in the Knowledge tab: it
1415
+ // BORROWS jira's vaulted credential (`aliasOf: 'jira'`) and has no link flow of
1416
+ // its own — connecting Atlassian (the Jira/Atlassian card) lights it up, and
1417
+ // the backend resolves its token by delegating to `jira`.
1418
+ enabled: true,
1419
+ auth: { kind: "derived", aliasOf: "jira" },
1420
+ delivery: {
1421
+ mcp: {
1422
+ // Same mcp-atlassian server + BYO-token env as Jira — it exposes the
1423
+ // Confluence tools when the deploy selects Confluence without Jira. If
1424
+ // BOTH are selected the deploy manifest dedupes identical MCP specs.
1425
+ command: "uvx",
1426
+ args: ["mcp-atlassian==0.22.1"],
1427
+ envMapping: {
1428
+ ATLASSIAN_OAUTH_ACCESS_TOKEN: "accessToken",
1429
+ ATLASSIAN_OAUTH_CLOUD_ID: "cloudId"
1430
+ },
1431
+ staticEnv: { ATLASSIAN_OAUTH_ENABLE: "true" }
1432
+ }
1433
+ }
1376
1434
  }
1377
1435
  };
1378
1436
  function getEnabledIntegrations() {
@@ -1451,6 +1509,14 @@ var INTEGRATION_BRANDING = {
1451
1509
  brandColor: "#357DE8",
1452
1510
  logoSvg: '<svg viewBox="0 0 32 32" height="32" xmlns="http://www.w3.org/2000/svg" focusable="false" aria-hidden="true"><defs><linearGradient id="uid18" x1="14.8402" y1="15.8324" x2="8.6599" y2="26.5369" gradientUnits="userSpaceOnUse"><stop stop-color="#2684FF" stop-opacity="0.4" offset="0%"></stop><stop stop-color="#2684FF" offset="0.9228"></stop></linearGradient></defs><path fill="url(#uid18)" d="M11.6397 14.0398C11.2789 13.643 10.7378 13.679 10.4852 14.148L4.64091 25.8728C4.42446 26.3418 4.74912 26.8829 5.25419 26.8829H13.4074C13.6599 26.8829 13.9125 26.7386 14.0207 26.4861C15.7885 22.8424 14.7061 17.3227 11.6397 14.0398Z"></path><path fill="#357DE8" d="M15.9343 3.36124C12.6513 8.55622 12.8678 14.2923 15.0324 18.6215C17.1969 22.9506 18.8565 26.2336 18.9647 26.4861C19.0729 26.7386 19.3254 26.8829 19.578 26.8829H27.7312C28.2363 26.8829 28.597 26.3418 28.3445 25.8728C28.3445 25.8728 17.3774 3.93846 17.0887 3.39732C16.8723 2.89225 16.259 2.85618 15.9343 3.36124Z"></path></svg>'
1453
1511
  },
1512
+ confluence: {
1513
+ id: "confluence",
1514
+ name: "Confluence",
1515
+ vendor: "Atlassian",
1516
+ tagline: "Part of Atlassian \xB7 docs & wiki",
1517
+ brandColor: "#1868DB",
1518
+ logoSvg: '<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Confluence</title><path fill="#FFFFFF" d="M.87 18.257c-.248.382-.53.875-.763 1.245a.764.764 0 0 0 .255 1.04l4.965 3.054a.764.764 0 0 0 1.058-.26c.199-.332.454-.763.733-1.221 1.967-3.247 3.945-2.853 7.508-1.146l4.957 2.337a.764.764 0 0 0 1.028-.382l2.364-5.346a.764.764 0 0 0-.382-1c-1.048-.494-3.124-1.478-4.965-2.361C10.911 10.97 5.224 11.185.87 18.257zM23.131 5.743c.249-.405.531-.875.764-1.25a.764.764 0 0 0-.256-1.034L18.675.404a.764.764 0 0 0-1.058.26c-.195.335-.451.763-.734 1.225-1.966 3.246-3.945 2.85-7.508 1.146L4.437.694a.764.764 0 0 0-1.027.382L1.046 6.422a.764.764 0 0 0 .382 1c1.039.49 3.105 1.467 4.965 2.361 6.698 3.246 12.392 3.029 16.738-4.04z"/></svg>'
1519
+ },
1454
1520
  slack: {
1455
1521
  id: "slack",
1456
1522
  name: "Slack",