hunter-mate 0.1.2 → 0.1.4

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 (448) hide show
  1. package/LICENSE +21 -0
  2. package/dist/assets/extension/_locales/en_US/messages.json +5 -0
  3. package/dist/assets/extension/_locales/zh_CN/messages.json +5 -0
  4. package/dist/assets/extension/background/service-worker.js +3342 -0
  5. package/dist/assets/extension/content/index.js +13765 -0
  6. package/dist/assets/extension/manifest.json +47 -0
  7. package/dist/assets/extension/package.json +24 -0
  8. package/dist/assets/extension/sidepanel/index.html +400 -0
  9. package/dist/assets/extension/sidepanel/index.js +926 -0
  10. package/dist/assets/server/agent-session/agent-session.controller.d.ts +32 -0
  11. package/dist/assets/server/agent-session/agent-session.controller.js +83 -0
  12. package/dist/assets/server/agent-session/agent-session.controller.js.map +1 -0
  13. package/dist/assets/server/agent-session/agent-session.guard.d.ts +4 -0
  14. package/dist/assets/server/agent-session/agent-session.guard.js +32 -0
  15. package/dist/assets/server/agent-session/agent-session.guard.js.map +1 -0
  16. package/dist/assets/server/agent-session/agent-session.module.d.ts +2 -0
  17. package/dist/assets/server/agent-session/agent-session.module.js +28 -0
  18. package/dist/assets/server/agent-session/agent-session.module.js.map +1 -0
  19. package/dist/assets/server/agent-session/agent-session.service.d.ts +54 -0
  20. package/dist/assets/server/agent-session/agent-session.service.js +431 -0
  21. package/dist/assets/server/agent-session/agent-session.service.js.map +1 -0
  22. package/dist/assets/server/agent-session/agent-session.types.d.ts +56 -0
  23. package/dist/assets/server/agent-session/agent-session.types.js +3 -0
  24. package/dist/assets/server/agent-session/agent-session.types.js.map +1 -0
  25. package/dist/assets/server/agent-session/entities/agent-event.entity.d.ts +12 -0
  26. package/dist/assets/server/agent-session/entities/agent-event.entity.js +73 -0
  27. package/dist/assets/server/agent-session/entities/agent-event.entity.js.map +1 -0
  28. package/dist/assets/server/agent-session/entities/agent-message.entity.d.ts +13 -0
  29. package/dist/assets/server/agent-session/entities/agent-message.entity.js +77 -0
  30. package/dist/assets/server/agent-session/entities/agent-message.entity.js.map +1 -0
  31. package/dist/assets/server/agent-session/entities/agent-session.entity.d.ts +14 -0
  32. package/dist/assets/server/agent-session/entities/agent-session.entity.js +83 -0
  33. package/dist/assets/server/agent-session/entities/agent-session.entity.js.map +1 -0
  34. package/dist/assets/server/app.module.d.ts +4 -0
  35. package/dist/assets/server/app.module.js +127 -0
  36. package/dist/assets/server/app.module.js.map +1 -0
  37. package/dist/assets/server/auth/auth.controller.d.ts +22 -0
  38. package/dist/assets/server/auth/auth.controller.js +88 -0
  39. package/dist/assets/server/auth/auth.controller.js.map +1 -0
  40. package/dist/assets/server/auth/auth.middleware.d.ts +5 -0
  41. package/dist/assets/server/auth/auth.middleware.js +34 -0
  42. package/dist/assets/server/auth/auth.middleware.js.map +1 -0
  43. package/dist/assets/server/auth/auth.module.d.ts +2 -0
  44. package/dist/assets/server/auth/auth.module.js +24 -0
  45. package/dist/assets/server/auth/auth.module.js.map +1 -0
  46. package/dist/assets/server/auth/auth.service.d.ts +30 -0
  47. package/dist/assets/server/auth/auth.service.js +183 -0
  48. package/dist/assets/server/auth/auth.service.js.map +1 -0
  49. package/dist/assets/server/auth/auth.types.d.ts +28 -0
  50. package/dist/assets/server/auth/auth.types.js +3 -0
  51. package/dist/assets/server/auth/auth.types.js.map +1 -0
  52. package/dist/assets/server/build-info.json +4 -0
  53. package/dist/assets/server/common/common.module.d.ts +2 -0
  54. package/dist/assets/server/common/common.module.js +22 -0
  55. package/dist/assets/server/common/common.module.js.map +1 -0
  56. package/dist/assets/server/common/crypto.service.d.ts +11 -0
  57. package/dist/assets/server/common/crypto.service.js +73 -0
  58. package/dist/assets/server/common/crypto.service.js.map +1 -0
  59. package/dist/assets/server/communication/communication-record.entity.d.ts +15 -0
  60. package/dist/assets/server/communication/communication-record.entity.js +80 -0
  61. package/dist/assets/server/communication/communication-record.entity.js.map +1 -0
  62. package/dist/assets/server/communication/communication.controller.d.ts +12 -0
  63. package/dist/assets/server/communication/communication.controller.js +61 -0
  64. package/dist/assets/server/communication/communication.controller.js.map +1 -0
  65. package/dist/assets/server/communication/communication.module.d.ts +2 -0
  66. package/dist/assets/server/communication/communication.module.js +25 -0
  67. package/dist/assets/server/communication/communication.module.js.map +1 -0
  68. package/dist/assets/server/communication/communication.service.d.ts +23 -0
  69. package/dist/assets/server/communication/communication.service.js +51 -0
  70. package/dist/assets/server/communication/communication.service.js.map +1 -0
  71. package/dist/assets/server/db/schema-validator.service.d.ts +25 -0
  72. package/dist/assets/server/db/schema-validator.service.js +107 -0
  73. package/dist/assets/server/db/schema-validator.service.js.map +1 -0
  74. package/dist/assets/server/db/schema-version.entity.d.ts +5 -0
  75. package/dist/assets/server/db/schema-version.entity.js +35 -0
  76. package/dist/assets/server/db/schema-version.entity.js.map +1 -0
  77. package/dist/assets/server/db/sqlite.module.d.ts +2 -0
  78. package/dist/assets/server/db/sqlite.module.js +83 -0
  79. package/dist/assets/server/db/sqlite.module.js.map +1 -0
  80. package/dist/assets/server/devops/devops-sink-init.d.ts +23 -0
  81. package/dist/assets/server/devops/devops-sink-init.js +101 -0
  82. package/dist/assets/server/devops/devops-sink-init.js.map +1 -0
  83. package/dist/assets/server/devops/devops-sink-init.spec.d.ts +1 -0
  84. package/dist/assets/server/devops/devops-sink-init.spec.js +71 -0
  85. package/dist/assets/server/devops/devops-sink-init.spec.js.map +1 -0
  86. package/dist/assets/server/devops/devops-sink.module.d.ts +2 -0
  87. package/dist/assets/server/devops/devops-sink.module.js +22 -0
  88. package/dist/assets/server/devops/devops-sink.module.js.map +1 -0
  89. package/dist/assets/server/doctor/doctor.controller.d.ts +13 -0
  90. package/dist/assets/server/doctor/doctor.controller.js +62 -0
  91. package/dist/assets/server/doctor/doctor.controller.js.map +1 -0
  92. package/dist/assets/server/doctor/doctor.module.d.ts +2 -0
  93. package/dist/assets/server/doctor/doctor.module.js +27 -0
  94. package/dist/assets/server/doctor/doctor.module.js.map +1 -0
  95. package/dist/assets/server/doctor/doctor.service.d.ts +15 -0
  96. package/dist/assets/server/doctor/doctor.service.js +209 -0
  97. package/dist/assets/server/doctor/doctor.service.js.map +1 -0
  98. package/dist/assets/server/doctor/doctor.types.d.ts +46 -0
  99. package/dist/assets/server/doctor/doctor.types.js +3 -0
  100. package/dist/assets/server/doctor/doctor.types.js.map +1 -0
  101. package/dist/assets/server/extension/extension-control.controller.d.ts +67 -0
  102. package/dist/assets/server/extension/extension-control.controller.js +173 -0
  103. package/dist/assets/server/extension/extension-control.controller.js.map +1 -0
  104. package/dist/assets/server/extension/extension-control.service.d.ts +46 -0
  105. package/dist/assets/server/extension/extension-control.service.js +212 -0
  106. package/dist/assets/server/extension/extension-control.service.js.map +1 -0
  107. package/dist/assets/server/extension/extension-core.module.d.ts +2 -0
  108. package/dist/assets/server/extension/extension-core.module.js +21 -0
  109. package/dist/assets/server/extension/extension-core.module.js.map +1 -0
  110. package/dist/assets/server/extension/extension-version.controller.d.ts +6 -0
  111. package/dist/assets/server/extension/extension-version.controller.js +41 -0
  112. package/dist/assets/server/extension/extension-version.controller.js.map +1 -0
  113. package/dist/assets/server/extension/extension.module.d.ts +2 -0
  114. package/dist/assets/server/extension/extension.module.js +25 -0
  115. package/dist/assets/server/extension/extension.module.js.map +1 -0
  116. package/dist/assets/server/extraction/adapter.service.d.ts +55 -0
  117. package/dist/assets/server/extraction/adapter.service.js +275 -0
  118. package/dist/assets/server/extraction/adapter.service.js.map +1 -0
  119. package/dist/assets/server/extraction/anomaly-report.service.d.ts +12 -0
  120. package/dist/assets/server/extraction/anomaly-report.service.js +81 -0
  121. package/dist/assets/server/extraction/anomaly-report.service.js.map +1 -0
  122. package/dist/assets/server/extraction/entities/adapter-rule.entity.d.ts +13 -0
  123. package/dist/assets/server/extraction/entities/adapter-rule.entity.js +71 -0
  124. package/dist/assets/server/extraction/entities/adapter-rule.entity.js.map +1 -0
  125. package/dist/assets/server/extraction/entities/company-profile.entity.d.ts +14 -0
  126. package/dist/assets/server/extraction/entities/company-profile.entity.js +81 -0
  127. package/dist/assets/server/extraction/entities/company-profile.entity.js.map +1 -0
  128. package/dist/assets/server/extraction/entities/job-posting.entity.d.ts +15 -0
  129. package/dist/assets/server/extraction/entities/job-posting.entity.js +86 -0
  130. package/dist/assets/server/extraction/entities/job-posting.entity.js.map +1 -0
  131. package/dist/assets/server/extraction/entities/parse-log.entity.d.ts +18 -0
  132. package/dist/assets/server/extraction/entities/parse-log.entity.js +102 -0
  133. package/dist/assets/server/extraction/entities/parse-log.entity.js.map +1 -0
  134. package/dist/assets/server/extraction/entities/talent-profile.entity.d.ts +15 -0
  135. package/dist/assets/server/extraction/entities/talent-profile.entity.js +86 -0
  136. package/dist/assets/server/extraction/entities/talent-profile.entity.js.map +1 -0
  137. package/dist/assets/server/extraction/extraction-entity.controller.d.ts +138 -0
  138. package/dist/assets/server/extraction/extraction-entity.controller.js +493 -0
  139. package/dist/assets/server/extraction/extraction-entity.controller.js.map +1 -0
  140. package/dist/assets/server/extraction/extraction-rule.controller.d.ts +7 -0
  141. package/dist/assets/server/extraction/extraction-rule.controller.js +48 -0
  142. package/dist/assets/server/extraction/extraction-rule.controller.js.map +1 -0
  143. package/dist/assets/server/extraction/extraction-rule.entity.d.ts +15 -0
  144. package/dist/assets/server/extraction/extraction-rule.entity.js +80 -0
  145. package/dist/assets/server/extraction/extraction-rule.entity.js.map +1 -0
  146. package/dist/assets/server/extraction/extraction-rule.service.d.ts +24 -0
  147. package/dist/assets/server/extraction/extraction-rule.service.js +89 -0
  148. package/dist/assets/server/extraction/extraction-rule.service.js.map +1 -0
  149. package/dist/assets/server/extraction/extraction.module.d.ts +2 -0
  150. package/dist/assets/server/extraction/extraction.module.js +53 -0
  151. package/dist/assets/server/extraction/extraction.module.js.map +1 -0
  152. package/dist/assets/server/extraction/extraction.service.d.ts +78 -0
  153. package/dist/assets/server/extraction/extraction.service.js +430 -0
  154. package/dist/assets/server/extraction/extraction.service.js.map +1 -0
  155. package/dist/assets/server/extraction/linkedin-extractor.d.ts +1 -0
  156. package/dist/assets/server/extraction/linkedin-extractor.js +244 -0
  157. package/dist/assets/server/extraction/linkedin-extractor.js.map +1 -0
  158. package/dist/assets/server/extraction/rrweb-snapshot.utils.d.ts +15 -0
  159. package/dist/assets/server/extraction/rrweb-snapshot.utils.js +48 -0
  160. package/dist/assets/server/extraction/rrweb-snapshot.utils.js.map +1 -0
  161. package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.d.ts +1 -0
  162. package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.js +60 -0
  163. package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.js.map +1 -0
  164. package/dist/assets/server/extraction/script-rule.d.ts +14 -0
  165. package/dist/assets/server/extraction/script-rule.js +49 -0
  166. package/dist/assets/server/extraction/script-rule.js.map +1 -0
  167. package/dist/assets/server/extraction/snapshot-analysis.service.d.ts +23 -0
  168. package/dist/assets/server/extraction/snapshot-analysis.service.js +147 -0
  169. package/dist/assets/server/extraction/snapshot-analysis.service.js.map +1 -0
  170. package/dist/assets/server/extraction/structured-data.d.ts +7 -0
  171. package/dist/assets/server/extraction/structured-data.js +96 -0
  172. package/dist/assets/server/extraction/structured-data.js.map +1 -0
  173. package/dist/assets/server/hcapi/hcapi.module.d.ts +2 -0
  174. package/dist/assets/server/hcapi/hcapi.module.js +23 -0
  175. package/dist/assets/server/hcapi/hcapi.module.js.map +1 -0
  176. package/dist/assets/server/hcapi/hcapi.service.d.ts +28 -0
  177. package/dist/assets/server/hcapi/hcapi.service.js +81 -0
  178. package/dist/assets/server/hcapi/hcapi.service.js.map +1 -0
  179. package/dist/assets/server/health/health.controller.d.ts +19 -0
  180. package/dist/assets/server/health/health.controller.js +59 -0
  181. package/dist/assets/server/health/health.controller.js.map +1 -0
  182. package/dist/assets/server/jobcase/jobcase.controller.d.ts +12 -0
  183. package/dist/assets/server/jobcase/jobcase.controller.js +61 -0
  184. package/dist/assets/server/jobcase/jobcase.controller.js.map +1 -0
  185. package/dist/assets/server/jobcase/jobcase.entity.d.ts +13 -0
  186. package/dist/assets/server/jobcase/jobcase.entity.js +71 -0
  187. package/dist/assets/server/jobcase/jobcase.entity.js.map +1 -0
  188. package/dist/assets/server/jobcase/jobcase.module.d.ts +2 -0
  189. package/dist/assets/server/jobcase/jobcase.module.js +26 -0
  190. package/dist/assets/server/jobcase/jobcase.module.js.map +1 -0
  191. package/dist/assets/server/jobcase/jobcase.service.d.ts +21 -0
  192. package/dist/assets/server/jobcase/jobcase.service.js +56 -0
  193. package/dist/assets/server/jobcase/jobcase.service.js.map +1 -0
  194. package/dist/assets/server/llm/llm.module.d.ts +2 -0
  195. package/dist/assets/server/llm/llm.module.js +21 -0
  196. package/dist/assets/server/llm/llm.module.js.map +1 -0
  197. package/dist/assets/server/llm/llm.service.d.ts +18 -0
  198. package/dist/assets/server/llm/llm.service.js +65 -0
  199. package/dist/assets/server/llm/llm.service.js.map +1 -0
  200. package/dist/assets/server/main.d.ts +1 -0
  201. package/dist/assets/server/main.js +30 -0
  202. package/dist/assets/server/main.js.map +1 -0
  203. package/dist/assets/server/matching/matching.controller.d.ts +16 -0
  204. package/dist/assets/server/matching/matching.controller.js +97 -0
  205. package/dist/assets/server/matching/matching.controller.js.map +1 -0
  206. package/dist/assets/server/matching/matching.module.d.ts +2 -0
  207. package/dist/assets/server/matching/matching.module.js +36 -0
  208. package/dist/assets/server/matching/matching.module.js.map +1 -0
  209. package/dist/assets/server/matching/matching.service.d.ts +55 -0
  210. package/dist/assets/server/matching/matching.service.js +409 -0
  211. package/dist/assets/server/matching/matching.service.js.map +1 -0
  212. package/dist/assets/server/package.json +57 -0
  213. package/dist/assets/server/parsed-resume/parsed-resume.controller.d.ts +6 -0
  214. package/dist/assets/server/parsed-resume/parsed-resume.controller.js +42 -0
  215. package/dist/assets/server/parsed-resume/parsed-resume.controller.js.map +1 -0
  216. package/dist/assets/server/parsed-resume/parsed-resume.entity.d.ts +124 -0
  217. package/dist/assets/server/parsed-resume/parsed-resume.entity.js +72 -0
  218. package/dist/assets/server/parsed-resume/parsed-resume.entity.js.map +1 -0
  219. package/dist/assets/server/parsed-resume/parsed-resume.module.d.ts +2 -0
  220. package/dist/assets/server/parsed-resume/parsed-resume.module.js +26 -0
  221. package/dist/assets/server/parsed-resume/parsed-resume.module.js.map +1 -0
  222. package/dist/assets/server/parsed-resume/parsed-resume.service.d.ts +10 -0
  223. package/dist/assets/server/parsed-resume/parsed-resume.service.js +45 -0
  224. package/dist/assets/server/parsed-resume/parsed-resume.service.js.map +1 -0
  225. package/dist/assets/server/parsing/parse-error-report.entity.d.ts +11 -0
  226. package/dist/assets/server/parsing/parse-error-report.entity.js +66 -0
  227. package/dist/assets/server/parsing/parse-error-report.entity.js.map +1 -0
  228. package/dist/assets/server/parsing/parsing.controller.d.ts +19 -0
  229. package/dist/assets/server/parsing/parsing.controller.js +97 -0
  230. package/dist/assets/server/parsing/parsing.controller.js.map +1 -0
  231. package/dist/assets/server/parsing/parsing.module.d.ts +2 -0
  232. package/dist/assets/server/parsing/parsing.module.js +38 -0
  233. package/dist/assets/server/parsing/parsing.module.js.map +1 -0
  234. package/dist/assets/server/parsing/parsing.service.d.ts +38 -0
  235. package/dist/assets/server/parsing/parsing.service.js +263 -0
  236. package/dist/assets/server/parsing/parsing.service.js.map +1 -0
  237. package/dist/assets/server/query/fields-meta.controller.d.ts +28 -0
  238. package/dist/assets/server/query/fields-meta.controller.js +57 -0
  239. package/dist/assets/server/query/fields-meta.controller.js.map +1 -0
  240. package/dist/assets/server/query/query-builder.controller.d.ts +11 -0
  241. package/dist/assets/server/query/query-builder.controller.js +40 -0
  242. package/dist/assets/server/query/query-builder.controller.js.map +1 -0
  243. package/dist/assets/server/query/query-builder.service.d.ts +8 -0
  244. package/dist/assets/server/query/query-builder.service.js +41 -0
  245. package/dist/assets/server/query/query-builder.service.js.map +1 -0
  246. package/dist/assets/server/query/query.module.d.ts +2 -0
  247. package/dist/assets/server/query/query.module.js +23 -0
  248. package/dist/assets/server/query/query.module.js.map +1 -0
  249. package/dist/assets/server/recording/entities/recording-event.entity.d.ts +9 -0
  250. package/dist/assets/server/recording/entities/recording-event.entity.js +56 -0
  251. package/dist/assets/server/recording/entities/recording-event.entity.js.map +1 -0
  252. package/dist/assets/server/recording/entities/recording-snapshot.entity.d.ts +16 -0
  253. package/dist/assets/server/recording/entities/recording-snapshot.entity.js +91 -0
  254. package/dist/assets/server/recording/entities/recording-snapshot.entity.js.map +1 -0
  255. package/dist/assets/server/recording/recording-event-bus.service.d.ts +4 -0
  256. package/dist/assets/server/recording/recording-event-bus.service.js +25 -0
  257. package/dist/assets/server/recording/recording-event-bus.service.js.map +1 -0
  258. package/dist/assets/server/recording/recording-snapshot.service.d.ts +13 -0
  259. package/dist/assets/server/recording/recording-snapshot.service.js +81 -0
  260. package/dist/assets/server/recording/recording-snapshot.service.js.map +1 -0
  261. package/dist/assets/server/recording/recording-snapshot.service.spec.d.ts +1 -0
  262. package/dist/assets/server/recording/recording-snapshot.service.spec.js +65 -0
  263. package/dist/assets/server/recording/recording-snapshot.service.spec.js.map +1 -0
  264. package/dist/assets/server/recording/recording.controller.d.ts +54 -0
  265. package/dist/assets/server/recording/recording.controller.js +77 -0
  266. package/dist/assets/server/recording/recording.controller.js.map +1 -0
  267. package/dist/assets/server/recording/recording.gateway.d.ts +15 -0
  268. package/dist/assets/server/recording/recording.gateway.js +117 -0
  269. package/dist/assets/server/recording/recording.gateway.js.map +1 -0
  270. package/dist/assets/server/recording/recording.module.d.ts +2 -0
  271. package/dist/assets/server/recording/recording.module.js +36 -0
  272. package/dist/assets/server/recording/recording.module.js.map +1 -0
  273. package/dist/assets/server/recording/recording.service.d.ts +43 -0
  274. package/dist/assets/server/recording/recording.service.js +124 -0
  275. package/dist/assets/server/recording/recording.service.js.map +1 -0
  276. package/dist/assets/server/remark/remark.controller.d.ts +21 -0
  277. package/dist/assets/server/remark/remark.controller.js +59 -0
  278. package/dist/assets/server/remark/remark.controller.js.map +1 -0
  279. package/dist/assets/server/remark/remark.entity.d.ts +18 -0
  280. package/dist/assets/server/remark/remark.entity.js +67 -0
  281. package/dist/assets/server/remark/remark.entity.js.map +1 -0
  282. package/dist/assets/server/remark/remark.module.d.ts +2 -0
  283. package/dist/assets/server/remark/remark.module.js +26 -0
  284. package/dist/assets/server/remark/remark.module.js.map +1 -0
  285. package/dist/assets/server/remark/remark.service.d.ts +8 -0
  286. package/dist/assets/server/remark/remark.service.js +39 -0
  287. package/dist/assets/server/remark/remark.service.js.map +1 -0
  288. package/dist/assets/server/report/report.controller.d.ts +18 -0
  289. package/dist/assets/server/report/report.controller.js +41 -0
  290. package/dist/assets/server/report/report.controller.js.map +1 -0
  291. package/dist/assets/server/report/report.module.d.ts +2 -0
  292. package/dist/assets/server/report/report.module.js +24 -0
  293. package/dist/assets/server/report/report.module.js.map +1 -0
  294. package/dist/assets/server/report/report.service.d.ts +23 -0
  295. package/dist/assets/server/report/report.service.js +54 -0
  296. package/dist/assets/server/report/report.service.js.map +1 -0
  297. package/dist/assets/server/rules/rules.controller.d.ts +6 -0
  298. package/dist/assets/server/rules/rules.controller.js +35 -0
  299. package/dist/assets/server/rules/rules.controller.js.map +1 -0
  300. package/dist/assets/server/rules/rules.module.d.ts +2 -0
  301. package/dist/assets/server/rules/rules.module.js +23 -0
  302. package/dist/assets/server/rules/rules.module.js.map +1 -0
  303. package/dist/assets/server/rules/rules.service.d.ts +10 -0
  304. package/dist/assets/server/rules/rules.service.js +26 -0
  305. package/dist/assets/server/rules/rules.service.js.map +1 -0
  306. package/dist/assets/server/search/search.controller.d.ts +6 -0
  307. package/dist/assets/server/search/search.controller.js +53 -0
  308. package/dist/assets/server/search/search.controller.js.map +1 -0
  309. package/dist/assets/server/search/search.module.d.ts +2 -0
  310. package/dist/assets/server/search/search.module.js +24 -0
  311. package/dist/assets/server/search/search.module.js.map +1 -0
  312. package/dist/assets/server/search/search.service.d.ts +6 -0
  313. package/dist/assets/server/search/search.service.js +46 -0
  314. package/dist/assets/server/search/search.service.js.map +1 -0
  315. package/dist/assets/server/sentry.d.ts +3 -0
  316. package/dist/assets/server/sentry.js +10 -0
  317. package/dist/assets/server/sentry.js.map +1 -0
  318. package/dist/assets/server/site/entities/site-registry.entity.d.ts +13 -0
  319. package/dist/assets/server/site/entities/site-registry.entity.js +76 -0
  320. package/dist/assets/server/site/entities/site-registry.entity.js.map +1 -0
  321. package/dist/assets/server/site/site.controller.d.ts +38 -0
  322. package/dist/assets/server/site/site.controller.js +60 -0
  323. package/dist/assets/server/site/site.controller.js.map +1 -0
  324. package/dist/assets/server/site/site.module.d.ts +2 -0
  325. package/dist/assets/server/site/site.module.js +26 -0
  326. package/dist/assets/server/site/site.module.js.map +1 -0
  327. package/dist/assets/server/site/site.service.d.ts +38 -0
  328. package/dist/assets/server/site/site.service.js +141 -0
  329. package/dist/assets/server/site/site.service.js.map +1 -0
  330. package/dist/assets/server/snapshot/raw-snapshot.entity.d.ts +35 -0
  331. package/dist/assets/server/snapshot/raw-snapshot.entity.js +62 -0
  332. package/dist/assets/server/snapshot/raw-snapshot.entity.js.map +1 -0
  333. package/dist/assets/server/snapshot/snapshot.controller.d.ts +18 -0
  334. package/dist/assets/server/snapshot/snapshot.controller.js +76 -0
  335. package/dist/assets/server/snapshot/snapshot.controller.js.map +1 -0
  336. package/dist/assets/server/snapshot/snapshot.module.d.ts +2 -0
  337. package/dist/assets/server/snapshot/snapshot.module.js +26 -0
  338. package/dist/assets/server/snapshot/snapshot.module.js.map +1 -0
  339. package/dist/assets/server/snapshot/snapshot.service.d.ts +10 -0
  340. package/dist/assets/server/snapshot/snapshot.service.js +48 -0
  341. package/dist/assets/server/snapshot/snapshot.service.js.map +1 -0
  342. package/dist/assets/server/system/system.controller.d.ts +39 -0
  343. package/dist/assets/server/system/system.controller.js +93 -0
  344. package/dist/assets/server/system/system.controller.js.map +1 -0
  345. package/dist/assets/server/system/system.module.d.ts +2 -0
  346. package/dist/assets/server/system/system.module.js +26 -0
  347. package/dist/assets/server/system/system.module.js.map +1 -0
  348. package/dist/assets/server/system/system.service.d.ts +86 -0
  349. package/dist/assets/server/system/system.service.js +433 -0
  350. package/dist/assets/server/system/system.service.js.map +1 -0
  351. package/dist/assets/server/talent-fingerprint/fingerprint-match.service.d.ts +28 -0
  352. package/dist/assets/server/talent-fingerprint/fingerprint-match.service.js +186 -0
  353. package/dist/assets/server/talent-fingerprint/fingerprint-match.service.js.map +1 -0
  354. package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.d.ts +30 -0
  355. package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.js +55 -0
  356. package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.js.map +1 -0
  357. package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.d.ts +2 -0
  358. package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.js +25 -0
  359. package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.js.map +1 -0
  360. package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.d.ts +8 -0
  361. package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.js +44 -0
  362. package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.js.map +1 -0
  363. package/dist/assets/server/talent-job-match/talent-job-match.controller.d.ts +6 -0
  364. package/dist/assets/server/talent-job-match/talent-job-match.controller.js +42 -0
  365. package/dist/assets/server/talent-job-match/talent-job-match.controller.js.map +1 -0
  366. package/dist/assets/server/talent-job-match/talent-job-match.entity.d.ts +33 -0
  367. package/dist/assets/server/talent-job-match/talent-job-match.entity.js +73 -0
  368. package/dist/assets/server/talent-job-match/talent-job-match.entity.js.map +1 -0
  369. package/dist/assets/server/talent-job-match/talent-job-match.module.d.ts +2 -0
  370. package/dist/assets/server/talent-job-match/talent-job-match.module.js +26 -0
  371. package/dist/assets/server/talent-job-match/talent-job-match.module.js.map +1 -0
  372. package/dist/assets/server/talent-job-match/talent-job-match.service.d.ts +9 -0
  373. package/dist/assets/server/talent-job-match/talent-job-match.service.js +42 -0
  374. package/dist/assets/server/talent-job-match/talent-job-match.service.js.map +1 -0
  375. package/dist/assets/server/talent-portrait/portrait-merge.service.d.ts +17 -0
  376. package/dist/assets/server/talent-portrait/portrait-merge.service.js +200 -0
  377. package/dist/assets/server/talent-portrait/portrait-merge.service.js.map +1 -0
  378. package/dist/assets/server/talent-portrait/talent-portrait.controller.d.ts +7 -0
  379. package/dist/assets/server/talent-portrait/talent-portrait.controller.js +52 -0
  380. package/dist/assets/server/talent-portrait/talent-portrait.controller.js.map +1 -0
  381. package/dist/assets/server/talent-portrait/talent-portrait.entity.d.ts +91 -0
  382. package/dist/assets/server/talent-portrait/talent-portrait.entity.js +71 -0
  383. package/dist/assets/server/talent-portrait/talent-portrait.entity.js.map +1 -0
  384. package/dist/assets/server/talent-portrait/talent-portrait.module.d.ts +2 -0
  385. package/dist/assets/server/talent-portrait/talent-portrait.module.js +27 -0
  386. package/dist/assets/server/talent-portrait/talent-portrait.module.js.map +1 -0
  387. package/dist/assets/server/talent-portrait/talent-portrait.service.d.ts +10 -0
  388. package/dist/assets/server/talent-portrait/talent-portrait.service.js +46 -0
  389. package/dist/assets/server/talent-portrait/talent-portrait.service.js.map +1 -0
  390. package/dist/assets/server/telemetry/telemetry.module.d.ts +2 -0
  391. package/dist/assets/server/telemetry/telemetry.module.js +24 -0
  392. package/dist/assets/server/telemetry/telemetry.module.js.map +1 -0
  393. package/dist/assets/server/telemetry/telemetry.service.d.ts +29 -0
  394. package/dist/assets/server/telemetry/telemetry.service.js +116 -0
  395. package/dist/assets/server/telemetry/telemetry.service.js.map +1 -0
  396. package/dist/auto-doctor.d.ts +8 -0
  397. package/dist/auto-doctor.js +34 -0
  398. package/dist/bundled-assets.d.ts +22 -0
  399. package/dist/bundled-assets.js +80 -0
  400. package/dist/cache/db.js +10 -54
  401. package/dist/commands/addons.js +46 -71
  402. package/dist/commands/cache.js +29 -27
  403. package/dist/commands/config.d.ts +1 -1
  404. package/dist/commands/config.js +8 -12
  405. package/dist/commands/doctor.d.ts +38 -1
  406. package/dist/commands/doctor.js +214 -74
  407. package/dist/commands/extension.js +84 -98
  408. package/dist/commands/extras.d.ts +32 -2
  409. package/dist/commands/extras.js +252 -64
  410. package/dist/commands/init.js +18 -46
  411. package/dist/commands/install.js +31 -60
  412. package/dist/commands/job.js +27 -65
  413. package/dist/commands/login.js +50 -37
  414. package/dist/commands/logout.js +8 -12
  415. package/dist/commands/ops.js +94 -67
  416. package/dist/commands/record.js +21 -59
  417. package/dist/commands/report.js +14 -18
  418. package/dist/commands/search.js +14 -21
  419. package/dist/commands/server.d.ts +1 -1
  420. package/dist/commands/server.js +126 -112
  421. package/dist/commands/status.js +23 -27
  422. package/dist/commands/update.js +44 -79
  423. package/dist/config.d.ts +3 -0
  424. package/dist/config.js +12 -46
  425. package/dist/i18n/index.js +5 -11
  426. package/dist/i18n/locales/en-US.json +24 -1
  427. package/dist/i18n/locales/zh-CN.json +24 -1
  428. package/dist/index.cmd +3 -0
  429. package/dist/index.js +90 -98
  430. package/dist/index.ps1 +3 -0
  431. package/dist/keychain.js +9 -44
  432. package/dist/logger.d.ts +7 -0
  433. package/dist/logger.js +80 -0
  434. package/dist/native-check.d.ts +6 -0
  435. package/dist/native-check.js +23 -0
  436. package/dist/sentry.js +4 -8
  437. package/dist/updater.js +15 -52
  438. package/dist/utils/proc.d.ts +35 -0
  439. package/dist/utils/proc.js +81 -0
  440. package/dist/utils/spawn.d.ts +19 -0
  441. package/dist/utils/spawn.js +60 -0
  442. package/dist/version.d.ts +1 -1
  443. package/dist/version.js +183 -81
  444. package/dist/watchdog.d.ts +1 -0
  445. package/dist/watchdog.js +128 -0
  446. package/package.json +7 -6
  447. package/dist/commands/native-check.d.ts +0 -22
  448. package/dist/commands/native-check.js +0 -93
@@ -1,56 +1,16 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.jobCommand = void 0;
40
- exports.runJobCreate = runJobCreate;
41
- exports.runJobList = runJobList;
42
- const commander_1 = require("commander");
43
- const fs = __importStar(require("fs"));
44
- const path = __importStar(require("path"));
45
- const axios_1 = __importDefault(require("axios"));
46
- const uuid_1 = require("uuid");
47
- const db_1 = require("../cache/db");
48
- const config_1 = require("../config");
49
- const keychain_1 = require("../keychain");
50
- const i18n_1 = require("../i18n");
51
- async function runJobCreate(folderPath) {
52
- const config = (0, config_1.loadConfig)();
53
- const token = await (0, keychain_1.getToken)();
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import axios from 'axios';
5
+ import { v4 as uuidv4 } from 'uuid';
6
+ import { ensureCacheDir, saveJobCase, listJobCases } from '../cache/db.js';
7
+ import { loadConfig } from '../config.js';
8
+ import { getToken } from '../keychain.js';
9
+ import { i18n } from '../i18n/index.js';
10
+ import { getCliLogger } from '../logger.js';
11
+ export async function runJobCreate(folderPath) {
12
+ const config = loadConfig();
13
+ const token = await getToken();
54
14
  const headers = token ? { Authorization: `UTOKEN ${token}` } : {};
55
15
  const resolved = path.resolve(folderPath);
56
16
  if (!fs.existsSync(resolved)) {
@@ -63,14 +23,14 @@ async function runJobCreate(folderPath) {
63
23
  }
64
24
  const rawText = Object.values(rawFiles).join('\n---\n');
65
25
  const title = Object.keys(rawFiles)[0]?.replace(/\.[^.]+$/, '') || 'Untitled JobCase';
66
- const res = await axios_1.default.post(`${config.serverUrl}/job-cases`, {
67
- externalId: (0, uuid_1.v4)(),
26
+ const res = await axios.post(`${config.serverUrl}/job-cases`, {
27
+ externalId: uuidv4(),
68
28
  title,
69
29
  folderPath: resolved,
70
30
  rawFiles,
71
31
  }, { headers, proxy: false });
72
32
  const serverCase = res.data;
73
- (0, db_1.ensureCacheDir)();
33
+ ensureCacheDir();
74
34
  const jobCase = {
75
35
  id: serverCase.id,
76
36
  externalId: serverCase.externalId,
@@ -84,28 +44,30 @@ async function runJobCreate(folderPath) {
84
44
  status: serverCase.status,
85
45
  createdAt: Date.now(),
86
46
  };
87
- (0, db_1.saveJobCase)(jobCase);
47
+ saveJobCase(jobCase);
88
48
  return serverCase;
89
49
  }
90
- function runJobList() {
91
- return (0, db_1.listJobCases)();
50
+ export function runJobList() {
51
+ return listJobCases();
92
52
  }
93
- exports.jobCommand = new commander_1.Command('job')
94
- .description(i18n_1.i18n.t('job.description'));
95
- exports.jobCommand
53
+ export const jobCommand = new Command('job')
54
+ .description(i18n.t('job.description'));
55
+ jobCommand
96
56
  .command('create <folder>')
97
- .description(i18n_1.i18n.t('job.create'))
57
+ .description(i18n.t('job.create'))
98
58
  .action(async (folderPath) => {
99
59
  try {
100
60
  const serverCase = await runJobCreate(folderPath);
101
61
  console.log(`Created JobCase ${serverCase.id} (${serverCase.externalId})`);
102
62
  }
103
63
  catch (err) {
104
- console.error('Failed to create JobCase:', err.response?.data?.message || err.message);
64
+ getCliLogger().error('job:create-failed', {
65
+ error: err.response?.data?.message || err.message,
66
+ });
105
67
  process.exit(1);
106
68
  }
107
69
  });
108
- exports.jobCommand
70
+ jobCommand
109
71
  .command('list')
110
72
  .description('List local JobCases')
111
73
  .action(() => {
@@ -1,81 +1,94 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.loginCommand = void 0;
7
- exports.runLogin = runLogin;
8
- const commander_1 = require("commander");
9
- const axios_1 = __importDefault(require("axios"));
10
- const open_1 = __importDefault(require("open"));
11
- const config_1 = require("../config");
12
- const keychain_1 = require("../keychain");
13
- const i18n_1 = require("../i18n");
1
+ import { Command } from 'commander';
2
+ import axios from 'axios';
3
+ import open from 'open';
4
+ import { loadConfig } from '../config.js';
5
+ import { saveToken } from '../keychain.js';
6
+ import { i18n } from '../i18n/index.js';
7
+ import { getCliLogger } from '../logger.js';
14
8
  function sleep(ms) {
15
9
  return new Promise((resolve) => setTimeout(resolve, ms));
16
10
  }
17
- async function runLogin() {
18
- const config = (0, config_1.loadConfig)();
19
- const { data: deviceCode } = await axios_1.default.post(`${config.serverUrl}/auth/device-code`);
20
- console.log(i18n_1.i18n.t('login.userCode'), deviceCode.user_code);
21
- console.log(i18n_1.i18n.t('login.verifyUrl'), deviceCode.verification_uri);
22
- await (0, open_1.default)(deviceCode.verification_uri);
11
+ export async function runLogin() {
12
+ const config = loadConfig();
13
+ const { data: deviceCode } = await axios.post(`${config.serverUrl}/auth/device-code`);
14
+ getCliLogger().info('login:device-code', {
15
+ userCode: deviceCode.user_code,
16
+ verifyUrl: deviceCode.verification_uri,
17
+ expiresIn: deviceCode.expires_in,
18
+ });
19
+ console.log(i18n.t('login.userCode'), deviceCode.user_code);
20
+ console.log(i18n.t('login.verifyUrl'), deviceCode.verification_uri);
21
+ await open(deviceCode.verification_uri);
23
22
  const maxAttempts = Math.ceil(deviceCode.expires_in / deviceCode.interval);
24
23
  for (let i = 0; i < maxAttempts; i++) {
25
24
  await sleep(deviceCode.interval * 1000);
26
- const { data } = await axios_1.default.post(`${config.serverUrl}/auth/token`, {
25
+ const { data } = await axios.post(`${config.serverUrl}/auth/token`, {
27
26
  deviceCode: deviceCode.device_code,
28
27
  });
29
28
  if (data.access_token) {
30
- await (0, keychain_1.saveToken)(data.access_token);
29
+ await saveToken(data.access_token);
30
+ getCliLogger().info('login:token-saved', { method: 'device-code' });
31
31
  return data.access_token;
32
32
  }
33
33
  if (data.status === 'expired') {
34
- throw new Error(i18n_1.i18n.t('login.expired'));
34
+ getCliLogger().warn('login:device-code-expired', { attempts: i + 1 });
35
+ throw new Error(i18n.t('login.expired'));
35
36
  }
36
37
  }
37
- throw new Error(i18n_1.i18n.t('login.expired'));
38
+ getCliLogger().warn('login:device-code-timeout', { maxAttempts });
39
+ throw new Error(i18n.t('login.expired'));
38
40
  }
39
- exports.loginCommand = new commander_1.Command('login')
40
- .description(i18n_1.i18n.t('login.description'))
41
+ export const loginCommand = new Command('login')
42
+ .description(i18n.t('login.description'))
41
43
  .option('--email <email>', 'Email address (email verification code login)')
42
44
  .option('--code <code>', 'Email verification code (6 digits, step 2)')
43
45
  .action(async (options) => {
44
46
  try {
45
- const config = (0, config_1.loadConfig)();
46
- // 邮箱验证码登录(两步式无状态)
47
+ const config = loadConfig();
48
+ // 邮箱验证码登录(两步式无状态;SaaS 服务端,不经本地 server)
47
49
  if (options.email) {
48
50
  if (!options.code) {
49
51
  // 第一步:发送验证码
50
- await axios_1.default.post(`${config.serverUrl}/auth/email/send-code`, {
52
+ await axios.post(`${config.saasUrl}/hunter-mate/auth/email/send-code`, {
51
53
  email: options.email,
52
54
  });
53
- console.log(`${i18n_1.i18n.t('login.emailCodeSent')} ${options.email}`);
54
- console.log(` ${i18n_1.i18n.t('login.emailCodeNextStep')}`);
55
+ getCliLogger().info('login:email-code-sent', { email: options.email });
56
+ console.log(`${i18n.t('login.emailCodeSent')} ${options.email}`);
57
+ console.log(` ${i18n.t('login.emailCodeNextStep')}`);
55
58
  return;
56
59
  }
57
60
  // 第二步:校验验证码 → 保存 token
58
- const { data } = await axios_1.default.post(`${config.serverUrl}/auth/email/verify`, { email: options.email, code: options.code });
61
+ const { data } = await axios.post(`${config.saasUrl}/hunter-mate/auth/email/verify`, { email: options.email, code: options.code });
59
62
  if (!data.access_token) {
63
+ getCliLogger().error('login:email-verify-no-token');
60
64
  throw new Error('verify returned no access_token');
61
65
  }
62
- await (0, keychain_1.saveToken)(data.access_token);
63
- console.log(i18n_1.i18n.t('login.success'));
66
+ await saveToken(data.access_token);
67
+ getCliLogger().info('login:token-saved', { method: 'email', email: options.email });
68
+ console.log(i18n.t('login.success'));
64
69
  return;
65
70
  }
66
71
  if (options.code) {
67
- console.error(i18n_1.i18n.t('login.emailCodeMissing'));
72
+ getCliLogger().error('login:email-code-missing', { hint: i18n.t('login.emailCodeMissing') });
68
73
  process.exit(1);
69
74
  }
70
75
  // 默认:OAuth 设备码登录
71
- console.log(i18n_1.i18n.t('login.start'));
76
+ console.log(i18n.t('login.start'));
77
+ getCliLogger().info('login:start', { method: 'device-code' });
72
78
  await runLogin();
73
- console.log(i18n_1.i18n.t('login.success'));
79
+ console.log(i18n.t('login.success'));
74
80
  }
75
81
  catch (err) {
76
82
  // 透出 server 侧业务错误信息(如"验证码错误"/"发送过于频繁")
77
83
  const serverMsg = err?.response?.data?.message;
78
- console.error(i18n_1.i18n.t('login.failed'), serverMsg || err.message);
84
+ getCliLogger().error('login:failed', {
85
+ error: serverMsg || err.message,
86
+ hasResponse: !!err?.response,
87
+ });
88
+ getCliLogger().error('login:failed', {
89
+ hint: i18n.t('login.failed'),
90
+ error: serverMsg || err.message,
91
+ });
79
92
  process.exit(1);
80
93
  }
81
94
  });
@@ -1,16 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logoutCommand = void 0;
4
- exports.runLogout = runLogout;
5
- const commander_1 = require("commander");
6
- const keychain_1 = require("../keychain");
7
- const i18n_1 = require("../i18n");
8
- async function runLogout() {
9
- await (0, keychain_1.deleteToken)();
1
+ import { Command } from 'commander';
2
+ import { deleteToken } from '../keychain.js';
3
+ import { i18n } from '../i18n/index.js';
4
+ export async function runLogout() {
5
+ await deleteToken();
10
6
  }
11
- exports.logoutCommand = new commander_1.Command('logout')
12
- .description(i18n_1.i18n.t('logout.description'))
7
+ export const logoutCommand = new Command('logout')
8
+ .description(i18n.t('logout.description'))
13
9
  .action(async () => {
14
10
  await runLogout();
15
- console.log(i18n_1.i18n.t('logout.success'));
11
+ console.log(i18n.t('logout.success'));
16
12
  });
@@ -1,19 +1,16 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.autofixCommand = exports.traceCommand = exports.memoryCommand = exports.adapterCommand = exports.recordingsCommand = void 0;
7
- const commander_1 = require("commander");
8
- const axios_1 = __importDefault(require("axios"));
9
- const config_1 = require("../config");
1
+ import { Command } from 'commander';
2
+ import axios from 'axios';
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ import { loadConfig } from '../config.js';
6
+ import { getCliLogger } from '../logger.js';
10
7
  // OpenCLI 风格的通用选项
11
8
  function withFormat(cmd) {
12
9
  return cmd.option('-f, --format <format>', '输出格式: table|json|yaml|md|csv', 'json');
13
10
  }
14
11
  const http = () => {
15
- const c = (0, config_1.loadConfig)();
16
- return axios_1.default.create({ baseURL: c.serverUrl, timeout: 60_000 });
12
+ const c = loadConfig();
13
+ return axios.create({ baseURL: c.serverUrl, timeout: 60_000 });
17
14
  };
18
15
  const printResult = (data, format) => {
19
16
  const fmt = (format ?? 'json').toLowerCase();
@@ -35,8 +32,8 @@ const printResult = (data, format) => {
35
32
  // ---------------------------------------------------------------------------
36
33
  // recordings 管理 (对应 chromepilot recordings)
37
34
  // ---------------------------------------------------------------------------
38
- exports.recordingsCommand = new commander_1.Command('recordings').description('管理录制会话(rrweb/network/console 事件流)');
39
- exports.recordingsCommand
35
+ export const recordingsCommand = new Command('recordings').description('管理录制会话(rrweb/network/console 事件流)');
36
+ recordingsCommand
40
37
  .command('start')
41
38
  .description('开始录制: 生成新 sessionId 并通知扩展开始上报事件')
42
39
  .requiredOption('--title <text>', '录制标题,例如 LinkedIn 寻访 2026-08-15')
@@ -45,7 +42,7 @@ exports.recordingsCommand
45
42
  // MVP: 直接调用 server 的 recordings POST 端点(若存在)或返回本地 sessionId 交给扩展
46
43
  const sessionId = 'sess_' + Date.now().toString(36) + Math.random().toString(36).slice(2, 8);
47
44
  try {
48
- await http().post(`/recordings/${sessionId}/events`, []);
45
+ await http().post(`/api/recordings/${sessionId}/events`, []);
49
46
  }
50
47
  catch {
51
48
  /* 忽略: server REST 未就绪也允许本地启动 */
@@ -61,7 +58,7 @@ exports.recordingsCommand
61
58
  ].join(''),
62
59
  }, null, 2));
63
60
  });
64
- exports.recordingsCommand
61
+ recordingsCommand
65
62
  .command('stop')
66
63
  .argument('<sessionId>', '会话 ID')
67
64
  .description('停止录制(软标记,不再接受新事件)')
@@ -69,74 +66,104 @@ exports.recordingsCommand
69
66
  console.log(JSON.stringify({
70
67
  sessionId,
71
68
  stoppedAt: new Date().toISOString(),
72
- detail: 'stop 目前是客户端软标记。可通过 POST /recordings/:sessionId/parse 触发后端解析。',
69
+ detail: 'stop 目前是客户端软标记。可通过 POST /api/recordings/:sessionId/parse 触发后端解析。',
73
70
  }, null, 2));
74
71
  });
75
- withFormat(exports.recordingsCommand.command('list').description('列出录制会话(从 /recordings 端点)'))
72
+ withFormat(recordingsCommand.command('list').description('列出录制会话(从 /api/recordings 端点)'))
76
73
  .action(async (opts) => {
77
74
  try {
78
- const r = await http().get('/recordings');
75
+ const r = await http().get('/api/recordings');
79
76
  printResult(r.data, opts.format);
80
77
  }
81
78
  catch (e) {
82
79
  // server 暂未实现 recordings list 时给出空结果与提示,避免 crash
83
- printResult({ note: '/recordings GET 未实现,HunterMate server 正在逐步补齐。先从 recordings/:sessionId GET 查看单个。', sessions: [] }, opts.format);
80
+ printResult({ note: '/api/recordings GET 未实现,HunterMate server 正在逐步补齐。先从 /api/recordings/:sessionId GET 查看单个。', sessions: [] }, opts.format);
84
81
  }
85
82
  });
86
- withFormat(exports.recordingsCommand.command('show <sessionId>').description('查看录制详情 (/recordings/:id) + 可选 parse'))
83
+ withFormat(recordingsCommand.command('show <sessionId>').description('查看录制详情 (/api/recordings/:id) + 可选 parse'))
87
84
  .option('--parse', '同时触发 parseRecording 规则引擎提取结构化字段')
88
85
  .action(async (sessionId, opts) => {
89
86
  try {
90
87
  const [detail, parsed] = await Promise.all([
91
- http().get(`/recordings/${sessionId}`).then((r) => r.data).catch(() => null),
92
- opts.parse ? http().post(`/recordings/${sessionId}/parse`).then((r) => r.data).catch(() => null) : Promise.resolve(null),
88
+ http().get(`/api/recordings/${sessionId}`).then((r) => r.data).catch(() => null),
89
+ opts.parse ? http().post(`/api/recordings/${sessionId}/parse`).then((r) => r.data).catch(() => null) : Promise.resolve(null),
93
90
  ]);
94
91
  printResult({ detail, parsed }, opts.format);
95
92
  }
96
93
  catch (e) {
97
- console.error(`recordings show failed: ${e.message}`);
94
+ getCliLogger().error('ops:recordings-show-failed', { error: e.message });
98
95
  process.exit(1);
99
96
  }
100
97
  });
101
98
  // ---------------------------------------------------------------------------
102
99
  // adapter (OpenCLI 风格)
103
100
  // ---------------------------------------------------------------------------
104
- withFormat(new commander_1.Command('adapter')
105
- .description('站点适配器管理(OpenCLI 风格,对应 chromepilot adapter)')
106
- .argument('[action]', '操作: list (默认)', 'list')
107
- .argument('[site]', '站点名过滤,如 linkedin/resume/jobsite', '')).action(async (action, site, opts) => {
108
- // 内置适配器列表(对应 ControlCommandName 里 hm.* 的集合)
109
- const builtin = [
110
- { site: 'linkedin', commands: ['search', 'extract', 'invite'], builtin: true },
111
- { site: 'resume', commands: ['extract'], builtin: true },
112
- ];
113
- const filtered = site ? builtin.filter((b) => b.site === site) : builtin;
114
- printResult(action === 'list' || !action ? filtered : { error: `unknown action: ${action}`, supported: ['list'] }, opts.format);
115
- });
116
- // 因为上面的 adapter 是局部变量返回,这里用一个包装函数把它赋值给导出
117
- // (为了保持 recordingsCommand 相同的导出风格,单独定义 exports.adapterCommand)
118
- exports.adapterCommand = withFormat(new commander_1.Command('adapter')
119
- .description('站点适配器管理(OpenCLI 风格,对应 chromepilot adapter): list')
120
- .argument('[action]', '操作: list (默认)', 'list')
121
- .argument('[site]', '站点名过滤', '')).action((action, site, opts) => {
122
- const builtin = [
123
- { site: 'linkedin', commands: ['search', 'extract', 'invite'], builtin: true },
124
- { site: 'resume', commands: ['extract'], builtin: true },
125
- ];
126
- const filtered = site ? builtin.filter((b) => b.site === site) : builtin;
127
- printResult(action === 'list' ? filtered : { error: `unknown action: ${action}` }, opts.format);
101
+ export const adapterCommand = withFormat(new Command('adapter')
102
+ .description('站点适配器(对应 chromepilot adapter): list | extract <url>')
103
+ .argument('[action]', '操作: list | extract', 'list')
104
+ .argument('[target]', 'list: 站点名过滤;extract: 页面 URL', '')
105
+ .option('--tab <pageId>', 'extract: 指定目标 tab(page id;默认复用同站点 tab 或新建后台 tab,不抢焦点)')
106
+ .option('--settle-ms <n>', 'extract: 导航后首查等待 ms(默认 1200)', '1200')).action(async (action, target, opts) => {
107
+ if (action === 'list' || !action) {
108
+ try {
109
+ const r = await http().get('/adapters');
110
+ const filtered = target
111
+ ? { adapters: (r.data.adapters || []).filter((a) => a.platform === target || a.host === target) }
112
+ : r.data;
113
+ printResult(filtered, opts.format);
114
+ }
115
+ catch (e) {
116
+ // server 暂未实现 /adapters 时退回内置清单
117
+ printResult({ note: `GET /adapters failed (${e.message}),fallback 内置清单`, adapters: [
118
+ { platform: 'linkedin', host: 'linkedin.com', command: 'hm.linkedin.extract' },
119
+ ] }, opts.format);
120
+ }
121
+ return;
122
+ }
123
+ if (action === 'extract') {
124
+ if (!/^https?:\/\//.test(target || '')) {
125
+ getCliLogger().error('ops:adapter-extract-missing-url', { hint: 'adapter extract 需要完整 URL,例如: hunter-mate adapter extract https://www.linkedin.com/in/boonkwee/' });
126
+ process.exit(1);
127
+ }
128
+ const { ensureEnvReady } = await import('./extension.js');
129
+ await ensureEnvReady();
130
+ try {
131
+ const r = await http().post('/extract/adapter', { url: target, tab: opts.tab, settleMs: Number(opts.settleMs) || 1200 }, { timeout: 120_000 });
132
+ const d = r.data || {};
133
+ const summary = {
134
+ ok: d.ok, runId: d.runId, pageClass: d.pageClass, url: d.url, tab: d.tab,
135
+ savedCount: d.savedCount, saved: d.saved,
136
+ links: d.links ? Object.fromEntries(Object.entries(d.links).map(([k, v]) => [k, v.length])) : {},
137
+ };
138
+ if ((opts.format || '').toLowerCase() === 'table') {
139
+ console.log(`pageClass=${d.pageClass} saved=${d.savedCount} tab=${d.tab}(${d.createdTab ? '新建' : '复用'})`);
140
+ for (const [k, v] of Object.entries(d.links || {}))
141
+ console.log(`links.${k}: ${v.length}`);
142
+ printResult(d.saved || [], 'table');
143
+ }
144
+ else {
145
+ printResult(summary, opts.format);
146
+ }
147
+ }
148
+ catch (e) {
149
+ const detail = e.response?.data?.message || e.message;
150
+ getCliLogger().error('ops:adapter-extract-failed', { error: detail });
151
+ process.exit(1);
152
+ }
153
+ return;
154
+ }
155
+ printResult({ error: `unknown action: ${action}`, supported: ['list', 'extract'] }, opts.format);
128
156
  });
129
157
  // ---------------------------------------------------------------------------
130
158
  // memory (站点记忆: 基于 selector/流程建议 的持久化 KV)
131
159
  // ---------------------------------------------------------------------------
132
- exports.memoryCommand = withFormat(new commander_1.Command('memory')
160
+ export const memoryCommand = withFormat(new Command('memory')
133
161
  .description('站点记忆管理(OpenCLI 风格,对应 chromepilot memory): list|show|suggest|delete')
134
162
  .argument('[action]', '操作 (默认 list)', 'list')
135
163
  .argument('[site]', '站点名', '')
136
164
  .argument('[ref]', 'suggest/delete 的元素引用', '')).action((action, site, ref, opts) => {
137
165
  const HOME = process.env.HUNTER_MATE_HOME || process.env.HOME || process.env.USERPROFILE || '.';
138
- const STORE = require('path').join(HOME, '.hunter-mate', 'memory.json');
139
- const fs = require('fs');
166
+ const STORE = path.join(HOME, '.hunter-mate', 'memory.json');
140
167
  let store = {};
141
168
  try {
142
169
  store = JSON.parse(fs.readFileSync(STORE, 'utf-8'));
@@ -153,14 +180,14 @@ exports.memoryCommand = withFormat(new commander_1.Command('memory')
153
180
  return;
154
181
  case 'show':
155
182
  if (!site) {
156
- console.error('memory show 需要 site');
183
+ getCliLogger().error('ops:memory-show-missing-site', { hint: 'memory show 需要 site' });
157
184
  process.exit(1);
158
185
  }
159
186
  printResult(store[site] ?? {}, opts.format);
160
187
  return;
161
188
  case 'suggest': {
162
189
  if (!site || !ref) {
163
- console.error('memory suggest 需要 site + ref');
190
+ getCliLogger().error('ops:memory-suggest-missing-arg', { hint: 'memory suggest 需要 site + ref' });
164
191
  process.exit(1);
165
192
  }
166
193
  store[site] = store[site] || {};
@@ -176,7 +203,7 @@ exports.memoryCommand = withFormat(new commander_1.Command('memory')
176
203
  }
177
204
  case 'delete':
178
205
  if (!site) {
179
- console.error('memory delete 需要 site');
206
+ getCliLogger().error('ops:memory-delete-missing-site', { hint: 'memory delete 需要 site' });
180
207
  process.exit(1);
181
208
  }
182
209
  if (ref)
@@ -187,14 +214,14 @@ exports.memoryCommand = withFormat(new commander_1.Command('memory')
187
214
  printResult({ ok: true, site, ref: ref ?? '(whole site)' }, opts.format);
188
215
  return;
189
216
  default:
190
- console.error(`memory: unknown action ${action} (支持: list|show|suggest|delete)`);
217
+ getCliLogger().error('ops:memory-unknown-action', { hint: `memory: unknown action ${action} (支持: list|show|suggest|delete)` });
191
218
  process.exit(1);
192
219
  }
193
220
  });
194
221
  // ---------------------------------------------------------------------------
195
222
  // trace (事件流查询 + 追加)
196
223
  // ---------------------------------------------------------------------------
197
- exports.traceCommand = withFormat(new commander_1.Command('trace')
224
+ export const traceCommand = withFormat(new Command('trace')
198
225
  .description('trace 事件流管理(命令+selector+network 关联): list|show|summary|network|query|record|delete')
199
226
  .argument('[action]', '操作 (默认 list)', 'list')
200
227
  .argument('[sessionId]', '会话 ID'))
@@ -217,7 +244,7 @@ exports.traceCommand = withFormat(new commander_1.Command('trace')
217
244
  case 'summary':
218
245
  case 'network':
219
246
  if (!sessionId) {
220
- console.error(`trace ${action} 需要 sessionId`);
247
+ getCliLogger().error('ops:trace-needs-sessionId', { hint: `trace ${action} 需要 sessionId` });
221
248
  process.exit(1);
222
249
  }
223
250
  try {
@@ -230,7 +257,7 @@ exports.traceCommand = withFormat(new commander_1.Command('trace')
230
257
  return;
231
258
  case 'query':
232
259
  if (!sessionId) {
233
- console.error('trace query 需要 sessionId');
260
+ getCliLogger().error('ops:trace-query-missing-sessionId', { hint: 'trace query 需要 sessionId' });
234
261
  process.exit(1);
235
262
  }
236
263
  try {
@@ -245,7 +272,7 @@ exports.traceCommand = withFormat(new commander_1.Command('trace')
245
272
  return;
246
273
  case 'record': {
247
274
  if (!sessionId || !opts.type) {
248
- console.error('trace record 需要 sessionId + --type');
275
+ getCliLogger().error('ops:trace-record-missing-arg', { hint: 'trace record 需要 sessionId + --type' });
249
276
  process.exit(1);
250
277
  }
251
278
  let payload = opts.payload;
@@ -262,35 +289,35 @@ exports.traceCommand = withFormat(new commander_1.Command('trace')
262
289
  catch (e) {
263
290
  // server 未就绪时: 本地追加 fallbacks 到 session JSONL 文件
264
291
  const HOME = process.env.HUNTER_MATE_HOME || process.env.HOME || process.env.USERPROFILE || '.';
265
- const f = require('path').join(HOME, '.hunter-mate', 'sessions', `${sessionId}.trace.jsonl`);
266
- require('fs').appendFileSync(f, JSON.stringify({ type: opts.type, payload, ts: Date.now() }) + '\n');
292
+ const f = path.join(HOME, '.hunter-mate', 'sessions', `${sessionId}.trace.jsonl`);
293
+ fs.appendFileSync(f, JSON.stringify({ type: opts.type, payload, ts: Date.now() }) + '\n');
267
294
  printResult({ ok: true, stored: 'local', file: f }, opts.format);
268
295
  }
269
296
  return;
270
297
  }
271
298
  case 'delete':
272
299
  if (!sessionId) {
273
- console.error('trace delete 需要 sessionId');
300
+ getCliLogger().error('ops:trace-delete-missing-sessionId', { hint: 'trace delete 需要 sessionId' });
274
301
  process.exit(1);
275
302
  }
276
- printResult({ ok: true, sessionId, note: '本地 trace 文件删除(server 侧请通过 recordings/* 管理)' }, opts.format);
303
+ printResult({ ok: true, sessionId, note: '本地 trace 文件删除(server 侧请通过 api/recordings/* 管理)' }, opts.format);
277
304
  try {
278
305
  const HOME = process.env.HUNTER_MATE_HOME || process.env.HOME || process.env.USERPROFILE || '.';
279
- const f = require('path').join(HOME, '.hunter-mate', 'sessions', `${sessionId}.trace.jsonl`);
280
- if (require('fs').existsSync(f))
281
- require('fs').unlinkSync(f);
306
+ const f = path.join(HOME, '.hunter-mate', 'sessions', `${sessionId}.trace.jsonl`);
307
+ if (fs.existsSync(f))
308
+ fs.unlinkSync(f);
282
309
  }
283
310
  catch { }
284
311
  return;
285
312
  default:
286
- console.error(`trace: unknown action ${action}`);
313
+ getCliLogger().error('ops:trace-unknown-action', { hint: `trace: unknown action ${action}` });
287
314
  process.exit(1);
288
315
  }
289
316
  });
290
317
  // ---------------------------------------------------------------------------
291
318
  // autofix (基于 memory + trace 的修复建议)
292
319
  // ---------------------------------------------------------------------------
293
- exports.autofixCommand = withFormat(new commander_1.Command('autofix')
320
+ export const autofixCommand = withFormat(new Command('autofix')
294
321
  .description('自动修复建议(基于站点记忆 + trace): 综合建议|retry|selector|auth|network')
295
322
  .argument('[action]', '操作 (默认 综合建议)', '综合建议')
296
323
  .argument('[site]', '站点名')