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.
- package/LICENSE +21 -0
- package/dist/assets/extension/_locales/en_US/messages.json +5 -0
- package/dist/assets/extension/_locales/zh_CN/messages.json +5 -0
- package/dist/assets/extension/background/service-worker.js +3342 -0
- package/dist/assets/extension/content/index.js +13765 -0
- package/dist/assets/extension/manifest.json +47 -0
- package/dist/assets/extension/package.json +24 -0
- package/dist/assets/extension/sidepanel/index.html +400 -0
- package/dist/assets/extension/sidepanel/index.js +926 -0
- package/dist/assets/server/agent-session/agent-session.controller.d.ts +32 -0
- package/dist/assets/server/agent-session/agent-session.controller.js +83 -0
- package/dist/assets/server/agent-session/agent-session.controller.js.map +1 -0
- package/dist/assets/server/agent-session/agent-session.guard.d.ts +4 -0
- package/dist/assets/server/agent-session/agent-session.guard.js +32 -0
- package/dist/assets/server/agent-session/agent-session.guard.js.map +1 -0
- package/dist/assets/server/agent-session/agent-session.module.d.ts +2 -0
- package/dist/assets/server/agent-session/agent-session.module.js +28 -0
- package/dist/assets/server/agent-session/agent-session.module.js.map +1 -0
- package/dist/assets/server/agent-session/agent-session.service.d.ts +54 -0
- package/dist/assets/server/agent-session/agent-session.service.js +431 -0
- package/dist/assets/server/agent-session/agent-session.service.js.map +1 -0
- package/dist/assets/server/agent-session/agent-session.types.d.ts +56 -0
- package/dist/assets/server/agent-session/agent-session.types.js +3 -0
- package/dist/assets/server/agent-session/agent-session.types.js.map +1 -0
- package/dist/assets/server/agent-session/entities/agent-event.entity.d.ts +12 -0
- package/dist/assets/server/agent-session/entities/agent-event.entity.js +73 -0
- package/dist/assets/server/agent-session/entities/agent-event.entity.js.map +1 -0
- package/dist/assets/server/agent-session/entities/agent-message.entity.d.ts +13 -0
- package/dist/assets/server/agent-session/entities/agent-message.entity.js +77 -0
- package/dist/assets/server/agent-session/entities/agent-message.entity.js.map +1 -0
- package/dist/assets/server/agent-session/entities/agent-session.entity.d.ts +14 -0
- package/dist/assets/server/agent-session/entities/agent-session.entity.js +83 -0
- package/dist/assets/server/agent-session/entities/agent-session.entity.js.map +1 -0
- package/dist/assets/server/app.module.d.ts +4 -0
- package/dist/assets/server/app.module.js +127 -0
- package/dist/assets/server/app.module.js.map +1 -0
- package/dist/assets/server/auth/auth.controller.d.ts +22 -0
- package/dist/assets/server/auth/auth.controller.js +88 -0
- package/dist/assets/server/auth/auth.controller.js.map +1 -0
- package/dist/assets/server/auth/auth.middleware.d.ts +5 -0
- package/dist/assets/server/auth/auth.middleware.js +34 -0
- package/dist/assets/server/auth/auth.middleware.js.map +1 -0
- package/dist/assets/server/auth/auth.module.d.ts +2 -0
- package/dist/assets/server/auth/auth.module.js +24 -0
- package/dist/assets/server/auth/auth.module.js.map +1 -0
- package/dist/assets/server/auth/auth.service.d.ts +30 -0
- package/dist/assets/server/auth/auth.service.js +183 -0
- package/dist/assets/server/auth/auth.service.js.map +1 -0
- package/dist/assets/server/auth/auth.types.d.ts +28 -0
- package/dist/assets/server/auth/auth.types.js +3 -0
- package/dist/assets/server/auth/auth.types.js.map +1 -0
- package/dist/assets/server/build-info.json +4 -0
- package/dist/assets/server/common/common.module.d.ts +2 -0
- package/dist/assets/server/common/common.module.js +22 -0
- package/dist/assets/server/common/common.module.js.map +1 -0
- package/dist/assets/server/common/crypto.service.d.ts +11 -0
- package/dist/assets/server/common/crypto.service.js +73 -0
- package/dist/assets/server/common/crypto.service.js.map +1 -0
- package/dist/assets/server/communication/communication-record.entity.d.ts +15 -0
- package/dist/assets/server/communication/communication-record.entity.js +80 -0
- package/dist/assets/server/communication/communication-record.entity.js.map +1 -0
- package/dist/assets/server/communication/communication.controller.d.ts +12 -0
- package/dist/assets/server/communication/communication.controller.js +61 -0
- package/dist/assets/server/communication/communication.controller.js.map +1 -0
- package/dist/assets/server/communication/communication.module.d.ts +2 -0
- package/dist/assets/server/communication/communication.module.js +25 -0
- package/dist/assets/server/communication/communication.module.js.map +1 -0
- package/dist/assets/server/communication/communication.service.d.ts +23 -0
- package/dist/assets/server/communication/communication.service.js +51 -0
- package/dist/assets/server/communication/communication.service.js.map +1 -0
- package/dist/assets/server/db/schema-validator.service.d.ts +25 -0
- package/dist/assets/server/db/schema-validator.service.js +107 -0
- package/dist/assets/server/db/schema-validator.service.js.map +1 -0
- package/dist/assets/server/db/schema-version.entity.d.ts +5 -0
- package/dist/assets/server/db/schema-version.entity.js +35 -0
- package/dist/assets/server/db/schema-version.entity.js.map +1 -0
- package/dist/assets/server/db/sqlite.module.d.ts +2 -0
- package/dist/assets/server/db/sqlite.module.js +83 -0
- package/dist/assets/server/db/sqlite.module.js.map +1 -0
- package/dist/assets/server/devops/devops-sink-init.d.ts +23 -0
- package/dist/assets/server/devops/devops-sink-init.js +101 -0
- package/dist/assets/server/devops/devops-sink-init.js.map +1 -0
- package/dist/assets/server/devops/devops-sink-init.spec.d.ts +1 -0
- package/dist/assets/server/devops/devops-sink-init.spec.js +71 -0
- package/dist/assets/server/devops/devops-sink-init.spec.js.map +1 -0
- package/dist/assets/server/devops/devops-sink.module.d.ts +2 -0
- package/dist/assets/server/devops/devops-sink.module.js +22 -0
- package/dist/assets/server/devops/devops-sink.module.js.map +1 -0
- package/dist/assets/server/doctor/doctor.controller.d.ts +13 -0
- package/dist/assets/server/doctor/doctor.controller.js +62 -0
- package/dist/assets/server/doctor/doctor.controller.js.map +1 -0
- package/dist/assets/server/doctor/doctor.module.d.ts +2 -0
- package/dist/assets/server/doctor/doctor.module.js +27 -0
- package/dist/assets/server/doctor/doctor.module.js.map +1 -0
- package/dist/assets/server/doctor/doctor.service.d.ts +15 -0
- package/dist/assets/server/doctor/doctor.service.js +209 -0
- package/dist/assets/server/doctor/doctor.service.js.map +1 -0
- package/dist/assets/server/doctor/doctor.types.d.ts +46 -0
- package/dist/assets/server/doctor/doctor.types.js +3 -0
- package/dist/assets/server/doctor/doctor.types.js.map +1 -0
- package/dist/assets/server/extension/extension-control.controller.d.ts +67 -0
- package/dist/assets/server/extension/extension-control.controller.js +173 -0
- package/dist/assets/server/extension/extension-control.controller.js.map +1 -0
- package/dist/assets/server/extension/extension-control.service.d.ts +46 -0
- package/dist/assets/server/extension/extension-control.service.js +212 -0
- package/dist/assets/server/extension/extension-control.service.js.map +1 -0
- package/dist/assets/server/extension/extension-core.module.d.ts +2 -0
- package/dist/assets/server/extension/extension-core.module.js +21 -0
- package/dist/assets/server/extension/extension-core.module.js.map +1 -0
- package/dist/assets/server/extension/extension-version.controller.d.ts +6 -0
- package/dist/assets/server/extension/extension-version.controller.js +41 -0
- package/dist/assets/server/extension/extension-version.controller.js.map +1 -0
- package/dist/assets/server/extension/extension.module.d.ts +2 -0
- package/dist/assets/server/extension/extension.module.js +25 -0
- package/dist/assets/server/extension/extension.module.js.map +1 -0
- package/dist/assets/server/extraction/adapter.service.d.ts +55 -0
- package/dist/assets/server/extraction/adapter.service.js +275 -0
- package/dist/assets/server/extraction/adapter.service.js.map +1 -0
- package/dist/assets/server/extraction/anomaly-report.service.d.ts +12 -0
- package/dist/assets/server/extraction/anomaly-report.service.js +81 -0
- package/dist/assets/server/extraction/anomaly-report.service.js.map +1 -0
- package/dist/assets/server/extraction/entities/adapter-rule.entity.d.ts +13 -0
- package/dist/assets/server/extraction/entities/adapter-rule.entity.js +71 -0
- package/dist/assets/server/extraction/entities/adapter-rule.entity.js.map +1 -0
- package/dist/assets/server/extraction/entities/company-profile.entity.d.ts +14 -0
- package/dist/assets/server/extraction/entities/company-profile.entity.js +81 -0
- package/dist/assets/server/extraction/entities/company-profile.entity.js.map +1 -0
- package/dist/assets/server/extraction/entities/job-posting.entity.d.ts +15 -0
- package/dist/assets/server/extraction/entities/job-posting.entity.js +86 -0
- package/dist/assets/server/extraction/entities/job-posting.entity.js.map +1 -0
- package/dist/assets/server/extraction/entities/parse-log.entity.d.ts +18 -0
- package/dist/assets/server/extraction/entities/parse-log.entity.js +102 -0
- package/dist/assets/server/extraction/entities/parse-log.entity.js.map +1 -0
- package/dist/assets/server/extraction/entities/talent-profile.entity.d.ts +15 -0
- package/dist/assets/server/extraction/entities/talent-profile.entity.js +86 -0
- package/dist/assets/server/extraction/entities/talent-profile.entity.js.map +1 -0
- package/dist/assets/server/extraction/extraction-entity.controller.d.ts +138 -0
- package/dist/assets/server/extraction/extraction-entity.controller.js +493 -0
- package/dist/assets/server/extraction/extraction-entity.controller.js.map +1 -0
- package/dist/assets/server/extraction/extraction-rule.controller.d.ts +7 -0
- package/dist/assets/server/extraction/extraction-rule.controller.js +48 -0
- package/dist/assets/server/extraction/extraction-rule.controller.js.map +1 -0
- package/dist/assets/server/extraction/extraction-rule.entity.d.ts +15 -0
- package/dist/assets/server/extraction/extraction-rule.entity.js +80 -0
- package/dist/assets/server/extraction/extraction-rule.entity.js.map +1 -0
- package/dist/assets/server/extraction/extraction-rule.service.d.ts +24 -0
- package/dist/assets/server/extraction/extraction-rule.service.js +89 -0
- package/dist/assets/server/extraction/extraction-rule.service.js.map +1 -0
- package/dist/assets/server/extraction/extraction.module.d.ts +2 -0
- package/dist/assets/server/extraction/extraction.module.js +53 -0
- package/dist/assets/server/extraction/extraction.module.js.map +1 -0
- package/dist/assets/server/extraction/extraction.service.d.ts +78 -0
- package/dist/assets/server/extraction/extraction.service.js +430 -0
- package/dist/assets/server/extraction/extraction.service.js.map +1 -0
- package/dist/assets/server/extraction/linkedin-extractor.d.ts +1 -0
- package/dist/assets/server/extraction/linkedin-extractor.js +244 -0
- package/dist/assets/server/extraction/linkedin-extractor.js.map +1 -0
- package/dist/assets/server/extraction/rrweb-snapshot.utils.d.ts +15 -0
- package/dist/assets/server/extraction/rrweb-snapshot.utils.js +48 -0
- package/dist/assets/server/extraction/rrweb-snapshot.utils.js.map +1 -0
- package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.d.ts +1 -0
- package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.js +60 -0
- package/dist/assets/server/extraction/rrweb-snapshot.utils.spec.js.map +1 -0
- package/dist/assets/server/extraction/script-rule.d.ts +14 -0
- package/dist/assets/server/extraction/script-rule.js +49 -0
- package/dist/assets/server/extraction/script-rule.js.map +1 -0
- package/dist/assets/server/extraction/snapshot-analysis.service.d.ts +23 -0
- package/dist/assets/server/extraction/snapshot-analysis.service.js +147 -0
- package/dist/assets/server/extraction/snapshot-analysis.service.js.map +1 -0
- package/dist/assets/server/extraction/structured-data.d.ts +7 -0
- package/dist/assets/server/extraction/structured-data.js +96 -0
- package/dist/assets/server/extraction/structured-data.js.map +1 -0
- package/dist/assets/server/hcapi/hcapi.module.d.ts +2 -0
- package/dist/assets/server/hcapi/hcapi.module.js +23 -0
- package/dist/assets/server/hcapi/hcapi.module.js.map +1 -0
- package/dist/assets/server/hcapi/hcapi.service.d.ts +28 -0
- package/dist/assets/server/hcapi/hcapi.service.js +81 -0
- package/dist/assets/server/hcapi/hcapi.service.js.map +1 -0
- package/dist/assets/server/health/health.controller.d.ts +19 -0
- package/dist/assets/server/health/health.controller.js +59 -0
- package/dist/assets/server/health/health.controller.js.map +1 -0
- package/dist/assets/server/jobcase/jobcase.controller.d.ts +12 -0
- package/dist/assets/server/jobcase/jobcase.controller.js +61 -0
- package/dist/assets/server/jobcase/jobcase.controller.js.map +1 -0
- package/dist/assets/server/jobcase/jobcase.entity.d.ts +13 -0
- package/dist/assets/server/jobcase/jobcase.entity.js +71 -0
- package/dist/assets/server/jobcase/jobcase.entity.js.map +1 -0
- package/dist/assets/server/jobcase/jobcase.module.d.ts +2 -0
- package/dist/assets/server/jobcase/jobcase.module.js +26 -0
- package/dist/assets/server/jobcase/jobcase.module.js.map +1 -0
- package/dist/assets/server/jobcase/jobcase.service.d.ts +21 -0
- package/dist/assets/server/jobcase/jobcase.service.js +56 -0
- package/dist/assets/server/jobcase/jobcase.service.js.map +1 -0
- package/dist/assets/server/llm/llm.module.d.ts +2 -0
- package/dist/assets/server/llm/llm.module.js +21 -0
- package/dist/assets/server/llm/llm.module.js.map +1 -0
- package/dist/assets/server/llm/llm.service.d.ts +18 -0
- package/dist/assets/server/llm/llm.service.js +65 -0
- package/dist/assets/server/llm/llm.service.js.map +1 -0
- package/dist/assets/server/main.d.ts +1 -0
- package/dist/assets/server/main.js +30 -0
- package/dist/assets/server/main.js.map +1 -0
- package/dist/assets/server/matching/matching.controller.d.ts +16 -0
- package/dist/assets/server/matching/matching.controller.js +97 -0
- package/dist/assets/server/matching/matching.controller.js.map +1 -0
- package/dist/assets/server/matching/matching.module.d.ts +2 -0
- package/dist/assets/server/matching/matching.module.js +36 -0
- package/dist/assets/server/matching/matching.module.js.map +1 -0
- package/dist/assets/server/matching/matching.service.d.ts +55 -0
- package/dist/assets/server/matching/matching.service.js +409 -0
- package/dist/assets/server/matching/matching.service.js.map +1 -0
- package/dist/assets/server/package.json +57 -0
- package/dist/assets/server/parsed-resume/parsed-resume.controller.d.ts +6 -0
- package/dist/assets/server/parsed-resume/parsed-resume.controller.js +42 -0
- package/dist/assets/server/parsed-resume/parsed-resume.controller.js.map +1 -0
- package/dist/assets/server/parsed-resume/parsed-resume.entity.d.ts +124 -0
- package/dist/assets/server/parsed-resume/parsed-resume.entity.js +72 -0
- package/dist/assets/server/parsed-resume/parsed-resume.entity.js.map +1 -0
- package/dist/assets/server/parsed-resume/parsed-resume.module.d.ts +2 -0
- package/dist/assets/server/parsed-resume/parsed-resume.module.js +26 -0
- package/dist/assets/server/parsed-resume/parsed-resume.module.js.map +1 -0
- package/dist/assets/server/parsed-resume/parsed-resume.service.d.ts +10 -0
- package/dist/assets/server/parsed-resume/parsed-resume.service.js +45 -0
- package/dist/assets/server/parsed-resume/parsed-resume.service.js.map +1 -0
- package/dist/assets/server/parsing/parse-error-report.entity.d.ts +11 -0
- package/dist/assets/server/parsing/parse-error-report.entity.js +66 -0
- package/dist/assets/server/parsing/parse-error-report.entity.js.map +1 -0
- package/dist/assets/server/parsing/parsing.controller.d.ts +19 -0
- package/dist/assets/server/parsing/parsing.controller.js +97 -0
- package/dist/assets/server/parsing/parsing.controller.js.map +1 -0
- package/dist/assets/server/parsing/parsing.module.d.ts +2 -0
- package/dist/assets/server/parsing/parsing.module.js +38 -0
- package/dist/assets/server/parsing/parsing.module.js.map +1 -0
- package/dist/assets/server/parsing/parsing.service.d.ts +38 -0
- package/dist/assets/server/parsing/parsing.service.js +263 -0
- package/dist/assets/server/parsing/parsing.service.js.map +1 -0
- package/dist/assets/server/query/fields-meta.controller.d.ts +28 -0
- package/dist/assets/server/query/fields-meta.controller.js +57 -0
- package/dist/assets/server/query/fields-meta.controller.js.map +1 -0
- package/dist/assets/server/query/query-builder.controller.d.ts +11 -0
- package/dist/assets/server/query/query-builder.controller.js +40 -0
- package/dist/assets/server/query/query-builder.controller.js.map +1 -0
- package/dist/assets/server/query/query-builder.service.d.ts +8 -0
- package/dist/assets/server/query/query-builder.service.js +41 -0
- package/dist/assets/server/query/query-builder.service.js.map +1 -0
- package/dist/assets/server/query/query.module.d.ts +2 -0
- package/dist/assets/server/query/query.module.js +23 -0
- package/dist/assets/server/query/query.module.js.map +1 -0
- package/dist/assets/server/recording/entities/recording-event.entity.d.ts +9 -0
- package/dist/assets/server/recording/entities/recording-event.entity.js +56 -0
- package/dist/assets/server/recording/entities/recording-event.entity.js.map +1 -0
- package/dist/assets/server/recording/entities/recording-snapshot.entity.d.ts +16 -0
- package/dist/assets/server/recording/entities/recording-snapshot.entity.js +91 -0
- package/dist/assets/server/recording/entities/recording-snapshot.entity.js.map +1 -0
- package/dist/assets/server/recording/recording-event-bus.service.d.ts +4 -0
- package/dist/assets/server/recording/recording-event-bus.service.js +25 -0
- package/dist/assets/server/recording/recording-event-bus.service.js.map +1 -0
- package/dist/assets/server/recording/recording-snapshot.service.d.ts +13 -0
- package/dist/assets/server/recording/recording-snapshot.service.js +81 -0
- package/dist/assets/server/recording/recording-snapshot.service.js.map +1 -0
- package/dist/assets/server/recording/recording-snapshot.service.spec.d.ts +1 -0
- package/dist/assets/server/recording/recording-snapshot.service.spec.js +65 -0
- package/dist/assets/server/recording/recording-snapshot.service.spec.js.map +1 -0
- package/dist/assets/server/recording/recording.controller.d.ts +54 -0
- package/dist/assets/server/recording/recording.controller.js +77 -0
- package/dist/assets/server/recording/recording.controller.js.map +1 -0
- package/dist/assets/server/recording/recording.gateway.d.ts +15 -0
- package/dist/assets/server/recording/recording.gateway.js +117 -0
- package/dist/assets/server/recording/recording.gateway.js.map +1 -0
- package/dist/assets/server/recording/recording.module.d.ts +2 -0
- package/dist/assets/server/recording/recording.module.js +36 -0
- package/dist/assets/server/recording/recording.module.js.map +1 -0
- package/dist/assets/server/recording/recording.service.d.ts +43 -0
- package/dist/assets/server/recording/recording.service.js +124 -0
- package/dist/assets/server/recording/recording.service.js.map +1 -0
- package/dist/assets/server/remark/remark.controller.d.ts +21 -0
- package/dist/assets/server/remark/remark.controller.js +59 -0
- package/dist/assets/server/remark/remark.controller.js.map +1 -0
- package/dist/assets/server/remark/remark.entity.d.ts +18 -0
- package/dist/assets/server/remark/remark.entity.js +67 -0
- package/dist/assets/server/remark/remark.entity.js.map +1 -0
- package/dist/assets/server/remark/remark.module.d.ts +2 -0
- package/dist/assets/server/remark/remark.module.js +26 -0
- package/dist/assets/server/remark/remark.module.js.map +1 -0
- package/dist/assets/server/remark/remark.service.d.ts +8 -0
- package/dist/assets/server/remark/remark.service.js +39 -0
- package/dist/assets/server/remark/remark.service.js.map +1 -0
- package/dist/assets/server/report/report.controller.d.ts +18 -0
- package/dist/assets/server/report/report.controller.js +41 -0
- package/dist/assets/server/report/report.controller.js.map +1 -0
- package/dist/assets/server/report/report.module.d.ts +2 -0
- package/dist/assets/server/report/report.module.js +24 -0
- package/dist/assets/server/report/report.module.js.map +1 -0
- package/dist/assets/server/report/report.service.d.ts +23 -0
- package/dist/assets/server/report/report.service.js +54 -0
- package/dist/assets/server/report/report.service.js.map +1 -0
- package/dist/assets/server/rules/rules.controller.d.ts +6 -0
- package/dist/assets/server/rules/rules.controller.js +35 -0
- package/dist/assets/server/rules/rules.controller.js.map +1 -0
- package/dist/assets/server/rules/rules.module.d.ts +2 -0
- package/dist/assets/server/rules/rules.module.js +23 -0
- package/dist/assets/server/rules/rules.module.js.map +1 -0
- package/dist/assets/server/rules/rules.service.d.ts +10 -0
- package/dist/assets/server/rules/rules.service.js +26 -0
- package/dist/assets/server/rules/rules.service.js.map +1 -0
- package/dist/assets/server/search/search.controller.d.ts +6 -0
- package/dist/assets/server/search/search.controller.js +53 -0
- package/dist/assets/server/search/search.controller.js.map +1 -0
- package/dist/assets/server/search/search.module.d.ts +2 -0
- package/dist/assets/server/search/search.module.js +24 -0
- package/dist/assets/server/search/search.module.js.map +1 -0
- package/dist/assets/server/search/search.service.d.ts +6 -0
- package/dist/assets/server/search/search.service.js +46 -0
- package/dist/assets/server/search/search.service.js.map +1 -0
- package/dist/assets/server/sentry.d.ts +3 -0
- package/dist/assets/server/sentry.js +10 -0
- package/dist/assets/server/sentry.js.map +1 -0
- package/dist/assets/server/site/entities/site-registry.entity.d.ts +13 -0
- package/dist/assets/server/site/entities/site-registry.entity.js +76 -0
- package/dist/assets/server/site/entities/site-registry.entity.js.map +1 -0
- package/dist/assets/server/site/site.controller.d.ts +38 -0
- package/dist/assets/server/site/site.controller.js +60 -0
- package/dist/assets/server/site/site.controller.js.map +1 -0
- package/dist/assets/server/site/site.module.d.ts +2 -0
- package/dist/assets/server/site/site.module.js +26 -0
- package/dist/assets/server/site/site.module.js.map +1 -0
- package/dist/assets/server/site/site.service.d.ts +38 -0
- package/dist/assets/server/site/site.service.js +141 -0
- package/dist/assets/server/site/site.service.js.map +1 -0
- package/dist/assets/server/snapshot/raw-snapshot.entity.d.ts +35 -0
- package/dist/assets/server/snapshot/raw-snapshot.entity.js +62 -0
- package/dist/assets/server/snapshot/raw-snapshot.entity.js.map +1 -0
- package/dist/assets/server/snapshot/snapshot.controller.d.ts +18 -0
- package/dist/assets/server/snapshot/snapshot.controller.js +76 -0
- package/dist/assets/server/snapshot/snapshot.controller.js.map +1 -0
- package/dist/assets/server/snapshot/snapshot.module.d.ts +2 -0
- package/dist/assets/server/snapshot/snapshot.module.js +26 -0
- package/dist/assets/server/snapshot/snapshot.module.js.map +1 -0
- package/dist/assets/server/snapshot/snapshot.service.d.ts +10 -0
- package/dist/assets/server/snapshot/snapshot.service.js +48 -0
- package/dist/assets/server/snapshot/snapshot.service.js.map +1 -0
- package/dist/assets/server/system/system.controller.d.ts +39 -0
- package/dist/assets/server/system/system.controller.js +93 -0
- package/dist/assets/server/system/system.controller.js.map +1 -0
- package/dist/assets/server/system/system.module.d.ts +2 -0
- package/dist/assets/server/system/system.module.js +26 -0
- package/dist/assets/server/system/system.module.js.map +1 -0
- package/dist/assets/server/system/system.service.d.ts +86 -0
- package/dist/assets/server/system/system.service.js +433 -0
- package/dist/assets/server/system/system.service.js.map +1 -0
- package/dist/assets/server/talent-fingerprint/fingerprint-match.service.d.ts +28 -0
- package/dist/assets/server/talent-fingerprint/fingerprint-match.service.js +186 -0
- package/dist/assets/server/talent-fingerprint/fingerprint-match.service.js.map +1 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.d.ts +30 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.js +55 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.entity.js.map +1 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.d.ts +2 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.js +25 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.module.js.map +1 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.d.ts +8 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.js +44 -0
- package/dist/assets/server/talent-fingerprint/talent-fingerprint.service.js.map +1 -0
- package/dist/assets/server/talent-job-match/talent-job-match.controller.d.ts +6 -0
- package/dist/assets/server/talent-job-match/talent-job-match.controller.js +42 -0
- package/dist/assets/server/talent-job-match/talent-job-match.controller.js.map +1 -0
- package/dist/assets/server/talent-job-match/talent-job-match.entity.d.ts +33 -0
- package/dist/assets/server/talent-job-match/talent-job-match.entity.js +73 -0
- package/dist/assets/server/talent-job-match/talent-job-match.entity.js.map +1 -0
- package/dist/assets/server/talent-job-match/talent-job-match.module.d.ts +2 -0
- package/dist/assets/server/talent-job-match/talent-job-match.module.js +26 -0
- package/dist/assets/server/talent-job-match/talent-job-match.module.js.map +1 -0
- package/dist/assets/server/talent-job-match/talent-job-match.service.d.ts +9 -0
- package/dist/assets/server/talent-job-match/talent-job-match.service.js +42 -0
- package/dist/assets/server/talent-job-match/talent-job-match.service.js.map +1 -0
- package/dist/assets/server/talent-portrait/portrait-merge.service.d.ts +17 -0
- package/dist/assets/server/talent-portrait/portrait-merge.service.js +200 -0
- package/dist/assets/server/talent-portrait/portrait-merge.service.js.map +1 -0
- package/dist/assets/server/talent-portrait/talent-portrait.controller.d.ts +7 -0
- package/dist/assets/server/talent-portrait/talent-portrait.controller.js +52 -0
- package/dist/assets/server/talent-portrait/talent-portrait.controller.js.map +1 -0
- package/dist/assets/server/talent-portrait/talent-portrait.entity.d.ts +91 -0
- package/dist/assets/server/talent-portrait/talent-portrait.entity.js +71 -0
- package/dist/assets/server/talent-portrait/talent-portrait.entity.js.map +1 -0
- package/dist/assets/server/talent-portrait/talent-portrait.module.d.ts +2 -0
- package/dist/assets/server/talent-portrait/talent-portrait.module.js +27 -0
- package/dist/assets/server/talent-portrait/talent-portrait.module.js.map +1 -0
- package/dist/assets/server/talent-portrait/talent-portrait.service.d.ts +10 -0
- package/dist/assets/server/talent-portrait/talent-portrait.service.js +46 -0
- package/dist/assets/server/talent-portrait/talent-portrait.service.js.map +1 -0
- package/dist/assets/server/telemetry/telemetry.module.d.ts +2 -0
- package/dist/assets/server/telemetry/telemetry.module.js +24 -0
- package/dist/assets/server/telemetry/telemetry.module.js.map +1 -0
- package/dist/assets/server/telemetry/telemetry.service.d.ts +29 -0
- package/dist/assets/server/telemetry/telemetry.service.js +116 -0
- package/dist/assets/server/telemetry/telemetry.service.js.map +1 -0
- package/dist/auto-doctor.d.ts +8 -0
- package/dist/auto-doctor.js +34 -0
- package/dist/bundled-assets.d.ts +22 -0
- package/dist/bundled-assets.js +80 -0
- package/dist/cache/db.js +10 -54
- package/dist/commands/addons.js +46 -71
- package/dist/commands/cache.js +29 -27
- package/dist/commands/config.d.ts +1 -1
- package/dist/commands/config.js +8 -12
- package/dist/commands/doctor.d.ts +38 -1
- package/dist/commands/doctor.js +214 -74
- package/dist/commands/extension.js +84 -98
- package/dist/commands/extras.d.ts +32 -2
- package/dist/commands/extras.js +252 -64
- package/dist/commands/init.js +18 -46
- package/dist/commands/install.js +31 -60
- package/dist/commands/job.js +27 -65
- package/dist/commands/login.js +50 -37
- package/dist/commands/logout.js +8 -12
- package/dist/commands/ops.js +94 -67
- package/dist/commands/record.js +21 -59
- package/dist/commands/report.js +14 -18
- package/dist/commands/search.js +14 -21
- package/dist/commands/server.d.ts +1 -1
- package/dist/commands/server.js +126 -112
- package/dist/commands/status.js +23 -27
- package/dist/commands/update.js +44 -79
- package/dist/config.d.ts +3 -0
- package/dist/config.js +12 -46
- package/dist/i18n/index.js +5 -11
- package/dist/i18n/locales/en-US.json +24 -1
- package/dist/i18n/locales/zh-CN.json +24 -1
- package/dist/index.cmd +3 -0
- package/dist/index.js +90 -98
- package/dist/index.ps1 +3 -0
- package/dist/keychain.js +9 -44
- package/dist/logger.d.ts +7 -0
- package/dist/logger.js +80 -0
- package/dist/native-check.d.ts +6 -0
- package/dist/native-check.js +23 -0
- package/dist/sentry.js +4 -8
- package/dist/updater.js +15 -52
- package/dist/utils/proc.d.ts +35 -0
- package/dist/utils/proc.js +81 -0
- package/dist/utils/spawn.d.ts +19 -0
- package/dist/utils/spawn.js +60 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +183 -81
- package/dist/watchdog.d.ts +1 -0
- package/dist/watchdog.js +128 -0
- package/package.json +7 -6
- package/dist/commands/native-check.d.ts +0 -22
- package/dist/commands/native-check.js +0 -93
package/dist/commands/job.js
CHANGED
|
@@ -1,56 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
|
67
|
-
externalId: (
|
|
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
|
-
|
|
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
|
-
|
|
47
|
+
saveJobCase(jobCase);
|
|
88
48
|
return serverCase;
|
|
89
49
|
}
|
|
90
|
-
function runJobList() {
|
|
91
|
-
return
|
|
50
|
+
export function runJobList() {
|
|
51
|
+
return listJobCases();
|
|
92
52
|
}
|
|
93
|
-
|
|
94
|
-
.description(
|
|
95
|
-
|
|
53
|
+
export const jobCommand = new Command('job')
|
|
54
|
+
.description(i18n.t('job.description'));
|
|
55
|
+
jobCommand
|
|
96
56
|
.command('create <folder>')
|
|
97
|
-
.description(
|
|
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
|
-
|
|
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
|
-
|
|
70
|
+
jobCommand
|
|
109
71
|
.command('list')
|
|
110
72
|
.description('List local JobCases')
|
|
111
73
|
.action(() => {
|
package/dist/commands/login.js
CHANGED
|
@@ -1,81 +1,94 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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 =
|
|
19
|
-
const { data: deviceCode } = await
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
34
|
+
getCliLogger().warn('login:device-code-expired', { attempts: i + 1 });
|
|
35
|
+
throw new Error(i18n.t('login.expired'));
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
getCliLogger().warn('login:device-code-timeout', { maxAttempts });
|
|
39
|
+
throw new Error(i18n.t('login.expired'));
|
|
38
40
|
}
|
|
39
|
-
|
|
40
|
-
.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 =
|
|
46
|
-
// 邮箱验证码登录(
|
|
47
|
+
const config = loadConfig();
|
|
48
|
+
// 邮箱验证码登录(两步式无状态;SaaS 服务端,不经本地 server)
|
|
47
49
|
if (options.email) {
|
|
48
50
|
if (!options.code) {
|
|
49
51
|
// 第一步:发送验证码
|
|
50
|
-
await
|
|
52
|
+
await axios.post(`${config.saasUrl}/hunter-mate/auth/email/send-code`, {
|
|
51
53
|
email: options.email,
|
|
52
54
|
});
|
|
53
|
-
|
|
54
|
-
console.log(
|
|
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
|
|
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
|
|
63
|
-
|
|
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
|
-
|
|
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(
|
|
76
|
+
console.log(i18n.t('login.start'));
|
|
77
|
+
getCliLogger().info('login:start', { method: 'device-code' });
|
|
72
78
|
await runLogin();
|
|
73
|
-
console.log(
|
|
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
|
-
|
|
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
|
});
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
12
|
-
.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(
|
|
11
|
+
console.log(i18n.t('logout.success'));
|
|
16
12
|
});
|
package/dist/commands/ops.js
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 =
|
|
16
|
-
return
|
|
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
|
-
|
|
39
|
-
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
|
105
|
-
.description('
|
|
106
|
-
.argument('[action]', '操作: list
|
|
107
|
-
.argument('[
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
{
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
266
|
-
|
|
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
|
-
|
|
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 =
|
|
280
|
-
if (
|
|
281
|
-
|
|
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
|
-
|
|
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
|
-
|
|
320
|
+
export const autofixCommand = withFormat(new Command('autofix')
|
|
294
321
|
.description('自动修复建议(基于站点记忆 + trace): 综合建议|retry|selector|auth|network')
|
|
295
322
|
.argument('[action]', '操作 (默认 综合建议)', '综合建议')
|
|
296
323
|
.argument('[site]', '站点名')
|