@coeiro-operator/core 1.2.3 → 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.
Files changed (40) hide show
  1. package/dist/index.d.ts +4 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +5 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/operator/{character-defaults.d.ts → character/character-defaults.d.ts} +4 -6
  6. package/dist/operator/character/character-defaults.d.ts.map +1 -0
  7. package/dist/operator/character/character-defaults.js.map +1 -0
  8. package/dist/operator/{character-info-service.d.ts → character/character-info-service.d.ts} +35 -8
  9. package/dist/operator/character/character-info-service.d.ts.map +1 -0
  10. package/dist/operator/{character-info-service.js → character/character-info-service.js} +85 -52
  11. package/dist/operator/character/character-info-service.js.map +1 -0
  12. package/dist/operator/{config-manager.d.ts → config/config-manager.d.ts} +42 -4
  13. package/dist/operator/config/config-manager.d.ts.map +1 -0
  14. package/dist/operator/{config-manager.js → config/config-manager.js} +147 -9
  15. package/dist/operator/config/config-manager.js.map +1 -0
  16. package/dist/operator/file-operation-manager.d.ts.map +1 -1
  17. package/dist/operator/file-operation-manager.js +3 -2
  18. package/dist/operator/file-operation-manager.js.map +1 -1
  19. package/dist/operator/index.d.ts +75 -16
  20. package/dist/operator/index.d.ts.map +1 -1
  21. package/dist/operator/index.js +201 -65
  22. package/dist/operator/index.js.map +1 -1
  23. package/dist/operator/speech-rate-measurer.d.ts +32 -0
  24. package/dist/operator/speech-rate-measurer.d.ts.map +1 -0
  25. package/dist/operator/speech-rate-measurer.js +121 -0
  26. package/dist/operator/speech-rate-measurer.js.map +1 -0
  27. package/dist/setup.d.ts +19 -0
  28. package/dist/setup.d.ts.map +1 -0
  29. package/dist/setup.js +31 -0
  30. package/dist/setup.js.map +1 -0
  31. package/dist/terminal/terminal-background.d.ts +1 -1
  32. package/dist/terminal/terminal-background.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/operator/character-defaults.d.ts.map +0 -1
  35. package/dist/operator/character-defaults.js.map +0 -1
  36. package/dist/operator/character-info-service.d.ts.map +0 -1
  37. package/dist/operator/character-info-service.js.map +0 -1
  38. package/dist/operator/config-manager.d.ts.map +0 -1
  39. package/dist/operator/config-manager.js.map +0 -1
  40. /package/dist/operator/{character-defaults.js → character/character-defaults.js} +0 -0
package/dist/index.d.ts CHANGED
@@ -9,10 +9,11 @@ export * from './dictionary/dictionary-client.js';
9
9
  export * from './dictionary/dictionary-persistence.js';
10
10
  export * from './dictionary/default-dictionaries.js';
11
11
  export * from './operator/index.js';
12
- export * from './operator/character-info-service.js';
13
- export * from './operator/character-defaults.js';
14
- export { default as ConfigManager, TerminalBackgroundConfig } from './operator/config-manager.js';
12
+ export * from './operator/character/character-info-service.js';
13
+ export * from './operator/character/character-defaults.js';
14
+ export { default as ConfigManager, TerminalBackgroundConfig } from './operator/config/config-manager.js';
15
15
  export * from './operator/file-operation-manager.js';
16
+ export * from './setup.js';
16
17
  export { VoiceStyle, ConnectionConfig, getSpeakerProvider, type SpeakerProvider } from './environment/speaker-provider.js';
17
18
  export { TerminalBackground } from './terminal/terminal-background.js';
18
19
  export * from './test-utils/test-env.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,0BAA0B,CAAC;AAGzC,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGhE,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,qBAAqB,CAAC;AACpC,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAClG,cAAc,sCAAsC,CAAC;AAGrD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,0BAA0B,CAAC;AAGzC,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGhE,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAGrD,cAAc,qBAAqB,CAAC;AACpC,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACzG,cAAc,sCAAsC,CAAC;AAGrD,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,eAAe,EACrB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE,cAAc,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -14,10 +14,12 @@ export * from './dictionary/dictionary-persistence.js';
14
14
  export * from './dictionary/default-dictionaries.js';
15
15
  // Operator
16
16
  export * from './operator/index.js';
17
- export * from './operator/character-info-service.js';
18
- export * from './operator/character-defaults.js';
19
- export { default as ConfigManager } from './operator/config-manager.js';
17
+ export * from './operator/character/character-info-service.js';
18
+ export * from './operator/character/character-defaults.js';
19
+ export { default as ConfigManager } from './operator/config/config-manager.js';
20
20
  export * from './operator/file-operation-manager.js';
21
+ // Setup
22
+ export * from './setup.js';
21
23
  // Environment (Speakerは除外してcharacter-info-serviceから使用)
22
24
  export { getSpeakerProvider } from './environment/speaker-provider.js';
23
25
  // Terminal
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mBAAmB;AACnB,cAAc,0BAA0B,CAAC;AAEzC,eAAe;AACf,cAAc,YAAY,CAAC;AAE3B,iCAAiC;AACjC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEhE,aAAa;AACb,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAErD,WAAW;AACX,cAAc,qBAAqB,CAAC;AACpC,cAAc,sCAAsC,CAAC;AACrD,cAAc,kCAAkC,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAA4B,MAAM,8BAA8B,CAAC;AAClG,cAAc,sCAAsC,CAAC;AAErD,uDAAuD;AACvD,OAAO,EAGL,kBAAkB,EAEnB,MAAM,mCAAmC,CAAC;AAE3C,WAAW;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,iBAAiB;AACjB,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mBAAmB;AACnB,cAAc,0BAA0B,CAAC;AAEzC,eAAe;AACf,cAAc,YAAY,CAAC;AAE3B,iCAAiC;AACjC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEhE,aAAa;AACb,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,sCAAsC,CAAC;AAErD,WAAW;AACX,cAAc,qBAAqB,CAAC;AACpC,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,aAAa,EAA4B,MAAM,qCAAqC,CAAC;AACzG,cAAc,sCAAsC,CAAC;AAErD,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,uDAAuD;AACvD,OAAO,EAGL,kBAAkB,EAEnB,MAAM,mCAAmC,CAAC;AAE3C,WAAW;AACX,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,iBAAiB;AACjB,cAAc,0BAA0B,CAAC"}
@@ -4,11 +4,12 @@
4
4
  */
5
5
  export interface StyleConfig {
6
6
  styleName: string;
7
- morasPerSecond: number;
7
+ morasPerSecond?: number;
8
8
  personality?: string;
9
9
  speakingStyle?: string;
10
+ disabled?: boolean;
10
11
  }
11
- export interface BaseCharacterConfig {
12
+ export interface CharacterConfig {
12
13
  speakerId: string;
13
14
  name: string;
14
15
  personality: string;
@@ -17,11 +18,8 @@ export interface BaseCharacterConfig {
17
18
  farewell: string;
18
19
  defaultStyleId: number;
19
20
  styles: Record<number, StyleConfig>;
20
- }
21
- export interface CharacterConfig extends BaseCharacterConfig {
22
- availableStyles?: string[];
23
21
  disabled?: boolean;
24
22
  }
25
- export declare const BUILTIN_CHARACTER_CONFIGS: Record<string, BaseCharacterConfig>;
23
+ export declare const BUILTIN_CHARACTER_CONFIGS: Record<string, CharacterConfig>;
26
24
  export declare const DEFAULT_CHARACTER_ID = "tsukuyomi";
27
25
  //# sourceMappingURL=character-defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-defaults.d.ts","sourceRoot":"","sources":["../../../src/operator/character/character-defaults.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAGD,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CA0M5D,CAAC;AAGX,eAAO,MAAM,oBAAoB,cAAc,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-defaults.js","sourceRoot":"","sources":["../../../src/operator/character/character-defaults.ts"],"names":[],"mappings":"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"}
@@ -8,15 +8,21 @@
8
8
  * - Character: Speakerに性格や口調の情報を付与したもの(defaultStyleなども持つ)
9
9
  * - Operator: sessionId毎に割り当てられたCharacter
10
10
  */
11
- import ConfigManager from './config-manager.js';
11
+ import ConfigManager from '../config/config-manager.js';
12
+ import { StyleConfig } from './character-defaults.js';
12
13
  /**
13
- * Style: Speakerの声のバリエーション
14
+ * Style: Speakerの声のバリエーション(API形式)
14
15
  * COEIROINKでは一つのSpeakerが複数のStyleを持つことができる
15
16
  * 例: つくよみちゃんの「れいせい」「おしとやか」「げんき」
17
+ *
18
+ * COEIROINK APIから取得される形式(配列要素として使用)
16
19
  */
17
20
  export interface Style {
18
21
  styleId: number;
19
22
  styleName: string;
23
+ morasPerSecond?: number;
24
+ personality?: string;
25
+ speakingStyle?: string;
20
26
  }
21
27
  /**
22
28
  * Speaker: COEIROINKの声の単位(純粋な音声モデル)
@@ -29,27 +35,41 @@ export interface Speaker {
29
35
  styles: Style[];
30
36
  }
31
37
  /**
32
- * Character: Speakerに性格や口調の情報を付与したもの
38
+ * Character: Speakerに性格や口調の情報を付与したもの(実行時型)
33
39
  * Speaker(APIから) + Character設定(ファイルから) = Character
34
40
  */
35
41
  export interface Character {
36
42
  characterId: string;
37
- speaker: Speaker | null;
43
+ speakerId: string;
44
+ speakerName: string;
38
45
  defaultStyleId: number;
39
46
  greeting: string;
40
47
  farewell: string;
41
48
  personality: string;
42
49
  speakingStyle: string;
43
- styles: Record<number, import('./character-defaults.js').StyleConfig>;
50
+ styles: Record<number, StyleConfig>;
51
+ }
52
+ /**
53
+ * SpeakerInfo: SpeakerとCharacterの対応関係情報
54
+ * listSpeakers()の戻り値型
55
+ */
56
+ export interface SpeakerInfo {
57
+ speakerId: string;
58
+ speakerName: string;
59
+ isRegistered: boolean;
60
+ usedByCharacters: string[];
61
+ styles: Array<{
62
+ styleId: number;
63
+ styleName: string;
64
+ }>;
44
65
  }
45
66
  export declare class CharacterInfoService {
46
67
  private configManager;
47
- private coeiroinkConfigFile;
48
68
  constructor();
49
69
  /**
50
- * 初期化:ConfigManagerと設定ファイルパスを設定
70
+ * 初期化:ConfigManagerを設定
51
71
  */
52
- initialize(configManager: ConfigManager, coeiroinkConfigFile: string): void;
72
+ initialize(configManager: ConfigManager): void;
53
73
  /**
54
74
  * キャラクター情報を取得
55
75
  */
@@ -69,6 +89,13 @@ export declare class CharacterInfoService {
69
89
  * 利用可能なキャラクターIDリストを取得
70
90
  */
71
91
  getAvailableCharacterIds(): Promise<string[]>;
92
+ /**
93
+ * COEIROINKで利用可能なSpeaker一覧を取得
94
+ * @param options.unregisteredOnly - trueの場合、キャラクター登録されていないSpeakerのみ返す
95
+ */
96
+ listSpeakers(options?: {
97
+ unregisteredOnly?: boolean;
98
+ }): Promise<SpeakerInfo[]>;
72
99
  }
73
100
  export default CharacterInfoService;
74
101
  //# sourceMappingURL=character-info-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-info-service.d.ts","sourceRoot":"","sources":["../../../src/operator/character/character-info-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,aAAa,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAmB,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGvE;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAoBD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,aAAa,CAA8B;;IAMnD;;OAEG;IACH,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAI9C;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAWtE;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,GAAE,MAAM,GAAG,IAAW,GAAG,KAAK;IA2D9E;;;OAGG;IACG,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAgB9E;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOnD;;;OAGG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CA0DrF;AAED,eAAe,oBAAoB,CAAC"}
@@ -8,48 +8,13 @@
8
8
  * - Character: Speakerに性格や口調の情報を付与したもの(defaultStyleなども持つ)
9
9
  * - Operator: sessionId毎に割り当てられたCharacter
10
10
  */
11
- import { getSpeakerProvider } from '../environment/speaker-provider.js';
11
+ import { getSpeakerProvider } from '../../environment/speaker-provider.js';
12
12
  // CharacterConfigからCharacterに変換するヘルパー関数
13
- // Speaker情報はAPIから取得されるため、非同期処理が必要
14
13
  async function convertCharacterConfigToCharacter(characterId, config) {
15
- let speaker = null;
16
- if (config.speakerId) {
17
- // SpeakerProviderからスタイル情報を取得
18
- const speakerProvider = getSpeakerProvider();
19
- try {
20
- const speakers = await speakerProvider.getSpeakers();
21
- const apiSpeaker = speakers.find(s => s.speakerUuid === config.speakerId);
22
- if (apiSpeaker) {
23
- speaker = {
24
- speakerId: config.speakerId,
25
- speakerName: apiSpeaker.speakerName,
26
- styles: apiSpeaker.styles.map(style => ({
27
- styleId: style.styleId,
28
- styleName: style.styleName,
29
- })),
30
- };
31
- }
32
- else {
33
- // APIから見つからない場合、基本情報のみ設定
34
- speaker = {
35
- speakerId: config.speakerId,
36
- speakerName: config.name,
37
- styles: [],
38
- };
39
- }
40
- }
41
- catch {
42
- // APIエラーの場合、基本情報のみ設定
43
- speaker = {
44
- speakerId: config.speakerId,
45
- speakerName: config.name,
46
- styles: [],
47
- };
48
- }
49
- }
50
14
  return {
51
15
  characterId,
52
- speaker,
16
+ speakerId: config.speakerId,
17
+ speakerName: config.name,
53
18
  defaultStyleId: config.defaultStyleId,
54
19
  greeting: config.greeting || '',
55
20
  farewell: config.farewell || '',
@@ -60,16 +25,14 @@ async function convertCharacterConfigToCharacter(characterId, config) {
60
25
  }
61
26
  export class CharacterInfoService {
62
27
  configManager = null;
63
- coeiroinkConfigFile = null;
64
28
  constructor() {
65
29
  // キャラクター情報の読み込み専用サービス
66
30
  }
67
31
  /**
68
- * 初期化:ConfigManagerと設定ファイルパスを設定
32
+ * 初期化:ConfigManagerを設定
69
33
  */
70
- initialize(configManager, coeiroinkConfigFile) {
34
+ initialize(configManager) {
71
35
  this.configManager = configManager;
72
- this.coeiroinkConfigFile = coeiroinkConfigFile;
73
36
  }
74
37
  /**
75
38
  * キャラクター情報を取得
@@ -90,28 +53,46 @@ export class CharacterInfoService {
90
53
  * @param specifiedStyle 指定されたスタイル名
91
54
  */
92
55
  selectStyle(character, specifiedStyle = null) {
93
- if (!character.speaker || !character.speaker.styles || character.speaker.styles.length === 0) {
56
+ if (!character.styles || Object.keys(character.styles).length === 0) {
57
+ throw new Error(`キャラクター '${character.characterId}' に利用可能なスタイルがありません`);
58
+ }
59
+ // disabledでないスタイルのみを抽出してStyle型に変換
60
+ const enabledStyles = Object.entries(character.styles)
61
+ .filter(([_, styleConfig]) => !styleConfig.disabled)
62
+ .map(([styleId, styleConfig]) => ({
63
+ styleId: Number(styleId),
64
+ styleName: styleConfig.styleName,
65
+ morasPerSecond: styleConfig.morasPerSecond,
66
+ personality: styleConfig.personality,
67
+ speakingStyle: styleConfig.speakingStyle,
68
+ }));
69
+ if (enabledStyles.length === 0) {
94
70
  throw new Error(`キャラクター '${character.characterId}' に利用可能なスタイルがありません`);
95
71
  }
96
- const styles = character.speaker.styles;
97
72
  // 明示的にスタイルが指定された場合
98
73
  if (specifiedStyle && specifiedStyle !== '') {
99
- const requestedStyle = styles.find(style => style.styleName === specifiedStyle);
74
+ const requestedStyle = enabledStyles.find(style => style.styleName === specifiedStyle);
100
75
  if (requestedStyle) {
101
76
  return requestedStyle;
102
77
  }
103
78
  // 指定されたスタイルが見つからない場合はエラー
104
- const availableStyleNames = styles.map(style => style.styleName);
79
+ const availableStyleNames = enabledStyles.map(style => style.styleName);
105
80
  const errorMessage = `指定されたスタイル '${specifiedStyle}' が見つかりません。利用可能なスタイル: ${availableStyleNames.join(', ')}`;
106
81
  throw new Error(errorMessage);
107
82
  }
108
- // デフォルトスタイルを検索
109
- const defaultStyle = styles.find(style => style.styleId === character.defaultStyleId);
110
- if (defaultStyle) {
111
- return defaultStyle;
83
+ // デフォルトスタイルを検索(disabledでない場合のみ)
84
+ const defaultStyleConfig = character.styles[character.defaultStyleId];
85
+ if (defaultStyleConfig && !defaultStyleConfig.disabled) {
86
+ return {
87
+ styleId: character.defaultStyleId,
88
+ styleName: defaultStyleConfig.styleName,
89
+ morasPerSecond: defaultStyleConfig.morasPerSecond,
90
+ personality: defaultStyleConfig.personality,
91
+ speakingStyle: defaultStyleConfig.speakingStyle,
92
+ };
112
93
  }
113
- // デフォルトが見つからない場合は最初のスタイルを使用
114
- return styles[0];
94
+ // デフォルトが見つからないか無効な場合は最初の有効なスタイルを使用
95
+ return enabledStyles[0];
115
96
  }
116
97
  // 削除: extractGreetingPatternsメソッド
117
98
  // greetingフィールドは各キャラクターに1つずつ定義されており、
@@ -148,6 +129,58 @@ export class CharacterInfoService {
148
129
  }
149
130
  return await this.configManager.getAvailableCharacterIds();
150
131
  }
132
+ /**
133
+ * COEIROINKで利用可能なSpeaker一覧を取得
134
+ * @param options.unregisteredOnly - trueの場合、キャラクター登録されていないSpeakerのみ返す
135
+ */
136
+ async listSpeakers(options) {
137
+ if (!this.configManager) {
138
+ throw new Error('CharacterInfoService is not initialized');
139
+ }
140
+ // 1. COEIROINK APIから全Speaker取得
141
+ const speakerProvider = getSpeakerProvider();
142
+ const apiSpeakers = await speakerProvider.getSpeakers();
143
+ // 2. 登録済みキャラクター一覧を取得
144
+ const characterIds = await this.configManager.getAvailableCharacterIds();
145
+ const characters = {};
146
+ for (const characterId of characterIds) {
147
+ const character = await this.configManager.getCharacterConfig(characterId);
148
+ if (character) {
149
+ characters[character.speakerId] = characters[character.speakerId] || {
150
+ speakerId: character.speakerId,
151
+ characterId
152
+ };
153
+ }
154
+ }
155
+ // 3. Speaker情報を構築
156
+ const speakerInfos = [];
157
+ for (const speaker of apiSpeakers) {
158
+ const usedByCharacters = [];
159
+ // このspeakerIdを使用しているキャラクターを検索
160
+ for (const characterId of characterIds) {
161
+ const character = await this.configManager.getCharacterConfig(characterId);
162
+ if (character?.speakerId === speaker.speakerUuid) {
163
+ usedByCharacters.push(characterId);
164
+ }
165
+ }
166
+ const isRegistered = usedByCharacters.length > 0;
167
+ // unregisteredOnlyオプションが有効な場合、登録済みはスキップ
168
+ if (options?.unregisteredOnly && isRegistered) {
169
+ continue;
170
+ }
171
+ speakerInfos.push({
172
+ speakerId: speaker.speakerUuid,
173
+ speakerName: speaker.speakerName,
174
+ isRegistered,
175
+ usedByCharacters,
176
+ styles: speaker.styles.map(s => ({
177
+ styleId: s.styleId,
178
+ styleName: s.styleName,
179
+ })),
180
+ });
181
+ }
182
+ return speakerInfos;
183
+ }
151
184
  }
152
185
  export default CharacterInfoService;
153
186
  //# sourceMappingURL=character-info-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-info-service.js","sourceRoot":"","sources":["../../../src/operator/character/character-info-service.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,21 @@
2
2
  * src/operator/config-manager.ts: 設定管理システム
3
3
  * 動的音声フォント取得、設定マージ、キャッシュ管理を担当
4
4
  */
5
- import { BaseCharacterConfig, CharacterConfig } from './character-defaults.js';
6
- import { AudioConfig, FullConfig as BaseFullConfig, OperatorConfig } from '../types.js';
5
+ import { CharacterConfig, StyleConfig } from '../character/character-defaults.js';
6
+ import { AudioConfig, FullConfig as BaseFullConfig, OperatorConfig } from '../../types.js';
7
7
  export interface FullConfig extends Omit<BaseFullConfig, 'characters'> {
8
- characters: Record<string, BaseCharacterConfig | CharacterConfig>;
8
+ characters: Record<string, CharacterConfig>;
9
+ }
10
+ interface StyleFromAPI {
11
+ styleId: number;
12
+ styleName: string;
9
13
  }
14
+ /**
15
+ * API stylesとconfig stylesをマージ
16
+ * - すべてのAPI stylesが利用可能
17
+ * - morasPerSecondなどの付加情報はconfigから追加
18
+ */
19
+ export declare function mergeStyles(apiStyles: StyleFromAPI[], configStyles: Record<number, StyleConfig> | undefined, characterPersonality: string, characterSpeakingStyle: string): Record<number, StyleConfig>;
10
20
  export interface TerminalBackgroundConfig {
11
21
  enabled: boolean;
12
22
  imagePaths?: Record<string, string | null | false>;
@@ -36,7 +46,7 @@ interface Config {
36
46
  terminal: {
37
47
  background: TerminalBackgroundConfig;
38
48
  };
39
- characters: Record<string, Partial<BaseCharacterConfig> & {
49
+ characters: Record<string, Partial<CharacterConfig> & {
40
50
  speakerId?: string;
41
51
  disabled?: boolean;
42
52
  }>;
@@ -55,6 +65,18 @@ export declare class ConfigManager {
55
65
  private mergedConfig;
56
66
  private speakerProvider;
57
67
  constructor(configDir: string);
68
+ /**
69
+ * 設定ディレクトリのパスを取得
70
+ */
71
+ getConfigDir(): string;
72
+ /**
73
+ * 状態保存用ディレクトリのパスを取得
74
+ */
75
+ getStateDir(): string;
76
+ /**
77
+ * COEIROINK設定ファイルのパスを取得
78
+ */
79
+ getCoeiroinkConfigPath(): string;
58
80
  /**
59
81
  * JSONファイルを安全に読み込み
60
82
  */
@@ -118,6 +140,22 @@ export declare class ConfigManager {
118
140
  * 完全なConfig型を取得(SayCoeiroink用)
119
141
  */
120
142
  getFullConfig(): Promise<FullConfig>;
143
+ /**
144
+ * ユーザー定義キャラクターを登録
145
+ * @param characterId キャラクターID
146
+ * @param config キャラクター設定(部分的な指定も可能)
147
+ * @throws {Error} バリデーションエラー時
148
+ */
149
+ registerCharacter(characterId: string, config: Partial<CharacterConfig>): Promise<void>;
150
+ /**
151
+ * キャラクター設定を更新(スタイルマージ対応)
152
+ * - 既存キャラクターの場合: stylesはマージ、他のフィールドは上書き
153
+ * - 新規キャラクターの場合: 新規追加
154
+ *
155
+ * @param characterId キャラクターID
156
+ * @param updates 更新内容(部分的な指定も可能)
157
+ */
158
+ updateCharacterConfig(characterId: string, updates: Partial<CharacterConfig>): Promise<void>;
121
159
  }
122
160
  export default ConfigManager;
123
161
  //# sourceMappingURL=config-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../../src/operator/config/config-manager.ts"],"names":[],"mappings":"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"}