opc-agent 1.1.1 → 1.1.3

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 (142) hide show
  1. package/CHANGELOG.md +51 -51
  2. package/CONTRIBUTING.md +75 -75
  3. package/README.md +222 -126
  4. package/README.zh-CN.md +129 -80
  5. package/dist/channels/web.js +256 -256
  6. package/dist/deploy/hermes.js +22 -22
  7. package/dist/deploy/openclaw.js +31 -31
  8. package/dist/providers/index.d.ts +1 -1
  9. package/dist/providers/index.js +148 -13
  10. package/dist/schema/oad.d.ts +3 -3
  11. package/dist/templates/code-reviewer.js +5 -5
  12. package/dist/templates/customer-service.js +2 -2
  13. package/dist/templates/data-analyst.js +5 -5
  14. package/dist/templates/knowledge-base.js +2 -2
  15. package/dist/templates/sales-assistant.js +4 -4
  16. package/dist/templates/teacher.js +6 -6
  17. package/docs/.vitepress/config.ts +103 -103
  18. package/docs/api/cli.md +48 -48
  19. package/docs/api/oad-schema.md +64 -64
  20. package/docs/api/sdk.md +80 -80
  21. package/docs/guide/concepts.md +51 -51
  22. package/docs/guide/configuration.md +79 -79
  23. package/docs/guide/deployment.md +42 -42
  24. package/docs/guide/getting-started.md +44 -44
  25. package/docs/guide/templates.md +28 -28
  26. package/docs/guide/testing.md +84 -84
  27. package/docs/index.md +27 -27
  28. package/docs/zh/api/cli.md +54 -54
  29. package/docs/zh/api/oad-schema.md +87 -87
  30. package/docs/zh/api/sdk.md +102 -102
  31. package/docs/zh/guide/concepts.md +104 -104
  32. package/docs/zh/guide/configuration.md +135 -135
  33. package/docs/zh/guide/deployment.md +81 -81
  34. package/docs/zh/guide/getting-started.md +82 -82
  35. package/docs/zh/guide/templates.md +84 -84
  36. package/docs/zh/guide/testing.md +88 -88
  37. package/docs/zh/index.md +27 -27
  38. package/examples/customer-service-demo/README.md +90 -90
  39. package/examples/customer-service-demo/oad.yaml +107 -107
  40. package/package.json +1 -1
  41. package/src/analytics/index.ts +66 -66
  42. package/src/channels/discord.ts +192 -192
  43. package/src/channels/email.ts +177 -177
  44. package/src/channels/feishu.ts +236 -236
  45. package/src/channels/index.ts +15 -15
  46. package/src/channels/slack.ts +160 -160
  47. package/src/channels/telegram.ts +90 -90
  48. package/src/channels/voice.ts +106 -106
  49. package/src/channels/web.ts +596 -596
  50. package/src/channels/webhook.ts +199 -199
  51. package/src/channels/websocket.ts +87 -87
  52. package/src/channels/wechat.ts +149 -149
  53. package/src/core/a2a.ts +143 -143
  54. package/src/core/agent.ts +152 -152
  55. package/src/core/analytics-engine.ts +186 -186
  56. package/src/core/auth.ts +57 -57
  57. package/src/core/cache.ts +141 -141
  58. package/src/core/compose.ts +77 -77
  59. package/src/core/config.ts +14 -14
  60. package/src/core/errors.ts +148 -148
  61. package/src/core/hitl.ts +138 -138
  62. package/src/core/knowledge.ts +210 -210
  63. package/src/core/logger.ts +57 -57
  64. package/src/core/orchestrator.ts +215 -215
  65. package/src/core/performance.ts +187 -187
  66. package/src/core/rate-limiter.ts +128 -128
  67. package/src/core/room.ts +109 -109
  68. package/src/core/runtime.ts +152 -152
  69. package/src/core/sandbox.ts +101 -101
  70. package/src/core/security.ts +171 -171
  71. package/src/core/types.ts +68 -68
  72. package/src/core/versioning.ts +106 -106
  73. package/src/core/watch.ts +178 -178
  74. package/src/core/workflow.ts +235 -235
  75. package/src/deploy/hermes.ts +156 -156
  76. package/src/deploy/openclaw.ts +200 -200
  77. package/src/dtv/data.ts +29 -29
  78. package/src/dtv/trust.ts +43 -43
  79. package/src/dtv/value.ts +47 -47
  80. package/src/i18n/index.ts +216 -216
  81. package/src/index.ts +110 -110
  82. package/src/marketplace/index.ts +223 -223
  83. package/src/memory/deepbrain.ts +108 -108
  84. package/src/memory/index.ts +34 -34
  85. package/src/plugins/index.ts +208 -208
  86. package/src/providers/index.ts +322 -183
  87. package/src/schema/oad.ts +155 -155
  88. package/src/skills/base.ts +16 -16
  89. package/src/skills/document.ts +100 -100
  90. package/src/skills/http.ts +35 -35
  91. package/src/skills/index.ts +27 -27
  92. package/src/skills/scheduler.ts +80 -80
  93. package/src/skills/webhook-trigger.ts +59 -59
  94. package/src/templates/code-reviewer.ts +34 -34
  95. package/src/templates/customer-service.ts +80 -80
  96. package/src/templates/data-analyst.ts +70 -70
  97. package/src/templates/executive-assistant.ts +71 -71
  98. package/src/templates/financial-advisor.ts +60 -60
  99. package/src/templates/knowledge-base.ts +31 -31
  100. package/src/templates/legal-assistant.ts +71 -71
  101. package/src/templates/sales-assistant.ts +79 -79
  102. package/src/templates/teacher.ts +79 -79
  103. package/src/testing/index.ts +181 -181
  104. package/src/tools/calculator.ts +73 -73
  105. package/src/tools/datetime.ts +149 -149
  106. package/src/tools/json-transform.ts +187 -187
  107. package/src/tools/mcp.ts +76 -76
  108. package/src/tools/text-analysis.ts +116 -116
  109. package/templates/Dockerfile +15 -15
  110. package/templates/code-reviewer/README.md +27 -27
  111. package/templates/code-reviewer/oad.yaml +41 -41
  112. package/templates/customer-service/README.md +22 -22
  113. package/templates/customer-service/oad.yaml +36 -36
  114. package/templates/docker-compose.yml +21 -21
  115. package/templates/knowledge-base/README.md +28 -28
  116. package/templates/knowledge-base/oad.yaml +38 -38
  117. package/templates/sales-assistant/README.md +26 -26
  118. package/templates/sales-assistant/oad.yaml +43 -43
  119. package/tests/a2a.test.ts +66 -66
  120. package/tests/agent.test.ts +72 -72
  121. package/tests/analytics.test.ts +50 -50
  122. package/tests/channel.test.ts +39 -39
  123. package/tests/e2e.test.ts +134 -134
  124. package/tests/errors.test.ts +83 -83
  125. package/tests/hitl.test.ts +71 -71
  126. package/tests/i18n.test.ts +41 -41
  127. package/tests/mcp.test.ts +54 -54
  128. package/tests/oad.test.ts +68 -68
  129. package/tests/performance.test.ts +115 -115
  130. package/tests/plugin.test.ts +74 -74
  131. package/tests/room.test.ts +106 -106
  132. package/tests/runtime.test.ts +42 -42
  133. package/tests/sandbox.test.ts +46 -46
  134. package/tests/security.test.ts +60 -60
  135. package/tests/templates.test.ts +77 -77
  136. package/tests/v070.test.ts +76 -76
  137. package/tests/versioning.test.ts +75 -75
  138. package/tests/voice.test.ts +61 -61
  139. package/tests/webhook.test.ts +29 -29
  140. package/tests/workflow.test.ts +143 -143
  141. package/tsconfig.json +19 -19
  142. package/vitest.config.ts +9 -9
@@ -1,106 +1,106 @@
1
- import { BaseChannel } from './index';
2
- import type { Message } from '../core/types';
3
- import { Logger } from '../core/logger';
4
-
5
- // ── Voice Channel Types ─────────────────────────────────────
6
-
7
- export interface STTProvider {
8
- name: string;
9
- transcribe(audio: Buffer, options?: STTOptions): Promise<string>;
10
- }
11
-
12
- export interface TTSProvider {
13
- name: string;
14
- synthesize(text: string, options?: TTSOptions): Promise<Buffer>;
15
- }
16
-
17
- export interface STTOptions {
18
- language?: string;
19
- model?: string;
20
- }
21
-
22
- export interface TTSOptions {
23
- voice?: string;
24
- speed?: number;
25
- language?: string;
26
- }
27
-
28
- export interface VoiceChannelConfig {
29
- sttProvider?: STTProvider;
30
- ttsProvider?: TTSProvider;
31
- sampleRate?: number;
32
- language?: string;
33
- }
34
-
35
- // ── Voice Channel ───────────────────────────────────────────
36
-
37
- export class VoiceChannel extends BaseChannel {
38
- type = 'voice';
39
- private config: VoiceChannelConfig;
40
- private logger = new Logger('voice-channel');
41
- private running = false;
42
-
43
- constructor(config?: VoiceChannelConfig) {
44
- super();
45
- this.config = config ?? {};
46
- }
47
-
48
- async start(): Promise<void> {
49
- this.running = true;
50
- this.logger.info('Voice channel started', {
51
- stt: this.config.sttProvider?.name ?? 'none',
52
- tts: this.config.ttsProvider?.name ?? 'none',
53
- });
54
- }
55
-
56
- async stop(): Promise<void> {
57
- this.running = false;
58
- this.logger.info('Voice channel stopped');
59
- }
60
-
61
- isRunning(): boolean {
62
- return this.running;
63
- }
64
-
65
- /** Process audio input: STT → Agent → TTS */
66
- async processAudio(audio: Buffer): Promise<{ text: string; response: string; audioResponse?: Buffer }> {
67
- if (!this.handler) throw new Error('No message handler set');
68
-
69
- // STT
70
- let text: string;
71
- if (this.config.sttProvider) {
72
- text = await this.config.sttProvider.transcribe(audio, { language: this.config.language });
73
- } else {
74
- text = audio.toString('utf-8'); // Fallback: treat as text
75
- }
76
-
77
- this.logger.debug('STT result', { text });
78
-
79
- // Create message and send to agent
80
- const message: Message = {
81
- id: `voice_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
82
- role: 'user',
83
- content: text,
84
- timestamp: Date.now(),
85
- metadata: { channel: 'voice' },
86
- };
87
-
88
- const response = await this.handler(message);
89
-
90
- // TTS
91
- let audioResponse: Buffer | undefined;
92
- if (this.config.ttsProvider) {
93
- audioResponse = await this.config.ttsProvider.synthesize(response.content, { language: this.config.language });
94
- }
95
-
96
- return { text, response: response.content, audioResponse };
97
- }
98
-
99
- setSTTProvider(provider: STTProvider): void {
100
- this.config.sttProvider = provider;
101
- }
102
-
103
- setTTSProvider(provider: TTSProvider): void {
104
- this.config.ttsProvider = provider;
105
- }
106
- }
1
+ import { BaseChannel } from './index';
2
+ import type { Message } from '../core/types';
3
+ import { Logger } from '../core/logger';
4
+
5
+ // ── Voice Channel Types ─────────────────────────────────────
6
+
7
+ export interface STTProvider {
8
+ name: string;
9
+ transcribe(audio: Buffer, options?: STTOptions): Promise<string>;
10
+ }
11
+
12
+ export interface TTSProvider {
13
+ name: string;
14
+ synthesize(text: string, options?: TTSOptions): Promise<Buffer>;
15
+ }
16
+
17
+ export interface STTOptions {
18
+ language?: string;
19
+ model?: string;
20
+ }
21
+
22
+ export interface TTSOptions {
23
+ voice?: string;
24
+ speed?: number;
25
+ language?: string;
26
+ }
27
+
28
+ export interface VoiceChannelConfig {
29
+ sttProvider?: STTProvider;
30
+ ttsProvider?: TTSProvider;
31
+ sampleRate?: number;
32
+ language?: string;
33
+ }
34
+
35
+ // ── Voice Channel ───────────────────────────────────────────
36
+
37
+ export class VoiceChannel extends BaseChannel {
38
+ type = 'voice';
39
+ private config: VoiceChannelConfig;
40
+ private logger = new Logger('voice-channel');
41
+ private running = false;
42
+
43
+ constructor(config?: VoiceChannelConfig) {
44
+ super();
45
+ this.config = config ?? {};
46
+ }
47
+
48
+ async start(): Promise<void> {
49
+ this.running = true;
50
+ this.logger.info('Voice channel started', {
51
+ stt: this.config.sttProvider?.name ?? 'none',
52
+ tts: this.config.ttsProvider?.name ?? 'none',
53
+ });
54
+ }
55
+
56
+ async stop(): Promise<void> {
57
+ this.running = false;
58
+ this.logger.info('Voice channel stopped');
59
+ }
60
+
61
+ isRunning(): boolean {
62
+ return this.running;
63
+ }
64
+
65
+ /** Process audio input: STT → Agent → TTS */
66
+ async processAudio(audio: Buffer): Promise<{ text: string; response: string; audioResponse?: Buffer }> {
67
+ if (!this.handler) throw new Error('No message handler set');
68
+
69
+ // STT
70
+ let text: string;
71
+ if (this.config.sttProvider) {
72
+ text = await this.config.sttProvider.transcribe(audio, { language: this.config.language });
73
+ } else {
74
+ text = audio.toString('utf-8'); // Fallback: treat as text
75
+ }
76
+
77
+ this.logger.debug('STT result', { text });
78
+
79
+ // Create message and send to agent
80
+ const message: Message = {
81
+ id: `voice_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
82
+ role: 'user',
83
+ content: text,
84
+ timestamp: Date.now(),
85
+ metadata: { channel: 'voice' },
86
+ };
87
+
88
+ const response = await this.handler(message);
89
+
90
+ // TTS
91
+ let audioResponse: Buffer | undefined;
92
+ if (this.config.ttsProvider) {
93
+ audioResponse = await this.config.ttsProvider.synthesize(response.content, { language: this.config.language });
94
+ }
95
+
96
+ return { text, response: response.content, audioResponse };
97
+ }
98
+
99
+ setSTTProvider(provider: STTProvider): void {
100
+ this.config.sttProvider = provider;
101
+ }
102
+
103
+ setTTSProvider(provider: TTSProvider): void {
104
+ this.config.ttsProvider = provider;
105
+ }
106
+ }