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.
- package/.github/ISSUE_TEMPLATE/bug_report.md +20 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/.github/workflows/ci.yml +24 -0
- package/CHANGELOG.md +23 -63
- package/CONTRIBUTING.md +21 -60
- package/README.md +235 -358
- package/README.zh-CN.md +415 -415
- package/dist/channels/slack.js +93 -10
- package/dist/channels/web.d.ts +10 -0
- package/dist/channels/web.js +33 -2
- package/dist/cli.js +255 -60
- package/dist/core/runtime.d.ts +4 -0
- package/dist/core/runtime.js +27 -0
- package/dist/deploy/hermes.js +22 -22
- package/dist/deploy/openclaw.js +31 -40
- package/dist/index.d.ts +3 -10
- package/dist/index.js +6 -15
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.js +7 -1
- package/dist/schema/oad.d.ts +1 -2
- package/dist/templates/code-reviewer.d.ts +0 -8
- package/dist/templates/code-reviewer.js +5 -9
- package/dist/templates/customer-service.d.ts +0 -8
- package/dist/templates/customer-service.js +2 -6
- package/dist/templates/data-analyst.d.ts +0 -8
- package/dist/templates/data-analyst.js +5 -9
- package/dist/templates/knowledge-base.d.ts +0 -8
- package/dist/templates/knowledge-base.js +2 -6
- package/dist/templates/sales-assistant.d.ts +0 -8
- package/dist/templates/sales-assistant.js +4 -8
- package/dist/templates/teacher.d.ts +0 -8
- package/dist/templates/teacher.js +6 -10
- package/dist/traces/index.d.ts +49 -0
- package/dist/traces/index.js +102 -0
- package/docs/.vitepress/config.ts +103 -103
- package/docs/api/cli.md +48 -48
- package/docs/api/oad-schema.md +64 -64
- package/docs/api/sdk.md +80 -80
- package/docs/guide/concepts.md +51 -51
- package/docs/guide/configuration.md +79 -79
- package/docs/guide/deployment.md +42 -42
- package/docs/guide/getting-started.md +44 -44
- package/docs/guide/templates.md +28 -28
- package/docs/guide/testing.md +84 -84
- package/docs/index.md +27 -27
- package/docs/zh/api/cli.md +54 -54
- package/docs/zh/api/oad-schema.md +87 -87
- package/docs/zh/api/sdk.md +102 -102
- package/docs/zh/guide/concepts.md +104 -104
- package/docs/zh/guide/configuration.md +135 -135
- package/docs/zh/guide/deployment.md +81 -81
- package/docs/zh/guide/getting-started.md +82 -82
- package/docs/zh/guide/templates.md +84 -84
- package/docs/zh/guide/testing.md +88 -88
- package/docs/zh/index.md +27 -27
- package/examples/README.md +22 -0
- package/examples/basic-agent.ts +90 -0
- package/examples/brain-integration.ts +71 -0
- package/examples/customer-service-demo/README.md +90 -90
- package/examples/customer-service-demo/oad.yaml +107 -107
- package/examples/multi-channel.ts +74 -0
- package/package.json +1 -1
- package/src/analytics/index.ts +66 -66
- package/src/channels/discord.ts +192 -192
- package/src/channels/email.ts +177 -177
- package/src/channels/feishu.ts +236 -236
- package/src/channels/index.ts +15 -15
- package/src/channels/slack.ts +217 -160
- package/src/channels/telegram.ts +90 -90
- package/src/channels/voice.ts +106 -106
- package/src/channels/web.ts +38 -2
- package/src/channels/webhook.ts +199 -199
- package/src/channels/websocket.ts +87 -87
- package/src/channels/wechat.ts +149 -149
- package/src/cli.ts +282 -58
- package/src/core/a2a.ts +143 -143
- package/src/core/agent.ts +152 -152
- package/src/core/analytics-engine.ts +186 -186
- package/src/core/auth.ts +57 -57
- package/src/core/cache.ts +141 -141
- package/src/core/compose.ts +77 -77
- package/src/core/config.ts +14 -14
- package/src/core/errors.ts +148 -148
- package/src/core/hitl.ts +138 -138
- package/src/core/logger.ts +57 -57
- package/src/core/orchestrator.ts +215 -215
- package/src/core/performance.ts +187 -187
- package/src/core/rate-limiter.ts +128 -128
- package/src/core/room.ts +109 -109
- package/src/core/runtime.ts +183 -152
- package/src/core/sandbox.ts +101 -101
- package/src/core/security.ts +171 -171
- package/src/core/types.ts +68 -68
- package/src/core/versioning.ts +106 -106
- package/src/core/watch.ts +178 -178
- package/src/core/workflow.ts +235 -235
- package/src/deploy/hermes.ts +156 -156
- package/src/deploy/openclaw.ts +190 -200
- package/src/i18n/index.ts +216 -216
- package/src/index.ts +3 -10
- package/src/memory/deepbrain.ts +108 -108
- package/src/memory/index.ts +34 -34
- package/src/plugins/index.ts +208 -208
- package/src/providers/index.ts +9 -1
- package/src/schema/oad.ts +154 -155
- package/src/skills/base.ts +16 -16
- package/src/skills/document.ts +100 -100
- package/src/skills/http.ts +35 -35
- package/src/skills/index.ts +27 -27
- package/src/skills/scheduler.ts +80 -80
- package/src/skills/webhook-trigger.ts +59 -59
- package/src/templates/code-reviewer.ts +30 -34
- package/src/templates/customer-service.ts +76 -80
- package/src/templates/data-analyst.ts +66 -70
- package/src/templates/executive-assistant.ts +71 -71
- package/src/templates/financial-advisor.ts +60 -60
- package/src/templates/knowledge-base.ts +27 -31
- package/src/templates/legal-assistant.ts +71 -71
- package/src/templates/sales-assistant.ts +75 -79
- package/src/templates/teacher.ts +75 -79
- package/src/testing/index.ts +181 -181
- package/src/tools/calculator.ts +73 -73
- package/src/tools/datetime.ts +149 -149
- package/src/tools/json-transform.ts +187 -187
- package/src/tools/mcp.ts +76 -76
- package/src/tools/text-analysis.ts +116 -116
- package/src/traces/index.ts +132 -0
- package/templates/Dockerfile +15 -15
- package/templates/code-reviewer/README.md +27 -27
- package/templates/code-reviewer/oad.yaml +41 -41
- package/templates/customer-service/README.md +22 -22
- package/templates/customer-service/oad.yaml +36 -36
- package/templates/docker-compose.yml +21 -21
- package/templates/ecommerce-assistant/README.md +45 -45
- package/templates/ecommerce-assistant/oad.yaml +47 -47
- package/templates/knowledge-base/README.md +28 -28
- package/templates/knowledge-base/oad.yaml +38 -38
- package/templates/sales-assistant/README.md +26 -26
- package/templates/sales-assistant/oad.yaml +43 -43
- package/templates/tech-support/README.md +43 -43
- package/templates/tech-support/oad.yaml +45 -45
- package/test-agent/Dockerfile +9 -0
- package/test-agent/README.md +50 -0
- package/test-agent/agent.yaml +23 -0
- package/test-agent/docker-compose.yml +11 -0
- package/test-agent/oad.yaml +31 -0
- package/test-agent/package-lock.json +1492 -0
- package/test-agent/package.json +18 -0
- package/test-agent/src/index.ts +24 -0
- package/test-agent/src/skills/echo.ts +15 -0
- package/test-agent/tsconfig.json +25 -0
- package/tests/a2a.test.ts +66 -66
- package/tests/agent.test.ts +72 -72
- package/tests/analytics.test.ts +50 -50
- package/tests/channel.test.ts +39 -39
- package/tests/e2e.test.ts +134 -134
- package/tests/errors.test.ts +83 -83
- package/tests/hitl.test.ts +71 -71
- package/tests/i18n.test.ts +41 -41
- package/tests/mcp.test.ts +54 -54
- package/tests/oad.test.ts +68 -68
- package/tests/performance.test.ts +115 -115
- package/tests/plugin.test.ts +74 -74
- package/tests/room.test.ts +106 -106
- package/tests/runtime.test.ts +42 -42
- package/tests/sandbox.test.ts +46 -46
- package/tests/security.test.ts +60 -60
- package/tests/templates.test.ts +77 -77
- package/tests/v070.test.ts +76 -76
- package/tests/versioning.test.ts +75 -75
- package/tests/voice.test.ts +61 -61
- package/tests/webhook.test.ts +29 -29
- package/tests/workflow.test.ts +143 -143
- package/tsconfig.json +19 -19
- package/vitest.config.ts +9 -9
- package/dist/core/dashboard.d.ts +0 -35
- package/dist/core/dashboard.js +0 -157
- package/dist/core/priority.d.ts +0 -52
- package/dist/core/priority.js +0 -102
- package/src/core/dashboard.ts +0 -219
- package/src/core/priority.ts +0 -140
- package/src/dtv/data.ts +0 -29
- package/src/dtv/trust.ts +0 -43
- package/src/dtv/value.ts +0 -47
- package/src/marketplace/index.ts +0 -223
package/dist/core/runtime.js
CHANGED
|
@@ -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
|
package/dist/deploy/hermes.js
CHANGED
|
@@ -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');
|
package/dist/deploy/openclaw.js
CHANGED
|
@@ -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
|
|
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 {
|
|
99
|
-
export type {
|
|
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.
|
|
4
|
-
exports.
|
|
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
|
|
174
|
-
Object.defineProperty(exports, "
|
|
175
|
-
|
|
176
|
-
Object.defineProperty(exports, "
|
|
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
|
package/dist/providers/index.js
CHANGED
|
@@ -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
|
package/dist/schema/oad.d.ts
CHANGED
|
@@ -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
|
|
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
|
}
|
|
@@ -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
|
}
|