opc-agent 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
  4. package/.github/workflows/ci.yml +24 -0
  5. package/CHANGELOG.md +23 -63
  6. package/CONTRIBUTING.md +21 -60
  7. package/README.md +235 -358
  8. package/README.zh-CN.md +415 -415
  9. package/dist/channels/slack.js +93 -10
  10. package/dist/channels/web.d.ts +10 -0
  11. package/dist/channels/web.js +33 -2
  12. package/dist/cli.js +255 -60
  13. package/dist/core/runtime.d.ts +4 -0
  14. package/dist/core/runtime.js +27 -0
  15. package/dist/deploy/hermes.js +22 -22
  16. package/dist/deploy/openclaw.js +31 -40
  17. package/dist/index.d.ts +3 -10
  18. package/dist/index.js +6 -15
  19. package/dist/providers/index.d.ts +1 -1
  20. package/dist/providers/index.js +7 -1
  21. package/dist/schema/oad.d.ts +1 -2
  22. package/dist/templates/code-reviewer.d.ts +0 -8
  23. package/dist/templates/code-reviewer.js +5 -9
  24. package/dist/templates/customer-service.d.ts +0 -8
  25. package/dist/templates/customer-service.js +2 -6
  26. package/dist/templates/data-analyst.d.ts +0 -8
  27. package/dist/templates/data-analyst.js +5 -9
  28. package/dist/templates/knowledge-base.d.ts +0 -8
  29. package/dist/templates/knowledge-base.js +2 -6
  30. package/dist/templates/sales-assistant.d.ts +0 -8
  31. package/dist/templates/sales-assistant.js +4 -8
  32. package/dist/templates/teacher.d.ts +0 -8
  33. package/dist/templates/teacher.js +6 -10
  34. package/dist/traces/index.d.ts +49 -0
  35. package/dist/traces/index.js +102 -0
  36. package/docs/.vitepress/config.ts +103 -103
  37. package/docs/api/cli.md +48 -48
  38. package/docs/api/oad-schema.md +64 -64
  39. package/docs/api/sdk.md +80 -80
  40. package/docs/guide/concepts.md +51 -51
  41. package/docs/guide/configuration.md +79 -79
  42. package/docs/guide/deployment.md +42 -42
  43. package/docs/guide/getting-started.md +44 -44
  44. package/docs/guide/templates.md +28 -28
  45. package/docs/guide/testing.md +84 -84
  46. package/docs/index.md +27 -27
  47. package/docs/zh/api/cli.md +54 -54
  48. package/docs/zh/api/oad-schema.md +87 -87
  49. package/docs/zh/api/sdk.md +102 -102
  50. package/docs/zh/guide/concepts.md +104 -104
  51. package/docs/zh/guide/configuration.md +135 -135
  52. package/docs/zh/guide/deployment.md +81 -81
  53. package/docs/zh/guide/getting-started.md +82 -82
  54. package/docs/zh/guide/templates.md +84 -84
  55. package/docs/zh/guide/testing.md +88 -88
  56. package/docs/zh/index.md +27 -27
  57. package/examples/README.md +22 -0
  58. package/examples/basic-agent.ts +90 -0
  59. package/examples/brain-integration.ts +71 -0
  60. package/examples/customer-service-demo/README.md +90 -90
  61. package/examples/customer-service-demo/oad.yaml +107 -107
  62. package/examples/multi-channel.ts +74 -0
  63. package/package.json +1 -1
  64. package/src/analytics/index.ts +66 -66
  65. package/src/channels/discord.ts +192 -192
  66. package/src/channels/email.ts +177 -177
  67. package/src/channels/feishu.ts +236 -236
  68. package/src/channels/index.ts +15 -15
  69. package/src/channels/slack.ts +217 -160
  70. package/src/channels/telegram.ts +90 -90
  71. package/src/channels/voice.ts +106 -106
  72. package/src/channels/web.ts +38 -2
  73. package/src/channels/webhook.ts +199 -199
  74. package/src/channels/websocket.ts +87 -87
  75. package/src/channels/wechat.ts +149 -149
  76. package/src/cli.ts +282 -58
  77. package/src/core/a2a.ts +143 -143
  78. package/src/core/agent.ts +152 -152
  79. package/src/core/analytics-engine.ts +186 -186
  80. package/src/core/auth.ts +57 -57
  81. package/src/core/cache.ts +141 -141
  82. package/src/core/compose.ts +77 -77
  83. package/src/core/config.ts +14 -14
  84. package/src/core/errors.ts +148 -148
  85. package/src/core/hitl.ts +138 -138
  86. package/src/core/logger.ts +57 -57
  87. package/src/core/orchestrator.ts +215 -215
  88. package/src/core/performance.ts +187 -187
  89. package/src/core/rate-limiter.ts +128 -128
  90. package/src/core/room.ts +109 -109
  91. package/src/core/runtime.ts +183 -152
  92. package/src/core/sandbox.ts +101 -101
  93. package/src/core/security.ts +171 -171
  94. package/src/core/types.ts +68 -68
  95. package/src/core/versioning.ts +106 -106
  96. package/src/core/watch.ts +178 -178
  97. package/src/core/workflow.ts +235 -235
  98. package/src/deploy/hermes.ts +156 -156
  99. package/src/deploy/openclaw.ts +190 -200
  100. package/src/i18n/index.ts +216 -216
  101. package/src/index.ts +3 -10
  102. package/src/memory/deepbrain.ts +108 -108
  103. package/src/memory/index.ts +34 -34
  104. package/src/plugins/index.ts +208 -208
  105. package/src/providers/index.ts +9 -1
  106. package/src/schema/oad.ts +154 -155
  107. package/src/skills/base.ts +16 -16
  108. package/src/skills/document.ts +100 -100
  109. package/src/skills/http.ts +35 -35
  110. package/src/skills/index.ts +27 -27
  111. package/src/skills/scheduler.ts +80 -80
  112. package/src/skills/webhook-trigger.ts +59 -59
  113. package/src/templates/code-reviewer.ts +30 -34
  114. package/src/templates/customer-service.ts +76 -80
  115. package/src/templates/data-analyst.ts +66 -70
  116. package/src/templates/executive-assistant.ts +71 -71
  117. package/src/templates/financial-advisor.ts +60 -60
  118. package/src/templates/knowledge-base.ts +27 -31
  119. package/src/templates/legal-assistant.ts +71 -71
  120. package/src/templates/sales-assistant.ts +75 -79
  121. package/src/templates/teacher.ts +75 -79
  122. package/src/testing/index.ts +181 -181
  123. package/src/tools/calculator.ts +73 -73
  124. package/src/tools/datetime.ts +149 -149
  125. package/src/tools/json-transform.ts +187 -187
  126. package/src/tools/mcp.ts +76 -76
  127. package/src/tools/text-analysis.ts +116 -116
  128. package/src/traces/index.ts +132 -0
  129. package/templates/Dockerfile +15 -15
  130. package/templates/code-reviewer/README.md +27 -27
  131. package/templates/code-reviewer/oad.yaml +41 -41
  132. package/templates/customer-service/README.md +22 -22
  133. package/templates/customer-service/oad.yaml +36 -36
  134. package/templates/docker-compose.yml +21 -21
  135. package/templates/ecommerce-assistant/README.md +45 -45
  136. package/templates/ecommerce-assistant/oad.yaml +47 -47
  137. package/templates/knowledge-base/README.md +28 -28
  138. package/templates/knowledge-base/oad.yaml +38 -38
  139. package/templates/sales-assistant/README.md +26 -26
  140. package/templates/sales-assistant/oad.yaml +43 -43
  141. package/templates/tech-support/README.md +43 -43
  142. package/templates/tech-support/oad.yaml +45 -45
  143. package/test-agent/Dockerfile +9 -0
  144. package/test-agent/README.md +50 -0
  145. package/test-agent/agent.yaml +23 -0
  146. package/test-agent/docker-compose.yml +11 -0
  147. package/test-agent/oad.yaml +31 -0
  148. package/test-agent/package-lock.json +1492 -0
  149. package/test-agent/package.json +18 -0
  150. package/test-agent/src/index.ts +24 -0
  151. package/test-agent/src/skills/echo.ts +15 -0
  152. package/test-agent/tsconfig.json +25 -0
  153. package/tests/a2a.test.ts +66 -66
  154. package/tests/agent.test.ts +72 -72
  155. package/tests/analytics.test.ts +50 -50
  156. package/tests/channel.test.ts +39 -39
  157. package/tests/e2e.test.ts +134 -134
  158. package/tests/errors.test.ts +83 -83
  159. package/tests/hitl.test.ts +71 -71
  160. package/tests/i18n.test.ts +41 -41
  161. package/tests/mcp.test.ts +54 -54
  162. package/tests/oad.test.ts +68 -68
  163. package/tests/performance.test.ts +115 -115
  164. package/tests/plugin.test.ts +74 -74
  165. package/tests/room.test.ts +106 -106
  166. package/tests/runtime.test.ts +42 -42
  167. package/tests/sandbox.test.ts +46 -46
  168. package/tests/security.test.ts +60 -60
  169. package/tests/templates.test.ts +77 -77
  170. package/tests/v070.test.ts +76 -76
  171. package/tests/versioning.test.ts +75 -75
  172. package/tests/voice.test.ts +61 -61
  173. package/tests/webhook.test.ts +29 -29
  174. package/tests/workflow.test.ts +143 -143
  175. package/tsconfig.json +19 -19
  176. package/vitest.config.ts +9 -9
  177. package/dist/core/dashboard.d.ts +0 -35
  178. package/dist/core/dashboard.js +0 -157
  179. package/dist/core/priority.d.ts +0 -52
  180. package/dist/core/priority.js +0 -102
  181. package/src/core/dashboard.ts +0 -219
  182. package/src/core/priority.ts +0 -140
  183. package/src/dtv/data.ts +0 -29
  184. package/src/dtv/trust.ts +0 -43
  185. package/src/dtv/value.ts +0 -47
  186. package/src/marketplace/index.ts +0 -223
@@ -9,6 +9,7 @@ const web_1 = require("../channels/web");
9
9
  const telegram_1 = require("../channels/telegram");
10
10
  const websocket_1 = require("../channels/websocket");
11
11
  const deepbrain_1 = require("../memory/deepbrain");
12
+ const analytics_1 = require("../analytics");
12
13
  const MAX_TOOL_OUTPUT = 5000;
13
14
  const DEFAULT_HISTORY_LIMIT = 50;
14
15
  function truncateOutput(output, maxChars = MAX_TOOL_OUTPUT) {
@@ -24,6 +25,7 @@ class AgentRuntime {
24
25
  historyLimit = DEFAULT_HISTORY_LIMIT;
25
26
  shutdownHandlers = [];
26
27
  isShuttingDown = false;
28
+ analytics = new analytics_1.Analytics();
27
29
  async loadConfig(filePath) {
28
30
  this.config = (0, config_1.loadOAD)(filePath);
29
31
  this.logger.info('Config loaded', { name: this.config.metadata.name });
@@ -58,6 +60,12 @@ class AgentRuntime {
58
60
  const port = ch.port ?? 3000;
59
61
  const webChannel = new web_1.WebChannel(port);
60
62
  webChannel.setAgentName(cfg.metadata.name);
63
+ webChannel.setAgentVersion(cfg.metadata.version);
64
+ webChannel.setAnalyticsProvider(() => this.analytics.getSnapshot());
65
+ webChannel.setChannelNames(cfg.spec.channels.map((c) => c.type));
66
+ webChannel.setSkillNames(cfg.spec.skills.map((s) => s.name));
67
+ const memType = memCfg && typeof memCfg.longTerm === 'object' && memCfg.longTerm.provider === 'deepbrain' ? 'deepbrain' : 'in-memory';
68
+ webChannel.setMemoryType(memType);
61
69
  // Wire streaming
62
70
  webChannel.onStreamMessage(async (msg, res) => {
63
71
  res.writeHead(200, {
@@ -66,15 +74,18 @@ class AgentRuntime {
66
74
  Connection: 'keep-alive',
67
75
  'Access-Control-Allow-Origin': '*',
68
76
  });
77
+ const startTime = Date.now();
69
78
  try {
70
79
  for await (const chunk of this.agent.handleMessageStream(msg)) {
71
80
  res.write(`data: ${JSON.stringify({ content: chunk })}\n\n`);
72
81
  }
73
82
  res.write('data: [DONE]\n\n');
83
+ this.analytics.recordMessage(Date.now() - startTime);
74
84
  }
75
85
  catch (err) {
76
86
  const errMsg = err instanceof Error ? err.message : String(err);
77
87
  res.write(`data: ${JSON.stringify({ error: errMsg })}\n\n`);
88
+ this.analytics.recordError();
78
89
  }
79
90
  res.end();
80
91
  });
@@ -94,6 +105,16 @@ class AgentRuntime {
94
105
  }
95
106
  }
96
107
  await this.agent.init();
108
+ // Wire analytics to agent events
109
+ this.agent.on('message:out', () => {
110
+ // responseTime is approximated; real timing is done via skill/llm events
111
+ });
112
+ this.agent.on('skill:execute', (skillName) => {
113
+ this.analytics.recordSkillUsage(skillName);
114
+ });
115
+ this.agent.on('error', () => {
116
+ this.analytics.recordError();
117
+ });
97
118
  this.logger.info('Agent initialized', { name: cfg.metadata.name });
98
119
  return this.agent;
99
120
  }
@@ -142,6 +163,12 @@ class AgentRuntime {
142
163
  getAgent() {
143
164
  return this.agent;
144
165
  }
166
+ getAnalytics() {
167
+ return this.analytics;
168
+ }
169
+ getConfig() {
170
+ return this.config;
171
+ }
145
172
  }
146
173
  exports.AgentRuntime = AgentRuntime;
147
174
  //# sourceMappingURL=runtime.js.map
@@ -113,32 +113,32 @@ function deployToHermes(options) {
113
113
  fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf-8');
114
114
  files.push('settings.json');
115
115
  // .env template
116
- const envContent = `# Hermes Agent Environment
117
- HERMES_CHARACTER=${oad.metadata.name}
118
- HERMES_MODEL=${oad.spec.model}
119
- HERMES_PROVIDER=${oad.spec.provider?.default ?? 'openai'}
120
- # Add your API keys below:
121
- # OPENAI_API_KEY=
122
- # DEEPSEEK_API_KEY=
116
+ const envContent = `# Hermes Agent Environment
117
+ HERMES_CHARACTER=${oad.metadata.name}
118
+ HERMES_MODEL=${oad.spec.model}
119
+ HERMES_PROVIDER=${oad.spec.provider?.default ?? 'openai'}
120
+ # Add your API keys below:
121
+ # OPENAI_API_KEY=
122
+ # DEEPSEEK_API_KEY=
123
123
  `;
124
124
  fs.writeFileSync(path.join(outputDir, '.env.hermes'), envContent, 'utf-8');
125
125
  files.push('.env.hermes');
126
126
  // README
127
- const readme = `# ${oad.metadata.name} - Hermes Agent
128
-
129
- Converted from OAD format using \`opc deploy --target hermes\`.
130
-
131
- ## Usage
132
-
133
- 1. Copy \`character.json\` to your Hermes agents directory
134
- 2. Configure \`.env.hermes\` with your API keys
135
- 3. Start Hermes with this character
136
-
137
- ## Files
138
-
139
- - \`character.json\` - Agent character definition
140
- - \`settings.json\` - Runtime settings
141
- - \`.env.hermes\` - Environment template
127
+ const readme = `# ${oad.metadata.name} - Hermes Agent
128
+
129
+ Converted from OAD format using \`opc deploy --target hermes\`.
130
+
131
+ ## Usage
132
+
133
+ 1. Copy \`character.json\` to your Hermes agents directory
134
+ 2. Configure \`.env.hermes\` with your API keys
135
+ 3. Start Hermes with this character
136
+
137
+ ## Files
138
+
139
+ - \`character.json\` - Agent character definition
140
+ - \`settings.json\` - Runtime settings
141
+ - \`.env.hermes\` - Environment template
142
142
  `;
143
143
  fs.writeFileSync(path.join(outputDir, 'README.md'), readme, 'utf-8');
144
144
  files.push('README.md');
@@ -41,27 +41,27 @@ const fs = __importStar(require("fs"));
41
41
  const path = __importStar(require("path"));
42
42
  function generateIdentityMd(oad) {
43
43
  const m = oad.metadata;
44
- return `# IDENTITY.md
45
-
46
- - **Name:** ${m.name}
47
- - **Version:** ${m.version}
48
- - **Description:** ${m.description ?? 'An AI agent'}
49
- - **Author:** ${m.author ?? 'Unknown'}
50
- - **License:** ${m.license}
44
+ return `# IDENTITY.md
45
+
46
+ - **Name:** ${m.name}
47
+ - **Version:** ${m.version}
48
+ - **Description:** ${m.description ?? 'An AI agent'}
49
+ - **Author:** ${m.author ?? 'Unknown'}
50
+ - **License:** ${m.license}
51
51
  `;
52
52
  }
53
53
  function generateSoulMd(oad) {
54
54
  const prompt = oad.spec.systemPrompt ?? 'You are a helpful AI assistant.';
55
- return `# SOUL.md - ${oad.metadata.name}
56
-
57
- ## System Prompt
58
-
59
- ${prompt}
60
-
61
- ## Model Configuration
62
-
63
- - **Model:** ${oad.spec.model}
64
- - **Provider:** ${oad.spec.provider?.default ?? 'deepseek'}
55
+ return `# SOUL.md - ${oad.metadata.name}
56
+
57
+ ## System Prompt
58
+
59
+ ${prompt}
60
+
61
+ ## Model Configuration
62
+
63
+ - **Model:** ${oad.spec.model}
64
+ - **Provider:** ${oad.spec.provider?.default ?? 'deepseek'}
65
65
  `;
66
66
  }
67
67
  function generateAgentsMd(oad) {
@@ -100,35 +100,26 @@ function generateAgentsMd(oad) {
100
100
  md += `Default memory settings.\n`;
101
101
  }
102
102
  md += `\n`;
103
- // DTV
104
- if (dtv) {
105
- md += `## Trust & Value\n\n`;
106
- md += `- Trust Level: ${dtv.trust?.level ?? 'sandbox'}\n`;
107
- if (dtv.value?.metrics?.length) {
108
- md += `- Metrics: ${dtv.value.metrics.join(', ')}\n`;
109
- }
110
- md += `\n`;
111
- }
112
103
  return md;
113
104
  }
114
105
  function generateUserMd(oad) {
115
- return `# USER.md
116
-
117
- - **Name:** (your name)
118
- - **Role:** User
119
- - **Notes:** Configure this file with your preferences for ${oad.metadata.name}.
106
+ return `# USER.md
107
+
108
+ - **Name:** (your name)
109
+ - **Role:** User
110
+ - **Notes:** Configure this file with your preferences for ${oad.metadata.name}.
120
111
  `;
121
112
  }
122
113
  function generateMemoryMd(oad) {
123
- return `# MEMORY.md - ${oad.metadata.name}
124
-
125
- ## Persistent Knowledge
126
-
127
- (Agent will store learned information here)
128
-
129
- ## User Preferences
130
-
131
- (Discovered user preferences will be noted here)
114
+ return `# MEMORY.md - ${oad.metadata.name}
115
+
116
+ ## Persistent Knowledge
117
+
118
+ (Agent will store learned information here)
119
+
120
+ ## User Preferences
121
+
122
+ (Discovered user preferences will be noted here)
132
123
  `;
133
124
  }
134
125
  function generateOpenClawConfig(oad, agentDir) {
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ export { AgentRuntime, truncateOutput } from './core/runtime';
3
3
  export { Logger } from './core/logger';
4
4
  export { loadOAD, validateOAD } from './core/config';
5
5
  export { OADSchema } from './schema/oad';
6
- export type { OADDocument, Metadata, Spec, DTVConfig, TrustLevelType } from './schema/oad';
6
+ export type { OADDocument, Metadata, Spec } from './schema/oad';
7
7
  export type { IAgent, IChannel, ISkill, Message, AgentContext, SkillResult, MemoryStore, AgentState } from './core/types';
8
8
  export { BaseChannel } from './channels';
9
9
  export { WebChannel } from './channels/web';
@@ -13,9 +13,6 @@ export { BaseSkill } from './skills/base';
13
13
  export { SkillRegistry } from './skills';
14
14
  export { InMemoryStore } from './memory';
15
15
  export { DeepBrainMemoryStore } from './memory/deepbrain';
16
- export { TrustManager } from './dtv/trust';
17
- export { ValueTracker } from './dtv/value';
18
- export { MRGConfigReader } from './dtv/data';
19
16
  export { createProvider, SUPPORTED_PROVIDERS } from './providers';
20
17
  export { Room } from './core/room';
21
18
  export type { RoomMessage } from './core/room';
@@ -45,8 +42,6 @@ export type { Locale } from './i18n';
45
42
  export { KnowledgeBase } from './core/knowledge';
46
43
  export { deployToHermes } from './deploy/hermes';
47
44
  export type { HermesDeployOptions, HermesDeployResult } from './deploy/hermes';
48
- export { publishAgent, installAgent } from './marketplace';
49
- export type { AgentManifest, PublishOptions, InstallOptions } from './marketplace';
50
45
  export { createAuthMiddleware, getActiveSessions } from './core/auth';
51
46
  export type { AuthConfig, AuthSession } from './core/auth';
52
47
  export { Orchestrator } from './core/orchestrator';
@@ -95,8 +90,6 @@ export { ToolGateway } from './tools/gateway';
95
90
  export type { ToolGatewayConfig, GatewayToolName } from './tools/gateway';
96
91
  export { StreamingManager, StreamableResponse } from './core/streaming';
97
92
  export type { StreamChunk, StreamOptions } from './core/streaming';
98
- export { Dashboard } from './core/dashboard';
99
- export type { DashboardConfig } from './core/dashboard';
100
- export { PriorityRouter } from './core/priority';
101
- export type { PriorityConfig, PriorityTier, PriorityProviderConfig } from './core/priority';
93
+ export { TraceCollector, ConsoleExporter, DeepBrainExporter } from './traces';
94
+ export type { Span, SpanEvent, TraceExporter } from './traces';
102
95
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmailChannel = exports.compose = exports.AgentPipeline = exports.Orchestrator = exports.getActiveSessions = exports.createAuthMiddleware = exports.installAgent = exports.publishAgent = 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.MRGConfigReader = exports.ValueTracker = exports.TrustManager = 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.PriorityRouter = exports.Dashboard = 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 = exports.JsonTransformTool = exports.DateTimeTool = exports.CalculatorTool = exports.WeChatChannel = exports.SlackChannel = void 0;
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;
5
5
  // OPC Agent — Open Agent Framework
6
6
  var agent_1 = require("./core/agent");
7
7
  Object.defineProperty(exports, "BaseAgent", { enumerable: true, get: function () { return agent_1.BaseAgent; } });
@@ -31,12 +31,6 @@ var memory_1 = require("./memory");
31
31
  Object.defineProperty(exports, "InMemoryStore", { enumerable: true, get: function () { return memory_1.InMemoryStore; } });
32
32
  var deepbrain_1 = require("./memory/deepbrain");
33
33
  Object.defineProperty(exports, "DeepBrainMemoryStore", { enumerable: true, get: function () { return deepbrain_1.DeepBrainMemoryStore; } });
34
- var trust_1 = require("./dtv/trust");
35
- Object.defineProperty(exports, "TrustManager", { enumerable: true, get: function () { return trust_1.TrustManager; } });
36
- var value_1 = require("./dtv/value");
37
- Object.defineProperty(exports, "ValueTracker", { enumerable: true, get: function () { return value_1.ValueTracker; } });
38
- var data_1 = require("./dtv/data");
39
- Object.defineProperty(exports, "MRGConfigReader", { enumerable: true, get: function () { return data_1.MRGConfigReader; } });
40
34
  var providers_1 = require("./providers");
41
35
  Object.defineProperty(exports, "createProvider", { enumerable: true, get: function () { return providers_1.createProvider; } });
42
36
  Object.defineProperty(exports, "SUPPORTED_PROVIDERS", { enumerable: true, get: function () { return providers_1.SUPPORTED_PROVIDERS; } });
@@ -80,9 +74,6 @@ var knowledge_1 = require("./core/knowledge");
80
74
  Object.defineProperty(exports, "KnowledgeBase", { enumerable: true, get: function () { return knowledge_1.KnowledgeBase; } });
81
75
  var hermes_1 = require("./deploy/hermes");
82
76
  Object.defineProperty(exports, "deployToHermes", { enumerable: true, get: function () { return hermes_1.deployToHermes; } });
83
- var marketplace_1 = require("./marketplace");
84
- Object.defineProperty(exports, "publishAgent", { enumerable: true, get: function () { return marketplace_1.publishAgent; } });
85
- Object.defineProperty(exports, "installAgent", { enumerable: true, get: function () { return marketplace_1.installAgent; } });
86
77
  // v0.7.0 modules
87
78
  var auth_1 = require("./core/auth");
88
79
  Object.defineProperty(exports, "createAuthMiddleware", { enumerable: true, get: function () { return auth_1.createAuthMiddleware; } });
@@ -170,8 +161,8 @@ var streaming_1 = require("./core/streaming");
170
161
  Object.defineProperty(exports, "StreamingManager", { enumerable: true, get: function () { return streaming_1.StreamingManager; } });
171
162
  Object.defineProperty(exports, "StreamableResponse", { enumerable: true, get: function () { return streaming_1.StreamableResponse; } });
172
163
  // v1.3.0 modules
173
- var dashboard_1 = require("./core/dashboard");
174
- Object.defineProperty(exports, "Dashboard", { enumerable: true, get: function () { return dashboard_1.Dashboard; } });
175
- var priority_1 = require("./core/priority");
176
- Object.defineProperty(exports, "PriorityRouter", { enumerable: true, get: function () { return priority_1.PriorityRouter; } });
164
+ var traces_1 = require("./traces");
165
+ 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; } });
167
+ Object.defineProperty(exports, "DeepBrainExporter", { enumerable: true, get: function () { return traces_1.DeepBrainExporter; } });
177
168
  //# sourceMappingURL=index.js.map
@@ -5,5 +5,5 @@ export interface LLMProvider {
5
5
  chatStream(messages: Message[], systemPrompt?: string): AsyncIterable<string>;
6
6
  }
7
7
  export declare function createProvider(name?: string, model?: string, baseUrl?: string, apiKey?: string): LLMProvider;
8
- export declare const SUPPORTED_PROVIDERS: readonly ["openai", "deepseek", "qwen", "gemini", "dashscope", "zhipu", "moonshot"];
8
+ export declare const SUPPORTED_PROVIDERS: readonly ["openai", "ollama", "deepseek", "qwen", "gemini", "dashscope", "zhipu", "moonshot"];
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -315,6 +315,12 @@ function isGeminiNative() {
315
315
  }
316
316
  function createProvider(name = 'openai', model, baseUrl, apiKey) {
317
317
  const finalModel = model || process.env.OPC_LLM_MODEL || 'gpt-4o-mini';
318
+ // Auto-detect ollama: use localhost:11434/v1 and dummy apiKey
319
+ if (name === 'ollama') {
320
+ const ollamaBase = baseUrl || process.env.OPC_LLM_BASE_URL || 'http://localhost:11434/v1';
321
+ const ollamaKey = apiKey || process.env.OPC_LLM_API_KEY || 'ollama';
322
+ return new OpenAICompatibleProvider('ollama', finalModel, ollamaBase, ollamaKey);
323
+ }
318
324
  const finalKey = apiKey || getApiKey();
319
325
  const finalBaseUrl = baseUrl || getBaseUrl();
320
326
  // Auto-detect Gemini native when key is new format or base URL points to googleapis
@@ -331,5 +337,5 @@ function createProvider(name = 'openai', model, baseUrl, apiKey) {
331
337
  }
332
338
  return new OpenAICompatibleProvider(resolvedName, finalModel, baseUrl, apiKey);
333
339
  }
334
- exports.SUPPORTED_PROVIDERS = ['openai', 'deepseek', 'qwen', 'gemini', 'dashscope', 'zhipu', 'moonshot'];
340
+ exports.SUPPORTED_PROVIDERS = ['openai', 'ollama', 'deepseek', 'qwen', 'gemini', 'dashscope', 'zhipu', 'moonshot'];
335
341
  //# sourceMappingURL=index.js.map
@@ -1266,6 +1266,5 @@ export type SkillRef = z.infer<typeof SkillRefSchema>;
1266
1266
  export type Channel = z.infer<typeof ChannelSchema>;
1267
1267
  export type Metadata = z.infer<typeof MetadataSchema>;
1268
1268
  export type Spec = z.infer<typeof SpecSchema>;
1269
- export type DTVConfig = z.infer<typeof DTVSchema>;
1270
- export type TrustLevelType = z.infer<typeof TrustLevel>;
1269
+ export type TrustLevelType = string;
1271
1270
  //# sourceMappingURL=oad.d.ts.map
@@ -28,14 +28,6 @@ export declare function createCodeReviewerConfig(): {
28
28
  shortTerm: boolean;
29
29
  longTerm: boolean;
30
30
  };
31
- dtv: {
32
- trust: {
33
- level: "sandbox";
34
- };
35
- value: {
36
- metrics: string[];
37
- };
38
- };
39
31
  };
40
32
  };
41
33
  //# sourceMappingURL=code-reviewer.d.ts.map
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CODE_REVIEWER_SYSTEM_PROMPT = void 0;
4
4
  exports.createCodeReviewerConfig = createCodeReviewerConfig;
5
- exports.CODE_REVIEWER_SYSTEM_PROMPT = `You are an expert code reviewer. When given code:
6
- 1. Check for bugs, security issues, and performance problems
7
- 2. Suggest improvements for readability and maintainability
8
- 3. Follow language-specific best practices
9
- 4. Be constructive and explain your reasoning
5
+ exports.CODE_REVIEWER_SYSTEM_PROMPT = `You are an expert code reviewer. When given code:
6
+ 1. Check for bugs, security issues, and performance problems
7
+ 2. Suggest improvements for readability and maintainability
8
+ 3. Follow language-specific best practices
9
+ 4. Be constructive and explain your reasoning
10
10
  Rate severity: 🔴 Critical | 🟡 Warning | 🔵 Info`;
11
11
  function createCodeReviewerConfig() {
12
12
  return {
@@ -28,10 +28,6 @@ function createCodeReviewerConfig() {
28
28
  ],
29
29
  channels: [{ type: 'web', port: 3000 }],
30
30
  memory: { shortTerm: true, longTerm: false },
31
- dtv: {
32
- trust: { level: 'sandbox' },
33
- value: { metrics: ['reviews_completed', 'issues_found'] },
34
- },
35
31
  },
36
32
  };
37
33
  }
@@ -43,14 +43,6 @@ export declare function createCustomerServiceConfig(): {
43
43
  shortTerm: boolean;
44
44
  longTerm: boolean;
45
45
  };
46
- dtv: {
47
- trust: {
48
- level: "sandbox";
49
- };
50
- value: {
51
- metrics: string[];
52
- };
53
- };
54
46
  };
55
47
  };
56
48
  //# sourceMappingURL=customer-service.d.ts.map
@@ -41,8 +41,8 @@ class HandoffSkill extends base_1.BaseSkill {
41
41
  }
42
42
  }
43
43
  exports.HandoffSkill = HandoffSkill;
44
- exports.CUSTOMER_SERVICE_SYSTEM_PROMPT = `You are a friendly and professional customer service agent.
45
- You help customers with their questions about products, orders, shipping, and returns.
44
+ exports.CUSTOMER_SERVICE_SYSTEM_PROMPT = `You are a friendly and professional customer service agent.
45
+ You help customers with their questions about products, orders, shipping, and returns.
46
46
  Be concise, helpful, and empathetic. If you're unsure, offer to connect them with a human agent.`;
47
47
  function createCustomerServiceConfig() {
48
48
  return {
@@ -65,10 +65,6 @@ function createCustomerServiceConfig() {
65
65
  ],
66
66
  channels: [{ type: 'web', port: 3000 }],
67
67
  memory: { shortTerm: true, longTerm: false },
68
- dtv: {
69
- trust: { level: 'sandbox' },
70
- value: { metrics: ['response_time', 'satisfaction_score'] },
71
- },
72
68
  },
73
69
  };
74
70
  }
@@ -40,14 +40,6 @@ export declare function createDataAnalystConfig(): {
40
40
  shortTerm: boolean;
41
41
  longTerm: boolean;
42
42
  };
43
- dtv: {
44
- trust: {
45
- level: "sandbox";
46
- };
47
- value: {
48
- metrics: string[];
49
- };
50
- };
51
43
  };
52
44
  };
53
45
  //# sourceMappingURL=data-analyst.d.ts.map
@@ -33,11 +33,11 @@ class InsightSkill extends base_1.BaseSkill {
33
33
  }
34
34
  }
35
35
  exports.InsightSkill = InsightSkill;
36
- exports.DATA_ANALYST_SYSTEM_PROMPT = `You are a professional data analyst assistant. Your goals:
37
- 1. Help users query, transform, and analyze data
38
- 2. Create clear visualizations and summaries
39
- 3. Identify trends, patterns, and anomalies
40
- 4. Explain findings in plain language
36
+ exports.DATA_ANALYST_SYSTEM_PROMPT = `You are a professional data analyst assistant. Your goals:
37
+ 1. Help users query, transform, and analyze data
38
+ 2. Create clear visualizations and summaries
39
+ 3. Identify trends, patterns, and anomalies
40
+ 4. Explain findings in plain language
41
41
  Be precise with numbers, always cite your data source, and suggest next steps for deeper analysis.`;
42
42
  function createDataAnalystConfig() {
43
43
  return {
@@ -60,10 +60,6 @@ function createDataAnalystConfig() {
60
60
  ],
61
61
  channels: [{ type: 'web', port: 3000 }],
62
62
  memory: { shortTerm: true, longTerm: true },
63
- dtv: {
64
- trust: { level: 'sandbox' },
65
- value: { metrics: ['queries_processed', 'insights_generated'] },
66
- },
67
63
  },
68
64
  };
69
65
  }
@@ -31,14 +31,6 @@ export declare function createKnowledgeBaseConfig(): {
31
31
  collection: string;
32
32
  };
33
33
  };
34
- dtv: {
35
- trust: {
36
- level: "sandbox";
37
- };
38
- value: {
39
- metrics: string[];
40
- };
41
- };
42
34
  };
43
35
  };
44
36
  //# sourceMappingURL=knowledge-base.d.ts.map
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.KNOWLEDGE_BASE_SYSTEM_PROMPT = void 0;
4
4
  exports.createKnowledgeBaseConfig = createKnowledgeBaseConfig;
5
- exports.KNOWLEDGE_BASE_SYSTEM_PROMPT = `You are a knowledge base assistant. Answer questions using the company documents
6
- and knowledge provided to you. If you don't have enough information, say so honestly.
5
+ exports.KNOWLEDGE_BASE_SYSTEM_PROMPT = `You are a knowledge base assistant. Answer questions using the company documents
6
+ and knowledge provided to you. If you don't have enough information, say so honestly.
7
7
  Always cite sources when possible. Be accurate and concise.`;
8
8
  function createKnowledgeBaseConfig() {
9
9
  return {
@@ -25,10 +25,6 @@ function createKnowledgeBaseConfig() {
25
25
  ],
26
26
  channels: [{ type: 'web', port: 3000 }],
27
27
  memory: { shortTerm: true, longTerm: { provider: 'deepbrain', collection: 'company-knowledge' } },
28
- dtv: {
29
- trust: { level: 'sandbox' },
30
- value: { metrics: ['queries_answered', 'docs_indexed'] },
31
- },
32
28
  },
33
29
  };
34
30
  }
@@ -43,14 +43,6 @@ export declare function createSalesAssistantConfig(): {
43
43
  shortTerm: boolean;
44
44
  longTerm: boolean;
45
45
  };
46
- dtv: {
47
- trust: {
48
- level: "sandbox";
49
- };
50
- value: {
51
- metrics: string[];
52
- };
53
- };
54
46
  };
55
47
  };
56
48
  //# sourceMappingURL=sales-assistant.d.ts.map
@@ -43,10 +43,10 @@ class LeadCaptureSkill extends base_1.BaseSkill {
43
43
  }
44
44
  }
45
45
  exports.LeadCaptureSkill = LeadCaptureSkill;
46
- exports.SALES_ASSISTANT_SYSTEM_PROMPT = `You are a professional sales assistant. Your goals:
47
- 1. Answer product questions accurately and enthusiastically
48
- 2. Capture leads by collecting name, email, and company info
49
- 3. Book appointments when prospects are ready
46
+ exports.SALES_ASSISTANT_SYSTEM_PROMPT = `You are a professional sales assistant. Your goals:
47
+ 1. Answer product questions accurately and enthusiastically
48
+ 2. Capture leads by collecting name, email, and company info
49
+ 3. Book appointments when prospects are ready
50
50
  Be friendly, persuasive but not pushy. Always provide value first.`;
51
51
  function createSalesAssistantConfig() {
52
52
  return {
@@ -69,10 +69,6 @@ function createSalesAssistantConfig() {
69
69
  ],
70
70
  channels: [{ type: 'web', port: 3000 }],
71
71
  memory: { shortTerm: true, longTerm: false },
72
- dtv: {
73
- trust: { level: 'sandbox' },
74
- value: { metrics: ['leads_captured', 'appointments_booked'] },
75
- },
76
72
  },
77
73
  };
78
74
  }
@@ -45,14 +45,6 @@ export declare function createTeacherConfig(): {
45
45
  shortTerm: boolean;
46
46
  longTerm: boolean;
47
47
  };
48
- dtv: {
49
- trust: {
50
- level: "sandbox";
51
- };
52
- value: {
53
- metrics: string[];
54
- };
55
- };
56
48
  };
57
49
  };
58
50
  //# sourceMappingURL=teacher.d.ts.map
@@ -39,12 +39,12 @@ class ExplainSkill extends base_1.BaseSkill {
39
39
  }
40
40
  }
41
41
  exports.ExplainSkill = ExplainSkill;
42
- exports.TEACHER_SYSTEM_PROMPT = `You are a patient and encouraging teacher assistant. Your goals:
43
- 1. Create engaging lesson plans tailored to student level
44
- 2. Generate quizzes and assessments with answer keys
45
- 3. Explain complex concepts using analogies and examples
46
- 4. Provide constructive feedback and encouragement
47
- 5. Adapt teaching style to different learning preferences
42
+ exports.TEACHER_SYSTEM_PROMPT = `You are a patient and encouraging teacher assistant. Your goals:
43
+ 1. Create engaging lesson plans tailored to student level
44
+ 2. Generate quizzes and assessments with answer keys
45
+ 3. Explain complex concepts using analogies and examples
46
+ 4. Provide constructive feedback and encouragement
47
+ 5. Adapt teaching style to different learning preferences
48
48
  Be patient, use clear language, and always check for understanding. Use the Socratic method when appropriate.`;
49
49
  function createTeacherConfig() {
50
50
  return {
@@ -68,10 +68,6 @@ function createTeacherConfig() {
68
68
  ],
69
69
  channels: [{ type: 'web', port: 3000 }],
70
70
  memory: { shortTerm: true, longTerm: true },
71
- dtv: {
72
- trust: { level: 'sandbox' },
73
- value: { metrics: ['lessons_created', 'quizzes_generated', 'concepts_explained'] },
74
- },
75
71
  },
76
72
  };
77
73
  }