@decaf-ts/integrations 0.11.0 → 0.14.0

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.
Files changed (610) hide show
  1. package/README.md +164 -0
  2. package/dist/integrations.cjs +1 -1
  3. package/dist/integrations.cjs.map +1 -1
  4. package/dist/integrations.js +1 -1
  5. package/dist/integrations.js.map +1 -1
  6. package/docker/mailpit-compose.yml +17 -0
  7. package/docker/postgres-compose.yml +26 -0
  8. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs +12 -23
  9. package/lib/cjs/blob/azure/AzureBlobStoreService.cjs.map +1 -1
  10. package/lib/cjs/blob/core/BlobStoreService.cjs +26 -25
  11. package/lib/cjs/blob/core/BlobStoreService.cjs.map +1 -1
  12. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs +12 -23
  13. package/lib/cjs/blob/gcp/GcsBlobStoreService.cjs.map +1 -1
  14. package/lib/cjs/blob/s3/S3BlobStoreService.cjs +11 -16
  15. package/lib/cjs/blob/s3/S3BlobStoreService.cjs.map +1 -1
  16. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs +14 -16
  17. package/lib/cjs/blob/s3/S3CompatibleBlobStoreService.cjs.map +1 -1
  18. package/lib/cjs/calendar/environment.cjs +48 -0
  19. package/lib/cjs/calendar/environment.cjs.map +1 -0
  20. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs +338 -0
  21. package/lib/cjs/calendar/google-calendar/GoogleCalendarService.cjs.map +1 -0
  22. package/lib/cjs/calendar/google-calendar/index.cjs +20 -0
  23. package/lib/cjs/calendar/google-calendar/index.cjs.map +1 -0
  24. package/lib/cjs/comms/discord/DiscordService.cjs +318 -0
  25. package/lib/cjs/comms/discord/DiscordService.cjs.map +1 -0
  26. package/lib/cjs/comms/discord/index.cjs +19 -0
  27. package/lib/cjs/comms/discord/index.cjs.map +1 -0
  28. package/lib/cjs/comms/email/EmailService.cjs +376 -0
  29. package/lib/cjs/comms/email/EmailService.cjs.map +1 -0
  30. package/lib/cjs/comms/email/index.cjs +29 -0
  31. package/lib/cjs/comms/email/index.cjs.map +1 -0
  32. package/lib/cjs/comms/email/mime.cjs +225 -0
  33. package/lib/cjs/comms/email/mime.cjs.map +1 -0
  34. package/lib/cjs/comms/email/smtp.cjs +204 -0
  35. package/lib/cjs/comms/email/smtp.cjs.map +1 -0
  36. package/lib/cjs/comms/environment.cjs +79 -0
  37. package/lib/cjs/comms/environment.cjs.map +1 -0
  38. package/lib/cjs/comms/gmail/GmailService.cjs +235 -0
  39. package/lib/cjs/comms/gmail/GmailService.cjs.map +1 -0
  40. package/lib/cjs/comms/gmail/index.cjs +24 -0
  41. package/lib/cjs/comms/gmail/index.cjs.map +1 -0
  42. package/lib/cjs/comms/index.cjs +34 -0
  43. package/lib/cjs/comms/index.cjs.map +1 -0
  44. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs +325 -0
  45. package/lib/cjs/comms/outlook/MicrosoftOutlookService.cjs.map +1 -0
  46. package/lib/cjs/comms/outlook/index.cjs +19 -0
  47. package/lib/cjs/comms/outlook/index.cjs.map +1 -0
  48. package/lib/cjs/comms/slack/SlackService.cjs +264 -0
  49. package/lib/cjs/comms/slack/SlackService.cjs.map +1 -0
  50. package/lib/cjs/comms/slack/index.cjs +24 -0
  51. package/lib/cjs/comms/slack/index.cjs.map +1 -0
  52. package/lib/cjs/comms/teams/TeamsService.cjs +212 -0
  53. package/lib/cjs/comms/teams/TeamsService.cjs.map +1 -0
  54. package/lib/cjs/comms/teams/index.cjs +24 -0
  55. package/lib/cjs/comms/teams/index.cjs.map +1 -0
  56. package/lib/cjs/comms/telegram/TelegramService.cjs +196 -0
  57. package/lib/cjs/comms/telegram/TelegramService.cjs.map +1 -0
  58. package/lib/cjs/comms/telegram/index.cjs +24 -0
  59. package/lib/cjs/comms/telegram/index.cjs.map +1 -0
  60. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs +274 -0
  61. package/lib/cjs/comms/whatsapp/WhatsAppService.cjs.map +1 -0
  62. package/lib/cjs/comms/whatsapp/index.cjs +19 -0
  63. package/lib/cjs/comms/whatsapp/index.cjs.map +1 -0
  64. package/lib/cjs/devops/environment.cjs +43 -0
  65. package/lib/cjs/devops/environment.cjs.map +1 -0
  66. package/lib/cjs/devops/github/GithubService.cjs +302 -0
  67. package/lib/cjs/devops/github/GithubService.cjs.map +1 -0
  68. package/lib/cjs/devops/github/index.cjs +24 -0
  69. package/lib/cjs/devops/github/index.cjs.map +1 -0
  70. package/lib/cjs/devops/gitlab/GitlabService.cjs +282 -0
  71. package/lib/cjs/devops/gitlab/GitlabService.cjs.map +1 -0
  72. package/lib/cjs/devops/gitlab/index.cjs +24 -0
  73. package/lib/cjs/devops/gitlab/index.cjs.map +1 -0
  74. package/lib/cjs/devops/index.cjs +28 -0
  75. package/lib/cjs/devops/index.cjs.map +1 -0
  76. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs +2 -0
  77. package/lib/cjs/feature-flags/models/FeatureFlag.model.cjs.map +1 -1
  78. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs +2 -0
  79. package/lib/cjs/feature-flags/models/FeatureFlagAccess.model.cjs.map +1 -1
  80. package/lib/cjs/index.cjs +3 -3
  81. package/lib/cjs/io/airtable/AirtableService.cjs +266 -0
  82. package/lib/cjs/io/airtable/AirtableService.cjs.map +1 -0
  83. package/lib/cjs/io/airtable/index.cjs +24 -0
  84. package/lib/cjs/io/airtable/index.cjs.map +1 -0
  85. package/lib/cjs/io/confluence/ConfluenceService.cjs +317 -0
  86. package/lib/cjs/io/confluence/ConfluenceService.cjs.map +1 -0
  87. package/lib/cjs/io/confluence/index.cjs +19 -0
  88. package/lib/cjs/io/confluence/index.cjs.map +1 -0
  89. package/lib/cjs/io/environment.cjs +74 -0
  90. package/lib/cjs/io/environment.cjs.map +1 -0
  91. package/lib/cjs/io/google-docs/GoogleDocsService.cjs +275 -0
  92. package/lib/cjs/io/google-docs/GoogleDocsService.cjs.map +1 -0
  93. package/lib/cjs/io/google-docs/index.cjs +19 -0
  94. package/lib/cjs/io/google-docs/index.cjs.map +1 -0
  95. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs +288 -0
  96. package/lib/cjs/io/google-sheets/GoogleSheetsService.cjs.map +1 -0
  97. package/lib/cjs/io/google-sheets/index.cjs +24 -0
  98. package/lib/cjs/io/google-sheets/index.cjs.map +1 -0
  99. package/lib/cjs/io/graphql/GraphqlService.cjs +143 -0
  100. package/lib/cjs/io/graphql/GraphqlService.cjs.map +1 -0
  101. package/lib/cjs/io/graphql/index.cjs +24 -0
  102. package/lib/cjs/io/graphql/index.cjs.map +1 -0
  103. package/lib/cjs/io/index.cjs +35 -0
  104. package/lib/cjs/io/index.cjs.map +1 -0
  105. package/lib/cjs/io/jira/JiraService.cjs +354 -0
  106. package/lib/cjs/io/jira/JiraService.cjs.map +1 -0
  107. package/lib/cjs/io/jira/index.cjs +19 -0
  108. package/lib/cjs/io/jira/index.cjs.map +1 -0
  109. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs +253 -0
  110. package/lib/cjs/io/microsoft-excel/MicrosoftExcelService.cjs.map +1 -0
  111. package/lib/cjs/io/microsoft-excel/index.cjs +19 -0
  112. package/lib/cjs/io/microsoft-excel/index.cjs.map +1 -0
  113. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs +261 -0
  114. package/lib/cjs/io/microsoft-sharepoint/MicrosoftSharePointService.cjs.map +1 -0
  115. package/lib/cjs/io/microsoft-sharepoint/index.cjs +19 -0
  116. package/lib/cjs/io/microsoft-sharepoint/index.cjs.map +1 -0
  117. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs +205 -0
  118. package/lib/cjs/io/spreadsheet/SpreadsheetService.cjs.map +1 -0
  119. package/lib/cjs/io/spreadsheet/index.cjs +25 -0
  120. package/lib/cjs/io/spreadsheet/index.cjs.map +1 -0
  121. package/lib/cjs/namespaces/index.cjs +1 -0
  122. package/lib/cjs/namespaces/index.cjs.map +1 -1
  123. package/lib/cjs/namespaces/models/credential.model.cjs +115 -0
  124. package/lib/cjs/namespaces/models/credential.model.cjs.map +1 -0
  125. package/lib/cjs/namespaces/models/effective-permission.model.cjs +2 -0
  126. package/lib/cjs/namespaces/models/effective-permission.model.cjs.map +1 -1
  127. package/lib/cjs/namespaces/models/group-membership.model.cjs +2 -0
  128. package/lib/cjs/namespaces/models/group-membership.model.cjs.map +1 -1
  129. package/lib/cjs/namespaces/models/group.model.cjs +2 -0
  130. package/lib/cjs/namespaces/models/group.model.cjs.map +1 -1
  131. package/lib/cjs/namespaces/models/index.cjs +1 -0
  132. package/lib/cjs/namespaces/models/index.cjs.map +1 -1
  133. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +2 -0
  134. package/lib/cjs/namespaces/models/inheritance-block.model.cjs.map +1 -1
  135. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +2 -0
  136. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs.map +1 -1
  137. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +2 -0
  138. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs.map +1 -1
  139. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +2 -0
  140. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs.map +1 -1
  141. package/lib/cjs/namespaces/models/org-unit.model.cjs +2 -0
  142. package/lib/cjs/namespaces/models/org-unit.model.cjs.map +1 -1
  143. package/lib/cjs/namespaces/models/permission.model.cjs +2 -0
  144. package/lib/cjs/namespaces/models/permission.model.cjs.map +1 -1
  145. package/lib/cjs/namespaces/models/principal.model.cjs +2 -0
  146. package/lib/cjs/namespaces/models/principal.model.cjs.map +1 -1
  147. package/lib/cjs/namespaces/models/protected-resource.model.cjs +2 -0
  148. package/lib/cjs/namespaces/models/protected-resource.model.cjs.map +1 -1
  149. package/lib/cjs/namespaces/models/resource-grant.model.cjs +2 -0
  150. package/lib/cjs/namespaces/models/resource-grant.model.cjs.map +1 -1
  151. package/lib/cjs/namespaces/models/role-assignment.model.cjs +2 -0
  152. package/lib/cjs/namespaces/models/role-assignment.model.cjs.map +1 -1
  153. package/lib/cjs/namespaces/models/role-permission.model.cjs +2 -0
  154. package/lib/cjs/namespaces/models/role-permission.model.cjs.map +1 -1
  155. package/lib/cjs/namespaces/models/role.model.cjs +2 -0
  156. package/lib/cjs/namespaces/models/role.model.cjs.map +1 -1
  157. package/lib/cjs/namespaces/models/storage-binding.model.cjs +2 -0
  158. package/lib/cjs/namespaces/models/storage-binding.model.cjs.map +1 -1
  159. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +2 -0
  160. package/lib/cjs/namespaces/models/tenant-membership.model.cjs.map +1 -1
  161. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +2 -0
  162. package/lib/cjs/namespaces/models/tenant-profile.model.cjs.map +1 -1
  163. package/lib/cjs/namespaces/models/tenant.model.cjs +2 -0
  164. package/lib/cjs/namespaces/models/tenant.model.cjs.map +1 -1
  165. package/lib/cjs/namespaces/models/user.model.cjs +2 -0
  166. package/lib/cjs/namespaces/models/user.model.cjs.map +1 -1
  167. package/lib/cjs/namespaces/rls/index.cjs +28 -0
  168. package/lib/cjs/namespaces/rls/index.cjs.map +1 -0
  169. package/lib/cjs/namespaces/rls/principal-resolver.cjs +66 -0
  170. package/lib/cjs/namespaces/rls/principal-resolver.cjs.map +1 -0
  171. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs +269 -0
  172. package/lib/cjs/namespaces/rls/rls-bootstrap.service.cjs.map +1 -0
  173. package/lib/cjs/namespaces/rls/rls.constants.cjs +79 -0
  174. package/lib/cjs/namespaces/rls/rls.constants.cjs.map +1 -0
  175. package/lib/cjs/namespaces/rls/rls.template.cjs +719 -0
  176. package/lib/cjs/namespaces/rls/rls.template.cjs.map +1 -0
  177. package/lib/cjs/namespaces/rls/rls.types.cjs +4 -0
  178. package/lib/cjs/namespaces/rls/rls.types.cjs.map +1 -0
  179. package/lib/cjs/namespaces/rls/session-binding.cjs +70 -0
  180. package/lib/cjs/namespaces/rls/session-binding.cjs.map +1 -0
  181. package/lib/cjs/namespaces/services/credential.service.cjs +327 -0
  182. package/lib/cjs/namespaces/services/credential.service.cjs.map +1 -0
  183. package/lib/cjs/namespaces/services/index.cjs +1 -0
  184. package/lib/cjs/namespaces/services/index.cjs.map +1 -1
  185. package/lib/cjs/namespaces/types.cjs +6 -1
  186. package/lib/cjs/namespaces/types.cjs.map +1 -1
  187. package/lib/cjs/redis/adapter.cjs +7 -1
  188. package/lib/cjs/redis/adapter.cjs.map +1 -1
  189. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs +80 -0
  190. package/lib/cjs/secrets/InfraCredentialBootstrap.cjs.map +1 -0
  191. package/lib/cjs/secrets/aws/AwsSecretService.cjs +2 -15
  192. package/lib/cjs/secrets/aws/AwsSecretService.cjs.map +1 -1
  193. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs +2 -16
  194. package/lib/cjs/secrets/azure/AzureKeyVaultSecretService.cjs.map +1 -1
  195. package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
  196. package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
  197. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs +28 -0
  198. package/lib/cjs/secrets/fs/FsSecretEnvironment.cjs.map +1 -0
  199. package/lib/cjs/secrets/fs/FsSecretService.cjs +420 -0
  200. package/lib/cjs/secrets/fs/FsSecretService.cjs.map +1 -0
  201. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs +25 -0
  202. package/lib/cjs/secrets/fs/FsSecretServiceConfig.cjs.map +1 -0
  203. package/lib/cjs/secrets/fs/index.cjs +27 -0
  204. package/lib/cjs/secrets/fs/index.cjs.map +1 -0
  205. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs +2 -16
  206. package/lib/cjs/secrets/gcp/GcpSecretManagerService.cjs.map +1 -1
  207. package/lib/cjs/secrets/index.cjs +2 -0
  208. package/lib/cjs/secrets/index.cjs.map +1 -1
  209. package/lib/cjs/secrets/model/ModelSecretService.cjs +335 -43
  210. package/lib/cjs/secrets/model/ModelSecretService.cjs.map +1 -1
  211. package/lib/cjs/secrets/model/Secret.cjs +83 -5
  212. package/lib/cjs/secrets/model/Secret.cjs.map +1 -1
  213. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs +2 -16
  214. package/lib/cjs/secrets/onepassword/OnePasswordSecretService.cjs.map +1 -1
  215. package/lib/cjs/secrets/vault/VaultSecretService.cjs +2 -16
  216. package/lib/cjs/secrets/vault/VaultSecretService.cjs.map +1 -1
  217. package/lib/cjs/shared/environmentValue.cjs +24 -0
  218. package/lib/cjs/shared/environmentValue.cjs.map +1 -1
  219. package/lib/cjs/shared/http/HttpApiService.cjs +190 -0
  220. package/lib/cjs/shared/http/HttpApiService.cjs.map +1 -0
  221. package/lib/cjs/shared/http/hermeticBoot.cjs +150 -0
  222. package/lib/cjs/shared/http/hermeticBoot.cjs.map +1 -0
  223. package/lib/cjs/shared/http/index.cjs +28 -0
  224. package/lib/cjs/shared/http/index.cjs.map +1 -0
  225. package/lib/esm/blob/azure/AzureBlobStoreService.js +13 -21
  226. package/lib/esm/blob/azure/AzureBlobStoreService.js.map +1 -1
  227. package/lib/esm/blob/core/BlobStoreService.js +26 -25
  228. package/lib/esm/blob/core/BlobStoreService.js.map +1 -1
  229. package/lib/esm/blob/gcp/GcsBlobStoreService.js +13 -21
  230. package/lib/esm/blob/gcp/GcsBlobStoreService.js.map +1 -1
  231. package/lib/esm/blob/s3/S3BlobStoreService.js +12 -14
  232. package/lib/esm/blob/s3/S3BlobStoreService.js.map +1 -1
  233. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js +14 -16
  234. package/lib/esm/blob/s3/S3CompatibleBlobStoreService.js.map +1 -1
  235. package/lib/esm/calendar/environment.js +44 -0
  236. package/lib/esm/calendar/environment.js.map +1 -0
  237. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js +333 -0
  238. package/lib/esm/calendar/google-calendar/GoogleCalendarService.js.map +1 -0
  239. package/lib/esm/calendar/google-calendar/index.js +3 -0
  240. package/lib/esm/calendar/google-calendar/index.js.map +1 -0
  241. package/lib/esm/comms/discord/DiscordService.js +313 -0
  242. package/lib/esm/comms/discord/DiscordService.js.map +1 -0
  243. package/lib/esm/comms/discord/index.js +2 -0
  244. package/lib/esm/comms/discord/index.js.map +1 -0
  245. package/lib/esm/comms/email/EmailService.js +338 -0
  246. package/lib/esm/comms/email/EmailService.js.map +1 -0
  247. package/lib/esm/comms/email/index.js +12 -0
  248. package/lib/esm/comms/email/index.js.map +1 -0
  249. package/lib/esm/comms/email/mime.js +218 -0
  250. package/lib/esm/comms/email/mime.js.map +1 -0
  251. package/lib/esm/comms/email/smtp.js +166 -0
  252. package/lib/esm/comms/email/smtp.js.map +1 -0
  253. package/lib/esm/comms/environment.js +75 -0
  254. package/lib/esm/comms/environment.js.map +1 -0
  255. package/lib/esm/comms/gmail/GmailService.js +230 -0
  256. package/lib/esm/comms/gmail/GmailService.js.map +1 -0
  257. package/lib/esm/comms/gmail/index.js +7 -0
  258. package/lib/esm/comms/gmail/index.js.map +1 -0
  259. package/lib/esm/comms/index.js +17 -0
  260. package/lib/esm/comms/index.js.map +1 -0
  261. package/lib/esm/comms/outlook/MicrosoftOutlookService.js +320 -0
  262. package/lib/esm/comms/outlook/MicrosoftOutlookService.js.map +1 -0
  263. package/lib/esm/comms/outlook/index.js +2 -0
  264. package/lib/esm/comms/outlook/index.js.map +1 -0
  265. package/lib/esm/comms/slack/SlackService.js +259 -0
  266. package/lib/esm/comms/slack/SlackService.js.map +1 -0
  267. package/lib/esm/comms/slack/index.js +7 -0
  268. package/lib/esm/comms/slack/index.js.map +1 -0
  269. package/lib/esm/comms/teams/TeamsService.js +204 -0
  270. package/lib/esm/comms/teams/TeamsService.js.map +1 -0
  271. package/lib/esm/comms/teams/index.js +7 -0
  272. package/lib/esm/comms/teams/index.js.map +1 -0
  273. package/lib/esm/comms/telegram/TelegramService.js +191 -0
  274. package/lib/esm/comms/telegram/TelegramService.js.map +1 -0
  275. package/lib/esm/comms/telegram/index.js +7 -0
  276. package/lib/esm/comms/telegram/index.js.map +1 -0
  277. package/lib/esm/comms/whatsapp/WhatsAppService.js +269 -0
  278. package/lib/esm/comms/whatsapp/WhatsAppService.js.map +1 -0
  279. package/lib/esm/comms/whatsapp/index.js +2 -0
  280. package/lib/esm/comms/whatsapp/index.js.map +1 -0
  281. package/lib/esm/devops/environment.js +39 -0
  282. package/lib/esm/devops/environment.js.map +1 -0
  283. package/lib/esm/devops/github/GithubService.js +297 -0
  284. package/lib/esm/devops/github/GithubService.js.map +1 -0
  285. package/lib/esm/devops/github/index.js +7 -0
  286. package/lib/esm/devops/github/index.js.map +1 -0
  287. package/lib/esm/devops/gitlab/GitlabService.js +277 -0
  288. package/lib/esm/devops/gitlab/GitlabService.js.map +1 -0
  289. package/lib/esm/devops/gitlab/index.js +7 -0
  290. package/lib/esm/devops/gitlab/index.js.map +1 -0
  291. package/lib/esm/devops/index.js +11 -0
  292. package/lib/esm/devops/index.js.map +1 -0
  293. package/lib/esm/feature-flags/models/FeatureFlag.model.js +2 -0
  294. package/lib/esm/feature-flags/models/FeatureFlag.model.js.map +1 -1
  295. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js +2 -0
  296. package/lib/esm/feature-flags/models/FeatureFlagAccess.model.js.map +1 -1
  297. package/lib/esm/index.js +3 -3
  298. package/lib/esm/io/airtable/AirtableService.js +261 -0
  299. package/lib/esm/io/airtable/AirtableService.js.map +1 -0
  300. package/lib/esm/io/airtable/index.js +7 -0
  301. package/lib/esm/io/airtable/index.js.map +1 -0
  302. package/lib/esm/io/confluence/ConfluenceService.js +312 -0
  303. package/lib/esm/io/confluence/ConfluenceService.js.map +1 -0
  304. package/lib/esm/io/confluence/index.js +2 -0
  305. package/lib/esm/io/confluence/index.js.map +1 -0
  306. package/lib/esm/io/environment.js +70 -0
  307. package/lib/esm/io/environment.js.map +1 -0
  308. package/lib/esm/io/google-docs/GoogleDocsService.js +270 -0
  309. package/lib/esm/io/google-docs/GoogleDocsService.js.map +1 -0
  310. package/lib/esm/io/google-docs/index.js +2 -0
  311. package/lib/esm/io/google-docs/index.js.map +1 -0
  312. package/lib/esm/io/google-sheets/GoogleSheetsService.js +283 -0
  313. package/lib/esm/io/google-sheets/GoogleSheetsService.js.map +1 -0
  314. package/lib/esm/io/google-sheets/index.js +7 -0
  315. package/lib/esm/io/google-sheets/index.js.map +1 -0
  316. package/lib/esm/io/graphql/GraphqlService.js +138 -0
  317. package/lib/esm/io/graphql/GraphqlService.js.map +1 -0
  318. package/lib/esm/io/graphql/index.js +7 -0
  319. package/lib/esm/io/graphql/index.js.map +1 -0
  320. package/lib/esm/io/index.js +18 -0
  321. package/lib/esm/io/index.js.map +1 -0
  322. package/lib/esm/io/jira/JiraService.js +349 -0
  323. package/lib/esm/io/jira/JiraService.js.map +1 -0
  324. package/lib/esm/io/jira/index.js +2 -0
  325. package/lib/esm/io/jira/index.js.map +1 -0
  326. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js +248 -0
  327. package/lib/esm/io/microsoft-excel/MicrosoftExcelService.js.map +1 -0
  328. package/lib/esm/io/microsoft-excel/index.js +2 -0
  329. package/lib/esm/io/microsoft-excel/index.js.map +1 -0
  330. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js +256 -0
  331. package/lib/esm/io/microsoft-sharepoint/MicrosoftSharePointService.js.map +1 -0
  332. package/lib/esm/io/microsoft-sharepoint/index.js +2 -0
  333. package/lib/esm/io/microsoft-sharepoint/index.js.map +1 -0
  334. package/lib/esm/io/spreadsheet/SpreadsheetService.js +200 -0
  335. package/lib/esm/io/spreadsheet/SpreadsheetService.js.map +1 -0
  336. package/lib/esm/io/spreadsheet/index.js +8 -0
  337. package/lib/esm/io/spreadsheet/index.js.map +1 -0
  338. package/lib/esm/namespaces/index.js +1 -0
  339. package/lib/esm/namespaces/index.js.map +1 -1
  340. package/lib/esm/namespaces/models/credential.model.js +106 -0
  341. package/lib/esm/namespaces/models/credential.model.js.map +1 -0
  342. package/lib/esm/namespaces/models/effective-permission.model.js +2 -0
  343. package/lib/esm/namespaces/models/effective-permission.model.js.map +1 -1
  344. package/lib/esm/namespaces/models/group-membership.model.js +2 -0
  345. package/lib/esm/namespaces/models/group-membership.model.js.map +1 -1
  346. package/lib/esm/namespaces/models/group.model.js +2 -0
  347. package/lib/esm/namespaces/models/group.model.js.map +1 -1
  348. package/lib/esm/namespaces/models/index.js +1 -0
  349. package/lib/esm/namespaces/models/index.js.map +1 -1
  350. package/lib/esm/namespaces/models/inheritance-block.model.js +2 -0
  351. package/lib/esm/namespaces/models/inheritance-block.model.js.map +1 -1
  352. package/lib/esm/namespaces/models/org-unit-closure.model.js +2 -0
  353. package/lib/esm/namespaces/models/org-unit-closure.model.js.map +1 -1
  354. package/lib/esm/namespaces/models/org-unit-membership.model.js +2 -0
  355. package/lib/esm/namespaces/models/org-unit-membership.model.js.map +1 -1
  356. package/lib/esm/namespaces/models/org-unit-profile.model.js +2 -0
  357. package/lib/esm/namespaces/models/org-unit-profile.model.js.map +1 -1
  358. package/lib/esm/namespaces/models/org-unit.model.js +2 -0
  359. package/lib/esm/namespaces/models/org-unit.model.js.map +1 -1
  360. package/lib/esm/namespaces/models/permission.model.js +2 -0
  361. package/lib/esm/namespaces/models/permission.model.js.map +1 -1
  362. package/lib/esm/namespaces/models/principal.model.js +2 -0
  363. package/lib/esm/namespaces/models/principal.model.js.map +1 -1
  364. package/lib/esm/namespaces/models/protected-resource.model.js +2 -0
  365. package/lib/esm/namespaces/models/protected-resource.model.js.map +1 -1
  366. package/lib/esm/namespaces/models/resource-grant.model.js +2 -0
  367. package/lib/esm/namespaces/models/resource-grant.model.js.map +1 -1
  368. package/lib/esm/namespaces/models/role-assignment.model.js +2 -0
  369. package/lib/esm/namespaces/models/role-assignment.model.js.map +1 -1
  370. package/lib/esm/namespaces/models/role-permission.model.js +2 -0
  371. package/lib/esm/namespaces/models/role-permission.model.js.map +1 -1
  372. package/lib/esm/namespaces/models/role.model.js +2 -0
  373. package/lib/esm/namespaces/models/role.model.js.map +1 -1
  374. package/lib/esm/namespaces/models/storage-binding.model.js +2 -0
  375. package/lib/esm/namespaces/models/storage-binding.model.js.map +1 -1
  376. package/lib/esm/namespaces/models/tenant-membership.model.js +2 -0
  377. package/lib/esm/namespaces/models/tenant-membership.model.js.map +1 -1
  378. package/lib/esm/namespaces/models/tenant-profile.model.js +2 -0
  379. package/lib/esm/namespaces/models/tenant-profile.model.js.map +1 -1
  380. package/lib/esm/namespaces/models/tenant.model.js +2 -0
  381. package/lib/esm/namespaces/models/tenant.model.js.map +1 -1
  382. package/lib/esm/namespaces/models/user.model.js +2 -0
  383. package/lib/esm/namespaces/models/user.model.js.map +1 -1
  384. package/lib/esm/namespaces/rls/index.js +11 -0
  385. package/lib/esm/namespaces/rls/index.js.map +1 -0
  386. package/lib/esm/namespaces/rls/principal-resolver.js +61 -0
  387. package/lib/esm/namespaces/rls/principal-resolver.js.map +1 -0
  388. package/lib/esm/namespaces/rls/rls-bootstrap.service.js +261 -0
  389. package/lib/esm/namespaces/rls/rls-bootstrap.service.js.map +1 -0
  390. package/lib/esm/namespaces/rls/rls.constants.js +75 -0
  391. package/lib/esm/namespaces/rls/rls.constants.js.map +1 -0
  392. package/lib/esm/namespaces/rls/rls.template.js +711 -0
  393. package/lib/esm/namespaces/rls/rls.template.js.map +1 -0
  394. package/lib/esm/namespaces/rls/rls.types.js +9 -0
  395. package/lib/esm/namespaces/rls/rls.types.js.map +1 -0
  396. package/lib/esm/namespaces/rls/session-binding.js +65 -0
  397. package/lib/esm/namespaces/rls/session-binding.js.map +1 -0
  398. package/lib/esm/namespaces/services/credential.service.js +322 -0
  399. package/lib/esm/namespaces/services/credential.service.js.map +1 -0
  400. package/lib/esm/namespaces/services/index.js +1 -0
  401. package/lib/esm/namespaces/services/index.js.map +1 -1
  402. package/lib/esm/namespaces/types.js +6 -0
  403. package/lib/esm/namespaces/types.js.map +1 -1
  404. package/lib/esm/redis/adapter.js +7 -1
  405. package/lib/esm/redis/adapter.js.map +1 -1
  406. package/lib/esm/secrets/InfraCredentialBootstrap.js +74 -0
  407. package/lib/esm/secrets/InfraCredentialBootstrap.js.map +1 -0
  408. package/lib/esm/secrets/aws/AwsSecretService.js +3 -13
  409. package/lib/esm/secrets/aws/AwsSecretService.js.map +1 -1
  410. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js +2 -13
  411. package/lib/esm/secrets/azure/AzureKeyVaultSecretService.js.map +1 -1
  412. package/lib/esm/secrets/core/SecretReference.js +1 -0
  413. package/lib/esm/secrets/core/SecretReference.js.map +1 -1
  414. package/lib/esm/secrets/fs/FsSecretEnvironment.js +24 -0
  415. package/lib/esm/secrets/fs/FsSecretEnvironment.js.map +1 -0
  416. package/lib/esm/secrets/fs/FsSecretService.js +412 -0
  417. package/lib/esm/secrets/fs/FsSecretService.js.map +1 -0
  418. package/lib/esm/secrets/fs/FsSecretServiceConfig.js +21 -0
  419. package/lib/esm/secrets/fs/FsSecretServiceConfig.js.map +1 -0
  420. package/lib/esm/secrets/fs/index.js +10 -0
  421. package/lib/esm/secrets/fs/index.js.map +1 -0
  422. package/lib/esm/secrets/gcp/GcpSecretManagerService.js +2 -13
  423. package/lib/esm/secrets/gcp/GcpSecretManagerService.js.map +1 -1
  424. package/lib/esm/secrets/index.js +2 -0
  425. package/lib/esm/secrets/index.js.map +1 -1
  426. package/lib/esm/secrets/model/ModelSecretService.js +337 -42
  427. package/lib/esm/secrets/model/ModelSecretService.js.map +1 -1
  428. package/lib/esm/secrets/model/Secret.js +86 -7
  429. package/lib/esm/secrets/model/Secret.js.map +1 -1
  430. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js +2 -13
  431. package/lib/esm/secrets/onepassword/OnePasswordSecretService.js.map +1 -1
  432. package/lib/esm/secrets/vault/VaultSecretService.js +2 -13
  433. package/lib/esm/secrets/vault/VaultSecretService.js.map +1 -1
  434. package/lib/esm/shared/environmentValue.js +24 -0
  435. package/lib/esm/shared/environmentValue.js.map +1 -1
  436. package/lib/esm/shared/http/HttpApiService.js +181 -0
  437. package/lib/esm/shared/http/HttpApiService.js.map +1 -0
  438. package/lib/esm/shared/http/hermeticBoot.js +146 -0
  439. package/lib/esm/shared/http/hermeticBoot.js.map +1 -0
  440. package/lib/esm/shared/http/index.js +11 -0
  441. package/lib/esm/shared/http/index.js.map +1 -0
  442. package/lib/types/blob/azure/AzureBlobStoreService.d.cts +7 -7
  443. package/lib/types/blob/azure/AzureBlobStoreService.d.mts +7 -7
  444. package/lib/types/blob/core/BlobStoreService.d.cts +28 -27
  445. package/lib/types/blob/core/BlobStoreService.d.mts +28 -27
  446. package/lib/types/blob/gcp/GcsBlobStoreService.d.cts +7 -7
  447. package/lib/types/blob/gcp/GcsBlobStoreService.d.mts +7 -7
  448. package/lib/types/blob/s3/S3BlobStoreService.d.cts +9 -1
  449. package/lib/types/blob/s3/S3BlobStoreService.d.mts +9 -1
  450. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.cts +11 -15
  451. package/lib/types/blob/s3/S3CompatibleBlobStoreService.d.mts +11 -15
  452. package/lib/types/calendar/environment.d.cts +48 -0
  453. package/lib/types/calendar/environment.d.mts +48 -0
  454. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.cts +316 -0
  455. package/lib/types/calendar/google-calendar/GoogleCalendarService.d.mts +316 -0
  456. package/lib/types/calendar/google-calendar/index.d.cts +2 -0
  457. package/lib/types/calendar/google-calendar/index.d.mts +2 -0
  458. package/lib/types/comms/discord/DiscordService.d.cts +285 -0
  459. package/lib/types/comms/discord/DiscordService.d.mts +285 -0
  460. package/lib/types/comms/discord/index.d.cts +1 -0
  461. package/lib/types/comms/discord/index.d.mts +1 -0
  462. package/lib/types/comms/email/EmailService.d.cts +184 -0
  463. package/lib/types/comms/email/EmailService.d.mts +184 -0
  464. package/lib/types/comms/email/index.d.cts +11 -0
  465. package/lib/types/comms/email/index.d.mts +11 -0
  466. package/lib/types/comms/email/mime.d.cts +84 -0
  467. package/lib/types/comms/email/mime.d.mts +84 -0
  468. package/lib/types/comms/email/smtp.d.cts +107 -0
  469. package/lib/types/comms/email/smtp.d.mts +107 -0
  470. package/lib/types/comms/environment.d.cts +110 -0
  471. package/lib/types/comms/environment.d.mts +110 -0
  472. package/lib/types/comms/gmail/GmailService.d.cts +190 -0
  473. package/lib/types/comms/gmail/GmailService.d.mts +190 -0
  474. package/lib/types/comms/gmail/index.d.cts +6 -0
  475. package/lib/types/comms/gmail/index.d.mts +6 -0
  476. package/lib/types/comms/index.d.cts +16 -0
  477. package/lib/types/comms/index.d.mts +16 -0
  478. package/lib/types/comms/outlook/MicrosoftOutlookService.d.cts +282 -0
  479. package/lib/types/comms/outlook/MicrosoftOutlookService.d.mts +282 -0
  480. package/lib/types/comms/outlook/index.d.cts +1 -0
  481. package/lib/types/comms/outlook/index.d.mts +1 -0
  482. package/lib/types/comms/slack/SlackService.d.cts +259 -0
  483. package/lib/types/comms/slack/SlackService.d.mts +259 -0
  484. package/lib/types/comms/slack/index.d.cts +6 -0
  485. package/lib/types/comms/slack/index.d.mts +6 -0
  486. package/lib/types/comms/teams/TeamsService.d.cts +172 -0
  487. package/lib/types/comms/teams/TeamsService.d.mts +172 -0
  488. package/lib/types/comms/teams/index.d.cts +6 -0
  489. package/lib/types/comms/teams/index.d.mts +6 -0
  490. package/lib/types/comms/telegram/TelegramService.d.cts +202 -0
  491. package/lib/types/comms/telegram/TelegramService.d.mts +202 -0
  492. package/lib/types/comms/telegram/index.d.cts +6 -0
  493. package/lib/types/comms/telegram/index.d.mts +6 -0
  494. package/lib/types/comms/whatsapp/WhatsAppService.d.cts +258 -0
  495. package/lib/types/comms/whatsapp/WhatsAppService.d.mts +258 -0
  496. package/lib/types/comms/whatsapp/index.d.cts +1 -0
  497. package/lib/types/comms/whatsapp/index.d.mts +1 -0
  498. package/lib/types/devops/environment.d.cts +62 -0
  499. package/lib/types/devops/environment.d.mts +62 -0
  500. package/lib/types/devops/github/GithubService.d.cts +287 -0
  501. package/lib/types/devops/github/GithubService.d.mts +287 -0
  502. package/lib/types/devops/github/index.d.cts +6 -0
  503. package/lib/types/devops/github/index.d.mts +6 -0
  504. package/lib/types/devops/gitlab/GitlabService.d.cts +277 -0
  505. package/lib/types/devops/gitlab/GitlabService.d.mts +277 -0
  506. package/lib/types/devops/gitlab/index.d.cts +6 -0
  507. package/lib/types/devops/gitlab/index.d.mts +6 -0
  508. package/lib/types/devops/index.d.cts +10 -0
  509. package/lib/types/devops/index.d.mts +10 -0
  510. package/lib/types/index.d.cts +2 -2
  511. package/lib/types/index.d.mts +2 -2
  512. package/lib/types/io/airtable/AirtableService.d.cts +268 -0
  513. package/lib/types/io/airtable/AirtableService.d.mts +268 -0
  514. package/lib/types/io/airtable/index.d.cts +6 -0
  515. package/lib/types/io/airtable/index.d.mts +6 -0
  516. package/lib/types/io/confluence/ConfluenceService.d.cts +250 -0
  517. package/lib/types/io/confluence/ConfluenceService.d.mts +250 -0
  518. package/lib/types/io/confluence/index.d.cts +1 -0
  519. package/lib/types/io/confluence/index.d.mts +1 -0
  520. package/lib/types/io/environment.d.cts +107 -0
  521. package/lib/types/io/environment.d.mts +107 -0
  522. package/lib/types/io/google-docs/GoogleDocsService.d.cts +188 -0
  523. package/lib/types/io/google-docs/GoogleDocsService.d.mts +188 -0
  524. package/lib/types/io/google-docs/index.d.cts +1 -0
  525. package/lib/types/io/google-docs/index.d.mts +1 -0
  526. package/lib/types/io/google-sheets/GoogleSheetsService.d.cts +204 -0
  527. package/lib/types/io/google-sheets/GoogleSheetsService.d.mts +204 -0
  528. package/lib/types/io/google-sheets/index.d.cts +6 -0
  529. package/lib/types/io/google-sheets/index.d.mts +6 -0
  530. package/lib/types/io/graphql/GraphqlService.d.cts +173 -0
  531. package/lib/types/io/graphql/GraphqlService.d.mts +173 -0
  532. package/lib/types/io/graphql/index.d.cts +6 -0
  533. package/lib/types/io/graphql/index.d.mts +6 -0
  534. package/lib/types/io/index.d.cts +17 -0
  535. package/lib/types/io/index.d.mts +17 -0
  536. package/lib/types/io/jira/JiraService.d.cts +300 -0
  537. package/lib/types/io/jira/JiraService.d.mts +300 -0
  538. package/lib/types/io/jira/index.d.cts +1 -0
  539. package/lib/types/io/jira/index.d.mts +1 -0
  540. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.cts +230 -0
  541. package/lib/types/io/microsoft-excel/MicrosoftExcelService.d.mts +230 -0
  542. package/lib/types/io/microsoft-excel/index.d.cts +1 -0
  543. package/lib/types/io/microsoft-excel/index.d.mts +1 -0
  544. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.cts +226 -0
  545. package/lib/types/io/microsoft-sharepoint/MicrosoftSharePointService.d.mts +226 -0
  546. package/lib/types/io/microsoft-sharepoint/index.d.cts +1 -0
  547. package/lib/types/io/microsoft-sharepoint/index.d.mts +1 -0
  548. package/lib/types/io/spreadsheet/SpreadsheetService.d.cts +144 -0
  549. package/lib/types/io/spreadsheet/SpreadsheetService.d.mts +144 -0
  550. package/lib/types/io/spreadsheet/index.d.cts +7 -0
  551. package/lib/types/io/spreadsheet/index.d.mts +7 -0
  552. package/lib/types/namespaces/index.d.cts +1 -0
  553. package/lib/types/namespaces/index.d.mts +1 -0
  554. package/lib/types/namespaces/models/credential.model.d.cts +23 -0
  555. package/lib/types/namespaces/models/credential.model.d.mts +23 -0
  556. package/lib/types/namespaces/models/index.d.cts +1 -0
  557. package/lib/types/namespaces/models/index.d.mts +1 -0
  558. package/lib/types/namespaces/rls/index.d.cts +10 -0
  559. package/lib/types/namespaces/rls/index.d.mts +10 -0
  560. package/lib/types/namespaces/rls/principal-resolver.d.cts +47 -0
  561. package/lib/types/namespaces/rls/principal-resolver.d.mts +47 -0
  562. package/lib/types/namespaces/rls/rls-bootstrap.service.d.cts +157 -0
  563. package/lib/types/namespaces/rls/rls-bootstrap.service.d.mts +157 -0
  564. package/lib/types/namespaces/rls/rls.constants.d.cts +52 -0
  565. package/lib/types/namespaces/rls/rls.constants.d.mts +52 -0
  566. package/lib/types/namespaces/rls/rls.template.d.cts +42 -0
  567. package/lib/types/namespaces/rls/rls.template.d.mts +42 -0
  568. package/lib/types/namespaces/rls/rls.types.d.cts +77 -0
  569. package/lib/types/namespaces/rls/rls.types.d.mts +77 -0
  570. package/lib/types/namespaces/rls/session-binding.d.cts +87 -0
  571. package/lib/types/namespaces/rls/session-binding.d.mts +87 -0
  572. package/lib/types/namespaces/services/credential.service.d.cts +175 -0
  573. package/lib/types/namespaces/services/credential.service.d.mts +175 -0
  574. package/lib/types/namespaces/services/index.d.cts +1 -0
  575. package/lib/types/namespaces/services/index.d.mts +1 -0
  576. package/lib/types/namespaces/types.d.cts +37 -0
  577. package/lib/types/namespaces/types.d.mts +37 -0
  578. package/lib/types/redis/adapter.d.cts +2 -0
  579. package/lib/types/redis/adapter.d.mts +2 -0
  580. package/lib/types/redis/types.d.cts +27 -2
  581. package/lib/types/redis/types.d.mts +27 -2
  582. package/lib/types/secrets/InfraCredentialBootstrap.d.cts +100 -0
  583. package/lib/types/secrets/InfraCredentialBootstrap.d.mts +100 -0
  584. package/lib/types/secrets/core/SecretTypes.d.cts +15 -1
  585. package/lib/types/secrets/core/SecretTypes.d.mts +15 -1
  586. package/lib/types/secrets/fs/FsSecretEnvironment.d.cts +42 -0
  587. package/lib/types/secrets/fs/FsSecretEnvironment.d.mts +42 -0
  588. package/lib/types/secrets/fs/FsSecretService.d.cts +207 -0
  589. package/lib/types/secrets/fs/FsSecretService.d.mts +207 -0
  590. package/lib/types/secrets/fs/FsSecretServiceConfig.d.cts +37 -0
  591. package/lib/types/secrets/fs/FsSecretServiceConfig.d.mts +37 -0
  592. package/lib/types/secrets/fs/index.d.cts +9 -0
  593. package/lib/types/secrets/fs/index.d.mts +9 -0
  594. package/lib/types/secrets/index.d.cts +2 -0
  595. package/lib/types/secrets/index.d.mts +2 -0
  596. package/lib/types/secrets/model/ModelSecretService.d.cts +190 -1
  597. package/lib/types/secrets/model/ModelSecretService.d.mts +190 -1
  598. package/lib/types/secrets/model/Secret.d.cts +44 -3
  599. package/lib/types/secrets/model/Secret.d.mts +44 -3
  600. package/lib/types/shared/environmentValue.d.cts +24 -0
  601. package/lib/types/shared/environmentValue.d.mts +24 -0
  602. package/lib/types/shared/http/HttpApiService.d.cts +193 -0
  603. package/lib/types/shared/http/HttpApiService.d.mts +193 -0
  604. package/lib/types/shared/http/hermeticBoot.d.cts +84 -0
  605. package/lib/types/shared/http/hermeticBoot.d.mts +84 -0
  606. package/lib/types/shared/http/index.d.cts +10 -0
  607. package/lib/types/shared/http/index.d.mts +10 -0
  608. package/package.json +279 -6
  609. package/sql/002_rls.sql +660 -15
  610. package/sql/004_credentials.sql +46 -0
@@ -0,0 +1,285 @@
1
+ import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.mts";
2
+ /**
3
+ * @description Configuration for the Discord service
4
+ * @summary Extends {@link HttpApiServiceConfig} with the Discord bot token
5
+ * sent as `Authorization: Bot <token>`. When omitted, the `comms.discord`
6
+ * environment slice supplies `token` (plus optional `baseUrl`/`timeout`).
7
+ * The token is a credential reference read from configuration, never a value
8
+ * to hard-code in source.
9
+ * @category Comms
10
+ * @memberOf module:integrations/comms/discord/service
11
+ */
12
+ export interface DiscordServiceConfig extends HttpApiServiceConfig {
13
+ /**
14
+ * @description Discord bot token
15
+ * @summary Sent as `Authorization: Bot <token>` with every API call.
16
+ */
17
+ token?: string;
18
+ }
19
+ /**
20
+ * @description Input for sending a Discord channel message
21
+ * @summary Carries the destination `channelId`, the message `content`, the
22
+ * optional text-to-speech flag, and optional rich `embeds`.
23
+ * @category Comms
24
+ * @memberOf module:integrations/comms/discord/service
25
+ */
26
+ export interface DiscordMessageInput {
27
+ /**
28
+ * @description ID of the channel that receives the message
29
+ */
30
+ channelId: string;
31
+ /**
32
+ * @description Plain-text message body
33
+ */
34
+ content: string;
35
+ /**
36
+ * @description Whether Discord reads the message with text-to-speech
37
+ */
38
+ tts?: boolean;
39
+ /**
40
+ * @description Rich embed payloads attached to the message
41
+ */
42
+ embeds?: unknown[];
43
+ }
44
+ /**
45
+ * @description Input for listing a Discord channel's messages
46
+ * @summary Carries the `channelId` plus optional page size and a `before`
47
+ * message ID cursor for fetching older messages.
48
+ * @category Comms
49
+ * @memberOf module:integrations/comms/discord/service
50
+ */
51
+ export interface DiscordMessageListInput {
52
+ /**
53
+ * @description ID of the channel to list messages from
54
+ */
55
+ channelId: string;
56
+ /**
57
+ * @description Maximum number of messages to return
58
+ */
59
+ limit?: number;
60
+ /**
61
+ * @description Message ID cursor; only older messages are returned
62
+ */
63
+ before?: string;
64
+ }
65
+ /**
66
+ * @description Input for creating a Discord guild channel
67
+ * @summary Carries the target `guildId`, the new channel `name`, and the
68
+ * optional channel `type` (Discord numeric type, default `0` for text),
69
+ * `topic`, and `parentId` (category).
70
+ * @category Comms
71
+ * @memberOf module:integrations/comms/discord/service
72
+ */
73
+ export interface DiscordChannelInput {
74
+ /**
75
+ * @description ID of the guild that owns the new channel
76
+ */
77
+ guildId: string;
78
+ /**
79
+ * @description Name of the new channel
80
+ */
81
+ name: string;
82
+ /**
83
+ * @description Discord numeric channel type (default `0`, text channel)
84
+ */
85
+ type?: number;
86
+ /**
87
+ * @description Optional channel topic
88
+ */
89
+ topic?: string;
90
+ /**
91
+ * @description Optional parent category ID
92
+ */
93
+ parentId?: string;
94
+ }
95
+ /**
96
+ * @description Input for adding a reaction to a Discord message
97
+ * @summary Identifies the `channelId`, the target `messageId`, and the
98
+ * `emoji` to add as the bot user.
99
+ * @category Comms
100
+ * @memberOf module:integrations/comms/discord/service
101
+ */
102
+ export interface DiscordReactionInput {
103
+ /**
104
+ * @description ID of the channel containing the message
105
+ */
106
+ channelId: string;
107
+ /**
108
+ * @description ID of the message to react to
109
+ */
110
+ messageId: string;
111
+ /**
112
+ * @description Emoji to add (Unicode character or `name:id` custom emoji)
113
+ */
114
+ emoji: string;
115
+ }
116
+ /**
117
+ * @description Discord Bot API integration service
118
+ * @summary An undecorated HTTP service for channel messages
119
+ * (`sendMessage`, `getMessage`, `listMessages`), channels (`getChannel`,
120
+ * `listChannels`, `createChannel`, `deleteChannel`), and reactions
121
+ * (`addReaction`). Every operation requires a bot token and throws
122
+ * `InternalError` when it is missing or a required identifier is empty;
123
+ * transport failures are mapped to decaf errors via {@link httpError}. This is
124
+ * the callable comms surface (`core.comms.discord`), not the mastra agent
125
+ * trigger/response kinds.
126
+ * @class DiscordService
127
+ * @extends HttpApiService
128
+ * @category Comms
129
+ * @example
130
+ * ```ts
131
+ * import { DiscordService } from "@decaf-ts/integrations/comms/discord";
132
+ *
133
+ * const discord = new DiscordService();
134
+ * await discord.initialize({ token: process.env.GRAPH_CREDENTIAL_DISCORD_TOKEN });
135
+ * await discord.sendMessage({
136
+ * channelId: process.env.DISCORD_CHANNEL_ID ?? "",
137
+ * content: "Deployment finished",
138
+ * });
139
+ * ```
140
+ * @mermaid
141
+ * sequenceDiagram
142
+ * autonumber
143
+ * participant Caller
144
+ * participant Service as DiscordService
145
+ * participant Discord as Discord Bot API
146
+ * Caller->>Service: sendMessage(input)
147
+ * activate Service
148
+ * Service->>Service: requireBotToken()
149
+ * Service->>Discord: POST /channels/{id}/messages
150
+ * activate Discord
151
+ * Discord-->>Service: message payload
152
+ * deactivate Discord
153
+ * Service-->>Caller: message payload
154
+ * deactivate Service
155
+ * @memberOf module:integrations/comms/discord/service
156
+ */
157
+ export declare class DiscordService extends HttpApiService<DiscordServiceConfig> {
158
+ /**
159
+ * @description The provider name used in error messages
160
+ */
161
+ protected readonly serviceName = "Discord";
162
+ /**
163
+ * @description The Discord Bot API base URL
164
+ * @summary Used when the resolved config carries no `baseUrl`.
165
+ * @returns {string} `"https://discord.com/api/v10"`.
166
+ */
167
+ protected defaultBaseUrl(): string;
168
+ /**
169
+ * @description Builds the Discord bot authorization header
170
+ * @summary Returns `Authorization: Bot <token>` when the config carries a
171
+ * token, and no headers otherwise.
172
+ * @param {DiscordServiceConfig} config - The resolved service configuration.
173
+ * @returns {Record<string, string>} The authorization headers (empty without a token).
174
+ */
175
+ protected authHeaders(config: DiscordServiceConfig): Record<string, string>;
176
+ /**
177
+ * @description Reads the Discord credentials and defaults from the environment
178
+ * @summary Reads the `comms.discord` environment slice and returns a partial
179
+ * config when a bot token is configured, `undefined` otherwise. Values pass
180
+ * through `envString`/`envNumber` to reject unset-leaf proxies.
181
+ * @returns {Partial<DiscordServiceConfig> | undefined} A partial config, or `undefined` when no Discord token is configured.
182
+ */
183
+ protected configFromEnvironment(): Partial<DiscordServiceConfig> | undefined;
184
+ /**
185
+ * @description Asserts that a Discord bot token is configured
186
+ * @summary Called by every operation before it touches the network.
187
+ * @returns {void}
188
+ * @throws {InternalError} When the resolved config has no `token`.
189
+ */
190
+ protected requireBotToken(): void;
191
+ /**
192
+ * @description Builds the encoded path for a channel resource
193
+ * @summary Validates the channel ID and URL-encodes it into `/channels/<id>`.
194
+ * @param {string} channelId - The Discord channel ID.
195
+ * @returns {string} The channel API path.
196
+ * @throws {InternalError} When `channelId` is empty.
197
+ */
198
+ private channelPath;
199
+ /**
200
+ * @description Sends a message to a Discord channel
201
+ * @summary `POST`s the content (and optional `tts`/`embeds`) to the channel
202
+ * messages endpoint and returns Discord's message payload.
203
+ * @param {DiscordMessageInput} input - The destination channel and message content.
204
+ * @returns {Promise<unknown>} The created message payload.
205
+ * @throws {InternalError} When no bot token is configured.
206
+ * @throws {BadRequestError} When Discord rejects the request.
207
+ * @example
208
+ * ```ts
209
+ * await discord.sendMessage({ channelId: "1234567890", content: "Hello" });
210
+ * ```
211
+ */
212
+ sendMessage(input: DiscordMessageInput): Promise<unknown>;
213
+ /**
214
+ * @description Fetches a single Discord message
215
+ * @summary `GET`s the message by channel and message ID and returns the
216
+ * message payload.
217
+ * @param {string} channelId - The channel containing the message.
218
+ * @param {string} messageId - The message ID to fetch.
219
+ * @returns {Promise<unknown>} The message payload.
220
+ * @throws {InternalError} When no bot token is configured or the message ID is empty.
221
+ * @throws {NotFoundError} When the message does not exist (HTTP 404).
222
+ * @throws {BadRequestError} When Discord rejects the request.
223
+ */
224
+ getMessage(channelId: string, messageId: string): Promise<unknown>;
225
+ /**
226
+ * @description Lists messages in a Discord channel
227
+ * @summary `GET`s the channel messages with the optional `limit` and
228
+ * `before` cursor and returns Discord's message page.
229
+ * @param {DiscordMessageListInput} input - The channel and paging options.
230
+ * @returns {Promise<unknown>} The message page payload.
231
+ * @throws {InternalError} When no bot token is configured.
232
+ * @throws {BadRequestError} When Discord rejects the request.
233
+ */
234
+ listMessages(input: DiscordMessageListInput): Promise<unknown>;
235
+ /**
236
+ * @description Fetches a Discord channel
237
+ * @summary `GET`s the channel by ID and returns its payload.
238
+ * @param {string} channelId - The channel ID to fetch.
239
+ * @returns {Promise<unknown>} The channel payload.
240
+ * @throws {InternalError} When no bot token is configured or the channel ID is empty.
241
+ * @throws {NotFoundError} When the channel does not exist (HTTP 404).
242
+ * @throws {BadRequestError} When Discord rejects the request.
243
+ */
244
+ getChannel(channelId: string): Promise<unknown>;
245
+ /**
246
+ * @description Lists every channel in a Discord guild
247
+ * @summary `GET`s `/guilds/<id>/channels` and returns the channel list.
248
+ * @param {string} guildId - The guild whose channels are listed.
249
+ * @returns {Promise<unknown>} The guild channel list payload.
250
+ * @throws {InternalError} When no bot token is configured or the guild ID is empty.
251
+ * @throws {BadRequestError} When Discord rejects the request.
252
+ */
253
+ listChannels(guildId: string): Promise<unknown>;
254
+ /**
255
+ * @description Creates a channel in a Discord guild
256
+ * @summary `POST`s the channel `name`, numeric `type` (default text), and
257
+ * optional `topic`/`parentId` to the guild channels endpoint.
258
+ * @param {DiscordChannelInput} input - The guild and new channel definition.
259
+ * @returns {Promise<unknown>} The created channel payload.
260
+ * @throws {InternalError} When no bot token is configured.
261
+ * @throws {BadRequestError} When Discord rejects the request.
262
+ */
263
+ createChannel(input: DiscordChannelInput): Promise<unknown>;
264
+ /**
265
+ * @description Deletes a Discord channel
266
+ * @summary `DELETE`s the channel and returns the response payload, falling
267
+ * back to `{ deleted: true, channelId }` when Discord returns no body.
268
+ * @param {string} channelId - The channel ID to delete.
269
+ * @returns {Promise<unknown>} The deletion payload.
270
+ * @throws {InternalError} When no bot token is configured or the channel ID is empty.
271
+ * @throws {NotFoundError} When the channel does not exist (HTTP 404).
272
+ * @throws {BadRequestError} When Discord rejects the request.
273
+ */
274
+ deleteChannel(channelId: string): Promise<unknown>;
275
+ /**
276
+ * @description Adds a reaction to a Discord message as the bot
277
+ * @summary `PUT`s the emoji to the message's `@me` reaction endpoint and
278
+ * echoes the channel and message IDs on success.
279
+ * @param {DiscordReactionInput} input - The channel, message, and emoji.
280
+ * @returns {Promise<unknown>} `{ channelId, messageId }` on success.
281
+ * @throws {InternalError} When no bot token is configured, or the message ID or emoji is empty.
282
+ * @throws {BadRequestError} When Discord rejects the request.
283
+ */
284
+ addReaction(input: DiscordReactionInput): Promise<unknown>;
285
+ }
@@ -0,0 +1 @@
1
+ export * from "./DiscordService.d.cts";
@@ -0,0 +1 @@
1
+ export * from "./DiscordService.d.mts";
@@ -0,0 +1,184 @@
1
+ import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.cts";
2
+ import { type EmailMessageInput } from "./mime.d.cts";
3
+ /**
4
+ * @description Delivery provider selected for a send
5
+ * @summary `smtp` delivers through the built-in raw-MIME client; `graph`
6
+ * posts to the Microsoft Graph `sendMail` endpoint.
7
+ * @category Comms
8
+ * @memberOf module:integrations/comms/email/service
9
+ */
10
+ export type EmailProvider = "smtp" | "graph";
11
+ /**
12
+ * @description Configuration for the Email service
13
+ * @summary Extends {@link HttpApiServiceConfig} with the SMTP connection
14
+ * settings and the Microsoft Graph token/base URL. Every field falls back to
15
+ * the `comms.email` environment slice when omitted. A `host` selects the SMTP
16
+ * provider; a `token` (without `host`) selects Graph.
17
+ * @category Comms
18
+ * @memberOf module:integrations/comms/email/service
19
+ */
20
+ export interface EmailServiceConfig extends HttpApiServiceConfig {
21
+ provider?: EmailProvider;
22
+ host?: string;
23
+ port?: number;
24
+ secure?: boolean;
25
+ username?: string;
26
+ password?: string;
27
+ /**
28
+ * Explicitly allow SMTP `AUTH LOGIN` over a plaintext session. Defaults to
29
+ * `false`: credentials are only sent after implicit TLS or a STARTTLS upgrade.
30
+ */
31
+ allowPlaintextAuth?: boolean;
32
+ from?: string;
33
+ graphBaseUrl?: string;
34
+ token?: string;
35
+ }
36
+ /**
37
+ * @description Result of a successful email send
38
+ * @summary Carries the generated RFC 5322 `Message-ID`, the resolved sender,
39
+ * the flattened recipient list, and the provider that delivered it.
40
+ * @category Comms
41
+ * @memberOf module:integrations/comms/email/service
42
+ */
43
+ export interface EmailSendResult {
44
+ /** @description Generated `Message-ID` (also present in the raw MIME headers) */
45
+ messageId: string;
46
+ /** @description Sender address used for delivery */
47
+ from: string;
48
+ /** @description All To/Cc/Bcc recipients, in that order */
49
+ recipients: string[];
50
+ /** @description Provider that performed the delivery */
51
+ provider: EmailProvider;
52
+ }
53
+ /**
54
+ * @description Filter for inbox reads
55
+ * @summary Applies to both {@link EmailService.listInbox} (Graph) and
56
+ * {@link EmailService.listImapMessages} (IMAP): mailbox path, page size, a
57
+ * lower received-date bound, and a subject filter.
58
+ * @category Comms
59
+ * @memberOf module:integrations/comms/email/service
60
+ */
61
+ export interface EmailInboxQuery {
62
+ /** @description Mailbox path to read (default `me` on Graph, `INBOX` on IMAP) */
63
+ mailbox?: string;
64
+ /** @description Maximum messages returned (default 25) */
65
+ limit?: number;
66
+ /** @description Only messages received after this date (Graph `$filter`); must be an ISO 8601 date or timestamp */
67
+ since?: string;
68
+ /** @description Subject `contains` filter (Graph only) */
69
+ subject?: string;
70
+ }
71
+ /**
72
+ * @description Multi-provider email send/inbox service
73
+ * @summary Resolves the delivery provider from config (`provider`, or inferred
74
+ * from the presence of `host` vs `token`), builds RFC 5322 MIME with
75
+ * UTF-8-encoded headers via {@link buildEmail}, then delivers through SMTP or
76
+ * posts to Graph. Inbox reads go through Graph `messages` (with `$top`,
77
+ * `$filter`, `$orderby`) or the optional `imapflow` package.
78
+ * @category Comms
79
+ * @memberOf module:integrations/comms/email/service
80
+ */
81
+ export declare class EmailService extends HttpApiService<EmailServiceConfig> {
82
+ protected readonly serviceName = "Email";
83
+ /**
84
+ * @description Default Microsoft Graph base URL used when no override is configured
85
+ * @returns The Graph v1.0 endpoint URL
86
+ */
87
+ protected defaultBaseUrl(): string;
88
+ /**
89
+ * @description Authorization headers for Graph requests
90
+ * @param config - Resolved service config
91
+ * @returns A bearer-token `Authorization` header map, empty when no `token` is configured
92
+ */
93
+ protected authHeaders(config: EmailServiceConfig): Record<string, string>;
94
+ /**
95
+ * @description Pins the SMTP plaintext-AUTH default on top of the base initialization
96
+ * @summary Runs the {@link HttpApiService} initialization (explicit config
97
+ * merged over the `comms.email` environment slice) and then defaults an
98
+ * unresolved `allowPlaintextAuth` to `false`, so credentials are only sent
99
+ * over a TLS-protected session unless the config explicitly opts in. This
100
+ * closes the F1 residual where an environment-only `allowPlaintextAuth`
101
+ * opt-in would otherwise reach a boot whose explicit config omits the key
102
+ * (defense in depth on top of {@link bootWithoutEnvironment}, which disables
103
+ * the environment slice entirely on the node path).
104
+ * @param {...any[]} args - An optional `Partial<EmailServiceConfig>`, optionally followed by a decaf `Context`.
105
+ * @returns {Promise<{config: EmailServiceConfig, client: AxiosInstance}>} The merged configuration, with `allowPlaintextAuth` defaulted to `false` when unset, and the configured Axios instance.
106
+ */
107
+ initialize(...args: any[]): Promise<{
108
+ config: EmailServiceConfig;
109
+ client: import("axios").AxiosInstance;
110
+ }>;
111
+ /**
112
+ * @description Builds service config from the `comms.email` environment slice
113
+ * @returns A partial config when either an SMTP `host` or a Graph `token` is present, otherwise `undefined`
114
+ */
115
+ protected configFromEnvironment(): Partial<EmailServiceConfig> | undefined;
116
+ /**
117
+ * @description Selects the delivery provider
118
+ * @summary Prefers an explicit `provider`, then infers `smtp` from a
119
+ * configured `host` and `graph` from a configured `token`.
120
+ * @param config - Resolved service config
121
+ * @returns The resolved provider
122
+ * @throws {InternalError} when neither an SMTP host nor a Graph token is configured
123
+ */
124
+ protected resolveProvider(config: EmailServiceConfig): EmailProvider;
125
+ /**
126
+ * @description Resolves the fallback sender address
127
+ * @summary Uses `from`, then `username`, then the `From` header override.
128
+ * @param config - Resolved service config
129
+ * @returns The resolved sender address
130
+ * @throws {InternalError} when no sender address can be resolved
131
+ */
132
+ protected resolveFrom(config: EmailServiceConfig): string;
133
+ /**
134
+ * @description Sends an email through the resolved provider
135
+ * @summary Builds the raw MIME message (honouring `input.from`, else the
136
+ * resolved config sender), then delivers via SMTP or Graph. SMTP config
137
+ * passes `allowPlaintextAuth` through unchanged, so the plaintext-AUTH
138
+ * opt-out is inherited from the service config.
139
+ * @param input - Message input (recipients, subject, text/html body, attachments)
140
+ * @returns The send result with the generated `Message-ID` and provider
141
+ * @throws {BadRequestError} when an address, attachment filename, or content type fails validation (via {@link buildEmail})
142
+ * @throws {InternalError} when the provider cannot be resolved, the SMTP host is missing, plaintext AUTH is refused, or SMTP delivery fails
143
+ */
144
+ send(input: EmailMessageInput): Promise<EmailSendResult>;
145
+ /**
146
+ * @description Posts a raw MIME message to the Microsoft Graph `sendMail` endpoint
147
+ * @summary Sends the base64-encoded raw message to
148
+ * `/users/<from>/sendMail` (or `/me/sendMail` when no sender is resolved)
149
+ * with the configured `graphBaseUrl`/`baseUrl`.
150
+ * @param raw - Raw RFC 5322 message text
151
+ * @param from - Sender mailbox (UPN) for the Graph path
152
+ * @throws {Error} Graph error mapped through {@link httpError}
153
+ */
154
+ protected sendViaGraph(raw: string, from: string): Promise<void>;
155
+ /**
156
+ * @description Lists messages from a Graph mailbox
157
+ * @summary Queries `<mailbox>/messages` with `$top`, an optional
158
+ * subject/since `$filter`, and `receivedDateTime desc` ordering. The mailbox
159
+ * is URL-encoded as a single path segment, quotes in the subject are escaped
160
+ * for the OData string literal, and `since` must be an ISO 8601 date.
161
+ * @param query - Inbox filter (mailbox, limit, since, subject)
162
+ * @returns The raw Graph message records
163
+ * @throws {BadRequestError} when `since` is not an ISO 8601 date
164
+ * @throws {InternalError} when no `token` is configured; Graph errors mapped through {@link httpError}
165
+ */
166
+ listInbox(query?: EmailInboxQuery): Promise<Array<Record<string, unknown>>>;
167
+ /**
168
+ * @description Lists messages directly over IMAP
169
+ * @summary Dynamically imports the optional `imapflow` package, connects to
170
+ * `host` (default port 993, implicit TLS), and fetches the newest messages
171
+ * from `INBOX`.
172
+ *
173
+ * R2 direct-library-wrap justification: IMAP is a stateful protocol
174
+ * (mailbox locks, sequence/UID state, IDLE) whose correct implementation is
175
+ * large and security-sensitive. `imapflow` is the maintained n8n-vetted
176
+ * client for exactly this surface, so wrapping it is deliberate; a local
177
+ * reimplementation would add risk without changing the node contract. The
178
+ * package stays optional so SMTP/Graph-only consumers do not install it.
179
+ * @param query - Inbox filter (limit only is honoured by IMAP)
180
+ * @returns The fetched IMAP message records
181
+ * @throws {InternalError} when `imapflow` is not installed, no `host` is configured, or the IMAP session fails
182
+ */
183
+ listImapMessages(query?: EmailInboxQuery): Promise<Array<Record<string, unknown>>>;
184
+ }
@@ -0,0 +1,184 @@
1
+ import { HttpApiService, type HttpApiServiceConfig } from "../../shared/http/index.d.mts";
2
+ import { type EmailMessageInput } from "./mime.d.mts";
3
+ /**
4
+ * @description Delivery provider selected for a send
5
+ * @summary `smtp` delivers through the built-in raw-MIME client; `graph`
6
+ * posts to the Microsoft Graph `sendMail` endpoint.
7
+ * @category Comms
8
+ * @memberOf module:integrations/comms/email/service
9
+ */
10
+ export type EmailProvider = "smtp" | "graph";
11
+ /**
12
+ * @description Configuration for the Email service
13
+ * @summary Extends {@link HttpApiServiceConfig} with the SMTP connection
14
+ * settings and the Microsoft Graph token/base URL. Every field falls back to
15
+ * the `comms.email` environment slice when omitted. A `host` selects the SMTP
16
+ * provider; a `token` (without `host`) selects Graph.
17
+ * @category Comms
18
+ * @memberOf module:integrations/comms/email/service
19
+ */
20
+ export interface EmailServiceConfig extends HttpApiServiceConfig {
21
+ provider?: EmailProvider;
22
+ host?: string;
23
+ port?: number;
24
+ secure?: boolean;
25
+ username?: string;
26
+ password?: string;
27
+ /**
28
+ * Explicitly allow SMTP `AUTH LOGIN` over a plaintext session. Defaults to
29
+ * `false`: credentials are only sent after implicit TLS or a STARTTLS upgrade.
30
+ */
31
+ allowPlaintextAuth?: boolean;
32
+ from?: string;
33
+ graphBaseUrl?: string;
34
+ token?: string;
35
+ }
36
+ /**
37
+ * @description Result of a successful email send
38
+ * @summary Carries the generated RFC 5322 `Message-ID`, the resolved sender,
39
+ * the flattened recipient list, and the provider that delivered it.
40
+ * @category Comms
41
+ * @memberOf module:integrations/comms/email/service
42
+ */
43
+ export interface EmailSendResult {
44
+ /** @description Generated `Message-ID` (also present in the raw MIME headers) */
45
+ messageId: string;
46
+ /** @description Sender address used for delivery */
47
+ from: string;
48
+ /** @description All To/Cc/Bcc recipients, in that order */
49
+ recipients: string[];
50
+ /** @description Provider that performed the delivery */
51
+ provider: EmailProvider;
52
+ }
53
+ /**
54
+ * @description Filter for inbox reads
55
+ * @summary Applies to both {@link EmailService.listInbox} (Graph) and
56
+ * {@link EmailService.listImapMessages} (IMAP): mailbox path, page size, a
57
+ * lower received-date bound, and a subject filter.
58
+ * @category Comms
59
+ * @memberOf module:integrations/comms/email/service
60
+ */
61
+ export interface EmailInboxQuery {
62
+ /** @description Mailbox path to read (default `me` on Graph, `INBOX` on IMAP) */
63
+ mailbox?: string;
64
+ /** @description Maximum messages returned (default 25) */
65
+ limit?: number;
66
+ /** @description Only messages received after this date (Graph `$filter`); must be an ISO 8601 date or timestamp */
67
+ since?: string;
68
+ /** @description Subject `contains` filter (Graph only) */
69
+ subject?: string;
70
+ }
71
+ /**
72
+ * @description Multi-provider email send/inbox service
73
+ * @summary Resolves the delivery provider from config (`provider`, or inferred
74
+ * from the presence of `host` vs `token`), builds RFC 5322 MIME with
75
+ * UTF-8-encoded headers via {@link buildEmail}, then delivers through SMTP or
76
+ * posts to Graph. Inbox reads go through Graph `messages` (with `$top`,
77
+ * `$filter`, `$orderby`) or the optional `imapflow` package.
78
+ * @category Comms
79
+ * @memberOf module:integrations/comms/email/service
80
+ */
81
+ export declare class EmailService extends HttpApiService<EmailServiceConfig> {
82
+ protected readonly serviceName = "Email";
83
+ /**
84
+ * @description Default Microsoft Graph base URL used when no override is configured
85
+ * @returns The Graph v1.0 endpoint URL
86
+ */
87
+ protected defaultBaseUrl(): string;
88
+ /**
89
+ * @description Authorization headers for Graph requests
90
+ * @param config - Resolved service config
91
+ * @returns A bearer-token `Authorization` header map, empty when no `token` is configured
92
+ */
93
+ protected authHeaders(config: EmailServiceConfig): Record<string, string>;
94
+ /**
95
+ * @description Pins the SMTP plaintext-AUTH default on top of the base initialization
96
+ * @summary Runs the {@link HttpApiService} initialization (explicit config
97
+ * merged over the `comms.email` environment slice) and then defaults an
98
+ * unresolved `allowPlaintextAuth` to `false`, so credentials are only sent
99
+ * over a TLS-protected session unless the config explicitly opts in. This
100
+ * closes the F1 residual where an environment-only `allowPlaintextAuth`
101
+ * opt-in would otherwise reach a boot whose explicit config omits the key
102
+ * (defense in depth on top of {@link bootWithoutEnvironment}, which disables
103
+ * the environment slice entirely on the node path).
104
+ * @param {...any[]} args - An optional `Partial<EmailServiceConfig>`, optionally followed by a decaf `Context`.
105
+ * @returns {Promise<{config: EmailServiceConfig, client: AxiosInstance}>} The merged configuration, with `allowPlaintextAuth` defaulted to `false` when unset, and the configured Axios instance.
106
+ */
107
+ initialize(...args: any[]): Promise<{
108
+ config: EmailServiceConfig;
109
+ client: import("axios").AxiosInstance;
110
+ }>;
111
+ /**
112
+ * @description Builds service config from the `comms.email` environment slice
113
+ * @returns A partial config when either an SMTP `host` or a Graph `token` is present, otherwise `undefined`
114
+ */
115
+ protected configFromEnvironment(): Partial<EmailServiceConfig> | undefined;
116
+ /**
117
+ * @description Selects the delivery provider
118
+ * @summary Prefers an explicit `provider`, then infers `smtp` from a
119
+ * configured `host` and `graph` from a configured `token`.
120
+ * @param config - Resolved service config
121
+ * @returns The resolved provider
122
+ * @throws {InternalError} when neither an SMTP host nor a Graph token is configured
123
+ */
124
+ protected resolveProvider(config: EmailServiceConfig): EmailProvider;
125
+ /**
126
+ * @description Resolves the fallback sender address
127
+ * @summary Uses `from`, then `username`, then the `From` header override.
128
+ * @param config - Resolved service config
129
+ * @returns The resolved sender address
130
+ * @throws {InternalError} when no sender address can be resolved
131
+ */
132
+ protected resolveFrom(config: EmailServiceConfig): string;
133
+ /**
134
+ * @description Sends an email through the resolved provider
135
+ * @summary Builds the raw MIME message (honouring `input.from`, else the
136
+ * resolved config sender), then delivers via SMTP or Graph. SMTP config
137
+ * passes `allowPlaintextAuth` through unchanged, so the plaintext-AUTH
138
+ * opt-out is inherited from the service config.
139
+ * @param input - Message input (recipients, subject, text/html body, attachments)
140
+ * @returns The send result with the generated `Message-ID` and provider
141
+ * @throws {BadRequestError} when an address, attachment filename, or content type fails validation (via {@link buildEmail})
142
+ * @throws {InternalError} when the provider cannot be resolved, the SMTP host is missing, plaintext AUTH is refused, or SMTP delivery fails
143
+ */
144
+ send(input: EmailMessageInput): Promise<EmailSendResult>;
145
+ /**
146
+ * @description Posts a raw MIME message to the Microsoft Graph `sendMail` endpoint
147
+ * @summary Sends the base64-encoded raw message to
148
+ * `/users/<from>/sendMail` (or `/me/sendMail` when no sender is resolved)
149
+ * with the configured `graphBaseUrl`/`baseUrl`.
150
+ * @param raw - Raw RFC 5322 message text
151
+ * @param from - Sender mailbox (UPN) for the Graph path
152
+ * @throws {Error} Graph error mapped through {@link httpError}
153
+ */
154
+ protected sendViaGraph(raw: string, from: string): Promise<void>;
155
+ /**
156
+ * @description Lists messages from a Graph mailbox
157
+ * @summary Queries `<mailbox>/messages` with `$top`, an optional
158
+ * subject/since `$filter`, and `receivedDateTime desc` ordering. The mailbox
159
+ * is URL-encoded as a single path segment, quotes in the subject are escaped
160
+ * for the OData string literal, and `since` must be an ISO 8601 date.
161
+ * @param query - Inbox filter (mailbox, limit, since, subject)
162
+ * @returns The raw Graph message records
163
+ * @throws {BadRequestError} when `since` is not an ISO 8601 date
164
+ * @throws {InternalError} when no `token` is configured; Graph errors mapped through {@link httpError}
165
+ */
166
+ listInbox(query?: EmailInboxQuery): Promise<Array<Record<string, unknown>>>;
167
+ /**
168
+ * @description Lists messages directly over IMAP
169
+ * @summary Dynamically imports the optional `imapflow` package, connects to
170
+ * `host` (default port 993, implicit TLS), and fetches the newest messages
171
+ * from `INBOX`.
172
+ *
173
+ * R2 direct-library-wrap justification: IMAP is a stateful protocol
174
+ * (mailbox locks, sequence/UID state, IDLE) whose correct implementation is
175
+ * large and security-sensitive. `imapflow` is the maintained n8n-vetted
176
+ * client for exactly this surface, so wrapping it is deliberate; a local
177
+ * reimplementation would add risk without changing the node contract. The
178
+ * package stays optional so SMTP/Graph-only consumers do not install it.
179
+ * @param query - Inbox filter (limit only is honoured by IMAP)
180
+ * @returns The fetched IMAP message records
181
+ * @throws {InternalError} when `imapflow` is not installed, no `host` is configured, or the IMAP session fails
182
+ */
183
+ listImapMessages(query?: EmailInboxQuery): Promise<Array<Record<string, unknown>>>;
184
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @module integrations/comms/email
3
+ * @summary Email service (SMTP + Microsoft Graph send, Graph/IMAP inbox reads).
4
+ * @description Re-exports the {@link EmailService} and its config/result
5
+ * types, the raw MIME builder, and the nodemailer-backed {@link SmtpClient}
6
+ * with its {@link SmtpConfig}
7
+ * (also available directly from the `./smtp` subpath).
8
+ */
9
+ export * from "./EmailService.d.cts";
10
+ export * from "./mime.d.cts";
11
+ export * from "./smtp.d.cts";