atproto-mcp 0.1.0
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/LICENSE +22 -0
- package/README.md +293 -0
- package/dist/cli.d.ts +10 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +261 -0
- package/dist/cli.js.map +1 -0
- package/dist/health-check.d.ts +7 -0
- package/dist/health-check.d.ts.map +1 -0
- package/dist/health-check.js +57 -0
- package/dist/health-check.js.map +1 -0
- package/dist/index.d.ts +122 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +612 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +77 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +186 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +75 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +218 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/test/setup.d.ts +78 -0
- package/dist/test/setup.d.ts.map +1 -0
- package/dist/test/setup.js +138 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/tools/implementations/advanced-social-tools.d.ts +250 -0
- package/dist/tools/implementations/advanced-social-tools.d.ts.map +1 -0
- package/dist/tools/implementations/advanced-social-tools.js +380 -0
- package/dist/tools/implementations/advanced-social-tools.js.map +1 -0
- package/dist/tools/implementations/base-tool.d.ts +73 -0
- package/dist/tools/implementations/base-tool.d.ts.map +1 -0
- package/dist/tools/implementations/base-tool.js +225 -0
- package/dist/tools/implementations/base-tool.js.map +1 -0
- package/dist/tools/implementations/content-management-tools.d.ts +81 -0
- package/dist/tools/implementations/content-management-tools.d.ts.map +1 -0
- package/dist/tools/implementations/content-management-tools.js +236 -0
- package/dist/tools/implementations/content-management-tools.js.map +1 -0
- package/dist/tools/implementations/create-post-tool.d.ts +131 -0
- package/dist/tools/implementations/create-post-tool.d.ts.map +1 -0
- package/dist/tools/implementations/create-post-tool.js +182 -0
- package/dist/tools/implementations/create-post-tool.js.map +1 -0
- package/dist/tools/implementations/follow-user-tool.d.ts +69 -0
- package/dist/tools/implementations/follow-user-tool.d.ts.map +1 -0
- package/dist/tools/implementations/follow-user-tool.js +200 -0
- package/dist/tools/implementations/follow-user-tool.js.map +1 -0
- package/dist/tools/implementations/get-user-profile-tool.d.ts +61 -0
- package/dist/tools/implementations/get-user-profile-tool.d.ts.map +1 -0
- package/dist/tools/implementations/get-user-profile-tool.js +139 -0
- package/dist/tools/implementations/get-user-profile-tool.js.map +1 -0
- package/dist/tools/implementations/index.d.ts +22 -0
- package/dist/tools/implementations/index.d.ts.map +1 -0
- package/dist/tools/implementations/index.js +32 -0
- package/dist/tools/implementations/index.js.map +1 -0
- package/dist/tools/implementations/like-post-tool.d.ts +68 -0
- package/dist/tools/implementations/like-post-tool.d.ts.map +1 -0
- package/dist/tools/implementations/like-post-tool.js +184 -0
- package/dist/tools/implementations/like-post-tool.js.map +1 -0
- package/dist/tools/implementations/media-tools.d.ts +360 -0
- package/dist/tools/implementations/media-tools.d.ts.map +1 -0
- package/dist/tools/implementations/media-tools.js +444 -0
- package/dist/tools/implementations/media-tools.js.map +1 -0
- package/dist/tools/implementations/moderation-tools.d.ts +189 -0
- package/dist/tools/implementations/moderation-tools.d.ts.map +1 -0
- package/dist/tools/implementations/moderation-tools.js +289 -0
- package/dist/tools/implementations/moderation-tools.js.map +1 -0
- package/dist/tools/implementations/oauth-tools.d.ts +108 -0
- package/dist/tools/implementations/oauth-tools.d.ts.map +1 -0
- package/dist/tools/implementations/oauth-tools.js +183 -0
- package/dist/tools/implementations/oauth-tools.js.map +1 -0
- package/dist/tools/implementations/reply-to-post-tool.d.ts +52 -0
- package/dist/tools/implementations/reply-to-post-tool.d.ts.map +1 -0
- package/dist/tools/implementations/reply-to-post-tool.js +167 -0
- package/dist/tools/implementations/reply-to-post-tool.js.map +1 -0
- package/dist/tools/implementations/repost-tool.d.ts +76 -0
- package/dist/tools/implementations/repost-tool.d.ts.map +1 -0
- package/dist/tools/implementations/repost-tool.js +181 -0
- package/dist/tools/implementations/repost-tool.js.map +1 -0
- package/dist/tools/implementations/search-posts-tool.d.ts +95 -0
- package/dist/tools/implementations/search-posts-tool.d.ts.map +1 -0
- package/dist/tools/implementations/search-posts-tool.js +208 -0
- package/dist/tools/implementations/search-posts-tool.js.map +1 -0
- package/dist/tools/implementations/social-graph-tools.d.ts +119 -0
- package/dist/tools/implementations/social-graph-tools.d.ts.map +1 -0
- package/dist/tools/implementations/social-graph-tools.js +262 -0
- package/dist/tools/implementations/social-graph-tools.js.map +1 -0
- package/dist/tools/implementations/streaming-tools.d.ts +130 -0
- package/dist/tools/implementations/streaming-tools.d.ts.map +1 -0
- package/dist/tools/implementations/streaming-tools.js +241 -0
- package/dist/tools/implementations/streaming-tools.js.map +1 -0
- package/dist/tools/implementations/timeline-tools.d.ts +69 -0
- package/dist/tools/implementations/timeline-tools.d.ts.map +1 -0
- package/dist/tools/implementations/timeline-tools.js +194 -0
- package/dist/tools/implementations/timeline-tools.js.map +1 -0
- package/dist/tools/index.d.ts +23 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +73 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/types/index.d.ts +242 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +73 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/atp-client.d.ts +109 -0
- package/dist/utils/atp-client.d.ts.map +1 -0
- package/dist/utils/atp-client.js +451 -0
- package/dist/utils/atp-client.js.map +1 -0
- package/dist/utils/config.d.ts +74 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +311 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/firehose-client.d.ts +96 -0
- package/dist/utils/firehose-client.d.ts.map +1 -0
- package/dist/utils/firehose-client.js +252 -0
- package/dist/utils/firehose-client.js.map +1 -0
- package/dist/utils/logger.d.ts +74 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +142 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/oauth-client.d.ts +61 -0
- package/dist/utils/oauth-client.d.ts.map +1 -0
- package/dist/utils/oauth-client.js +224 -0
- package/dist/utils/oauth-client.js.map +1 -0
- package/dist/utils/performance.d.ts +102 -0
- package/dist/utils/performance.d.ts.map +1 -0
- package/dist/utils/performance.js +302 -0
- package/dist/utils/performance.js.map +1 -0
- package/dist/utils/security.d.ts +154 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +358 -0
- package/dist/utils/security.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firehose-client.js","sourceRoot":"","sources":["../../src/utils/firehose-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logging utility for the AT Protocol MCP Server
|
|
3
|
+
*/
|
|
4
|
+
export declare enum LogLevel {
|
|
5
|
+
DEBUG = 0,
|
|
6
|
+
INFO = 1,
|
|
7
|
+
WARN = 2,
|
|
8
|
+
ERROR = 3
|
|
9
|
+
}
|
|
10
|
+
export interface ILogEntry {
|
|
11
|
+
timestamp: string;
|
|
12
|
+
level: LogLevel;
|
|
13
|
+
component: string;
|
|
14
|
+
message: string;
|
|
15
|
+
data?: unknown;
|
|
16
|
+
error?: Error;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Logger class with structured logging support
|
|
20
|
+
*/
|
|
21
|
+
export declare class Logger {
|
|
22
|
+
private component;
|
|
23
|
+
private logLevel;
|
|
24
|
+
constructor(component: string, logLevel?: LogLevel);
|
|
25
|
+
/**
|
|
26
|
+
* Get log level from environment variable
|
|
27
|
+
*/
|
|
28
|
+
private getLogLevelFromEnv;
|
|
29
|
+
/**
|
|
30
|
+
* Create a log entry
|
|
31
|
+
*/
|
|
32
|
+
private createLogEntry;
|
|
33
|
+
/**
|
|
34
|
+
* Format log entry for output
|
|
35
|
+
*/
|
|
36
|
+
private formatLogEntry;
|
|
37
|
+
/**
|
|
38
|
+
* Log a message at the specified level
|
|
39
|
+
*/
|
|
40
|
+
private log;
|
|
41
|
+
/**
|
|
42
|
+
* Log debug message
|
|
43
|
+
*/
|
|
44
|
+
debug(message: string, data?: unknown): void;
|
|
45
|
+
/**
|
|
46
|
+
* Log info message
|
|
47
|
+
*/
|
|
48
|
+
info(message: string, data?: unknown): void;
|
|
49
|
+
/**
|
|
50
|
+
* Log warning message
|
|
51
|
+
*/
|
|
52
|
+
warn(message: string, data?: unknown, error?: Error): void;
|
|
53
|
+
/**
|
|
54
|
+
* Log error message
|
|
55
|
+
*/
|
|
56
|
+
error(message: string, error?: Error | unknown, data?: unknown): void;
|
|
57
|
+
/**
|
|
58
|
+
* Create a child logger with additional context
|
|
59
|
+
*/
|
|
60
|
+
child(childComponent: string): Logger;
|
|
61
|
+
/**
|
|
62
|
+
* Set log level
|
|
63
|
+
*/
|
|
64
|
+
setLogLevel(level: LogLevel): void;
|
|
65
|
+
/**
|
|
66
|
+
* Get current log level
|
|
67
|
+
*/
|
|
68
|
+
getLogLevel(): LogLevel;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Default logger instance
|
|
72
|
+
*/
|
|
73
|
+
export declare const logger: Logger;
|
|
74
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAW;gBAEf,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,QAAwB;IAKjE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,OAAO,CAAC,GAAG;IAgBX;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAInD;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAIlD;;OAEG;IACI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAIjE;;OAEG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAK5E;;OAEG;IACI,KAAK,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAI5C;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIzC;;OAEG;IACI,WAAW,IAAI,QAAQ;CAG/B;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAuB,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logging utility for the AT Protocol MCP Server
|
|
3
|
+
*/
|
|
4
|
+
export var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
7
|
+
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
8
|
+
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
9
|
+
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
10
|
+
})(LogLevel || (LogLevel = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Logger class with structured logging support
|
|
13
|
+
*/
|
|
14
|
+
export class Logger {
|
|
15
|
+
component;
|
|
16
|
+
logLevel;
|
|
17
|
+
constructor(component, logLevel = LogLevel.INFO) {
|
|
18
|
+
this.component = component;
|
|
19
|
+
this.logLevel = this.getLogLevelFromEnv() ?? logLevel;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get log level from environment variable
|
|
23
|
+
*/
|
|
24
|
+
getLogLevelFromEnv() {
|
|
25
|
+
const envLevel = process.env['LOG_LEVEL']?.toUpperCase();
|
|
26
|
+
switch (envLevel) {
|
|
27
|
+
case 'DEBUG':
|
|
28
|
+
return LogLevel.DEBUG;
|
|
29
|
+
case 'INFO':
|
|
30
|
+
return LogLevel.INFO;
|
|
31
|
+
case 'WARN':
|
|
32
|
+
return LogLevel.WARN;
|
|
33
|
+
case 'ERROR':
|
|
34
|
+
return LogLevel.ERROR;
|
|
35
|
+
default:
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Create a log entry
|
|
41
|
+
*/
|
|
42
|
+
createLogEntry(level, message, data, error) {
|
|
43
|
+
const entry = {
|
|
44
|
+
timestamp: new Date().toISOString(),
|
|
45
|
+
level,
|
|
46
|
+
component: this.component,
|
|
47
|
+
message,
|
|
48
|
+
};
|
|
49
|
+
if (data !== undefined) {
|
|
50
|
+
entry.data = data;
|
|
51
|
+
}
|
|
52
|
+
if (error !== undefined) {
|
|
53
|
+
entry.error = error;
|
|
54
|
+
}
|
|
55
|
+
return entry;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Format log entry for output
|
|
59
|
+
*/
|
|
60
|
+
formatLogEntry(entry) {
|
|
61
|
+
const levelName = LogLevel[entry.level];
|
|
62
|
+
const timestamp = entry.timestamp;
|
|
63
|
+
const component = entry.component;
|
|
64
|
+
const message = entry.message;
|
|
65
|
+
let formatted = `[${timestamp}] ${levelName.padEnd(5)} [${component}] ${message}`;
|
|
66
|
+
if (entry.data) {
|
|
67
|
+
formatted += `\n Data: ${JSON.stringify(entry.data, null, 2)}`;
|
|
68
|
+
}
|
|
69
|
+
if (entry.error) {
|
|
70
|
+
formatted += `\n Error: ${entry.error.message}`;
|
|
71
|
+
if (entry.error.stack) {
|
|
72
|
+
formatted += `\n Stack: ${entry.error.stack}`;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return formatted;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Log a message at the specified level
|
|
79
|
+
*/
|
|
80
|
+
log(level, message, data, error) {
|
|
81
|
+
if (level < this.logLevel) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const entry = this.createLogEntry(level, message, data, error);
|
|
85
|
+
const formatted = this.formatLogEntry(entry);
|
|
86
|
+
// Output to appropriate stream
|
|
87
|
+
if (level >= LogLevel.ERROR) {
|
|
88
|
+
console.error(formatted);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
console.log(formatted);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Log debug message
|
|
96
|
+
*/
|
|
97
|
+
debug(message, data) {
|
|
98
|
+
this.log(LogLevel.DEBUG, message, data);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Log info message
|
|
102
|
+
*/
|
|
103
|
+
info(message, data) {
|
|
104
|
+
this.log(LogLevel.INFO, message, data);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Log warning message
|
|
108
|
+
*/
|
|
109
|
+
warn(message, data, error) {
|
|
110
|
+
this.log(LogLevel.WARN, message, data, error);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Log error message
|
|
114
|
+
*/
|
|
115
|
+
error(message, error, data) {
|
|
116
|
+
const errorObj = error instanceof Error ? error : new Error(String(error));
|
|
117
|
+
this.log(LogLevel.ERROR, message, data, errorObj);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Create a child logger with additional context
|
|
121
|
+
*/
|
|
122
|
+
child(childComponent) {
|
|
123
|
+
return new Logger(`${this.component}:${childComponent}`, this.logLevel);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Set log level
|
|
127
|
+
*/
|
|
128
|
+
setLogLevel(level) {
|
|
129
|
+
this.logLevel = level;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get current log level
|
|
133
|
+
*/
|
|
134
|
+
getLogLevel() {
|
|
135
|
+
return this.logLevel;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Default logger instance
|
|
140
|
+
*/
|
|
141
|
+
export const logger = new Logger('AtpMcp');
|
|
142
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Client for AT Protocol authentication
|
|
3
|
+
*/
|
|
4
|
+
import { type IAtpConfig } from '../types/index.js';
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
export interface IOAuthSession {
|
|
7
|
+
accessToken: string;
|
|
8
|
+
refreshToken: string;
|
|
9
|
+
did: string;
|
|
10
|
+
handle: string;
|
|
11
|
+
expiresAt: Date;
|
|
12
|
+
}
|
|
13
|
+
export interface IOAuthAuthorizationRequest {
|
|
14
|
+
authUrl: string;
|
|
15
|
+
state: string;
|
|
16
|
+
codeVerifier: string;
|
|
17
|
+
codeChallenge: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class AtpOAuthClient extends EventEmitter {
|
|
20
|
+
private logger;
|
|
21
|
+
private config;
|
|
22
|
+
private pendingAuthorizations;
|
|
23
|
+
constructor(config: IAtpConfig);
|
|
24
|
+
/**
|
|
25
|
+
* Start OAuth authorization flow
|
|
26
|
+
*/
|
|
27
|
+
startAuthorization(identifier: string): Promise<IOAuthAuthorizationRequest>;
|
|
28
|
+
/**
|
|
29
|
+
* Handle OAuth callback and exchange code for tokens
|
|
30
|
+
*/
|
|
31
|
+
handleCallback(code: string, state: string): Promise<IOAuthSession>;
|
|
32
|
+
/**
|
|
33
|
+
* Refresh OAuth tokens
|
|
34
|
+
*/
|
|
35
|
+
refreshTokens(refreshToken: string): Promise<IOAuthSession>;
|
|
36
|
+
/**
|
|
37
|
+
* Revoke OAuth tokens
|
|
38
|
+
*/
|
|
39
|
+
revokeTokens(accessToken: string, refreshToken?: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Generate PKCE code verifier
|
|
42
|
+
*/
|
|
43
|
+
private generateCodeVerifier;
|
|
44
|
+
/**
|
|
45
|
+
* Generate PKCE code challenge
|
|
46
|
+
*/
|
|
47
|
+
private generateCodeChallenge;
|
|
48
|
+
/**
|
|
49
|
+
* Generate random state parameter
|
|
50
|
+
*/
|
|
51
|
+
private generateState;
|
|
52
|
+
/**
|
|
53
|
+
* Clean up expired authorization requests
|
|
54
|
+
*/
|
|
55
|
+
private cleanupExpiredAuthorizations;
|
|
56
|
+
/**
|
|
57
|
+
* Get pending authorization count (for monitoring)
|
|
58
|
+
*/
|
|
59
|
+
getPendingAuthorizationCount(): number;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=oauth-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-client.d.ts","sourceRoot":"","sources":["../../src/utils/oauth-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,qBAAqB,CAMzB;gBAEQ,MAAM,EAAE,UAAU;IAe9B;;OAEG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA8CjF;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAuDzE;;OAEG;IACG,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAuCjE;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB7E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAsBpC;;OAEG;IACH,4BAA4B,IAAI,MAAM;CAGvC"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Client for AT Protocol authentication
|
|
3
|
+
*/
|
|
4
|
+
// Note: @atproto/oauth-client-node doesn't exist yet, this is a mock implementation
|
|
5
|
+
// In production, use the actual AT Protocol OAuth client when available
|
|
6
|
+
import { AuthenticationError } from '../types/index.js';
|
|
7
|
+
import { Logger } from './logger.js';
|
|
8
|
+
import crypto from 'crypto';
|
|
9
|
+
import { EventEmitter } from 'events';
|
|
10
|
+
export class AtpOAuthClient extends EventEmitter {
|
|
11
|
+
logger;
|
|
12
|
+
config;
|
|
13
|
+
pendingAuthorizations = new Map();
|
|
14
|
+
constructor(config) {
|
|
15
|
+
super();
|
|
16
|
+
this.logger = new Logger('AtpOAuthClient');
|
|
17
|
+
this.config = config;
|
|
18
|
+
if (!config.clientId || !config.clientSecret) {
|
|
19
|
+
throw new AuthenticationError('OAuth requires clientId and clientSecret', undefined, {
|
|
20
|
+
authMethod: 'oauth',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
// Clean up expired authorization requests every 10 minutes
|
|
24
|
+
setInterval(() => this.cleanupExpiredAuthorizations(), 10 * 60 * 1000);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Start OAuth authorization flow
|
|
28
|
+
*/
|
|
29
|
+
async startAuthorization(identifier) {
|
|
30
|
+
try {
|
|
31
|
+
this.logger.info('Starting OAuth authorization flow', { identifier });
|
|
32
|
+
// Generate PKCE parameters
|
|
33
|
+
const codeVerifier = this.generateCodeVerifier();
|
|
34
|
+
const codeChallenge = this.generateCodeChallenge(codeVerifier);
|
|
35
|
+
const state = this.generateState();
|
|
36
|
+
// Store the code verifier for later use
|
|
37
|
+
this.pendingAuthorizations.set(state, {
|
|
38
|
+
codeVerifier,
|
|
39
|
+
timestamp: Date.now(),
|
|
40
|
+
});
|
|
41
|
+
// Generate authorization URL (mock implementation)
|
|
42
|
+
const baseUrl = this.config.service.replace(/^https?:\/\//, '');
|
|
43
|
+
const authUrl = `https://${baseUrl}/oauth/authorize?` +
|
|
44
|
+
`client_id=${encodeURIComponent(this.config.clientId)}&` +
|
|
45
|
+
`redirect_uri=${encodeURIComponent(this.config.redirectUri ?? 'http://localhost:3000/oauth/callback')}&` +
|
|
46
|
+
`response_type=code&` +
|
|
47
|
+
`scope=atproto&` +
|
|
48
|
+
`state=${encodeURIComponent(state)}&` +
|
|
49
|
+
`code_challenge=${encodeURIComponent(codeChallenge)}&` +
|
|
50
|
+
`code_challenge_method=S256`;
|
|
51
|
+
this.logger.info('OAuth authorization URL generated', {
|
|
52
|
+
identifier,
|
|
53
|
+
state: `${state.substring(0, 8)}...`,
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
authUrl,
|
|
57
|
+
state,
|
|
58
|
+
codeVerifier,
|
|
59
|
+
codeChallenge,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this.logger.error('OAuth authorization failed', error);
|
|
64
|
+
throw new AuthenticationError('Failed to start OAuth authorization flow', error, {
|
|
65
|
+
identifier,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Handle OAuth callback and exchange code for tokens
|
|
71
|
+
*/
|
|
72
|
+
async handleCallback(code, state) {
|
|
73
|
+
try {
|
|
74
|
+
this.logger.info('Handling OAuth callback', {
|
|
75
|
+
state: `${state.substring(0, 8)}...`,
|
|
76
|
+
code: `${code.substring(0, 10)}...`,
|
|
77
|
+
});
|
|
78
|
+
// Retrieve the stored code verifier
|
|
79
|
+
const pending = this.pendingAuthorizations.get(state);
|
|
80
|
+
if (!pending) {
|
|
81
|
+
throw new AuthenticationError('Invalid or expired OAuth state parameter', undefined, {
|
|
82
|
+
state: `${state.substring(0, 8)}...`,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// Clean up the pending authorization
|
|
86
|
+
this.pendingAuthorizations.delete(state);
|
|
87
|
+
// Exchange authorization code for tokens (mock implementation)
|
|
88
|
+
// In a real implementation, this would make an HTTP request to the token endpoint
|
|
89
|
+
const tokenResponse = {
|
|
90
|
+
accessJwt: `mock_access_token_${Date.now()}`,
|
|
91
|
+
refreshJwt: `mock_refresh_token_${Date.now()}`,
|
|
92
|
+
did: 'did:plc:mock123',
|
|
93
|
+
handle: 'mock.bsky.social',
|
|
94
|
+
expiresIn: 3600,
|
|
95
|
+
};
|
|
96
|
+
const session = {
|
|
97
|
+
accessToken: tokenResponse.accessJwt,
|
|
98
|
+
refreshToken: tokenResponse.refreshJwt,
|
|
99
|
+
did: tokenResponse.did,
|
|
100
|
+
handle: tokenResponse.handle,
|
|
101
|
+
expiresAt: new Date(Date.now() + (tokenResponse.expiresIn ?? 3600) * 1000),
|
|
102
|
+
};
|
|
103
|
+
this.logger.info('OAuth authentication successful', {
|
|
104
|
+
did: session.did,
|
|
105
|
+
handle: session.handle,
|
|
106
|
+
expiresAt: session.expiresAt.toISOString(),
|
|
107
|
+
});
|
|
108
|
+
// Emit session event
|
|
109
|
+
this.emit('session', session);
|
|
110
|
+
return session;
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
this.logger.error('OAuth callback failed', error);
|
|
114
|
+
throw new AuthenticationError('OAuth callback processing failed', error, {
|
|
115
|
+
code: `${code.substring(0, 10)}...`,
|
|
116
|
+
state: `${state.substring(0, 8)}...`,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Refresh OAuth tokens
|
|
122
|
+
*/
|
|
123
|
+
async refreshTokens(refreshToken) {
|
|
124
|
+
try {
|
|
125
|
+
this.logger.info('Refreshing OAuth tokens');
|
|
126
|
+
// Refresh tokens (mock implementation)
|
|
127
|
+
const tokenResponse = {
|
|
128
|
+
accessJwt: `mock_refreshed_access_token_${Date.now()}`,
|
|
129
|
+
refreshJwt: `mock_refreshed_refresh_token_${Date.now()}`,
|
|
130
|
+
did: 'did:plc:mock123',
|
|
131
|
+
handle: 'mock.bsky.social',
|
|
132
|
+
expiresIn: 3600,
|
|
133
|
+
};
|
|
134
|
+
const session = {
|
|
135
|
+
accessToken: tokenResponse.accessJwt,
|
|
136
|
+
refreshToken: tokenResponse.refreshJwt ?? refreshToken, // Keep old refresh token if new one not provided
|
|
137
|
+
did: tokenResponse.did,
|
|
138
|
+
handle: tokenResponse.handle,
|
|
139
|
+
expiresAt: new Date(Date.now() + (tokenResponse.expiresIn ?? 3600) * 1000),
|
|
140
|
+
};
|
|
141
|
+
this.logger.info('OAuth tokens refreshed successfully', {
|
|
142
|
+
did: session.did,
|
|
143
|
+
handle: session.handle,
|
|
144
|
+
expiresAt: session.expiresAt.toISOString(),
|
|
145
|
+
});
|
|
146
|
+
// Emit session event
|
|
147
|
+
this.emit('session', session);
|
|
148
|
+
return session;
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
this.logger.error('OAuth token refresh failed', error);
|
|
152
|
+
throw new AuthenticationError('Failed to refresh OAuth tokens', error, {
|
|
153
|
+
refreshToken: `${refreshToken.substring(0, 10)}...`,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Revoke OAuth tokens
|
|
159
|
+
*/
|
|
160
|
+
async revokeTokens(accessToken, refreshToken) {
|
|
161
|
+
try {
|
|
162
|
+
this.logger.info('Revoking OAuth tokens');
|
|
163
|
+
// Revoke tokens (mock implementation)
|
|
164
|
+
// In a real implementation, this would make HTTP requests to revoke the tokens
|
|
165
|
+
this.logger.debug('Mock token revocation', {
|
|
166
|
+
accessToken: `${accessToken.substring(0, 10)}...`,
|
|
167
|
+
hasRefreshToken: !!refreshToken,
|
|
168
|
+
});
|
|
169
|
+
this.logger.info('OAuth tokens revoked successfully');
|
|
170
|
+
// Emit revocation event
|
|
171
|
+
this.emit('revoked');
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
this.logger.error('OAuth token revocation failed', error);
|
|
175
|
+
throw new AuthenticationError('Failed to revoke OAuth tokens', error);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Generate PKCE code verifier
|
|
180
|
+
*/
|
|
181
|
+
generateCodeVerifier() {
|
|
182
|
+
return crypto.randomBytes(32).toString('base64url');
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Generate PKCE code challenge
|
|
186
|
+
*/
|
|
187
|
+
generateCodeChallenge(codeVerifier) {
|
|
188
|
+
return crypto.createHash('sha256').update(codeVerifier).digest('base64url');
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Generate random state parameter
|
|
192
|
+
*/
|
|
193
|
+
generateState() {
|
|
194
|
+
return crypto.randomBytes(16).toString('base64url');
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Clean up expired authorization requests
|
|
198
|
+
*/
|
|
199
|
+
cleanupExpiredAuthorizations() {
|
|
200
|
+
const now = Date.now();
|
|
201
|
+
const expiredStates = [];
|
|
202
|
+
for (const [state, { timestamp }] of this.pendingAuthorizations) {
|
|
203
|
+
// Remove authorizations older than 30 minutes
|
|
204
|
+
if (now - timestamp > 30 * 60 * 1000) {
|
|
205
|
+
expiredStates.push(state);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
for (const state of expiredStates) {
|
|
209
|
+
this.pendingAuthorizations.delete(state);
|
|
210
|
+
}
|
|
211
|
+
if (expiredStates.length > 0) {
|
|
212
|
+
this.logger.debug('Cleaned up expired OAuth authorizations', {
|
|
213
|
+
count: expiredStates.length,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Get pending authorization count (for monitoring)
|
|
219
|
+
*/
|
|
220
|
+
getPendingAuthorizationCount() {
|
|
221
|
+
return this.pendingAuthorizations.size;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=oauth-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-client.js","sourceRoot":"","sources":["../../src/utils/oauth-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance optimization utilities for production deployment
|
|
3
|
+
*/
|
|
4
|
+
import type { Logger } from './logger.js';
|
|
5
|
+
export interface IConnectionPoolConfig {
|
|
6
|
+
maxConnections: number;
|
|
7
|
+
minConnections: number;
|
|
8
|
+
acquireTimeoutMs: number;
|
|
9
|
+
idleTimeoutMs: number;
|
|
10
|
+
maxRetries: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ICacheConfig {
|
|
13
|
+
maxSize: number;
|
|
14
|
+
ttlMs: number;
|
|
15
|
+
cleanupIntervalMs: number;
|
|
16
|
+
}
|
|
17
|
+
export interface IPerformanceMetrics {
|
|
18
|
+
connectionPoolSize: number;
|
|
19
|
+
activeConnections: number;
|
|
20
|
+
cacheHitRate: number;
|
|
21
|
+
cacheSize: number;
|
|
22
|
+
memoryUsage: NodeJS.MemoryUsage;
|
|
23
|
+
uptime: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Simple connection pool for managing AT Protocol connections
|
|
27
|
+
*/
|
|
28
|
+
export declare class ConnectionPool {
|
|
29
|
+
private connections;
|
|
30
|
+
private activeConnections;
|
|
31
|
+
private config;
|
|
32
|
+
private logger;
|
|
33
|
+
constructor(config: IConnectionPoolConfig, logger: Logger);
|
|
34
|
+
acquire(key: string): Promise<any>;
|
|
35
|
+
release(key: string): void;
|
|
36
|
+
cleanup(): void;
|
|
37
|
+
getMetrics(): {
|
|
38
|
+
totalConnections: number;
|
|
39
|
+
activeConnections: number;
|
|
40
|
+
idleConnections: number;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* LRU Cache implementation for caching API responses
|
|
45
|
+
*/
|
|
46
|
+
export declare class LRUCache<T> {
|
|
47
|
+
private cache;
|
|
48
|
+
private config;
|
|
49
|
+
private logger;
|
|
50
|
+
private hits;
|
|
51
|
+
private misses;
|
|
52
|
+
constructor(config: ICacheConfig, logger: Logger);
|
|
53
|
+
get(key: string): T | undefined;
|
|
54
|
+
set(key: string, value: T): void;
|
|
55
|
+
delete(key: string): boolean;
|
|
56
|
+
clear(): void;
|
|
57
|
+
private evictLRU;
|
|
58
|
+
private cleanup;
|
|
59
|
+
getMetrics(): {
|
|
60
|
+
size: number;
|
|
61
|
+
hits: number;
|
|
62
|
+
misses: number;
|
|
63
|
+
hitRate: number;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* WebSocket connection manager for efficient streaming
|
|
68
|
+
*/
|
|
69
|
+
export declare class WebSocketManager {
|
|
70
|
+
private connections;
|
|
71
|
+
private reconnectAttempts;
|
|
72
|
+
private logger;
|
|
73
|
+
private maxReconnectAttempts;
|
|
74
|
+
private reconnectDelay;
|
|
75
|
+
constructor(logger: Logger);
|
|
76
|
+
connect(url: string, key: string): Promise<WebSocket>;
|
|
77
|
+
private handleReconnect;
|
|
78
|
+
disconnect(key: string): void;
|
|
79
|
+
disconnectAll(): void;
|
|
80
|
+
getMetrics(): {
|
|
81
|
+
activeConnections: number;
|
|
82
|
+
reconnectAttempts: number;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Performance monitor for tracking system metrics
|
|
87
|
+
*/
|
|
88
|
+
export declare class PerformanceMonitor {
|
|
89
|
+
private logger;
|
|
90
|
+
private startTime;
|
|
91
|
+
private connectionPool?;
|
|
92
|
+
private cache?;
|
|
93
|
+
private wsManager?;
|
|
94
|
+
constructor(logger: Logger);
|
|
95
|
+
setConnectionPool(pool: ConnectionPool): void;
|
|
96
|
+
setCache(cache: LRUCache<any>): void;
|
|
97
|
+
setWebSocketManager(wsManager: WebSocketManager): void;
|
|
98
|
+
getMetrics(): IPerformanceMetrics;
|
|
99
|
+
logMetrics(): void;
|
|
100
|
+
startPeriodicLogging(intervalMs?: number): NodeJS.Timeout;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=performance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/utils/performance.ts"],"names":[],"mappings":"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"}
|