@memberjunction/messaging-adapters 0.0.1 → 5.17.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 (58) hide show
  1. package/README.md +231 -43
  2. package/dist/base/BaseMessagingAdapter.d.ts +428 -0
  3. package/dist/base/BaseMessagingAdapter.d.ts.map +1 -0
  4. package/dist/base/BaseMessagingAdapter.js +934 -0
  5. package/dist/base/BaseMessagingAdapter.js.map +1 -0
  6. package/dist/base/message-formatter.d.ts +70 -0
  7. package/dist/base/message-formatter.d.ts.map +1 -0
  8. package/dist/base/message-formatter.js +201 -0
  9. package/dist/base/message-formatter.js.map +1 -0
  10. package/dist/base/types.d.ts +211 -0
  11. package/dist/base/types.d.ts.map +1 -0
  12. package/dist/base/types.js +6 -0
  13. package/dist/base/types.js.map +1 -0
  14. package/dist/index.d.ts +72 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +76 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/slack/SlackAdapter.d.ts +141 -0
  19. package/dist/slack/SlackAdapter.d.ts.map +1 -0
  20. package/dist/slack/SlackAdapter.js +291 -0
  21. package/dist/slack/SlackAdapter.js.map +1 -0
  22. package/dist/slack/SlackMessagingExtension.d.ts +148 -0
  23. package/dist/slack/SlackMessagingExtension.d.ts.map +1 -0
  24. package/dist/slack/SlackMessagingExtension.js +433 -0
  25. package/dist/slack/SlackMessagingExtension.js.map +1 -0
  26. package/dist/slack/slack-block-builder.d.ts +133 -0
  27. package/dist/slack/slack-block-builder.d.ts.map +1 -0
  28. package/dist/slack/slack-block-builder.js +748 -0
  29. package/dist/slack/slack-block-builder.js.map +1 -0
  30. package/dist/slack/slack-formatter.d.ts +37 -0
  31. package/dist/slack/slack-formatter.d.ts.map +1 -0
  32. package/dist/slack/slack-formatter.js +116 -0
  33. package/dist/slack/slack-formatter.js.map +1 -0
  34. package/dist/slack/slack-interactivity.d.ts +38 -0
  35. package/dist/slack/slack-interactivity.d.ts.map +1 -0
  36. package/dist/slack/slack-interactivity.js +414 -0
  37. package/dist/slack/slack-interactivity.js.map +1 -0
  38. package/dist/slack/slack-routes.d.ts +35 -0
  39. package/dist/slack/slack-routes.d.ts.map +1 -0
  40. package/dist/slack/slack-routes.js +98 -0
  41. package/dist/slack/slack-routes.js.map +1 -0
  42. package/dist/teams/TeamsAdapter.d.ts +155 -0
  43. package/dist/teams/TeamsAdapter.d.ts.map +1 -0
  44. package/dist/teams/TeamsAdapter.js +383 -0
  45. package/dist/teams/TeamsAdapter.js.map +1 -0
  46. package/dist/teams/TeamsMessagingExtension.d.ts +75 -0
  47. package/dist/teams/TeamsMessagingExtension.d.ts.map +1 -0
  48. package/dist/teams/TeamsMessagingExtension.js +176 -0
  49. package/dist/teams/TeamsMessagingExtension.js.map +1 -0
  50. package/dist/teams/teams-card-builder.d.ts +94 -0
  51. package/dist/teams/teams-card-builder.d.ts.map +1 -0
  52. package/dist/teams/teams-card-builder.js +648 -0
  53. package/dist/teams/teams-card-builder.js.map +1 -0
  54. package/dist/teams/teams-formatter.d.ts +39 -0
  55. package/dist/teams/teams-formatter.d.ts.map +1 -0
  56. package/dist/teams/teams-formatter.js +107 -0
  57. package/dist/teams/teams-formatter.js.map +1 -0
  58. package/package.json +40 -7
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @module @memberjunction/messaging-adapters
3
+ * @description Convert Markdown agent responses to Microsoft Teams Adaptive Card format.
4
+ *
5
+ * Adaptive Cards are Microsoft's rich content card format used across
6
+ * Teams, Outlook, and other Microsoft products. They support:
7
+ * - TextBlock elements with built-in Markdown rendering
8
+ * - Monospace font for code blocks
9
+ * - Multiple text sizes and weights for headers
10
+ * - Auto-wrapping text
11
+ *
12
+ * @see https://adaptivecards.io/designer/
13
+ * @see https://learn.microsoft.com/en-us/adaptive-cards/
14
+ */
15
+ /**
16
+ * Convert Markdown text from an agent response to a Microsoft Teams Adaptive Card.
17
+ *
18
+ * Teams TextBlock elements support a subset of Markdown natively, so most
19
+ * formatting is passed through directly. Code blocks use the `Monospace`
20
+ * font type.
21
+ *
22
+ * @param markdown - Raw Markdown text from an agent response.
23
+ * @returns Adaptive Card JSON object ready to attach to a Teams message.
24
+ *
25
+ * @example
26
+ * ```typescript
27
+ * const card = markdownToAdaptiveCard('# Hello\n\nThis is **bold** text.');
28
+ * // {
29
+ * // type: 'AdaptiveCard',
30
+ * // version: '1.4',
31
+ * // body: [
32
+ * // { type: 'TextBlock', text: 'Hello', size: 'Large', weight: 'Bolder', wrap: true },
33
+ * // { type: 'TextBlock', text: 'This is **bold** text.', wrap: true }
34
+ * // ]
35
+ * // }
36
+ * ```
37
+ */
38
+ export declare function markdownToAdaptiveCard(markdown: string): Record<string, unknown>;
39
+ //# sourceMappingURL=teams-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teams-formatter.d.ts","sourceRoot":"","sources":["../../src/teams/teams-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiChF"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @module @memberjunction/messaging-adapters
3
+ * @description Convert Markdown agent responses to Microsoft Teams Adaptive Card format.
4
+ *
5
+ * Adaptive Cards are Microsoft's rich content card format used across
6
+ * Teams, Outlook, and other Microsoft products. They support:
7
+ * - TextBlock elements with built-in Markdown rendering
8
+ * - Monospace font for code blocks
9
+ * - Multiple text sizes and weights for headers
10
+ * - Auto-wrapping text
11
+ *
12
+ * @see https://adaptivecards.io/designer/
13
+ * @see https://learn.microsoft.com/en-us/adaptive-cards/
14
+ */
15
+ import { splitMarkdownIntoSections } from '../base/message-formatter.js';
16
+ /**
17
+ * Convert Markdown text from an agent response to a Microsoft Teams Adaptive Card.
18
+ *
19
+ * Teams TextBlock elements support a subset of Markdown natively, so most
20
+ * formatting is passed through directly. Code blocks use the `Monospace`
21
+ * font type.
22
+ *
23
+ * @param markdown - Raw Markdown text from an agent response.
24
+ * @returns Adaptive Card JSON object ready to attach to a Teams message.
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const card = markdownToAdaptiveCard('# Hello\n\nThis is **bold** text.');
29
+ * // {
30
+ * // type: 'AdaptiveCard',
31
+ * // version: '1.4',
32
+ * // body: [
33
+ * // { type: 'TextBlock', text: 'Hello', size: 'Large', weight: 'Bolder', wrap: true },
34
+ * // { type: 'TextBlock', text: 'This is **bold** text.', wrap: true }
35
+ * // ]
36
+ * // }
37
+ * ```
38
+ */
39
+ export function markdownToAdaptiveCard(markdown) {
40
+ const bodyElements = [];
41
+ const sections = splitMarkdownIntoSections(markdown);
42
+ for (const section of sections) {
43
+ switch (section.Type) {
44
+ case 'header':
45
+ bodyElements.push(createHeaderElement(section.Content));
46
+ break;
47
+ case 'code':
48
+ bodyElements.push(createCodeElement(section.Content));
49
+ break;
50
+ case 'text':
51
+ bodyElements.push(createTextElement(section.Content));
52
+ break;
53
+ }
54
+ }
55
+ // Ensure we always have at least one element
56
+ if (bodyElements.length === 0) {
57
+ bodyElements.push({
58
+ type: 'TextBlock',
59
+ text: markdown || '(empty response)',
60
+ wrap: true
61
+ });
62
+ }
63
+ return {
64
+ type: 'AdaptiveCard',
65
+ version: '1.4',
66
+ '$schema': 'http://adaptivecards.io/schemas/adaptive-card.json',
67
+ body: bodyElements
68
+ };
69
+ }
70
+ /**
71
+ * Create an Adaptive Card TextBlock for a header.
72
+ */
73
+ function createHeaderElement(text) {
74
+ return {
75
+ type: 'TextBlock',
76
+ text,
77
+ size: 'Large',
78
+ weight: 'Bolder',
79
+ wrap: true,
80
+ spacing: 'Medium'
81
+ };
82
+ }
83
+ /**
84
+ * Create an Adaptive Card TextBlock for a code block.
85
+ * Uses monospace font and wraps content in backticks for rendering.
86
+ */
87
+ function createCodeElement(code) {
88
+ return {
89
+ type: 'TextBlock',
90
+ text: '```\n' + code + '\n```',
91
+ fontType: 'Monospace',
92
+ wrap: true,
93
+ spacing: 'Small'
94
+ };
95
+ }
96
+ /**
97
+ * Create an Adaptive Card TextBlock for regular text.
98
+ * Markdown is passed through since TextBlock supports it natively.
99
+ */
100
+ function createTextElement(text) {
101
+ return {
102
+ type: 'TextBlock',
103
+ text,
104
+ wrap: true
105
+ };
106
+ }
107
+ //# sourceMappingURL=teams-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teams-formatter.js","sourceRoot":"","sources":["../../src/teams/teams-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACnD,MAAM,YAAY,GAA8B,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAErD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACT,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxD,MAAM;YACV,KAAK,MAAM;gBACP,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtD,MAAM;YACV,KAAK,MAAM;gBACP,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtD,MAAM;QACd,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,YAAY,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,QAAQ,IAAI,kBAAkB;YACpC,IAAI,EAAE,IAAI;SACb,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,KAAK;QACd,SAAS,EAAE,oDAAoD;QAC/D,IAAI,EAAE,YAAY;KACrB,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACrC,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,IAAI;QACJ,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,QAAQ;KACpB,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACnC,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO;QAC9B,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,OAAO;KACnB,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY;IACnC,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,IAAI;QACJ,IAAI,EAAE,IAAI;KACb,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,43 @@
1
1
  {
2
2
  "name": "@memberjunction/messaging-adapters",
3
- "version": "0.0.1",
4
- "description": "OIDC trusted publishing setup package for @memberjunction/messaging-adapters",
5
- "keywords": [
6
- "oidc",
7
- "trusted-publishing",
8
- "setup"
9
- ]
3
+ "version": "5.17.0",
4
+ "description": "MemberJunction: Messaging platform adapters (Slack, Teams) for routing inbound messages to MJ AI agents via the Server Extension framework",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "files": [
9
+ "/dist"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc && tsc-alias -f",
13
+ "test": "vitest run",
14
+ "test:watch": "vitest",
15
+ "test:coverage": "vitest run --coverage"
16
+ },
17
+ "author": "MemberJunction.com",
18
+ "license": "ISC",
19
+ "dependencies": {
20
+ "@memberjunction/server-extensions-core": "5.17.0",
21
+ "@memberjunction/global": "5.17.0",
22
+ "@memberjunction/core": "5.17.0",
23
+ "@memberjunction/core-entities": "5.17.0",
24
+ "@memberjunction/ai": "5.17.0",
25
+ "@memberjunction/ai-agents": "5.17.0",
26
+ "@memberjunction/ai-core-plus": "5.17.0",
27
+ "@memberjunction/sqlserver-dataprovider": "5.17.0",
28
+ "@slack/web-api": "^7.9.1",
29
+ "@slack/socket-mode": "^2.0.3",
30
+ "botbuilder": "^4.23.1",
31
+ "botframework-connector": "^4.23.1",
32
+ "express": "^5.2.1"
33
+ },
34
+ "devDependencies": {
35
+ "typescript": "^5.9.3",
36
+ "vitest": "^3.1.1",
37
+ "vite-tsconfig-paths": "^5.1.4"
38
+ },
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/MemberJunction/MJ"
42
+ }
10
43
  }