@mingxy/ocosay 1.0.2 → 1.0.4
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/README.md +21 -0
- package/dist/config.d.ts +21 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -3
- package/dist/config.js.map +1 -1
- package/dist/plugin.js +1907 -138
- package/dist/plugin.js.map +7 -1
- package/package.json +4 -2
- package/TECH_PLAN.md +0 -352
- package/__mocks__/@opencode-ai/plugin.ts +0 -32
- package/jest.config.js +0 -15
- package/src/config.ts +0 -149
- package/src/core/backends/afplay-backend.ts +0 -162
- package/src/core/backends/aplay-backend.ts +0 -160
- package/src/core/backends/base.ts +0 -117
- package/src/core/backends/index.ts +0 -128
- package/src/core/backends/naudiodon-backend.ts +0 -164
- package/src/core/backends/powershell-backend.ts +0 -173
- package/src/core/player.ts +0 -322
- package/src/core/speaker.ts +0 -283
- package/src/core/stream-player.ts +0 -326
- package/src/core/stream-reader.ts +0 -190
- package/src/core/streaming-synthesizer.ts +0 -123
- package/src/core/types.ts +0 -185
- package/src/index.ts +0 -236
- package/src/plugin.ts +0 -178
- package/src/providers/base.ts +0 -150
- package/src/providers/minimax.ts +0 -515
- package/src/tools/tts.ts +0 -277
- package/src/types/config.ts +0 -38
- package/src/types/naudiodon.d.ts +0 -19
- package/tests/__mocks__/@opencode-ai/plugin.ts +0 -32
- package/tests/backends.test.ts +0 -831
- package/tests/config.test.ts +0 -327
- package/tests/index.test.ts +0 -201
- package/tests/integration-test.d.ts +0 -6
- package/tests/integration-test.d.ts.map +0 -1
- package/tests/integration-test.js +0 -84
- package/tests/integration-test.js.map +0 -1
- package/tests/integration-test.ts +0 -93
- package/tests/p1-fixes.test.ts +0 -160
- package/tests/plugin.test.ts +0 -312
- package/tests/provider.test.d.ts +0 -2
- package/tests/provider.test.d.ts.map +0 -1
- package/tests/provider.test.js +0 -69
- package/tests/provider.test.js.map +0 -1
- package/tests/provider.test.ts +0 -87
- package/tests/speaker.test.d.ts +0 -2
- package/tests/speaker.test.d.ts.map +0 -1
- package/tests/speaker.test.js +0 -63
- package/tests/speaker.test.js.map +0 -1
- package/tests/speaker.test.ts +0 -232
- package/tests/stream-player.test.ts +0 -303
- package/tests/stream-reader.test.ts +0 -269
- package/tests/streaming-synthesizer.test.ts +0 -225
- package/tests/tts-tools.test.ts +0 -270
- package/tests/types.test.d.ts +0 -2
- package/tests/types.test.d.ts.map +0 -1
- package/tests/types.test.js +0 -61
- package/tests/types.test.js.map +0 -1
- package/tests/types.test.ts +0 -63
- package/tsconfig.json +0 -22
package/README.md
CHANGED
|
@@ -577,6 +577,27 @@ npm test
|
|
|
577
577
|
npm run watch
|
|
578
578
|
```
|
|
579
579
|
|
|
580
|
+
## Changelog
|
|
581
|
+
|
|
582
|
+
### v1.0.2 (2026-04-05)
|
|
583
|
+
**Bug Fix:**
|
|
584
|
+
- 🐛 修复 OpenCode 加载失败 `Plugin export is not a function`
|
|
585
|
+
- 根因:OpenCode 插件加载器期望 `{ server: Plugin }` 格式导出
|
|
586
|
+
- 修复:`export default { server: OcosayPlugin }`
|
|
587
|
+
- 🎵 默认 TTS 模型改为 `speech-2.8-hd`
|
|
588
|
+
|
|
589
|
+
### v1.0.1 (2026-04-05)
|
|
590
|
+
- 📚 多平台 AudioBackend 架构(6 种后端)
|
|
591
|
+
- 🔌 OpenCode 插件标准集成
|
|
592
|
+
- 📋 完整测试覆盖(304 测试)
|
|
593
|
+
|
|
594
|
+
### v1.0.0 (2026-04-05)
|
|
595
|
+
- 🎙️ 初始版本
|
|
596
|
+
- 🔊 多 TTS 模型支持
|
|
597
|
+
- 🎭 多种音色选择
|
|
598
|
+
- 🎛️ 播放控制(暂停、恢复、停止)
|
|
599
|
+
- 📡 豆包模式(边接收边朗读)
|
|
600
|
+
|
|
580
601
|
## Contributing
|
|
581
602
|
|
|
582
603
|
欢迎提交 Issue 和 PR!
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
export interface OcosayConfig {
|
|
2
|
+
enabled: boolean;
|
|
3
|
+
autoPlay: boolean;
|
|
4
|
+
autoRead: boolean;
|
|
5
|
+
streamMode: boolean;
|
|
6
|
+
streamBufferSize: number;
|
|
7
|
+
streamBufferTimeout: number;
|
|
8
|
+
speed: number;
|
|
9
|
+
volume: number;
|
|
10
|
+
pitch: number;
|
|
11
|
+
providers: {
|
|
12
|
+
minimax: {
|
|
13
|
+
apiKey: string;
|
|
14
|
+
baseURL: string;
|
|
15
|
+
voiceId: string;
|
|
16
|
+
model: 'sync' | 'async' | 'stream';
|
|
17
|
+
ttsModel: string;
|
|
18
|
+
audioFormat: 'mp3' | 'wav' | 'flac';
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
}
|
|
2
22
|
export declare function generateDefaultConfig(): OcosayConfig;
|
|
3
23
|
export declare function stripComments(jsonc: string): string;
|
|
4
24
|
export declare function mergeWithDefaults(loaded: Partial<OcosayConfig>, defaults: Omit<OcosayConfig, 'providers'>): Omit<OcosayConfig, 'providers'>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE;QACT,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAA;YACd,OAAO,EAAE,MAAM,CAAA;YACf,OAAO,EAAE,MAAM,CAAA;YACf,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;YAClC,QAAQ,EAAE,MAAM,CAAA;YAChB,WAAW,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;SACpC,CAAA;KACF,CAAA;CACF;AAiBD,wBAAgB,qBAAqB,IAAI,YAAY,CAcpD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmDnD;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,EAC7B,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,GACxC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAYjC;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAsDjD"}
|
package/dist/config.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import * as os from 'os';
|
|
4
|
-
|
|
4
|
+
// 默认配置
|
|
5
|
+
const DEFAULT_CONFIG = {
|
|
6
|
+
enabled: true,
|
|
7
|
+
autoPlay: false,
|
|
8
|
+
autoRead: false,
|
|
9
|
+
streamMode: true,
|
|
10
|
+
streamBufferSize: 30,
|
|
11
|
+
streamBufferTimeout: 2000,
|
|
12
|
+
speed: 1.0,
|
|
13
|
+
volume: 80,
|
|
14
|
+
pitch: 1.0
|
|
15
|
+
};
|
|
5
16
|
const CONFIG_PATH = path.join(os.homedir(), '.config', 'opencode', 'ocosay.jsonc');
|
|
6
17
|
export function generateDefaultConfig() {
|
|
7
18
|
return {
|
|
@@ -9,8 +20,8 @@ export function generateDefaultConfig() {
|
|
|
9
20
|
providers: {
|
|
10
21
|
minimax: {
|
|
11
22
|
apiKey: '',
|
|
12
|
-
baseURL: '',
|
|
13
|
-
voiceId: '',
|
|
23
|
+
baseURL: 'https://api.minimaxi.com',
|
|
24
|
+
voiceId: 'female-chengshu',
|
|
14
25
|
model: 'stream',
|
|
15
26
|
ttsModel: 'speech-2.8-hd',
|
|
16
27
|
audioFormat: 'mp3'
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAyBxB,OAAO;AACP,MAAM,cAAc,GAAoC;IACtD,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,IAAI;IACzB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,GAAG;CACX,CAAA;AAED,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,CAAC,CAAA;AAElF,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,GAAG,cAAc;QACjB,SAAS,EAAE;YACT,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,0BAA0B;gBACnC,OAAO,EAAE,iBAAiB;gBAC1B,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,eAAe;gBACzB,WAAW,EAAE,KAAK;aACnB;SACF;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAErB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAChE,QAAQ,GAAG,IAAI,CAAA;YACf,UAAU,GAAG,IAAI,CAAA;YACjB,MAAM,IAAI,IAAI,CAAA;YACd,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,IAAI,QAAQ,IAAI,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7D,QAAQ,GAAG,KAAK,CAAA;YAChB,MAAM,IAAI,IAAI,CAAA;YACd,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,IAAI,CAAA;YACd,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7C,CAAC,EAAE,CAAA;YACL,CAAC;YACD,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACzC,CAAC,IAAI,CAAC,CAAA;YACN,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBAC3E,CAAC,EAAE,CAAA;YACL,CAAC;YACD,CAAC,IAAI,CAAC,CAAA;YACN,SAAQ;QACV,CAAC;QAED,MAAM,IAAI,IAAI,CAAA;QACd,CAAC,EAAE,CAAA;IACL,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAA6B,EAC7B,QAAyC;IAEzC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;QAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QAC9C,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ;QAC9C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU;QACpD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,gBAAgB;QACtE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,QAAQ,CAAC,mBAAmB;QAC/E,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM;QACxC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK;KACtC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAE3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,KAAK,GAAG,EAAE,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;QAC5C,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAA;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC;YACH,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;YACrD,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;YAC7C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,qBAAqB,WAAW,KAAK,GAAG,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAA;QAChD,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;QACrD,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACrD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA0B,CAAA;QAE5D,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;QAExD,OAAO;YACL,GAAG,MAAM;YACT,SAAS,EAAE;gBACT,OAAO,EAAE;oBACP,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;oBAC/C,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;oBACjD,OAAO,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;oBACjD,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,IAAI,QAAQ;oBACnD,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,IAAI,eAAe;oBAChE,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,IAAI,KAAK;iBAC7D;aACF;SACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;QACjD,OAAO,qBAAqB,EAAE,CAAA;IAChC,CAAC;AACH,CAAC"}
|