nodebb-plugin-integration 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "NodeBB Integration",
|
|
3
|
+
|
|
4
|
+
"settings": {
|
|
5
|
+
"ai-provider": "AI Provider",
|
|
6
|
+
"openai-key": "OpenAI API Key",
|
|
7
|
+
"openai-model": "OpenAI Embedding Model",
|
|
8
|
+
"qdrant-url": "Qdrant URL",
|
|
9
|
+
"collection": "Collection",
|
|
10
|
+
"mcp-enabled": "Enable MCP Server",
|
|
11
|
+
"mcp-port": "MCP Port",
|
|
12
|
+
"save": "Save Settings",
|
|
13
|
+
"saved": "Settings saved successfully"
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "���������� NodeBB",
|
|
3
|
+
|
|
4
|
+
"settings": {
|
|
5
|
+
"ai-provider": "AI ���������",
|
|
6
|
+
"openai-key": "OpenAI API ����",
|
|
7
|
+
"openai-model": "������ ����������� OpenAI",
|
|
8
|
+
"qdrant-url": "URL Qdrant",
|
|
9
|
+
"collection": "���������",
|
|
10
|
+
"mcp-enabled": "�������� MCP ������",
|
|
11
|
+
"mcp-port": "���� MCP",
|
|
12
|
+
"save": "��������� ���������",
|
|
13
|
+
"saved": "��������� ������� ���������"
|
|
14
|
+
}
|
|
15
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nodebb-plugin-integration",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "AI integration layer for NodeBB forums with MCP, semantic search, RAG and Qdrant knowledge pipeline",
|
|
5
5
|
"main": "library.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,6 +8,17 @@
|
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "https://github.com/Sergey-ek/nodebb-plugin-integration.git"
|
|
10
10
|
},
|
|
11
|
+
"files": [
|
|
12
|
+
"library.js",
|
|
13
|
+
"plugin.json",
|
|
14
|
+
"src",
|
|
15
|
+
"public",
|
|
16
|
+
"templates",
|
|
17
|
+
"languages",
|
|
18
|
+
"README.md",
|
|
19
|
+
"README.ru.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
11
22
|
"keywords": [
|
|
12
23
|
"nodebb",
|
|
13
24
|
"nodebb-plugin",
|
|
@@ -23,13 +34,6 @@
|
|
|
23
34
|
"engines": {
|
|
24
35
|
"node": ">=20"
|
|
25
36
|
},
|
|
26
|
-
"files": [
|
|
27
|
-
"library.js",
|
|
28
|
-
"plugin.json",
|
|
29
|
-
"src",
|
|
30
|
-
"README.md",
|
|
31
|
-
"LICENSE"
|
|
32
|
-
],
|
|
33
37
|
"scripts": {
|
|
34
38
|
"test": "cross-env NODE_ENV=test mocha test/*.test.js",
|
|
35
39
|
"check": "node --check library.js && node --check src/routes/index.js && node --check src/routes/api.js && node --check src/mcp/server.js && node --check src/mcp/tools.js",
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
define("admin/plugins/integration", [
|
|
4
|
+
"settings",
|
|
5
|
+
"alerts"
|
|
6
|
+
], function (Settings, Alerts) {
|
|
7
|
+
|
|
8
|
+
const ACP = {};
|
|
9
|
+
|
|
10
|
+
ACP.init = function () {
|
|
11
|
+
|
|
12
|
+
Settings.load(
|
|
13
|
+
"nodebb-plugin-integration",
|
|
14
|
+
$(".acp-page-container"),
|
|
15
|
+
function () {
|
|
16
|
+
|
|
17
|
+
console.log(
|
|
18
|
+
"[NodeBB Integration] settings loaded"
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
$("#save").on("click", function () {
|
|
25
|
+
|
|
26
|
+
Settings.save(
|
|
27
|
+
"nodebb-plugin-integration",
|
|
28
|
+
$(".acp-page-container"),
|
|
29
|
+
function () {
|
|
30
|
+
|
|
31
|
+
Alerts.success({
|
|
32
|
+
title: "NodeBB Integration",
|
|
33
|
+
message: "Settings saved"
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
return ACP;
|
|
44
|
+
|
|
45
|
+
});
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
<div class="acp-page-container">
|
|
2
|
+
|
|
3
|
+
<h1>
|
|
4
|
+
<i class="fa fa-robot"></i>
|
|
5
|
+
{{title}}
|
|
6
|
+
</h1>
|
|
7
|
+
|
|
8
|
+
<hr />
|
|
9
|
+
|
|
10
|
+
<form role="form">
|
|
11
|
+
|
|
12
|
+
<div class="mb-3">
|
|
13
|
+
|
|
14
|
+
<label class="form-label">
|
|
15
|
+
{{settings.ai-provider}}
|
|
16
|
+
</label>
|
|
17
|
+
|
|
18
|
+
<select
|
|
19
|
+
class="form-select"
|
|
20
|
+
name="aiProvider"
|
|
21
|
+
>
|
|
22
|
+
<option value="fake">Fake</option>
|
|
23
|
+
<option value="openai">OpenAI</option>
|
|
24
|
+
</select>
|
|
25
|
+
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="mb-3">
|
|
29
|
+
|
|
30
|
+
<label class="form-label">
|
|
31
|
+
OpenAI API Key
|
|
32
|
+
</label>
|
|
33
|
+
|
|
34
|
+
<input
|
|
35
|
+
type="password"
|
|
36
|
+
class="form-control"
|
|
37
|
+
name="openaiApiKey"
|
|
38
|
+
autocomplete="off"
|
|
39
|
+
/>
|
|
40
|
+
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div class="mb-3">
|
|
44
|
+
|
|
45
|
+
<label class="form-label">
|
|
46
|
+
OpenAI Embedding Model
|
|
47
|
+
</label>
|
|
48
|
+
|
|
49
|
+
<input
|
|
50
|
+
class="form-control"
|
|
51
|
+
name="openaiModel"
|
|
52
|
+
/>
|
|
53
|
+
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<div class="mb-3">
|
|
57
|
+
|
|
58
|
+
<label class="form-label">
|
|
59
|
+
Qdrant URL
|
|
60
|
+
</label>
|
|
61
|
+
|
|
62
|
+
<input
|
|
63
|
+
class="form-control"
|
|
64
|
+
name="qdrantUrl"
|
|
65
|
+
/>
|
|
66
|
+
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div class="mb-3">
|
|
70
|
+
|
|
71
|
+
<label class="form-label">
|
|
72
|
+
Collection
|
|
73
|
+
</label>
|
|
74
|
+
|
|
75
|
+
<input
|
|
76
|
+
class="form-control"
|
|
77
|
+
name="collection"
|
|
78
|
+
/>
|
|
79
|
+
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
<div class="form-check mb-3">
|
|
83
|
+
|
|
84
|
+
<input
|
|
85
|
+
id="mcpEnabled"
|
|
86
|
+
class="form-check-input"
|
|
87
|
+
type="checkbox"
|
|
88
|
+
name="mcpEnabled"
|
|
89
|
+
/>
|
|
90
|
+
|
|
91
|
+
<label
|
|
92
|
+
class="form-check-label"
|
|
93
|
+
for="mcpEnabled"
|
|
94
|
+
>
|
|
95
|
+
Enable MCP Server
|
|
96
|
+
</label>
|
|
97
|
+
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<div class="mb-3">
|
|
101
|
+
|
|
102
|
+
<label class="form-label">
|
|
103
|
+
MCP Port
|
|
104
|
+
</label>
|
|
105
|
+
|
|
106
|
+
<input
|
|
107
|
+
class="form-control"
|
|
108
|
+
name="mcpPort"
|
|
109
|
+
type="number"
|
|
110
|
+
/>
|
|
111
|
+
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<hr />
|
|
115
|
+
|
|
116
|
+
<button
|
|
117
|
+
id="save"
|
|
118
|
+
class="btn btn-primary"
|
|
119
|
+
type="button"
|
|
120
|
+
>
|
|
121
|
+
|
|
122
|
+
<i class="fa fa-save"></i>
|
|
123
|
+
|
|
124
|
+
Save Settings
|
|
125
|
+
|
|
126
|
+
</button>
|
|
127
|
+
|
|
128
|
+
</form>
|
|
129
|
+
|
|
130
|
+
</div>
|