@metatell/bot-sdk 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.
- package/dist/client.d.ts +127 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +552 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/pcm-utils.d.ts +19 -0
- package/dist/pcm-utils.d.ts.map +1 -0
- package/dist/pcm-utils.js +98 -0
- package/dist/pcm-utils.js.map +1 -0
- package/dist/sdk/AgentClient.d.ts +201 -0
- package/dist/sdk/AgentClient.d.ts.map +1 -0
- package/dist/sdk/AgentClient.js +404 -0
- package/dist/sdk/AgentClient.js.map +1 -0
- package/dist/sdk/errors.d.ts +36 -0
- package/dist/sdk/errors.d.ts.map +1 -0
- package/dist/sdk/errors.js +61 -0
- package/dist/sdk/errors.js.map +1 -0
- package/dist/sdk/logging/LogEventEmitter.d.ts +38 -0
- package/dist/sdk/logging/LogEventEmitter.d.ts.map +1 -0
- package/dist/sdk/logging/LogEventEmitter.js +54 -0
- package/dist/sdk/logging/LogEventEmitter.js.map +1 -0
- package/dist/sdk/logging/index.d.ts +22 -0
- package/dist/sdk/logging/index.d.ts.map +1 -0
- package/dist/sdk/logging/index.js +10 -0
- package/dist/sdk/logging/index.js.map +1 -0
- package/dist/sdk/logging/providers/default.d.ts +21 -0
- package/dist/sdk/logging/providers/default.d.ts.map +1 -0
- package/dist/sdk/logging/providers/default.js +171 -0
- package/dist/sdk/logging/providers/default.js.map +1 -0
- package/dist/sdk/logging/spi.d.ts +35 -0
- package/dist/sdk/logging/spi.d.ts.map +1 -0
- package/dist/sdk/logging/spi.js +30 -0
- package/dist/sdk/logging/spi.js.map +1 -0
- package/dist/sdk/rate.d.ts +36 -0
- package/dist/sdk/rate.d.ts.map +1 -0
- package/dist/sdk/rate.js +81 -0
- package/dist/sdk/rate.js.map +1 -0
- package/dist/types.d.ts +111 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +24 -0
- package/dist/types.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Logging module - SPI and default implementation
|
|
3
|
+
*/
|
|
4
|
+
// Export event emitter for reactive log updates
|
|
5
|
+
export { getLogEventEmitter, resetLogEventEmitter, } from './LogEventEmitter.js';
|
|
6
|
+
// Export default provider and CLI compatibility functions
|
|
7
|
+
export { DefaultLoggerProvider, getRingBuffer } from './providers/default.js';
|
|
8
|
+
// Export SPI interfaces and registration functions
|
|
9
|
+
export * from './spi.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdk/logging/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gDAAgD;AAChD,OAAO,EACL,kBAAkB,EAGlB,oBAAoB,GACrB,MAAM,sBAAsB,CAAA;AAC7B,0DAA0D;AAC1D,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC7E,mDAAmD;AACnD,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default LoggerProvider implementation
|
|
3
|
+
*/
|
|
4
|
+
import type { RingBufferLike } from '../index.js';
|
|
5
|
+
import type { Logger, LoggerProvider, LogLevel, LogSink } from '../spi.js';
|
|
6
|
+
/**
|
|
7
|
+
* Default LoggerProvider implementation
|
|
8
|
+
*/
|
|
9
|
+
export declare class DefaultLoggerProvider implements LoggerProvider {
|
|
10
|
+
constructor();
|
|
11
|
+
getLogger(name: string): Logger;
|
|
12
|
+
setLogLevel(level: LogLevel): void;
|
|
13
|
+
enableConsole(enabled: boolean): void;
|
|
14
|
+
registerSink(sink: LogSink): void;
|
|
15
|
+
unregisterSink(sink: LogSink): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get the global ring buffer (for CLI compatibility)
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRingBuffer(): RingBufferLike | null;
|
|
21
|
+
//# sourceMappingURL=default.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../src/sdk/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;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,171 @@
|
|
|
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
|
+
setLogLevel(level) {
|
|
153
|
+
globalMinLevel = level;
|
|
154
|
+
}
|
|
155
|
+
enableConsole(enabled) {
|
|
156
|
+
globalConsoleEnabled = enabled;
|
|
157
|
+
}
|
|
158
|
+
registerSink(sink) {
|
|
159
|
+
globalSinks.add(sink);
|
|
160
|
+
}
|
|
161
|
+
unregisterSink(sink) {
|
|
162
|
+
globalSinks.delete(sink);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get the global ring buffer (for CLI compatibility)
|
|
167
|
+
*/
|
|
168
|
+
export function getRingBuffer() {
|
|
169
|
+
return globalRingBuffer;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/sdk/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): undefined | (() => 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/sdk/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,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,CAAA;IACjD,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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging SPI (Service Provider Interface) for SDK
|
|
3
|
+
* Allows applications to plug in their own logging implementations
|
|
4
|
+
*/
|
|
5
|
+
import { DefaultLoggerProvider } from './providers/default.js';
|
|
6
|
+
// Global provider registry
|
|
7
|
+
let _provider = null;
|
|
8
|
+
export function registerLoggerProvider(provider, options) {
|
|
9
|
+
if (_provider && !options?.allowOverwrite) {
|
|
10
|
+
throw new Error('LoggerProvider is already registered. Use { allowOverwrite: true } to replace.');
|
|
11
|
+
}
|
|
12
|
+
_provider = provider;
|
|
13
|
+
}
|
|
14
|
+
export function resetLoggerProvider() {
|
|
15
|
+
_provider = null;
|
|
16
|
+
}
|
|
17
|
+
export function getLogger(module) {
|
|
18
|
+
if (!_provider) {
|
|
19
|
+
// 自動的にデフォルトプロバイダーを登録
|
|
20
|
+
registerLoggerProvider(new DefaultLoggerProvider());
|
|
21
|
+
}
|
|
22
|
+
if (!_provider) {
|
|
23
|
+
throw new Error('LoggerProvider registration failed');
|
|
24
|
+
}
|
|
25
|
+
return _provider.getLogger(module);
|
|
26
|
+
}
|
|
27
|
+
export function getLoggerProvider() {
|
|
28
|
+
return _provider;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=spi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spi.js","sourceRoot":"","sources":["../../../src/sdk/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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limiting utilities
|
|
3
|
+
*/
|
|
4
|
+
export interface RateLimiter {
|
|
5
|
+
tryAcquire(): boolean;
|
|
6
|
+
getRate(): number;
|
|
7
|
+
setRate(perSecond: number): void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Token bucket rate limiter
|
|
11
|
+
*/
|
|
12
|
+
export declare class TokenBucketRateLimiter implements RateLimiter {
|
|
13
|
+
private tokensPerSecond;
|
|
14
|
+
private tokens;
|
|
15
|
+
private lastRefill;
|
|
16
|
+
private readonly maxTokens;
|
|
17
|
+
constructor(tokensPerSecond: number);
|
|
18
|
+
tryAcquire(): boolean;
|
|
19
|
+
getRate(): number;
|
|
20
|
+
setRate(perSecond: number): void;
|
|
21
|
+
private refill;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Rate limited queue for different operation types
|
|
25
|
+
*/
|
|
26
|
+
export declare class RateLimitedQueue {
|
|
27
|
+
private limiters;
|
|
28
|
+
setRate(key: string, perSecond: number): void;
|
|
29
|
+
execute<T>(key: string, fn: () => Promise<T>): Promise<T>;
|
|
30
|
+
getRate(key: string): number | undefined;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Wrapper function for rate-limited operations
|
|
34
|
+
*/
|
|
35
|
+
export declare function withRate<T>(queue: RateLimitedQueue, key: string, fn: () => Promise<T>): Promise<T>;
|
|
36
|
+
//# sourceMappingURL=rate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate.d.ts","sourceRoot":"","sources":["../../src/sdk/rate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC1B,UAAU,IAAI,OAAO,CAAA;IACrB,OAAO,IAAI,MAAM,CAAA;IACjB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED;;GAEG;AACH,qBAAa,sBAAuB,YAAW,WAAW;IAK5C,OAAO,CAAC,eAAe;IAJnC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAEd,eAAe,EAAE,MAAM;IAM3C,UAAU,IAAI,OAAO;IASrB,OAAO,IAAI,MAAM;IAIjB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKhC,OAAO,CAAC,MAAM;CAOf;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAiC;IAEjD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IASvC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmB/D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGzC;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ"}
|
package/dist/sdk/rate.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limiting utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Token bucket rate limiter
|
|
6
|
+
*/
|
|
7
|
+
export class TokenBucketRateLimiter {
|
|
8
|
+
tokensPerSecond;
|
|
9
|
+
tokens;
|
|
10
|
+
lastRefill;
|
|
11
|
+
maxTokens;
|
|
12
|
+
constructor(tokensPerSecond) {
|
|
13
|
+
this.tokensPerSecond = tokensPerSecond;
|
|
14
|
+
this.maxTokens = tokensPerSecond;
|
|
15
|
+
this.tokens = tokensPerSecond;
|
|
16
|
+
this.lastRefill = Date.now();
|
|
17
|
+
}
|
|
18
|
+
tryAcquire() {
|
|
19
|
+
this.refill();
|
|
20
|
+
if (this.tokens >= 1) {
|
|
21
|
+
this.tokens -= 1;
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
getRate() {
|
|
27
|
+
return this.tokensPerSecond;
|
|
28
|
+
}
|
|
29
|
+
setRate(perSecond) {
|
|
30
|
+
this.tokensPerSecond = perSecond;
|
|
31
|
+
this.tokens = Math.min(this.tokens, perSecond);
|
|
32
|
+
}
|
|
33
|
+
refill() {
|
|
34
|
+
const now = Date.now();
|
|
35
|
+
const timePassed = (now - this.lastRefill) / 1000;
|
|
36
|
+
const tokensToAdd = timePassed * this.tokensPerSecond;
|
|
37
|
+
this.tokens = Math.min(this.tokens + tokensToAdd, this.maxTokens);
|
|
38
|
+
this.lastRefill = now;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Rate limited queue for different operation types
|
|
43
|
+
*/
|
|
44
|
+
export class RateLimitedQueue {
|
|
45
|
+
limiters = new Map();
|
|
46
|
+
setRate(key, perSecond) {
|
|
47
|
+
const limiter = this.limiters.get(key);
|
|
48
|
+
if (limiter) {
|
|
49
|
+
limiter.setRate(perSecond);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.limiters.set(key, new TokenBucketRateLimiter(perSecond));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async execute(key, fn) {
|
|
56
|
+
const limiter = this.limiters.get(key);
|
|
57
|
+
if (!limiter) {
|
|
58
|
+
return fn();
|
|
59
|
+
}
|
|
60
|
+
// レート制限のチェックとリトライ
|
|
61
|
+
let attempts = 0;
|
|
62
|
+
while (!limiter.tryAcquire()) {
|
|
63
|
+
attempts++;
|
|
64
|
+
if (attempts > 10) {
|
|
65
|
+
throw new Error(`Rate limit exceeded for ${key}`);
|
|
66
|
+
}
|
|
67
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
68
|
+
}
|
|
69
|
+
return fn();
|
|
70
|
+
}
|
|
71
|
+
getRate(key) {
|
|
72
|
+
return this.limiters.get(key)?.getRate();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Wrapper function for rate-limited operations
|
|
77
|
+
*/
|
|
78
|
+
export async function withRate(queue, key, fn) {
|
|
79
|
+
return queue.execute(key, fn);
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=rate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate.js","sourceRoot":"","sources":["../../src/sdk/rate.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for MetatellClient facade API
|
|
3
|
+
*/
|
|
4
|
+
export type Vec3 = {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
z: number;
|
|
8
|
+
};
|
|
9
|
+
export type Euler = {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
z: number;
|
|
13
|
+
};
|
|
14
|
+
export type User = {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string | null;
|
|
17
|
+
isBot?: boolean;
|
|
18
|
+
position?: Vec3;
|
|
19
|
+
rotation?: Euler;
|
|
20
|
+
};
|
|
21
|
+
export type BotInfo = {
|
|
22
|
+
name: string;
|
|
23
|
+
version: string;
|
|
24
|
+
roomId: string;
|
|
25
|
+
sessionId?: string;
|
|
26
|
+
};
|
|
27
|
+
export type AvatarAsset = {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
thumbnailUrl: string;
|
|
31
|
+
modelUrl: string;
|
|
32
|
+
tags?: string[];
|
|
33
|
+
};
|
|
34
|
+
export type Animation = {
|
|
35
|
+
id: string;
|
|
36
|
+
url?: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
loop?: boolean;
|
|
39
|
+
speed?: number;
|
|
40
|
+
duration?: number;
|
|
41
|
+
transitionDuration?: number;
|
|
42
|
+
};
|
|
43
|
+
export interface CreateClientOptions {
|
|
44
|
+
/**
|
|
45
|
+
* WebSocket server URL
|
|
46
|
+
* - Format: ws(s)://...
|
|
47
|
+
* - For Metatell domains (metatell.app, metatell-stg.app, metatell-dev.app),
|
|
48
|
+
* tenant subdomains are automatically removed.
|
|
49
|
+
* Example: https://urth.metatell-stg.app -> wss://metatell-stg.app
|
|
50
|
+
*/
|
|
51
|
+
serverUrl: string;
|
|
52
|
+
roomId: string;
|
|
53
|
+
token?: string;
|
|
54
|
+
username?: string;
|
|
55
|
+
avatarId?: string;
|
|
56
|
+
debug?: boolean;
|
|
57
|
+
logger?: 'silent' | 'info' | 'debug';
|
|
58
|
+
reconnect?: {
|
|
59
|
+
enabled?: boolean;
|
|
60
|
+
maxDelayMs?: number;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export type PcmInput = Int16Array | AsyncIterable<Int16Array> | NodeJS.ReadableStream;
|
|
64
|
+
export interface PcmInputOptions {
|
|
65
|
+
sampleRateHz: number;
|
|
66
|
+
channels: 1 | 2;
|
|
67
|
+
}
|
|
68
|
+
export interface PlaybackControls {
|
|
69
|
+
/** 現在の音声再生を即座に停止します。 */
|
|
70
|
+
stop(): Promise<void>;
|
|
71
|
+
/** 再生が完了したときに解決されるPromise */
|
|
72
|
+
finished: Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
export interface MessageEventData {
|
|
75
|
+
body?: string;
|
|
76
|
+
senderId?: string;
|
|
77
|
+
type?: string;
|
|
78
|
+
timestamp?: number;
|
|
79
|
+
}
|
|
80
|
+
export interface MetatellClientEvents {
|
|
81
|
+
connected: () => void;
|
|
82
|
+
disconnected: (reason?: string) => void;
|
|
83
|
+
error: (error: MetatellError) => void;
|
|
84
|
+
message: (data: MessageEventData) => void;
|
|
85
|
+
'chat-message': (message: {
|
|
86
|
+
from: User;
|
|
87
|
+
text: string;
|
|
88
|
+
mention?: {
|
|
89
|
+
sessionId: string;
|
|
90
|
+
name: string;
|
|
91
|
+
};
|
|
92
|
+
}) => void;
|
|
93
|
+
'user-join': (user: User) => void;
|
|
94
|
+
'user-leave': (user: User) => void;
|
|
95
|
+
}
|
|
96
|
+
export declare class MetatellError extends Error {
|
|
97
|
+
code: string;
|
|
98
|
+
cause?: unknown | undefined;
|
|
99
|
+
constructor(code: string, message: string, cause?: unknown | undefined);
|
|
100
|
+
}
|
|
101
|
+
export declare class AuthError extends MetatellError {
|
|
102
|
+
}
|
|
103
|
+
export declare class NetworkError extends MetatellError {
|
|
104
|
+
}
|
|
105
|
+
export declare class NotFoundError extends MetatellError {
|
|
106
|
+
}
|
|
107
|
+
export declare class RateLimitError extends MetatellError {
|
|
108
|
+
}
|
|
109
|
+
export declare class UnsupportedAudioFormatError extends MetatellError {
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core type definitions for MetatellClient facade API
|
|
3
|
+
*/
|
|
4
|
+
// Error class hierarchy
|
|
5
|
+
export class MetatellError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
cause;
|
|
8
|
+
constructor(code, message, cause) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.cause = cause;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class AuthError extends MetatellError {
|
|
15
|
+
}
|
|
16
|
+
export class NetworkError extends MetatellError {
|
|
17
|
+
}
|
|
18
|
+
export class NotFoundError extends MetatellError {
|
|
19
|
+
}
|
|
20
|
+
export class RateLimitError extends MetatellError {
|
|
21
|
+
}
|
|
22
|
+
export class UnsupportedAudioFormatError extends MetatellError {
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0FH,wBAAwB;AACxB,MAAM,OAAO,aAAc,SAAQ,KAAK;IAE7B;IAEA;IAHT,YACS,IAAY,EACnB,OAAe,EACR,KAAe;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAA;QAJP,SAAI,GAAJ,IAAI,CAAQ;QAEZ,UAAK,GAAL,KAAK,CAAU;IAGxB,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,aAAa;CAAG;AAC/C,MAAM,OAAO,YAAa,SAAQ,aAAa;CAAG;AAClD,MAAM,OAAO,aAAc,SAAQ,aAAa;CAAG;AACnD,MAAM,OAAO,cAAe,SAAQ,aAAa;CAAG;AACpD,MAAM,OAAO,2BAA4B,SAAQ,aAAa;CAAG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@metatell/bot-sdk",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc --build",
|
|
19
|
+
"clean": "rm -rf dist tsconfig.tsbuildinfo",
|
|
20
|
+
"test": "vitest"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@metatell/bot-core": "^0.0.1",
|
|
24
|
+
"@types/uuid": "^10.0.0"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"@types/node": "*",
|
|
28
|
+
"@types/ws": "*"
|
|
29
|
+
},
|
|
30
|
+
"license": "MIT",
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/phoenix": "^1.6.6"
|
|
33
|
+
}
|
|
34
|
+
}
|