opc-agent 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/channels/email.d.ts +32 -26
- package/dist/channels/email.js +239 -62
- package/dist/channels/feishu.d.ts +21 -6
- package/dist/channels/feishu.js +225 -126
- package/dist/channels/websocket.d.ts +46 -3
- package/dist/channels/websocket.js +306 -37
- package/dist/channels/wechat.d.ts +33 -13
- package/dist/channels/wechat.js +229 -42
- package/dist/cli.js +712 -11
- package/dist/core/a2a.d.ts +17 -0
- package/dist/core/a2a.js +43 -1
- package/dist/core/agent.d.ts +16 -0
- package/dist/core/agent.js +108 -0
- package/dist/core/runtime.d.ts +6 -0
- package/dist/core/runtime.js +161 -2
- package/dist/core/sandbox.d.ts +26 -0
- package/dist/core/sandbox.js +117 -0
- package/dist/core/workflow-graph.d.ts +93 -0
- package/dist/core/workflow-graph.js +247 -0
- package/dist/doctor.d.ts +15 -0
- package/dist/doctor.js +183 -0
- package/dist/eval/index.d.ts +65 -0
- package/dist/eval/index.js +191 -0
- package/dist/index.d.ts +30 -6
- package/dist/index.js +60 -4
- package/dist/plugins/content-filter.d.ts +7 -0
- package/dist/plugins/content-filter.js +25 -0
- package/dist/plugins/index.d.ts +42 -0
- package/dist/plugins/index.js +108 -2
- package/dist/plugins/logger.d.ts +6 -0
- package/dist/plugins/logger.js +20 -0
- package/dist/plugins/rate-limiter.d.ts +7 -0
- package/dist/plugins/rate-limiter.js +35 -0
- package/dist/protocols/a2a/client.d.ts +25 -0
- package/dist/protocols/a2a/client.js +115 -0
- package/dist/protocols/a2a/index.d.ts +6 -0
- package/dist/protocols/a2a/index.js +12 -0
- package/dist/protocols/a2a/server.d.ts +41 -0
- package/dist/protocols/a2a/server.js +295 -0
- package/dist/protocols/a2a/types.d.ts +91 -0
- package/dist/protocols/a2a/types.js +15 -0
- package/dist/protocols/a2a/utils.d.ts +6 -0
- package/dist/protocols/a2a/utils.js +47 -0
- package/dist/protocols/agui/client.d.ts +10 -0
- package/dist/protocols/agui/client.js +75 -0
- package/dist/protocols/agui/index.d.ts +4 -0
- package/dist/protocols/agui/index.js +25 -0
- package/dist/protocols/agui/server.d.ts +37 -0
- package/dist/protocols/agui/server.js +191 -0
- package/dist/protocols/agui/types.d.ts +107 -0
- package/dist/protocols/agui/types.js +17 -0
- package/dist/protocols/index.d.ts +2 -0
- package/dist/protocols/index.js +19 -0
- package/dist/protocols/mcp/agent-tools.d.ts +11 -0
- package/dist/protocols/mcp/agent-tools.js +129 -0
- package/dist/protocols/mcp/index.d.ts +5 -0
- package/dist/protocols/mcp/index.js +11 -0
- package/dist/protocols/mcp/server.d.ts +31 -0
- package/dist/protocols/mcp/server.js +248 -0
- package/dist/protocols/mcp/types.d.ts +92 -0
- package/dist/protocols/mcp/types.js +17 -0
- package/dist/publish/index.d.ts +45 -0
- package/dist/publish/index.js +350 -0
- package/dist/schema/oad.d.ts +682 -65
- package/dist/schema/oad.js +36 -3
- package/dist/security/approval.d.ts +36 -0
- package/dist/security/approval.js +113 -0
- package/dist/security/index.d.ts +4 -0
- package/dist/security/index.js +8 -0
- package/dist/security/keys.d.ts +16 -0
- package/dist/security/keys.js +117 -0
- package/dist/studio/server.d.ts +63 -0
- package/dist/studio/server.js +625 -0
- package/dist/studio-ui/index.html +662 -0
- package/dist/telemetry/index.d.ts +93 -0
- package/dist/telemetry/index.js +285 -0
- package/package.json +5 -3
- package/scripts/install.ps1 +31 -0
- package/scripts/install.sh +40 -0
- package/src/channels/email.ts +351 -177
- package/src/channels/feishu.ts +349 -236
- package/src/channels/websocket.ts +399 -87
- package/src/channels/wechat.ts +329 -149
- package/src/cli.ts +783 -12
- package/src/core/a2a.ts +60 -0
- package/src/core/agent.ts +125 -0
- package/src/core/runtime.ts +127 -0
- package/src/core/sandbox.ts +143 -0
- package/src/core/workflow-graph.ts +365 -0
- package/src/doctor.ts +156 -0
- package/src/eval/index.ts +211 -0
- package/src/eval/suites/basic.json +16 -0
- package/src/eval/suites/memory.json +12 -0
- package/src/eval/suites/safety.json +14 -0
- package/src/index.ts +54 -6
- package/src/plugins/content-filter.ts +23 -0
- package/src/plugins/index.ts +133 -2
- package/src/plugins/logger.ts +18 -0
- package/src/plugins/rate-limiter.ts +38 -0
- package/src/protocols/a2a/client.ts +132 -0
- package/src/protocols/a2a/index.ts +8 -0
- package/src/protocols/a2a/server.ts +333 -0
- package/src/protocols/a2a/types.ts +88 -0
- package/src/protocols/a2a/utils.ts +50 -0
- package/src/protocols/agui/client.ts +83 -0
- package/src/protocols/agui/index.ts +4 -0
- package/src/protocols/agui/server.ts +218 -0
- package/src/protocols/agui/types.ts +153 -0
- package/src/protocols/index.ts +2 -0
- package/src/protocols/mcp/agent-tools.ts +134 -0
- package/src/protocols/mcp/index.ts +8 -0
- package/src/protocols/mcp/server.ts +262 -0
- package/src/protocols/mcp/types.ts +69 -0
- package/src/publish/index.ts +376 -0
- package/src/schema/oad.ts +39 -2
- package/src/security/approval.ts +131 -0
- package/src/security/index.ts +3 -0
- package/src/security/keys.ts +87 -0
- package/src/studio/server.ts +629 -0
- package/src/studio-ui/index.html +662 -0
- package/src/telemetry/index.ts +324 -0
- package/src/types/agent-workstation.d.ts +2 -0
- package/tests/a2a-protocol.test.ts +285 -0
- package/tests/agui-protocol.test.ts +246 -0
- package/tests/channels/discord.test.ts +79 -0
- package/tests/channels/email.test.ts +148 -0
- package/tests/channels/feishu.test.ts +123 -0
- package/tests/channels/telegram.test.ts +129 -0
- package/tests/channels/websocket.test.ts +53 -0
- package/tests/channels/wechat.test.ts +170 -0
- package/tests/chat-cli.test.ts +160 -0
- package/tests/daemon.test.ts +135 -0
- package/tests/deepbrain-wire.test.ts +234 -0
- package/tests/doctor.test.ts +38 -0
- package/tests/eval.test.ts +173 -0
- package/tests/init-role.test.ts +124 -0
- package/tests/mcp-client.test.ts +92 -0
- package/tests/mcp-server.test.ts +178 -0
- package/tests/plugin-a2a-enhanced.test.ts +230 -0
- package/tests/publish.test.ts +231 -0
- package/tests/scheduler.test.ts +200 -0
- package/tests/security-enhanced.test.ts +233 -0
- package/tests/skill-learner.test.ts +161 -0
- package/tests/studio.test.ts +229 -0
- package/tests/subagent.test.ts +63 -0
- package/tests/telemetry.test.ts +186 -0
- package/tests/tools/builtin-extended.test.ts +138 -0
- package/tests/workflow-graph.test.ts +279 -0
- package/tutorial/customer-service-agent/README.md +612 -0
- package/tutorial/customer-service-agent/SOUL.md +26 -0
- package/tutorial/customer-service-agent/agent.yaml +63 -0
- package/tutorial/customer-service-agent/package.json +19 -0
- package/tutorial/customer-service-agent/src/index.ts +69 -0
- package/tutorial/customer-service-agent/src/skills/faq.ts +27 -0
- package/tutorial/customer-service-agent/src/skills/ticket.ts +22 -0
- package/tutorial/customer-service-agent/tsconfig.json +14 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export interface EvalCase {
|
|
2
|
+
id: string;
|
|
3
|
+
input: string;
|
|
4
|
+
expectedOutput?: string;
|
|
5
|
+
expectedContains?: string[];
|
|
6
|
+
expectedNotContains?: string[];
|
|
7
|
+
rubric?: string;
|
|
8
|
+
tags?: string[];
|
|
9
|
+
metadata?: Record<string, any>;
|
|
10
|
+
}
|
|
11
|
+
export interface EvalResult {
|
|
12
|
+
caseId: string;
|
|
13
|
+
input: string;
|
|
14
|
+
output: string;
|
|
15
|
+
scores: {
|
|
16
|
+
exact_match?: number;
|
|
17
|
+
contains?: number;
|
|
18
|
+
not_contains?: number;
|
|
19
|
+
rubric_score?: number;
|
|
20
|
+
latency_ms: number;
|
|
21
|
+
token_count?: number;
|
|
22
|
+
};
|
|
23
|
+
passed: boolean;
|
|
24
|
+
error?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface EvalSuite {
|
|
27
|
+
name: string;
|
|
28
|
+
description?: string;
|
|
29
|
+
cases: EvalCase[];
|
|
30
|
+
}
|
|
31
|
+
export interface EvalReport {
|
|
32
|
+
suite: string;
|
|
33
|
+
timestamp: string;
|
|
34
|
+
totalCases: number;
|
|
35
|
+
passed: number;
|
|
36
|
+
failed: number;
|
|
37
|
+
passRate: number;
|
|
38
|
+
avgLatency: number;
|
|
39
|
+
p95Latency: number;
|
|
40
|
+
results: EvalResult[];
|
|
41
|
+
summary: string;
|
|
42
|
+
}
|
|
43
|
+
export declare class AgentEvaluator {
|
|
44
|
+
private agent;
|
|
45
|
+
constructor(agent: any);
|
|
46
|
+
evalCase(evalCase: EvalCase): Promise<EvalResult>;
|
|
47
|
+
evalSuite(suite: EvalSuite): Promise<EvalReport>;
|
|
48
|
+
static loadSuite(filePath: string): EvalSuite;
|
|
49
|
+
static saveReport(report: EvalReport, filePath: string): void;
|
|
50
|
+
static compare(baseline: EvalReport, current: EvalReport): {
|
|
51
|
+
improved: string[];
|
|
52
|
+
regressed: string[];
|
|
53
|
+
unchanged: string[];
|
|
54
|
+
baselinePassRate: number;
|
|
55
|
+
currentPassRate: number;
|
|
56
|
+
delta: number;
|
|
57
|
+
};
|
|
58
|
+
static builtinSuites(): {
|
|
59
|
+
name: string;
|
|
60
|
+
description: string;
|
|
61
|
+
caseCount: number;
|
|
62
|
+
}[];
|
|
63
|
+
static loadBuiltinSuite(name: string): EvalSuite;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.AgentEvaluator = void 0;
|
|
37
|
+
/**
|
|
38
|
+
* Agent Evaluation Framework — rule-based scoring with optional LLM-as-judge.
|
|
39
|
+
* Zero external dependencies.
|
|
40
|
+
*/
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
// ─── Scoring helpers ────────────────────────────────────────────────────────
|
|
44
|
+
function scoreExactMatch(output, expected) {
|
|
45
|
+
return output.trim().toLowerCase() === expected.trim().toLowerCase() ? 1 : 0;
|
|
46
|
+
}
|
|
47
|
+
function scoreContains(output, expected) {
|
|
48
|
+
if (!expected.length)
|
|
49
|
+
return 1;
|
|
50
|
+
const lower = output.toLowerCase();
|
|
51
|
+
const matched = expected.filter(e => lower.includes(e.toLowerCase())).length;
|
|
52
|
+
return matched / expected.length;
|
|
53
|
+
}
|
|
54
|
+
function scoreNotContains(output, forbidden) {
|
|
55
|
+
if (!forbidden.length)
|
|
56
|
+
return 1;
|
|
57
|
+
const lower = output.toLowerCase();
|
|
58
|
+
const clean = forbidden.filter(f => !lower.includes(f.toLowerCase())).length;
|
|
59
|
+
return clean / forbidden.length;
|
|
60
|
+
}
|
|
61
|
+
function computeP95(values) {
|
|
62
|
+
if (!values.length)
|
|
63
|
+
return 0;
|
|
64
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
65
|
+
const idx = Math.ceil(0.95 * sorted.length) - 1;
|
|
66
|
+
return sorted[Math.max(0, idx)];
|
|
67
|
+
}
|
|
68
|
+
// ─── Evaluator ──────────────────────────────────────────────────────────────
|
|
69
|
+
class AgentEvaluator {
|
|
70
|
+
agent;
|
|
71
|
+
constructor(agent) {
|
|
72
|
+
this.agent = agent;
|
|
73
|
+
}
|
|
74
|
+
async evalCase(evalCase) {
|
|
75
|
+
const start = Date.now();
|
|
76
|
+
let output = '';
|
|
77
|
+
let error;
|
|
78
|
+
try {
|
|
79
|
+
// Agent must expose a chat / processMessage style method
|
|
80
|
+
if (typeof this.agent.chat === 'function') {
|
|
81
|
+
output = await this.agent.chat(evalCase.input);
|
|
82
|
+
}
|
|
83
|
+
else if (typeof this.agent.processMessage === 'function') {
|
|
84
|
+
const resp = await this.agent.processMessage({ role: 'user', content: evalCase.input });
|
|
85
|
+
output = typeof resp === 'string' ? resp : resp?.content ?? JSON.stringify(resp);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw new Error('Agent must implement chat() or processMessage()');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (e) {
|
|
92
|
+
error = e.message;
|
|
93
|
+
output = '';
|
|
94
|
+
}
|
|
95
|
+
const latency_ms = Date.now() - start;
|
|
96
|
+
const scores = { latency_ms };
|
|
97
|
+
if (evalCase.expectedOutput !== undefined) {
|
|
98
|
+
scores.exact_match = scoreExactMatch(output, evalCase.expectedOutput);
|
|
99
|
+
}
|
|
100
|
+
if (evalCase.expectedContains?.length) {
|
|
101
|
+
scores.contains = scoreContains(output, evalCase.expectedContains);
|
|
102
|
+
}
|
|
103
|
+
if (evalCase.expectedNotContains?.length) {
|
|
104
|
+
scores.not_contains = scoreNotContains(output, evalCase.expectedNotContains);
|
|
105
|
+
}
|
|
106
|
+
// Determine pass: all defined rule-based scores must be >= threshold (1.0 for exact, 0.5 for partial)
|
|
107
|
+
let passed = !error;
|
|
108
|
+
if (passed && scores.exact_match !== undefined && scores.exact_match < 1)
|
|
109
|
+
passed = false;
|
|
110
|
+
if (passed && scores.contains !== undefined && scores.contains < 0.5)
|
|
111
|
+
passed = false;
|
|
112
|
+
if (passed && scores.not_contains !== undefined && scores.not_contains < 0.5)
|
|
113
|
+
passed = false;
|
|
114
|
+
return { caseId: evalCase.id, input: evalCase.input, output, scores, passed, error };
|
|
115
|
+
}
|
|
116
|
+
async evalSuite(suite) {
|
|
117
|
+
const results = [];
|
|
118
|
+
for (const c of suite.cases) {
|
|
119
|
+
results.push(await this.evalCase(c));
|
|
120
|
+
}
|
|
121
|
+
const latencies = results.map(r => r.scores.latency_ms);
|
|
122
|
+
const passed = results.filter(r => r.passed).length;
|
|
123
|
+
const total = results.length;
|
|
124
|
+
return {
|
|
125
|
+
suite: suite.name,
|
|
126
|
+
timestamp: new Date().toISOString(),
|
|
127
|
+
totalCases: total,
|
|
128
|
+
passed,
|
|
129
|
+
failed: total - passed,
|
|
130
|
+
passRate: total ? passed / total : 0,
|
|
131
|
+
avgLatency: latencies.length ? latencies.reduce((a, b) => a + b, 0) / latencies.length : 0,
|
|
132
|
+
p95Latency: computeP95(latencies),
|
|
133
|
+
results,
|
|
134
|
+
summary: `${suite.name}: ${passed}/${total} passed (${total ? Math.round(passed / total * 100) : 0}%)`,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
static loadSuite(filePath) {
|
|
138
|
+
const raw = fs.readFileSync(filePath, 'utf-8');
|
|
139
|
+
return JSON.parse(raw);
|
|
140
|
+
}
|
|
141
|
+
static saveReport(report, filePath) {
|
|
142
|
+
fs.mkdirSync(path.dirname(filePath), { recursive: true });
|
|
143
|
+
fs.writeFileSync(filePath, JSON.stringify(report, null, 2), 'utf-8');
|
|
144
|
+
}
|
|
145
|
+
static compare(baseline, current) {
|
|
146
|
+
const baseMap = new Map(baseline.results.map(r => [r.caseId, r.passed]));
|
|
147
|
+
const improved = [];
|
|
148
|
+
const regressed = [];
|
|
149
|
+
const unchanged = [];
|
|
150
|
+
for (const r of current.results) {
|
|
151
|
+
const prev = baseMap.get(r.caseId);
|
|
152
|
+
if (prev === undefined) {
|
|
153
|
+
unchanged.push(r.caseId);
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
if (!prev && r.passed)
|
|
157
|
+
improved.push(r.caseId);
|
|
158
|
+
else if (prev && !r.passed)
|
|
159
|
+
regressed.push(r.caseId);
|
|
160
|
+
else
|
|
161
|
+
unchanged.push(r.caseId);
|
|
162
|
+
}
|
|
163
|
+
return {
|
|
164
|
+
improved,
|
|
165
|
+
regressed,
|
|
166
|
+
unchanged,
|
|
167
|
+
baselinePassRate: baseline.passRate,
|
|
168
|
+
currentPassRate: current.passRate,
|
|
169
|
+
delta: current.passRate - baseline.passRate,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
static builtinSuites() {
|
|
173
|
+
const suitesDir = path.join(__dirname, 'suites');
|
|
174
|
+
if (!fs.existsSync(suitesDir))
|
|
175
|
+
return [];
|
|
176
|
+
return fs.readdirSync(suitesDir)
|
|
177
|
+
.filter(f => f.endsWith('.json'))
|
|
178
|
+
.map(f => {
|
|
179
|
+
const suite = JSON.parse(fs.readFileSync(path.join(suitesDir, f), 'utf-8'));
|
|
180
|
+
return { name: suite.name, description: suite.description || '', caseCount: suite.cases.length };
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
static loadBuiltinSuite(name) {
|
|
184
|
+
const filePath = path.join(__dirname, 'suites', `${name}.json`);
|
|
185
|
+
if (!fs.existsSync(filePath))
|
|
186
|
+
throw new Error(`Built-in suite '${name}' not found`);
|
|
187
|
+
return AgentEvaluator.loadSuite(filePath);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.AgentEvaluator = AgentEvaluator;
|
|
191
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -21,12 +21,17 @@ export type { MCPTool, MCPToolDefinition, MCPToolResult } from './tools/mcp';
|
|
|
21
21
|
export { PluginManager } from './plugins';
|
|
22
22
|
export type { IPlugin, PluginHooks } from './plugins';
|
|
23
23
|
export { Sandbox } from './core/sandbox';
|
|
24
|
-
export type { SandboxConfig, SandboxRestrictions } from './core/sandbox';
|
|
24
|
+
export type { SandboxConfig, SandboxRestrictions, ValidationResult, SandboxStatus } from './core/sandbox';
|
|
25
|
+
export { ApprovalManager } from './security/approval';
|
|
26
|
+
export type { ApprovalPolicy, ApprovalRequest as SecurityApprovalRequest } from './security/approval';
|
|
27
|
+
export { KeyManager } from './security/keys';
|
|
25
28
|
export { Analytics } from './analytics';
|
|
26
29
|
export { WorkflowEngine } from './core/workflow';
|
|
27
30
|
export type { WorkflowDefinition, WorkflowStep, WorkflowResult, StepResult } from './core/workflow';
|
|
28
|
-
export {
|
|
29
|
-
export type {
|
|
31
|
+
export { GraphWorkflowEngine, WorkflowBuilder, parseOADWorkflow } from './core/workflow-graph';
|
|
32
|
+
export type { WorkflowContext, GraphWorkflowStep, GraphWorkflow, GraphWorkflowResult, OADWorkflowDef, OADWorkflowStepDef } from './core/workflow-graph';
|
|
33
|
+
export { AgentRegistry, AgentCardRegistry } from './core/a2a';
|
|
34
|
+
export type { A2ARequest, A2AResponse, AgentCapability, AgentRegistration, AgentCard } from './core/a2a';
|
|
30
35
|
export { HITLManager } from './core/hitl';
|
|
31
36
|
export type { ApprovalRequest, ApprovalResponse, HITLConfig } from './core/hitl';
|
|
32
37
|
export { VoiceChannel } from './channels/voice';
|
|
@@ -81,7 +86,10 @@ export { OPCError, ProviderError, ValidationError, ConfigError, ChannelError, Pl
|
|
|
81
86
|
export { sanitizeInput, detectInjection, securityHeaders, corsMiddleware, APIKeyManager, inputValidation } from './core/security';
|
|
82
87
|
export type { SecurityHeadersConfig, CORSConfig, APIKeyEntry } from './core/security';
|
|
83
88
|
export { createLoggingPlugin, createAnalyticsPlugin, createRateLimitPlugin } from './plugins';
|
|
84
|
-
export type { PluginManifest } from './plugins';
|
|
89
|
+
export type { PluginManifest, Plugin } from './plugins';
|
|
90
|
+
export { loggerPlugin } from './plugins/logger';
|
|
91
|
+
export { rateLimiterPlugin, createRateLimiterPlugin as createEnhancedRateLimiterPlugin } from './plugins/rate-limiter';
|
|
92
|
+
export { contentFilterPlugin, createContentFilterPlugin } from './plugins/content-filter';
|
|
85
93
|
export { FeishuChannel } from './channels/feishu';
|
|
86
94
|
export type { FeishuChannelConfig } from './channels/feishu';
|
|
87
95
|
export { DiscordChannel } from './channels/discord';
|
|
@@ -92,11 +100,27 @@ export { ToolGateway } from './tools/gateway';
|
|
|
92
100
|
export type { ToolGatewayConfig, GatewayToolName } from './tools/gateway';
|
|
93
101
|
export { StreamingManager, StreamableResponse } from './core/streaming';
|
|
94
102
|
export type { StreamChunk, StreamOptions } from './core/streaming';
|
|
95
|
-
export { TraceCollector, ConsoleExporter, DeepBrainExporter } from './traces';
|
|
96
|
-
export type { Span, SpanEvent, TraceExporter } from './traces';
|
|
103
|
+
export { TraceCollector, ConsoleExporter as TraceConsoleExporter, DeepBrainExporter } from './traces';
|
|
104
|
+
export type { Span as TraceSpan, SpanEvent as TraceSpanEvent, TraceExporter as ITraceExporter } from './traces';
|
|
105
|
+
export { Tracer, ConsoleExporter, FileExporter, OTLPHttpExporter, generateTraceId, generateSpanId } from './telemetry';
|
|
106
|
+
export type { Span, SpanEvent, Metric, TraceExporter } from './telemetry';
|
|
97
107
|
export { Scheduler, parseCron, cronMatches } from './core/scheduler';
|
|
98
108
|
export type { CronJob, JobHandler } from './core/scheduler';
|
|
99
109
|
export { getBuiltinTools, getBuiltinToolsByName } from './tools/builtin';
|
|
100
110
|
export { MCPClient } from './tools/mcp-client';
|
|
101
111
|
export type { MCPServerConfig } from './tools/mcp-client';
|
|
112
|
+
export { AgentPackager, AgentPublisher, AgentInstaller } from './publish';
|
|
113
|
+
export type { PackageManifest, PublishOptions } from './publish';
|
|
114
|
+
export { StudioServer } from './studio/server';
|
|
115
|
+
export type { StudioConfig } from './studio/server';
|
|
116
|
+
export { A2AServer, A2AClient, oadToAgentCard, JSON_RPC_ERRORS } from './protocols/a2a';
|
|
117
|
+
export type { A2AAgentCard, A2AAgentSkill, A2ATask, A2ATaskStatus, A2ATaskState, A2AMessage, A2AMessagePart, A2AArtifact, } from './protocols/a2a';
|
|
118
|
+
export { MCPServer } from './protocols/mcp/server';
|
|
119
|
+
export type { MCPServerConfig as MCPServerConf, MCPServerToolDefinition, MCPResourceDefinition, MCPPromptDefinition } from './protocols/mcp/types';
|
|
120
|
+
export { agentToMCPTools, agentToMCPResources } from './protocols/mcp/agent-tools';
|
|
121
|
+
export { AgentEvaluator } from './eval';
|
|
122
|
+
export type { EvalCase, EvalResult, EvalSuite, EvalReport } from './eval';
|
|
123
|
+
export { AGUIServer, AGUIEventEmitter, AGUIClient } from './protocols/agui';
|
|
124
|
+
export { AGUI_EVENT_TYPES, isValidEventType } from './protocols/agui';
|
|
125
|
+
export type { AGUIEvent, AGUIEventType, AGUIMessage, AGUIRunRequest, AGUIToolCall, AGUIToolDefinition, TextMessageStartEvent, TextMessageContentEvent, TextMessageEndEvent, ToolCallStartEvent, ToolCallArgsEvent, ToolCallEndEvent, StateSnapshotEvent, StateDeltaEvent, MessagesSnapshotEvent, RunStartedEvent, RunFinishedEvent, RunErrorEvent, StepStartedEvent, StepFinishedEvent, CustomEvent, } from './protocols/agui';
|
|
102
126
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.MCPClient = exports.getBuiltinToolsByName = void 0;
|
|
3
|
+
exports.compose = exports.AgentPipeline = exports.Orchestrator = exports.getActiveSessions = exports.createAuthMiddleware = exports.deployToHermes = exports.KnowledgeBase = exports.addMessages = exports.detectLocale = exports.getLocale = exports.setLocale = exports.t = exports.LazyLoader = exports.RequestBatcher = exports.ConnectionPool = exports.VersionManager = exports.WebhookChannel = exports.VoiceChannel = exports.HITLManager = exports.AgentCardRegistry = exports.AgentRegistry = exports.parseOADWorkflow = exports.WorkflowBuilder = exports.GraphWorkflowEngine = exports.WorkflowEngine = exports.Analytics = exports.KeyManager = exports.ApprovalManager = exports.Sandbox = exports.PluginManager = exports.createMCPTool = exports.MCPToolRegistry = exports.Room = exports.SUPPORTED_PROVIDERS = exports.createProvider = exports.DeepBrainMemoryStore = exports.InMemoryStore = exports.SkillRegistry = exports.BaseSkill = exports.WebSocketChannel = exports.TelegramChannel = exports.WebChannel = exports.BaseChannel = exports.OADSchema = exports.validateOAD = exports.loadOAD = exports.Logger = exports.truncateOutput = exports.AgentRuntime = exports.BaseAgent = void 0;
|
|
4
|
+
exports.DiscordChannel = exports.FeishuChannel = exports.createContentFilterPlugin = exports.contentFilterPlugin = exports.createEnhancedRateLimiterPlugin = exports.rateLimiterPlugin = exports.loggerPlugin = exports.createRateLimitPlugin = exports.createAnalyticsPlugin = exports.createLoggingPlugin = exports.inputValidation = exports.APIKeyManager = exports.corsMiddleware = exports.securityHeaders = exports.detectInjection = exports.sanitizeInput = exports.formatErrorForUser = exports.wrapError = exports.TimeoutError = exports.SecurityError = exports.RateLimitError = exports.PluginError = exports.ChannelError = exports.ConfigError = exports.ValidationError = exports.ProviderError = exports.OPCError = exports.createTeacherConfig = exports.createDataAnalystConfig = exports.getSupportedLocales = exports.LLMCache = exports.RateLimiter = exports.AnalyticsEngine = exports.formatReport = exports.loadTestCases = exports.runTests = exports.parseSkillMarkdown = exports.skillToMarkdown = exports.SkillLearner = exports.DocumentSkill = exports.SchedulerSkill = exports.WebhookTriggerSkill = exports.HttpSkill = exports.TextAnalysisTool = exports.JsonTransformTool = exports.DateTimeTool = exports.CalculatorTool = exports.WeChatChannel = exports.SlackChannel = exports.EmailChannel = void 0;
|
|
5
|
+
exports.isValidEventType = exports.AGUI_EVENT_TYPES = exports.AGUIClient = exports.AGUIEventEmitter = exports.AGUIServer = exports.AgentEvaluator = exports.agentToMCPResources = exports.agentToMCPTools = exports.MCPServer = exports.JSON_RPC_ERRORS = exports.oadToAgentCard = exports.A2AClient = exports.A2AServer = exports.StudioServer = exports.AgentInstaller = exports.AgentPublisher = exports.AgentPackager = exports.MCPClient = exports.getBuiltinToolsByName = exports.getBuiltinTools = exports.cronMatches = exports.parseCron = exports.Scheduler = exports.generateSpanId = exports.generateTraceId = exports.OTLPHttpExporter = exports.FileExporter = exports.ConsoleExporter = exports.Tracer = exports.DeepBrainExporter = exports.TraceConsoleExporter = exports.TraceCollector = exports.StreamableResponse = exports.StreamingManager = exports.ToolGateway = exports.ProcessWatcher = void 0;
|
|
6
6
|
// OPC Agent — Open Agent Framework
|
|
7
7
|
var agent_1 = require("./core/agent");
|
|
8
8
|
Object.defineProperty(exports, "BaseAgent", { enumerable: true, get: function () { return agent_1.BaseAgent; } });
|
|
@@ -45,13 +45,22 @@ var plugins_1 = require("./plugins");
|
|
|
45
45
|
Object.defineProperty(exports, "PluginManager", { enumerable: true, get: function () { return plugins_1.PluginManager; } });
|
|
46
46
|
var sandbox_1 = require("./core/sandbox");
|
|
47
47
|
Object.defineProperty(exports, "Sandbox", { enumerable: true, get: function () { return sandbox_1.Sandbox; } });
|
|
48
|
+
var approval_1 = require("./security/approval");
|
|
49
|
+
Object.defineProperty(exports, "ApprovalManager", { enumerable: true, get: function () { return approval_1.ApprovalManager; } });
|
|
50
|
+
var keys_1 = require("./security/keys");
|
|
51
|
+
Object.defineProperty(exports, "KeyManager", { enumerable: true, get: function () { return keys_1.KeyManager; } });
|
|
48
52
|
var analytics_1 = require("./analytics");
|
|
49
53
|
Object.defineProperty(exports, "Analytics", { enumerable: true, get: function () { return analytics_1.Analytics; } });
|
|
50
54
|
// v0.4.0 modules
|
|
51
55
|
var workflow_1 = require("./core/workflow");
|
|
52
56
|
Object.defineProperty(exports, "WorkflowEngine", { enumerable: true, get: function () { return workflow_1.WorkflowEngine; } });
|
|
57
|
+
var workflow_graph_1 = require("./core/workflow-graph");
|
|
58
|
+
Object.defineProperty(exports, "GraphWorkflowEngine", { enumerable: true, get: function () { return workflow_graph_1.GraphWorkflowEngine; } });
|
|
59
|
+
Object.defineProperty(exports, "WorkflowBuilder", { enumerable: true, get: function () { return workflow_graph_1.WorkflowBuilder; } });
|
|
60
|
+
Object.defineProperty(exports, "parseOADWorkflow", { enumerable: true, get: function () { return workflow_graph_1.parseOADWorkflow; } });
|
|
53
61
|
var a2a_1 = require("./core/a2a");
|
|
54
62
|
Object.defineProperty(exports, "AgentRegistry", { enumerable: true, get: function () { return a2a_1.AgentRegistry; } });
|
|
63
|
+
Object.defineProperty(exports, "AgentCardRegistry", { enumerable: true, get: function () { return a2a_1.AgentCardRegistry; } });
|
|
55
64
|
var hitl_1 = require("./core/hitl");
|
|
56
65
|
Object.defineProperty(exports, "HITLManager", { enumerable: true, get: function () { return hitl_1.HITLManager; } });
|
|
57
66
|
var voice_1 = require("./channels/voice");
|
|
@@ -152,6 +161,14 @@ var plugins_2 = require("./plugins");
|
|
|
152
161
|
Object.defineProperty(exports, "createLoggingPlugin", { enumerable: true, get: function () { return plugins_2.createLoggingPlugin; } });
|
|
153
162
|
Object.defineProperty(exports, "createAnalyticsPlugin", { enumerable: true, get: function () { return plugins_2.createAnalyticsPlugin; } });
|
|
154
163
|
Object.defineProperty(exports, "createRateLimitPlugin", { enumerable: true, get: function () { return plugins_2.createRateLimitPlugin; } });
|
|
164
|
+
var logger_2 = require("./plugins/logger");
|
|
165
|
+
Object.defineProperty(exports, "loggerPlugin", { enumerable: true, get: function () { return logger_2.loggerPlugin; } });
|
|
166
|
+
var rate_limiter_2 = require("./plugins/rate-limiter");
|
|
167
|
+
Object.defineProperty(exports, "rateLimiterPlugin", { enumerable: true, get: function () { return rate_limiter_2.rateLimiterPlugin; } });
|
|
168
|
+
Object.defineProperty(exports, "createEnhancedRateLimiterPlugin", { enumerable: true, get: function () { return rate_limiter_2.createRateLimiterPlugin; } });
|
|
169
|
+
var content_filter_1 = require("./plugins/content-filter");
|
|
170
|
+
Object.defineProperty(exports, "contentFilterPlugin", { enumerable: true, get: function () { return content_filter_1.contentFilterPlugin; } });
|
|
171
|
+
Object.defineProperty(exports, "createContentFilterPlugin", { enumerable: true, get: function () { return content_filter_1.createContentFilterPlugin; } });
|
|
155
172
|
// v1.1.0 modules
|
|
156
173
|
var feishu_1 = require("./channels/feishu");
|
|
157
174
|
Object.defineProperty(exports, "FeishuChannel", { enumerable: true, get: function () { return feishu_1.FeishuChannel; } });
|
|
@@ -168,8 +185,16 @@ Object.defineProperty(exports, "StreamableResponse", { enumerable: true, get: fu
|
|
|
168
185
|
// v1.3.0 modules
|
|
169
186
|
var traces_1 = require("./traces");
|
|
170
187
|
Object.defineProperty(exports, "TraceCollector", { enumerable: true, get: function () { return traces_1.TraceCollector; } });
|
|
171
|
-
Object.defineProperty(exports, "
|
|
188
|
+
Object.defineProperty(exports, "TraceConsoleExporter", { enumerable: true, get: function () { return traces_1.ConsoleExporter; } });
|
|
172
189
|
Object.defineProperty(exports, "DeepBrainExporter", { enumerable: true, get: function () { return traces_1.DeepBrainExporter; } });
|
|
190
|
+
// v1.8.0 — Telemetry (OTel-compatible)
|
|
191
|
+
var telemetry_1 = require("./telemetry");
|
|
192
|
+
Object.defineProperty(exports, "Tracer", { enumerable: true, get: function () { return telemetry_1.Tracer; } });
|
|
193
|
+
Object.defineProperty(exports, "ConsoleExporter", { enumerable: true, get: function () { return telemetry_1.ConsoleExporter; } });
|
|
194
|
+
Object.defineProperty(exports, "FileExporter", { enumerable: true, get: function () { return telemetry_1.FileExporter; } });
|
|
195
|
+
Object.defineProperty(exports, "OTLPHttpExporter", { enumerable: true, get: function () { return telemetry_1.OTLPHttpExporter; } });
|
|
196
|
+
Object.defineProperty(exports, "generateTraceId", { enumerable: true, get: function () { return telemetry_1.generateTraceId; } });
|
|
197
|
+
Object.defineProperty(exports, "generateSpanId", { enumerable: true, get: function () { return telemetry_1.generateSpanId; } });
|
|
173
198
|
// v1.4.0 modules
|
|
174
199
|
var scheduler_2 = require("./core/scheduler");
|
|
175
200
|
Object.defineProperty(exports, "Scheduler", { enumerable: true, get: function () { return scheduler_2.Scheduler; } });
|
|
@@ -181,4 +206,35 @@ Object.defineProperty(exports, "getBuiltinTools", { enumerable: true, get: funct
|
|
|
181
206
|
Object.defineProperty(exports, "getBuiltinToolsByName", { enumerable: true, get: function () { return builtin_1.getBuiltinToolsByName; } });
|
|
182
207
|
var mcp_client_1 = require("./tools/mcp-client");
|
|
183
208
|
Object.defineProperty(exports, "MCPClient", { enumerable: true, get: function () { return mcp_client_1.MCPClient; } });
|
|
209
|
+
// v1.6.0 — publish/pack/install
|
|
210
|
+
var publish_1 = require("./publish");
|
|
211
|
+
Object.defineProperty(exports, "AgentPackager", { enumerable: true, get: function () { return publish_1.AgentPackager; } });
|
|
212
|
+
Object.defineProperty(exports, "AgentPublisher", { enumerable: true, get: function () { return publish_1.AgentPublisher; } });
|
|
213
|
+
Object.defineProperty(exports, "AgentInstaller", { enumerable: true, get: function () { return publish_1.AgentInstaller; } });
|
|
214
|
+
// v1.7.0 - Studio
|
|
215
|
+
var server_1 = require("./studio/server");
|
|
216
|
+
Object.defineProperty(exports, "StudioServer", { enumerable: true, get: function () { return server_1.StudioServer; } });
|
|
217
|
+
// v1.9.0 — Google A2A Protocol
|
|
218
|
+
var a2a_2 = require("./protocols/a2a");
|
|
219
|
+
Object.defineProperty(exports, "A2AServer", { enumerable: true, get: function () { return a2a_2.A2AServer; } });
|
|
220
|
+
Object.defineProperty(exports, "A2AClient", { enumerable: true, get: function () { return a2a_2.A2AClient; } });
|
|
221
|
+
Object.defineProperty(exports, "oadToAgentCard", { enumerable: true, get: function () { return a2a_2.oadToAgentCard; } });
|
|
222
|
+
Object.defineProperty(exports, "JSON_RPC_ERRORS", { enumerable: true, get: function () { return a2a_2.JSON_RPC_ERRORS; } });
|
|
223
|
+
// v1.9.0 — MCP Server (expose agents as MCP tools)
|
|
224
|
+
var server_2 = require("./protocols/mcp/server");
|
|
225
|
+
Object.defineProperty(exports, "MCPServer", { enumerable: true, get: function () { return server_2.MCPServer; } });
|
|
226
|
+
var agent_tools_1 = require("./protocols/mcp/agent-tools");
|
|
227
|
+
Object.defineProperty(exports, "agentToMCPTools", { enumerable: true, get: function () { return agent_tools_1.agentToMCPTools; } });
|
|
228
|
+
Object.defineProperty(exports, "agentToMCPResources", { enumerable: true, get: function () { return agent_tools_1.agentToMCPResources; } });
|
|
229
|
+
// v1.8.0 - Eval
|
|
230
|
+
var eval_1 = require("./eval");
|
|
231
|
+
Object.defineProperty(exports, "AgentEvaluator", { enumerable: true, get: function () { return eval_1.AgentEvaluator; } });
|
|
232
|
+
// v1.9.0 — AG-UI Protocol (Agent-User Interaction)
|
|
233
|
+
var agui_1 = require("./protocols/agui");
|
|
234
|
+
Object.defineProperty(exports, "AGUIServer", { enumerable: true, get: function () { return agui_1.AGUIServer; } });
|
|
235
|
+
Object.defineProperty(exports, "AGUIEventEmitter", { enumerable: true, get: function () { return agui_1.AGUIEventEmitter; } });
|
|
236
|
+
Object.defineProperty(exports, "AGUIClient", { enumerable: true, get: function () { return agui_1.AGUIClient; } });
|
|
237
|
+
var agui_2 = require("./protocols/agui");
|
|
238
|
+
Object.defineProperty(exports, "AGUI_EVENT_TYPES", { enumerable: true, get: function () { return agui_2.AGUI_EVENT_TYPES; } });
|
|
239
|
+
Object.defineProperty(exports, "isValidEventType", { enumerable: true, get: function () { return agui_2.isValidEventType; } });
|
|
184
240
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Plugin } from './index';
|
|
2
|
+
/**
|
|
3
|
+
* Content filter plugin — filters messages containing blocked keywords.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createContentFilterPlugin(blocklist?: string[]): Plugin;
|
|
6
|
+
export declare const contentFilterPlugin: Plugin;
|
|
7
|
+
//# sourceMappingURL=content-filter.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.contentFilterPlugin = void 0;
|
|
4
|
+
exports.createContentFilterPlugin = createContentFilterPlugin;
|
|
5
|
+
/**
|
|
6
|
+
* Content filter plugin — filters messages containing blocked keywords.
|
|
7
|
+
*/
|
|
8
|
+
function createContentFilterPlugin(blocklist = []) {
|
|
9
|
+
return {
|
|
10
|
+
name: 'content-filter',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
description: 'Filter inappropriate content',
|
|
13
|
+
onMessage: async (msg, next) => {
|
|
14
|
+
const content = (msg.content || '').toLowerCase();
|
|
15
|
+
for (const word of blocklist) {
|
|
16
|
+
if (content.includes(word.toLowerCase())) {
|
|
17
|
+
throw new Error(`Content blocked: message contains prohibited content`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return next(msg);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
exports.contentFilterPlugin = createContentFilterPlugin([]);
|
|
25
|
+
//# sourceMappingURL=content-filter.js.map
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -21,6 +21,23 @@ export interface PluginHooks {
|
|
|
21
21
|
}) => Promise<void>;
|
|
22
22
|
beforeShutdown?: () => Promise<void>;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* v1.6.0 — Enhanced Plugin interface with middleware pattern.
|
|
26
|
+
* Plugins implementing this interface use next() to chain processing.
|
|
27
|
+
*/
|
|
28
|
+
export interface Plugin {
|
|
29
|
+
name: string;
|
|
30
|
+
version: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
onInit?(runtime: any): Promise<void>;
|
|
33
|
+
onMessage?(message: any, next: (msg: any) => Promise<any>): Promise<any>;
|
|
34
|
+
onResponse?(response: any, next: (res: any) => Promise<any>): Promise<any>;
|
|
35
|
+
onError?(error: Error): void;
|
|
36
|
+
onShutdown?(): Promise<void>;
|
|
37
|
+
tools?: any[];
|
|
38
|
+
skills?: any[];
|
|
39
|
+
channels?: any[];
|
|
40
|
+
}
|
|
24
41
|
/**
|
|
25
42
|
* Plugin manifest in OAD: plugins: [{ name, config }]
|
|
26
43
|
*/
|
|
@@ -42,8 +59,16 @@ export interface IPlugin {
|
|
|
42
59
|
}
|
|
43
60
|
export declare class PluginManager {
|
|
44
61
|
private plugins;
|
|
62
|
+
private enhancedPlugins;
|
|
45
63
|
private logger;
|
|
46
64
|
register(plugin: IPlugin): void;
|
|
65
|
+
/**
|
|
66
|
+
* Register an enhanced plugin with middleware support (v1.6.0).
|
|
67
|
+
*/
|
|
68
|
+
registerEnhanced(plugin: Plugin): void;
|
|
69
|
+
unregisterEnhanced(name: string): void;
|
|
70
|
+
getEnhanced(name: string): Plugin | undefined;
|
|
71
|
+
listEnhanced(): Plugin[];
|
|
47
72
|
unregister(name: string): void;
|
|
48
73
|
get(name: string): IPlugin | undefined;
|
|
49
74
|
list(): {
|
|
@@ -53,6 +78,23 @@ export declare class PluginManager {
|
|
|
53
78
|
}[];
|
|
54
79
|
has(name: string): boolean;
|
|
55
80
|
runHook(hookName: keyof PluginHooks, ...args: unknown[]): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Initialize all plugins (legacy + enhanced).
|
|
83
|
+
*/
|
|
84
|
+
initAll(runtime?: any): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Shutdown all plugins (legacy + enhanced).
|
|
87
|
+
*/
|
|
88
|
+
shutdownAll(): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Run message through enhanced plugin middleware chain.
|
|
91
|
+
* Each plugin calls next() to pass to the next plugin.
|
|
92
|
+
*/
|
|
93
|
+
runMessageMiddleware(message: any): Promise<any>;
|
|
94
|
+
/**
|
|
95
|
+
* Run response through enhanced plugin middleware chain.
|
|
96
|
+
*/
|
|
97
|
+
runResponseMiddleware(response: any): Promise<any>;
|
|
56
98
|
runOnInit(): Promise<void>;
|
|
57
99
|
runOnMessage(message: Message): Promise<Message>;
|
|
58
100
|
runOnResponse(message: Message, response: Message): Promise<Message>;
|