@metatell/bot-core 0.0.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 (185) hide show
  1. package/dist/CoreServiceFactory.d.ts +25 -0
  2. package/dist/CoreServiceFactory.d.ts.map +1 -0
  3. package/dist/CoreServiceFactory.js +102 -0
  4. package/dist/CoreServiceFactory.js.map +1 -0
  5. package/dist/ServiceContainer.d.ts +87 -0
  6. package/dist/ServiceContainer.d.ts.map +1 -0
  7. package/dist/ServiceContainer.js +119 -0
  8. package/dist/ServiceContainer.js.map +1 -0
  9. package/dist/ServiceIdentifier.d.ts +28 -0
  10. package/dist/ServiceIdentifier.d.ts.map +1 -0
  11. package/dist/ServiceIdentifier.js +18 -0
  12. package/dist/ServiceIdentifier.js.map +1 -0
  13. package/dist/builders/NafMessageBuilder.d.ts +242 -0
  14. package/dist/builders/NafMessageBuilder.d.ts.map +1 -0
  15. package/dist/builders/NafMessageBuilder.js +288 -0
  16. package/dist/builders/NafMessageBuilder.js.map +1 -0
  17. package/dist/errors/animation-errors.d.ts +41 -0
  18. package/dist/errors/animation-errors.d.ts.map +1 -0
  19. package/dist/errors/animation-errors.js +60 -0
  20. package/dist/errors/animation-errors.js.map +1 -0
  21. package/dist/index.d.ts +32 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +27 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/interfaces/IAnimationService.d.ts +42 -0
  26. package/dist/interfaces/IAnimationService.d.ts.map +1 -0
  27. package/dist/interfaces/IAnimationService.js +5 -0
  28. package/dist/interfaces/IAnimationService.js.map +1 -0
  29. package/dist/interfaces/IAppSettings.d.ts +11 -0
  30. package/dist/interfaces/IAppSettings.d.ts.map +1 -0
  31. package/dist/interfaces/IAppSettings.js +5 -0
  32. package/dist/interfaces/IAppSettings.js.map +1 -0
  33. package/dist/interfaces/IAuthenticationService.d.ts +20 -0
  34. package/dist/interfaces/IAuthenticationService.d.ts.map +1 -0
  35. package/dist/interfaces/IAuthenticationService.js +5 -0
  36. package/dist/interfaces/IAuthenticationService.js.map +1 -0
  37. package/dist/interfaces/IAvatarController.d.ts +54 -0
  38. package/dist/interfaces/IAvatarController.d.ts.map +1 -0
  39. package/dist/interfaces/IAvatarController.js +5 -0
  40. package/dist/interfaces/IAvatarController.js.map +1 -0
  41. package/dist/interfaces/IConfigurationProvider.d.ts +39 -0
  42. package/dist/interfaces/IConfigurationProvider.d.ts.map +1 -0
  43. package/dist/interfaces/IConfigurationProvider.js +5 -0
  44. package/dist/interfaces/IConfigurationProvider.js.map +1 -0
  45. package/dist/interfaces/IConnectionManager.d.ts +23 -0
  46. package/dist/interfaces/IConnectionManager.d.ts.map +1 -0
  47. package/dist/interfaces/IConnectionManager.js +5 -0
  48. package/dist/interfaces/IConnectionManager.js.map +1 -0
  49. package/dist/interfaces/IEventBus.d.ts +28 -0
  50. package/dist/interfaces/IEventBus.d.ts.map +1 -0
  51. package/dist/interfaces/IEventBus.js +31 -0
  52. package/dist/interfaces/IEventBus.js.map +1 -0
  53. package/dist/interfaces/IMessageService.d.ts +25 -0
  54. package/dist/interfaces/IMessageService.d.ts.map +1 -0
  55. package/dist/interfaces/IMessageService.js +5 -0
  56. package/dist/interfaces/IMessageService.js.map +1 -0
  57. package/dist/interfaces/IOrganizationService.d.ts +58 -0
  58. package/dist/interfaces/IOrganizationService.d.ts.map +1 -0
  59. package/dist/interfaces/IOrganizationService.js +5 -0
  60. package/dist/interfaces/IOrganizationService.js.map +1 -0
  61. package/dist/interfaces/IPresenceManager.d.ts +20 -0
  62. package/dist/interfaces/IPresenceManager.d.ts.map +1 -0
  63. package/dist/interfaces/IPresenceManager.js +5 -0
  64. package/dist/interfaces/IPresenceManager.js.map +1 -0
  65. package/dist/interfaces/IUserAvatarManager.d.ts +88 -0
  66. package/dist/interfaces/IUserAvatarManager.d.ts.map +1 -0
  67. package/dist/interfaces/IUserAvatarManager.js +5 -0
  68. package/dist/interfaces/IUserAvatarManager.js.map +1 -0
  69. package/dist/interfaces/IWebSocketConnectionManager.d.ts +14 -0
  70. package/dist/interfaces/IWebSocketConnectionManager.d.ts.map +1 -0
  71. package/dist/interfaces/IWebSocketConnectionManager.js +2 -0
  72. package/dist/interfaces/IWebSocketConnectionManager.js.map +1 -0
  73. package/dist/logging/LogEventEmitter.d.ts +38 -0
  74. package/dist/logging/LogEventEmitter.d.ts.map +1 -0
  75. package/dist/logging/LogEventEmitter.js +54 -0
  76. package/dist/logging/LogEventEmitter.js.map +1 -0
  77. package/dist/logging/index.d.ts +22 -0
  78. package/dist/logging/index.d.ts.map +1 -0
  79. package/dist/logging/index.js +10 -0
  80. package/dist/logging/index.js.map +1 -0
  81. package/dist/logging/providers/default.d.ts +22 -0
  82. package/dist/logging/providers/default.d.ts.map +1 -0
  83. package/dist/logging/providers/default.js +175 -0
  84. package/dist/logging/providers/default.js.map +1 -0
  85. package/dist/logging/spi.d.ts +35 -0
  86. package/dist/logging/spi.d.ts.map +1 -0
  87. package/dist/logging/spi.js +25 -0
  88. package/dist/logging/spi.js.map +1 -0
  89. package/dist/services/AnimationService.d.ts +38 -0
  90. package/dist/services/AnimationService.d.ts.map +1 -0
  91. package/dist/services/AnimationService.js +157 -0
  92. package/dist/services/AnimationService.js.map +1 -0
  93. package/dist/services/AppSettings.d.ts +14 -0
  94. package/dist/services/AppSettings.d.ts.map +1 -0
  95. package/dist/services/AppSettings.js +48 -0
  96. package/dist/services/AppSettings.js.map +1 -0
  97. package/dist/services/AuthenticationService.d.ts +13 -0
  98. package/dist/services/AuthenticationService.d.ts.map +1 -0
  99. package/dist/services/AuthenticationService.js +44 -0
  100. package/dist/services/AuthenticationService.js.map +1 -0
  101. package/dist/services/AvatarController.d.ts +50 -0
  102. package/dist/services/AvatarController.d.ts.map +1 -0
  103. package/dist/services/AvatarController.js +409 -0
  104. package/dist/services/AvatarController.js.map +1 -0
  105. package/dist/services/ChannelService.d.ts +19 -0
  106. package/dist/services/ChannelService.d.ts.map +1 -0
  107. package/dist/services/ChannelService.js +113 -0
  108. package/dist/services/ChannelService.js.map +1 -0
  109. package/dist/services/ConfigurationProvider.d.ts +13 -0
  110. package/dist/services/ConfigurationProvider.d.ts.map +1 -0
  111. package/dist/services/ConfigurationProvider.js +49 -0
  112. package/dist/services/ConfigurationProvider.js.map +1 -0
  113. package/dist/services/EventBus.d.ts +11 -0
  114. package/dist/services/EventBus.d.ts.map +1 -0
  115. package/dist/services/EventBus.js +54 -0
  116. package/dist/services/EventBus.js.map +1 -0
  117. package/dist/services/IChannelService.d.ts +57 -0
  118. package/dist/services/IChannelService.d.ts.map +1 -0
  119. package/dist/services/IChannelService.js +6 -0
  120. package/dist/services/IChannelService.js.map +1 -0
  121. package/dist/services/MessageService.d.ts +23 -0
  122. package/dist/services/MessageService.d.ts.map +1 -0
  123. package/dist/services/MessageService.js +141 -0
  124. package/dist/services/MessageService.js.map +1 -0
  125. package/dist/services/OrganizationService.d.ts +11 -0
  126. package/dist/services/OrganizationService.d.ts.map +1 -0
  127. package/dist/services/OrganizationService.js +121 -0
  128. package/dist/services/OrganizationService.js.map +1 -0
  129. package/dist/services/PresenceManager.d.ts +21 -0
  130. package/dist/services/PresenceManager.d.ts.map +1 -0
  131. package/dist/services/PresenceManager.js +143 -0
  132. package/dist/services/PresenceManager.js.map +1 -0
  133. package/dist/services/UserAvatarManager.d.ts +61 -0
  134. package/dist/services/UserAvatarManager.d.ts.map +1 -0
  135. package/dist/services/UserAvatarManager.js +466 -0
  136. package/dist/services/UserAvatarManager.js.map +1 -0
  137. package/dist/services/WebSocketConnectionManager.d.ts +26 -0
  138. package/dist/services/WebSocketConnectionManager.d.ts.map +1 -0
  139. package/dist/services/WebSocketConnectionManager.js +223 -0
  140. package/dist/services/WebSocketConnectionManager.js.map +1 -0
  141. package/dist/services/resolvers/CompositeUserIdResolver.d.ts +20 -0
  142. package/dist/services/resolvers/CompositeUserIdResolver.d.ts.map +1 -0
  143. package/dist/services/resolvers/CompositeUserIdResolver.js +46 -0
  144. package/dist/services/resolvers/CompositeUserIdResolver.js.map +1 -0
  145. package/dist/services/resolvers/CreatorMatchResolver.d.ts +15 -0
  146. package/dist/services/resolvers/CreatorMatchResolver.d.ts.map +1 -0
  147. package/dist/services/resolvers/CreatorMatchResolver.js +31 -0
  148. package/dist/services/resolvers/CreatorMatchResolver.js.map +1 -0
  149. package/dist/services/resolvers/ExactMatchResolver.d.ts +15 -0
  150. package/dist/services/resolvers/ExactMatchResolver.d.ts.map +1 -0
  151. package/dist/services/resolvers/ExactMatchResolver.js +28 -0
  152. package/dist/services/resolvers/ExactMatchResolver.js.map +1 -0
  153. package/dist/services/resolvers/IUserIdResolver.d.ts +53 -0
  154. package/dist/services/resolvers/IUserIdResolver.d.ts.map +1 -0
  155. package/dist/services/resolvers/IUserIdResolver.js +6 -0
  156. package/dist/services/resolvers/IUserIdResolver.js.map +1 -0
  157. package/dist/services/resolvers/OwnerMatchResolver.d.ts +15 -0
  158. package/dist/services/resolvers/OwnerMatchResolver.d.ts.map +1 -0
  159. package/dist/services/resolvers/OwnerMatchResolver.js +31 -0
  160. package/dist/services/resolvers/OwnerMatchResolver.js.map +1 -0
  161. package/dist/services/resolvers/PrefixMatchResolver.d.ts +17 -0
  162. package/dist/services/resolvers/PrefixMatchResolver.d.ts.map +1 -0
  163. package/dist/services/resolvers/PrefixMatchResolver.js +36 -0
  164. package/dist/services/resolvers/PrefixMatchResolver.js.map +1 -0
  165. package/dist/services/resolvers/index.d.ts +10 -0
  166. package/dist/services/resolvers/index.d.ts.map +1 -0
  167. package/dist/services/resolvers/index.js +9 -0
  168. package/dist/services/resolvers/index.js.map +1 -0
  169. package/dist/types/animation.d.ts +92 -0
  170. package/dist/types/animation.d.ts.map +1 -0
  171. package/dist/types/animation.js +31 -0
  172. package/dist/types/animation.js.map +1 -0
  173. package/dist/types/index.d.ts +14 -0
  174. package/dist/types/index.d.ts.map +1 -0
  175. package/dist/types/index.js +5 -0
  176. package/dist/types/index.js.map +1 -0
  177. package/dist/types/naf.d.ts +229 -0
  178. package/dist/types/naf.d.ts.map +1 -0
  179. package/dist/types/naf.js +93 -0
  180. package/dist/types/naf.js.map +1 -0
  181. package/dist/utils/nafParser.d.ts +64 -0
  182. package/dist/utils/nafParser.d.ts.map +1 -0
  183. package/dist/utils/nafParser.js +99 -0
  184. package/dist/utils/nafParser.js.map +1 -0
  185. package/package.json +37 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../src/logging/providers/default.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA4J1E;;GAEG;AACH,qBAAa,qBAAsB,YAAW,cAAc;;IAQ1D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/B,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAKlC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIlC,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAIrC,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIjC,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;CAGpC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,cAAc,GAAG,IAAI,CAErD"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Default LoggerProvider implementation
3
+ */
4
+ import { getLogEventEmitter } from '../LogEventEmitter.js';
5
+ /**
6
+ * Simple ring buffer implementation
7
+ */
8
+ class RingBuffer {
9
+ capacity;
10
+ buffer = [];
11
+ writeIndex = 0;
12
+ wrapped = false;
13
+ readIndex = 0;
14
+ constructor(capacity = 1000) {
15
+ this.capacity = capacity;
16
+ }
17
+ write(record) {
18
+ this.buffer[this.writeIndex] = record;
19
+ this.writeIndex = (this.writeIndex + 1) % this.capacity;
20
+ if (this.writeIndex === 0) {
21
+ this.wrapped = true;
22
+ }
23
+ // Emit event for new log
24
+ const eventEmitter = getLogEventEmitter();
25
+ eventEmitter.emitNewLogs([record]);
26
+ }
27
+ drain() {
28
+ if (!this.wrapped && this.writeIndex === 0) {
29
+ return [];
30
+ }
31
+ const result = this.wrapped
32
+ ? [...this.buffer.slice(this.writeIndex), ...this.buffer.slice(0, this.writeIndex)]
33
+ : this.buffer.slice(0, this.writeIndex);
34
+ this.clear();
35
+ return result;
36
+ }
37
+ drainNew() {
38
+ const newRecords = [];
39
+ while (this.readIndex !== this.writeIndex ||
40
+ (this.wrapped && this.readIndex === this.writeIndex)) {
41
+ newRecords.push(this.buffer[this.readIndex]);
42
+ this.readIndex = (this.readIndex + 1) % this.capacity;
43
+ if (this.readIndex === 0) {
44
+ this.wrapped = false;
45
+ }
46
+ }
47
+ return newRecords;
48
+ }
49
+ clear() {
50
+ this.buffer = [];
51
+ this.writeIndex = 0;
52
+ this.wrapped = false;
53
+ this.readIndex = 0;
54
+ }
55
+ size() {
56
+ if (!this.wrapped) {
57
+ return this.writeIndex;
58
+ }
59
+ return this.capacity;
60
+ }
61
+ }
62
+ // Global state
63
+ let globalRingBuffer = null;
64
+ let globalMinLevel = 'info';
65
+ let globalConsoleEnabled = true;
66
+ const globalSinks = new Set();
67
+ /**
68
+ * Default logger implementation
69
+ */
70
+ class DefaultLogger {
71
+ name;
72
+ constructor(name) {
73
+ this.name = name;
74
+ }
75
+ shouldLog(level) {
76
+ const levels = ['debug', 'info', 'warn', 'error'];
77
+ const currentLevelIndex = levels.indexOf(globalMinLevel);
78
+ const messageLevelIndex = levels.indexOf(level);
79
+ return messageLevelIndex >= currentLevelIndex;
80
+ }
81
+ log(level, message, meta) {
82
+ if (!this.shouldLog(level))
83
+ return;
84
+ const record = {
85
+ ts: Date.now(),
86
+ level,
87
+ module: this.name,
88
+ msg: message,
89
+ meta,
90
+ };
91
+ // Write to ring buffer
92
+ if (globalRingBuffer) {
93
+ globalRingBuffer.write(record);
94
+ }
95
+ // Write to sinks (convert LogRecord to LogEvent)
96
+ for (const sink of globalSinks) {
97
+ sink.write({
98
+ ts: record.ts,
99
+ level: record.level,
100
+ module: record.module,
101
+ message: record.msg,
102
+ attributes: record.meta,
103
+ });
104
+ }
105
+ // Write to console if enabled
106
+ if (globalConsoleEnabled) {
107
+ const timestamp = new Date(record.ts).toISOString();
108
+ const metaStr = meta ? ` ${JSON.stringify(meta)}` : '';
109
+ const logMessage = `[${timestamp}] [${level.toUpperCase()}] [${this.name}] ${message}${metaStr}`;
110
+ switch (level) {
111
+ case 'debug':
112
+ console.debug(logMessage);
113
+ break;
114
+ case 'info':
115
+ console.info(logMessage);
116
+ break;
117
+ case 'warn':
118
+ console.warn(logMessage);
119
+ break;
120
+ case 'error':
121
+ console.error(logMessage);
122
+ break;
123
+ }
124
+ }
125
+ }
126
+ debug(message, meta) {
127
+ this.log('debug', message, meta);
128
+ }
129
+ info(message, meta) {
130
+ this.log('info', message, meta);
131
+ }
132
+ warn(message, meta) {
133
+ this.log('warn', message, meta);
134
+ }
135
+ error(message, meta) {
136
+ this.log('error', message, meta);
137
+ }
138
+ }
139
+ /**
140
+ * Default LoggerProvider implementation
141
+ */
142
+ export class DefaultLoggerProvider {
143
+ constructor() {
144
+ // Initialize global ring buffer if not already created
145
+ if (!globalRingBuffer) {
146
+ globalRingBuffer = new RingBuffer(1000);
147
+ }
148
+ }
149
+ getLogger(name) {
150
+ return new DefaultLogger(name);
151
+ }
152
+ setMinLevel(level) {
153
+ globalMinLevel = level;
154
+ }
155
+ // 後方互換性のため
156
+ setLogLevel(level) {
157
+ this.setMinLevel(level);
158
+ }
159
+ enableConsole(enabled) {
160
+ globalConsoleEnabled = enabled;
161
+ }
162
+ registerSink(sink) {
163
+ globalSinks.add(sink);
164
+ }
165
+ unregisterSink(sink) {
166
+ globalSinks.delete(sink);
167
+ }
168
+ }
169
+ /**
170
+ * Get the global ring buffer (for CLI compatibility)
171
+ */
172
+ export function getRingBuffer() {
173
+ return globalRingBuffer;
174
+ }
175
+ //# sourceMappingURL=default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../src/logging/providers/default.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Logging SPI (Service Provider Interface) for SDK
3
+ * Allows applications to plug in their own logging implementations
4
+ */
5
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
6
+ export interface LogEvent {
7
+ ts: number;
8
+ level: LogLevel;
9
+ module: string;
10
+ message: string;
11
+ attributes?: unknown;
12
+ }
13
+ export interface Logger {
14
+ debug(msg: string, attributes?: unknown): void;
15
+ info(msg: string, attributes?: unknown): void;
16
+ warn(msg: string, attributes?: unknown): void;
17
+ error(msg: string, attributes?: unknown): void;
18
+ }
19
+ export interface LogSink {
20
+ write(event: LogEvent): void;
21
+ }
22
+ export interface LoggerProvider {
23
+ getLogger(module: string): Logger;
24
+ addSink?(sink: LogSink): void;
25
+ setMinLevel?(level: LogLevel): void;
26
+ enableConsole?(debug?: boolean): void;
27
+ }
28
+ export interface RegisterOptions {
29
+ allowOverwrite?: boolean;
30
+ }
31
+ export declare function registerLoggerProvider(provider: LoggerProvider, options?: RegisterOptions): void;
32
+ export declare function resetLoggerProvider(): void;
33
+ export declare function getLogger(module: string): Logger;
34
+ export declare function getLoggerProvider(): LoggerProvider | null;
35
+ //# sourceMappingURL=spi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spi.d.ts","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,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,CAKhD;AAED,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Logging SPI (Service Provider Interface) for SDK
3
+ * Allows applications to plug in their own logging implementations
4
+ */
5
+ // Global provider registry
6
+ let _provider = null;
7
+ export function registerLoggerProvider(provider, options) {
8
+ if (_provider && !options?.allowOverwrite) {
9
+ throw new Error('LoggerProvider is already registered. Use { allowOverwrite: true } to replace.');
10
+ }
11
+ _provider = provider;
12
+ }
13
+ export function resetLoggerProvider() {
14
+ _provider = null;
15
+ }
16
+ export function getLogger(module) {
17
+ if (!_provider) {
18
+ throw new Error('LoggerProvider not registered. Call registerLoggerProvider() first.');
19
+ }
20
+ return _provider.getLogger(module);
21
+ }
22
+ export function getLoggerProvider() {
23
+ return _provider;
24
+ }
25
+ //# sourceMappingURL=spi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spi.js","sourceRoot":"","sources":["../../src/logging/spi.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH,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,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;IACxF,CAAC;IACD,OAAO,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { IAnimationService } from '../interfaces/IAnimationService.js';
2
+ import type { Logger } from '../logging/spi.js';
3
+ import type { VRMAnimation } from '../types/animation.js';
4
+ /**
5
+ * Service for managing VRM animations
6
+ */
7
+ export declare class AnimationService implements IAnimationService {
8
+ private logger;
9
+ private apiBaseUrl;
10
+ private animationCache;
11
+ private avatarAnimationsCache;
12
+ constructor(logger: Logger, apiBaseUrl: string);
13
+ /**
14
+ * Get available animations for an avatar
15
+ */
16
+ getAvailableAnimations(avatarId: string): Promise<VRMAnimation[]>;
17
+ /**
18
+ * Load animation data
19
+ */
20
+ loadAnimation(animationId: string): Promise<VRMAnimation>;
21
+ /**
22
+ * Validate if animation exists
23
+ */
24
+ validateAnimation(animationId: string): Promise<boolean>;
25
+ /**
26
+ * Get default preset animations
27
+ */
28
+ getDefaultAnimations(): VRMAnimation[];
29
+ /**
30
+ * Clear all caches
31
+ */
32
+ clearCache(): void;
33
+ /**
34
+ * Set current avatar ID for animation context
35
+ */
36
+ setCurrentAvatarId(avatarId: string): void;
37
+ }
38
+ //# sourceMappingURL=AnimationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationService.d.ts","sourceRoot":"","sources":["../../src/services/AnimationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGzD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IAKtD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,UAAU;IALpB,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,qBAAqB,CAAyC;gBAG5D,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM;IAG5B;;OAEG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA2EvE;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6C/D;;OAEG;IACG,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9D;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAiBtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAO3C"}
@@ -0,0 +1,157 @@
1
+ import { PresetAnimationId } from '../types/animation.js';
2
+ /**
3
+ * Service for managing VRM animations
4
+ */
5
+ export class AnimationService {
6
+ logger;
7
+ apiBaseUrl;
8
+ animationCache = new Map();
9
+ avatarAnimationsCache = new Map();
10
+ constructor(logger, apiBaseUrl) {
11
+ this.logger = logger;
12
+ this.apiBaseUrl = apiBaseUrl;
13
+ }
14
+ /**
15
+ * Get available animations for an avatar
16
+ */
17
+ async getAvailableAnimations(avatarId) {
18
+ // Check cache first
19
+ const cached = this.avatarAnimationsCache.get(avatarId);
20
+ if (cached) {
21
+ return cached;
22
+ }
23
+ // デフォルトアニメーション
24
+ const defaultAnimations = this.getDefaultAnimations();
25
+ try {
26
+ // アバター情報を取得して利用可能なアニメーションを確認
27
+ const avatarUrl = `${this.apiBaseUrl}/api/v1/avatars/${avatarId}`;
28
+ this.logger.debug('Fetching avatar animations', { avatarUrl });
29
+ const response = await fetch(avatarUrl);
30
+ this.logger.debug('Avatar API response', {
31
+ avatarUrl,
32
+ status: response.status,
33
+ ok: response.ok,
34
+ });
35
+ if (!response.ok) {
36
+ // 404の場合は組織アバターの可能性があるのでデフォルトを返す
37
+ if (response.status === 404) {
38
+ this.logger.debug('Avatar not found in individual avatars, might be organization avatar', { avatarId });
39
+ this.avatarAnimationsCache.set(avatarId, defaultAnimations);
40
+ return defaultAnimations;
41
+ }
42
+ throw new Error(`Failed to fetch avatar info: ${response.status}`);
43
+ }
44
+ const avatarData = (await response.json());
45
+ // アバター固有のアニメーションをVRMAnimation形式に変換
46
+ const customAnimations = (avatarData.animations || []).map((anim) => ({
47
+ id: anim.id,
48
+ name: anim.alias || anim.name,
49
+ vrmaFilePath: anim.vrmaFilePath,
50
+ type: 'custom',
51
+ loop: false, // デフォルトはループなし
52
+ }));
53
+ // デフォルトアニメーションとカスタムアニメーションを結合
54
+ const allAnimations = [...defaultAnimations, ...customAnimations];
55
+ this.logger.debug('Avatar animations loaded', {
56
+ avatarId,
57
+ defaultCount: defaultAnimations.length,
58
+ customCount: customAnimations.length,
59
+ });
60
+ this.avatarAnimationsCache.set(avatarId, allAnimations);
61
+ return allAnimations;
62
+ }
63
+ catch (error) {
64
+ this.logger.warn('Failed to fetch avatar animations, returning defaults', { avatarId, error });
65
+ this.avatarAnimationsCache.set(avatarId, defaultAnimations);
66
+ return defaultAnimations;
67
+ }
68
+ }
69
+ /**
70
+ * Load animation data
71
+ */
72
+ async loadAnimation(animationId) {
73
+ // Check cache
74
+ const cached = this.animationCache.get(animationId);
75
+ if (cached) {
76
+ return cached;
77
+ }
78
+ // Check if it's a preset animation
79
+ const presetAnimation = this.getDefaultAnimations().find((a) => a.id === animationId);
80
+ if (presetAnimation) {
81
+ this.animationCache.set(animationId, presetAnimation);
82
+ return presetAnimation;
83
+ }
84
+ // For custom animations, we need to fetch from API
85
+ try {
86
+ const response = await fetch(`${this.apiBaseUrl}/api/v1/animations/${animationId}`);
87
+ if (!response.ok) {
88
+ throw new Error(`Animation not found: ${animationId}`);
89
+ }
90
+ const animationData = (await response.json());
91
+ const animation = {
92
+ id: animationData.id,
93
+ name: animationData.name,
94
+ vrmaFilePath: animationData.vrmaFilePath,
95
+ type: 'custom',
96
+ duration: animationData.duration,
97
+ loop: animationData.loop,
98
+ };
99
+ this.animationCache.set(animationId, animation);
100
+ return animation;
101
+ }
102
+ catch (error) {
103
+ this.logger.error('Failed to load animation', { animationId, error });
104
+ throw error;
105
+ }
106
+ }
107
+ /**
108
+ * Validate if animation exists
109
+ */
110
+ async validateAnimation(animationId) {
111
+ try {
112
+ await this.loadAnimation(animationId);
113
+ return true;
114
+ }
115
+ catch {
116
+ return false;
117
+ }
118
+ }
119
+ /**
120
+ * Get default preset animations
121
+ */
122
+ getDefaultAnimations() {
123
+ return [
124
+ {
125
+ id: PresetAnimationId.IDLE,
126
+ name: 'Idle',
127
+ type: 'preset',
128
+ loop: true,
129
+ },
130
+ {
131
+ id: PresetAnimationId.WALKING,
132
+ name: 'Walking',
133
+ type: 'preset',
134
+ loop: true,
135
+ },
136
+ ];
137
+ }
138
+ /**
139
+ * Clear all caches
140
+ */
141
+ clearCache() {
142
+ this.animationCache.clear();
143
+ this.avatarAnimationsCache.clear();
144
+ this.logger.debug('Animation cache cleared');
145
+ }
146
+ /**
147
+ * Set current avatar ID for animation context
148
+ */
149
+ setCurrentAvatarId(avatarId) {
150
+ // アバターIDが変更された場合、そのアバターのアニメーションを事前取得
151
+ this.getAvailableAnimations(avatarId).catch((error) => {
152
+ this.logger.warn('Failed to preload avatar animations', { avatarId, error });
153
+ });
154
+ this.logger.debug('Current avatar ID set', { avatarId });
155
+ }
156
+ }
157
+ //# sourceMappingURL=AnimationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationService.js","sourceRoot":"","sources":["../../src/services/AnimationService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { IAppSettings } from '../interfaces/IAppSettings.js';
2
+ export declare class AppSettings implements IAppSettings {
3
+ private _debugMode;
4
+ private _logLevel;
5
+ private debugCallbacks;
6
+ private logger;
7
+ constructor(debugMode?: boolean, logLevel?: 'debug' | 'info' | 'warn' | 'error');
8
+ get debugMode(): boolean;
9
+ get logLevel(): 'debug' | 'info' | 'warn' | 'error';
10
+ onDebugModeChanged(callback: (enabled: boolean) => void): void;
11
+ setDebugMode(enabled: boolean): void;
12
+ setLogLevel(level: 'debug' | 'info' | 'warn' | 'error'): void;
13
+ }
14
+ //# sourceMappingURL=AppSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSettings.d.ts","sourceRoot":"","sources":["../../src/services/AppSettings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAGjE,qBAAa,WAAY,YAAW,YAAY;IAC9C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,MAAM,CAA2B;gBAE7B,SAAS,UAAQ,EAAE,QAAQ,GAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAgB;IAWrF,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,QAAQ,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAElD;IAED,kBAAkB,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI9D,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAepC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI;CAS9D"}
@@ -0,0 +1,48 @@
1
+ import { getLogger, getLoggerProvider } from '../logging/index.js';
2
+ export class AppSettings {
3
+ _debugMode;
4
+ _logLevel;
5
+ debugCallbacks = [];
6
+ logger = getLogger('AppSettings');
7
+ constructor(debugMode = false, logLevel = 'info') {
8
+ this._debugMode = debugMode;
9
+ this._logLevel = logLevel;
10
+ // LoggerProviderのログレベルを初期設定
11
+ const provider = getLoggerProvider();
12
+ if (provider?.setMinLevel) {
13
+ provider.setMinLevel(logLevel);
14
+ }
15
+ }
16
+ get debugMode() {
17
+ return this._debugMode;
18
+ }
19
+ get logLevel() {
20
+ return this._logLevel;
21
+ }
22
+ onDebugModeChanged(callback) {
23
+ this.debugCallbacks.push(callback);
24
+ }
25
+ setDebugMode(enabled) {
26
+ if (this._debugMode !== enabled) {
27
+ this._debugMode = enabled;
28
+ // 全てのコールバックに通知
29
+ for (const callback of this.debugCallbacks) {
30
+ try {
31
+ callback(enabled);
32
+ }
33
+ catch (error) {
34
+ this.logger.error('Error in debug mode callback', { error });
35
+ }
36
+ }
37
+ }
38
+ }
39
+ setLogLevel(level) {
40
+ this._logLevel = level;
41
+ // LoggerProviderのログレベルも更新
42
+ const provider = getLoggerProvider();
43
+ if (provider?.setMinLevel) {
44
+ provider.setMinLevel(level);
45
+ }
46
+ }
47
+ }
48
+ //# sourceMappingURL=AppSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppSettings.js","sourceRoot":"","sources":["../../src/services/AppSettings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAElE,MAAM,OAAO,WAAW;IACd,UAAU,CAAS;IACnB,SAAS,CAAqC;IAC9C,cAAc,GAAmC,EAAE,CAAA;IACnD,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,CAAA;IAEzC,YAAY,SAAS,GAAG,KAAK,EAAE,WAAgD,MAAM;QACnF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;QAEzB,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;QACpC,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC1B,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAChC,CAAC;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,kBAAkB,CAAC,QAAoC;QACrD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAED,YAAY,CAAC,OAAgB;QAC3B,IAAI,IAAI,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAA;YAEzB,eAAe;YACf,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACnB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAA0C;QACpD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QAEtB,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAA;QACpC,IAAI,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC1B,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { AuthCredentials, AuthToken, IAuthenticationService } from '../interfaces/IAuthenticationService.js';
2
+ import type { IConfigurationProvider } from '../interfaces/IConfigurationProvider.js';
3
+ export declare class AuthenticationService implements IAuthenticationService {
4
+ private token;
5
+ private configProvider;
6
+ constructor(configProvider: IConfigurationProvider);
7
+ authenticate(credentials: AuthCredentials): Promise<AuthToken>;
8
+ refreshToken(): Promise<AuthToken>;
9
+ getToken(): AuthToken | null;
10
+ isAuthenticated(): boolean;
11
+ logout(): void;
12
+ }
13
+ //# sourceMappingURL=AuthenticationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationService.d.ts","sourceRoot":"","sources":["../../src/services/AuthenticationService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,SAAS,EACT,sBAAsB,EACvB,MAAM,yCAAyC,CAAA;AAChD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAA;AAErF,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,cAAc,CAAwB;gBAElC,cAAc,EAAE,sBAAsB;IAI5C,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IAuB9D,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAKxC,QAAQ,IAAI,SAAS,GAAG,IAAI;IAQ5B,eAAe,IAAI,OAAO;IAI1B,MAAM,IAAI,IAAI;CAGf"}
@@ -0,0 +1,44 @@
1
+ export class AuthenticationService {
2
+ token = null;
3
+ configProvider;
4
+ constructor(configProvider) {
5
+ this.configProvider = configProvider;
6
+ }
7
+ async authenticate(credentials) {
8
+ // If token is provided directly
9
+ if (credentials.token) {
10
+ this.token = {
11
+ token: credentials.token,
12
+ expiresAt: Date.now() + 24 * 60 * 60 * 1000, // 24 hours
13
+ };
14
+ return this.token;
15
+ }
16
+ // Get auth configuration from config provider
17
+ const config = this.configProvider.getConfiguration();
18
+ // For now, generate a mock token since the auth endpoint is not fully implemented
19
+ // In production, this should make a real API call to the authentication server
20
+ this.token = {
21
+ token: `mock-token-${Date.now()}-${config.hubId || 'default'}`,
22
+ expiresAt: Date.now() + 24 * 60 * 60 * 1000,
23
+ };
24
+ return this.token;
25
+ }
26
+ async refreshToken() {
27
+ // Re-authenticate to get new token
28
+ return this.authenticate({});
29
+ }
30
+ getToken() {
31
+ // Check if token is expired
32
+ if (this.token?.expiresAt && this.token.expiresAt < Date.now()) {
33
+ this.token = null;
34
+ }
35
+ return this.token;
36
+ }
37
+ isAuthenticated() {
38
+ return this.getToken() !== null;
39
+ }
40
+ logout() {
41
+ this.token = null;
42
+ }
43
+ }
44
+ //# sourceMappingURL=AuthenticationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthenticationService.js","sourceRoot":"","sources":["../../src/services/AuthenticationService.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,qBAAqB;IACxB,KAAK,GAAqB,IAAI,CAAA;IAC9B,cAAc,CAAwB;IAE9C,YAAY,cAAsC;QAChD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAA4B;QAC7C,gCAAgC;QAChC,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG;gBACX,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;aACzD,CAAA;YACD,OAAO,IAAI,CAAC,KAAK,CAAA;QACnB,CAAC;QAED,8CAA8C;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAA;QAErD,kFAAkF;QAClF,+EAA+E;QAC/E,IAAI,CAAC,KAAK,GAAG;YACX,KAAK,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,EAAE;YAC9D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;SAC5C,CAAA;QAED,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,mCAAmC;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAED,QAAQ;QACN,4BAA4B;QAC5B,IAAI,IAAI,CAAC,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAA;IACjC,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IACnB,CAAC;CACF"}
@@ -0,0 +1,50 @@
1
+ import type { IAnimationService } from '../interfaces/IAnimationService.js';
2
+ import type { AvatarState, IAvatarController, Position, Rotation } from '../interfaces/IAvatarController.js';
3
+ import type { IConfigurationProvider } from '../interfaces/IConfigurationProvider.js';
4
+ import { type IEventBus } from '../interfaces/IEventBus.js';
5
+ import type { IMessageService } from '../interfaces/IMessageService.js';
6
+ import type { AnimationPlaybackResult, AnimationPlayOptions } from '../types/animation.js';
7
+ export declare class AvatarController implements IAvatarController {
8
+ private messageService;
9
+ private configProvider;
10
+ private eventBus;
11
+ private animationService?;
12
+ private state;
13
+ private sessionId;
14
+ private currentAnimation;
15
+ private logger;
16
+ constructor(messageService: IMessageService, configProvider: IConfigurationProvider, eventBus: IEventBus, animationService?: IAnimationService | undefined);
17
+ spawn(avatarId: string, position?: Position, avatarSrc?: string): Promise<void>;
18
+ /**
19
+ * Determine storage URL based on hub URL environment
20
+ */
21
+ private determineStorageUrl;
22
+ /**
23
+ * Check if avatar ID is organization avatar (UUID format)
24
+ */
25
+ private isOrganizationAvatar;
26
+ move(position: Position): Promise<void>;
27
+ rotate(rotation: Rotation): Promise<void>;
28
+ private quaternionToEuler;
29
+ updateState(state: Partial<AvatarState>): Promise<void>;
30
+ getState(): AvatarState | null;
31
+ destroy(): Promise<void>;
32
+ resyncAvatar(): Promise<void>;
33
+ /**
34
+ * Play animation on the avatar
35
+ */
36
+ playAnimation(animationId: string, options?: AnimationPlayOptions): Promise<AnimationPlaybackResult>;
37
+ /**
38
+ * Get current animation
39
+ */
40
+ getCurrentAnimation(): string | null;
41
+ /**
42
+ * Stop current animation
43
+ */
44
+ stopAnimation(): Promise<void>;
45
+ /**
46
+ * Calculate expected animation duration
47
+ */
48
+ private calculateExpectedDuration;
49
+ }
50
+ //# sourceMappingURL=AvatarController.d.ts.map