grok-cli-to-openai-compatible 1.2.7 → 1.4.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 (221) hide show
  1. package/.env.example +25 -3
  2. package/README-ZH.md +179 -56
  3. package/README.md +186 -63
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js +204 -12
  6. package/dist/app.js.map +1 -1
  7. package/dist/cli/commands/admin-panel.d.ts +13 -0
  8. package/dist/cli/commands/admin-panel.d.ts.map +1 -0
  9. package/dist/cli/commands/admin-panel.js +98 -0
  10. package/dist/cli/commands/admin-panel.js.map +1 -0
  11. package/dist/cli/commands/doctor.d.ts +1 -0
  12. package/dist/cli/commands/doctor.d.ts.map +1 -1
  13. package/dist/cli/commands/doctor.js +74 -8
  14. package/dist/cli/commands/doctor.js.map +1 -1
  15. package/dist/cli/commands/logs.d.ts +10 -0
  16. package/dist/cli/commands/logs.d.ts.map +1 -0
  17. package/dist/cli/commands/logs.js +83 -0
  18. package/dist/cli/commands/logs.js.map +1 -0
  19. package/dist/cli/commands/open.d.ts +1 -0
  20. package/dist/cli/commands/open.d.ts.map +1 -1
  21. package/dist/cli/commands/open.js +1 -1
  22. package/dist/cli/commands/open.js.map +1 -1
  23. package/dist/cli/commands/restart.d.ts +1 -0
  24. package/dist/cli/commands/restart.d.ts.map +1 -1
  25. package/dist/cli/commands/restart.js +17 -1
  26. package/dist/cli/commands/restart.js.map +1 -1
  27. package/dist/cli/commands/setup.d.ts.map +1 -1
  28. package/dist/cli/commands/setup.js +12 -0
  29. package/dist/cli/commands/setup.js.map +1 -1
  30. package/dist/cli/commands/start.d.ts +2 -0
  31. package/dist/cli/commands/start.d.ts.map +1 -1
  32. package/dist/cli/commands/start.js +50 -8
  33. package/dist/cli/commands/start.js.map +1 -1
  34. package/dist/cli/commands/status.d.ts +1 -0
  35. package/dist/cli/commands/status.d.ts.map +1 -1
  36. package/dist/cli/commands/status.js +39 -14
  37. package/dist/cli/commands/status.js.map +1 -1
  38. package/dist/cli/commands/stop.d.ts +1 -0
  39. package/dist/cli/commands/stop.d.ts.map +1 -1
  40. package/dist/cli/commands/stop.js +30 -5
  41. package/dist/cli/commands/stop.js.map +1 -1
  42. package/dist/cli/commands/update.d.ts +1 -0
  43. package/dist/cli/commands/update.d.ts.map +1 -1
  44. package/dist/cli/commands/update.js +127 -20
  45. package/dist/cli/commands/update.js.map +1 -1
  46. package/dist/cli/index.js +67 -5
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/lib/env-file.d.ts +7 -0
  49. package/dist/cli/lib/env-file.d.ts.map +1 -1
  50. package/dist/cli/lib/env-file.js +62 -17
  51. package/dist/cli/lib/env-file.js.map +1 -1
  52. package/dist/cli/lib/pm2-runner.d.ts +14 -0
  53. package/dist/cli/lib/pm2-runner.d.ts.map +1 -0
  54. package/dist/cli/lib/pm2-runner.js +179 -0
  55. package/dist/cli/lib/pm2-runner.js.map +1 -0
  56. package/dist/cli/lib/process-mgr.d.ts +15 -0
  57. package/dist/cli/lib/process-mgr.d.ts.map +1 -1
  58. package/dist/cli/lib/process-mgr.js +111 -22
  59. package/dist/cli/lib/process-mgr.js.map +1 -1
  60. package/dist/cli/lib/runner-info.d.ts +20 -0
  61. package/dist/cli/lib/runner-info.d.ts.map +1 -0
  62. package/dist/cli/lib/runner-info.js +120 -0
  63. package/dist/cli/lib/runner-info.js.map +1 -0
  64. package/dist/cli/lib/spinner.d.ts +20 -0
  65. package/dist/cli/lib/spinner.d.ts.map +1 -0
  66. package/dist/cli/lib/spinner.js +72 -0
  67. package/dist/cli/lib/spinner.js.map +1 -0
  68. package/dist/config/constants.d.ts +31 -0
  69. package/dist/config/constants.d.ts.map +1 -1
  70. package/dist/config/constants.js +103 -2
  71. package/dist/config/constants.js.map +1 -1
  72. package/dist/config/cors.js +1 -1
  73. package/dist/config/cors.js.map +1 -1
  74. package/dist/config/env.d.ts +11 -1
  75. package/dist/config/env.d.ts.map +1 -1
  76. package/dist/config/env.js +43 -3
  77. package/dist/config/env.js.map +1 -1
  78. package/dist/controllers/admin.controller.d.ts +35 -0
  79. package/dist/controllers/admin.controller.d.ts.map +1 -1
  80. package/dist/controllers/admin.controller.js +599 -18
  81. package/dist/controllers/admin.controller.js.map +1 -1
  82. package/dist/controllers/api-key.controller.d.ts.map +1 -1
  83. package/dist/controllers/api-key.controller.js +4 -3
  84. package/dist/controllers/api-key.controller.js.map +1 -1
  85. package/dist/controllers/chat.controller.d.ts.map +1 -1
  86. package/dist/controllers/chat.controller.js +2 -1
  87. package/dist/controllers/chat.controller.js.map +1 -1
  88. package/dist/controllers/document.controller.d.ts.map +1 -1
  89. package/dist/controllers/document.controller.js +3 -2
  90. package/dist/controllers/document.controller.js.map +1 -1
  91. package/dist/dto/admin.dto.d.ts +36 -1
  92. package/dist/dto/admin.dto.d.ts.map +1 -1
  93. package/dist/dto/admin.dto.js +23 -1
  94. package/dist/dto/admin.dto.js.map +1 -1
  95. package/dist/dto/chat.dto.d.ts +73 -0
  96. package/dist/dto/chat.dto.d.ts.map +1 -1
  97. package/dist/dto/chat.dto.js +5 -1
  98. package/dist/dto/chat.dto.js.map +1 -1
  99. package/dist/dto/conversation.dto.d.ts +286 -0
  100. package/dist/dto/conversation.dto.d.ts.map +1 -0
  101. package/dist/dto/conversation.dto.js +62 -0
  102. package/dist/dto/conversation.dto.js.map +1 -0
  103. package/dist/dto/ddos.dto.d.ts +191 -0
  104. package/dist/dto/ddos.dto.d.ts.map +1 -0
  105. package/dist/dto/ddos.dto.js +57 -0
  106. package/dist/dto/ddos.dto.js.map +1 -0
  107. package/dist/entities/api-key.entity.d.ts +2 -0
  108. package/dist/entities/api-key.entity.d.ts.map +1 -1
  109. package/dist/interfaces/auth.interface.d.ts +1 -0
  110. package/dist/interfaces/auth.interface.d.ts.map +1 -1
  111. package/dist/interfaces/express.interface.d.ts +2 -0
  112. package/dist/interfaces/express.interface.d.ts.map +1 -1
  113. package/dist/middlewares/auth.middleware.d.ts.map +1 -1
  114. package/dist/middlewares/auth.middleware.js +30 -3
  115. package/dist/middlewares/auth.middleware.js.map +1 -1
  116. package/dist/middlewares/client-ip.middleware.d.ts +11 -0
  117. package/dist/middlewares/client-ip.middleware.d.ts.map +1 -0
  118. package/dist/middlewares/client-ip.middleware.js +19 -0
  119. package/dist/middlewares/client-ip.middleware.js.map +1 -0
  120. package/dist/middlewares/connection-tracker.d.ts +47 -0
  121. package/dist/middlewares/connection-tracker.d.ts.map +1 -0
  122. package/dist/middlewares/connection-tracker.js +99 -0
  123. package/dist/middlewares/connection-tracker.js.map +1 -0
  124. package/dist/middlewares/rate-limit.middleware.d.ts +9 -2
  125. package/dist/middlewares/rate-limit.middleware.d.ts.map +1 -1
  126. package/dist/middlewares/rate-limit.middleware.js +116 -32
  127. package/dist/middlewares/rate-limit.middleware.js.map +1 -1
  128. package/dist/routes/admin.routes.d.ts.map +1 -1
  129. package/dist/routes/admin.routes.js +38 -0
  130. package/dist/routes/admin.routes.js.map +1 -1
  131. package/dist/routes/v1/chat.routes.d.ts.map +1 -1
  132. package/dist/routes/v1/chat.routes.js +1 -1
  133. package/dist/routes/v1/chat.routes.js.map +1 -1
  134. package/dist/server.js +53 -0
  135. package/dist/server.js.map +1 -1
  136. package/dist/services/abuse-guard.service.d.ts +27 -0
  137. package/dist/services/abuse-guard.service.d.ts.map +1 -0
  138. package/dist/services/abuse-guard.service.js +243 -0
  139. package/dist/services/abuse-guard.service.js.map +1 -0
  140. package/dist/services/api-key.service.d.ts +18 -1
  141. package/dist/services/api-key.service.d.ts.map +1 -1
  142. package/dist/services/api-key.service.js +79 -11
  143. package/dist/services/api-key.service.js.map +1 -1
  144. package/dist/services/chat-admin.service.d.ts +11 -0
  145. package/dist/services/chat-admin.service.d.ts.map +1 -1
  146. package/dist/services/chat-admin.service.js +61 -9
  147. package/dist/services/chat-admin.service.js.map +1 -1
  148. package/dist/services/conversation.service.d.ts +104 -0
  149. package/dist/services/conversation.service.d.ts.map +1 -0
  150. package/dist/services/conversation.service.js +232 -0
  151. package/dist/services/conversation.service.js.map +1 -0
  152. package/dist/services/ddos-policy.service.d.ts +40 -0
  153. package/dist/services/ddos-policy.service.d.ts.map +1 -0
  154. package/dist/services/ddos-policy.service.js +257 -0
  155. package/dist/services/ddos-policy.service.js.map +1 -0
  156. package/dist/services/document.service.d.ts.map +1 -1
  157. package/dist/services/document.service.js +21 -11
  158. package/dist/services/document.service.js.map +1 -1
  159. package/dist/services/ip-blacklist.service.d.ts +40 -0
  160. package/dist/services/ip-blacklist.service.d.ts.map +1 -0
  161. package/dist/services/ip-blacklist.service.js +126 -0
  162. package/dist/services/ip-blacklist.service.js.map +1 -0
  163. package/dist/services/models.service.d.ts +8 -1
  164. package/dist/services/models.service.d.ts.map +1 -1
  165. package/dist/services/models.service.js +18 -3
  166. package/dist/services/models.service.js.map +1 -1
  167. package/dist/services/pm2-config.d.ts +34 -0
  168. package/dist/services/pm2-config.d.ts.map +1 -0
  169. package/dist/services/pm2-config.js +156 -0
  170. package/dist/services/pm2-config.js.map +1 -0
  171. package/dist/services/pm2.service.d.ts +197 -0
  172. package/dist/services/pm2.service.d.ts.map +1 -0
  173. package/dist/services/pm2.service.js +776 -0
  174. package/dist/services/pm2.service.js.map +1 -0
  175. package/dist/services/stats.service.d.ts +36 -0
  176. package/dist/services/stats.service.d.ts.map +1 -1
  177. package/dist/services/stats.service.js +67 -2
  178. package/dist/services/stats.service.js.map +1 -1
  179. package/dist/services/system-health.service.d.ts +30 -0
  180. package/dist/services/system-health.service.d.ts.map +1 -0
  181. package/dist/services/system-health.service.js +234 -0
  182. package/dist/services/system-health.service.js.map +1 -0
  183. package/dist/services/update.service.d.ts +32 -0
  184. package/dist/services/update.service.d.ts.map +1 -1
  185. package/dist/services/update.service.js +176 -41
  186. package/dist/services/update.service.js.map +1 -1
  187. package/dist/services/usage.service.d.ts +43 -0
  188. package/dist/services/usage.service.d.ts.map +1 -0
  189. package/dist/services/usage.service.js +163 -0
  190. package/dist/services/usage.service.js.map +1 -0
  191. package/dist/utils/client-ip.d.ts +41 -0
  192. package/dist/utils/client-ip.d.ts.map +1 -0
  193. package/dist/utils/client-ip.js +172 -0
  194. package/dist/utils/client-ip.js.map +1 -0
  195. package/dist/utils/file-sniff.d.ts +16 -0
  196. package/dist/utils/file-sniff.d.ts.map +1 -0
  197. package/dist/utils/file-sniff.js +151 -0
  198. package/dist/utils/file-sniff.js.map +1 -0
  199. package/dist/utils/ip-match.d.ts +15 -0
  200. package/dist/utils/ip-match.d.ts.map +1 -0
  201. package/dist/utils/ip-match.js +133 -0
  202. package/dist/utils/ip-match.js.map +1 -0
  203. package/dist/utils/stream.d.ts.map +1 -1
  204. package/dist/utils/stream.js +40 -1
  205. package/dist/utils/stream.js.map +1 -1
  206. package/package.json +1 -1
  207. package/prisma/migrations/20260714120000_ip_whitelist_blacklist/migration.sql +19 -0
  208. package/prisma/migrations/20260714220000_chat_conversations/migration.sql +22 -0
  209. package/prisma/migrations/20260714230000_conversation_context/migration.sql +6 -0
  210. package/prisma/schema.prisma +52 -3
  211. package/public/admin/app.js +5696 -375
  212. package/public/admin/assets/logo.svg +37 -0
  213. package/public/admin/boot.js +3 -0
  214. package/public/admin/disabled.html +131 -0
  215. package/public/admin/i18n.js +1567 -0
  216. package/public/admin/index.html +16 -3
  217. package/public/admin/styles.css +3507 -190
  218. package/public/admin/vendor/marked.min.js +6 -0
  219. package/public/admin/vendor/purify.min.js +3 -0
  220. package/scripts/install.sh +8 -27
  221. package/scripts/prepare.cjs +11 -8
@@ -6,6 +6,10 @@ export declare const MAX_DOCUMENT_CONTEXT_CHARS = 200000;
6
6
  export declare const MAX_DOCUMENTS_PER_CHAT = 10;
7
7
  export declare const ALLOWED_UPLOAD_MIME_TYPES: Set<string>;
8
8
  export declare const ALLOWED_UPLOAD_EXTENSIONS: Set<string>;
9
+ /** Extension → allowed MIME set (strict pairing). */
10
+ export declare const EXT_MIME_MAP: Record<string, Set<string>>;
11
+ export declare function isImageMime(mime: string): boolean;
12
+ export declare function isTextualMime(mime: string): boolean;
9
13
  export declare const CHAT_STATUS: {
10
14
  readonly PENDING: "pending";
11
15
  readonly SUCCESS: "success";
@@ -18,6 +22,7 @@ export declare const AUDIT_ACTIONS: {
18
22
  readonly DOCUMENT_DELETE: "document.delete";
19
23
  readonly DOCUMENT_LIST: "document.list";
20
24
  readonly DOCUMENT_READ: "document.read";
25
+ readonly DOCUMENT_DOWNLOAD: "document.download";
21
26
  readonly API_KEY_CREATE: "api_key.create";
22
27
  readonly API_KEY_UPDATE: "api_key.update";
23
28
  readonly API_KEY_DELETE: "api_key.delete";
@@ -26,6 +31,20 @@ export declare const AUDIT_ACTIONS: {
26
31
  readonly CHAT_ADMIN_VIEW: "chat.admin_view";
27
32
  readonly SYSTEM_UPDATE: "system.update";
28
33
  readonly SYSTEM_UPDATE_CHECK: "system.update_check";
34
+ readonly IP_BAN: "ip.ban";
35
+ readonly IP_UNBAN: "ip.unban";
36
+ readonly DDOS_POLICY_UPDATE: "ddos.policy_update";
37
+ readonly PM2_START: "pm2.start";
38
+ readonly PM2_STOP: "pm2.stop";
39
+ readonly PM2_RESTART: "pm2.restart";
40
+ readonly PM2_RELOAD: "pm2.reload";
41
+ readonly PM2_CONFIG: "pm2.config";
42
+ readonly PM2_SWITCH: "pm2.switch";
43
+ readonly PLAYGROUND_CHAT: "playground.chat";
44
+ readonly PLAYGROUND_UPLOAD: "playground.upload";
45
+ readonly CONVERSATION_CREATE: "conversation.create";
46
+ readonly CONVERSATION_UPDATE: "conversation.update";
47
+ readonly CONVERSATION_DELETE: "conversation.delete";
29
48
  };
30
49
  export declare const ROLES: {
31
50
  readonly CLIENT: "client";
@@ -45,7 +64,19 @@ export declare const SETTING_KEYS: {
45
64
  readonly SAFE_TOOLS_MODE: "safe_tools_mode";
46
65
  readonly DEFAULT_MODEL: "default_model";
47
66
  readonly ADMIN_PANEL_ENABLED: "admin_panel_enabled";
67
+ /** JSON blob: runtime DDoS / rate-limit / auto-ban policy */
68
+ readonly DDOS_POLICY: "ddos_policy";
48
69
  };
70
+ /** IpBlacklist.source values */
71
+ export declare const BAN_SOURCES: {
72
+ readonly MANUAL: "manual";
73
+ readonly AUTO_AUTH: "auto-auth";
74
+ readonly AUTO_RATE: "auto-rate";
75
+ readonly AUTO_CONN: "auto-conn";
76
+ readonly AUTO_VELOCITY: "auto-velocity";
77
+ readonly AUTO_ESCALATE: "auto-escalate";
78
+ };
79
+ export type BanSource = (typeof BAN_SOURCES)[keyof typeof BAN_SOURCES];
49
80
  export declare const SAFE_TOOLS_MODES: {
50
81
  readonly NONE: "none";
51
82
  readonly READONLY: "readonly";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAClD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,yBAAyB,aAcpC,CAAC;AAEH,eAAO,MAAM,yBAAyB,aA+BpC,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAchB,CAAC;AAEX,eAAO,MAAM,KAAK;;;CAGR,CAAC;AAEX,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEjE,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,QAoBvB,CAAC;AAEZ,eAAO,MAAM,YAAY;;;;;;;CAOf,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,cAAc,+DAAgE,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAClD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,yBAAyB,aAsBpC,CAAC;AAEH,eAAO,MAAM,yBAAyB,aAoCpC,CAAC;AAEH,qDAAqD;AACrD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CA8CpD,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAUnD;AAED,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BhB,CAAC;AAEX,eAAO,MAAM,KAAK;;;CAGR,CAAC;AAEX,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEjE,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,QAoBvB,CAAC;AAEZ,eAAO,MAAM,YAAY;;;;;;;IAOvB,6DAA6D;;CAErD,CAAC;AAEX,gCAAgC;AAChC,eAAO,MAAM,WAAW;;;;;;;CAOd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEvE,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,cAAc,+DAAgE,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_MODELS = exports.STORAGE_TYPES = exports.SAFE_READONLY_TOOLS = exports.SAFE_TOOLS_MODES = exports.SETTING_KEYS = exports.SAFE_DISALLOWED_TOOLS = exports.KEY_MODES = exports.ROLES = exports.AUDIT_ACTIONS = exports.CHAT_STATUS = exports.ALLOWED_UPLOAD_EXTENSIONS = exports.ALLOWED_UPLOAD_MIME_TYPES = exports.MAX_DOCUMENTS_PER_CHAT = exports.MAX_DOCUMENT_CONTEXT_CHARS = exports.MAX_TOTAL_PROMPT_CHARS = exports.MAX_MESSAGE_CHARS = exports.MAX_MESSAGES = exports.API_KEY_PREFIX = void 0;
3
+ exports.DEFAULT_MODELS = exports.STORAGE_TYPES = exports.SAFE_READONLY_TOOLS = exports.SAFE_TOOLS_MODES = exports.BAN_SOURCES = exports.SETTING_KEYS = exports.SAFE_DISALLOWED_TOOLS = exports.KEY_MODES = exports.ROLES = exports.AUDIT_ACTIONS = exports.CHAT_STATUS = exports.EXT_MIME_MAP = exports.ALLOWED_UPLOAD_EXTENSIONS = exports.ALLOWED_UPLOAD_MIME_TYPES = exports.MAX_DOCUMENTS_PER_CHAT = exports.MAX_DOCUMENT_CONTEXT_CHARS = exports.MAX_TOTAL_PROMPT_CHARS = exports.MAX_MESSAGE_CHARS = exports.MAX_MESSAGES = exports.API_KEY_PREFIX = void 0;
4
+ exports.isImageMime = isImageMime;
5
+ exports.isTextualMime = isTextualMime;
4
6
  exports.API_KEY_PREFIX = 'gk_live_';
5
7
  exports.MAX_MESSAGES = 100;
6
8
  exports.MAX_MESSAGE_CHARS = 100_000;
@@ -17,10 +19,18 @@ exports.ALLOWED_UPLOAD_MIME_TYPES = new Set([
17
19
  'text/xml',
18
20
  'application/pdf',
19
21
  'application/javascript',
22
+ 'text/javascript',
20
23
  'application/typescript',
24
+ 'text/typescript',
21
25
  'text/x-python',
22
26
  'text/x-java-source',
23
- 'application/octet-stream',
27
+ 'text/css',
28
+ 'text/yaml',
29
+ 'application/x-yaml',
30
+ 'image/png',
31
+ 'image/jpeg',
32
+ 'image/webp',
33
+ 'image/gif',
24
34
  ]);
25
35
  exports.ALLOWED_UPLOAD_EXTENSIONS = new Set([
26
36
  '.txt',
@@ -53,7 +63,72 @@ exports.ALLOWED_UPLOAD_EXTENSIONS = new Set([
53
63
  '.sql',
54
64
  '.log',
55
65
  '.pdf',
66
+ '.png',
67
+ '.jpg',
68
+ '.jpeg',
69
+ '.webp',
70
+ '.gif',
56
71
  ]);
72
+ /** Extension → allowed MIME set (strict pairing). */
73
+ exports.EXT_MIME_MAP = {
74
+ '.txt': new Set(['text/plain']),
75
+ '.md': new Set(['text/plain', 'text/markdown']),
76
+ '.markdown': new Set(['text/plain', 'text/markdown']),
77
+ '.csv': new Set(['text/csv', 'text/plain']),
78
+ '.json': new Set(['application/json', 'text/plain']),
79
+ '.xml': new Set(['application/xml', 'text/xml', 'text/plain']),
80
+ '.html': new Set(['text/html']),
81
+ '.htm': new Set(['text/html']),
82
+ '.js': new Set(['application/javascript', 'text/javascript', 'text/plain']),
83
+ '.ts': new Set([
84
+ 'application/typescript',
85
+ 'text/typescript',
86
+ 'text/plain',
87
+ 'application/javascript',
88
+ ]),
89
+ '.tsx': new Set([
90
+ 'application/typescript',
91
+ 'text/typescript',
92
+ 'text/plain',
93
+ 'application/javascript',
94
+ ]),
95
+ '.jsx': new Set(['application/javascript', 'text/javascript', 'text/plain']),
96
+ '.py': new Set(['text/x-python', 'text/plain']),
97
+ '.java': new Set(['text/x-java-source', 'text/plain']),
98
+ '.go': new Set(['text/plain']),
99
+ '.rs': new Set(['text/plain']),
100
+ '.c': new Set(['text/plain']),
101
+ '.cpp': new Set(['text/plain']),
102
+ '.h': new Set(['text/plain']),
103
+ '.hpp': new Set(['text/plain']),
104
+ '.css': new Set(['text/css', 'text/plain']),
105
+ '.yml': new Set(['text/yaml', 'application/x-yaml', 'text/plain']),
106
+ '.yaml': new Set(['text/yaml', 'application/x-yaml', 'text/plain']),
107
+ '.toml': new Set(['text/plain']),
108
+ '.ini': new Set(['text/plain']),
109
+ '.env': new Set(['text/plain']),
110
+ '.sh': new Set(['text/plain']),
111
+ '.sql': new Set(['text/plain']),
112
+ '.log': new Set(['text/plain']),
113
+ '.pdf': new Set(['application/pdf']),
114
+ '.png': new Set(['image/png']),
115
+ '.jpg': new Set(['image/jpeg']),
116
+ '.jpeg': new Set(['image/jpeg']),
117
+ '.webp': new Set(['image/webp']),
118
+ '.gif': new Set(['image/gif']),
119
+ };
120
+ function isImageMime(mime) {
121
+ return mime.toLowerCase().startsWith('image/');
122
+ }
123
+ function isTextualMime(mime) {
124
+ const m = mime.toLowerCase();
125
+ return (m.startsWith('text/') ||
126
+ m === 'application/json' ||
127
+ m === 'application/xml' ||
128
+ m === 'application/javascript' ||
129
+ m === 'application/typescript' ||
130
+ m === 'application/x-yaml');
131
+ }
57
132
  exports.CHAT_STATUS = {
58
133
  PENDING: 'pending',
59
134
  SUCCESS: 'success',
@@ -66,6 +141,7 @@ exports.AUDIT_ACTIONS = {
66
141
  DOCUMENT_DELETE: 'document.delete',
67
142
  DOCUMENT_LIST: 'document.list',
68
143
  DOCUMENT_READ: 'document.read',
144
+ DOCUMENT_DOWNLOAD: 'document.download',
69
145
  API_KEY_CREATE: 'api_key.create',
70
146
  API_KEY_UPDATE: 'api_key.update',
71
147
  API_KEY_DELETE: 'api_key.delete',
@@ -74,6 +150,20 @@ exports.AUDIT_ACTIONS = {
74
150
  CHAT_ADMIN_VIEW: 'chat.admin_view',
75
151
  SYSTEM_UPDATE: 'system.update',
76
152
  SYSTEM_UPDATE_CHECK: 'system.update_check',
153
+ IP_BAN: 'ip.ban',
154
+ IP_UNBAN: 'ip.unban',
155
+ DDOS_POLICY_UPDATE: 'ddos.policy_update',
156
+ PM2_START: 'pm2.start',
157
+ PM2_STOP: 'pm2.stop',
158
+ PM2_RESTART: 'pm2.restart',
159
+ PM2_RELOAD: 'pm2.reload',
160
+ PM2_CONFIG: 'pm2.config',
161
+ PM2_SWITCH: 'pm2.switch',
162
+ PLAYGROUND_CHAT: 'playground.chat',
163
+ PLAYGROUND_UPLOAD: 'playground.upload',
164
+ CONVERSATION_CREATE: 'conversation.create',
165
+ CONVERSATION_UPDATE: 'conversation.update',
166
+ CONVERSATION_DELETE: 'conversation.delete',
77
167
  };
78
168
  exports.ROLES = {
79
169
  CLIENT: 'client',
@@ -112,6 +202,17 @@ exports.SETTING_KEYS = {
112
202
  SAFE_TOOLS_MODE: 'safe_tools_mode', // none | readonly
113
203
  DEFAULT_MODEL: 'default_model',
114
204
  ADMIN_PANEL_ENABLED: 'admin_panel_enabled',
205
+ /** JSON blob: runtime DDoS / rate-limit / auto-ban policy */
206
+ DDOS_POLICY: 'ddos_policy',
207
+ };
208
+ /** IpBlacklist.source values */
209
+ exports.BAN_SOURCES = {
210
+ MANUAL: 'manual',
211
+ AUTO_AUTH: 'auto-auth',
212
+ AUTO_RATE: 'auto-rate',
213
+ AUTO_CONN: 'auto-conn',
214
+ AUTO_VELOCITY: 'auto-velocity',
215
+ AUTO_ESCALATE: 'auto-escalate',
115
216
  };
116
217
  exports.SAFE_TOOLS_MODES = {
117
218
  NONE: 'none',
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ exports.corsOptions = {
14
14
  }
15
15
  callback(new Error(`CORS origin not allowed: ${origin}`));
16
16
  },
17
- methods: ['GET', 'POST', 'DELETE', 'OPTIONS'],
17
+ methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],
18
18
  allowedHeaders: ['Content-Type', 'Authorization', 'X-Request-Id'],
19
19
  exposedHeaders: ['X-Request-Id'],
20
20
  maxAge: 600,
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/config/cors.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAEf,QAAA,WAAW,GAAgB;IACtC,MAAM,CAAC,MAAM,EAAE,QAAQ;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC7C,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC;IACjE,cAAc,EAAE,CAAC,cAAc,CAAC;IAChC,MAAM,EAAE,GAAG;CACZ,CAAC"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/config/cors.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAEf,QAAA,WAAW,GAAgB;IACtC,MAAM,CAAC,MAAM,EAAE,QAAQ;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC;IACjE,cAAc,EAAE,CAAC,cAAc,CAAC;IAChC,MAAM,EAAE,GAAG;CACZ,CAAC"}
@@ -6,6 +6,10 @@ export declare const env: {
6
6
  defaultCwd: string;
7
7
  isProd: boolean;
8
8
  isDev: boolean;
9
+ /** Number of trusted reverse-proxy hops (0 = off). */
10
+ trustProxyHops: number;
11
+ /** @deprecated use trustProxyHops; kept as boolean for older call sites */
12
+ TRUST_PROXY: boolean;
9
13
  NODE_ENV: "development" | "test" | "production";
10
14
  PORT: number;
11
15
  HOST: string;
@@ -22,15 +26,21 @@ export declare const env: {
22
26
  GROK_SAFE_MAX_TURNS: number;
23
27
  GROK_SAFE_TIMEOUT_MS: number;
24
28
  ADMIN_PANEL_ENABLED: boolean;
29
+ PM2_ADMIN_ENABLED: boolean;
25
30
  CORS_ORIGINS: string;
26
31
  RATE_LIMIT_WINDOW_MS: number;
27
32
  RATE_LIMIT_MAX: number;
33
+ RATE_LIMIT_IP_MAX: number;
34
+ CHAT_BURST_MAX: number;
35
+ BLOCK_FAILED_AUTH_THRESHOLD: number;
36
+ BLOCK_FAILED_AUTH_WINDOW_MS: number;
37
+ BLOCK_DURATION_MS: number;
28
38
  BODY_LIMIT: string;
29
39
  UPLOAD_MAX_BYTES: number;
30
40
  DOCUMENT_DB_MAX_BYTES: number;
31
41
  STORAGE_DIR: string;
32
42
  LOG_LEVEL: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
33
- TRUST_PROXY: boolean;
43
+ PROXY_IP_SOURCE: "auto" | "cloudflare" | "nginx" | "x-forwarded-for" | "socket";
34
44
  ADMIN_BOOTSTRAP_KEY?: string | undefined;
35
45
  GCTOAC_HOME?: string | undefined;
36
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAwFA,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWf,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAyHA,eAAO,MAAM,GAAG;;;;;;;;IAWd,sDAAsD;;IAEtD,2EAA2E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE5E,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC"}
@@ -9,7 +9,8 @@ const zod_1 = require("zod");
9
9
  const node_path_1 = __importDefault(require("node:path"));
10
10
  (0, dotenv_1.config)();
11
11
  const envSchema = zod_1.z.object({
12
- NODE_ENV: zod_1.z.enum(['development', 'test', 'production']).default('development'),
12
+ // Default production for installable gateway; set development only for local coding
13
+ NODE_ENV: zod_1.z.enum(['development', 'test', 'production']).default('production'),
13
14
  PORT: zod_1.z.coerce.number().int().positive().default(3847),
14
15
  HOST: zod_1.z.string().default('0.0.0.0'),
15
16
  DATABASE_URL: zod_1.z.string().min(1),
@@ -37,18 +38,53 @@ const envSchema = zod_1.z.object({
37
38
  .string()
38
39
  .default('true')
39
40
  .transform((v) => v === 'true' || v === '1'),
41
+ PM2_ADMIN_ENABLED: zod_1.z
42
+ .string()
43
+ .default('true')
44
+ .transform((v) => v === 'true' || v === '1'),
40
45
  CORS_ORIGINS: zod_1.z.string().default('http://localhost:3847,http://127.0.0.1:3847'),
41
46
  RATE_LIMIT_WINDOW_MS: zod_1.z.coerce.number().int().positive().default(60_000),
42
47
  RATE_LIMIT_MAX: zod_1.z.coerce.number().int().positive().default(120),
48
+ /** Stricter cap for unauthenticated / IP-only traffic */
49
+ RATE_LIMIT_IP_MAX: zod_1.z.coerce.number().int().positive().default(60),
50
+ /** Short-window burst cap per chat API key (10s window) */
51
+ CHAT_BURST_MAX: zod_1.z.coerce.number().int().positive().default(20),
52
+ /** Failed auth attempts before temporary IP block */
53
+ BLOCK_FAILED_AUTH_THRESHOLD: zod_1.z.coerce.number().int().positive().default(20),
54
+ BLOCK_FAILED_AUTH_WINDOW_MS: zod_1.z.coerce.number().int().positive().default(300_000),
55
+ BLOCK_DURATION_MS: zod_1.z.coerce.number().int().positive().default(600_000),
43
56
  BODY_LIMIT: zod_1.z.string().default('1mb'),
44
57
  UPLOAD_MAX_BYTES: zod_1.z.coerce.number().int().positive().default(10 * 1024 * 1024),
45
58
  DOCUMENT_DB_MAX_BYTES: zod_1.z.coerce.number().int().positive().default(1024 * 1024),
46
59
  STORAGE_DIR: zod_1.z.string().default('./storage'),
47
60
  LOG_LEVEL: zod_1.z.enum(['fatal', 'error', 'warn', 'info', 'debug', 'trace']).default('info'),
61
+ /**
62
+ * Trust reverse proxy hops for client IP (nginx / Cloudflare / LB).
63
+ * - false / 0: use socket only (ignore X-Forwarded-For)
64
+ * - true / 1: trust 1 hop (typical nginx or CF → app)
65
+ * - 2+: e.g. Cloudflare → nginx → app
66
+ */
48
67
  TRUST_PROXY: zod_1.z
49
68
  .string()
50
- .default('true')
51
- .transform((v) => v === 'true' || v === '1'),
69
+ .default('1')
70
+ .transform((v) => {
71
+ const s = String(v).trim().toLowerCase();
72
+ if (s === 'false' || s === '0' || s === 'no' || s === 'off')
73
+ return 0;
74
+ if (s === 'true' || s === 'yes' || s === 'on')
75
+ return 1;
76
+ const n = Number(s);
77
+ if (Number.isFinite(n) && n >= 0)
78
+ return Math.min(10, Math.floor(n));
79
+ return 1;
80
+ }),
81
+ /**
82
+ * Client IP source when proxies are trusted:
83
+ * auto | cloudflare | nginx | x-forwarded-for | socket
84
+ */
85
+ PROXY_IP_SOURCE: zod_1.z
86
+ .enum(['auto', 'cloudflare', 'nginx', 'x-forwarded-for', 'socket'])
87
+ .default('auto'),
52
88
  });
53
89
  function parseEncryptionKey(raw) {
54
90
  const trimmed = raw.trim();
@@ -93,5 +129,9 @@ exports.env = {
93
129
  defaultCwd: node_path_1.default.resolve(data.GROK_DEFAULT_CWD),
94
130
  isProd: data.NODE_ENV === 'production',
95
131
  isDev: data.NODE_ENV === 'development',
132
+ /** Number of trusted reverse-proxy hops (0 = off). */
133
+ trustProxyHops: data.TRUST_PROXY,
134
+ /** @deprecated use trustProxyHops; kept as boolean for older call sites */
135
+ TRUST_PROXY: data.TRUST_PROXY > 0,
96
136
  };
97
137
  //# sourceMappingURL=env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":";;;;;;AAAA,mCAA8C;AAC9C,6BAAwB;AACxB,0DAA6B;AAE7B,IAAA,eAAU,GAAE,CAAC;AAEb,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IAC9E,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IACnC,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAElC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACpC,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IAClD,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IACzC,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1C,eAAe,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpE,mBAAmB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,mBAAmB,EAAE,OAAC;SACnB,MAAM,EAAE;SACR,OAAO,CAAC,MAAM,CAAC;SACf,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;IAC9C,yEAAyE;IACzE,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,OAAO,CAAC,OAAO,CAAC;SAChB,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;IAC9C,mBAAmB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,oBAAoB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACzE,mBAAmB,EAAE,OAAC;SACnB,MAAM,EAAE;SACR,OAAO,CAAC,MAAM,CAAC;SACf,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;IAE9C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC;IAC/E,oBAAoB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IACxE,cAAc,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;IAC/D,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACrC,gBAAgB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9E,qBAAqB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9E,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5C,SAAS,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvF,WAAW,EAAE,OAAC;SACX,MAAM,EAAE;SACR,OAAO,CAAC,MAAM,CAAC;SACf,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;CAC/C,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,SAAS;IACT,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,GAAG,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,MAAM;IACN,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;SAChC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACzB,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE9D,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB;IAC1C,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE7B,QAAA,GAAG,GAAG;IACjB,GAAG,IAAI;IACP,aAAa;IACb,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC;IAClB,YAAY;IACZ,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAC1C,UAAU,EAAE,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;IAC/C,MAAM,EAAE,IAAI,CAAC,QAAQ,KAAK,YAAY;IACtC,KAAK,EAAE,IAAI,CAAC,QAAQ,KAAK,aAAa;CACvC,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  export declare class AdminController {
2
2
  me: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
3
3
  stats: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
4
+ usage: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
5
+ models: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
4
6
  listChats: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
5
7
  getChat: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
6
8
  listKeys: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
@@ -9,6 +11,7 @@ export declare class AdminController {
9
11
  revokeKey: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
10
12
  listDocuments: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
11
13
  getDocument: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
14
+ downloadDocument: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
12
15
  deleteDocument: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
13
16
  listAudit: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
14
17
  getSettings: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
@@ -16,6 +19,38 @@ export declare class AdminController {
16
19
  system: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
17
20
  checkUpdate: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
18
21
  runUpdate: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
22
+ ddosConnections: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
23
+ ddosBlacklist: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
24
+ ddosBan: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
25
+ ddosUnban: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
26
+ ddosStats: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
27
+ ddosPolicyGet: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
28
+ ddosPolicyPut: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
29
+ ddosPolicyReset: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
30
+ ddosEvents: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
31
+ pm2Status: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
32
+ pm2Start: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
33
+ pm2Stop: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
34
+ pm2Restart: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
35
+ pm2Reload: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
36
+ pm2Logs: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
37
+ pm2ClearLogs: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
38
+ pm2GetConfig: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
39
+ pm2SaveConfig: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
40
+ pm2ResetConfig: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
41
+ pm2Switch: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
42
+ listConversations: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
43
+ getConversation: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
44
+ createConversation: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
45
+ updateConversation: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
46
+ deleteConversation: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
47
+ /**
48
+ * Admin chat playground — run completion as a selected API key (by id).
49
+ * Auth is still the admin bearer; no raw client key required.
50
+ */
51
+ playgroundChat: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
52
+ /** Upload document owned by selected API key (admin playground). */
53
+ playgroundUpload: import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
19
54
  }
20
55
  export declare const adminController: AdminController;
21
56
  //# sourceMappingURL=admin.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/admin.controller.ts"],"names":[],"mappings":"AA4BA,qBAAa,eAAe;IAC1B,EAAE,+IAYC;IAEH,KAAK,+IAGF;IAEH,SAAS,+IAIN;IAEH,OAAO,+IAQJ;IAEH,QAAQ,+IAGL;IAEH,SAAS,+IAcN;IAEH,SAAS,+IAkBN;IAEH,SAAS,+IAIN;IAEH,aAAa,+IA6BV;IAEH,WAAW,+IA2CR;IAEH,cAAc,+IAQX;IAEH,SAAS,+IA6BN;IAEH,WAAW,+IAGR;IAEH,cAAc,+IAYX;IAEH,MAAM,+IAyCH;IAEH,WAAW,+IAeR;IAEH,SAAS,+IAmCN;CACJ;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
1
+ {"version":3,"file":"admin.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/admin.controller.ts"],"names":[],"mappings":"AAyDA,qBAAa,eAAe;IAC1B,EAAE,+IAYC;IAEH,KAAK,+IAGF;IAEH,KAAK,+IAUF;IAEH,MAAM,+IAaH;IAEH,SAAS,+IAIN;IAEH,OAAO,+IAQJ;IAEH,QAAQ,+IA6BL;IAEH,SAAS,+IAeN;IAEH,SAAS,+IAmBN;IAEH,SAAS,+IAIN;IAEH,aAAa,+IA8DV;IAEH,WAAW,+IAiER;IAEH,gBAAgB,+IA4Bb;IAEH,cAAc,+IAQX;IAEH,SAAS,+IAyDN;IAEH,WAAW,+IAGR;IAEH,cAAc,+IAkBX;IAEH,MAAM,+IAkDH;IAEH,WAAW,+IAeR;IAEH,SAAS,+IAmCN;IAGH,eAAe,+IAKZ;IAEH,aAAa,+IAGV;IAEH,OAAO,+IAwBJ;IAEH,SAAS,+IAYN;IAEH,SAAS,+IA2BN;IAEH,aAAa,+IAYV;IAEH,aAAa,+IAYV;IAEH,eAAe,+IAWZ;IAEH,UAAU,+IAMP;IAGH,SAAS,+IAGN;IAEH,QAAQ,+IAeL;IAEH,OAAO,+IAUJ;IAEH,UAAU,+IAUP;IAEH,SAAS,+IAUN;IAEH,OAAO,+IAIJ;IAEH,YAAY,+IAiBT;IAEH,YAAY,+IAKT;IAEH,aAAa,+IAuBV;IAEH,cAAc,+IAWX;IAEH,SAAS,+IAmBN;IAEH,iBAAiB,+IAId;IAEH,eAAe,+IAGZ;IAEH,kBAAkB,+IAaf;IAEH,kBAAkB,+IAiBf;IAEH,kBAAkB,+IAYf;IAEH;;;OAGG;IACH,cAAc,+IAuCX;IAEH,oEAAoE;IACpE,gBAAgB,+IAgCb;CACJ;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}