@openclaw/msteams 2026.5.27 → 2026.5.28-beta.2
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/api.js +2 -2
- package/dist/{channel-c7nnGfMx.js → channel-C_AMaSpi.js} +5 -5
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.runtime-Boha-kk1.js → channel.runtime-BJJ1R1iY.js} +3 -3
- package/dist/{config-schema-CuksCQKC.js → config-schema-BL4qQZiA.js} +8 -0
- package/dist/{graph-users-uPAE6-KQ.js → errors-B4snzfP5.js} +378 -624
- package/dist/{oauth-C5ObhLG6.js → oauth-BrKjrCNK.js} +1 -1
- package/dist/{oauth.token-BNbWziwM.js → oauth.token-5ygi8ycy.js} +8 -6
- package/dist/{probe-istgFnuw.js → probe-DRwI-ZqW.js} +221 -120
- package/dist/setup-plugin-api.js +3 -3
- package/dist/{setup-surface-evwYex71.js → setup-surface-C-uCiIKh.js} +2 -2
- package/dist/{src-ui0zJEZI.js → src-Cc3f8Zi2.js} +786 -994
- package/node_modules/@microsoft/teams.api/dist/activities/activity.d.mts +0 -1
- package/node_modules/@microsoft/teams.api/dist/activities/activity.d.ts +0 -1
- package/node_modules/@microsoft/teams.api/dist/activities/activity.js +0 -4
- package/node_modules/@microsoft/teams.api/dist/activities/activity.js.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/activities/activity.mjs +0 -4
- package/node_modules/@microsoft/teams.api/dist/activities/activity.mjs.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/activities/index.d.mts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/index.d.ts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/index.d.mts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/index.d.ts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/index.js +7 -0
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/index.mjs +1 -0
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/message-extension/fetch-task.d.mts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/message-extension/fetch-task.d.ts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/message-extension/index.d.mts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/message-extension/index.d.ts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/message-extension/submit-action.d.mts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/message-extension/submit-action.d.ts +3 -2
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/suggested-action-submit.d.mts +48 -0
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/suggested-action-submit.d.ts +48 -0
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/suggested-action-submit.js +4 -0
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/suggested-action-submit.js.map +1 -0
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/suggested-action-submit.mjs +3 -0
- package/node_modules/@microsoft/teams.api/dist/activities/invoke/suggested-action-submit.mjs.map +1 -0
- package/node_modules/@microsoft/teams.api/dist/activities/message/index.d.mts +3 -3
- package/node_modules/@microsoft/teams.api/dist/activities/message/index.d.ts +3 -3
- package/node_modules/@microsoft/teams.api/dist/activities/message/message.d.mts +2 -2
- package/node_modules/@microsoft/teams.api/dist/activities/message/message.d.ts +2 -2
- package/node_modules/@microsoft/teams.api/dist/activities/message/message.js +60 -2
- package/node_modules/@microsoft/teams.api/dist/activities/message/message.js.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/activities/message/message.mjs +60 -2
- package/node_modules/@microsoft/teams.api/dist/activities/message/message.mjs.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/activities/utils/index.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/activities/utils/index.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/activities/utils/strip-mentions-text.d.mts +2 -2
- package/node_modules/@microsoft/teams.api/dist/activities/utils/strip-mentions-text.d.ts +2 -2
- package/node_modules/@microsoft/teams.api/dist/activities/utils/to-activity-params.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/activities/utils/to-activity-params.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/{activity-Be6r1tJJ.d.ts → activity-DzKP6phL.d.ts} +3 -2
- package/node_modules/@microsoft/teams.api/dist/{activity-CJery-zL.d.mts → activity-KJJs2q-W.d.mts} +3 -2
- package/node_modules/@microsoft/teams.api/dist/auth/json-web-token.d.mts +14 -0
- package/node_modules/@microsoft/teams.api/dist/auth/json-web-token.d.ts +14 -0
- package/node_modules/@microsoft/teams.api/dist/auth/json-web-token.js +14 -0
- package/node_modules/@microsoft/teams.api/dist/auth/json-web-token.js.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/auth/json-web-token.mjs +14 -0
- package/node_modules/@microsoft/teams.api/dist/auth/json-web-token.mjs.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/clients/conversation/activity.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/clients/conversation/activity.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/clients/conversation/index.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/clients/conversation/index.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/clients/index.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/clients/index.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/index.d.mts +3 -2
- package/node_modules/@microsoft/teams.api/dist/index.d.ts +3 -2
- package/node_modules/@microsoft/teams.api/dist/{message-BwI6kmCe.d.ts → message-D0n_F-cL.d.ts} +37 -1
- package/node_modules/@microsoft/teams.api/dist/{message-Bd75JRjv.d.mts → message-DTEe5v6q.d.mts} +37 -1
- package/node_modules/@microsoft/teams.api/dist/models/activity-like.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/activity-like.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/card/card-action.d.mts +8 -1
- package/node_modules/@microsoft/teams.api/dist/models/card/card-action.d.ts +8 -1
- package/node_modules/@microsoft/teams.api/dist/models/index.d.mts +3 -2
- package/node_modules/@microsoft/teams.api/dist/models/index.d.ts +3 -2
- package/node_modules/@microsoft/teams.api/dist/models/invoke-response.d.mts +5 -3
- package/node_modules/@microsoft/teams.api/dist/models/invoke-response.d.ts +5 -3
- package/node_modules/@microsoft/teams.api/dist/models/invoke-response.js.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/models/invoke-response.mjs.map +1 -1
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/index.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/index.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-action-response.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-action-response.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-action.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-action.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-response.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-response.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-result.d.mts +4 -3
- package/node_modules/@microsoft/teams.api/dist/models/messaging-extension/messaging-extension-result.d.ts +4 -3
- package/node_modules/@microsoft/teams.api/package.json +5 -5
- package/node_modules/@microsoft/teams.apps/dist/contexts/activity.d.ts +27 -2
- package/node_modules/@microsoft/teams.apps/dist/contexts/activity.js +119 -58
- package/node_modules/@microsoft/teams.apps/dist/contexts/activity.test.js +235 -33
- package/node_modules/@microsoft/teams.apps/dist/http/express-adapter.d.ts +8 -1
- package/node_modules/@microsoft/teams.apps/dist/http/express-adapter.js +10 -4
- package/node_modules/@microsoft/teams.apps/dist/http/http-server.js +14 -1
- package/node_modules/@microsoft/teams.apps/dist/http/http-stream.d.ts +77 -46
- package/node_modules/@microsoft/teams.apps/dist/http/http-stream.js +31 -16
- package/node_modules/@microsoft/teams.apps/dist/routes/invoke/index.d.ts +1 -0
- package/node_modules/@microsoft/teams.apps/dist/routes/invoke/index.js +2 -1
- package/node_modules/@microsoft/teams.apps/dist/types/app-routing.d.ts +2 -2
- package/node_modules/@microsoft/teams.apps/dist/types/streamer.d.ts +9 -0
- package/node_modules/@microsoft/teams.apps/package.json +5 -5
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/collab-stage.js.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/collab-stage.mjs.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/im-back.js.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/im-back.mjs.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/invoke.js.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/invoke.mjs.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/message-back.d.mts +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/message-back.d.ts +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/message-back.js.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/message-back.mjs.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/sign-in.js.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/sign-in.mjs.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/task-fetch.js.map +1 -1
- package/node_modules/@microsoft/teams.cards/dist/actions/submit/task-fetch.mjs.map +1 -1
- package/node_modules/@microsoft/teams.cards/package.json +2 -2
- package/node_modules/@microsoft/teams.common/dist/events/event-emitter.d.mts +2 -2
- package/node_modules/@microsoft/teams.common/dist/events/event-emitter.d.ts +2 -2
- package/node_modules/@microsoft/teams.common/dist/events/event-emitter.js.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/events/event-emitter.mjs.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/http/client.d.mts +1 -1
- package/node_modules/@microsoft/teams.common/dist/http/client.d.ts +1 -1
- package/node_modules/@microsoft/teams.common/dist/http/client.js +3 -1
- package/node_modules/@microsoft/teams.common/dist/http/client.js.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/http/client.mjs +3 -1
- package/node_modules/@microsoft/teams.common/dist/http/client.mjs.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/logging/console.d.mts +1 -1
- package/node_modules/@microsoft/teams.common/dist/logging/console.d.ts +1 -1
- package/node_modules/@microsoft/teams.common/dist/logging/console.js +3 -1
- package/node_modules/@microsoft/teams.common/dist/logging/console.js.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/logging/console.mjs +3 -1
- package/node_modules/@microsoft/teams.common/dist/logging/console.mjs.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/logging/string.js.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/logging/string.mjs.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/storage/list-local-storage.js.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/storage/list-local-storage.mjs.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/storage/local-storage.js.map +1 -1
- package/node_modules/@microsoft/teams.common/dist/storage/local-storage.mjs.map +1 -1
- package/node_modules/@microsoft/teams.common/package.json +2 -2
- package/node_modules/@microsoft/teams.graph/dist/index.js +2 -2
- package/node_modules/@microsoft/teams.graph/dist/index.mjs +2 -2
- package/node_modules/@microsoft/teams.graph/package.json +4 -4
- package/node_modules/jose/README.md +62 -83
- package/node_modules/jose/dist/types/index.d.ts +48 -55
- package/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +4 -12
- package/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +9 -22
- package/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +4 -12
- package/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +21 -24
- package/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +4 -19
- package/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +21 -35
- package/node_modules/jose/dist/types/jwk/embedded.d.ts +2 -10
- package/node_modules/jose/dist/types/jwk/thumbprint.d.ts +5 -16
- package/node_modules/jose/dist/types/jwks/local.d.ts +13 -16
- package/node_modules/jose/dist/types/jwks/remote.d.ts +16 -204
- package/node_modules/jose/dist/types/jws/compact/sign.d.ts +6 -18
- package/node_modules/jose/dist/types/jws/compact/verify.d.ts +5 -13
- package/node_modules/jose/dist/types/jws/flattened/sign.d.ts +8 -18
- package/node_modules/jose/dist/types/jws/flattened/verify.d.ts +5 -13
- package/node_modules/jose/dist/types/jws/general/sign.d.ts +12 -24
- package/node_modules/jose/dist/types/jws/general/verify.d.ts +5 -21
- package/node_modules/jose/dist/types/jwt/decrypt.d.ts +5 -13
- package/node_modules/jose/dist/types/jwt/encrypt.d.ts +17 -31
- package/node_modules/jose/dist/types/jwt/sign.d.ts +6 -26
- package/node_modules/jose/dist/types/jwt/unsecured.d.ts +7 -29
- package/node_modules/jose/dist/types/jwt/verify.d.ts +6 -14
- package/node_modules/jose/dist/types/key/export.d.ts +12 -24
- package/node_modules/jose/dist/types/key/generate_key_pair.d.ts +11 -22
- package/node_modules/jose/dist/types/key/generate_secret.d.ts +8 -24
- package/node_modules/jose/dist/types/key/import.d.ts +33 -62
- package/node_modules/jose/dist/types/types.d.ts +165 -407
- package/node_modules/jose/dist/types/util/base64url.d.ts +16 -6
- package/node_modules/jose/dist/types/util/decode_jwt.d.ts +2 -10
- package/node_modules/jose/dist/types/util/decode_protected_header.d.ts +2 -11
- package/node_modules/jose/dist/types/util/errors.d.ts +36 -98
- package/node_modules/jose/package.json +17 -127
- package/node_modules/jwks-rsa/package.json +4 -4
- package/node_modules/jwks-rsa/src/integrations/config.js +1 -0
- package/node_modules/jwks-rsa/src/utils.js +2 -0
- package/node_modules/jwks-rsa/src/wrappers/cache.js +1 -1
- package/node_modules/lru-cache/README.md +117 -420
- package/node_modules/lru-cache/package.json +12 -132
- package/node_modules/lru-memoizer/README.md +21 -22
- package/node_modules/lru-memoizer/lib/async.d.ts +32 -15
- package/node_modules/lru-memoizer/lib/async.js +113 -55
- package/node_modules/lru-memoizer/lib/freeze.d.ts +0 -1
- package/node_modules/lru-memoizer/lib/freeze.js +1 -1
- package/node_modules/lru-memoizer/lib/index.d.ts +0 -1
- package/node_modules/lru-memoizer/lib/index.js +2 -2
- package/node_modules/lru-memoizer/lib/sync.d.ts +16 -17
- package/node_modules/lru-memoizer/lib/sync.js +62 -34
- package/node_modules/lru-memoizer/lib/util.d.ts +40 -41
- package/node_modules/lru-memoizer/lib/util.js +1 -1
- package/node_modules/lru-memoizer/package.json +4 -3
- package/node_modules/lru-memoizer/test/lru-memoizer.clone.test.js +1 -2
- package/node_modules/lru-memoizer/test/lru-memoizer.freeze.test.js +0 -1
- package/node_modules/lru-memoizer/test/lru-memoizer.itemmaxage.test.js +26 -26
- package/node_modules/lru-memoizer/test/lru-memoizer.nokey.test.js +0 -1
- package/node_modules/lru-memoizer/test/lru-memoizer.queumaxage.test.js +3 -4
- package/node_modules/lru-memoizer/test/lru-memoizer.sync.clone.test.js +2 -4
- package/node_modules/lru-memoizer/test/lru-memoizer.sync.freeze.js +2 -4
- package/node_modules/lru-memoizer/tsconfig.json +56 -16
- package/node_modules/semver/classes/range.js +7 -0
- package/node_modules/semver/package.json +1 -1
- package/node_modules/semver/ranges/subset.js +2 -2
- package/npm-shrinkwrap.json +52 -98
- package/openclaw.plugin.json +21 -0
- package/package.json +6 -10
- package/dist/test-api.js +0 -2
- package/node_modules/@microsoft/teams.apps/node_modules/jose/LICENSE.md +0 -21
- package/node_modules/@microsoft/teams.apps/node_modules/jose/README.md +0 -132
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/index.d.ts +0 -48
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +0 -23
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +0 -52
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +0 -23
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +0 -80
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +0 -23
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +0 -60
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwk/embedded.d.ts +0 -9
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwk/thumbprint.d.ts +0 -21
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwks/local.d.ts +0 -26
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwks/remote.d.ts +0 -49
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jws/compact/sign.d.ts +0 -24
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jws/compact/verify.d.ts +0 -25
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jws/flattened/sign.d.ts +0 -32
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jws/flattened/verify.d.ts +0 -25
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jws/general/sign.d.ts +0 -41
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jws/general/verify.d.ts +0 -25
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwt/decrypt.d.ts +0 -27
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwt/encrypt.d.ts +0 -77
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwt/sign.d.ts +0 -23
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwt/unsecured.d.ts +0 -21
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/jwt/verify.d.ts +0 -29
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/key/export.d.ts +0 -21
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/key/generate_key_pair.d.ts +0 -36
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/key/generate_secret.d.ts +0 -19
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/key/import.d.ts +0 -54
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/types.d.ts +0 -610
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/util/base64url.d.ts +0 -19
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/util/decode_jwt.d.ts +0 -10
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/util/decode_protected_header.d.ts +0 -8
- package/node_modules/@microsoft/teams.apps/node_modules/jose/dist/types/util/errors.d.ts +0 -151
- package/node_modules/@microsoft/teams.apps/node_modules/jose/package.json +0 -90
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/LICENSE +0 -21
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/README.md +0 -84
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/index.d.ts +0 -139
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/package.json +0 -74
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/JwksClient.js +0 -91
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/errors/ArgumentError.js +0 -10
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/errors/JwksError.js +0 -10
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/errors/JwksRateLimitError.js +0 -10
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/errors/SigningKeyNotFoundError.js +0 -10
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/errors/index.js +0 -6
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/index.js +0 -22
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/integrations/config.js +0 -15
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/integrations/express.js +0 -60
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/integrations/hapi.js +0 -59
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/integrations/koa.js +0 -30
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/integrations/passport.js +0 -52
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/utils.js +0 -80
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/wrappers/cache.js +0 -15
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/wrappers/callbackSupport.js +0 -16
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/wrappers/index.js +0 -7
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/wrappers/interceptor.js +0 -30
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/wrappers/rateLimit.js +0 -34
- package/node_modules/@microsoft/teams.apps/node_modules/jwks-rsa/src/wrappers/request.js +0 -54
- package/node_modules/@microsoft/teams.apps/node_modules/lru-cache/README.md +0 -166
- package/node_modules/@microsoft/teams.apps/node_modules/lru-cache/package.json +0 -34
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/.jshintrc +0 -41
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/LICENSE +0 -21
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/README.md +0 -88
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/async.d.ts +0 -85
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/async.js +0 -178
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/freeze.d.ts +0 -1
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/freeze.js +0 -23
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/index.d.ts +0 -2
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/index.js +0 -4
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/sync.d.ts +0 -65
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/sync.js +0 -114
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/util.d.ts +0 -162
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/lib/util.js +0 -3
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/package.json +0 -34
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.bypass.test.js +0 -39
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.clone.test.js +0 -44
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.disable.test.js +0 -49
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.events.test.js +0 -132
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.freeze.test.js +0 -43
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.itemmaxage.test.js +0 -204
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.lock.test.js +0 -36
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.nokey.test.js +0 -43
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.queumaxage.test.js +0 -110
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.sync.clone.test.js +0 -76
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.sync.events.test.js +0 -95
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.sync.freeze.js +0 -74
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.sync.test.js +0 -47
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/test/lru-memoizer.test.js +0 -88
- package/node_modules/@microsoft/teams.apps/node_modules/lru-memoizer/tsconfig.json +0 -59
- package/node_modules/jose/dist/webapi/index.js +0 -32
- package/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +0 -27
- package/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +0 -27
- package/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +0 -159
- package/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +0 -167
- package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +0 -31
- package/node_modules/jose/dist/webapi/jwe/general/encrypt.js +0 -182
- package/node_modules/jose/dist/webapi/jwk/embedded.js +0 -17
- package/node_modules/jose/dist/webapi/jwk/thumbprint.js +0 -68
- package/node_modules/jose/dist/webapi/jwks/local.js +0 -119
- package/node_modules/jose/dist/webapi/jwks/remote.js +0 -179
- package/node_modules/jose/dist/webapi/jws/compact/sign.js +0 -18
- package/node_modules/jose/dist/webapi/jws/compact/verify.js +0 -21
- package/node_modules/jose/dist/webapi/jws/flattened/sign.js +0 -89
- package/node_modules/jose/dist/webapi/jws/flattened/verify.js +0 -110
- package/node_modules/jose/dist/webapi/jws/general/sign.js +0 -70
- package/node_modules/jose/dist/webapi/jws/general/verify.js +0 -24
- package/node_modules/jose/dist/webapi/jwt/decrypt.js +0 -23
- package/node_modules/jose/dist/webapi/jwt/encrypt.js +0 -101
- package/node_modules/jose/dist/webapi/jwt/sign.js +0 -52
- package/node_modules/jose/dist/webapi/jwt/unsecured.js +0 -63
- package/node_modules/jose/dist/webapi/jwt/verify.js +0 -15
- package/node_modules/jose/dist/webapi/key/export.js +0 -11
- package/node_modules/jose/dist/webapi/key/generate_key_pair.js +0 -97
- package/node_modules/jose/dist/webapi/key/generate_secret.js +0 -40
- package/node_modules/jose/dist/webapi/key/import.js +0 -57
- package/node_modules/jose/dist/webapi/lib/aesgcmkw.js +0 -15
- package/node_modules/jose/dist/webapi/lib/aeskw.js +0 -25
- package/node_modules/jose/dist/webapi/lib/asn1.js +0 -243
- package/node_modules/jose/dist/webapi/lib/base64.js +0 -22
- package/node_modules/jose/dist/webapi/lib/buffer_utils.js +0 -43
- package/node_modules/jose/dist/webapi/lib/check_key_type.js +0 -122
- package/node_modules/jose/dist/webapi/lib/content_encryption.js +0 -217
- package/node_modules/jose/dist/webapi/lib/crypto_key.js +0 -136
- package/node_modules/jose/dist/webapi/lib/deflate.js +0 -44
- package/node_modules/jose/dist/webapi/lib/ecdhes.js +0 -52
- package/node_modules/jose/dist/webapi/lib/helpers.js +0 -19
- package/node_modules/jose/dist/webapi/lib/invalid_key_input.js +0 -27
- package/node_modules/jose/dist/webapi/lib/is_key_like.js +0 -17
- package/node_modules/jose/dist/webapi/lib/jwk_to_key.js +0 -107
- package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +0 -238
- package/node_modules/jose/dist/webapi/lib/key_management.js +0 -186
- package/node_modules/jose/dist/webapi/lib/key_to_jwk.js +0 -31
- package/node_modules/jose/dist/webapi/lib/normalize_key.js +0 -166
- package/node_modules/jose/dist/webapi/lib/pbes2kw.js +0 -42
- package/node_modules/jose/dist/webapi/lib/rsaes.js +0 -24
- package/node_modules/jose/dist/webapi/lib/signing.js +0 -68
- package/node_modules/jose/dist/webapi/lib/type_checks.js +0 -40
- package/node_modules/jose/dist/webapi/lib/validate_algorithms.js +0 -10
- package/node_modules/jose/dist/webapi/lib/validate_crit.js +0 -33
- package/node_modules/jose/dist/webapi/util/base64url.js +0 -30
- package/node_modules/jose/dist/webapi/util/decode_jwt.js +0 -32
- package/node_modules/jose/dist/webapi/util/decode_protected_header.js +0 -34
- package/node_modules/jose/dist/webapi/util/errors.js +0 -99
- package/node_modules/lru-cache/LICENSE.md +0 -55
- package/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel-browser.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel-browser.js.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel.d.ts +0 -5
- package/node_modules/lru-cache/dist/commonjs/browser/diagnostics-channel.js +0 -7
- package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts +0 -1400
- package/node_modules/lru-cache/dist/commonjs/browser/index.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/browser/index.js +0 -1726
- package/node_modules/lru-cache/dist/commonjs/browser/index.js.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/browser/index.min.js +0 -2
- package/node_modules/lru-cache/dist/commonjs/browser/index.min.js.map +0 -7
- package/node_modules/lru-cache/dist/commonjs/browser/perf.d.ts +0 -12
- package/node_modules/lru-cache/dist/commonjs/browser/perf.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/browser/perf.js +0 -10
- package/node_modules/lru-cache/dist/commonjs/browser/perf.js.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/diagnostics-channel-cjs.cjs.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/diagnostics-channel-cjs.d.cts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/diagnostics-channel.d.ts +0 -5
- package/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js +0 -7
- package/node_modules/lru-cache/dist/commonjs/index.d.ts +0 -1400
- package/node_modules/lru-cache/dist/commonjs/index.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/index.js +0 -1726
- package/node_modules/lru-cache/dist/commonjs/index.js.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/index.min.js +0 -2
- package/node_modules/lru-cache/dist/commonjs/index.min.js.map +0 -7
- package/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel-node.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel-node.js.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel.d.ts +0 -5
- package/node_modules/lru-cache/dist/commonjs/node/diagnostics-channel.js +0 -9
- package/node_modules/lru-cache/dist/commonjs/node/index.d.ts +0 -1400
- package/node_modules/lru-cache/dist/commonjs/node/index.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/node/index.js +0 -1726
- package/node_modules/lru-cache/dist/commonjs/node/index.js.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/node/index.min.js +0 -2
- package/node_modules/lru-cache/dist/commonjs/node/index.min.js.map +0 -7
- package/node_modules/lru-cache/dist/commonjs/node/perf.d.ts +0 -12
- package/node_modules/lru-cache/dist/commonjs/node/perf.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/node/perf.js +0 -10
- package/node_modules/lru-cache/dist/commonjs/node/perf.js.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/package.json +0 -3
- package/node_modules/lru-cache/dist/commonjs/perf.d.ts +0 -12
- package/node_modules/lru-cache/dist/commonjs/perf.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/commonjs/perf.js +0 -10
- package/node_modules/lru-cache/dist/commonjs/perf.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/browser/diagnostics-channel-browser.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/browser/diagnostics-channel-browser.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.d.ts +0 -5
- package/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.js +0 -4
- package/node_modules/lru-cache/dist/esm/browser/index.d.ts +0 -1400
- package/node_modules/lru-cache/dist/esm/browser/index.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/browser/index.js +0 -1722
- package/node_modules/lru-cache/dist/esm/browser/index.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/browser/index.min.js +0 -2
- package/node_modules/lru-cache/dist/esm/browser/index.min.js.map +0 -7
- package/node_modules/lru-cache/dist/esm/browser/perf.d.ts +0 -12
- package/node_modules/lru-cache/dist/esm/browser/perf.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/browser/perf.js +0 -7
- package/node_modules/lru-cache/dist/esm/browser/perf.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/diagnostics-channel-esm.d.mts.map +0 -1
- package/node_modules/lru-cache/dist/esm/diagnostics-channel-esm.mjs.map +0 -1
- package/node_modules/lru-cache/dist/esm/diagnostics-channel.d.ts +0 -5
- package/node_modules/lru-cache/dist/esm/diagnostics-channel.js +0 -19
- package/node_modules/lru-cache/dist/esm/index.d.ts +0 -1400
- package/node_modules/lru-cache/dist/esm/index.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/index.js +0 -1722
- package/node_modules/lru-cache/dist/esm/index.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/index.min.js +0 -2
- package/node_modules/lru-cache/dist/esm/index.min.js.map +0 -7
- package/node_modules/lru-cache/dist/esm/node/diagnostics-channel-node.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/node/diagnostics-channel-node.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/node/diagnostics-channel.d.ts +0 -5
- package/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js +0 -6
- package/node_modules/lru-cache/dist/esm/node/index.d.ts +0 -1400
- package/node_modules/lru-cache/dist/esm/node/index.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/node/index.js +0 -1722
- package/node_modules/lru-cache/dist/esm/node/index.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/node/index.min.js +0 -2
- package/node_modules/lru-cache/dist/esm/node/index.min.js.map +0 -7
- package/node_modules/lru-cache/dist/esm/node/perf.d.ts +0 -12
- package/node_modules/lru-cache/dist/esm/node/perf.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/node/perf.js +0 -7
- package/node_modules/lru-cache/dist/esm/node/perf.js.map +0 -1
- package/node_modules/lru-cache/dist/esm/package.json +0 -3
- package/node_modules/lru-cache/dist/esm/perf.d.ts +0 -12
- package/node_modules/lru-cache/dist/esm/perf.d.ts.map +0 -1
- package/node_modules/lru-cache/dist/esm/perf.js +0 -7
- package/node_modules/lru-cache/dist/esm/perf.js.map +0 -1
- package/node_modules/lru-memoizer/lib/async.d.ts.map +0 -1
- package/node_modules/lru-memoizer/lib/async.js.map +0 -1
- package/node_modules/lru-memoizer/lib/freeze.d.ts.map +0 -1
- package/node_modules/lru-memoizer/lib/freeze.js.map +0 -1
- package/node_modules/lru-memoizer/lib/index.d.ts.map +0 -1
- package/node_modules/lru-memoizer/lib/index.js.map +0 -1
- package/node_modules/lru-memoizer/lib/sync.d.ts.map +0 -1
- package/node_modules/lru-memoizer/lib/sync.js.map +0 -1
- package/node_modules/lru-memoizer/lib/util.d.ts.map +0 -1
- package/node_modules/lru-memoizer/lib/util.js.map +0 -1
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/index.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwe/compact/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwe/compact/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwe/flattened/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwe/flattened/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwe/general/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwe/general/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwk/embedded.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwk/thumbprint.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwks/local.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwks/remote.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jws/compact/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jws/compact/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jws/flattened/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jws/flattened/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jws/general/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jws/general/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwt/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwt/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwt/produce.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwt/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwt/unsecured.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/jwt/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/key/export.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/key/generate_key_pair.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/key/generate_secret.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/key/import.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/aesgcmkw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/buffer_utils.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/cek.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/check_iv_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/check_key_type.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/check_p2s.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/crypto_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/decrypt_key_management.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/encrypt_key_management.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/epoch.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/format_pem.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/invalid_key_input.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/is_disjoint.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/is_object.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/iv.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/jwt_claims_set.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/secs.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/validate_algorithms.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/lib/validate_crit.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/package.json +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/aeskw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/asn1.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/base64url.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/bogus.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/check_cek_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/check_key_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/digest.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/ecdhes.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/fetch_jwks.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/generate.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/get_sign_verify_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/is_key_like.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/jwk_to_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/key_to_jwk.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/pbes2kw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/random.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/rsaes.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/runtime.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/subtle_dsa.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/subtle_rsaes.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/timing_safe_equal.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/webcrypto.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/runtime/zlib.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/util/base64url.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/util/decode_jwt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/util/decode_protected_header.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/util/errors.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/browser/util/runtime.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/index.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwe/compact/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwe/compact/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwe/flattened/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwe/flattened/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwe/general/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwe/general/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwk/embedded.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwk/thumbprint.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwks/local.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwks/remote.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jws/compact/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jws/compact/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jws/flattened/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jws/flattened/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jws/general/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jws/general/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwt/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwt/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwt/produce.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwt/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwt/unsecured.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/jwt/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/key/export.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/key/generate_key_pair.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/key/generate_secret.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/key/import.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/aesgcmkw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/buffer_utils.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/cek.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/check_iv_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/check_key_type.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/check_p2s.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/crypto_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/decrypt_key_management.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/encrypt_key_management.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/epoch.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/invalid_key_input.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/is_disjoint.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/is_object.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/iv.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/jwt_claims_set.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/secs.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/validate_algorithms.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/lib/validate_crit.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/aeskw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/asn1.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/asn1_sequence_decoder.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/asn1_sequence_encoder.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/base64url.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/cbc_tag.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/check_cek_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/check_modulus_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/ciphers.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/digest.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/dsa_digest.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/ecdhes.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/fetch_jwks.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/flags.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/generate.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/get_named_curve.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/get_sign_verify_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/hmac_digest.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/is_key_like.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/is_key_object.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/jwk_to_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/key_to_jwk.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/node_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/pbes2kw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/random.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/rsaes.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/runtime.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/timing_safe_equal.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/webcrypto.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/runtime/zlib.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/util/base64url.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/util/decode_jwt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/util/decode_protected_header.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/util/errors.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/cjs/util/runtime.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/index.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwe/compact/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwe/compact/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwe/flattened/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwe/flattened/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwe/general/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwe/general/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwk/embedded.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwk/thumbprint.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwks/local.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwks/remote.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jws/compact/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jws/compact/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jws/flattened/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jws/flattened/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jws/general/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jws/general/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwt/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwt/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwt/produce.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwt/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwt/unsecured.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/jwt/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/key/export.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/key/generate_key_pair.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/key/generate_secret.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/key/import.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/aesgcmkw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/buffer_utils.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/cek.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/check_iv_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/check_key_type.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/check_p2s.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/crypto_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/decrypt_key_management.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/encrypt_key_management.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/epoch.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/invalid_key_input.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/is_disjoint.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/is_object.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/iv.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/jwt_claims_set.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/secs.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/validate_algorithms.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/lib/validate_crit.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/package.json +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/aeskw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/asn1.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/asn1_sequence_decoder.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/asn1_sequence_encoder.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/base64url.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/cbc_tag.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/check_cek_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/check_modulus_length.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/ciphers.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/decrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/digest.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/dsa_digest.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/ecdhes.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/encrypt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/fetch_jwks.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/flags.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/generate.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/get_named_curve.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/get_sign_verify_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/hmac_digest.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/is_key_like.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/is_key_object.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/jwk_to_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/key_to_jwk.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/node_key.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/pbes2kw.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/random.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/rsaes.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/runtime.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/sign.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/timing_safe_equal.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/verify.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/webcrypto.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/runtime/zlib.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/util/base64url.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/util/decode_jwt.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/util/decode_protected_header.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/util/errors.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/node/esm/util/runtime.js +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/types/jwt/produce.d.ts +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/jose → jose}/dist/types/util/runtime.d.ts +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/lru-cache → lru-cache}/LICENSE +0 -0
- /package/node_modules/{@microsoft/teams.apps/node_modules/lru-cache → lru-cache}/index.js +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { M as getMSTeamsRuntime, h as fetchWithSsrFGuard$1 } from "./runtime-api-BlvMnDKz.js";
|
|
2
|
-
import { n as refreshMSTeamsDelegatedTokens } from "./oauth.token-
|
|
2
|
+
import { c as createMSTeamsHttpError, n as refreshMSTeamsDelegatedTokens } from "./oauth.token-5ygi8ycy.js";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
|
-
import { isRecord, isRecord as isRecord$1, normalizeLowercaseStringOrEmpty, normalizeOptionalString
|
|
4
|
+
import { isRecord, isRecord as isRecord$1, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
6
6
|
import { readProviderJsonResponse } from "openclaw/plugin-sdk/provider-http";
|
|
7
7
|
import { Buffer } from "node:buffer";
|
|
@@ -37,6 +37,7 @@ const DEFAULT_MEDIA_HOST_ALLOWLIST = [
|
|
|
37
37
|
"ams.skype.com",
|
|
38
38
|
"media.ams.skype.com",
|
|
39
39
|
"trafficmanager.net",
|
|
40
|
+
"botframework.azure.cn",
|
|
40
41
|
"blob.core.windows.net",
|
|
41
42
|
"azureedge.net",
|
|
42
43
|
"microsoft.com"
|
|
@@ -45,6 +46,7 @@ const DEFAULT_MEDIA_AUTH_HOST_ALLOWLIST = [
|
|
|
45
46
|
"api.botframework.com",
|
|
46
47
|
"botframework.com",
|
|
47
48
|
"smba.trafficmanager.net",
|
|
49
|
+
"botframework.azure.cn",
|
|
48
50
|
"graph.microsoft.com",
|
|
49
51
|
"graph.microsoft.us",
|
|
50
52
|
"graph.microsoft.de",
|
|
@@ -291,6 +293,20 @@ function resolveAllowedHosts(input) {
|
|
|
291
293
|
function resolveAuthAllowedHosts(input) {
|
|
292
294
|
return normalizeHostnameSuffixAllowlist(input, DEFAULT_MEDIA_AUTH_HOST_ALLOWLIST);
|
|
293
295
|
}
|
|
296
|
+
function isMockFetchFn(fetchFn) {
|
|
297
|
+
const candidate = fetchFn;
|
|
298
|
+
return Boolean(candidate.mock || Object.prototype.hasOwnProperty.call(candidate, "_isMockFunction"));
|
|
299
|
+
}
|
|
300
|
+
function resolveGuardedFetchImpl(params) {
|
|
301
|
+
if (!params.fetchFn) return;
|
|
302
|
+
if (params.fetchFnSupportsDispatcher === true || params.fetchFn === fetch || params.fetchFn === globalThis.fetch || isMockFetchFn(params.fetchFn)) return params.fetchFn;
|
|
303
|
+
throw new Error("MSTeams attachment fetchFn must set fetchFnSupportsDispatcher to use guarded DNS pinning");
|
|
304
|
+
}
|
|
305
|
+
function resolveRetainedAuthorizationRedirectHostnameAllowlist(input) {
|
|
306
|
+
if (!input) return;
|
|
307
|
+
if (input.includes("*")) return ["*"];
|
|
308
|
+
return resolveMediaSsrfPolicy(input)?.hostnameAllowlist;
|
|
309
|
+
}
|
|
294
310
|
function resolveAttachmentFetchPolicy(params) {
|
|
295
311
|
return {
|
|
296
312
|
allowHosts: resolveAllowedHosts(params?.allowHosts),
|
|
@@ -340,6 +356,50 @@ async function resolveAndValidateIP(hostname, resolveFn) {
|
|
|
340
356
|
}
|
|
341
357
|
/** Maximum number of redirects to follow in safeFetch. */
|
|
342
358
|
const MAX_SAFE_REDIRECTS = 5;
|
|
359
|
+
const NULL_BODY_STATUSES$1 = new Set([
|
|
360
|
+
101,
|
|
361
|
+
204,
|
|
362
|
+
205,
|
|
363
|
+
304
|
|
364
|
+
]);
|
|
365
|
+
function responseWithRelease(response, release) {
|
|
366
|
+
let released = false;
|
|
367
|
+
const releaseOnce = async () => {
|
|
368
|
+
if (released) return;
|
|
369
|
+
released = true;
|
|
370
|
+
await release();
|
|
371
|
+
};
|
|
372
|
+
if (!response.body || NULL_BODY_STATUSES$1.has(response.status)) {
|
|
373
|
+
releaseOnce();
|
|
374
|
+
return response;
|
|
375
|
+
}
|
|
376
|
+
const reader = response.body.getReader();
|
|
377
|
+
const body = new ReadableStream({
|
|
378
|
+
async pull(controller) {
|
|
379
|
+
try {
|
|
380
|
+
const next = await reader.read();
|
|
381
|
+
if (next.done) {
|
|
382
|
+
controller.close();
|
|
383
|
+
await releaseOnce();
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
controller.enqueue(next.value);
|
|
387
|
+
} catch (err) {
|
|
388
|
+
await releaseOnce();
|
|
389
|
+
throw err;
|
|
390
|
+
}
|
|
391
|
+
},
|
|
392
|
+
async cancel(reason) {
|
|
393
|
+
reader.cancel(reason).catch(() => {});
|
|
394
|
+
await releaseOnce();
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
return new Response(body, {
|
|
398
|
+
status: response.status,
|
|
399
|
+
statusText: response.statusText,
|
|
400
|
+
headers: response.headers
|
|
401
|
+
});
|
|
402
|
+
}
|
|
343
403
|
/**
|
|
344
404
|
* Fetch a URL with redirect: "manual", validating each redirect target
|
|
345
405
|
* against the hostname allowlist and optional DNS-resolved IP (anti-SSRF).
|
|
@@ -349,12 +409,32 @@ const MAX_SAFE_REDIRECTS = 5;
|
|
|
349
409
|
* - DNS rebinding attacks when a lookup function is provided
|
|
350
410
|
*/
|
|
351
411
|
async function safeFetch(params) {
|
|
352
|
-
const fetchFn = params.fetchFn ?? fetch;
|
|
353
412
|
const resolveFn = params.resolveFn ?? lookup;
|
|
354
413
|
const hasDispatcher = Boolean(params.requestInit && typeof params.requestInit === "object" && "dispatcher" in params.requestInit);
|
|
355
414
|
const currentHeaders = new Headers(params.requestInit?.headers);
|
|
356
415
|
let currentUrl = params.url;
|
|
357
416
|
if (!isUrlAllowed(currentUrl, params.allowHosts)) throw new Error(`Initial download URL blocked: ${currentUrl}`);
|
|
417
|
+
if (currentHeaders.has("authorization") && params.authorizationAllowHosts && !isUrlAllowed(currentUrl, params.authorizationAllowHosts)) currentHeaders.delete("authorization");
|
|
418
|
+
if (!hasDispatcher) {
|
|
419
|
+
const guarded = await fetchWithSsrFGuard({
|
|
420
|
+
url: currentUrl,
|
|
421
|
+
fetchImpl: resolveGuardedFetchImpl({
|
|
422
|
+
fetchFn: params.fetchFn,
|
|
423
|
+
fetchFnSupportsDispatcher: params.fetchFnSupportsDispatcher
|
|
424
|
+
}),
|
|
425
|
+
init: {
|
|
426
|
+
...params.requestInit,
|
|
427
|
+
headers: currentHeaders
|
|
428
|
+
},
|
|
429
|
+
maxRedirects: MAX_SAFE_REDIRECTS,
|
|
430
|
+
requireHttps: true,
|
|
431
|
+
policy: resolveMediaSsrfPolicy(params.allowHosts),
|
|
432
|
+
lookupFn: resolveFn,
|
|
433
|
+
retainAuthorizationRedirectHostnameAllowlist: resolveRetainedAuthorizationRedirectHostnameAllowlist(params.authorizationAllowHosts),
|
|
434
|
+
auditContext: "msteams.attachment"
|
|
435
|
+
});
|
|
436
|
+
return responseWithRelease(guarded.response, guarded.release);
|
|
437
|
+
}
|
|
358
438
|
if (resolveFn) try {
|
|
359
439
|
const initialHost = new URL(currentUrl).hostname;
|
|
360
440
|
await resolveAndValidateIP(initialHost, resolveFn);
|
|
@@ -362,7 +442,7 @@ async function safeFetch(params) {
|
|
|
362
442
|
throw new Error(`Initial download URL blocked: ${currentUrl}`);
|
|
363
443
|
}
|
|
364
444
|
for (let i = 0; i <= MAX_SAFE_REDIRECTS; i++) {
|
|
365
|
-
const res = await fetchFn(currentUrl, {
|
|
445
|
+
const res = await (params.fetchFn ?? fetch)(currentUrl, {
|
|
366
446
|
...params.requestInit,
|
|
367
447
|
headers: currentHeaders,
|
|
368
448
|
redirect: "manual"
|
|
@@ -399,19 +479,73 @@ async function safeFetchWithPolicy(params) {
|
|
|
399
479
|
allowHosts: params.policy.allowHosts,
|
|
400
480
|
authorizationAllowHosts: params.policy.authAllowHosts,
|
|
401
481
|
fetchFn: params.fetchFn,
|
|
482
|
+
fetchFnSupportsDispatcher: params.fetchFnSupportsDispatcher,
|
|
402
483
|
requestInit: params.requestInit,
|
|
403
484
|
resolveFn: params.resolveFn
|
|
404
485
|
});
|
|
405
486
|
}
|
|
487
|
+
const PUBLIC_MSTEAMS_SERVICE_HOST = "smba.trafficmanager.net";
|
|
488
|
+
const CHINA_BOT_FRAMEWORK_SERVICE_HOST = "botframework.azure.cn";
|
|
489
|
+
function normalizeOptionalServiceUrl(value) {
|
|
490
|
+
const trimmed = value?.trim();
|
|
491
|
+
if (!trimmed) return null;
|
|
492
|
+
try {
|
|
493
|
+
const parsed = new URL(trimmed);
|
|
494
|
+
parsed.hash = "";
|
|
495
|
+
parsed.search = "";
|
|
496
|
+
parsed.pathname = parsed.pathname.replace(/\/+$/, "");
|
|
497
|
+
return {
|
|
498
|
+
value: parsed.toString().replace(/\/+$/, ""),
|
|
499
|
+
host: parsed.hostname.toLowerCase()
|
|
500
|
+
};
|
|
501
|
+
} catch {
|
|
502
|
+
return null;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
function resolveMSTeamsSdkCloudOptions(cfg) {
|
|
506
|
+
const cloud = cfg?.cloud ?? "Public";
|
|
507
|
+
const serviceUrl = cfg?.serviceUrl?.trim();
|
|
508
|
+
if (cloud !== "Public" && cloud !== "China" && !serviceUrl) throw new Error(`channels.msteams.cloud=${cloud} requires channels.msteams.serviceUrl so SDK proactive operations use the matching Teams Bot Connector endpoint.`);
|
|
509
|
+
return {
|
|
510
|
+
cloud,
|
|
511
|
+
...serviceUrl ? { serviceUrl } : {}
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
function isChinaBotFrameworkServiceHost(host) {
|
|
515
|
+
return host === CHINA_BOT_FRAMEWORK_SERVICE_HOST || host.endsWith(`.${CHINA_BOT_FRAMEWORK_SERVICE_HOST}`);
|
|
516
|
+
}
|
|
517
|
+
function isChinaBotFrameworkServiceUrl(value) {
|
|
518
|
+
const parsed = normalizeOptionalServiceUrl(value);
|
|
519
|
+
return Boolean(parsed && isChinaBotFrameworkServiceHost(parsed.host));
|
|
520
|
+
}
|
|
521
|
+
function validateMSTeamsProactiveServiceUrlBoundary(params) {
|
|
522
|
+
const configured = normalizeOptionalServiceUrl(params.configuredServiceUrl);
|
|
523
|
+
if (params.cloud !== "Public" && params.cloud !== "China" && !configured) throw new Error(`msteams proactive send blocked for ${params.conversationId}: channels.msteams.cloud=${params.cloud} requires channels.msteams.serviceUrl so SDK proactive operations use the matching Teams Bot Connector endpoint.`);
|
|
524
|
+
if (params.cloud === "China" && configured && !isChinaBotFrameworkServiceHost(configured.host)) throw new Error(`msteams proactive send blocked for ${params.conversationId}: configured Teams serviceUrl (${configured.value}) is not a Microsoft Teams China Bot Framework channel endpoint.`);
|
|
525
|
+
if (params.cloud !== "China" && configured && isChinaBotFrameworkServiceHost(configured.host)) throw new Error(`msteams proactive send blocked for ${params.conversationId}: configured Teams serviceUrl (${configured.value}) requires channels.msteams.cloud=China.`);
|
|
526
|
+
if (configured) {
|
|
527
|
+
const stored = normalizeOptionalServiceUrl(params.storedServiceUrl);
|
|
528
|
+
if (!stored) throw new Error(`msteams proactive send blocked for ${params.conversationId}: stored conversation reference is missing a valid serviceUrl. Ask the bot to receive a new Teams message in this conversation, then retry.`);
|
|
529
|
+
if (stored.host !== configured.host) throw new Error(`msteams proactive send blocked for ${params.conversationId}: stored conversation serviceUrl (${stored.value}) does not match configured Teams SDK serviceUrl host (${configured.host}). Set channels.msteams.cloud/channels.msteams.serviceUrl for the Teams cloud that owns this conversation, or refresh the stored conversation by receiving a new message.`);
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
532
|
+
const stored = normalizeOptionalServiceUrl(params.storedServiceUrl);
|
|
533
|
+
if (!stored) throw new Error(`msteams proactive send blocked for ${params.conversationId}: stored conversation reference is missing a valid serviceUrl. Ask the bot to receive a new Teams message in this conversation, then retry.`);
|
|
534
|
+
if (params.cloud === "China") {
|
|
535
|
+
if (!isChinaBotFrameworkServiceHost(stored.host)) throw new Error(`msteams proactive send blocked for ${params.conversationId}: stored conversation serviceUrl (${stored.value}) is not a Microsoft Teams China Bot Framework channel endpoint. Use a conversation reference received from the China/21Vianet Teams cloud.`);
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
if (isChinaBotFrameworkServiceUrl(stored.value)) throw new Error(`msteams proactive send blocked for ${params.conversationId}: stored conversation serviceUrl (${stored.value}) requires channels.msteams.cloud=China.`);
|
|
539
|
+
if (stored.host !== PUBLIC_MSTEAMS_SERVICE_HOST) throw new Error(`msteams proactive send blocked for ${params.conversationId}: stored conversation serviceUrl (${stored.value}) is not a Microsoft Teams public-cloud Bot Connector endpoint. Set channels.msteams.cloud and channels.msteams.serviceUrl for the supported Teams cloud that owns this conversation.`);
|
|
540
|
+
}
|
|
406
541
|
const BOT_FRAMEWORK_SERVICE_URL_HOST_ALLOWLIST = normalizeHostnameSuffixAllowlist([
|
|
407
542
|
"smba.trafficmanager.net",
|
|
408
543
|
"smba.infra.gcc.teams.microsoft.com",
|
|
409
544
|
"smba.infra.gov.teams.microsoft.us",
|
|
410
|
-
"smba.infra.dod.teams.microsoft.us"
|
|
545
|
+
"smba.infra.dod.teams.microsoft.us",
|
|
546
|
+
"botframework.azure.cn"
|
|
411
547
|
]);
|
|
412
|
-
|
|
413
|
-
if (!serviceUrlSsrfPolicy) throw new Error("Microsoft Teams Bot Framework serviceUrl allowlist is empty");
|
|
414
|
-
const BOT_FRAMEWORK_SERVICE_URL_SSRF_POLICY = serviceUrlSsrfPolicy;
|
|
548
|
+
if (!buildHostnameAllowlistPolicyFromSuffixAllowlist(BOT_FRAMEWORK_SERVICE_URL_HOST_ALLOWLIST)) throw new Error("Microsoft Teams Bot Framework serviceUrl allowlist is empty");
|
|
415
549
|
function describeBotFrameworkServiceUrlHost(serviceUrl) {
|
|
416
550
|
try {
|
|
417
551
|
return new URL(serviceUrl.trim()).hostname || "invalid-url";
|
|
@@ -434,163 +568,6 @@ function normalizeBotFrameworkServiceUrl(serviceUrl) {
|
|
|
434
568
|
throw new Error(`Blocked Microsoft Teams serviceUrl host: ${describeBotFrameworkServiceUrlHost(serviceUrl)}`);
|
|
435
569
|
}
|
|
436
570
|
//#endregion
|
|
437
|
-
//#region extensions/msteams/src/errors.ts
|
|
438
|
-
function formatUnknownError(err) {
|
|
439
|
-
if (err instanceof Error) return err.message;
|
|
440
|
-
if (typeof err === "string") return err;
|
|
441
|
-
if (err === null) return "null";
|
|
442
|
-
if (err === void 0) return "undefined";
|
|
443
|
-
if (typeof err === "number" || typeof err === "boolean" || typeof err === "bigint") return String(err);
|
|
444
|
-
if (typeof err === "symbol") return err.description ?? err.toString();
|
|
445
|
-
if (typeof err === "function") return err.name ? `[function ${err.name}]` : "[function]";
|
|
446
|
-
try {
|
|
447
|
-
return JSON.stringify(err) ?? "unknown error";
|
|
448
|
-
} catch {
|
|
449
|
-
return "unknown error";
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
function extractStatusCode(err) {
|
|
453
|
-
if (!isRecord(err)) return null;
|
|
454
|
-
const direct = err.statusCode ?? err.status;
|
|
455
|
-
if (typeof direct === "number" && Number.isFinite(direct)) return direct;
|
|
456
|
-
if (typeof direct === "string") {
|
|
457
|
-
const parsed = Number.parseInt(direct, 10);
|
|
458
|
-
if (Number.isFinite(parsed)) return parsed;
|
|
459
|
-
}
|
|
460
|
-
const response = err.response;
|
|
461
|
-
if (isRecord(response)) {
|
|
462
|
-
const status = response.status;
|
|
463
|
-
if (typeof status === "number" && Number.isFinite(status)) return status;
|
|
464
|
-
if (typeof status === "string") {
|
|
465
|
-
const parsed = Number.parseInt(status, 10);
|
|
466
|
-
if (Number.isFinite(parsed)) return parsed;
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
return null;
|
|
470
|
-
}
|
|
471
|
-
function extractErrorCode(err) {
|
|
472
|
-
if (!isRecord(err)) return null;
|
|
473
|
-
const direct = err.code;
|
|
474
|
-
if (typeof direct === "string" && direct.trim()) return direct;
|
|
475
|
-
const response = err.response;
|
|
476
|
-
if (!isRecord(response)) return null;
|
|
477
|
-
const body = response.body;
|
|
478
|
-
if (isRecord(body)) {
|
|
479
|
-
const error = body.error;
|
|
480
|
-
if (isRecord(error) && typeof error.code === "string" && error.code.trim()) return error.code;
|
|
481
|
-
}
|
|
482
|
-
return null;
|
|
483
|
-
}
|
|
484
|
-
function extractRetryAfterMs(err) {
|
|
485
|
-
if (!isRecord(err)) return null;
|
|
486
|
-
const direct = err.retryAfterMs ?? err.retry_after_ms;
|
|
487
|
-
if (typeof direct === "number" && Number.isFinite(direct) && direct >= 0) return direct;
|
|
488
|
-
const retryAfter = err.retryAfter ?? err.retry_after;
|
|
489
|
-
if (typeof retryAfter === "number" && Number.isFinite(retryAfter)) return retryAfter >= 0 ? retryAfter * 1e3 : null;
|
|
490
|
-
if (typeof retryAfter === "string") {
|
|
491
|
-
const parsed = Number.parseFloat(retryAfter);
|
|
492
|
-
if (Number.isFinite(parsed) && parsed >= 0) return parsed * 1e3;
|
|
493
|
-
}
|
|
494
|
-
const response = err.response;
|
|
495
|
-
if (!isRecord(response)) return null;
|
|
496
|
-
const headers = response.headers;
|
|
497
|
-
if (!headers) return null;
|
|
498
|
-
if (isRecord(headers)) {
|
|
499
|
-
const raw = headers["retry-after"] ?? headers["Retry-After"];
|
|
500
|
-
if (typeof raw === "string") {
|
|
501
|
-
const parsed = Number.parseFloat(raw);
|
|
502
|
-
if (Number.isFinite(parsed) && parsed >= 0) return parsed * 1e3;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
if (typeof headers === "object" && headers !== null && "get" in headers && typeof headers.get === "function") {
|
|
506
|
-
const raw = headers.get("retry-after");
|
|
507
|
-
if (raw) {
|
|
508
|
-
const parsed = Number.parseFloat(raw);
|
|
509
|
-
if (Number.isFinite(parsed) && parsed >= 0) return parsed * 1e3;
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
return null;
|
|
513
|
-
}
|
|
514
|
-
/**
|
|
515
|
-
* Classify outbound send errors for safe retries and actionable logs.
|
|
516
|
-
*
|
|
517
|
-
* Important: We only mark errors as retryable when we have an explicit HTTP
|
|
518
|
-
* status code that indicates the message was not accepted (e.g. 429, 5xx).
|
|
519
|
-
* For transport-level errors where delivery is ambiguous, we prefer to avoid
|
|
520
|
-
* retries to reduce the chance of duplicate posts.
|
|
521
|
-
*/
|
|
522
|
-
function classifyMSTeamsSendError(err) {
|
|
523
|
-
const statusCode = extractStatusCode(err);
|
|
524
|
-
const retryAfterMs = extractRetryAfterMs(err);
|
|
525
|
-
const errorCode = extractErrorCode(err) ?? void 0;
|
|
526
|
-
if (statusCode === 401) return {
|
|
527
|
-
kind: "auth",
|
|
528
|
-
statusCode,
|
|
529
|
-
errorCode
|
|
530
|
-
};
|
|
531
|
-
if (statusCode === 403) {
|
|
532
|
-
if (errorCode === "ContentStreamNotAllowed") return {
|
|
533
|
-
kind: "permanent",
|
|
534
|
-
statusCode,
|
|
535
|
-
errorCode
|
|
536
|
-
};
|
|
537
|
-
return {
|
|
538
|
-
kind: "auth",
|
|
539
|
-
statusCode,
|
|
540
|
-
errorCode
|
|
541
|
-
};
|
|
542
|
-
}
|
|
543
|
-
if (statusCode === 429) return {
|
|
544
|
-
kind: "throttled",
|
|
545
|
-
statusCode,
|
|
546
|
-
retryAfterMs: retryAfterMs ?? void 0,
|
|
547
|
-
errorCode
|
|
548
|
-
};
|
|
549
|
-
if (statusCode === 408 || statusCode != null && statusCode >= 500) return {
|
|
550
|
-
kind: "transient",
|
|
551
|
-
statusCode,
|
|
552
|
-
retryAfterMs: retryAfterMs ?? void 0,
|
|
553
|
-
errorCode
|
|
554
|
-
};
|
|
555
|
-
if (statusCode != null && statusCode >= 400) return {
|
|
556
|
-
kind: "permanent",
|
|
557
|
-
statusCode,
|
|
558
|
-
errorCode
|
|
559
|
-
};
|
|
560
|
-
if (statusCode == null) {
|
|
561
|
-
const networkCode = isRecord(err) && typeof err.code === "string" ? err.code : null;
|
|
562
|
-
if (networkCode === "ECONNREFUSED" || networkCode === "ENOTFOUND" || networkCode === "EHOSTUNREACH" || networkCode === "ETIMEDOUT" || networkCode === "ECONNRESET") return {
|
|
563
|
-
kind: "network",
|
|
564
|
-
errorCode: networkCode
|
|
565
|
-
};
|
|
566
|
-
}
|
|
567
|
-
return {
|
|
568
|
-
kind: "unknown",
|
|
569
|
-
statusCode: statusCode ?? void 0,
|
|
570
|
-
retryAfterMs: retryAfterMs ?? void 0,
|
|
571
|
-
errorCode
|
|
572
|
-
};
|
|
573
|
-
}
|
|
574
|
-
/**
|
|
575
|
-
* Detect whether an error is caused by a revoked Proxy.
|
|
576
|
-
*
|
|
577
|
-
* The Bot Framework SDK wraps TurnContext in a Proxy that is revoked once the
|
|
578
|
-
* turn handler returns. Any later access (e.g. from a debounced callback)
|
|
579
|
-
* throws a TypeError whose message contains the distinctive "proxy that has
|
|
580
|
-
* been revoked" string.
|
|
581
|
-
*/
|
|
582
|
-
function isRevokedProxyError(err) {
|
|
583
|
-
if (!(err instanceof TypeError)) return false;
|
|
584
|
-
return /proxy that has been revoked/i.test(err.message);
|
|
585
|
-
}
|
|
586
|
-
function formatMSTeamsSendErrorHint(classification) {
|
|
587
|
-
if (classification.kind === "auth") return "check msteams appId/appPassword/tenantId (or env vars MSTEAMS_APP_ID/MSTEAMS_APP_PASSWORD/MSTEAMS_TENANT_ID)";
|
|
588
|
-
if (classification.errorCode === "ContentStreamNotAllowed") return "Teams expired the content stream; stop streaming earlier and fall back to normal message delivery";
|
|
589
|
-
if (classification.kind === "throttled") return "Teams throttled the bot; backing off may help";
|
|
590
|
-
if (classification.kind === "transient") return "transient Teams/Bot Framework error; retry may succeed";
|
|
591
|
-
if (classification.kind === "network") return "transport-level failure sending reply to Teams Bot Connector (smba.trafficmanager.net) — check egress firewall rules allow outbound HTTPS to smba.trafficmanager.net";
|
|
592
|
-
}
|
|
593
|
-
//#endregion
|
|
594
571
|
//#region extensions/msteams/src/user-agent.ts
|
|
595
572
|
let cachedUserAgent;
|
|
596
573
|
function resolveTeamsSdkVersion() {
|
|
@@ -612,6 +589,17 @@ function buildUserAgent() {
|
|
|
612
589
|
cachedUserAgent = `teams.ts[apps]/${resolveTeamsSdkVersion()} OpenClaw/${resolveOpenClawVersion()}`;
|
|
613
590
|
return cachedUserAgent;
|
|
614
591
|
}
|
|
592
|
+
/**
|
|
593
|
+
* User-Agent fragment for the Teams SDK App's client. The SDK's Client.clone
|
|
594
|
+
* merges this with its own `teams.ts[apps]/<sdk-version>` identifier, so we
|
|
595
|
+
* only contribute the OpenClaw piece — passing the full `buildUserAgent()`
|
|
596
|
+
* would double-print the SDK token.
|
|
597
|
+
*
|
|
598
|
+
* Format: "OpenClaw/<openclaw-version>"
|
|
599
|
+
*/
|
|
600
|
+
function buildOpenClawUserAgentFragment() {
|
|
601
|
+
return `OpenClaw/${resolveOpenClawVersion()}`;
|
|
602
|
+
}
|
|
615
603
|
function ensureUserAgentHeader(headers) {
|
|
616
604
|
const nextHeaders = new Headers(headers);
|
|
617
605
|
if (!nextHeaders.has("User-Agent")) nextHeaders.set("User-Agent", buildUserAgent());
|
|
@@ -625,48 +613,61 @@ async function loadAzureIdentity() {
|
|
|
625
613
|
azureIdentityModulePromise ??= import(AZURE_IDENTITY_MODULE);
|
|
626
614
|
return azureIdentityModulePromise;
|
|
627
615
|
}
|
|
628
|
-
let
|
|
629
|
-
async function
|
|
630
|
-
|
|
631
|
-
App:
|
|
632
|
-
|
|
616
|
+
let sdkAppPromise = null;
|
|
617
|
+
async function loadSdkModules() {
|
|
618
|
+
sdkAppPromise ??= Promise.all([import("@microsoft/teams.apps"), import("@microsoft/teams.api")]).then(([apps, api]) => ({
|
|
619
|
+
App: apps.App,
|
|
620
|
+
ExpressAdapter: apps.ExpressAdapter,
|
|
621
|
+
cloudFromName: api.cloudFromName
|
|
633
622
|
}));
|
|
634
|
-
return
|
|
623
|
+
return sdkAppPromise;
|
|
635
624
|
}
|
|
636
625
|
/**
|
|
637
|
-
*
|
|
638
|
-
*
|
|
639
|
-
*
|
|
640
|
-
*
|
|
641
|
-
* the SDK's built-in HTTP server is unnecessary. Passing this adapter via the
|
|
642
|
-
* `httpServerAdapter` option prevents the SDK from creating the default
|
|
643
|
-
* HttpPlugin (which uses the deprecated `plugins` array and registers an
|
|
644
|
-
* Express middleware with the pattern `/api*` — invalid in Express 5).
|
|
645
|
-
*
|
|
646
|
-
* See: https://github.com/openclaw/openclaw/issues/55161
|
|
647
|
-
* See: https://github.com/openclaw/openclaw/issues/60732
|
|
626
|
+
* Lazily construct an ExpressAdapter that the Teams SDK App can register its
|
|
627
|
+
* routes on. The dynamic import keeps the SDK bundle off the hot startup path
|
|
628
|
+
* when msteams is disabled; the structural return type matches what
|
|
629
|
+
* `loadMSTeamsSdkWithAuth` accepts as its `httpServerAdapter` option.
|
|
648
630
|
*/
|
|
649
|
-
function
|
|
650
|
-
|
|
631
|
+
async function createMSTeamsExpressAdapter(serverOrApp) {
|
|
632
|
+
const { ExpressAdapter } = await loadSdkModules();
|
|
633
|
+
return new ExpressAdapter(serverOrApp);
|
|
651
634
|
}
|
|
652
635
|
/**
|
|
653
636
|
* Create a Teams SDK App instance from credentials. The App manages token
|
|
654
637
|
* acquisition, JWT validation, and the HTTP server lifecycle.
|
|
655
638
|
*
|
|
656
|
-
*
|
|
657
|
-
*
|
|
639
|
+
* Auth modes:
|
|
640
|
+
* - Secret: clientId + clientSecret → MSAL client credential flow (SDK built-in)
|
|
641
|
+
* - Managed identity: clientId + managedIdentityClientId → SDK built-in MI support
|
|
642
|
+
* - Certificate: clientId + custom token provider via @azure/identity
|
|
658
643
|
*/
|
|
659
|
-
async function createMSTeamsApp(creds,
|
|
660
|
-
|
|
661
|
-
|
|
644
|
+
async function createMSTeamsApp(creds, options) {
|
|
645
|
+
const { App, cloudFromName } = await loadSdkModules();
|
|
646
|
+
const cloud = options?.cloud ?? "Public";
|
|
647
|
+
const serviceUrl = options?.serviceUrl ? normalizeBotFrameworkServiceUrl(options.serviceUrl) : void 0;
|
|
648
|
+
const appOptions = {
|
|
649
|
+
client: options?.httpClient ?? { headers: { "User-Agent": buildOpenClawUserAgentFragment() } },
|
|
650
|
+
...options?.httpServerAdapter ? { httpServerAdapter: options.httpServerAdapter } : {},
|
|
651
|
+
...options?.messagingEndpoint ? { messagingEndpoint: options.messagingEndpoint } : {},
|
|
652
|
+
cloud: cloudFromName(cloud),
|
|
653
|
+
...serviceUrl ? { serviceUrl } : {},
|
|
654
|
+
...options?.oauthDefaultConnectionName ? { oauth: { defaultConnectionName: options.oauthDefaultConnectionName } } : {}
|
|
655
|
+
};
|
|
656
|
+
if (creds.type === "federated") return createFederatedApp(creds, App, appOptions);
|
|
657
|
+
return new App({
|
|
662
658
|
clientId: creds.appId,
|
|
663
659
|
clientSecret: creds.appPassword,
|
|
664
660
|
tenantId: creds.tenantId,
|
|
665
|
-
|
|
661
|
+
...appOptions
|
|
666
662
|
});
|
|
667
663
|
}
|
|
668
|
-
function createFederatedApp(creds,
|
|
669
|
-
if (creds.useManagedIdentity) return
|
|
664
|
+
function createFederatedApp(creds, App, appOptions) {
|
|
665
|
+
if (creds.useManagedIdentity) return new App({
|
|
666
|
+
clientId: creds.appId,
|
|
667
|
+
tenantId: creds.tenantId,
|
|
668
|
+
managedIdentityClientId: creds.managedIdentityClientId ?? "system",
|
|
669
|
+
...appOptions
|
|
670
|
+
});
|
|
670
671
|
if (!creds.certificatePath) throw new Error("Federated credentials require either a certificate path or managed identity.");
|
|
671
672
|
let privateKey;
|
|
672
673
|
try {
|
|
@@ -675,9 +676,9 @@ function createFederatedApp(creds, sdk) {
|
|
|
675
676
|
const msg = err instanceof Error ? err.message : String(err);
|
|
676
677
|
throw new Error(`Failed to read certificate file at '${creds.certificatePath}': ${msg}`, { cause: err });
|
|
677
678
|
}
|
|
678
|
-
return createCertificateApp(creds, privateKey,
|
|
679
|
+
return createCertificateApp(creds, privateKey, App, appOptions);
|
|
679
680
|
}
|
|
680
|
-
function createCertificateApp(creds, privateKey,
|
|
681
|
+
function createCertificateApp(creds, privateKey, App, appOptions) {
|
|
681
682
|
let credentialPromise = null;
|
|
682
683
|
const getCredential = async () => {
|
|
683
684
|
if (!credentialPromise) credentialPromise = loadAzureIdentity().then((az) => new az.ClientCertificateCredential(creds.tenantId, creds.appId, { certificate: privateKey }));
|
|
@@ -688,438 +689,32 @@ function createCertificateApp(creds, privateKey, sdk) {
|
|
|
688
689
|
if (!token?.token) throw new Error("Failed to acquire token via certificate credential.");
|
|
689
690
|
return token.token;
|
|
690
691
|
};
|
|
691
|
-
return new
|
|
692
|
+
return new App({
|
|
692
693
|
clientId: creds.appId,
|
|
693
694
|
tenantId: creds.tenantId,
|
|
694
695
|
token: tokenProvider,
|
|
695
|
-
|
|
696
|
-
});
|
|
697
|
-
}
|
|
698
|
-
function createManagedIdentityApp(creds, sdk) {
|
|
699
|
-
let credentialPromise = null;
|
|
700
|
-
const getCredential = async () => {
|
|
701
|
-
if (!credentialPromise) credentialPromise = loadAzureIdentity().then((az) => creds.managedIdentityClientId ? new az.ManagedIdentityCredential(creds.managedIdentityClientId) : new az.ManagedIdentityCredential());
|
|
702
|
-
return credentialPromise;
|
|
703
|
-
};
|
|
704
|
-
const tokenProvider = async (scope) => {
|
|
705
|
-
const token = await (await getCredential()).getToken(scope);
|
|
706
|
-
if (!token?.token) throw new Error("Failed to acquire token via managed identity.");
|
|
707
|
-
return token.token;
|
|
708
|
-
};
|
|
709
|
-
return new sdk.App({
|
|
710
|
-
clientId: creds.appId,
|
|
711
|
-
tenantId: creds.tenantId,
|
|
712
|
-
token: tokenProvider,
|
|
713
|
-
httpServerAdapter: createNoOpHttpServerAdapter()
|
|
696
|
+
...appOptions
|
|
714
697
|
});
|
|
715
698
|
}
|
|
716
699
|
/**
|
|
717
|
-
* Build a token provider that uses the Teams SDK App
|
|
700
|
+
* Build a token provider that uses the Teams SDK App's public tokenManager
|
|
701
|
+
* for token acquisition.
|
|
718
702
|
*/
|
|
719
703
|
function createMSTeamsTokenProvider(app) {
|
|
720
|
-
|
|
721
|
-
if (
|
|
722
|
-
|
|
723
|
-
return token ? String(token) : "";
|
|
724
|
-
}
|
|
725
|
-
const token = await app.getBotToken();
|
|
726
|
-
return token ? String(token) : "";
|
|
727
|
-
} };
|
|
728
|
-
}
|
|
729
|
-
function createBotTokenGetter(app) {
|
|
730
|
-
return async () => {
|
|
731
|
-
const token = await app.getBotToken();
|
|
732
|
-
return token ? String(token) : void 0;
|
|
733
|
-
};
|
|
734
|
-
}
|
|
735
|
-
function createApiClient(sdk, serviceUrl, getToken) {
|
|
736
|
-
const normalizedServiceUrl = normalizeBotFrameworkServiceUrl(serviceUrl);
|
|
737
|
-
return new sdk.Client(normalizedServiceUrl, {
|
|
738
|
-
token: async () => await getToken() || void 0,
|
|
739
|
-
headers: { "User-Agent": buildUserAgent() }
|
|
740
|
-
});
|
|
741
|
-
}
|
|
742
|
-
function normalizeOutboundActivity(textOrActivity) {
|
|
743
|
-
return typeof textOrActivity === "string" ? {
|
|
744
|
-
type: "message",
|
|
745
|
-
text: textOrActivity
|
|
746
|
-
} : textOrActivity;
|
|
747
|
-
}
|
|
748
|
-
function createSendContext(params) {
|
|
749
|
-
const normalizedServiceUrl = tryNormalizeBotFrameworkServiceUrl(params.serviceUrl);
|
|
750
|
-
const apiClient = normalizedServiceUrl && params.conversationId ? createApiClient(params.sdk, normalizedServiceUrl, params.getToken) : void 0;
|
|
751
|
-
return {
|
|
752
|
-
async sendActivity(textOrActivity) {
|
|
753
|
-
const msg = normalizeOutboundActivity(textOrActivity);
|
|
754
|
-
if (params.treatInvokeResponseAsNoop && msg.type === "invokeResponse") return { id: "invokeResponse" };
|
|
755
|
-
if (params.serviceUrl && !normalizedServiceUrl) normalizeBotFrameworkServiceUrl(params.serviceUrl);
|
|
756
|
-
if (!apiClient || !params.conversationId) return { id: "unknown" };
|
|
757
|
-
const existingChannelData = msg.channelData && typeof msg.channelData === "object" ? msg.channelData : void 0;
|
|
758
|
-
const channelData = params.tenantId ? {
|
|
759
|
-
...existingChannelData,
|
|
760
|
-
tenant: { id: params.tenantId }
|
|
761
|
-
} : existingChannelData;
|
|
762
|
-
return await apiClient.conversations.activities(params.conversationId).create({
|
|
763
|
-
type: "message",
|
|
764
|
-
...msg,
|
|
765
|
-
...channelData ? { channelData } : {},
|
|
766
|
-
from: params.bot?.id ? {
|
|
767
|
-
id: params.bot.id,
|
|
768
|
-
name: params.bot.name ?? "",
|
|
769
|
-
role: "bot"
|
|
770
|
-
} : void 0,
|
|
771
|
-
conversation: {
|
|
772
|
-
id: params.conversationId,
|
|
773
|
-
conversationType: params.conversationType ?? "personal",
|
|
774
|
-
...params.tenantId ? { tenantId: params.tenantId } : {}
|
|
775
|
-
},
|
|
776
|
-
...params.recipientId || params.recipientAadObjectId ? { recipient: {
|
|
777
|
-
...params.recipientId ? { id: params.recipientId } : {},
|
|
778
|
-
...params.recipientAadObjectId ? { aadObjectId: params.recipientAadObjectId } : {}
|
|
779
|
-
} } : {},
|
|
780
|
-
...params.replyToActivityId && !msg.replyToId ? { replyToId: params.replyToActivityId } : {}
|
|
781
|
-
});
|
|
782
|
-
},
|
|
783
|
-
async updateActivity(activityUpdate) {
|
|
784
|
-
const nextActivity = activityUpdate;
|
|
785
|
-
const activityId = nextActivity.id;
|
|
786
|
-
if (!activityId) throw new Error("updateActivity requires an activity id");
|
|
787
|
-
if (!params.serviceUrl || !params.conversationId) return { id: "unknown" };
|
|
788
|
-
return await updateActivityViaRest({
|
|
789
|
-
serviceUrl: normalizeBotFrameworkServiceUrl(params.serviceUrl),
|
|
790
|
-
conversationId: params.conversationId,
|
|
791
|
-
activityId,
|
|
792
|
-
activity: nextActivity,
|
|
793
|
-
token: await params.getToken()
|
|
794
|
-
});
|
|
795
|
-
},
|
|
796
|
-
async deleteActivity(activityId) {
|
|
797
|
-
if (!activityId) throw new Error("deleteActivity requires an activity id");
|
|
798
|
-
if (!params.serviceUrl || !params.conversationId) return;
|
|
799
|
-
await deleteActivityViaRest({
|
|
800
|
-
serviceUrl: normalizeBotFrameworkServiceUrl(params.serviceUrl),
|
|
801
|
-
conversationId: params.conversationId,
|
|
802
|
-
activityId,
|
|
803
|
-
token: await params.getToken()
|
|
804
|
-
});
|
|
805
|
-
}
|
|
704
|
+
const tokenToString = (token) => {
|
|
705
|
+
if (token == null) return "";
|
|
706
|
+
return token.toString();
|
|
806
707
|
};
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
const conversationType = (params.activity?.conversation)?.conversationType;
|
|
812
|
-
const replyToActivityId = params.activity?.id;
|
|
813
|
-
const bot = params.activity?.recipient && typeof params.activity.recipient === "object" ? {
|
|
814
|
-
id: params.activity.recipient.id,
|
|
815
|
-
name: params.activity.recipient.name
|
|
816
|
-
} : void 0;
|
|
817
|
-
const sendContext = createSendContext({
|
|
818
|
-
sdk: params.sdk,
|
|
819
|
-
serviceUrl,
|
|
820
|
-
conversationId,
|
|
821
|
-
conversationType,
|
|
822
|
-
bot,
|
|
823
|
-
replyToActivityId,
|
|
824
|
-
getToken: params.getToken,
|
|
825
|
-
treatInvokeResponseAsNoop: true
|
|
826
|
-
});
|
|
827
|
-
return {
|
|
828
|
-
activity: params.activity,
|
|
829
|
-
...sendContext,
|
|
830
|
-
async sendActivities(activities) {
|
|
831
|
-
const results = [];
|
|
832
|
-
for (const activity of activities) results.push(await sendContext.sendActivity(activity));
|
|
833
|
-
return results;
|
|
834
|
-
}
|
|
835
|
-
};
|
|
836
|
-
}
|
|
837
|
-
/**
|
|
838
|
-
* Update an existing activity via the Bot Framework REST API.
|
|
839
|
-
* PUT /v3/conversations/{conversationId}/activities/{activityId}
|
|
840
|
-
*/
|
|
841
|
-
async function updateActivityViaRest(params) {
|
|
842
|
-
const { serviceUrl, conversationId, activityId, activity, token } = params;
|
|
843
|
-
const url = `${normalizeBotFrameworkServiceUrl(serviceUrl)}/v3/conversations/${encodeURIComponent(conversationId)}/activities/${encodeURIComponent(activityId)}`;
|
|
844
|
-
const headers = {
|
|
845
|
-
"Content-Type": "application/json",
|
|
846
|
-
"User-Agent": buildUserAgent()
|
|
847
|
-
};
|
|
848
|
-
if (token) headers.Authorization = `Bearer ${token}`;
|
|
849
|
-
const currentFetch = globalThis.fetch;
|
|
850
|
-
const { response, release } = await fetchWithSsrFGuard({
|
|
851
|
-
url,
|
|
852
|
-
fetchImpl: async (input, guardedInit) => await currentFetch(input, guardedInit),
|
|
853
|
-
init: {
|
|
854
|
-
method: "PUT",
|
|
855
|
-
headers,
|
|
856
|
-
body: JSON.stringify({
|
|
857
|
-
type: "message",
|
|
858
|
-
...activity,
|
|
859
|
-
id: activityId
|
|
860
|
-
})
|
|
861
|
-
},
|
|
862
|
-
auditContext: "msteams-update-activity",
|
|
863
|
-
policy: BOT_FRAMEWORK_SERVICE_URL_SSRF_POLICY
|
|
864
|
-
});
|
|
865
|
-
try {
|
|
866
|
-
if (!response.ok) {
|
|
867
|
-
const body = await response.text().catch(() => "");
|
|
868
|
-
throw Object.assign(/* @__PURE__ */ new Error(`updateActivity failed: HTTP ${response.status} ${body}`), { statusCode: response.status });
|
|
869
|
-
}
|
|
870
|
-
return await response.json().catch(() => ({ id: activityId }));
|
|
871
|
-
} finally {
|
|
872
|
-
await release();
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
/**
|
|
876
|
-
* Delete an existing activity via the Bot Framework REST API.
|
|
877
|
-
* DELETE /v3/conversations/{conversationId}/activities/{activityId}
|
|
878
|
-
*/
|
|
879
|
-
async function deleteActivityViaRest(params) {
|
|
880
|
-
const { serviceUrl, conversationId, activityId, token } = params;
|
|
881
|
-
const url = `${normalizeBotFrameworkServiceUrl(serviceUrl)}/v3/conversations/${encodeURIComponent(conversationId)}/activities/${encodeURIComponent(activityId)}`;
|
|
882
|
-
const headers = { "User-Agent": buildUserAgent() };
|
|
883
|
-
if (token) headers.Authorization = `Bearer ${token}`;
|
|
884
|
-
const currentFetch = globalThis.fetch;
|
|
885
|
-
const { response, release } = await fetchWithSsrFGuard({
|
|
886
|
-
url,
|
|
887
|
-
fetchImpl: async (input, guardedInit) => await currentFetch(input, guardedInit),
|
|
888
|
-
init: {
|
|
889
|
-
method: "DELETE",
|
|
890
|
-
headers
|
|
891
|
-
},
|
|
892
|
-
auditContext: "msteams-delete-activity",
|
|
893
|
-
policy: BOT_FRAMEWORK_SERVICE_URL_SSRF_POLICY
|
|
894
|
-
});
|
|
895
|
-
try {
|
|
896
|
-
if (!response.ok) {
|
|
897
|
-
const body = await response.text().catch(() => "");
|
|
898
|
-
throw Object.assign(/* @__PURE__ */ new Error(`deleteActivity failed: HTTP ${response.status} ${body}`), { statusCode: response.status });
|
|
899
|
-
}
|
|
900
|
-
} finally {
|
|
901
|
-
await release();
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
/**
|
|
905
|
-
* Build a CloudAdapter-compatible adapter using the Teams SDK REST client.
|
|
906
|
-
*
|
|
907
|
-
* This replaces the previous CloudAdapter from @microsoft/agents-hosting.
|
|
908
|
-
* For incoming requests: the App's HTTP server handles JWT validation.
|
|
909
|
-
* For proactive sends: uses the Bot Framework REST API via
|
|
910
|
-
* @microsoft/teams.api Client.
|
|
911
|
-
*/
|
|
912
|
-
function createMSTeamsAdapter(app, sdk) {
|
|
913
|
-
return {
|
|
914
|
-
async continueConversation(_appId, reference, logic) {
|
|
915
|
-
const rawServiceUrl = reference.serviceUrl;
|
|
916
|
-
if (!rawServiceUrl) throw new Error("Missing serviceUrl in conversation reference");
|
|
917
|
-
const serviceUrl = normalizeBotFrameworkServiceUrl(rawServiceUrl);
|
|
918
|
-
const conversationId = reference.conversation?.id;
|
|
919
|
-
if (!conversationId) throw new Error("Missing conversation.id in conversation reference");
|
|
920
|
-
const tenantId = reference.tenantId ?? reference.conversation?.tenantId;
|
|
921
|
-
const recipientAadObjectId = reference.aadObjectId ?? reference.user?.aadObjectId;
|
|
922
|
-
const recipientId = reference.user?.id;
|
|
923
|
-
await logic(createSendContext({
|
|
924
|
-
sdk,
|
|
925
|
-
serviceUrl,
|
|
926
|
-
conversationId,
|
|
927
|
-
conversationType: reference.conversation?.conversationType,
|
|
928
|
-
bot: reference.agent ?? void 0,
|
|
929
|
-
getToken: createBotTokenGetter(app),
|
|
930
|
-
tenantId,
|
|
931
|
-
recipientId,
|
|
932
|
-
recipientAadObjectId
|
|
933
|
-
}));
|
|
934
|
-
},
|
|
935
|
-
async process(req, res, logic) {
|
|
936
|
-
const request = req;
|
|
937
|
-
const response = res;
|
|
938
|
-
const activity = request.body;
|
|
939
|
-
const isInvoke = activity?.type === "invoke";
|
|
940
|
-
try {
|
|
941
|
-
const context = createProcessContext({
|
|
942
|
-
sdk,
|
|
943
|
-
activity,
|
|
944
|
-
getToken: createBotTokenGetter(app)
|
|
945
|
-
});
|
|
946
|
-
if (isInvoke) response.status(200).send();
|
|
947
|
-
await logic(context);
|
|
948
|
-
if (!isInvoke) response.status(200).send();
|
|
949
|
-
} catch (err) {
|
|
950
|
-
if (!isInvoke) response.status(500).send({ error: formatUnknownError(err) });
|
|
951
|
-
}
|
|
952
|
-
},
|
|
953
|
-
async updateActivity(_context, _activity) {},
|
|
954
|
-
async deleteActivity(_context, _reference) {}
|
|
955
|
-
};
|
|
956
|
-
}
|
|
957
|
-
async function loadMSTeamsSdkWithAuth(creds) {
|
|
958
|
-
const sdk = await loadMSTeamsSdk();
|
|
959
|
-
return {
|
|
960
|
-
sdk,
|
|
961
|
-
app: await createMSTeamsApp(creds, sdk)
|
|
962
|
-
};
|
|
963
|
-
}
|
|
964
|
-
/**
|
|
965
|
-
* Bot Framework issuer → JWKS mapping.
|
|
966
|
-
* During Microsoft's transition, inbound service tokens can be signed by either
|
|
967
|
-
* the legacy Bot Framework issuer or the Entra issuer. Each gets its own JWKS
|
|
968
|
-
* endpoint so we verify signatures with the correct key set.
|
|
969
|
-
*/
|
|
970
|
-
const BOT_FRAMEWORK_ISSUERS = [
|
|
971
|
-
{
|
|
972
|
-
issuer: "https://api.botframework.com",
|
|
973
|
-
jwksUri: "https://login.botframework.com/v1/.well-known/keys"
|
|
974
|
-
},
|
|
975
|
-
{
|
|
976
|
-
issuer: (tenantId) => `https://login.microsoftonline.com/${tenantId}/v2.0`,
|
|
977
|
-
jwksUri: "https://login.microsoftonline.com/common/discovery/v2.0/keys"
|
|
978
|
-
},
|
|
979
|
-
{
|
|
980
|
-
issuer: (tenantId) => `https://sts.windows.net/${tenantId}/`,
|
|
981
|
-
jwksUri: "https://login.microsoftonline.com/common/discovery/v2.0/keys"
|
|
982
|
-
}
|
|
983
|
-
];
|
|
984
|
-
const BOT_FRAMEWORK_GLOBAL_AUDIENCE = "https://api.botframework.com";
|
|
985
|
-
function isJwtPayloadObject(value) {
|
|
986
|
-
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
987
|
-
}
|
|
988
|
-
function getAudienceClaims(payload) {
|
|
989
|
-
if (!isJwtPayloadObject(payload)) return [];
|
|
990
|
-
const audience = payload.aud;
|
|
991
|
-
if (typeof audience === "string") {
|
|
992
|
-
const trimmed = audience.trim();
|
|
993
|
-
return trimmed ? [trimmed] : [];
|
|
994
|
-
}
|
|
995
|
-
if (Array.isArray(audience)) return normalizeStringEntries(audience.filter((value) => typeof value === "string"));
|
|
996
|
-
return [];
|
|
997
|
-
}
|
|
998
|
-
function normalizeBotIdentityClaim(value) {
|
|
999
|
-
if (typeof value !== "string") return null;
|
|
1000
|
-
return value.trim().toLowerCase() || null;
|
|
1001
|
-
}
|
|
1002
|
-
function hasExpectedBotIdentity(payload, expectedAppId) {
|
|
1003
|
-
if (!isJwtPayloadObject(payload)) return false;
|
|
1004
|
-
const expected = normalizeBotIdentityClaim(expectedAppId);
|
|
1005
|
-
if (!expected) return false;
|
|
1006
|
-
return normalizeBotIdentityClaim(payload.appid) === expected || normalizeBotIdentityClaim(payload.azp) === expected;
|
|
1007
|
-
}
|
|
1008
|
-
let botFrameworkJwtDepsPromise = null;
|
|
1009
|
-
function hasDefaultExport(value) {
|
|
1010
|
-
return !!value && typeof value === "object" && "default" in value;
|
|
1011
|
-
}
|
|
1012
|
-
function isJsonwebtokenRuntime(value) {
|
|
1013
|
-
return !!value && typeof value === "object" && typeof value.decode === "function" && typeof value.verify === "function";
|
|
1014
|
-
}
|
|
1015
|
-
function loadJsonwebtokenRuntime(jwtModule) {
|
|
1016
|
-
const jwt = hasDefaultExport(jwtModule) ? jwtModule.default ?? jwtModule : jwtModule;
|
|
1017
|
-
if (!isJsonwebtokenRuntime(jwt)) throw new Error("jsonwebtoken did not export decode/verify");
|
|
1018
|
-
return jwt;
|
|
1019
|
-
}
|
|
1020
|
-
function isJwksClientRuntime(value) {
|
|
1021
|
-
return typeof value === "function";
|
|
1022
|
-
}
|
|
1023
|
-
function loadJwksClientRuntime(jwksModule) {
|
|
1024
|
-
const direct = jwksModule && typeof jwksModule === "object" ? jwksModule.JwksClient : void 0;
|
|
1025
|
-
const fallback = hasDefaultExport(jwksModule) && jwksModule.default && typeof jwksModule.default === "object" ? jwksModule.default.JwksClient : void 0;
|
|
1026
|
-
const JwksClient = direct ?? fallback;
|
|
1027
|
-
if (!isJwksClientRuntime(JwksClient)) throw new Error("jwks-rsa did not export JwksClient");
|
|
1028
|
-
return JwksClient;
|
|
1029
|
-
}
|
|
1030
|
-
async function loadBotFrameworkJwtDeps() {
|
|
1031
|
-
botFrameworkJwtDepsPromise ??= Promise.all([import("jsonwebtoken"), import("jwks-rsa")]).then(([jwtModule, jwksModule]) => {
|
|
1032
|
-
return {
|
|
1033
|
-
jwt: loadJsonwebtokenRuntime(jwtModule),
|
|
1034
|
-
JwksClient: loadJwksClientRuntime(jwksModule)
|
|
1035
|
-
};
|
|
1036
|
-
});
|
|
1037
|
-
return botFrameworkJwtDepsPromise;
|
|
1038
|
-
}
|
|
1039
|
-
/**
|
|
1040
|
-
* Create a Bot Framework JWT validator using jsonwebtoken + jwks-rsa directly.
|
|
1041
|
-
*
|
|
1042
|
-
* The @microsoft/teams.apps JwtValidator hardcodes audience to [clientId, api://clientId],
|
|
1043
|
-
* which rejects valid Bot Framework tokens that carry aud: "https://api.botframework.com".
|
|
1044
|
-
* This implementation uses jsonwebtoken directly with the correct audience list, matching
|
|
1045
|
-
* the behavior of the legacy @microsoft/agents-hosting authorizeJWT middleware.
|
|
1046
|
-
*
|
|
1047
|
-
* Security invariants:
|
|
1048
|
-
* - signature verification via issuer-specific JWKS endpoints
|
|
1049
|
-
* - audience validation: appId, api://appId, and https://api.botframework.com
|
|
1050
|
-
* - issuer validation: strict allowlist (Bot Framework + tenant-scoped Entra)
|
|
1051
|
-
* - expiration validation with 5-minute clock tolerance
|
|
1052
|
-
*/
|
|
1053
|
-
async function createBotFrameworkJwtValidator(creds) {
|
|
1054
|
-
const { jwt, JwksClient } = await loadBotFrameworkJwtDeps();
|
|
1055
|
-
const allowedAudiences = [
|
|
1056
|
-
creds.appId,
|
|
1057
|
-
`api://${creds.appId}`,
|
|
1058
|
-
BOT_FRAMEWORK_GLOBAL_AUDIENCE
|
|
1059
|
-
];
|
|
1060
|
-
const allowedIssuers = BOT_FRAMEWORK_ISSUERS.map((entry) => typeof entry.issuer === "function" ? entry.issuer(creds.tenantId) : entry.issuer);
|
|
1061
|
-
const jwksClients = /* @__PURE__ */ new Map();
|
|
1062
|
-
function getJwksClient(uri) {
|
|
1063
|
-
let client = jwksClients.get(uri);
|
|
1064
|
-
if (!client) {
|
|
1065
|
-
client = new JwksClient({
|
|
1066
|
-
jwksUri: uri,
|
|
1067
|
-
cache: true,
|
|
1068
|
-
cacheMaxAge: 6e5,
|
|
1069
|
-
rateLimit: true
|
|
1070
|
-
});
|
|
1071
|
-
jwksClients.set(uri, client);
|
|
1072
|
-
}
|
|
1073
|
-
return client;
|
|
1074
|
-
}
|
|
1075
|
-
/** Decode the token header without verification to determine the kid. */
|
|
1076
|
-
function decodeHeader(token) {
|
|
1077
|
-
const decoded = jwt.decode(token, { complete: true });
|
|
1078
|
-
return decoded && typeof decoded === "object" ? decoded.header : null;
|
|
1079
|
-
}
|
|
1080
|
-
/** Resolve the issuer entry for a token's issuer claim (pre-verification). */
|
|
1081
|
-
function resolveIssuerEntry(issuerClaim) {
|
|
1082
|
-
if (!issuerClaim) return;
|
|
1083
|
-
return BOT_FRAMEWORK_ISSUERS.find((entry) => {
|
|
1084
|
-
return (typeof entry.issuer === "function" ? entry.issuer(creds.tenantId) : entry.issuer) === issuerClaim;
|
|
1085
|
-
});
|
|
1086
|
-
}
|
|
1087
|
-
return { async validate(authHeader, _serviceUrl) {
|
|
1088
|
-
const token = authHeader.startsWith("Bearer ") ? authHeader.slice(7) : authHeader;
|
|
1089
|
-
if (!token) return false;
|
|
1090
|
-
const header = decodeHeader(token);
|
|
1091
|
-
const unverifiedPayload = jwt.decode(token);
|
|
1092
|
-
if (!header?.kid || !isJwtPayloadObject(unverifiedPayload) || typeof unverifiedPayload.iss !== "string") return false;
|
|
1093
|
-
const issuerEntry = resolveIssuerEntry(unverifiedPayload.iss);
|
|
1094
|
-
if (!issuerEntry) return false;
|
|
1095
|
-
const client = getJwksClient(issuerEntry.jwksUri);
|
|
1096
|
-
try {
|
|
1097
|
-
const publicKey = (await client.getSigningKey(header.kid)).getPublicKey();
|
|
1098
|
-
const verifiedPayload = jwt.verify(token, publicKey, {
|
|
1099
|
-
audience: allowedAudiences,
|
|
1100
|
-
issuer: allowedIssuers,
|
|
1101
|
-
algorithms: ["RS256"],
|
|
1102
|
-
clockTolerance: 300
|
|
1103
|
-
});
|
|
1104
|
-
if (!isJwtPayloadObject(verifiedPayload)) return false;
|
|
1105
|
-
if (getAudienceClaims(verifiedPayload).includes(BOT_FRAMEWORK_GLOBAL_AUDIENCE) && !hasExpectedBotIdentity(verifiedPayload, creds.appId)) return false;
|
|
1106
|
-
return true;
|
|
1107
|
-
} catch (err) {
|
|
1108
|
-
if (isJwksNetworkError(err)) throw err;
|
|
1109
|
-
return false;
|
|
708
|
+
return { async getAccessToken(scope) {
|
|
709
|
+
if (scope.includes("graph.microsoft.com") || scope.includes("graph.microsoft.us") || scope.includes("microsoftgraph.chinacloudapi.cn")) {
|
|
710
|
+
if (app.cloud?.graphScope?.includes("microsoftgraph.chinacloudapi.cn")) throw new Error("Microsoft Teams Graph operations are not supported for channels.msteams.cloud=China until Graph requests are routed through the Azure China Graph endpoint.");
|
|
711
|
+
return tokenToString(await app.tokenManager.getGraphToken());
|
|
1110
712
|
}
|
|
713
|
+
return tokenToString(await app.tokenManager.getBotToken());
|
|
1111
714
|
} };
|
|
1112
715
|
}
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
* the JWKS endpoint (DNS resolution, connection refused, TLS handshake, etc.)
|
|
1116
|
-
* rather than from token verification logic.
|
|
1117
|
-
*/
|
|
1118
|
-
function isJwksNetworkError(err) {
|
|
1119
|
-
if (!(err instanceof Error)) return false;
|
|
1120
|
-
const code = err.code;
|
|
1121
|
-
if (code === "ECONNREFUSED" || code === "ENOTFOUND" || code === "EHOSTUNREACH" || code === "ETIMEDOUT" || code === "ECONNRESET") return true;
|
|
1122
|
-
return /jwks|key fetch|getSigningKey/i.test(err.message) && /network|fetch|connect/i.test(err.message);
|
|
716
|
+
async function loadMSTeamsSdkWithAuth(creds, options) {
|
|
717
|
+
return { app: await createMSTeamsApp(creds, options) };
|
|
1123
718
|
}
|
|
1124
719
|
//#endregion
|
|
1125
720
|
//#region extensions/msteams/src/token-response.ts
|
|
@@ -1261,10 +856,7 @@ async function requestGraph(params) {
|
|
|
1261
856
|
auditContext: "msteams.graph"
|
|
1262
857
|
});
|
|
1263
858
|
try {
|
|
1264
|
-
if (!response.ok) {
|
|
1265
|
-
const text = await response.text().catch(() => "");
|
|
1266
|
-
throw new Error(`${params.errorPrefix ?? "Graph"} ${params.path} failed (${response.status}): ${text || "unknown error"}`);
|
|
1267
|
-
}
|
|
859
|
+
if (!response.ok) throw await createMSTeamsHttpError(response, `${params.errorPrefix ?? "Graph"} ${params.path} failed`);
|
|
1268
860
|
const body = NULL_BODY_STATUSES.has(response.status) ? null : await response.arrayBuffer();
|
|
1269
861
|
return new Response(body, {
|
|
1270
862
|
status: response.status,
|
|
@@ -1303,10 +895,7 @@ async function fetchGraphAbsoluteUrl(params) {
|
|
|
1303
895
|
auditContext: "msteams.graph.absolute"
|
|
1304
896
|
});
|
|
1305
897
|
try {
|
|
1306
|
-
if (!response.ok) {
|
|
1307
|
-
const text = await response.text().catch(() => "");
|
|
1308
|
-
throw new Error(`Graph ${params.url} failed (${response.status}): ${text || "unknown error"}`);
|
|
1309
|
-
}
|
|
898
|
+
if (!response.ok) throw await createMSTeamsHttpError(response, `Graph ${params.url} failed`);
|
|
1310
899
|
return await readProviderJsonResponse(response, `Graph ${params.url} failed`);
|
|
1311
900
|
} finally {
|
|
1312
901
|
await release();
|
|
@@ -1352,6 +941,7 @@ async function resolveGraphToken(cfg, options) {
|
|
|
1352
941
|
const msteamsCfg = cfg?.channels?.msteams;
|
|
1353
942
|
const creds = resolveMSTeamsCredentials(msteamsCfg);
|
|
1354
943
|
if (!creds) throw new Error("MS Teams credentials missing");
|
|
944
|
+
if (msteamsCfg?.cloud === "China") throw new Error("Microsoft Teams Graph operations are not supported for channels.msteams.cloud=China until Graph requests are routed through the Azure China Graph endpoint.");
|
|
1355
945
|
if (options?.preferDelegated && msteamsCfg?.delegatedAuth?.enabled && creds.type === "secret") {
|
|
1356
946
|
const delegated = await resolveDelegatedAccessToken({
|
|
1357
947
|
tenantId: creds.tenantId,
|
|
@@ -1360,7 +950,7 @@ async function resolveGraphToken(cfg, options) {
|
|
|
1360
950
|
});
|
|
1361
951
|
if (delegated) return delegated;
|
|
1362
952
|
}
|
|
1363
|
-
const { app } = await loadMSTeamsSdkWithAuth(creds);
|
|
953
|
+
const { app } = await loadMSTeamsSdkWithAuth(creds, resolveMSTeamsSdkCloudOptions(msteamsCfg));
|
|
1364
954
|
const accessToken = readAccessToken(await createMSTeamsTokenProvider(app).getAccessToken("https://graph.microsoft.com"));
|
|
1365
955
|
if (!accessToken) throw new Error("MS Teams graph token unavailable");
|
|
1366
956
|
return accessToken;
|
|
@@ -1441,4 +1031,168 @@ async function searchGraphUsers(params) {
|
|
|
1441
1031
|
})).value ?? [];
|
|
1442
1032
|
}
|
|
1443
1033
|
//#endregion
|
|
1444
|
-
|
|
1034
|
+
//#region extensions/msteams/src/errors.ts
|
|
1035
|
+
function formatUnknownError(err) {
|
|
1036
|
+
if (err instanceof Error) return err.message;
|
|
1037
|
+
if (typeof err === "string") return err;
|
|
1038
|
+
if (err === null) return "null";
|
|
1039
|
+
if (err === void 0) return "undefined";
|
|
1040
|
+
if (typeof err === "number" || typeof err === "boolean" || typeof err === "bigint") return String(err);
|
|
1041
|
+
if (typeof err === "symbol") return err.description ?? err.toString();
|
|
1042
|
+
if (typeof err === "function") return err.name ? `[function ${err.name}]` : "[function]";
|
|
1043
|
+
try {
|
|
1044
|
+
return JSON.stringify(err) ?? "unknown error";
|
|
1045
|
+
} catch {
|
|
1046
|
+
return "unknown error";
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
function extractStatusCode(err) {
|
|
1050
|
+
if (!isRecord(err)) return null;
|
|
1051
|
+
const parseStatusCode = (value) => {
|
|
1052
|
+
if (typeof value === "number") return Number.isInteger(value) && value >= 100 && value <= 599 ? value : null;
|
|
1053
|
+
if (typeof value === "string") {
|
|
1054
|
+
const trimmed = value.trim();
|
|
1055
|
+
if (!/^\d{3}$/.test(trimmed)) return null;
|
|
1056
|
+
const parsed = Number(trimmed);
|
|
1057
|
+
return parsed >= 100 && parsed <= 599 ? parsed : null;
|
|
1058
|
+
}
|
|
1059
|
+
return null;
|
|
1060
|
+
};
|
|
1061
|
+
const directStatus = parseStatusCode(err.statusCode ?? err.status);
|
|
1062
|
+
if (directStatus !== null) return directStatus;
|
|
1063
|
+
const response = err.response;
|
|
1064
|
+
if (isRecord(response)) {
|
|
1065
|
+
const responseStatus = parseStatusCode(response.status);
|
|
1066
|
+
if (responseStatus !== null) return responseStatus;
|
|
1067
|
+
}
|
|
1068
|
+
return null;
|
|
1069
|
+
}
|
|
1070
|
+
function extractErrorCode(err) {
|
|
1071
|
+
if (!isRecord(err)) return null;
|
|
1072
|
+
const direct = err.code;
|
|
1073
|
+
if (typeof direct === "string" && direct.trim()) return direct;
|
|
1074
|
+
const response = err.response;
|
|
1075
|
+
if (!isRecord(response)) return null;
|
|
1076
|
+
const body = response.body;
|
|
1077
|
+
if (isRecord(body)) {
|
|
1078
|
+
const error = body.error;
|
|
1079
|
+
if (isRecord(error) && typeof error.code === "string" && error.code.trim()) return error.code;
|
|
1080
|
+
}
|
|
1081
|
+
return null;
|
|
1082
|
+
}
|
|
1083
|
+
function extractRetryAfterMs(err) {
|
|
1084
|
+
if (!isRecord(err)) return null;
|
|
1085
|
+
const direct = err.retryAfterMs ?? err.retry_after_ms;
|
|
1086
|
+
if (typeof direct === "number" && Number.isFinite(direct) && direct >= 0) return direct;
|
|
1087
|
+
const retryAfter = err.retryAfter ?? err.retry_after;
|
|
1088
|
+
if (typeof retryAfter === "number" && Number.isFinite(retryAfter)) return retryAfter >= 0 ? retryAfter * 1e3 : null;
|
|
1089
|
+
if (typeof retryAfter === "string") {
|
|
1090
|
+
const parsed = parseNonNegativeRetryAfterSeconds(retryAfter);
|
|
1091
|
+
if (Number.isFinite(parsed) && parsed >= 0) return parsed * 1e3;
|
|
1092
|
+
}
|
|
1093
|
+
const response = err.response;
|
|
1094
|
+
if (!isRecord(response)) return null;
|
|
1095
|
+
const headers = response.headers;
|
|
1096
|
+
if (!headers) return null;
|
|
1097
|
+
if (isRecord(headers)) {
|
|
1098
|
+
const raw = headers["retry-after"] ?? headers["Retry-After"];
|
|
1099
|
+
if (typeof raw === "string") {
|
|
1100
|
+
const parsed = parseNonNegativeRetryAfterSeconds(raw);
|
|
1101
|
+
if (Number.isFinite(parsed) && parsed >= 0) return parsed * 1e3;
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
if (typeof headers === "object" && headers !== null && "get" in headers && typeof headers.get === "function") {
|
|
1105
|
+
const raw = headers.get("retry-after");
|
|
1106
|
+
if (raw) {
|
|
1107
|
+
const parsed = parseNonNegativeRetryAfterSeconds(raw);
|
|
1108
|
+
if (Number.isFinite(parsed) && parsed >= 0) return parsed * 1e3;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
return null;
|
|
1112
|
+
}
|
|
1113
|
+
function parseNonNegativeRetryAfterSeconds(raw) {
|
|
1114
|
+
const trimmed = raw.trim();
|
|
1115
|
+
if (!/^\d+(?:\.\d+)?$/.test(trimmed)) return NaN;
|
|
1116
|
+
return Number(trimmed);
|
|
1117
|
+
}
|
|
1118
|
+
/**
|
|
1119
|
+
* Classify outbound send errors for safe retries and actionable logs.
|
|
1120
|
+
*
|
|
1121
|
+
* Important: We only mark errors as retryable when we have an explicit HTTP
|
|
1122
|
+
* status code that indicates the message was not accepted (e.g. 429, 5xx).
|
|
1123
|
+
* For transport-level errors where delivery is ambiguous, we prefer to avoid
|
|
1124
|
+
* retries to reduce the chance of duplicate posts.
|
|
1125
|
+
*/
|
|
1126
|
+
function classifyMSTeamsSendError(err) {
|
|
1127
|
+
const statusCode = extractStatusCode(err);
|
|
1128
|
+
const retryAfterMs = extractRetryAfterMs(err);
|
|
1129
|
+
const errorCode = extractErrorCode(err) ?? void 0;
|
|
1130
|
+
if (statusCode === 401) return {
|
|
1131
|
+
kind: "auth",
|
|
1132
|
+
statusCode,
|
|
1133
|
+
errorCode
|
|
1134
|
+
};
|
|
1135
|
+
if (statusCode === 403) {
|
|
1136
|
+
if (errorCode === "ContentStreamNotAllowed") return {
|
|
1137
|
+
kind: "permanent",
|
|
1138
|
+
statusCode,
|
|
1139
|
+
errorCode
|
|
1140
|
+
};
|
|
1141
|
+
return {
|
|
1142
|
+
kind: "auth",
|
|
1143
|
+
statusCode,
|
|
1144
|
+
errorCode
|
|
1145
|
+
};
|
|
1146
|
+
}
|
|
1147
|
+
if (statusCode === 429) return {
|
|
1148
|
+
kind: "throttled",
|
|
1149
|
+
statusCode,
|
|
1150
|
+
retryAfterMs: retryAfterMs ?? void 0,
|
|
1151
|
+
errorCode
|
|
1152
|
+
};
|
|
1153
|
+
if (statusCode === 408 || statusCode != null && statusCode >= 500) return {
|
|
1154
|
+
kind: "transient",
|
|
1155
|
+
statusCode,
|
|
1156
|
+
retryAfterMs: retryAfterMs ?? void 0,
|
|
1157
|
+
errorCode
|
|
1158
|
+
};
|
|
1159
|
+
if (statusCode != null && statusCode >= 400) return {
|
|
1160
|
+
kind: "permanent",
|
|
1161
|
+
statusCode,
|
|
1162
|
+
errorCode
|
|
1163
|
+
};
|
|
1164
|
+
if (statusCode == null) {
|
|
1165
|
+
const networkCode = isRecord(err) && typeof err.code === "string" ? err.code : null;
|
|
1166
|
+
if (networkCode === "ECONNREFUSED" || networkCode === "ENOTFOUND" || networkCode === "EHOSTUNREACH" || networkCode === "ETIMEDOUT" || networkCode === "ECONNRESET") return {
|
|
1167
|
+
kind: "network",
|
|
1168
|
+
errorCode: networkCode
|
|
1169
|
+
};
|
|
1170
|
+
}
|
|
1171
|
+
return {
|
|
1172
|
+
kind: "unknown",
|
|
1173
|
+
statusCode: statusCode ?? void 0,
|
|
1174
|
+
retryAfterMs: retryAfterMs ?? void 0,
|
|
1175
|
+
errorCode
|
|
1176
|
+
};
|
|
1177
|
+
}
|
|
1178
|
+
/**
|
|
1179
|
+
* Detect whether an error is caused by a revoked Proxy.
|
|
1180
|
+
*
|
|
1181
|
+
* The Bot Framework SDK wraps TurnContext in a Proxy that is revoked once the
|
|
1182
|
+
* turn handler returns. Any later access (e.g. from a debounced callback)
|
|
1183
|
+
* throws a TypeError whose message contains the distinctive "proxy that has
|
|
1184
|
+
* been revoked" string.
|
|
1185
|
+
*/
|
|
1186
|
+
function isRevokedProxyError(err) {
|
|
1187
|
+
if (!(err instanceof TypeError)) return false;
|
|
1188
|
+
return /proxy that has been revoked/i.test(err.message);
|
|
1189
|
+
}
|
|
1190
|
+
function formatMSTeamsSendErrorHint(classification) {
|
|
1191
|
+
if (classification.kind === "auth") return "check msteams appId/appPassword/tenantId (or env vars MSTEAMS_APP_ID/MSTEAMS_APP_PASSWORD/MSTEAMS_TENANT_ID)";
|
|
1192
|
+
if (classification.errorCode === "ContentStreamNotAllowed") return "Teams expired the content stream; stop streaming earlier and fall back to normal message delivery";
|
|
1193
|
+
if (classification.kind === "throttled") return "Teams throttled the bot; backing off may help";
|
|
1194
|
+
if (classification.kind === "transient") return "transient Teams/Bot Framework error; retry may succeed";
|
|
1195
|
+
if (classification.kind === "network") return "transport-level failure sending reply to Teams Bot Connector (smba.trafficmanager.net) — check egress firewall rules allow outbound HTTPS to smba.trafficmanager.net";
|
|
1196
|
+
}
|
|
1197
|
+
//#endregion
|
|
1198
|
+
export { safeFetchWithPolicy as $, isAllowedBotFrameworkServiceUrl as A, estimateBase64DecodedBytes as B, readAccessToken as C, buildUserAgent as D, loadMSTeamsSdkWithAuth as E, ATTACHMENT_TAG_RE as F, isLikelyImageAttachment as G, extractInlineImageCandidates as H, GRAPH_ROOT as I, normalizeContentType as J, isRecord$1 as K, IMG_SRC_RE as L, tryNormalizeBotFrameworkServiceUrl as M, resolveMSTeamsSdkCloudOptions as N, ensureUserAgentHeader as O, validateMSTeamsProactiveServiceUrlBoundary as P, resolveRequestUrl as Q, applyAuthorizationHeaderForUrl as R, normalizeSecretInputString as S, createMSTeamsTokenProvider as T, inferPlaceholder as U, extractHtmlFromAttachment as V, isDownloadableAttachment as W, resolveAttachmentFetchPolicy as X, readNestedString as Y, resolveMediaSsrfPolicy as Z, hasConfiguredMSTeamsCredentials as _, searchGraphUsers as a, saveDelegatedTokens as b, fetchGraphAbsoluteUrl as c, listTeamsByName as d, safeHostForUrl as et, normalizeQuery as f, resolveGraphToken as g, postGraphJson as h, isRevokedProxyError as i, normalizeBotFrameworkServiceUrl as j, describeBotFrameworkServiceUrlHost as k, fetchGraphJson as l, postGraphBetaJson as m, formatMSTeamsSendErrorHint as n, deleteGraphRequest as o, patchGraphJson as p, isUrlAllowed as q, formatUnknownError as r, escapeOData as s, classifyMSTeamsSendError as t, tryBuildGraphSharesUrlForSharedLink as tt, listChannelsForTeam as u, loadDelegatedTokens as v, createMSTeamsExpressAdapter as w, resolveMSTeamsStorePath as x, resolveMSTeamsCredentials as y, encodeGraphShareId as z };
|