opc-agent 1.4.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.
Files changed (198) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +91 -32
  3. package/dist/channels/email.d.ts +32 -26
  4. package/dist/channels/email.js +239 -62
  5. package/dist/channels/feishu.d.ts +21 -6
  6. package/dist/channels/feishu.js +225 -126
  7. package/dist/channels/telegram.d.ts +30 -9
  8. package/dist/channels/telegram.js +125 -33
  9. package/dist/channels/websocket.d.ts +46 -3
  10. package/dist/channels/websocket.js +306 -37
  11. package/dist/channels/wechat.d.ts +33 -13
  12. package/dist/channels/wechat.js +229 -42
  13. package/dist/cli.js +1127 -19
  14. package/dist/core/a2a.d.ts +17 -0
  15. package/dist/core/a2a.js +43 -1
  16. package/dist/core/agent.d.ts +39 -0
  17. package/dist/core/agent.js +228 -3
  18. package/dist/core/runtime.d.ts +7 -0
  19. package/dist/core/runtime.js +205 -2
  20. package/dist/core/sandbox.d.ts +26 -0
  21. package/dist/core/sandbox.js +117 -0
  22. package/dist/core/scheduler.d.ts +52 -0
  23. package/dist/core/scheduler.js +168 -0
  24. package/dist/core/subagent.d.ts +28 -0
  25. package/dist/core/subagent.js +65 -0
  26. package/dist/core/workflow-graph.d.ts +93 -0
  27. package/dist/core/workflow-graph.js +247 -0
  28. package/dist/daemon.d.ts +3 -0
  29. package/dist/daemon.js +134 -0
  30. package/dist/doctor.d.ts +15 -0
  31. package/dist/doctor.js +183 -0
  32. package/dist/eval/index.d.ts +65 -0
  33. package/dist/eval/index.js +191 -0
  34. package/dist/index.d.ts +37 -6
  35. package/dist/index.js +75 -3
  36. package/dist/plugins/content-filter.d.ts +7 -0
  37. package/dist/plugins/content-filter.js +25 -0
  38. package/dist/plugins/index.d.ts +42 -0
  39. package/dist/plugins/index.js +108 -2
  40. package/dist/plugins/logger.d.ts +6 -0
  41. package/dist/plugins/logger.js +20 -0
  42. package/dist/plugins/rate-limiter.d.ts +7 -0
  43. package/dist/plugins/rate-limiter.js +35 -0
  44. package/dist/protocols/a2a/client.d.ts +25 -0
  45. package/dist/protocols/a2a/client.js +115 -0
  46. package/dist/protocols/a2a/index.d.ts +6 -0
  47. package/dist/protocols/a2a/index.js +12 -0
  48. package/dist/protocols/a2a/server.d.ts +41 -0
  49. package/dist/protocols/a2a/server.js +295 -0
  50. package/dist/protocols/a2a/types.d.ts +91 -0
  51. package/dist/protocols/a2a/types.js +15 -0
  52. package/dist/protocols/a2a/utils.d.ts +6 -0
  53. package/dist/protocols/a2a/utils.js +47 -0
  54. package/dist/protocols/agui/client.d.ts +10 -0
  55. package/dist/protocols/agui/client.js +75 -0
  56. package/dist/protocols/agui/index.d.ts +4 -0
  57. package/dist/protocols/agui/index.js +25 -0
  58. package/dist/protocols/agui/server.d.ts +37 -0
  59. package/dist/protocols/agui/server.js +191 -0
  60. package/dist/protocols/agui/types.d.ts +107 -0
  61. package/dist/protocols/agui/types.js +17 -0
  62. package/dist/protocols/index.d.ts +2 -0
  63. package/dist/protocols/index.js +19 -0
  64. package/dist/protocols/mcp/agent-tools.d.ts +11 -0
  65. package/dist/protocols/mcp/agent-tools.js +129 -0
  66. package/dist/protocols/mcp/index.d.ts +5 -0
  67. package/dist/protocols/mcp/index.js +11 -0
  68. package/dist/protocols/mcp/server.d.ts +31 -0
  69. package/dist/protocols/mcp/server.js +248 -0
  70. package/dist/protocols/mcp/types.d.ts +92 -0
  71. package/dist/protocols/mcp/types.js +17 -0
  72. package/dist/providers/index.d.ts +5 -1
  73. package/dist/providers/index.js +16 -9
  74. package/dist/publish/index.d.ts +45 -0
  75. package/dist/publish/index.js +350 -0
  76. package/dist/schema/oad.d.ts +859 -67
  77. package/dist/schema/oad.js +47 -3
  78. package/dist/security/approval.d.ts +36 -0
  79. package/dist/security/approval.js +113 -0
  80. package/dist/security/index.d.ts +4 -0
  81. package/dist/security/index.js +8 -0
  82. package/dist/security/keys.d.ts +16 -0
  83. package/dist/security/keys.js +117 -0
  84. package/dist/skills/auto-learn.d.ts +28 -0
  85. package/dist/skills/auto-learn.js +257 -0
  86. package/dist/studio/server.d.ts +63 -0
  87. package/dist/studio/server.js +625 -0
  88. package/dist/studio-ui/index.html +662 -0
  89. package/dist/telemetry/index.d.ts +93 -0
  90. package/dist/telemetry/index.js +285 -0
  91. package/dist/tools/builtin/datetime.d.ts +3 -0
  92. package/dist/tools/builtin/datetime.js +44 -0
  93. package/dist/tools/builtin/file.d.ts +3 -0
  94. package/dist/tools/builtin/file.js +151 -0
  95. package/dist/tools/builtin/index.d.ts +15 -0
  96. package/dist/tools/builtin/index.js +30 -0
  97. package/dist/tools/builtin/shell.d.ts +3 -0
  98. package/dist/tools/builtin/shell.js +43 -0
  99. package/dist/tools/builtin/web.d.ts +3 -0
  100. package/dist/tools/builtin/web.js +37 -0
  101. package/dist/tools/mcp-client.d.ts +24 -0
  102. package/dist/tools/mcp-client.js +119 -0
  103. package/package.json +5 -3
  104. package/scripts/install.ps1 +31 -0
  105. package/scripts/install.sh +40 -0
  106. package/src/channels/email.ts +351 -177
  107. package/src/channels/feishu.ts +349 -236
  108. package/src/channels/telegram.ts +212 -90
  109. package/src/channels/websocket.ts +399 -87
  110. package/src/channels/wechat.ts +329 -149
  111. package/src/cli.ts +1201 -20
  112. package/src/core/a2a.ts +60 -0
  113. package/src/core/agent.ts +420 -152
  114. package/src/core/runtime.ts +174 -0
  115. package/src/core/sandbox.ts +143 -0
  116. package/src/core/scheduler.ts +187 -0
  117. package/src/core/subagent.ts +98 -0
  118. package/src/core/workflow-graph.ts +365 -0
  119. package/src/daemon.ts +96 -0
  120. package/src/doctor.ts +156 -0
  121. package/src/eval/index.ts +211 -0
  122. package/src/eval/suites/basic.json +16 -0
  123. package/src/eval/suites/memory.json +12 -0
  124. package/src/eval/suites/safety.json +14 -0
  125. package/src/index.ts +65 -6
  126. package/src/plugins/content-filter.ts +23 -0
  127. package/src/plugins/index.ts +133 -2
  128. package/src/plugins/logger.ts +18 -0
  129. package/src/plugins/rate-limiter.ts +38 -0
  130. package/src/protocols/a2a/client.ts +132 -0
  131. package/src/protocols/a2a/index.ts +8 -0
  132. package/src/protocols/a2a/server.ts +333 -0
  133. package/src/protocols/a2a/types.ts +88 -0
  134. package/src/protocols/a2a/utils.ts +50 -0
  135. package/src/protocols/agui/client.ts +83 -0
  136. package/src/protocols/agui/index.ts +4 -0
  137. package/src/protocols/agui/server.ts +218 -0
  138. package/src/protocols/agui/types.ts +153 -0
  139. package/src/protocols/index.ts +2 -0
  140. package/src/protocols/mcp/agent-tools.ts +134 -0
  141. package/src/protocols/mcp/index.ts +8 -0
  142. package/src/protocols/mcp/server.ts +262 -0
  143. package/src/protocols/mcp/types.ts +69 -0
  144. package/src/providers/index.ts +354 -339
  145. package/src/publish/index.ts +376 -0
  146. package/src/schema/oad.ts +204 -154
  147. package/src/security/approval.ts +131 -0
  148. package/src/security/index.ts +3 -0
  149. package/src/security/keys.ts +87 -0
  150. package/src/skills/auto-learn.ts +262 -0
  151. package/src/studio/server.ts +629 -0
  152. package/src/studio-ui/index.html +662 -0
  153. package/src/telemetry/index.ts +324 -0
  154. package/src/tools/builtin/datetime.ts +41 -0
  155. package/src/tools/builtin/file.ts +107 -0
  156. package/src/tools/builtin/index.ts +28 -0
  157. package/src/tools/builtin/shell.ts +43 -0
  158. package/src/tools/builtin/web.ts +35 -0
  159. package/src/tools/mcp-client.ts +131 -0
  160. package/src/types/agent-workstation.d.ts +2 -0
  161. package/tests/a2a-protocol.test.ts +285 -0
  162. package/tests/agui-protocol.test.ts +246 -0
  163. package/tests/auto-learn.test.ts +105 -0
  164. package/tests/builtin-tools.test.ts +83 -0
  165. package/tests/channels/discord.test.ts +79 -0
  166. package/tests/channels/email.test.ts +148 -0
  167. package/tests/channels/feishu.test.ts +123 -0
  168. package/tests/channels/telegram.test.ts +129 -0
  169. package/tests/channels/websocket.test.ts +53 -0
  170. package/tests/channels/wechat.test.ts +170 -0
  171. package/tests/chat-cli.test.ts +160 -0
  172. package/tests/cli.test.ts +46 -0
  173. package/tests/daemon.test.ts +135 -0
  174. package/tests/deepbrain-wire.test.ts +234 -0
  175. package/tests/doctor.test.ts +38 -0
  176. package/tests/eval.test.ts +173 -0
  177. package/tests/init-role.test.ts +124 -0
  178. package/tests/mcp-client.test.ts +92 -0
  179. package/tests/mcp-server.test.ts +178 -0
  180. package/tests/plugin-a2a-enhanced.test.ts +230 -0
  181. package/tests/publish.test.ts +231 -0
  182. package/tests/scheduler.test.ts +200 -0
  183. package/tests/security-enhanced.test.ts +233 -0
  184. package/tests/skill-learner.test.ts +161 -0
  185. package/tests/studio.test.ts +229 -0
  186. package/tests/subagent.test.ts +193 -0
  187. package/tests/telegram-discord.test.ts +60 -0
  188. package/tests/telemetry.test.ts +186 -0
  189. package/tests/tools/builtin-extended.test.ts +138 -0
  190. package/tests/workflow-graph.test.ts +279 -0
  191. package/tutorial/customer-service-agent/README.md +612 -0
  192. package/tutorial/customer-service-agent/SOUL.md +26 -0
  193. package/tutorial/customer-service-agent/agent.yaml +63 -0
  194. package/tutorial/customer-service-agent/package.json +19 -0
  195. package/tutorial/customer-service-agent/src/index.ts +69 -0
  196. package/tutorial/customer-service-agent/src/skills/faq.ts +27 -0
  197. package/tutorial/customer-service-agent/src/skills/ticket.ts +22 -0
  198. package/tutorial/customer-service-agent/tsconfig.json +14 -0
package/dist/doctor.js ADDED
@@ -0,0 +1,183 @@
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.getDoctorChecks = getDoctorChecks;
37
+ exports.runDoctor = runDoctor;
38
+ const child_process_1 = require("child_process");
39
+ const fs_1 = require("fs");
40
+ const net = __importStar(require("net"));
41
+ function getDoctorChecks() {
42
+ return [
43
+ {
44
+ name: 'Node.js version',
45
+ check: () => {
46
+ const v = process.versions.node.split('.').map(Number);
47
+ return {
48
+ ok: v[0] >= 18,
49
+ detail: `v${process.versions.node}`,
50
+ fix: v[0] < 18 ? 'Upgrade to Node 18+: https://nodejs.org' : undefined,
51
+ };
52
+ },
53
+ },
54
+ {
55
+ name: 'npm version',
56
+ check: () => {
57
+ try {
58
+ const v = (0, child_process_1.execSync)('npm --version', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
59
+ return { ok: true, detail: `v${v}` };
60
+ }
61
+ catch {
62
+ return { ok: false, detail: 'Not found', fix: 'Install npm: https://nodejs.org' };
63
+ }
64
+ },
65
+ },
66
+ {
67
+ name: 'Ollama running',
68
+ check: async () => {
69
+ try {
70
+ const controller = new AbortController();
71
+ const timeout = setTimeout(() => controller.abort(), 3000);
72
+ const r = await fetch('http://localhost:11434/api/tags', { signal: controller.signal });
73
+ clearTimeout(timeout);
74
+ const data = await r.json();
75
+ return { ok: true, detail: `${data.models?.length || 0} models available` };
76
+ }
77
+ catch {
78
+ return { ok: false, detail: 'Not running', fix: 'Install Ollama: https://ollama.ai' };
79
+ }
80
+ },
81
+ },
82
+ {
83
+ name: 'agent.yaml exists',
84
+ check: () => {
85
+ const found = (0, fs_1.existsSync)('./agent.yaml');
86
+ return { ok: found, detail: found ? 'Found' : 'Not found', fix: found ? undefined : 'Run `opc init` to create a project' };
87
+ },
88
+ },
89
+ {
90
+ name: 'SOUL.md exists',
91
+ check: () => {
92
+ const found = (0, fs_1.existsSync)('./SOUL.md');
93
+ return { ok: found, detail: found ? 'Found' : 'Not found', fix: found ? undefined : 'Run `opc init` to generate one' };
94
+ },
95
+ },
96
+ {
97
+ name: 'TypeScript installed',
98
+ check: () => {
99
+ try {
100
+ (0, child_process_1.execSync)('npx tsc --version', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] });
101
+ return { ok: true, detail: 'Available' };
102
+ }
103
+ catch {
104
+ return { ok: false, detail: 'Not found', fix: 'npm install -D typescript' };
105
+ }
106
+ },
107
+ },
108
+ {
109
+ name: 'Disk space',
110
+ check: () => {
111
+ return { ok: true, detail: 'Check passed' };
112
+ },
113
+ },
114
+ {
115
+ name: 'DeepBrain package',
116
+ check: () => {
117
+ try {
118
+ require.resolve('deepbrain');
119
+ return { ok: true, detail: 'Installed' };
120
+ }
121
+ catch {
122
+ return { ok: false, detail: 'Not installed', fix: 'npm install deepbrain' };
123
+ }
124
+ },
125
+ },
126
+ {
127
+ name: 'Port 3000 available',
128
+ check: () => {
129
+ return new Promise((resolve) => {
130
+ const server = net.createServer();
131
+ server.once('error', () => {
132
+ resolve({ ok: false, detail: 'In use', fix: 'Free port 3000 or configure a different port' });
133
+ });
134
+ server.once('listening', () => {
135
+ server.close(() => {
136
+ resolve({ ok: true, detail: 'Available' });
137
+ });
138
+ });
139
+ server.listen(3000);
140
+ });
141
+ },
142
+ },
143
+ ];
144
+ }
145
+ async function runDoctor() {
146
+ const checks = getDoctorChecks();
147
+ const color = {
148
+ green: (s) => `\x1b[32m${s}\x1b[0m`,
149
+ red: (s) => `\x1b[31m${s}\x1b[0m`,
150
+ dim: (s) => `\x1b[2m${s}\x1b[0m`,
151
+ bold: (s) => `\x1b[1m${s}\x1b[0m`,
152
+ };
153
+ console.log(`\n🔍 ${color.bold('OPC Agent Doctor')}\n`);
154
+ let passed = 0;
155
+ const total = checks.length;
156
+ for (const check of checks) {
157
+ try {
158
+ const result = await check.check();
159
+ const icon = result.ok ? color.green('✅') : color.red('❌');
160
+ const name = check.name.padEnd(22);
161
+ console.log(` ${icon} ${name} ${result.detail}`);
162
+ if (!result.ok && result.fix) {
163
+ console.log(` → ${result.fix}`);
164
+ }
165
+ if (result.ok)
166
+ passed++;
167
+ }
168
+ catch (err) {
169
+ const name = check.name.padEnd(22);
170
+ console.log(` ${color.red('❌')} ${name} Error: ${err instanceof Error ? err.message : String(err)}`);
171
+ }
172
+ }
173
+ console.log(`\n Result: ${passed}/${total} checks passed`);
174
+ if (passed < total) {
175
+ console.log(`\n Fix the issues above to get the best experience.`);
176
+ }
177
+ else {
178
+ console.log(`\n ${color.green('All checks passed!')} You're good to go.`);
179
+ }
180
+ console.log();
181
+ return { passed, total };
182
+ }
183
+ //# sourceMappingURL=doctor.js.map
@@ -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 { AgentRegistry } from './core/a2a';
29
- export type { A2ARequest, A2AResponse, AgentCapability, AgentRegistration } from './core/a2a';
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';
@@ -65,6 +70,8 @@ export { SchedulerSkill } from './skills/scheduler';
65
70
  export type { ScheduledTask } from './skills/scheduler';
66
71
  export { DocumentSkill } from './skills/document';
67
72
  export type { DocumentChunk } from './skills/document';
73
+ export { SkillLearner, skillToMarkdown, parseSkillMarkdown } from './skills/auto-learn';
74
+ export type { LearnedSkill } from './skills/auto-learn';
68
75
  export { runTests, loadTestCases, formatReport } from './testing';
69
76
  export type { TestCase, TestResult, TestReport } from './testing';
70
77
  export { AnalyticsEngine } from './core/analytics-engine';
@@ -79,7 +86,10 @@ export { OPCError, ProviderError, ValidationError, ConfigError, ChannelError, Pl
79
86
  export { sanitizeInput, detectInjection, securityHeaders, corsMiddleware, APIKeyManager, inputValidation } from './core/security';
80
87
  export type { SecurityHeadersConfig, CORSConfig, APIKeyEntry } from './core/security';
81
88
  export { createLoggingPlugin, createAnalyticsPlugin, createRateLimitPlugin } from './plugins';
82
- 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';
83
93
  export { FeishuChannel } from './channels/feishu';
84
94
  export type { FeishuChannelConfig } from './channels/feishu';
85
95
  export { DiscordChannel } from './channels/discord';
@@ -90,6 +100,27 @@ export { ToolGateway } from './tools/gateway';
90
100
  export type { ToolGatewayConfig, GatewayToolName } from './tools/gateway';
91
101
  export { StreamingManager, StreamableResponse } from './core/streaming';
92
102
  export type { StreamChunk, StreamOptions } from './core/streaming';
93
- export { TraceCollector, ConsoleExporter, DeepBrainExporter } from './traces';
94
- 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';
107
+ export { Scheduler, parseCron, cronMatches } from './core/scheduler';
108
+ export type { CronJob, JobHandler } from './core/scheduler';
109
+ export { getBuiltinTools, getBuiltinToolsByName } from './tools/builtin';
110
+ export { MCPClient } from './tools/mcp-client';
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';
95
126
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JsonTransformTool = exports.DateTimeTool = exports.CalculatorTool = exports.WeChatChannel = exports.SlackChannel = exports.EmailChannel = 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.AgentRegistry = exports.WorkflowEngine = exports.Analytics = 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.DeepBrainExporter = exports.ConsoleExporter = exports.TraceCollector = exports.StreamableResponse = exports.StreamingManager = exports.ToolGateway = exports.ProcessWatcher = exports.DiscordChannel = exports.FeishuChannel = 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.DocumentSkill = exports.SchedulerSkill = exports.WebhookTriggerSkill = exports.HttpSkill = exports.TextAnalysisTool = 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;
5
6
  // OPC Agent — Open Agent Framework
6
7
  var agent_1 = require("./core/agent");
7
8
  Object.defineProperty(exports, "BaseAgent", { enumerable: true, get: function () { return agent_1.BaseAgent; } });
@@ -44,13 +45,22 @@ var plugins_1 = require("./plugins");
44
45
  Object.defineProperty(exports, "PluginManager", { enumerable: true, get: function () { return plugins_1.PluginManager; } });
45
46
  var sandbox_1 = require("./core/sandbox");
46
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; } });
47
52
  var analytics_1 = require("./analytics");
48
53
  Object.defineProperty(exports, "Analytics", { enumerable: true, get: function () { return analytics_1.Analytics; } });
49
54
  // v0.4.0 modules
50
55
  var workflow_1 = require("./core/workflow");
51
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; } });
52
61
  var a2a_1 = require("./core/a2a");
53
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; } });
54
64
  var hitl_1 = require("./core/hitl");
55
65
  Object.defineProperty(exports, "HITLManager", { enumerable: true, get: function () { return hitl_1.HITLManager; } });
56
66
  var voice_1 = require("./channels/voice");
@@ -106,6 +116,10 @@ var scheduler_1 = require("./skills/scheduler");
106
116
  Object.defineProperty(exports, "SchedulerSkill", { enumerable: true, get: function () { return scheduler_1.SchedulerSkill; } });
107
117
  var document_1 = require("./skills/document");
108
118
  Object.defineProperty(exports, "DocumentSkill", { enumerable: true, get: function () { return document_1.DocumentSkill; } });
119
+ var auto_learn_1 = require("./skills/auto-learn");
120
+ Object.defineProperty(exports, "SkillLearner", { enumerable: true, get: function () { return auto_learn_1.SkillLearner; } });
121
+ Object.defineProperty(exports, "skillToMarkdown", { enumerable: true, get: function () { return auto_learn_1.skillToMarkdown; } });
122
+ Object.defineProperty(exports, "parseSkillMarkdown", { enumerable: true, get: function () { return auto_learn_1.parseSkillMarkdown; } });
109
123
  // v0.9.0 modules
110
124
  var testing_1 = require("./testing");
111
125
  Object.defineProperty(exports, "runTests", { enumerable: true, get: function () { return testing_1.runTests; } });
@@ -147,6 +161,14 @@ var plugins_2 = require("./plugins");
147
161
  Object.defineProperty(exports, "createLoggingPlugin", { enumerable: true, get: function () { return plugins_2.createLoggingPlugin; } });
148
162
  Object.defineProperty(exports, "createAnalyticsPlugin", { enumerable: true, get: function () { return plugins_2.createAnalyticsPlugin; } });
149
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; } });
150
172
  // v1.1.0 modules
151
173
  var feishu_1 = require("./channels/feishu");
152
174
  Object.defineProperty(exports, "FeishuChannel", { enumerable: true, get: function () { return feishu_1.FeishuChannel; } });
@@ -163,6 +185,56 @@ Object.defineProperty(exports, "StreamableResponse", { enumerable: true, get: fu
163
185
  // v1.3.0 modules
164
186
  var traces_1 = require("./traces");
165
187
  Object.defineProperty(exports, "TraceCollector", { enumerable: true, get: function () { return traces_1.TraceCollector; } });
166
- Object.defineProperty(exports, "ConsoleExporter", { enumerable: true, get: function () { return traces_1.ConsoleExporter; } });
188
+ Object.defineProperty(exports, "TraceConsoleExporter", { enumerable: true, get: function () { return traces_1.ConsoleExporter; } });
167
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; } });
198
+ // v1.4.0 modules
199
+ var scheduler_2 = require("./core/scheduler");
200
+ Object.defineProperty(exports, "Scheduler", { enumerable: true, get: function () { return scheduler_2.Scheduler; } });
201
+ Object.defineProperty(exports, "parseCron", { enumerable: true, get: function () { return scheduler_2.parseCron; } });
202
+ Object.defineProperty(exports, "cronMatches", { enumerable: true, get: function () { return scheduler_2.cronMatches; } });
203
+ // v1.5.0 — built-in tools + MCP client
204
+ var builtin_1 = require("./tools/builtin");
205
+ Object.defineProperty(exports, "getBuiltinTools", { enumerable: true, get: function () { return builtin_1.getBuiltinTools; } });
206
+ Object.defineProperty(exports, "getBuiltinToolsByName", { enumerable: true, get: function () { return builtin_1.getBuiltinToolsByName; } });
207
+ var mcp_client_1 = require("./tools/mcp-client");
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; } });
168
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