opc-agent 1.2.1 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +24 -0
- package/CONTRIBUTING.md +75 -75
- package/README.md +235 -358
- package/README.zh-CN.md +415 -415
- package/dist/channels/web.js +256 -256
- package/dist/cli.js +118 -34
- package/dist/core/knowledge.d.ts +5 -0
- package/dist/core/knowledge.js +39 -2
- package/dist/deploy/hermes.js +22 -22
- package/dist/deploy/openclaw.js +31 -40
- package/dist/index.d.ts +3 -6
- package/dist/index.js +7 -11
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.js +158 -14
- package/dist/schema/oad.d.ts +4 -5
- 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/customer-service-demo/README.md +90 -90
- package/examples/customer-service-demo/oad.yaml +107 -107
- 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 +160 -160
- package/src/channels/telegram.ts +90 -90
- package/src/channels/voice.ts +106 -106
- 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 +124 -32
- 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 +152 -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 +5 -6
- package/src/memory/deepbrain.ts +108 -108
- package/src/memory/index.ts +34 -34
- package/src/plugins/index.ts +208 -208
- 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/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/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/cli.js
CHANGED
|
@@ -61,7 +61,6 @@ const workflow_1 = require("./core/workflow");
|
|
|
61
61
|
const versioning_1 = require("./core/versioning");
|
|
62
62
|
const providers_1 = require("./providers");
|
|
63
63
|
const knowledge_1 = require("./core/knowledge");
|
|
64
|
-
const marketplace_1 = require("./marketplace");
|
|
65
64
|
const program = new commander_1.Command();
|
|
66
65
|
const color = {
|
|
67
66
|
green: (s) => `\x1b[32m${s}\x1b[0m`,
|
|
@@ -684,51 +683,23 @@ kbCmd.command('clear').action(() => {
|
|
|
684
683
|
kb.clear();
|
|
685
684
|
console.log(`${icon.success} Knowledge base cleared.`);
|
|
686
685
|
});
|
|
687
|
-
// 📦
|
|
686
|
+
// 📦 Package commands ───────────────────────────────────
|
|
688
687
|
program
|
|
689
688
|
.command('publish')
|
|
690
689
|
.description('Package agent for distribution')
|
|
691
690
|
.option('-f, --file <file>', 'OAD file', 'oad.yaml')
|
|
692
691
|
.option('-o, --output <dir>', 'Output directory', '.')
|
|
693
692
|
.option('--include-kb', 'Include knowledge base')
|
|
694
|
-
.action(async (
|
|
695
|
-
|
|
696
|
-
console.log(`\n${icon.package} Packaging agent...\n`);
|
|
697
|
-
const result = await (0, marketplace_1.publishAgent)({
|
|
698
|
-
oadPath: opts.file,
|
|
699
|
-
outputDir: opts.output,
|
|
700
|
-
includeKnowledge: opts.includeKb,
|
|
701
|
-
});
|
|
702
|
-
console.log(`${icon.success} Published: ${color.bold(result.archivePath)}`);
|
|
703
|
-
console.log(` Name: ${result.manifest.name}`);
|
|
704
|
-
console.log(` Version: ${result.manifest.version}`);
|
|
705
|
-
console.log(` Files: ${result.manifest.files.length}`);
|
|
706
|
-
console.log();
|
|
707
|
-
}
|
|
708
|
-
catch (err) {
|
|
709
|
-
console.error(`${icon.error} Publish failed:`, err instanceof Error ? err.message : err);
|
|
710
|
-
process.exit(1);
|
|
711
|
-
}
|
|
693
|
+
.action(async () => {
|
|
694
|
+
console.log(`\n${icon.package} Agent packaging coming soon.\n`);
|
|
712
695
|
});
|
|
713
696
|
program
|
|
714
697
|
.command('install')
|
|
715
698
|
.description('Install agent from package')
|
|
716
699
|
.argument('<source>', 'Package file path or URL')
|
|
717
700
|
.option('-d, --dir <dir>', 'Install directory')
|
|
718
|
-
.action(async (
|
|
719
|
-
|
|
720
|
-
console.log(`\n${icon.package} Installing agent from ${color.bold(source)}...\n`);
|
|
721
|
-
const result = await (0, marketplace_1.installAgent)({ source, targetDir: opts.dir });
|
|
722
|
-
console.log(`${icon.success} Installed: ${color.bold(result.manifest.name)} v${result.manifest.version}`);
|
|
723
|
-
console.log(` Directory: ${result.dir}`);
|
|
724
|
-
console.log(`\n${color.bold('Next steps:')}`);
|
|
725
|
-
console.log(` cd ${result.dir}`);
|
|
726
|
-
console.log(` opc run\n`);
|
|
727
|
-
}
|
|
728
|
-
catch (err) {
|
|
729
|
-
console.error(`${icon.error} Install failed:`, err instanceof Error ? err.message : err);
|
|
730
|
-
process.exit(1);
|
|
731
|
-
}
|
|
701
|
+
.action(async () => {
|
|
702
|
+
console.log(`\n${icon.package} Agent install coming soon.\n`);
|
|
732
703
|
});
|
|
733
704
|
// 🔌 Plugin commands ────────────────────────────────────────
|
|
734
705
|
const pluginCmd = program.command('plugin').description('Manage plugins');
|
|
@@ -838,5 +809,118 @@ program
|
|
|
838
809
|
process.exit(1);
|
|
839
810
|
}
|
|
840
811
|
});
|
|
812
|
+
// ── Brain command ────────────────────────────────────────────
|
|
813
|
+
program
|
|
814
|
+
.command('brain')
|
|
815
|
+
.description('Show agent memory/brain status from DeepBrain')
|
|
816
|
+
.option('--url <url>', 'DeepBrain server URL', 'http://localhost:3333')
|
|
817
|
+
.action(async (opts) => {
|
|
818
|
+
console.log(`\n${icon.gear} ${color.bold('DeepBrain Status')} — ${color.dim(opts.url)}\n`);
|
|
819
|
+
try {
|
|
820
|
+
const res = await fetch(`${opts.url}/api/stats`);
|
|
821
|
+
if (!res.ok)
|
|
822
|
+
throw new Error(`HTTP ${res.status} ${res.statusText}`);
|
|
823
|
+
const stats = (await res.json());
|
|
824
|
+
const rows = [
|
|
825
|
+
['Total Pages', String(stats.totalPages ?? stats.pages ?? '-')],
|
|
826
|
+
['Total Chunks', String(stats.totalChunks ?? stats.chunks ?? '-')],
|
|
827
|
+
['Memory Tiers', String(stats.memoryTiers ?? stats.tiers ?? '-')],
|
|
828
|
+
['Index Size', stats.indexSize ?? '-'],
|
|
829
|
+
['Last Updated', stats.lastUpdated ?? stats.updatedAt ?? '-'],
|
|
830
|
+
];
|
|
831
|
+
const maxKey = Math.max(...rows.map(([k]) => k.length));
|
|
832
|
+
for (const [key, val] of rows) {
|
|
833
|
+
console.log(` ${color.cyan(key.padEnd(maxKey))} ${val}`);
|
|
834
|
+
}
|
|
835
|
+
console.log();
|
|
836
|
+
}
|
|
837
|
+
catch (err) {
|
|
838
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
839
|
+
if (msg.includes('ECONNREFUSED') || msg.includes('fetch failed')) {
|
|
840
|
+
console.log(` ${icon.warn} Cannot connect to DeepBrain at ${opts.url}`);
|
|
841
|
+
console.log(` ${color.dim('Is the server running? Start with: deepbrain serve')}\n`);
|
|
842
|
+
}
|
|
843
|
+
else {
|
|
844
|
+
console.error(` ${icon.error} ${msg}\n`);
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
});
|
|
848
|
+
// ── Logs command ─────────────────────────────────────────────
|
|
849
|
+
program
|
|
850
|
+
.command('logs')
|
|
851
|
+
.description('Show recent agent traces')
|
|
852
|
+
.option('-n, --limit <n>', 'Number of spans to show', '20')
|
|
853
|
+
.option('-f, --follow', 'Keep watching for new spans')
|
|
854
|
+
.action(async (opts) => {
|
|
855
|
+
const { TraceCollector } = await Promise.resolve().then(() => __importStar(require('./traces')));
|
|
856
|
+
const collector = new TraceCollector();
|
|
857
|
+
const limit = parseInt(opts.limit) || 20;
|
|
858
|
+
const printSpans = (spans) => {
|
|
859
|
+
const slice = spans.slice(-limit);
|
|
860
|
+
if (slice.length === 0) {
|
|
861
|
+
console.log(` ${icon.info} No traces yet. Interact with the agent to generate traces.`);
|
|
862
|
+
return;
|
|
863
|
+
}
|
|
864
|
+
for (const span of slice) {
|
|
865
|
+
const duration = span.endTime
|
|
866
|
+
? `${span.endTime.getTime() - span.startTime.getTime()}ms`
|
|
867
|
+
: 'ongoing';
|
|
868
|
+
const statusIcon = span.status === 'ok' ? icon.success : span.status === 'error' ? icon.error : color.dim('○');
|
|
869
|
+
const time = span.startTime.toLocaleTimeString();
|
|
870
|
+
console.log(` ${statusIcon} ${color.dim(time)} ${color.bold(span.name)} ${color.dim(duration)}`);
|
|
871
|
+
}
|
|
872
|
+
};
|
|
873
|
+
console.log(`\n${icon.gear} ${color.bold('Agent Traces')}\n`);
|
|
874
|
+
const spans = collector.getBufferedSpans();
|
|
875
|
+
printSpans(spans);
|
|
876
|
+
if (opts.follow) {
|
|
877
|
+
console.log(`\n ${color.dim('Watching for new traces... (Ctrl+C to stop)')}\n`);
|
|
878
|
+
let lastCount = spans.length;
|
|
879
|
+
const interval = setInterval(() => {
|
|
880
|
+
const current = collector.getBufferedSpans();
|
|
881
|
+
if (current.length > lastCount) {
|
|
882
|
+
const newSpans = current.slice(lastCount);
|
|
883
|
+
printSpans(newSpans);
|
|
884
|
+
lastCount = current.length;
|
|
885
|
+
}
|
|
886
|
+
}, 1000);
|
|
887
|
+
process.on('SIGINT', () => { clearInterval(interval); process.exit(0); });
|
|
888
|
+
}
|
|
889
|
+
else {
|
|
890
|
+
console.log();
|
|
891
|
+
}
|
|
892
|
+
});
|
|
893
|
+
// ── Score command ────────────────────────────────────────────
|
|
894
|
+
program
|
|
895
|
+
.command('score')
|
|
896
|
+
.description('Show agent performance score')
|
|
897
|
+
.action(async () => {
|
|
898
|
+
console.log(`\n${icon.gear} ${color.bold('Agent Performance Score')}\n`);
|
|
899
|
+
try {
|
|
900
|
+
const engine = new analytics_engine_1.AnalyticsEngine('.');
|
|
901
|
+
const stats = engine.getStats();
|
|
902
|
+
if (!stats || stats.totalMessages === 0) {
|
|
903
|
+
console.log(` ${icon.info} No score data yet. Run the agent first.\n`);
|
|
904
|
+
return;
|
|
905
|
+
}
|
|
906
|
+
const errorRate = stats.totalMessages > 0 ? (stats.totalErrors / stats.totalMessages) : 0;
|
|
907
|
+
const rows = [
|
|
908
|
+
['Total Messages', String(stats.totalMessages)],
|
|
909
|
+
['Total LLM Calls', String(stats.totalLLMCalls)],
|
|
910
|
+
['Total Tool Uses', String(stats.totalToolUses)],
|
|
911
|
+
['Avg Response Time', `${stats.avgResponseTimeMs}ms`],
|
|
912
|
+
['Error Rate', `${(errorRate * 100).toFixed(1)}%`],
|
|
913
|
+
['Token Usage', `${stats.totalTokens.total} tokens (in: ${stats.totalTokens.input}, out: ${stats.totalTokens.output})`],
|
|
914
|
+
];
|
|
915
|
+
const maxKey = Math.max(...rows.map(([k]) => k.length));
|
|
916
|
+
for (const [key, val] of rows) {
|
|
917
|
+
console.log(` ${color.cyan(key.padEnd(maxKey))} ${val}`);
|
|
918
|
+
}
|
|
919
|
+
console.log();
|
|
920
|
+
}
|
|
921
|
+
catch {
|
|
922
|
+
console.log(` ${icon.info} No score data yet. Run the agent first.\n`);
|
|
923
|
+
}
|
|
924
|
+
});
|
|
841
925
|
program.parse();
|
|
842
926
|
//# sourceMappingURL=cli.js.map
|
package/dist/core/knowledge.d.ts
CHANGED
|
@@ -17,6 +17,11 @@ export declare class KnowledgeBase {
|
|
|
17
17
|
}>>;
|
|
18
18
|
/** Build context string for injection into LLM calls */
|
|
19
19
|
getContext(query: string, topK?: number, minScore?: number): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Query DeepBrain for semantic search enhancement.
|
|
22
|
+
* Activated when OPC_DEEPBRAIN_ENABLED=true and deepbrain CLI is globally installed.
|
|
23
|
+
*/
|
|
24
|
+
private queryDeepBrain;
|
|
20
25
|
getStats(): {
|
|
21
26
|
totalEntries: number;
|
|
22
27
|
sources: string[];
|
package/dist/core/knowledge.js
CHANGED
|
@@ -36,10 +36,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.KnowledgeBase = void 0;
|
|
37
37
|
/**
|
|
38
38
|
* Knowledge Base / RAG - Local vector storage with semantic search
|
|
39
|
+
* Supports optional DeepBrain semantic search enhancement via OPC_DEEPBRAIN_ENABLED=true
|
|
39
40
|
*/
|
|
40
41
|
const fs = __importStar(require("fs"));
|
|
41
42
|
const path = __importStar(require("path"));
|
|
42
43
|
const crypto = __importStar(require("crypto"));
|
|
44
|
+
const child_process_1 = require("child_process");
|
|
43
45
|
const CHUNK_SIZE = 500; // chars per chunk
|
|
44
46
|
const CHUNK_OVERLAP = 50;
|
|
45
47
|
const STORE_FILE = '.opc-knowledge.json';
|
|
@@ -185,9 +187,44 @@ class KnowledgeBase {
|
|
|
185
187
|
async getContext(query, topK = 3, minScore = 0.1) {
|
|
186
188
|
const results = await this.search(query, topK);
|
|
187
189
|
const relevant = results.filter(r => r.score >= minScore);
|
|
188
|
-
|
|
190
|
+
let context = '';
|
|
191
|
+
if (relevant.length > 0) {
|
|
192
|
+
context = `\n\n--- Relevant Knowledge ---\n${relevant.map((r, i) => `[${i + 1}] (source: ${r.source}, relevance: ${(r.score * 100).toFixed(0)}%)\n${r.content}`).join('\n\n')}\n--- End Knowledge ---\n`;
|
|
193
|
+
}
|
|
194
|
+
// Enhance with DeepBrain semantic search if enabled
|
|
195
|
+
const deepBrainCtx = this.queryDeepBrain(query, topK);
|
|
196
|
+
return context + deepBrainCtx;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Query DeepBrain for semantic search enhancement.
|
|
200
|
+
* Activated when OPC_DEEPBRAIN_ENABLED=true and deepbrain CLI is globally installed.
|
|
201
|
+
*/
|
|
202
|
+
queryDeepBrain(query, topK) {
|
|
203
|
+
if (process.env.OPC_DEEPBRAIN_ENABLED !== 'true')
|
|
189
204
|
return '';
|
|
190
|
-
|
|
205
|
+
// Verify deepbrain is installed
|
|
206
|
+
const check = (0, child_process_1.spawnSync)('deepbrain', ['--version'], { encoding: 'utf-8', timeout: 3000 });
|
|
207
|
+
if (check.error || check.status !== 0)
|
|
208
|
+
return '';
|
|
209
|
+
try {
|
|
210
|
+
const result = (0, child_process_1.spawnSync)('deepbrain', ['query', query, '--top', String(topK), '--format', 'json'], { encoding: 'utf-8', timeout: 5000 });
|
|
211
|
+
if (result.status !== 0 || !result.stdout?.trim())
|
|
212
|
+
return '';
|
|
213
|
+
const parsed = JSON.parse(result.stdout);
|
|
214
|
+
const items = Array.isArray(parsed)
|
|
215
|
+
? parsed
|
|
216
|
+
: (parsed.results ?? []);
|
|
217
|
+
if (items.length === 0)
|
|
218
|
+
return '';
|
|
219
|
+
return `\n\n--- DeepBrain Knowledge ---\n${items.map((r, i) => {
|
|
220
|
+
const relevance = r.score != null ? `${(r.score * 100).toFixed(0)}%` : 'n/a';
|
|
221
|
+
const text = r.content ?? r.text ?? '';
|
|
222
|
+
return `[${i + 1}] (source: ${r.source ?? 'deepbrain'}, relevance: ${relevance})\n${text}`;
|
|
223
|
+
}).join('\n\n')}\n--- End DeepBrain Knowledge ---\n`;
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return '';
|
|
227
|
+
}
|
|
191
228
|
}
|
|
192
229
|
getStats() {
|
|
193
230
|
const sources = [...new Set(this.store.entries.map(e => String(e.metadata.source)))];
|
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,4 +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';
|
|
93
|
+
export { TraceCollector, ConsoleExporter, DeepBrainExporter } from './traces';
|
|
94
|
+
export type { Span, SpanEvent, TraceExporter } from './traces';
|
|
98
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.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 =
|
|
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; } });
|
|
@@ -169,4 +160,9 @@ Object.defineProperty(exports, "ToolGateway", { enumerable: true, get: function
|
|
|
169
160
|
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; } });
|
|
163
|
+
// v1.3.0 modules
|
|
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; } });
|
|
172
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"];
|
|
8
|
+
export declare const SUPPORTED_PROVIDERS: readonly ["openai", "deepseek", "qwen", "gemini", "dashscope", "zhipu", "moonshot"];
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|