telegram-ssh-bot 2.0.0 → 2.2.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.
Files changed (184) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -22
  3. package/deploy/.env.example +86 -0
  4. package/dist/config/index.d.ts +68 -0
  5. package/dist/config/index.d.ts.map +1 -0
  6. package/dist/config/index.js +315 -0
  7. package/dist/config/index.js.map +1 -0
  8. package/dist/config/schema.d.ts +6 -0
  9. package/dist/config/schema.d.ts.map +1 -0
  10. package/dist/config/schema.js +50 -0
  11. package/dist/config/schema.js.map +1 -0
  12. package/dist/core/Bot.d.ts +91 -0
  13. package/dist/core/Bot.d.ts.map +1 -0
  14. package/dist/core/Bot.js +263 -0
  15. package/dist/core/Bot.js.map +1 -0
  16. package/dist/core/ConnectionPool.d.ts +125 -0
  17. package/dist/core/ConnectionPool.d.ts.map +1 -0
  18. package/dist/core/ConnectionPool.js +397 -0
  19. package/dist/core/ConnectionPool.js.map +1 -0
  20. package/dist/core/SSHClient.d.ts +112 -0
  21. package/dist/core/SSHClient.d.ts.map +1 -0
  22. package/dist/core/SSHClient.js +367 -0
  23. package/dist/core/SSHClient.js.map +1 -0
  24. package/dist/core/ServerManager.d.ts +80 -0
  25. package/dist/core/ServerManager.d.ts.map +1 -0
  26. package/dist/core/ServerManager.js +207 -0
  27. package/dist/core/ServerManager.js.map +1 -0
  28. package/dist/core/index.d.ts +8 -0
  29. package/dist/core/index.d.ts.map +1 -0
  30. package/dist/core/index.js +8 -0
  31. package/dist/core/index.js.map +1 -0
  32. package/dist/errors/AuthError.d.ts +30 -0
  33. package/dist/errors/AuthError.d.ts.map +1 -0
  34. package/dist/errors/AuthError.js +35 -0
  35. package/dist/errors/AuthError.js.map +1 -0
  36. package/dist/errors/BaseError.d.ts +17 -0
  37. package/dist/errors/BaseError.d.ts.map +1 -0
  38. package/dist/errors/BaseError.js +34 -0
  39. package/dist/errors/BaseError.js.map +1 -0
  40. package/dist/errors/ConfigurationError.d.ts +24 -0
  41. package/dist/errors/ConfigurationError.d.ts.map +1 -0
  42. package/dist/errors/ConfigurationError.js +24 -0
  43. package/dist/errors/ConfigurationError.js.map +1 -0
  44. package/dist/errors/PoolError.d.ts +21 -0
  45. package/dist/errors/PoolError.d.ts.map +1 -0
  46. package/dist/errors/PoolError.js +30 -0
  47. package/dist/errors/PoolError.js.map +1 -0
  48. package/dist/errors/SSHError.d.ts +24 -0
  49. package/dist/errors/SSHError.d.ts.map +1 -0
  50. package/dist/errors/SSHError.js +38 -0
  51. package/dist/errors/SSHError.js.map +1 -0
  52. package/dist/errors/StorageError.d.ts +24 -0
  53. package/dist/errors/StorageError.d.ts.map +1 -0
  54. package/dist/errors/StorageError.js +35 -0
  55. package/dist/errors/StorageError.js.map +1 -0
  56. package/dist/errors/ValidationError.d.ts +29 -0
  57. package/dist/errors/ValidationError.d.ts.map +1 -0
  58. package/dist/errors/ValidationError.js +35 -0
  59. package/dist/errors/ValidationError.js.map +1 -0
  60. package/dist/errors/index.d.ts +11 -0
  61. package/dist/errors/index.d.ts.map +1 -0
  62. package/dist/errors/index.js +18 -0
  63. package/dist/errors/index.js.map +1 -0
  64. package/dist/handlers/BaseHandler.d.ts +50 -0
  65. package/dist/handlers/BaseHandler.d.ts.map +1 -0
  66. package/dist/handlers/BaseHandler.js +87 -0
  67. package/dist/handlers/BaseHandler.js.map +1 -0
  68. package/dist/handlers/CommandHandler.d.ts +23 -0
  69. package/dist/handlers/CommandHandler.d.ts.map +1 -0
  70. package/dist/handlers/CommandHandler.js +99 -0
  71. package/dist/handlers/CommandHandler.js.map +1 -0
  72. package/dist/handlers/HealthHandler.d.ts +25 -0
  73. package/dist/handlers/HealthHandler.d.ts.map +1 -0
  74. package/dist/handlers/HealthHandler.js +51 -0
  75. package/dist/handlers/HealthHandler.js.map +1 -0
  76. package/dist/handlers/HelpHandler.d.ts +32 -0
  77. package/dist/handlers/HelpHandler.d.ts.map +1 -0
  78. package/dist/handlers/HelpHandler.js +76 -0
  79. package/dist/handlers/HelpHandler.js.map +1 -0
  80. package/dist/handlers/ServerHandler.d.ts +72 -0
  81. package/dist/handlers/ServerHandler.d.ts.map +1 -0
  82. package/dist/handlers/ServerHandler.js +272 -0
  83. package/dist/handlers/ServerHandler.js.map +1 -0
  84. package/dist/handlers/index.d.ts +9 -0
  85. package/dist/handlers/index.d.ts.map +1 -0
  86. package/dist/handlers/index.js +9 -0
  87. package/dist/handlers/index.js.map +1 -0
  88. package/dist/index.d.ts +10 -0
  89. package/dist/index.d.ts.map +1 -0
  90. package/dist/index.js +348 -0
  91. package/dist/index.js.map +1 -0
  92. package/dist/middleware/AuthMiddleware.d.ts +28 -0
  93. package/dist/middleware/AuthMiddleware.d.ts.map +1 -0
  94. package/dist/middleware/AuthMiddleware.js +49 -0
  95. package/dist/middleware/AuthMiddleware.js.map +1 -0
  96. package/dist/middleware/RateLimitMiddleware.d.ts +23 -0
  97. package/dist/middleware/RateLimitMiddleware.d.ts.map +1 -0
  98. package/dist/middleware/RateLimitMiddleware.js +34 -0
  99. package/dist/middleware/RateLimitMiddleware.js.map +1 -0
  100. package/dist/middleware/index.d.ts +6 -0
  101. package/dist/middleware/index.d.ts.map +1 -0
  102. package/dist/middleware/index.js +6 -0
  103. package/dist/middleware/index.js.map +1 -0
  104. package/dist/services/BackupService.d.ts +119 -0
  105. package/dist/services/BackupService.d.ts.map +1 -0
  106. package/dist/services/BackupService.js +313 -0
  107. package/dist/services/BackupService.js.map +1 -0
  108. package/dist/services/CryptoService.d.ts +37 -0
  109. package/dist/services/CryptoService.d.ts.map +1 -0
  110. package/dist/services/CryptoService.js +108 -0
  111. package/dist/services/CryptoService.js.map +1 -0
  112. package/dist/services/HealthService.d.ts +126 -0
  113. package/dist/services/HealthService.d.ts.map +1 -0
  114. package/dist/services/HealthService.js +213 -0
  115. package/dist/services/HealthService.js.map +1 -0
  116. package/dist/services/LoggingService.d.ts +115 -0
  117. package/dist/services/LoggingService.d.ts.map +1 -0
  118. package/dist/services/LoggingService.js +334 -0
  119. package/dist/services/LoggingService.js.map +1 -0
  120. package/dist/services/MonitoringService.d.ts +119 -0
  121. package/dist/services/MonitoringService.d.ts.map +1 -0
  122. package/dist/services/MonitoringService.js +267 -0
  123. package/dist/services/MonitoringService.js.map +1 -0
  124. package/dist/services/NotificationService.d.ts +132 -0
  125. package/dist/services/NotificationService.d.ts.map +1 -0
  126. package/dist/services/NotificationService.js +297 -0
  127. package/dist/services/NotificationService.js.map +1 -0
  128. package/dist/services/RateLimiter.d.ts +51 -0
  129. package/dist/services/RateLimiter.d.ts.map +1 -0
  130. package/dist/services/RateLimiter.js +141 -0
  131. package/dist/services/RateLimiter.js.map +1 -0
  132. package/dist/services/ValidationService.d.ts +49 -0
  133. package/dist/services/ValidationService.d.ts.map +1 -0
  134. package/dist/services/ValidationService.js +158 -0
  135. package/dist/services/ValidationService.js.map +1 -0
  136. package/dist/services/index.d.ts +12 -0
  137. package/dist/services/index.d.ts.map +1 -0
  138. package/dist/services/index.js +12 -0
  139. package/dist/services/index.js.map +1 -0
  140. package/dist/types/Bot.d.ts +63 -0
  141. package/dist/types/Bot.d.ts.map +1 -0
  142. package/dist/types/Bot.js +5 -0
  143. package/dist/types/Bot.js.map +1 -0
  144. package/dist/types/Config.d.ts +57 -0
  145. package/dist/types/Config.d.ts.map +1 -0
  146. package/dist/types/Config.js +5 -0
  147. package/dist/types/Config.js.map +1 -0
  148. package/dist/types/Errors.d.ts +37 -0
  149. package/dist/types/Errors.d.ts.map +1 -0
  150. package/dist/types/Errors.js +34 -0
  151. package/dist/types/Errors.js.map +1 -0
  152. package/dist/types/SSH.d.ts +56 -0
  153. package/dist/types/SSH.d.ts.map +1 -0
  154. package/dist/types/SSH.js +6 -0
  155. package/dist/types/SSH.js.map +1 -0
  156. package/dist/types/Server.d.ts +39 -0
  157. package/dist/types/Server.d.ts.map +1 -0
  158. package/dist/types/Server.js +5 -0
  159. package/dist/types/Server.js.map +1 -0
  160. package/dist/types/index.d.ts +10 -0
  161. package/dist/types/index.d.ts.map +1 -0
  162. package/dist/types/index.js +6 -0
  163. package/dist/types/index.js.map +1 -0
  164. package/dist/utils/commandUtils.d.ts +25 -0
  165. package/dist/utils/commandUtils.d.ts.map +1 -0
  166. package/dist/utils/commandUtils.js +94 -0
  167. package/dist/utils/commandUtils.js.map +1 -0
  168. package/dist/utils/fileUtils.d.ts +40 -0
  169. package/dist/utils/fileUtils.d.ts.map +1 -0
  170. package/dist/utils/fileUtils.js +114 -0
  171. package/dist/utils/fileUtils.js.map +1 -0
  172. package/dist/utils/index.d.ts +7 -0
  173. package/dist/utils/index.d.ts.map +1 -0
  174. package/dist/utils/index.js +7 -0
  175. package/dist/utils/index.js.map +1 -0
  176. package/dist/utils/pathUtils.d.ts +40 -0
  177. package/dist/utils/pathUtils.d.ts.map +1 -0
  178. package/dist/utils/pathUtils.js +140 -0
  179. package/dist/utils/pathUtils.js.map +1 -0
  180. package/package.json +31 -5
  181. package/scripts/build.sh +20 -0
  182. package/scripts/postinstall.js +87 -0
  183. package/scripts/release.sh +22 -0
  184. package/scripts/setup-env.js +237 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core modules index - exports all core components
3
+ */
4
+ export { Bot } from "./Bot.js";
5
+ export { ConnectionPool } from "./ConnectionPool.js";
6
+ export { ServerManager } from "./ServerManager.js";
7
+ export { SSHClient } from "./SSHClient.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Core modules index - exports all core components
3
+ */
4
+ export { Bot } from "./Bot.js";
5
+ export { ConnectionPool } from "./ConnectionPool.js";
6
+ export { ServerManager } from "./ServerManager.js";
7
+ export { SSHClient } from "./SSHClient.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Authentication error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export declare class AuthError extends BaseError {
7
+ constructor(code: ErrorCode, message: string, options?: {
8
+ context?: Record<string, unknown>;
9
+ cause?: Error;
10
+ });
11
+ }
12
+ export declare class UnauthorizedError extends AuthError {
13
+ constructor(userId: number, options?: {
14
+ context?: Record<string, unknown>;
15
+ cause?: Error;
16
+ });
17
+ }
18
+ export declare class InvalidCredentialsError extends AuthError {
19
+ constructor(serverId: string, options?: {
20
+ context?: Record<string, unknown>;
21
+ cause?: Error;
22
+ });
23
+ }
24
+ export declare class RateLimitedError extends AuthError {
25
+ constructor(retryAfter: number, options?: {
26
+ context?: Record<string, unknown>;
27
+ cause?: Error;
28
+ });
29
+ }
30
+ //# sourceMappingURL=AuthError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthError.d.ts","sourceRoot":"","sources":["../../src/errors/AuthError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,SAAU,SAAQ,SAAS;gBAEpC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,iBAAkB,SAAQ,SAAS;gBAE5C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,uBAAwB,SAAQ,SAAS;gBAElD,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,gBAAiB,SAAQ,SAAS;gBAE3C,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAWjE"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Authentication error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export class AuthError extends BaseError {
7
+ constructor(code, message, options) {
8
+ super(code, message, options);
9
+ }
10
+ }
11
+ export class UnauthorizedError extends AuthError {
12
+ constructor(userId, options) {
13
+ super(ErrorCode.UNAUTHORIZED, "Unauthorized access attempt", {
14
+ ...options,
15
+ context: { ...options?.context, userId },
16
+ });
17
+ }
18
+ }
19
+ export class InvalidCredentialsError extends AuthError {
20
+ constructor(serverId, options) {
21
+ super(ErrorCode.INVALID_CREDENTIALS, "Invalid credentials provided", {
22
+ ...options,
23
+ context: { ...options?.context, serverId },
24
+ });
25
+ }
26
+ }
27
+ export class RateLimitedError extends AuthError {
28
+ constructor(retryAfter, options) {
29
+ super(ErrorCode.RATE_LIMITED, `Rate limited. Try again in ${retryAfter} seconds`, {
30
+ ...options,
31
+ context: { ...options?.context, retryAfter },
32
+ });
33
+ }
34
+ }
35
+ //# sourceMappingURL=AuthError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthError.js","sourceRoot":"","sources":["../../src/errors/AuthError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,SAAU,SAAQ,SAAS;IACtC,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,YACE,MAAc,EACd,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,6BAA6B,EAAE;YAC3D,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;SACzC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACpD,YACE,QAAgB,EAChB,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,8BAA8B,EAAE;YACnE,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,YACE,UAAkB,EAClB,OAA8D;QAE9D,KAAK,CACH,SAAS,CAAC,YAAY,EACtB,8BAA8B,UAAU,UAAU,EAClD;YACE,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE;SAC7C,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Base error class for all application errors
3
+ */
4
+ import { ErrorCode, type ErrorDetails } from "../types/index.js";
5
+ export declare abstract class BaseError extends Error {
6
+ readonly code: ErrorCode;
7
+ readonly timestamp: Date;
8
+ readonly context?: Record<string, unknown>;
9
+ readonly cause?: Error;
10
+ constructor(code: ErrorCode, message: string, options?: {
11
+ context?: Record<string, unknown>;
12
+ cause?: Error;
13
+ });
14
+ toJSON(): ErrorDetails;
15
+ toString(): string;
16
+ }
17
+ //# sourceMappingURL=BaseError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseError.d.ts","sourceRoot":"","sources":["../../src/errors/BaseError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjE,8BAAsB,SAAU,SAAQ,KAAK;IAC3C,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,SAAS,EAAE,IAAI,CAAC;IAChC,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,SAAgB,KAAK,CAAC,EAAE,KAAK,CAAC;gBAG5B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;IAwBhE,MAAM,IAAI,YAAY;IAStB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Base error class for all application errors
3
+ */
4
+ export class BaseError extends Error {
5
+ code;
6
+ timestamp;
7
+ context;
8
+ cause;
9
+ constructor(code, message, options) {
10
+ super(message);
11
+ this.name = this.constructor.name;
12
+ this.code = code;
13
+ this.timestamp = new Date();
14
+ this.context = options?.context;
15
+ this.cause = options?.cause;
16
+ // Maintains proper stack trace for where error was thrown (only in V8/Node.js)
17
+ const captureStackTrace = Error.captureStackTrace;
18
+ if (captureStackTrace) {
19
+ captureStackTrace(this, this.constructor);
20
+ }
21
+ }
22
+ toJSON() {
23
+ return {
24
+ code: this.code,
25
+ message: this.message,
26
+ context: this.context,
27
+ cause: this.cause,
28
+ };
29
+ }
30
+ toString() {
31
+ return `${this.name} [${this.code}]: ${this.message}`;
32
+ }
33
+ }
34
+ //# sourceMappingURL=BaseError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseError.js","sourceRoot":"","sources":["../../src/errors/BaseError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAgB,SAAU,SAAQ,KAAK;IAC3B,IAAI,CAAY;IAChB,SAAS,CAAO;IAChB,OAAO,CAA2B;IAClC,KAAK,CAAS;IAE9B,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;QAE5B,+EAA+E;QAC/E,MAAM,iBAAiB,GACrB,KAMD,CAAC,iBAAiB,CAAC;QAEpB,IAAI,iBAAiB,EAAE,CAAC;YACtB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Configuration error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export declare class ConfigurationError extends BaseError {
7
+ constructor(code: ErrorCode, message: string, options?: {
8
+ context?: Record<string, unknown>;
9
+ cause?: Error;
10
+ });
11
+ }
12
+ export declare class MissingConfigError extends ConfigurationError {
13
+ constructor(configKey: string, options?: {
14
+ context?: Record<string, unknown>;
15
+ cause?: Error;
16
+ });
17
+ }
18
+ export declare class InvalidConfigError extends ConfigurationError {
19
+ constructor(message: string, options?: {
20
+ context?: Record<string, unknown>;
21
+ cause?: Error;
22
+ });
23
+ }
24
+ //# sourceMappingURL=ConfigurationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigurationError.d.ts","sourceRoot":"","sources":["../../src/errors/ConfigurationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,kBAAmB,SAAQ,SAAS;gBAE7C,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB;gBAEtD,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAWjE;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB;gBAEtD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Configuration error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export class ConfigurationError extends BaseError {
7
+ constructor(code, message, options) {
8
+ super(code, message, options);
9
+ }
10
+ }
11
+ export class MissingConfigError extends ConfigurationError {
12
+ constructor(configKey, options) {
13
+ super(ErrorCode.MISSING_CONFIG, `Missing required configuration: ${configKey}`, {
14
+ ...options,
15
+ context: { ...options?.context, configKey },
16
+ });
17
+ }
18
+ }
19
+ export class InvalidConfigError extends ConfigurationError {
20
+ constructor(message, options) {
21
+ super(ErrorCode.INVALID_CONFIG, message, options);
22
+ }
23
+ }
24
+ //# sourceMappingURL=ConfigurationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigurationError.js","sourceRoot":"","sources":["../../src/errors/ConfigurationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD,YACE,SAAiB,EACjB,OAA8D;QAE9D,KAAK,CACH,SAAS,CAAC,cAAc,EACxB,mCAAmC,SAAS,EAAE,EAC9C;YACE,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;SAC5C,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,kBAAkB;IACxD,YACE,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Pool-related errors
3
+ */
4
+ import { BaseError } from "./BaseError.js";
5
+ /**
6
+ * Error thrown when connection pool is exhausted
7
+ */
8
+ export declare class PoolExhaustedError extends BaseError {
9
+ readonly maxConnections: number;
10
+ readonly timeout: number;
11
+ constructor(maxConnections: number, timeout: number);
12
+ }
13
+ /**
14
+ * Error thrown when a connection acquisition times out
15
+ */
16
+ export declare class ConnectionAcquireTimeoutError extends BaseError {
17
+ readonly serverId: string;
18
+ readonly timeout: number;
19
+ constructor(serverId: string, timeout: number);
20
+ }
21
+ //# sourceMappingURL=PoolError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolError.d.ts","sourceRoot":"","sources":["../../src/errors/PoolError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAQpD;AAED;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,SAAS;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAQ9C"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Pool-related errors
3
+ */
4
+ import { ErrorCode } from "../types/Errors.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ /**
7
+ * Error thrown when connection pool is exhausted
8
+ */
9
+ export class PoolExhaustedError extends BaseError {
10
+ maxConnections;
11
+ timeout;
12
+ constructor(maxConnections, timeout) {
13
+ super(ErrorCode.POOL_EXHAUSTED, `Connection pool exhausted (max: ${maxConnections}, timeout: ${timeout}ms)`);
14
+ this.maxConnections = maxConnections;
15
+ this.timeout = timeout;
16
+ }
17
+ }
18
+ /**
19
+ * Error thrown when a connection acquisition times out
20
+ */
21
+ export class ConnectionAcquireTimeoutError extends BaseError {
22
+ serverId;
23
+ timeout;
24
+ constructor(serverId, timeout) {
25
+ super(ErrorCode.CONNECTION_ACQUIRE_TIMEOUT, `Timeout acquiring connection for server ${serverId} after ${timeout}ms`);
26
+ this.serverId = serverId;
27
+ this.timeout = timeout;
28
+ }
29
+ }
30
+ //# sourceMappingURL=PoolError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PoolError.js","sourceRoot":"","sources":["../../src/errors/PoolError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IACtC,cAAc,CAAS;IACvB,OAAO,CAAS;IAEzB,YAAY,cAAsB,EAAE,OAAe;QACjD,KAAK,CACH,SAAS,CAAC,cAAc,EACxB,mCAAmC,cAAc,cAAc,OAAO,KAAK,CAC5E,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,SAAS;IACjD,QAAQ,CAAS;IACjB,OAAO,CAAS;IAEzB,YAAY,QAAgB,EAAE,OAAe;QAC3C,KAAK,CACH,SAAS,CAAC,0BAA0B,EACpC,2CAA2C,QAAQ,UAAU,OAAO,IAAI,CACzE,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * SSH error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export declare class SSHError extends BaseError {
7
+ constructor(code: ErrorCode, message: string, options?: {
8
+ context?: Record<string, unknown>;
9
+ cause?: Error;
10
+ });
11
+ }
12
+ export declare class ConnectionFailedError extends SSHError {
13
+ constructor(host: string, cause?: Error);
14
+ }
15
+ export declare class CommandFailedError extends SSHError {
16
+ constructor(command: string, exitCode: number | null, stderr: string);
17
+ }
18
+ export declare class ConnectionTimeoutError extends SSHError {
19
+ constructor(host: string, timeout: number);
20
+ }
21
+ export declare class DisconnectedError extends SSHError {
22
+ constructor(message?: string);
23
+ }
24
+ //# sourceMappingURL=SSHError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSHError.d.ts","sourceRoot":"","sources":["../../src/errors/SSHError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,QAAS,SAAQ,SAAS;gBAEnC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,qBAAsB,SAAQ,QAAQ;gBACrC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAMxC;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM;CASrE;AAED,qBAAa,sBAAuB,SAAQ,QAAQ;gBACtC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAS1C;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;gBACjC,OAAO,GAAE,MAAmC;CAGzD"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * SSH error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export class SSHError extends BaseError {
7
+ constructor(code, message, options) {
8
+ super(code, message, options);
9
+ }
10
+ }
11
+ export class ConnectionFailedError extends SSHError {
12
+ constructor(host, cause) {
13
+ super(ErrorCode.CONNECTION_FAILED, `Failed to connect to ${host}`, {
14
+ context: { host },
15
+ cause,
16
+ });
17
+ }
18
+ }
19
+ export class CommandFailedError extends SSHError {
20
+ constructor(command, exitCode, stderr) {
21
+ super(ErrorCode.COMMAND_FAILED, `Command failed with exit code ${exitCode ?? "unknown"}`, {
22
+ context: { command, exitCode, stderr },
23
+ });
24
+ }
25
+ }
26
+ export class ConnectionTimeoutError extends SSHError {
27
+ constructor(host, timeout) {
28
+ super(ErrorCode.CONNECTION_TIMEOUT, `Connection to ${host} timed out after ${timeout}ms`, {
29
+ context: { host, timeout },
30
+ });
31
+ }
32
+ }
33
+ export class DisconnectedError extends SSHError {
34
+ constructor(message = "No active SSH connection") {
35
+ super(ErrorCode.DISCONNECTED, message);
36
+ }
37
+ }
38
+ //# sourceMappingURL=SSHError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSHError.js","sourceRoot":"","sources":["../../src/errors/SSHError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,QAAS,SAAQ,SAAS;IACrC,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,IAAY,EAAE,KAAa;QACrC,KAAK,CAAC,SAAS,CAAC,iBAAiB,EAAE,wBAAwB,IAAI,EAAE,EAAE;YACjE,OAAO,EAAE,EAAE,IAAI,EAAE;YACjB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,OAAe,EAAE,QAAuB,EAAE,MAAc;QAClE,KAAK,CACH,SAAS,CAAC,cAAc,EACxB,iCAAiC,QAAQ,IAAI,SAAS,EAAE,EACxD;YACE,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;SACvC,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,QAAQ;IAClD,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CACH,SAAS,CAAC,kBAAkB,EAC5B,iBAAiB,IAAI,oBAAoB,OAAO,IAAI,EACpD;YACE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC3B,CACF,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IAC7C,YAAY,UAAkB,0BAA0B;QACtD,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Storage error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export declare class StorageError extends BaseError {
7
+ constructor(code: ErrorCode, message: string, options?: {
8
+ context?: Record<string, unknown>;
9
+ cause?: Error;
10
+ });
11
+ }
12
+ export declare class FileNotFoundError extends StorageError {
13
+ constructor(filePath: string, options?: {
14
+ context?: Record<string, unknown>;
15
+ cause?: Error;
16
+ });
17
+ }
18
+ export declare class FileReadError extends StorageError {
19
+ constructor(filePath: string, cause?: Error);
20
+ }
21
+ export declare class FileWriteError extends StorageError {
22
+ constructor(filePath: string, cause?: Error);
23
+ }
24
+ //# sourceMappingURL=StorageError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageError.d.ts","sourceRoot":"","sources":["../../src/errors/StorageError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,YAAa,SAAQ,SAAS;gBAEvC,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBAE/C,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,aAAc,SAAQ,YAAY;gBACjC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM5C;AAED,qBAAa,cAAe,SAAQ,YAAY;gBAClC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAM5C"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Storage error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export class StorageError extends BaseError {
7
+ constructor(code, message, options) {
8
+ super(code, message, options);
9
+ }
10
+ }
11
+ export class FileNotFoundError extends StorageError {
12
+ constructor(filePath, options) {
13
+ super(ErrorCode.FILE_NOT_FOUND, `File not found: ${filePath}`, {
14
+ ...options,
15
+ context: { ...options?.context, filePath },
16
+ });
17
+ }
18
+ }
19
+ export class FileReadError extends StorageError {
20
+ constructor(filePath, cause) {
21
+ super(ErrorCode.FILE_READ_ERROR, `Failed to read file: ${filePath}`, {
22
+ context: { filePath },
23
+ cause,
24
+ });
25
+ }
26
+ }
27
+ export class FileWriteError extends StorageError {
28
+ constructor(filePath, cause) {
29
+ super(ErrorCode.FILE_WRITE_ERROR, `Failed to write file: ${filePath}`, {
30
+ context: { filePath },
31
+ cause,
32
+ });
33
+ }
34
+ }
35
+ //# sourceMappingURL=StorageError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageError.js","sourceRoot":"","sources":["../../src/errors/StorageError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,YACE,IAAe,EACf,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACjD,YACE,QAAgB,EAChB,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,QAAQ,EAAE,EAAE;YAC7D,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE;SAC3C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,YAAY;IAC7C,YAAY,QAAgB,EAAE,KAAa;QACzC,KAAK,CAAC,SAAS,CAAC,eAAe,EAAE,wBAAwB,QAAQ,EAAE,EAAE;YACnE,OAAO,EAAE,EAAE,QAAQ,EAAE;YACrB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YAAY,QAAgB,EAAE,KAAa;QACzC,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,yBAAyB,QAAQ,EAAE,EAAE;YACrE,OAAO,EAAE,EAAE,QAAQ,EAAE;YACrB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Validation error classes
3
+ */
4
+ import { BaseError } from "./BaseError.js";
5
+ export declare class ValidationError extends BaseError {
6
+ constructor(message: string, options?: {
7
+ context?: Record<string, unknown>;
8
+ cause?: Error;
9
+ });
10
+ }
11
+ export declare class InvalidServerConfigError extends ValidationError {
12
+ constructor(details: string, options?: {
13
+ context?: Record<string, unknown>;
14
+ cause?: Error;
15
+ });
16
+ }
17
+ export declare class InvalidCommandError extends ValidationError {
18
+ constructor(command: string, reason: string, options?: {
19
+ context?: Record<string, unknown>;
20
+ cause?: Error;
21
+ });
22
+ }
23
+ export declare class InvalidPathError extends ValidationError {
24
+ constructor(path: string, reason: string, options?: {
25
+ context?: Record<string, unknown>;
26
+ cause?: Error;
27
+ });
28
+ }
29
+ //# sourceMappingURL=ValidationError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationError.d.ts","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,eAAgB,SAAQ,SAAS;gBAE1C,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAIjE;AAED,qBAAa,wBAAyB,SAAQ,eAAe;gBAEzD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,mBAAoB,SAAQ,eAAe;gBAEpD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE;AAED,qBAAa,gBAAiB,SAAQ,eAAe;gBAEjD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;CAOjE"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Validation error classes
3
+ */
4
+ import { ErrorCode } from "../types/index.js";
5
+ import { BaseError } from "./BaseError.js";
6
+ export class ValidationError extends BaseError {
7
+ constructor(message, options) {
8
+ super(ErrorCode.INVALID_INPUT, message, options);
9
+ }
10
+ }
11
+ export class InvalidServerConfigError extends ValidationError {
12
+ constructor(details, options) {
13
+ super(`Invalid server configuration: ${details}`, {
14
+ ...options,
15
+ context: { ...options?.context, details },
16
+ });
17
+ }
18
+ }
19
+ export class InvalidCommandError extends ValidationError {
20
+ constructor(command, reason, options) {
21
+ super(`Invalid command: ${reason}`, {
22
+ ...options,
23
+ context: { ...options?.context, command },
24
+ });
25
+ }
26
+ }
27
+ export class InvalidPathError extends ValidationError {
28
+ constructor(path, reason, options) {
29
+ super(`Invalid path: ${reason}`, {
30
+ ...options,
31
+ context: { ...options?.context, path },
32
+ });
33
+ }
34
+ }
35
+ //# sourceMappingURL=ValidationError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidationError.js","sourceRoot":"","sources":["../../src/errors/ValidationError.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YACE,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D,YACE,OAAe,EACf,OAA8D;QAE9D,KAAK,CAAC,iCAAiC,OAAO,EAAE,EAAE;YAChD,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IACtD,YACE,OAAe,EACf,MAAc,EACd,OAA8D;QAE9D,KAAK,CAAC,oBAAoB,MAAM,EAAE,EAAE;YAClC,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,eAAe;IACnD,YACE,IAAY,EACZ,MAAc,EACd,OAA8D;QAE9D,KAAK,CAAC,iBAAiB,MAAM,EAAE,EAAE;YAC/B,GAAG,OAAO;YACV,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;SACvC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Error classes index - exports all errors
3
+ */
4
+ export { BaseError } from "./BaseError.js";
5
+ export { InvalidCommandError, InvalidPathError, InvalidServerConfigError, ValidationError, } from "./ValidationError.js";
6
+ export { AuthError, InvalidCredentialsError, RateLimitedError, UnauthorizedError, } from "./AuthError.js";
7
+ export { CommandFailedError, ConnectionFailedError, ConnectionTimeoutError, DisconnectedError, SSHError, } from "./SSHError.js";
8
+ export { ConfigurationError, InvalidConfigError, MissingConfigError, } from "./ConfigurationError.js";
9
+ export { FileNotFoundError, FileReadError, FileWriteError, StorageError, } from "./StorageError.js";
10
+ export { ConnectionAcquireTimeoutError, PoolExhaustedError, } from "./PoolError.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Error classes index - exports all errors
3
+ */
4
+ // Base error
5
+ export { BaseError } from "./BaseError.js";
6
+ // Validation errors
7
+ export { InvalidCommandError, InvalidPathError, InvalidServerConfigError, ValidationError, } from "./ValidationError.js";
8
+ // Auth errors
9
+ export { AuthError, InvalidCredentialsError, RateLimitedError, UnauthorizedError, } from "./AuthError.js";
10
+ // SSH errors
11
+ export { CommandFailedError, ConnectionFailedError, ConnectionTimeoutError, DisconnectedError, SSHError, } from "./SSHError.js";
12
+ // Configuration errors
13
+ export { ConfigurationError, InvalidConfigError, MissingConfigError, } from "./ConfigurationError.js";
14
+ // Storage errors
15
+ export { FileNotFoundError, FileReadError, FileWriteError, StorageError, } from "./StorageError.js";
16
+ // Pool errors
17
+ export { ConnectionAcquireTimeoutError, PoolExhaustedError, } from "./PoolError.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,oBAAoB;AACpB,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,cAAc;AACd,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAExB,aAAa;AACb,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,MAAM,eAAe,CAAC;AAEvB,uBAAuB;AACvB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,iBAAiB;AACjB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,cAAc;AACd,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Base Command Handler
3
+ * Provides common functionality for all command handlers
4
+ */
5
+ import { ServerManager } from "../core/ServerManager.js";
6
+ import { SSHClient } from "../core/SSHClient.js";
7
+ import { LoggingService } from "../services/LoggingService.js";
8
+ import type { CommandContext, IBot, ICommandHandler, Server } from "../types/index.js";
9
+ /**
10
+ * Base command handler with common functionality
11
+ */
12
+ export declare abstract class BaseHandler implements ICommandHandler {
13
+ abstract readonly name: string;
14
+ abstract readonly description: string;
15
+ abstract readonly pattern: RegExp;
16
+ protected readonly serverManager: ServerManager;
17
+ protected readonly sshClient: SSHClient;
18
+ protected readonly bot: IBot;
19
+ protected readonly logger: LoggingService;
20
+ constructor(serverManager: ServerManager, sshClient: SSHClient, bot: IBot, logger: LoggingService);
21
+ /**
22
+ * Execute the command handler
23
+ */
24
+ abstract execute(context: CommandContext): Promise<void>;
25
+ /**
26
+ * Send a message to the chat
27
+ */
28
+ protected send(chatId: number, message: string): Promise<void>;
29
+ /**
30
+ * Send a markdown message to the chat
31
+ */
32
+ protected sendMarkdown(chatId: number, message: string): Promise<void>;
33
+ /**
34
+ * Get current server or send error message
35
+ */
36
+ protected getCurrentServerOrError(chatId: number): Server | null;
37
+ /**
38
+ * Check if SSH is connected or send error message
39
+ */
40
+ protected checkConnectionOrError(chatId: number): boolean;
41
+ /**
42
+ * Format server list for display
43
+ */
44
+ protected formatServerList(servers: Server[]): string;
45
+ /**
46
+ * Format server info for display
47
+ */
48
+ protected formatServerInfo(server: Server): string;
49
+ }
50
+ //# sourceMappingURL=BaseHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/BaseHandler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EACV,cAAc,EACd,IAAI,EACJ,eAAe,EACf,MAAM,EACP,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,8BAAsB,WAAY,YAAW,eAAe;IAC1D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAElC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAGxC,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,cAAc;IAQxB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAExD;;OAEG;cACa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE;;OAEG;cACa,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5E;;OAEG;IACH,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAYhE;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAWzD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM;IAqBrD;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;CAenD"}