hunter-mate 0.1.6 → 0.1.7

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 (120) hide show
  1. package/dist/assets/extension/background/service-worker.js +193 -16
  2. package/dist/assets/extension/manifest.json +1 -1
  3. package/dist/assets/extension/package.json +4 -3
  4. package/dist/assets/server/app.module.js +2 -1
  5. package/dist/assets/server/app.module.js.map +1 -1
  6. package/dist/assets/server/auth/auth.controller.d.ts +7 -0
  7. package/dist/assets/server/auth/auth.controller.js +20 -0
  8. package/dist/assets/server/auth/auth.controller.js.map +1 -1
  9. package/dist/assets/server/auth/auth.service.d.ts +11 -0
  10. package/dist/assets/server/auth/auth.service.js +58 -1
  11. package/dist/assets/server/auth/auth.service.js.map +1 -1
  12. package/dist/assets/server/build-info.json +1 -1
  13. package/dist/assets/server/extension/extension-control.controller.d.ts +3 -0
  14. package/dist/assets/server/extension/extension-control.controller.js +1 -1
  15. package/dist/assets/server/extension/extension-control.controller.js.map +1 -1
  16. package/dist/assets/server/extension/extension-control.service.d.ts +8 -0
  17. package/dist/assets/server/extension/extension-control.service.js +38 -1
  18. package/dist/assets/server/extension/extension-control.service.js.map +1 -1
  19. package/dist/assets/server/package.json +4 -3
  20. package/dist/assets/server/recording/recording-event-queue.service.d.ts +26 -0
  21. package/dist/assets/server/recording/recording-event-queue.service.js +115 -0
  22. package/dist/assets/server/recording/recording-event-queue.service.js.map +1 -0
  23. package/dist/assets/server/recording/recording-retention.service.d.ts +21 -0
  24. package/dist/assets/server/recording/recording-retention.service.js +85 -0
  25. package/dist/assets/server/recording/recording-retention.service.js.map +1 -0
  26. package/dist/assets/server/recording/recording.controller.d.ts +11 -1
  27. package/dist/assets/server/recording/recording.controller.js +18 -2
  28. package/dist/assets/server/recording/recording.controller.js.map +1 -1
  29. package/dist/assets/server/recording/recording.module.js +10 -1
  30. package/dist/assets/server/recording/recording.module.js.map +1 -1
  31. package/dist/assets/server/recording/recording.service.d.ts +5 -1
  32. package/dist/assets/server/recording/recording.service.js +21 -6
  33. package/dist/assets/server/recording/recording.service.js.map +1 -1
  34. package/dist/commands/cache.js +3 -4
  35. package/dist/commands/doctor.js +94 -12
  36. package/dist/commands/extension.js +14 -23
  37. package/dist/commands/extras.js +2 -2
  38. package/dist/commands/job.d.ts +4 -1
  39. package/dist/commands/job.js +51 -16
  40. package/dist/commands/login.d.ts +15 -0
  41. package/dist/commands/login.js +57 -12
  42. package/dist/commands/ops.js +18 -2
  43. package/dist/commands/record.js +2 -4
  44. package/dist/commands/report.js +2 -4
  45. package/dist/commands/search.js +9 -2
  46. package/dist/commands/server.d.ts +2 -2
  47. package/dist/commands/server.js +78 -17
  48. package/dist/commands/update.js +1 -1
  49. package/dist/i18n/locales/en-US.json +3 -1
  50. package/dist/i18n/locales/zh-CN.json +3 -1
  51. package/dist/index.js +38 -2
  52. package/dist/updater.d.ts +1 -1
  53. package/dist/updater.js +22 -5
  54. package/dist/utils/command-error.d.ts +9 -0
  55. package/dist/utils/command-error.js +31 -0
  56. package/dist/utils/proxy-detect.d.ts +20 -0
  57. package/dist/utils/proxy-detect.js +96 -0
  58. package/dist/utils/script-path.d.ts +5 -0
  59. package/dist/utils/script-path.js +27 -0
  60. package/dist/version.js +1 -1
  61. package/dist/watchdog.d.ts +23 -1
  62. package/dist/watchdog.js +95 -4
  63. package/dist/web/dist/404.html +1 -0
  64. package/dist/web/dist/_next/static/chunks/166.f30be223f694f8ee.js +1 -0
  65. package/dist/web/dist/_next/static/chunks/1e6d5a0c.0488932e17ecdf24.js +15 -0
  66. package/dist/web/dist/_next/static/chunks/539-5d0e8c5c238c56f8.js +1 -0
  67. package/dist/web/dist/_next/static/chunks/589-d632233641f35681.js +1 -0
  68. package/dist/web/dist/_next/static/chunks/671.3b8e9cc96b25b6ea.js +1 -0
  69. package/dist/web/dist/_next/static/chunks/935-99f57b7d4151d9e7.js +5 -0
  70. package/dist/web/dist/_next/static/chunks/a7067448-96dd4b8457c447e8.js +1 -0
  71. package/dist/web/dist/_next/static/chunks/app/_not-found/page-fdf1a13a7656886a.js +1 -0
  72. package/dist/web/dist/_next/static/chunks/app/auth/verify/page-8e5cff53d6f7d8e1.js +1 -0
  73. package/dist/web/dist/_next/static/chunks/app/companies/page-e38a69e1929d0953.js +1 -0
  74. package/dist/web/dist/_next/static/chunks/app/entity/page-250f8a9b6d91ab19.js +1 -0
  75. package/dist/web/dist/_next/static/chunks/app/jobs/page-6a281776fec065f6.js +1 -0
  76. package/dist/web/dist/_next/static/chunks/app/layout-83e623e973c1693f.js +1 -0
  77. package/dist/web/dist/_next/static/chunks/app/logs/page-9f41d44fa1add723.js +1 -0
  78. package/dist/web/dist/_next/static/chunks/app/matching/jobs/[id]/talents/page-f57f4b7529823601.js +1 -0
  79. package/dist/web/dist/_next/static/chunks/app/matching/portraits/[id]/jobs/page-614d1e62d7b9d215.js +1 -0
  80. package/dist/web/dist/_next/static/chunks/app/page-e3392de08ae81fba.js +1 -0
  81. package/dist/web/dist/_next/static/chunks/app/parselog/page-58d3acece95b4089.js +1 -0
  82. package/dist/web/dist/_next/static/chunks/app/recordings/page-e2e2e3c3a64083fb.js +1 -0
  83. package/dist/web/dist/_next/static/chunks/app/snapshots/[id]/agent-prompt/page-fd3b7d7373b8f8b7.js +1 -0
  84. package/dist/web/dist/_next/static/chunks/app/talents/page-30748338da20d7e0.js +1 -0
  85. package/dist/web/dist/_next/static/chunks/framework-b3a558b17a070965.js +1 -0
  86. package/dist/web/dist/_next/static/chunks/main-5a4e0cd75dd7f04b.js +1 -0
  87. package/dist/web/dist/_next/static/chunks/main-app-80b038a312917d90.js +1 -0
  88. package/dist/web/dist/_next/static/chunks/pages/_app-da7d628f49271ece.js +4 -0
  89. package/dist/web/dist/_next/static/chunks/pages/_error-17756f67e0a11350.js +1 -0
  90. package/dist/web/dist/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  91. package/dist/web/dist/_next/static/chunks/webpack-1784baecc6fdcf0b.js +1 -0
  92. package/dist/web/dist/_next/static/css/db881c5b3072b88a.css +3 -0
  93. package/dist/web/dist/_next/static/css/f60d210841fab76b.css +1 -0
  94. package/dist/web/dist/_next/static/hqJ-7vr4X71DNfzZugHJ-/_buildManifest.js +1 -0
  95. package/dist/web/dist/_next/static/hqJ-7vr4X71DNfzZugHJ-/_ssgManifest.js +1 -0
  96. package/dist/web/dist/auth/verify.html +1 -0
  97. package/dist/web/dist/auth/verify.txt +8 -0
  98. package/dist/web/dist/companies.html +1 -0
  99. package/dist/web/dist/companies.txt +7 -0
  100. package/dist/web/dist/entity.html +1 -0
  101. package/dist/web/dist/entity.txt +8 -0
  102. package/dist/web/dist/index.html +1 -0
  103. package/dist/web/dist/index.txt +8 -0
  104. package/dist/web/dist/jobs.html +1 -0
  105. package/dist/web/dist/jobs.txt +7 -0
  106. package/dist/web/dist/logs.html +1 -0
  107. package/dist/web/dist/logs.txt +8 -0
  108. package/dist/web/dist/matching/jobs/placeholder/talents.html +1 -0
  109. package/dist/web/dist/matching/jobs/placeholder/talents.txt +8 -0
  110. package/dist/web/dist/matching/portraits/placeholder/jobs.html +1 -0
  111. package/dist/web/dist/matching/portraits/placeholder/jobs.txt +8 -0
  112. package/dist/web/dist/parselog.html +1 -0
  113. package/dist/web/dist/parselog.txt +8 -0
  114. package/dist/web/dist/recordings.html +1 -0
  115. package/dist/web/dist/recordings.txt +8 -0
  116. package/dist/web/dist/snapshots/placeholder/agent-prompt.html +1 -0
  117. package/dist/web/dist/snapshots/placeholder/agent-prompt.txt +8 -0
  118. package/dist/web/dist/talents.html +1 -0
  119. package/dist/web/dist/talents.txt +7 -0
  120. package/package.json +25 -5
@@ -52,6 +52,7 @@ let ExtensionControlService = ExtensionControlService_1 = class ExtensionControl
52
52
  const enriched = { ...resp, durationMs };
53
53
  if (resp.status === 'ok' || resp.status === 'cancelled') {
54
54
  this.logger.log(`command succeeded`, { requestId: resp.requestId, status: resp.status, durationMs });
55
+ this.clearDegraded(this.clients.get(pending.extensionId));
55
56
  pending.resolve(enriched);
56
57
  }
57
58
  else if (resp.status === 'timeout') {
@@ -73,6 +74,9 @@ let ExtensionControlService = ExtensionControlService_1 = class ExtensionControl
73
74
  capabilities: c.capabilities,
74
75
  connectedAt: c.connectedAt,
75
76
  readyState: c.ws.readyState,
77
+ degraded: c.degradedSince !== undefined,
78
+ degradedReason: c.degradedReason,
79
+ degradedSince: c.degradedSince,
76
80
  }));
77
81
  }
78
82
  async sendCommand(params) {
@@ -104,7 +108,9 @@ let ExtensionControlService = ExtensionControlService_1 = class ExtensionControl
104
108
  const p = this.pending.get(requestId);
105
109
  if (p) {
106
110
  this.pending.delete(requestId);
107
- this.logger.warn(`command timed out`, { command: params.command, requestId, timeoutMs });
111
+ this.logger.warn(`command timed out`, { command: params.command, requestId, timeoutMs, extensionId: client.extensionId });
112
+ this.sendCancel(client, requestId, params.command);
113
+ this.markDegraded(client, `command ${params.command} timed out after ${timeoutMs}ms`);
108
114
  reject(new common_1.RequestTimeoutException(`Extension command ${params.command} timed out after ${timeoutMs}ms`));
109
115
  }
110
116
  }, timeoutMs + 500);
@@ -113,6 +119,7 @@ let ExtensionControlService = ExtensionControlService_1 = class ExtensionControl
113
119
  reject,
114
120
  timer,
115
121
  startedAt: Date.now(),
122
+ extensionId: client.extensionId,
116
123
  });
117
124
  try {
118
125
  client.ws.send(JSON.stringify(cmd));
@@ -145,6 +152,36 @@ let ExtensionControlService = ExtensionControlService_1 = class ExtensionControl
145
152
  throw err;
146
153
  }
147
154
  }
155
+ sendCancel(client, requestId, command) {
156
+ if (client.ws.readyState !== ws_1.WebSocket.OPEN)
157
+ return;
158
+ try {
159
+ const cancelCmd = {
160
+ type: 'cmd',
161
+ requestId: (0, crypto_1.randomUUID)(),
162
+ command: 'cancel',
163
+ params: { requestId, command },
164
+ timeoutMs: 5000,
165
+ };
166
+ client.ws.send(JSON.stringify(cancelCmd));
167
+ this.logger.log(`cancel dispatched after timeout`, { originalRequestId: requestId, command, extensionId: client.extensionId });
168
+ }
169
+ catch (err) {
170
+ this.logger.warn(`failed to dispatch cancel`, { requestId, error: err.message });
171
+ }
172
+ }
173
+ markDegraded(client, reason) {
174
+ client.degradedSince = Date.now();
175
+ client.degradedReason = reason;
176
+ this.logger.warn(`extension marked degraded`, { extensionId: client.extensionId, reason });
177
+ }
178
+ clearDegraded(client) {
179
+ if (client && client.degradedSince !== undefined) {
180
+ this.logger.log(`extension recovered from degraded`, { extensionId: client.extensionId });
181
+ client.degradedSince = undefined;
182
+ client.degradedReason = undefined;
183
+ }
184
+ }
148
185
  async pickClientWithRetry(extensionId) {
149
186
  const MAX_WAIT_MS = 35000;
150
187
  const PROBE_INTERVAL_MS = 2000;
@@ -1 +1 @@
1
- {"version":3,"file":"extension-control.service.js","sourceRoot":"","sources":["../../src/extension/extension-control.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension-control.service.js","sourceRoot":"","sources":["../../src/extension/extension-control.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAA6H;AAC7H,2BAA+B;AAC/B,mCAAoC;AAOpC,6DAAyD;AAuBlD,IAAM,uBAAuB,+BAA7B,MAAM,uBAAuB;IAQL;IAPZ,MAAM,GAAG,IAAI,eAAM,CAAC,yBAAuB,CAAC,IAAI,CAAC,CAAC;IAGlD,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE9C,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE7D,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAItD,cAAc,CAAC,EAAa,EAAE,SAA6B;QACzD,MAAM,MAAM,GAAqB;YAC/B,EAAE;YACF,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,WAAW,YAAY,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,WAAmB;QAClC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,cAAc,CAAC,IAAqB;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAClD,MAAM,QAAQ,GAAoB,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAErG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,MAAM,CAAC,IAAI,gCAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;YACjG,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,yBAAyB,CAAC,CAAC;YACvE,GAAW,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAID,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU;YAC3B,QAAQ,EAAE,CAAC,CAAC,aAAa,KAAK,SAAS;YACvC,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,aAAa,EAAE,CAAC,CAAC,aAAa;SAC/B,CAAC,CAAC,CAAC;IACN,CAAC;IAQD,KAAK,CAAC,WAAW,CAAC,MAMjB;QAGC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAA,mBAAU,GAAE,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,8BAA8B,EAAE;YAC9C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS;YACT,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,GAAG,GAAmB;YAC1B,IAAI,EAAE,KAAK;YACX,SAAS;YACT,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS;YACT,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC;QAGF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE;YACzC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACtC,IAAI,CAAC,EAAE,CAAC;wBACN,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;wBAG1H,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;wBACnD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,MAAM,CAAC,OAAO,oBAAoB,SAAS,IAAI,CAAC,CAAC;wBACtF,MAAM,CAAC,IAAI,gCAAuB,CAAC,qBAAqB,MAAM,CAAC,OAAO,oBAAoB,SAAS,IAAI,CAAC,CAAC,CAAC;oBAC5G,CAAC;gBACH,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;gBAEpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE;oBAC1B,OAAO;oBACP,MAAM;oBACN,KAAK;oBACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;iBAChC,CAAC,CAAC;gBAEH,IAAI,CAAC;oBACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;oBACtC,IAAI,CAAC,EAAE,CAAC;wBACN,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;wBACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACjC,CAAC;oBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAChI,MAAM,CAAC,IAAI,oCAA2B,CAAC,wCAAyC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC5G,CAAC;YACH,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE;gBACxC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE;gBACxC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,OAAO;gBACf,KAAK,EAAG,GAAa,CAAC,OAAO;aAC9B,CAAC,CAAC;YACH,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAOO,UAAU,CAAC,MAAwB,EAAE,SAAiB,EAAE,OAAe;QAC7E,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI;YAAE,OAAO;QACpD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG;gBAChB,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,IAAA,mBAAU,GAAE;gBACvB,OAAO,EAAE,QAAQ;gBACjB,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;gBAC9B,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iCAAiC,EAAE,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACjI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,SAAS,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAwB,EAAE,MAAc;QAC3D,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7F,CAAC;IAEO,aAAa,CAAC,MAAoC;QACxD,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mCAAmC,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1F,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC;YACjC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;QACpC,CAAC;IACH,CAAC;IAQO,KAAK,CAAC,mBAAmB,CAAC,WAAoB;QACpD,MAAM,WAAW,GAAG,KAAK,CAAC;QAC1B,MAAM,iBAAiB,GAAG,IAAI,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,OAAgB,CAAC;QACrB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,WAAW,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,GAAG,GAAG,CAAC;gBAEd,IAAI,CAAC,CAAC,GAAG,YAAY,oCAA2B,CAAC;oBAAE,MAAM,GAAG,CAAC;gBAC7D,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,MAAM,OAAO,CAAC;IAChB,CAAC;IAEO,UAAU,CAAC,WAAoB;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,oCAA2B,CACnC,8HAA8H,CAC/H,CAAC;QACJ,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACxC,IAAI,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM,IAAI,0BAAiB,CAAC,aAAa,WAAW,gBAAgB,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,IAAI,oCAA2B,CAAC,aAAa,WAAW,mCAAmC,CAAC,CAAC,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC;YACvH,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI;gBAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,IAAI,oCAA2B,CACnC,8CAA8C,IAAI,CAAC,OAAO,CAAC,IAAI,sDAAsD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClK,CAAC;IACJ,CAAC;IAMD,YAAY,CAAC,OAAgC;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAkD,EAAE,CAAC;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,2BAA2B,MAAM,CAAC,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gBAC5G,SAAS;YACX,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,KAAK,EAAE,CAAC;YACV,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC;CACF,CAAA;AAnRY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAU,GAAE;qCAS0B,8BAAa;GARvC,uBAAuB,CAmRnC"}
@@ -13,7 +13,7 @@
13
13
  "dependencies": {
14
14
  "@chromepilot/kit": "^0.1.1",
15
15
  "@chromepilot/logger-kit": "^0.1.4",
16
- "@hunter-mate/shared": "workspace:*",
16
+ "@hunter-mate/shared": "0.1.5",
17
17
  "@nestjs/axios": "^3.1.3",
18
18
  "@nestjs/common": "^10.3.0",
19
19
  "@nestjs/config": "^3.1.0",
@@ -53,5 +53,6 @@
53
53
  "ts-jest": "^29.1.0",
54
54
  "typescript": "^5.4.0",
55
55
  "vitest": "^1.6.1"
56
- }
57
- }
56
+ },
57
+ "description": " [bundled asset: runtime deps are provided by the parent hunter-mate package]"
58
+ }
@@ -0,0 +1,26 @@
1
+ import { OnModuleDestroy } from '@nestjs/common';
2
+ import { HbrEvent } from '@hunter-mate/shared';
3
+ export interface QueuedRecordingEvent {
4
+ sessionId: string;
5
+ event: HbrEvent;
6
+ }
7
+ export type RecordingFlushHandler = (items: QueuedRecordingEvent[]) => Promise<Record<string, number>>;
8
+ export declare class RecordingEventQueue implements OnModuleDestroy {
9
+ private readonly logger;
10
+ private queue;
11
+ private timer;
12
+ private flushing;
13
+ private flushHandler;
14
+ private readonly flushIntervalMs;
15
+ private readonly batchSize;
16
+ private readonly maxEventBytes;
17
+ setFlushHandler(handler: RecordingFlushHandler): void;
18
+ enqueue(sessionId: string, events: HbrEvent[]): Promise<{
19
+ sessionId: string;
20
+ eventCount: number;
21
+ }>;
22
+ flushNow(): Promise<void>;
23
+ onModuleDestroy(): void;
24
+ private scheduleFlush;
25
+ private flush;
26
+ }
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var RecordingEventQueue_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.RecordingEventQueue = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const DEFAULT_FLUSH_INTERVAL_MS = 100;
13
+ const DEFAULT_BATCH_SIZE = 100;
14
+ const DEFAULT_MAX_EVENT_BYTES = 512 * 1024;
15
+ function estimatePayloadBytes(payload) {
16
+ if (payload === undefined || payload === null)
17
+ return 0;
18
+ try {
19
+ return Buffer.byteLength(JSON.stringify(payload));
20
+ }
21
+ catch {
22
+ return Number.MAX_SAFE_INTEGER;
23
+ }
24
+ }
25
+ let RecordingEventQueue = RecordingEventQueue_1 = class RecordingEventQueue {
26
+ logger = new common_1.Logger(RecordingEventQueue_1.name);
27
+ queue = [];
28
+ timer = null;
29
+ flushing = null;
30
+ flushHandler = null;
31
+ flushIntervalMs = Number(process.env.RECORDING_FLUSH_INTERVAL_MS || DEFAULT_FLUSH_INTERVAL_MS);
32
+ batchSize = Number(process.env.RECORDING_FLUSH_BATCH_SIZE || DEFAULT_BATCH_SIZE);
33
+ maxEventBytes = Number(process.env.RECORDING_MAX_EVENT_BYTES || DEFAULT_MAX_EVENT_BYTES);
34
+ setFlushHandler(handler) {
35
+ this.flushHandler = handler;
36
+ }
37
+ enqueue(sessionId, events) {
38
+ const accepted = [];
39
+ for (const event of events) {
40
+ const size = estimatePayloadBytes(event.payload);
41
+ if (size > this.maxEventBytes) {
42
+ this.logger.warn(`录制事件 payload 超过 ${this.maxEventBytes}B 上限,已丢弃`, { sessionId, eventType: event.type, size });
43
+ continue;
44
+ }
45
+ accepted.push(event);
46
+ }
47
+ return new Promise((resolve, reject) => {
48
+ this.queue.push({ sessionId, events: accepted, resolve, reject });
49
+ this.scheduleFlush();
50
+ });
51
+ }
52
+ async flushNow() {
53
+ await this.flush();
54
+ }
55
+ onModuleDestroy() {
56
+ if (this.timer) {
57
+ clearTimeout(this.timer);
58
+ this.timer = null;
59
+ }
60
+ this.flush().catch(() => undefined);
61
+ }
62
+ scheduleFlush() {
63
+ if (this.timer || this.flushing)
64
+ return;
65
+ if (this.queue.length >= this.batchSize) {
66
+ void this.flush();
67
+ return;
68
+ }
69
+ this.timer = setTimeout(() => {
70
+ this.timer = null;
71
+ void this.flush();
72
+ }, this.flushIntervalMs);
73
+ this.timer.unref?.();
74
+ }
75
+ flush() {
76
+ if (this.flushing)
77
+ return this.flushing;
78
+ if (!this.queue.length)
79
+ return Promise.resolve();
80
+ if (!this.flushHandler) {
81
+ return Promise.reject(new Error('RecordingEventQueue.flushHandler 未注册'));
82
+ }
83
+ const batch = this.queue;
84
+ this.queue = [];
85
+ this.flushing = (async () => {
86
+ try {
87
+ const items = batch.flatMap((entry) => entry.events.map((event) => ({ sessionId: entry.sessionId, event })));
88
+ const counts = await this.flushHandler(items);
89
+ for (const entry of batch) {
90
+ entry.resolve({
91
+ sessionId: entry.sessionId,
92
+ eventCount: counts[entry.sessionId] ?? 0,
93
+ });
94
+ }
95
+ }
96
+ catch (err) {
97
+ for (const entry of batch) {
98
+ entry.reject(err);
99
+ }
100
+ }
101
+ finally {
102
+ this.flushing = null;
103
+ if (this.queue.length) {
104
+ this.scheduleFlush();
105
+ }
106
+ }
107
+ })();
108
+ return this.flushing;
109
+ }
110
+ };
111
+ exports.RecordingEventQueue = RecordingEventQueue;
112
+ exports.RecordingEventQueue = RecordingEventQueue = RecordingEventQueue_1 = __decorate([
113
+ (0, common_1.Injectable)()
114
+ ], RecordingEventQueue);
115
+ //# sourceMappingURL=recording-event-queue.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-event-queue.service.js","sourceRoot":"","sources":["../../src/recording/recording-event-queue.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
2
+ import { Repository } from 'typeorm';
3
+ import { RecordingEvent } from './entities/recording-event.entity';
4
+ import { RecordingSnapshot } from './entities/recording-snapshot.entity';
5
+ export declare class RecordingRetentionService implements OnModuleInit, OnModuleDestroy {
6
+ private readonly eventRepo;
7
+ private readonly snapshotRepo;
8
+ private readonly logger;
9
+ private timer;
10
+ constructor(eventRepo: Repository<RecordingEvent>, snapshotRepo: Repository<RecordingSnapshot>);
11
+ private get retentionDays();
12
+ private get intervalMs();
13
+ onModuleInit(): void;
14
+ onModuleDestroy(): void;
15
+ prune(days?: number): Promise<{
16
+ days: number;
17
+ cutoff: string;
18
+ eventsDeleted: number;
19
+ snapshotsDeleted: number;
20
+ }>;
21
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var RecordingRetentionService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.RecordingRetentionService = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const typeorm_1 = require("@nestjs/typeorm");
19
+ const typeorm_2 = require("typeorm");
20
+ const recording_event_entity_1 = require("./entities/recording-event.entity");
21
+ const recording_snapshot_entity_1 = require("./entities/recording-snapshot.entity");
22
+ let RecordingRetentionService = RecordingRetentionService_1 = class RecordingRetentionService {
23
+ eventRepo;
24
+ snapshotRepo;
25
+ logger = new common_1.Logger(RecordingRetentionService_1.name);
26
+ timer = null;
27
+ constructor(eventRepo, snapshotRepo) {
28
+ this.eventRepo = eventRepo;
29
+ this.snapshotRepo = snapshotRepo;
30
+ }
31
+ get retentionDays() {
32
+ return Number(process.env.RECORDING_RETENTION_DAYS || 30);
33
+ }
34
+ get intervalMs() {
35
+ return Number(process.env.RECORDING_RETENTION_INTERVAL_MS || 24 * 60 * 60 * 1000);
36
+ }
37
+ onModuleInit() {
38
+ if (this.retentionDays <= 0) {
39
+ this.logger.log('录制保留期清理已关闭(RECORDING_RETENTION_DAYS <= 0)');
40
+ return;
41
+ }
42
+ void this.prune().catch((err) => this.logger.warn(`录制保留期清理失败: ${err.message}`));
43
+ this.timer = setInterval(() => {
44
+ void this.prune().catch((err) => this.logger.warn(`录制保留期清理失败: ${err.message}`));
45
+ }, this.intervalMs);
46
+ this.timer.unref?.();
47
+ }
48
+ onModuleDestroy() {
49
+ if (this.timer) {
50
+ clearInterval(this.timer);
51
+ this.timer = null;
52
+ }
53
+ }
54
+ async prune(days = this.retentionDays) {
55
+ if (days <= 0) {
56
+ return { days, cutoff: '', eventsDeleted: 0, snapshotsDeleted: 0 };
57
+ }
58
+ const cutoff = new Date(Date.now() - days * 24 * 60 * 60 * 1000);
59
+ const snapshotRes = await this.snapshotRepo
60
+ .createQueryBuilder()
61
+ .delete()
62
+ .where('createdAt < :cutoff', { cutoff })
63
+ .execute();
64
+ const eventRes = await this.eventRepo
65
+ .createQueryBuilder()
66
+ .delete()
67
+ .where('createdAt < :cutoff', { cutoff })
68
+ .execute();
69
+ const snapshotsDeleted = snapshotRes.affected ?? 0;
70
+ const eventsDeleted = eventRes.affected ?? 0;
71
+ if (eventsDeleted || snapshotsDeleted) {
72
+ this.logger.log(`录制保留期清理: 删除事件 ${eventsDeleted} 条、快照 ${snapshotsDeleted} 条(早于 ${days} 天)`);
73
+ }
74
+ return { days, cutoff: cutoff.toISOString(), eventsDeleted, snapshotsDeleted };
75
+ }
76
+ };
77
+ exports.RecordingRetentionService = RecordingRetentionService;
78
+ exports.RecordingRetentionService = RecordingRetentionService = RecordingRetentionService_1 = __decorate([
79
+ (0, common_1.Injectable)(),
80
+ __param(0, (0, typeorm_1.InjectRepository)(recording_event_entity_1.RecordingEvent)),
81
+ __param(1, (0, typeorm_1.InjectRepository)(recording_snapshot_entity_1.RecordingSnapshot)),
82
+ __metadata("design:paramtypes", [typeorm_2.Repository,
83
+ typeorm_2.Repository])
84
+ ], RecordingRetentionService);
85
+ //# sourceMappingURL=recording-retention.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording-retention.service.js","sourceRoot":"","sources":["../../src/recording/recording-retention.service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  import { RecordingService } from './recording.service';
2
+ import { RecordingRetentionService } from './recording-retention.service';
2
3
  import { ExtractionService } from '../extraction/extraction.service';
3
4
  import { HbrEvent } from '@hunter-mate/shared';
4
5
  export declare class RecordingController {
5
6
  private readonly recordingService;
6
7
  private readonly extractionService;
7
- constructor(recordingService: RecordingService, extractionService: ExtractionService);
8
+ private readonly retentionService;
9
+ constructor(recordingService: RecordingService, extractionService: ExtractionService, retentionService: RecordingRetentionService);
8
10
  listRecordings(limit?: string, q?: string, from?: string, to?: string): Promise<{
9
11
  sessions: {
10
12
  sessionId: string;
@@ -51,4 +53,12 @@ export declare class RecordingController {
51
53
  isNew: boolean;
52
54
  } | null;
53
55
  }>;
56
+ pruneRecordings(body?: {
57
+ days?: number;
58
+ }): Promise<{
59
+ days: number;
60
+ cutoff: string;
61
+ eventsDeleted: number;
62
+ snapshotsDeleted: number;
63
+ }>;
54
64
  }
@@ -15,13 +15,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.RecordingController = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const recording_service_1 = require("./recording.service");
18
+ const recording_retention_service_1 = require("./recording-retention.service");
18
19
  const extraction_service_1 = require("../extraction/extraction.service");
19
20
  let RecordingController = class RecordingController {
20
21
  recordingService;
21
22
  extractionService;
22
- constructor(recordingService, extractionService) {
23
+ retentionService;
24
+ constructor(recordingService, extractionService, retentionService) {
23
25
  this.recordingService = recordingService;
24
26
  this.extractionService = extractionService;
27
+ this.retentionService = retentionService;
25
28
  }
26
29
  listRecordings(limit, q, from, to) {
27
30
  return this.recordingService.listRecordings(limit ? Math.min(Number(limit) || 50, 500) : 50, { q, from, to });
@@ -35,6 +38,11 @@ let RecordingController = class RecordingController {
35
38
  parseRecording(sessionId) {
36
39
  return this.extractionService.parseSession(sessionId);
37
40
  }
41
+ pruneRecordings(body) {
42
+ const raw = body?.days;
43
+ const days = raw !== undefined && Number.isFinite(Number(raw)) ? Number(raw) : undefined;
44
+ return this.retentionService.prune(days);
45
+ }
38
46
  };
39
47
  exports.RecordingController = RecordingController;
40
48
  __decorate([
@@ -69,9 +77,17 @@ __decorate([
69
77
  __metadata("design:paramtypes", [String]),
70
78
  __metadata("design:returntype", void 0)
71
79
  ], RecordingController.prototype, "parseRecording", null);
80
+ __decorate([
81
+ (0, common_1.Post)('prune'),
82
+ __param(0, (0, common_1.Body)()),
83
+ __metadata("design:type", Function),
84
+ __metadata("design:paramtypes", [Object]),
85
+ __metadata("design:returntype", void 0)
86
+ ], RecordingController.prototype, "pruneRecordings", null);
72
87
  exports.RecordingController = RecordingController = __decorate([
73
88
  (0, common_1.Controller)('api/recordings'),
74
89
  __metadata("design:paramtypes", [recording_service_1.RecordingService,
75
- extraction_service_1.ExtractionService])
90
+ extraction_service_1.ExtractionService,
91
+ recording_retention_service_1.RecordingRetentionService])
76
92
  ], RecordingController);
77
93
  //# sourceMappingURL=recording.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recording.controller.js","sourceRoot":"","sources":["../../src/recording/recording.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA2E;AAC3E,2DAAuD;AACvD,yEAAqE;AAI9D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAEX;IACA;IAFnB,YACmB,gBAAkC,EAClC,iBAAoC;QADpC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAmB;IACpD,CAAC;IAGJ,cAAc,CACI,KAAc,EAClB,CAAU,EACP,IAAa,EACf,EAAW;QAExB,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACzC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAC/C,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAChB,CAAC;IACJ,CAAC;IAGD,aAAa,CACS,SAAiB,EAC7B,MAAkB;QAE1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAGD,YAAY,CAAqB,SAAiB;QAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAGD,cAAc,CAAqB,SAAiB;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF,CAAA;AApCY,kDAAmB;AAO9B;IADC,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;IACd,WAAA,IAAA,cAAK,EAAC,GAAG,CAAC,CAAA;IACV,WAAA,IAAA,cAAK,EAAC,MAAM,CAAC,CAAA;IACb,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;yDAMb;AAGD;IADC,IAAA,aAAI,EAAC,mBAAmB,CAAC;IAEvB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAClB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;wDAGR;AAGD;IADC,IAAA,YAAG,EAAC,YAAY,CAAC;IACJ,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;uDAE/B;AAGD;IADC,IAAA,aAAI,EAAC,kBAAkB,CAAC;IACT,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;yDAEjC;8BAnCU,mBAAmB;IAD/B,IAAA,mBAAU,EAAC,gBAAgB,CAAC;qCAGU,oCAAgB;QACf,sCAAiB;GAH5C,mBAAmB,CAoC/B"}
1
+ {"version":3,"file":"recording.controller.js","sourceRoot":"","sources":["../../src/recording/recording.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA2E;AAC3E,2DAAuD;AACvD,+EAA0E;AAC1E,yEAAqE;AAI9D,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAEX;IACA;IACA;IAHnB,YACmB,gBAAkC,EAClC,iBAAoC,EACpC,gBAA2C;QAF3C,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,qBAAgB,GAAhB,gBAAgB,CAA2B;IAC3D,CAAC;IAGJ,cAAc,CACI,KAAc,EAClB,CAAU,EACP,IAAa,EACf,EAAW;QAExB,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,CACzC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAC/C,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAChB,CAAC;IACJ,CAAC;IAGD,aAAa,CACS,SAAiB,EAC7B,MAAkB;QAE1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAGD,YAAY,CAAqB,SAAiB;QAChD,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAGD,cAAc,CAAqB,SAAiB;QAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAID,eAAe,CAAS,IAAwB;QAC9C,MAAM,GAAG,GAAG,IAAI,EAAE,IAAI,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF,CAAA;AA7CY,kDAAmB;AAQ9B;IADC,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,cAAK,EAAC,OAAO,CAAC,CAAA;IACd,WAAA,IAAA,cAAK,EAAC,GAAG,CAAC,CAAA;IACV,WAAA,IAAA,cAAK,EAAC,MAAM,CAAC,CAAA;IACb,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;yDAMb;AAGD;IADC,IAAA,aAAI,EAAC,mBAAmB,CAAC;IAEvB,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;IAClB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;wDAGR;AAGD;IADC,IAAA,YAAG,EAAC,YAAY,CAAC;IACJ,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;uDAE/B;AAGD;IADC,IAAA,aAAI,EAAC,kBAAkB,CAAC;IACT,WAAA,IAAA,cAAK,EAAC,WAAW,CAAC,CAAA;;;;yDAEjC;AAID;IADC,IAAA,aAAI,EAAC,OAAO,CAAC;IACG,WAAA,IAAA,aAAI,GAAE,CAAA;;;;0DAItB;8BA5CU,mBAAmB;IAD/B,IAAA,mBAAU,EAAC,gBAAgB,CAAC;qCAGU,oCAAgB;QACf,sCAAiB;QAClB,uDAAyB;GAJnD,mBAAmB,CA6C/B"}
@@ -16,6 +16,8 @@ const recording_event_entity_1 = require("./entities/recording-event.entity");
16
16
  const recording_snapshot_entity_1 = require("./entities/recording-snapshot.entity");
17
17
  const recording_snapshot_service_1 = require("./recording-snapshot.service");
18
18
  const recording_event_bus_service_1 = require("./recording-event-bus.service");
19
+ const recording_event_queue_service_1 = require("./recording-event-queue.service");
20
+ const recording_retention_service_1 = require("./recording-retention.service");
19
21
  const extension_module_1 = require("../extension/extension.module");
20
22
  const extraction_module_1 = require("../extraction/extraction.module");
21
23
  let RecordingModule = class RecordingModule {
@@ -29,7 +31,14 @@ exports.RecordingModule = RecordingModule = __decorate([
29
31
  (0, common_1.forwardRef)(() => extraction_module_1.ExtractionModule),
30
32
  ],
31
33
  controllers: [recording_controller_1.RecordingController],
32
- providers: [recording_service_1.RecordingService, recording_gateway_1.RecordingGateway, recording_snapshot_service_1.RecordingSnapshotService, recording_event_bus_service_1.RecordingEventBus],
34
+ providers: [
35
+ recording_service_1.RecordingService,
36
+ recording_gateway_1.RecordingGateway,
37
+ recording_snapshot_service_1.RecordingSnapshotService,
38
+ recording_event_bus_service_1.RecordingEventBus,
39
+ recording_event_queue_service_1.RecordingEventQueue,
40
+ recording_retention_service_1.RecordingRetentionService,
41
+ ],
33
42
  exports: [recording_service_1.RecordingService, recording_gateway_1.RecordingGateway, recording_snapshot_service_1.RecordingSnapshotService, recording_event_bus_service_1.RecordingEventBus],
34
43
  })
35
44
  ], RecordingModule);
@@ -1 +1 @@
1
- {"version":3,"file":"recording.module.js","sourceRoot":"","sources":["../../src/recording/recording.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,6CAAgD;AAChD,iEAA6D;AAC7D,2DAAuD;AACvD,2DAAuD;AACvD,8EAAmE;AACnE,oFAAyE;AACzE,6EAAwE;AACxE,+EAAkE;AAClE,oEAAgE;AAChE,uEAAmE;AAY5D,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAV3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,uCAAc,EAAE,6CAAiB,CAAC,CAAC;YAC7D,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC;YACjC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,oCAAgB,CAAC;SACnC;QACD,WAAW,EAAE,CAAC,0CAAmB,CAAC;QAClC,SAAS,EAAE,CAAC,oCAAgB,EAAE,oCAAgB,EAAE,qDAAwB,EAAE,+CAAiB,CAAC;QAC5F,OAAO,EAAE,CAAC,oCAAgB,EAAE,oCAAgB,EAAE,qDAAwB,EAAE,+CAAiB,CAAC;KAC3F,CAAC;GACW,eAAe,CAAG"}
1
+ {"version":3,"file":"recording.module.js","sourceRoot":"","sources":["../../src/recording/recording.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,6CAAgD;AAChD,iEAA6D;AAC7D,2DAAuD;AACvD,2DAAuD;AACvD,8EAAmE;AACnE,oFAAyE;AACzE,6EAAwE;AACxE,+EAAkE;AAClE,mFAAsE;AACtE,+EAA0E;AAC1E,oEAAgE;AAChE,uEAAmE;AAmB5D,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAjB3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC,CAAC,uCAAc,EAAE,6CAAiB,CAAC,CAAC;YAC7D,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,kCAAe,CAAC;YACjC,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,oCAAgB,CAAC;SACnC;QACD,WAAW,EAAE,CAAC,0CAAmB,CAAC;QAClC,SAAS,EAAE;YACT,oCAAgB;YAChB,oCAAgB;YAChB,qDAAwB;YACxB,+CAAiB;YACjB,mDAAmB;YACnB,uDAAyB;SAC1B;QACD,OAAO,EAAE,CAAC,oCAAgB,EAAE,oCAAgB,EAAE,qDAAwB,EAAE,+CAAiB,CAAC;KAC3F,CAAC;GACW,eAAe,CAAG"}
@@ -3,15 +3,19 @@ import { HbrEvent } from '@hunter-mate/shared';
3
3
  import { RecordingEvent } from './entities/recording-event.entity';
4
4
  import { RecordingSnapshotService } from './recording-snapshot.service';
5
5
  import { RecordingEventBus } from './recording-event-bus.service';
6
+ import { RecordingEventQueue } from './recording-event-queue.service';
6
7
  export declare class RecordingService {
7
8
  private readonly eventRepo;
8
9
  private readonly snapshotService;
9
10
  private readonly eventBus;
10
- constructor(eventRepo: Repository<RecordingEvent>, snapshotService: RecordingSnapshotService, eventBus: RecordingEventBus);
11
+ private readonly writeQueue;
12
+ constructor(eventRepo: Repository<RecordingEvent>, snapshotService: RecordingSnapshotService, eventBus: RecordingEventBus, writeQueue: RecordingEventQueue);
11
13
  storeEvents(sessionId: string, events: HbrEvent[]): Promise<{
12
14
  sessionId: string;
13
15
  eventCount: number;
14
16
  }>;
17
+ flushPendingWrites(): Promise<void>;
18
+ private persistBatch;
15
19
  getRecording(sessionId: string): Promise<{
16
20
  sessionId: string;
17
21
  eventCount: number;
@@ -19,18 +19,28 @@ const typeorm_2 = require("typeorm");
19
19
  const recording_event_entity_1 = require("./entities/recording-event.entity");
20
20
  const recording_snapshot_service_1 = require("./recording-snapshot.service");
21
21
  const recording_event_bus_service_1 = require("./recording-event-bus.service");
22
+ const recording_event_queue_service_1 = require("./recording-event-queue.service");
22
23
  const rrweb_snapshot_utils_1 = require("../extraction/rrweb-snapshot.utils");
23
24
  let RecordingService = class RecordingService {
24
25
  eventRepo;
25
26
  snapshotService;
26
27
  eventBus;
27
- constructor(eventRepo, snapshotService, eventBus) {
28
+ writeQueue;
29
+ constructor(eventRepo, snapshotService, eventBus, writeQueue) {
28
30
  this.eventRepo = eventRepo;
29
31
  this.snapshotService = snapshotService;
30
32
  this.eventBus = eventBus;
33
+ this.writeQueue = writeQueue;
34
+ this.writeQueue.setFlushHandler((items) => this.persistBatch(items));
31
35
  }
32
36
  async storeEvents(sessionId, events) {
33
- const entities = events.map((event) => this.eventRepo.create({
37
+ return this.writeQueue.enqueue(sessionId, events);
38
+ }
39
+ async flushPendingWrites() {
40
+ await this.writeQueue.flushNow();
41
+ }
42
+ async persistBatch(items) {
43
+ const entities = items.map(({ sessionId, event }) => this.eventRepo.create({
34
44
  sessionId,
35
45
  eventType: event.type,
36
46
  payload: event.payload,
@@ -43,14 +53,18 @@ let RecordingService = class RecordingService {
43
53
  const snapshot = await this.snapshotService.createFromEvent(entity);
44
54
  if (snapshot) {
45
55
  this.eventBus.emit('recording.snapshot.created', {
46
- sessionId,
56
+ sessionId: entity.sessionId,
47
57
  snapshotId: snapshot.id,
48
58
  });
49
59
  }
50
60
  }
51
61
  }
52
- const count = await this.eventRepo.count({ where: { sessionId } });
53
- return { sessionId, eventCount: count };
62
+ const counts = {};
63
+ const sessionIds = Array.from(new Set(items.map((i) => i.sessionId)));
64
+ for (const sid of sessionIds) {
65
+ counts[sid] = await this.eventRepo.count({ where: { sessionId: sid } });
66
+ }
67
+ return counts;
54
68
  }
55
69
  async getRecording(sessionId) {
56
70
  const events = await this.eventRepo.find({
@@ -119,6 +133,7 @@ exports.RecordingService = RecordingService = __decorate([
119
133
  __param(0, (0, typeorm_1.InjectRepository)(recording_event_entity_1.RecordingEvent)),
120
134
  __metadata("design:paramtypes", [typeorm_2.Repository,
121
135
  recording_snapshot_service_1.RecordingSnapshotService,
122
- recording_event_bus_service_1.RecordingEventBus])
136
+ recording_event_bus_service_1.RecordingEventBus,
137
+ recording_event_queue_service_1.RecordingEventQueue])
123
138
  ], RecordingService);
124
139
  //# sourceMappingURL=recording.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recording.service.js","sourceRoot":"","sources":["../../src/recording/recording.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recording.service.js","sourceRoot":"","sources":["../../src/recording/recording.service.ts"],"names":[],"mappings":"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"}