@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.
- package/README.md +231 -43
- package/dist/base/BaseMessagingAdapter.d.ts +428 -0
- package/dist/base/BaseMessagingAdapter.d.ts.map +1 -0
- package/dist/base/BaseMessagingAdapter.js +934 -0
- package/dist/base/BaseMessagingAdapter.js.map +1 -0
- package/dist/base/message-formatter.d.ts +70 -0
- package/dist/base/message-formatter.d.ts.map +1 -0
- package/dist/base/message-formatter.js +201 -0
- package/dist/base/message-formatter.js.map +1 -0
- package/dist/base/types.d.ts +211 -0
- package/dist/base/types.d.ts.map +1 -0
- package/dist/base/types.js +6 -0
- package/dist/base/types.js.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/slack/SlackAdapter.d.ts +141 -0
- package/dist/slack/SlackAdapter.d.ts.map +1 -0
- package/dist/slack/SlackAdapter.js +291 -0
- package/dist/slack/SlackAdapter.js.map +1 -0
- package/dist/slack/SlackMessagingExtension.d.ts +148 -0
- package/dist/slack/SlackMessagingExtension.d.ts.map +1 -0
- package/dist/slack/SlackMessagingExtension.js +433 -0
- package/dist/slack/SlackMessagingExtension.js.map +1 -0
- package/dist/slack/slack-block-builder.d.ts +133 -0
- package/dist/slack/slack-block-builder.d.ts.map +1 -0
- package/dist/slack/slack-block-builder.js +748 -0
- package/dist/slack/slack-block-builder.js.map +1 -0
- package/dist/slack/slack-formatter.d.ts +37 -0
- package/dist/slack/slack-formatter.d.ts.map +1 -0
- package/dist/slack/slack-formatter.js +116 -0
- package/dist/slack/slack-formatter.js.map +1 -0
- package/dist/slack/slack-interactivity.d.ts +38 -0
- package/dist/slack/slack-interactivity.d.ts.map +1 -0
- package/dist/slack/slack-interactivity.js +414 -0
- package/dist/slack/slack-interactivity.js.map +1 -0
- package/dist/slack/slack-routes.d.ts +35 -0
- package/dist/slack/slack-routes.d.ts.map +1 -0
- package/dist/slack/slack-routes.js +98 -0
- package/dist/slack/slack-routes.js.map +1 -0
- package/dist/teams/TeamsAdapter.d.ts +155 -0
- package/dist/teams/TeamsAdapter.d.ts.map +1 -0
- package/dist/teams/TeamsAdapter.js +383 -0
- package/dist/teams/TeamsAdapter.js.map +1 -0
- package/dist/teams/TeamsMessagingExtension.d.ts +75 -0
- package/dist/teams/TeamsMessagingExtension.d.ts.map +1 -0
- package/dist/teams/TeamsMessagingExtension.js +176 -0
- package/dist/teams/TeamsMessagingExtension.js.map +1 -0
- package/dist/teams/teams-card-builder.d.ts +94 -0
- package/dist/teams/teams-card-builder.d.ts.map +1 -0
- package/dist/teams/teams-card-builder.js +648 -0
- package/dist/teams/teams-card-builder.js.map +1 -0
- package/dist/teams/teams-formatter.d.ts +39 -0
- package/dist/teams/teams-formatter.d.ts.map +1 -0
- package/dist/teams/teams-formatter.js +107 -0
- package/dist/teams/teams-formatter.js.map +1 -0
- 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": "
|
|
4
|
-
"description": "
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
}
|