@metatell/bot-core 0.0.9 → 0.0.10
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/dist/client/MetatellClientImpl.d.ts +104 -0
- package/dist/client/MetatellClientImpl.d.ts.map +1 -0
- package/dist/client/MetatellClientImpl.js +642 -0
- package/dist/client/MetatellClientImpl.js.map +1 -0
- package/dist/errors.d.ts +2 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/logging/spi.d.ts.map +1 -1
- package/dist/logging/spi.js +6 -1
- package/dist/logging/spi.js.map +1 -1
- package/dist/test-utils/expect-helpers.d.ts.map +1 -1
- package/dist/types/client.d.ts +225 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/client.js +2 -0
- package/dist/types/client.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/voice.d.ts +19 -0
- package/dist/types/voice.d.ts.map +1 -0
- package/dist/types/voice.js +2 -0
- package/dist/types/voice.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import type { Animation, AvatarAsset, BotInfo, Euler, MetatellClient, MetatellClientEvents, PcmInputOptions, PlaybackControls, User, Vec3 } from '../types/client.js';
|
|
3
|
+
export declare class MetatellError extends Error {
|
|
4
|
+
code: string;
|
|
5
|
+
cause?: unknown;
|
|
6
|
+
constructor(code: string, message: string, cause?: unknown);
|
|
7
|
+
}
|
|
8
|
+
export declare class AuthError extends MetatellError {
|
|
9
|
+
constructor(code: string, message: string, cause?: unknown);
|
|
10
|
+
}
|
|
11
|
+
export declare class NetworkError extends MetatellError {
|
|
12
|
+
constructor(code: string, message: string, cause?: unknown);
|
|
13
|
+
}
|
|
14
|
+
export declare class NotFoundError extends MetatellError {
|
|
15
|
+
constructor(code: string, message: string, cause?: unknown);
|
|
16
|
+
}
|
|
17
|
+
export interface CreateClientOptions {
|
|
18
|
+
serverUrl: string;
|
|
19
|
+
roomId: string;
|
|
20
|
+
token?: string;
|
|
21
|
+
username?: string;
|
|
22
|
+
avatarId?: string;
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* MetatellClient implementation
|
|
27
|
+
*/
|
|
28
|
+
export declare class MetatellClientImpl extends EventEmitter implements MetatellClient {
|
|
29
|
+
private options;
|
|
30
|
+
private serviceFactory;
|
|
31
|
+
private connectionManager;
|
|
32
|
+
private messageService;
|
|
33
|
+
private avatarController;
|
|
34
|
+
private presenceManager;
|
|
35
|
+
private organizationService;
|
|
36
|
+
private animationService;
|
|
37
|
+
private eventBus;
|
|
38
|
+
private configProvider;
|
|
39
|
+
private userAvatarManager;
|
|
40
|
+
private rateLimiter;
|
|
41
|
+
private logger;
|
|
42
|
+
private orgAvatarUrlCache;
|
|
43
|
+
constructor(options: CreateClientOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Parse mention from message body
|
|
46
|
+
* Format: [@displayName](session-id) message
|
|
47
|
+
* Example: [@MetatellCLI](b754ca96-d395-4b80-adb1-77cb0240a43d) hello
|
|
48
|
+
*/
|
|
49
|
+
private parseMessageMention;
|
|
50
|
+
private setupEventProxies;
|
|
51
|
+
private resyncAvatarForNewUser;
|
|
52
|
+
connect(): Promise<void>;
|
|
53
|
+
disconnect(): Promise<void>;
|
|
54
|
+
readonly room: {
|
|
55
|
+
getUsers: () => Promise<User[]>;
|
|
56
|
+
getNearbyUsers: (radius?: number) => Promise<User[]>;
|
|
57
|
+
};
|
|
58
|
+
readonly chat: {
|
|
59
|
+
send: (text: string) => Promise<void>;
|
|
60
|
+
onMessage: (handler: (event: {
|
|
61
|
+
from: User;
|
|
62
|
+
text: string;
|
|
63
|
+
mention?: {
|
|
64
|
+
sessionId: string;
|
|
65
|
+
name: string;
|
|
66
|
+
};
|
|
67
|
+
reply: (text: string) => Promise<void>;
|
|
68
|
+
}) => void) => void;
|
|
69
|
+
};
|
|
70
|
+
readonly avatar: {
|
|
71
|
+
select: (assetId: string) => Promise<void>;
|
|
72
|
+
play: (animation: Animation) => Promise<void>;
|
|
73
|
+
moveTo: (position: Vec3) => Promise<void>;
|
|
74
|
+
rotateTo: (rotation: Euler) => Promise<void>;
|
|
75
|
+
lookAt: (target: Vec3) => Promise<void>;
|
|
76
|
+
getPosition: () => Vec3 | null;
|
|
77
|
+
getAvailableAssets: () => Promise<AvatarAsset[]>;
|
|
78
|
+
getAvailableAnimations: () => Promise<Animation[]>;
|
|
79
|
+
};
|
|
80
|
+
readonly voice: {
|
|
81
|
+
playPcm: (_input: unknown, _options: PcmInputOptions) => Promise<PlaybackControls>;
|
|
82
|
+
};
|
|
83
|
+
getInfo(): Promise<BotInfo>;
|
|
84
|
+
getStatus(): {
|
|
85
|
+
connected: boolean;
|
|
86
|
+
connecting: boolean;
|
|
87
|
+
};
|
|
88
|
+
getUsers(): User[];
|
|
89
|
+
getRateLimit(key: 'messages' | 'moves' | 'looks'): number | undefined;
|
|
90
|
+
setRateLimit(key: 'messages' | 'moves' | 'looks', perSecond: number): void;
|
|
91
|
+
getSessionId(): string | null;
|
|
92
|
+
muteVoice(muted: boolean): Promise<void>;
|
|
93
|
+
sendVoiceFrame(_pcm: Int16Array): Promise<void>;
|
|
94
|
+
on<E extends keyof MetatellClientEvents>(event: E, listener: MetatellClientEvents[E]): this;
|
|
95
|
+
off<E extends keyof MetatellClientEvents>(event: E, listener: MetatellClientEvents[E]): this;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Create MetatellClient instance
|
|
99
|
+
* @param options Client configuration
|
|
100
|
+
* @returns MetatellClient instance
|
|
101
|
+
* @throws {MetatellError} If configuration is invalid
|
|
102
|
+
*/
|
|
103
|
+
export declare function createMetatellClient(options: CreateClientOptions): MetatellClient;
|
|
104
|
+
//# sourceMappingURL=MetatellClientImpl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetatellClientImpl.d.ts","sourceRoot":"","sources":["../../src/client/MetatellClientImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,642 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import { CoreServiceFactory } from '../CoreServiceFactory.js';
|
|
3
|
+
import { AnimationService } from '../interfaces/IAnimationService.js';
|
|
4
|
+
import { AppSettings } from '../interfaces/IAppSettings.js';
|
|
5
|
+
import { AvatarController } from '../interfaces/IAvatarController.js';
|
|
6
|
+
import { ConfigurationProvider, } from '../interfaces/IConfigurationProvider.js';
|
|
7
|
+
import { ConnectionManager } from '../interfaces/IConnectionManager.js';
|
|
8
|
+
import { EventBus, SystemEvents } from '../interfaces/IEventBus.js';
|
|
9
|
+
import { MessageService } from '../interfaces/IMessageService.js';
|
|
10
|
+
import { OrganizationService, } from '../interfaces/IOrganizationService.js';
|
|
11
|
+
import { PresenceManager } from '../interfaces/IPresenceManager.js';
|
|
12
|
+
import { UserAvatarManager } from '../interfaces/IUserAvatarManager.js';
|
|
13
|
+
import { getLogger } from '../logging/index.js';
|
|
14
|
+
// Rate limiting classes (these might need to be moved to core too)
|
|
15
|
+
class RateLimitedQueue {
|
|
16
|
+
rates = new Map();
|
|
17
|
+
async execute(_key, fn) {
|
|
18
|
+
// シンプルなレート制限実装
|
|
19
|
+
await fn();
|
|
20
|
+
}
|
|
21
|
+
getRate(key) {
|
|
22
|
+
return this.rates.get(key);
|
|
23
|
+
}
|
|
24
|
+
setRate(key, rate) {
|
|
25
|
+
this.rates.set(key, rate);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Error types
|
|
29
|
+
export class MetatellError extends Error {
|
|
30
|
+
code;
|
|
31
|
+
cause;
|
|
32
|
+
constructor(code, message, cause) {
|
|
33
|
+
super(message);
|
|
34
|
+
this.code = code;
|
|
35
|
+
this.cause = cause;
|
|
36
|
+
this.name = 'MetatellError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
export class AuthError extends MetatellError {
|
|
40
|
+
constructor(code, message, cause) {
|
|
41
|
+
super(code, message, cause);
|
|
42
|
+
this.name = 'AuthError';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export class NetworkError extends MetatellError {
|
|
46
|
+
constructor(code, message, cause) {
|
|
47
|
+
super(code, message, cause);
|
|
48
|
+
this.name = 'NetworkError';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export class NotFoundError extends MetatellError {
|
|
52
|
+
constructor(code, message, cause) {
|
|
53
|
+
super(code, message, cause);
|
|
54
|
+
this.name = 'NotFoundError';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* MetatellClient implementation
|
|
59
|
+
*/
|
|
60
|
+
export class MetatellClientImpl extends EventEmitter {
|
|
61
|
+
options;
|
|
62
|
+
serviceFactory;
|
|
63
|
+
connectionManager;
|
|
64
|
+
messageService;
|
|
65
|
+
avatarController;
|
|
66
|
+
presenceManager;
|
|
67
|
+
organizationService;
|
|
68
|
+
animationService;
|
|
69
|
+
eventBus;
|
|
70
|
+
configProvider;
|
|
71
|
+
userAvatarManager;
|
|
72
|
+
rateLimiter = new RateLimitedQueue();
|
|
73
|
+
logger;
|
|
74
|
+
orgAvatarUrlCache = new Map();
|
|
75
|
+
constructor(options) {
|
|
76
|
+
super();
|
|
77
|
+
this.options = options;
|
|
78
|
+
// Initialize logger
|
|
79
|
+
this.logger = getLogger('MetatellClient');
|
|
80
|
+
// デバッグモードの場合、ロギングを有効化
|
|
81
|
+
if (options.debug) {
|
|
82
|
+
process.env.DEBUG = 'metatell:*';
|
|
83
|
+
}
|
|
84
|
+
// CoreServiceFactoryを初期化
|
|
85
|
+
this.serviceFactory = new CoreServiceFactory({
|
|
86
|
+
serverUrl: options.serverUrl,
|
|
87
|
+
hubUrl: options.serverUrl.replace(/^ws/, 'http'), // WebSocket URLからHTTP URLに変換
|
|
88
|
+
hubId: options.roomId,
|
|
89
|
+
profile: {
|
|
90
|
+
displayName: options.username || 'MetatellBot',
|
|
91
|
+
avatarId: options.avatarId || '', // 後で組織アバターから取得
|
|
92
|
+
},
|
|
93
|
+
botAccessKey: options.token,
|
|
94
|
+
debug: options.debug || false,
|
|
95
|
+
});
|
|
96
|
+
// 必要なサービスを取得
|
|
97
|
+
const container = this.serviceFactory.getContainer();
|
|
98
|
+
this.connectionManager = container.get(ConnectionManager);
|
|
99
|
+
this.messageService = container.get(MessageService);
|
|
100
|
+
this.avatarController = container.get(AvatarController);
|
|
101
|
+
this.presenceManager = container.get(PresenceManager);
|
|
102
|
+
this.userAvatarManager = container.get(UserAvatarManager);
|
|
103
|
+
this.organizationService = container.get(OrganizationService);
|
|
104
|
+
this.animationService = container.get(AnimationService);
|
|
105
|
+
this.eventBus = container.get(EventBus);
|
|
106
|
+
this.configProvider = container.get(ConfigurationProvider);
|
|
107
|
+
// デバッグモードの場合、AppSettingsのログレベルを変更
|
|
108
|
+
if (options.debug) {
|
|
109
|
+
const appSettings = container.get(AppSettings);
|
|
110
|
+
appSettings.setLogLevel('debug');
|
|
111
|
+
appSettings.setDebugMode(true);
|
|
112
|
+
}
|
|
113
|
+
// イベントのプロキシ設定
|
|
114
|
+
this.setupEventProxies();
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Parse mention from message body
|
|
118
|
+
* Format: [@displayName](session-id) message
|
|
119
|
+
* Example: [@MetatellCLI](b754ca96-d395-4b80-adb1-77cb0240a43d) hello
|
|
120
|
+
*/
|
|
121
|
+
parseMessageMention(body) {
|
|
122
|
+
const mentionPattern = /\[@([^\]]+)\]\(([^)]+)\)\s*(.*)$/;
|
|
123
|
+
const match = body.match(mentionPattern);
|
|
124
|
+
if (match) {
|
|
125
|
+
return {
|
|
126
|
+
text: match[3].trim(),
|
|
127
|
+
mention: {
|
|
128
|
+
name: match[1],
|
|
129
|
+
sessionId: match[2],
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
return { text: body };
|
|
134
|
+
}
|
|
135
|
+
setupEventProxies() {
|
|
136
|
+
// Coreのイベントをクライアントイベントにマッピング
|
|
137
|
+
this.eventBus.on(SystemEvents.CONNECTION_ESTABLISHED, () => {
|
|
138
|
+
this.emit('connected');
|
|
139
|
+
});
|
|
140
|
+
this.eventBus.on(SystemEvents.CONNECTION_LOST, () => {
|
|
141
|
+
this.emit('disconnected');
|
|
142
|
+
});
|
|
143
|
+
this.eventBus.on(SystemEvents.MESSAGE_RECEIVED, (data) => {
|
|
144
|
+
const messageData = data;
|
|
145
|
+
this.emit('message', messageData);
|
|
146
|
+
// チャットメッセージの場合、詳細な情報を解析して別イベントを発火
|
|
147
|
+
if (messageData.type === 'chat' && messageData.body) {
|
|
148
|
+
const parsed = this.parseMessageMention(messageData.body);
|
|
149
|
+
// PresenceManagerから送信者の情報を取得
|
|
150
|
+
const users = this.presenceManager.getUsers();
|
|
151
|
+
const sender = users.find((u) => u.id === messageData.senderId);
|
|
152
|
+
// デバッグ情報
|
|
153
|
+
if (this.options.debug) {
|
|
154
|
+
this.logger.debug('Message sender lookup:', {
|
|
155
|
+
senderId: messageData.senderId,
|
|
156
|
+
foundSender: !!sender,
|
|
157
|
+
senderData: sender,
|
|
158
|
+
allUsers: users.map((u) => ({ id: u.id, name: u.profile?.displayName })),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
const senderName = sender?.profile?.displayName || sender?.id.split('#')[0] || 'Unknown';
|
|
162
|
+
this.emit('chat-message', {
|
|
163
|
+
from: {
|
|
164
|
+
id: messageData.senderId || '',
|
|
165
|
+
name: senderName,
|
|
166
|
+
isBot: false,
|
|
167
|
+
},
|
|
168
|
+
text: parsed.text,
|
|
169
|
+
mention: parsed.mention,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
this.eventBus.on(SystemEvents.USER_JOINED, (data) => {
|
|
174
|
+
// PresenceUserデータをUser型に変換
|
|
175
|
+
const presenceUser = data;
|
|
176
|
+
// UserAvatarManagerからアバター情報を取得
|
|
177
|
+
const avatar = this.userAvatarManager.getUser(presenceUser.id);
|
|
178
|
+
const user = {
|
|
179
|
+
id: presenceUser.id,
|
|
180
|
+
name: presenceUser.profile?.displayName || presenceUser.id.split('#')[0] || presenceUser.id,
|
|
181
|
+
isBot: false,
|
|
182
|
+
position: avatar?.position,
|
|
183
|
+
rotation: avatar?.rotation,
|
|
184
|
+
};
|
|
185
|
+
this.emit('user-join', user);
|
|
186
|
+
// 新しいユーザーが入室したときにアバターを再同期
|
|
187
|
+
this.resyncAvatarForNewUser();
|
|
188
|
+
});
|
|
189
|
+
this.eventBus.on(SystemEvents.USER_LEFT, (data) => {
|
|
190
|
+
// PresenceUserデータをUser型に変換
|
|
191
|
+
const presenceUser = data;
|
|
192
|
+
// UserAvatarManagerからアバター情報を取得
|
|
193
|
+
const avatar = this.userAvatarManager.getUser(presenceUser.id);
|
|
194
|
+
const user = {
|
|
195
|
+
id: presenceUser.id,
|
|
196
|
+
name: presenceUser.profile?.displayName || presenceUser.id.split('#')[0] || presenceUser.id,
|
|
197
|
+
isBot: false,
|
|
198
|
+
position: avatar?.position,
|
|
199
|
+
rotation: avatar?.rotation,
|
|
200
|
+
};
|
|
201
|
+
this.emit('user-leave', user);
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
async resyncAvatarForNewUser() {
|
|
205
|
+
try {
|
|
206
|
+
// アバターがスポーンされている場合のみ再同期
|
|
207
|
+
if (this.avatarController.getState()) {
|
|
208
|
+
await this.avatarController.resyncAvatar();
|
|
209
|
+
this.logger.debug('Avatar resynced for new user');
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
this.logger.warn('Failed to resync avatar for new user', error);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async connect() {
|
|
217
|
+
try {
|
|
218
|
+
await this.connectionManager.connect({
|
|
219
|
+
serverUrl: this.options.serverUrl,
|
|
220
|
+
hubId: this.options.roomId,
|
|
221
|
+
});
|
|
222
|
+
// 組織情報を取得
|
|
223
|
+
const orgInfo = await this.organizationService.getOrganizationInfo(this.options.serverUrl.replace(/^ws/, 'http'), this.options.roomId);
|
|
224
|
+
// アバターIDが指定されていない場合、組織アバターから選択
|
|
225
|
+
let avatarId = this.options.avatarId;
|
|
226
|
+
let avatarUrl;
|
|
227
|
+
if (!avatarId && orgInfo.organizationId) {
|
|
228
|
+
try {
|
|
229
|
+
// 組織アバター一覧を取得
|
|
230
|
+
const avatars = await this.organizationService.fetchOrganizationAvatars(this.options.serverUrl.replace(/^ws/, 'http'), orgInfo.organizationId);
|
|
231
|
+
if (avatars.length > 0) {
|
|
232
|
+
// 最初のアバターを使用
|
|
233
|
+
const defaultAvatar = avatars[0];
|
|
234
|
+
avatarId = defaultAvatar.id;
|
|
235
|
+
avatarUrl = defaultAvatar.gltf.avatar;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
// 組織アバター取得に失敗した場合はスキップ
|
|
240
|
+
this.logger.debug('Failed to fetch organization avatars', error);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// アバターIDが取得できない場合はエラー
|
|
244
|
+
if (!avatarId) {
|
|
245
|
+
throw new MetatellError('NO_AVATAR_AVAILABLE', 'No avatar available. Organization avatars not found and no avatar ID specified.');
|
|
246
|
+
}
|
|
247
|
+
// アバターをスポーン
|
|
248
|
+
if (avatarId) {
|
|
249
|
+
// 設定を更新
|
|
250
|
+
const config = this.configProvider.getConfiguration();
|
|
251
|
+
config.profile.avatarId = avatarId;
|
|
252
|
+
if (avatarUrl) {
|
|
253
|
+
config.organizationAvatarUrl = avatarUrl;
|
|
254
|
+
}
|
|
255
|
+
await this.avatarController.spawn(avatarId, undefined, avatarUrl);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
// エラーを適切なタイプに変換
|
|
260
|
+
if (error instanceof Error && error.message.includes('auth')) {
|
|
261
|
+
throw new AuthError('AUTH_FAILED', 'Authentication failed', error);
|
|
262
|
+
}
|
|
263
|
+
throw new NetworkError('CONNECTION_FAILED', 'Failed to connect', error);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
async disconnect() {
|
|
267
|
+
await this.connectionManager.disconnect();
|
|
268
|
+
}
|
|
269
|
+
room = {
|
|
270
|
+
getUsers: async () => {
|
|
271
|
+
const users = this.presenceManager.getUsers();
|
|
272
|
+
const currentSessionId = this.connectionManager.getSessionId();
|
|
273
|
+
// PresenceUserをUser型に変換
|
|
274
|
+
return users.map((u) => {
|
|
275
|
+
// 自分自身の場合はAvatarControllerから位置情報を取得
|
|
276
|
+
if (u.id === currentSessionId) {
|
|
277
|
+
const avatarState = this.avatarController.getState();
|
|
278
|
+
return {
|
|
279
|
+
id: u.id,
|
|
280
|
+
name: u.profile?.displayName || u.id.split('#')[0] || u.id,
|
|
281
|
+
isBot: false,
|
|
282
|
+
position: avatarState?.position,
|
|
283
|
+
rotation: avatarState?.rotation
|
|
284
|
+
? {
|
|
285
|
+
x: (avatarState.rotation.x * 180) / Math.PI,
|
|
286
|
+
y: (avatarState.rotation.y * 180) / Math.PI,
|
|
287
|
+
z: (avatarState.rotation.z * 180) / Math.PI,
|
|
288
|
+
w: 1, // 簡略化
|
|
289
|
+
}
|
|
290
|
+
: undefined,
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
// UserAvatarManagerからアバター情報を取得
|
|
294
|
+
const avatar = this.userAvatarManager.getUser(u.id);
|
|
295
|
+
return {
|
|
296
|
+
id: u.id,
|
|
297
|
+
name: u.profile?.displayName || u.id.split('#')[0] || u.id,
|
|
298
|
+
isBot: false,
|
|
299
|
+
position: avatar?.position,
|
|
300
|
+
rotation: avatar?.rotation,
|
|
301
|
+
};
|
|
302
|
+
});
|
|
303
|
+
},
|
|
304
|
+
getNearbyUsers: async (radius = 10) => {
|
|
305
|
+
// 現在のアバター位置を取得
|
|
306
|
+
const currentPosition = this.avatar.getPosition();
|
|
307
|
+
if (!currentPosition) {
|
|
308
|
+
// アバターがスポーンされていない場合は全ユーザーを返す
|
|
309
|
+
return this.room.getUsers();
|
|
310
|
+
}
|
|
311
|
+
// UserAvatarManagerから距離内のユーザーを取得
|
|
312
|
+
const nearbyAvatars = this.userAvatarManager.getUsersInRange(currentPosition, radius);
|
|
313
|
+
// UserAvatarをUser型に変換
|
|
314
|
+
return nearbyAvatars.map((avatar) => ({
|
|
315
|
+
id: avatar.id,
|
|
316
|
+
name: avatar.nickname || avatar.id.split('#')[0] || avatar.id,
|
|
317
|
+
isBot: false,
|
|
318
|
+
position: avatar.position,
|
|
319
|
+
rotation: avatar.rotation,
|
|
320
|
+
}));
|
|
321
|
+
},
|
|
322
|
+
};
|
|
323
|
+
chat = {
|
|
324
|
+
send: async (text) => {
|
|
325
|
+
await this.rateLimiter.execute('messages', async () => {
|
|
326
|
+
await this.messageService.sendMessage(text);
|
|
327
|
+
});
|
|
328
|
+
},
|
|
329
|
+
onMessage: (handler) => {
|
|
330
|
+
// メッセージ受信イベントをサブスクライブ
|
|
331
|
+
this.eventBus.on(SystemEvents.MESSAGE_RECEIVED, async (data) => {
|
|
332
|
+
const messageData = data;
|
|
333
|
+
if (messageData.type === 'chat' && messageData.body) {
|
|
334
|
+
const parsed = this.parseMessageMention(messageData.body);
|
|
335
|
+
// PresenceManagerから送信者の情報を取得
|
|
336
|
+
const users = this.presenceManager.getUsers();
|
|
337
|
+
const sender = users.find((u) => u.id === messageData.senderId);
|
|
338
|
+
const senderName = sender?.profile?.displayName || sender?.id.split('#')[0] || 'Unknown';
|
|
339
|
+
const user = {
|
|
340
|
+
id: messageData.senderId || '',
|
|
341
|
+
name: senderName,
|
|
342
|
+
isBot: false,
|
|
343
|
+
};
|
|
344
|
+
handler({
|
|
345
|
+
from: user,
|
|
346
|
+
text: parsed.text,
|
|
347
|
+
mention: parsed.mention,
|
|
348
|
+
reply: async (replyText) => {
|
|
349
|
+
await this.messageService.sendMessage(replyText);
|
|
350
|
+
},
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
},
|
|
355
|
+
};
|
|
356
|
+
avatar = {
|
|
357
|
+
select: async (assetId) => {
|
|
358
|
+
// アバターを変更するには再度spawnを呼び出す
|
|
359
|
+
const state = this.avatarController.getState();
|
|
360
|
+
try {
|
|
361
|
+
// まず通常のアバターとしてspawnを試みる
|
|
362
|
+
await this.avatarController.spawn(assetId, state?.position);
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
// avatarSrc URLが必要というエラーの場合のみ、組織アバターとして処理
|
|
366
|
+
if (error instanceof Error &&
|
|
367
|
+
error.message.includes('Organization avatar requires avatarSrc URL')) {
|
|
368
|
+
// キャッシュをチェック
|
|
369
|
+
let avatarSrc = this.orgAvatarUrlCache.get(assetId);
|
|
370
|
+
if (!avatarSrc) {
|
|
371
|
+
// キャッシュにない場合はOrganizationServiceから取得
|
|
372
|
+
const hubUrl = this.configProvider.getConfiguration().hubUrl;
|
|
373
|
+
const hubId = this.configProvider.getConfiguration().hubId;
|
|
374
|
+
const orgInfo = await this.organizationService.getOrganizationInfo(hubUrl, hubId);
|
|
375
|
+
if (!orgInfo.organizationId) {
|
|
376
|
+
throw new Error(`Cannot fetch organization avatars: organization ID not set for hub ${hubId}`);
|
|
377
|
+
}
|
|
378
|
+
const avatars = await this.organizationService.fetchOrganizationAvatars(hubUrl, orgInfo.organizationId);
|
|
379
|
+
const targetAvatar = avatars.find((a) => a.id === assetId);
|
|
380
|
+
if (!targetAvatar) {
|
|
381
|
+
throw new Error(`Organization avatar not found: ${assetId}`);
|
|
382
|
+
}
|
|
383
|
+
avatarSrc = targetAvatar.gltf.avatar;
|
|
384
|
+
// URLをキャッシュに保存
|
|
385
|
+
this.orgAvatarUrlCache.set(assetId, avatarSrc);
|
|
386
|
+
this.logger.debug('Cached organization avatar URL', { assetId, avatarSrc });
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
this.logger.debug('Using cached organization avatar URL', { assetId, avatarSrc });
|
|
390
|
+
}
|
|
391
|
+
// avatarSrc付きで再度spawnを試みる
|
|
392
|
+
await this.avatarController.spawn(assetId, state?.position, avatarSrc);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// その他のエラーはそのまま再スロー
|
|
396
|
+
throw error;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
},
|
|
400
|
+
play: async (animation) => {
|
|
401
|
+
try {
|
|
402
|
+
// アニメーションオプションを変換
|
|
403
|
+
const playOptions = {
|
|
404
|
+
loop: animation.loop || false,
|
|
405
|
+
duration: animation.duration,
|
|
406
|
+
transitionDuration: animation.transitionDuration,
|
|
407
|
+
};
|
|
408
|
+
if ('id' in animation && animation.id) {
|
|
409
|
+
await this.avatarController.playAnimation(animation.id, playOptions);
|
|
410
|
+
}
|
|
411
|
+
else if ('url' in animation && animation.url) {
|
|
412
|
+
// URLベースのアニメーションは現在のインターフェースではサポートされていない
|
|
413
|
+
// カスタムアニメーションとして扱う必要がある
|
|
414
|
+
throw new NotFoundError('ANIMATION_NOT_FOUND', 'URL-based animations are not yet supported');
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
throw new NotFoundError('ANIMATION_NOT_FOUND', 'Animation must have either id or url');
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
catch (error) {
|
|
421
|
+
if (error instanceof Error && error.message.includes('not found')) {
|
|
422
|
+
throw new NotFoundError('ANIMATION_NOT_FOUND', error.message, error);
|
|
423
|
+
}
|
|
424
|
+
throw error;
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
moveTo: async (position) => {
|
|
428
|
+
await this.rateLimiter.execute('moves', async () => {
|
|
429
|
+
await this.avatarController.move(position);
|
|
430
|
+
});
|
|
431
|
+
},
|
|
432
|
+
rotateTo: async (rotation) => {
|
|
433
|
+
// Euler角(度数法)をラジアンに変換
|
|
434
|
+
const xRad = (rotation.x * Math.PI) / 180;
|
|
435
|
+
const yRad = (rotation.y * Math.PI) / 180;
|
|
436
|
+
const zRad = (rotation.z * Math.PI) / 180;
|
|
437
|
+
// オイラー角からクォータニオンに変換(ZYX順)
|
|
438
|
+
const cx = Math.cos(xRad / 2);
|
|
439
|
+
const sx = Math.sin(xRad / 2);
|
|
440
|
+
const cy = Math.cos(yRad / 2);
|
|
441
|
+
const sy = Math.sin(yRad / 2);
|
|
442
|
+
const cz = Math.cos(zRad / 2);
|
|
443
|
+
const sz = Math.sin(zRad / 2);
|
|
444
|
+
const quaternion = {
|
|
445
|
+
x: sx * cy * cz - cx * sy * sz,
|
|
446
|
+
y: cx * sy * cz + sx * cy * sz,
|
|
447
|
+
z: cx * cy * sz - sx * sy * cz,
|
|
448
|
+
w: cx * cy * cz + sx * sy * sz,
|
|
449
|
+
};
|
|
450
|
+
// AvatarControllerのrotateメソッドを使用
|
|
451
|
+
await this.avatarController.rotate(quaternion);
|
|
452
|
+
},
|
|
453
|
+
lookAt: async (target) => {
|
|
454
|
+
await this.rateLimiter.execute('looks', async () => {
|
|
455
|
+
// 現在位置を取得
|
|
456
|
+
const state = this.avatarController.getState();
|
|
457
|
+
if (!state) {
|
|
458
|
+
throw new MetatellError('AVATAR_NOT_SPAWNED', 'Avatar is not spawned');
|
|
459
|
+
}
|
|
460
|
+
// ターゲットへの方向ベクトルを計算
|
|
461
|
+
const dx = target.x - state.position.x;
|
|
462
|
+
const dz = target.z - state.position.z;
|
|
463
|
+
// Y軸周りの回転角度を計算(ラジアン)
|
|
464
|
+
const yRotation = Math.atan2(dx, dz);
|
|
465
|
+
// ラジアンからクォータニオンに変換(Y軸回転のみ)
|
|
466
|
+
const halfAngle = yRotation / 2;
|
|
467
|
+
const quaternion = {
|
|
468
|
+
x: 0,
|
|
469
|
+
y: Math.sin(halfAngle),
|
|
470
|
+
z: 0,
|
|
471
|
+
w: Math.cos(halfAngle),
|
|
472
|
+
};
|
|
473
|
+
// 回転を適用
|
|
474
|
+
await this.avatarController.rotate(quaternion);
|
|
475
|
+
});
|
|
476
|
+
},
|
|
477
|
+
getPosition: () => {
|
|
478
|
+
const state = this.avatarController.getState();
|
|
479
|
+
return state ? { ...state.position } : null;
|
|
480
|
+
},
|
|
481
|
+
getAvailableAssets: async () => {
|
|
482
|
+
// organizationInfoを取得するには、hubUrlとhubIdが必要
|
|
483
|
+
const config = this.configProvider.getConfiguration();
|
|
484
|
+
const orgInfo = await this.organizationService.getOrganizationInfo(config.hubUrl, config.hubId);
|
|
485
|
+
if (!orgInfo.organizationId) {
|
|
486
|
+
// 組織IDがない場合は空配列を返す
|
|
487
|
+
return [];
|
|
488
|
+
}
|
|
489
|
+
const avatars = await this.organizationService.fetchOrganizationAvatars(config.hubUrl, orgInfo.organizationId);
|
|
490
|
+
return avatars.map((avatar) => ({
|
|
491
|
+
id: avatar.id,
|
|
492
|
+
name: avatar.name,
|
|
493
|
+
thumbnailUrl: avatar.images?.preview?.url || avatar.thumbnail_url || '',
|
|
494
|
+
modelUrl: avatar.gltf.avatar,
|
|
495
|
+
}));
|
|
496
|
+
},
|
|
497
|
+
getAvailableAnimations: async () => {
|
|
498
|
+
// 現在のアバターIDを取得
|
|
499
|
+
const state = this.avatarController.getState();
|
|
500
|
+
if (!state) {
|
|
501
|
+
return [];
|
|
502
|
+
}
|
|
503
|
+
this.logger.debug('Getting available animations for avatar', { avatarId: state.avatarId });
|
|
504
|
+
const animations = await this.animationService.getAvailableAnimations(state.avatarId);
|
|
505
|
+
this.logger.debug('Retrieved animations', {
|
|
506
|
+
avatarId: state.avatarId,
|
|
507
|
+
animationCount: animations.length,
|
|
508
|
+
animations: animations.map((a) => ({ id: a.id, name: a.name })),
|
|
509
|
+
});
|
|
510
|
+
return animations.map((anim) => ({
|
|
511
|
+
id: anim.id,
|
|
512
|
+
name: anim.name || 'Unknown Animation',
|
|
513
|
+
duration: anim.duration,
|
|
514
|
+
}));
|
|
515
|
+
},
|
|
516
|
+
};
|
|
517
|
+
voice = {
|
|
518
|
+
playPcm: async (_input, _options) => {
|
|
519
|
+
// 音声機能は別パッケージ(@metatell/realtime)で実装
|
|
520
|
+
// ここではプレースホルダーを返す
|
|
521
|
+
const finishedPromise = new Promise((resolve) => {
|
|
522
|
+
setTimeout(resolve, 1000);
|
|
523
|
+
});
|
|
524
|
+
return {
|
|
525
|
+
stop: async () => {
|
|
526
|
+
// 音声停止の実装は別パッケージで行う
|
|
527
|
+
},
|
|
528
|
+
finished: finishedPromise,
|
|
529
|
+
};
|
|
530
|
+
},
|
|
531
|
+
};
|
|
532
|
+
async getInfo() {
|
|
533
|
+
const config = this.configProvider.getConfiguration();
|
|
534
|
+
const sessionId = this.getSessionId();
|
|
535
|
+
return {
|
|
536
|
+
name: config.profile?.displayName || 'MetatellBot',
|
|
537
|
+
version: '1.0.0',
|
|
538
|
+
roomId: config.hubId,
|
|
539
|
+
sessionId: sessionId || undefined,
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
getStatus() {
|
|
543
|
+
// 簡易的な接続状態を返す
|
|
544
|
+
return {
|
|
545
|
+
connected: true,
|
|
546
|
+
connecting: false,
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
getUsers() {
|
|
550
|
+
const users = this.presenceManager.getUsers();
|
|
551
|
+
const currentSessionId = this.connectionManager.getSessionId();
|
|
552
|
+
// PresenceUserをUser型に変換(room.getUsersと同じ実装)
|
|
553
|
+
return users.map((u) => {
|
|
554
|
+
// 自分自身の場合はAvatarControllerから位置情報を取得
|
|
555
|
+
if (u.id === currentSessionId) {
|
|
556
|
+
const avatarState = this.avatarController.getState();
|
|
557
|
+
return {
|
|
558
|
+
id: u.id,
|
|
559
|
+
name: u.profile?.displayName || u.id.split('#')[0] || u.id,
|
|
560
|
+
isBot: false,
|
|
561
|
+
position: avatarState?.position,
|
|
562
|
+
rotation: avatarState?.rotation
|
|
563
|
+
? {
|
|
564
|
+
x: (avatarState.rotation.x * 180) / Math.PI,
|
|
565
|
+
y: (avatarState.rotation.y * 180) / Math.PI,
|
|
566
|
+
z: (avatarState.rotation.z * 180) / Math.PI,
|
|
567
|
+
w: 1, // 簡略化
|
|
568
|
+
}
|
|
569
|
+
: undefined,
|
|
570
|
+
};
|
|
571
|
+
}
|
|
572
|
+
// UserAvatarManagerからアバター情報を取得
|
|
573
|
+
const avatar = this.userAvatarManager.getUser(u.id);
|
|
574
|
+
return {
|
|
575
|
+
id: u.id,
|
|
576
|
+
name: u.profile?.displayName || u.id.split('#')[0] || u.id,
|
|
577
|
+
isBot: false,
|
|
578
|
+
position: avatar?.position,
|
|
579
|
+
rotation: avatar?.rotation,
|
|
580
|
+
};
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
getRateLimit(key) {
|
|
584
|
+
return this.rateLimiter.getRate(key);
|
|
585
|
+
}
|
|
586
|
+
setRateLimit(key, perSecond) {
|
|
587
|
+
this.rateLimiter.setRate(key, perSecond);
|
|
588
|
+
}
|
|
589
|
+
getSessionId() {
|
|
590
|
+
// 接続マネージャーからセッションIDを取得
|
|
591
|
+
return this.connectionManager.getSessionId();
|
|
592
|
+
}
|
|
593
|
+
async muteVoice(muted) {
|
|
594
|
+
// 音声ミュート機能は現在未実装
|
|
595
|
+
// 将来的には、音声ストリームの送信を停止/再開する
|
|
596
|
+
this.logger.debug('Voice mute requested', { muted });
|
|
597
|
+
// TODO: Implement actual muting logic when voice attachment is active
|
|
598
|
+
}
|
|
599
|
+
async sendVoiceFrame(_pcm) {
|
|
600
|
+
// 実装は外部パッケージからランタイムでパッチされる
|
|
601
|
+
throw new Error('Voice functionality not available - enable voice first with enableVoice()');
|
|
602
|
+
}
|
|
603
|
+
// EventEmitterのメソッドをオーバーライド
|
|
604
|
+
on(event, listener) {
|
|
605
|
+
// EventEmitterは汎用的な型を期待するため、型変換が必要
|
|
606
|
+
// string型にキャストして、リスナーは関数型として扱う
|
|
607
|
+
return super.on(event, listener);
|
|
608
|
+
}
|
|
609
|
+
off(event, listener) {
|
|
610
|
+
// EventEmitterは汎用的な型を期待するため、型変換が必要
|
|
611
|
+
return super.off(event, listener);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
/**
|
|
615
|
+
* Create MetatellClient instance
|
|
616
|
+
* @param options Client configuration
|
|
617
|
+
* @returns MetatellClient instance
|
|
618
|
+
* @throws {MetatellError} If configuration is invalid
|
|
619
|
+
*/
|
|
620
|
+
export function createMetatellClient(options) {
|
|
621
|
+
// 設定バリデーション
|
|
622
|
+
if (!options.serverUrl || !options.roomId) {
|
|
623
|
+
throw new MetatellError('INVALID_CONFIG', 'serverUrl and roomId are required');
|
|
624
|
+
}
|
|
625
|
+
// サブドメインを除いたサーバーURLを生成
|
|
626
|
+
const processedOptions = { ...options };
|
|
627
|
+
try {
|
|
628
|
+
const url = new URL(options.serverUrl.replace(/^ws/, 'http'));
|
|
629
|
+
const hostParts = url.hostname.split('.');
|
|
630
|
+
if (hostParts.length >= 2) {
|
|
631
|
+
// サブドメインがある場合は除去(例: urth.metatell.app -> metatell.app)
|
|
632
|
+
const mainDomain = hostParts.slice(-2).join('.');
|
|
633
|
+
processedOptions.serverUrl = options.serverUrl.replace(url.hostname, mainDomain);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
636
|
+
catch (_error) {
|
|
637
|
+
// URL解析に失敗した場合はそのまま使用
|
|
638
|
+
// エラーログなどは出さず、元のURLを使用
|
|
639
|
+
}
|
|
640
|
+
return new MetatellClientImpl(processedOptions);
|
|
641
|
+
}
|
|
642
|
+
//# sourceMappingURL=MetatellClientImpl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetatellClientImpl.js","sourceRoot":"","sources":["../../src/client/MetatellClientImpl.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -22,9 +22,9 @@ export declare class TransportError extends MetatellError {
|
|
|
22
22
|
constructor(message: string, reason?: string | undefined);
|
|
23
23
|
}
|
|
24
24
|
export declare class ProtocolError extends MetatellError {
|
|
25
|
-
readonly data?: unknown
|
|
25
|
+
readonly data?: unknown;
|
|
26
26
|
readonly code = "PROTOCOL_ERROR";
|
|
27
|
-
constructor(message: string, data?: unknown
|
|
27
|
+
constructor(message: string, data?: unknown);
|
|
28
28
|
}
|
|
29
29
|
export declare class TimeoutError extends MetatellError {
|
|
30
30
|
readonly timeoutMs: number;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8BAAsB,aAAc,SAAQ,KAAK;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,OAAa;gBAEnB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;aAKlC,MAAM,CAAC,EAAE,MAAM;IAJjC,QAAQ,CAAC,IAAI,gBAAe;gBAG1B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA;CAIlC;AAED,qBAAa,gBAAiB,SAAQ,aAAa;aAK/B,YAAY,CAAC,EAAE,MAAM;IAJvC,QAAQ,CAAC,IAAI,kBAAiB;gBAG5B,OAAO,EAAE,MAAM,EACC,YAAY,CAAC,EAAE,MAAM,YAAA;CAIxC;AAED,qBAAa,cAAe,SAAQ,aAAa;aAK7B,MAAM,CAAC,EAAE,MAAM;IAJjC,QAAQ,CAAC,IAAI,qBAAoB;gBAG/B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA;CAIlC;AAED,qBAAa,aAAc,SAAQ,aAAa;aAK5B,IAAI,CAAC,EAAE,OAAO;IAJhC,QAAQ,CAAC,IAAI,oBAAmB;gBAG9B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,OAAO
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8BAAsB,aAAc,SAAQ,KAAK;IAC/C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,SAAS,OAAa;gBAEnB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;aAKlC,MAAM,CAAC,EAAE,MAAM;IAJjC,QAAQ,CAAC,IAAI,gBAAe;gBAG1B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA;CAIlC;AAED,qBAAa,gBAAiB,SAAQ,aAAa;aAK/B,YAAY,CAAC,EAAE,MAAM;IAJvC,QAAQ,CAAC,IAAI,kBAAiB;gBAG5B,OAAO,EAAE,MAAM,EACC,YAAY,CAAC,EAAE,MAAM,YAAA;CAIxC;AAED,qBAAa,cAAe,SAAQ,aAAa;aAK7B,MAAM,CAAC,EAAE,MAAM;IAJjC,QAAQ,CAAC,IAAI,qBAAoB;gBAG/B,OAAO,EAAE,MAAM,EACC,MAAM,CAAC,EAAE,MAAM,YAAA;CAIlC;AAED,qBAAa,aAAc,SAAQ,aAAa;aAK5B,IAAI,CAAC,EAAE,OAAO;IAJhC,QAAQ,CAAC,IAAI,oBAAmB;gBAG9B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,OAAO;CAIjC;AAED,qBAAa,YAAa,SAAQ,aAAa;aAK3B,SAAS,EAAE,MAAM;IAJnC,QAAQ,CAAC,IAAI,mBAAkB;gBAG7B,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM;CAIpC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQxD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type { NafAvatarConfig, NafDataType, NafMessage, } from './builders/NafMessageBuilder.js';
|
|
2
2
|
export { NafComponentId, NafMessageBuilder } from './builders/NafMessageBuilder.js';
|
|
3
3
|
export { CoreServiceFactory } from './CoreServiceFactory.js';
|
|
4
|
+
export { type CreateClientOptions, createMetatellClient, MetatellClientImpl, } from './client/MetatellClientImpl.js';
|
|
4
5
|
export { AnimationNotFoundError, AnimationPlaybackError, AvatarNotSpawnedError, } from './errors/animation-errors.js';
|
|
5
6
|
export { AuthenticationError, isMetatellError, isRetryableError, MetatellError, ProtocolError, RateLimitedError, TimeoutError, TransportError, } from './errors.js';
|
|
6
7
|
export { AnimationService, type IAnimationService } from './interfaces/IAnimationService.js';
|
|
@@ -28,6 +29,8 @@ export { ChannelService } from './services/ChannelService.js';
|
|
|
28
29
|
export type { IChannelService } from './services/IChannelService.js';
|
|
29
30
|
export type { AnimationConfig, AnimationEvent, AnimationNAFMessage, AnimationPlaybackResult, AnimationPlayOptions, VRMAnimation, } from './types/animation.js';
|
|
30
31
|
export { AnimationLoopBehavior, PresetAnimationId } from './types/animation.js';
|
|
32
|
+
export type { Animation, AvatarAsset, BotInfo, Euler, MetatellClient, MetatellClientEvents, PcmInputOptions, PlaybackControls, User, Vec3, } from './types/client.js';
|
|
31
33
|
export type { AvatarComponentData, EulerRotation, NAFComponentMap, NAFCreateMessage, NAFEntityData, NAFMultiUpdateMessage, NAFRemoveMessage, Position3D, Quaternion, Scale3D, TypedNAFMessage, } from './types/naf.js';
|
|
32
34
|
export { extractAvatarData, extractBodyRotation, extractPosition, isNAFCreateMessage, isNAFMultiUpdateMessage, isNAFRemoveMessage, isTypedNAFMessage, } from './types/naf.js';
|
|
35
|
+
export type { VoiceCapableClient } from './types/voice.js';
|
|
33
36
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,eAAe,EACf,WAAW,EACX,UAAU,GACX,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// Core Service Factory (内部実装のメインエントリーポイント)
|
|
2
2
|
export { NafComponentId, NafMessageBuilder } from './builders/NafMessageBuilder.js';
|
|
3
3
|
export { CoreServiceFactory } from './CoreServiceFactory.js';
|
|
4
|
+
// Client implementation
|
|
5
|
+
export { createMetatellClient, MetatellClientImpl, } from './client/MetatellClientImpl.js';
|
|
4
6
|
// Errors
|
|
5
7
|
export { AnimationNotFoundError, AnimationPlaybackError, AvatarNotSpawnedError, } from './errors/animation-errors.js';
|
|
6
8
|
export { AuthenticationError, isMetatellError, isRetryableError, MetatellError, ProtocolError, RateLimitedError, TimeoutError, TransportError, } from './errors.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAQ3C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,SAAS;AACT,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAQ3C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,wBAAwB;AACxB,OAAO,EAEL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,gCAAgC,CAAA;AACvC,SAAS;AACT,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,aAAa,CAAA;AACpB,iCAAiC;AACjC,OAAO,EAAE,gBAAgB,EAA0B,MAAM,mCAAmC,CAAA;AAC5F,OAAO,EAAE,WAAW,EAAqB,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EACL,qBAAqB,GAEtB,MAAM,wCAAwC,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAA0B,MAAM,mCAAmC,CAAA;AAO5F,OAAO,EACL,qBAAqB,GAEtB,MAAM,wCAAwC,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAA2B,MAAM,oCAAoC,CAAA;AAC/F,OAAO,EAAE,QAAQ,EAAkB,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,EAAwB,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAKtF,OAAO,EAEL,mBAAmB,GACpB,MAAM,sCAAsC,CAAA;AAE7C,OAAO,EAAyB,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAKzF,OAAO,EAA2B,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAK/F,UAAU;AACV,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAmB,MAAM,uBAAuB,CAAA;AAEzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAW7D,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AA4B/E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gBAAgB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spi.d.ts","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"spi.d.ts","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,QAAQ,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACjC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7B,WAAW,CAAC,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACtC;AAKD,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAOhG;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAShD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD"}
|
package/dist/logging/spi.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Logging SPI (Service Provider Interface) for SDK
|
|
3
3
|
* Allows applications to plug in their own logging implementations
|
|
4
4
|
*/
|
|
5
|
+
import { DefaultLoggerProvider } from './providers/default.js';
|
|
5
6
|
// Global provider registry
|
|
6
7
|
let _provider = null;
|
|
7
8
|
export function registerLoggerProvider(provider, options) {
|
|
@@ -15,7 +16,11 @@ export function resetLoggerProvider() {
|
|
|
15
16
|
}
|
|
16
17
|
export function getLogger(module) {
|
|
17
18
|
if (!_provider) {
|
|
18
|
-
|
|
19
|
+
// 自動的にデフォルトプロバイダーを登録
|
|
20
|
+
registerLoggerProvider(new DefaultLoggerProvider());
|
|
21
|
+
}
|
|
22
|
+
if (!_provider) {
|
|
23
|
+
throw new Error('LoggerProvider registration failed');
|
|
19
24
|
}
|
|
20
25
|
return _provider.getLogger(module);
|
|
21
26
|
}
|
package/dist/logging/spi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spi.js","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"spi.js","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AA8B9D,2BAA2B;AAC3B,IAAI,SAAS,GAA0B,IAAI,CAAA;AAM3C,MAAM,UAAU,sBAAsB,CAAC,QAAwB,EAAE,OAAyB;IACxF,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAA;IACH,CAAC;IACD,SAAS,GAAG,QAAQ,CAAA;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,SAAS,GAAG,IAAI,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,qBAAqB;QACrB,sBAAsB,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAA;IACrD,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IACD,OAAO,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expect-helpers.d.ts","sourceRoot":"","sources":["../../src/test-utils/expect-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"expect-helpers.d.ts","sourceRoot":"","sources":["../../src/test-utils/expect-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,SAAU,MAAM,QAAQ,MAAM,QAAQ,MAAM;;;;;CAI7E,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,SAAU,MAAM;;;;;CAElD,CAAA"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import type { VoiceCapableClient } from './voice.js';
|
|
2
|
+
/**
|
|
3
|
+
* User information
|
|
4
|
+
*/
|
|
5
|
+
export interface User {
|
|
6
|
+
/** User ID */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Display name */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Whether user is a bot */
|
|
11
|
+
isBot: boolean;
|
|
12
|
+
/** Current position in 3D space */
|
|
13
|
+
position?: {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
z: number;
|
|
17
|
+
};
|
|
18
|
+
/** Current rotation */
|
|
19
|
+
rotation?: {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
z: number;
|
|
23
|
+
w: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 3D vector
|
|
28
|
+
*/
|
|
29
|
+
export interface Vec3 {
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
z: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Euler rotation angles (degrees)
|
|
36
|
+
*/
|
|
37
|
+
export interface Euler {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
z: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Animation specification
|
|
44
|
+
*/
|
|
45
|
+
export interface Animation {
|
|
46
|
+
/** Animation ID (for preset animations) */
|
|
47
|
+
id?: string;
|
|
48
|
+
/** Animation URL (for custom animations) */
|
|
49
|
+
url?: string;
|
|
50
|
+
/** Animation name */
|
|
51
|
+
name?: string;
|
|
52
|
+
/** Duration in seconds */
|
|
53
|
+
duration?: number;
|
|
54
|
+
/** Whether to loop */
|
|
55
|
+
loop?: boolean;
|
|
56
|
+
/** Transition duration in seconds */
|
|
57
|
+
transitionDuration?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Avatar asset information
|
|
61
|
+
*/
|
|
62
|
+
export interface AvatarAsset {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
thumbnailUrl: string;
|
|
66
|
+
modelUrl: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Audio playback controls
|
|
70
|
+
*/
|
|
71
|
+
export interface PlaybackControls {
|
|
72
|
+
/** Stop playback */
|
|
73
|
+
stop: () => Promise<void>;
|
|
74
|
+
/** Promise that resolves when playback completes */
|
|
75
|
+
finished: Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* PCM audio input options
|
|
79
|
+
*/
|
|
80
|
+
export interface PcmInputOptions {
|
|
81
|
+
/** Sample rate (Hz) */
|
|
82
|
+
sampleRate: number;
|
|
83
|
+
/** Number of audio channels */
|
|
84
|
+
channels: number;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Bot information
|
|
88
|
+
*/
|
|
89
|
+
export interface BotInfo {
|
|
90
|
+
name: string;
|
|
91
|
+
version: string;
|
|
92
|
+
roomId: string;
|
|
93
|
+
sessionId?: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* MetatellClient events
|
|
97
|
+
*/
|
|
98
|
+
export interface MetatellClientEvents {
|
|
99
|
+
connected: () => void;
|
|
100
|
+
disconnected: () => void;
|
|
101
|
+
'user-join': (user: User) => void;
|
|
102
|
+
'user-leave': (user: User) => void;
|
|
103
|
+
'chat-message': (event: {
|
|
104
|
+
from: User;
|
|
105
|
+
text: string;
|
|
106
|
+
mention?: {
|
|
107
|
+
sessionId: string;
|
|
108
|
+
name: string;
|
|
109
|
+
};
|
|
110
|
+
}) => void;
|
|
111
|
+
message: (data: unknown) => void;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Main client interface for interacting with Metatell services
|
|
115
|
+
* Extends VoiceCapableClient to support voice features
|
|
116
|
+
*/
|
|
117
|
+
export interface MetatellClient extends VoiceCapableClient {
|
|
118
|
+
/**
|
|
119
|
+
* Connect to Metatell server and join the specified room
|
|
120
|
+
* @throws {AuthError} If authentication token is invalid
|
|
121
|
+
* @throws {NetworkError} If network connection fails
|
|
122
|
+
*/
|
|
123
|
+
connect(): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Disconnect from the server
|
|
126
|
+
*/
|
|
127
|
+
disconnect(): Promise<void>;
|
|
128
|
+
/** Room-related operations */
|
|
129
|
+
readonly room: {
|
|
130
|
+
/** Get list of users currently in the room */
|
|
131
|
+
getUsers(): Promise<User[]>;
|
|
132
|
+
/** Get users within specified radius */
|
|
133
|
+
getNearbyUsers(radius?: number): Promise<User[]>;
|
|
134
|
+
};
|
|
135
|
+
/** Get list of users currently in the room (sync version) */
|
|
136
|
+
getUsers(): User[];
|
|
137
|
+
/** Chat-related operations */
|
|
138
|
+
readonly chat: {
|
|
139
|
+
/** Send message to entire room */
|
|
140
|
+
send(text: string): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Subscribe to all chat messages
|
|
143
|
+
* Receives all messages regardless of mentions
|
|
144
|
+
*/
|
|
145
|
+
onMessage(handler: (event: {
|
|
146
|
+
from: User;
|
|
147
|
+
text: string;
|
|
148
|
+
mention?: {
|
|
149
|
+
sessionId: string;
|
|
150
|
+
name: string;
|
|
151
|
+
};
|
|
152
|
+
/** Utility function to reply to the received message */
|
|
153
|
+
reply: (text: string) => Promise<void>;
|
|
154
|
+
}) => void): void;
|
|
155
|
+
};
|
|
156
|
+
/** Bot avatar operations */
|
|
157
|
+
readonly avatar: {
|
|
158
|
+
/**
|
|
159
|
+
* Select/change avatar
|
|
160
|
+
* @param assetId Organization avatar ID, etc.
|
|
161
|
+
*/
|
|
162
|
+
select(assetId: string): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* Play animation
|
|
165
|
+
* @param animation Animation specification to play
|
|
166
|
+
* @throws {NotFoundError} If specified animation doesn't exist
|
|
167
|
+
*/
|
|
168
|
+
play(animation: Animation): Promise<void>;
|
|
169
|
+
/**
|
|
170
|
+
* Move to specified coordinates
|
|
171
|
+
* @param position Target coordinates (meters)
|
|
172
|
+
*/
|
|
173
|
+
moveTo(position: Vec3): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Rotate to specified angle
|
|
176
|
+
* @param rotation Rotation angle (Euler angles in degrees)
|
|
177
|
+
*/
|
|
178
|
+
rotateTo(rotation: Euler): Promise<void>;
|
|
179
|
+
/**
|
|
180
|
+
* Look at specified coordinates
|
|
181
|
+
* @param target Target coordinates to look at (meters)
|
|
182
|
+
*/
|
|
183
|
+
lookAt(target: Vec3): Promise<void>;
|
|
184
|
+
/** Get current position */
|
|
185
|
+
getPosition(): Vec3 | null;
|
|
186
|
+
/** Get list of available avatar assets */
|
|
187
|
+
getAvailableAssets(): Promise<AvatarAsset[]>;
|
|
188
|
+
/** Get list of available animations for current avatar */
|
|
189
|
+
getAvailableAnimations(): Promise<Animation[]>;
|
|
190
|
+
};
|
|
191
|
+
/** Voice-related operations */
|
|
192
|
+
readonly voice: {
|
|
193
|
+
/**
|
|
194
|
+
* Inject 16-bit PCM data to make bot speak
|
|
195
|
+
* SDK internally resamples to 48kHz/mono and splits into 10ms frames
|
|
196
|
+
* @param input Int16Array, AsyncIterable<Int16Array>, or NodeJS.ReadableStream
|
|
197
|
+
* @param options Input PCM format
|
|
198
|
+
* @returns Object for controlling playback
|
|
199
|
+
* @throws {UnsupportedAudioFormatError} If unsupported format is specified
|
|
200
|
+
*/
|
|
201
|
+
playPcm(input: unknown, options: PcmInputOptions): Promise<PlaybackControls>;
|
|
202
|
+
};
|
|
203
|
+
/** Get bot's own information */
|
|
204
|
+
getInfo(): Promise<BotInfo>;
|
|
205
|
+
/** Get connection status */
|
|
206
|
+
getStatus(): {
|
|
207
|
+
connected: boolean;
|
|
208
|
+
connecting: boolean;
|
|
209
|
+
};
|
|
210
|
+
/** Get rate limit settings */
|
|
211
|
+
getRateLimit(key: 'messages' | 'moves' | 'looks'): number | undefined;
|
|
212
|
+
/** Set rate limit */
|
|
213
|
+
setRateLimit(key: 'messages' | 'moves' | 'looks', perSecond: number): void;
|
|
214
|
+
/**
|
|
215
|
+
* Subscribe to SDK events
|
|
216
|
+
* @param event Event name
|
|
217
|
+
* @param listener Event handler
|
|
218
|
+
*/
|
|
219
|
+
on<E extends keyof MetatellClientEvents>(event: E, listener: MetatellClientEvents[E]): this;
|
|
220
|
+
/**
|
|
221
|
+
* Unsubscribe from SDK events
|
|
222
|
+
*/
|
|
223
|
+
off<E extends keyof MetatellClientEvents>(event: E, listener: MetatellClientEvents[E]): this;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":""}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Core types used across the SDK
|
|
3
3
|
*/
|
|
4
|
+
export type { Animation, AvatarAsset, BotInfo, Euler, MetatellClient, MetatellClientEvents, PcmInputOptions, PlaybackControls, User, Vec3, } from './client.js';
|
|
5
|
+
export type { VoiceCapableClient } from './voice.js';
|
|
4
6
|
/**
|
|
5
7
|
* NAF (Networked A-Frame) component data
|
|
6
8
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EACV,SAAS,EACT,WAAW,EACX,OAAO,EACP,KAAK,EACL,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,IAAI,EACJ,IAAI,GACL,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voice-capable client interface
|
|
3
|
+
* Both MetatellClient and AgentClient should implement this
|
|
4
|
+
*/
|
|
5
|
+
export interface VoiceCapableClient {
|
|
6
|
+
/**
|
|
7
|
+
* Mute or unmute voice
|
|
8
|
+
*/
|
|
9
|
+
muteVoice?(muted: boolean): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Get session ID for voice identification
|
|
12
|
+
*/
|
|
13
|
+
getSessionId(): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Send voice frame to the server
|
|
16
|
+
*/
|
|
17
|
+
sendVoiceFrame?(pcm: Int16Array): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/types/voice.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,SAAS,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzC;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI,CAAA;IAE7B;;OAEG;IACH,cAAc,CAAC,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/types/voice.ts"],"names":[],"mappings":""}
|