@dolusoft/hirebase-mcp 1.3.5 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/integration/hybrid-search.test.d.ts +1 -0
- package/dist/__tests__/integration/hybrid-search.test.js +70 -0
- package/dist/__tests__/integration/hybrid-search.test.js.map +1 -0
- package/dist/__tests__/unit/chunking.test.d.ts +1 -0
- package/dist/__tests__/unit/chunking.test.js +70 -0
- package/dist/__tests__/unit/chunking.test.js.map +1 -0
- package/dist/__tests__/unit/composite-score.test.d.ts +1 -0
- package/dist/__tests__/unit/composite-score.test.js +28 -0
- package/dist/__tests__/unit/composite-score.test.js.map +1 -0
- package/dist/__tests__/unit/find-similar-candidates.test.d.ts +1 -0
- package/dist/__tests__/unit/find-similar-candidates.test.js +33 -0
- package/dist/__tests__/unit/find-similar-candidates.test.js.map +1 -0
- package/dist/__tests__/unit/query-enhancer.test.d.ts +1 -0
- package/dist/__tests__/unit/query-enhancer.test.js +20 -0
- package/dist/__tests__/unit/query-enhancer.test.js.map +1 -0
- package/dist/__tests__/unit/skill-graph.test.d.ts +1 -0
- package/dist/__tests__/unit/skill-graph.test.js +38 -0
- package/dist/__tests__/unit/skill-graph.test.js.map +1 -0
- package/dist/__tests__/unit/skill-normalizer.test.d.ts +1 -0
- package/dist/__tests__/unit/skill-normalizer.test.js +41 -0
- package/dist/__tests__/unit/skill-normalizer.test.js.map +1 -0
- package/dist/__tests__/unit/smoke.test.d.ts +1 -0
- package/dist/__tests__/unit/smoke.test.js +7 -0
- package/dist/__tests__/unit/smoke.test.js.map +1 -0
- package/dist/application/dto/candidate-summary.d.ts +2 -0
- package/dist/application/dto/filter-input.d.ts +2 -0
- package/dist/application/dto/search-results.d.ts +3 -0
- package/dist/application/dto/stats.d.ts +6 -0
- package/dist/application/services/query-enhancer.d.ts +10 -0
- package/dist/application/services/query-enhancer.js +34 -0
- package/dist/application/services/query-enhancer.js.map +1 -0
- package/dist/application/use-cases/add-cv.d.ts +5 -1
- package/dist/application/use-cases/add-cv.js +25 -4
- package/dist/application/use-cases/add-cv.js.map +1 -1
- package/dist/application/use-cases/delete-cv.d.ts +5 -1
- package/dist/application/use-cases/delete-cv.js +13 -1
- package/dist/application/use-cases/delete-cv.js.map +1 -1
- package/dist/application/use-cases/delete-job-posting.d.ts +10 -0
- package/dist/application/use-cases/delete-job-posting.js +23 -0
- package/dist/application/use-cases/delete-job-posting.js.map +1 -0
- package/dist/application/use-cases/filter-candidates.js +12 -1
- package/dist/application/use-cases/filter-candidates.js.map +1 -1
- package/dist/application/use-cases/find-similar-candidates.d.ts +21 -0
- package/dist/application/use-cases/find-similar-candidates.js +85 -0
- package/dist/application/use-cases/find-similar-candidates.js.map +1 -0
- package/dist/application/use-cases/get-stats.js +2 -0
- package/dist/application/use-cases/get-stats.js.map +1 -1
- package/dist/application/use-cases/list-cvs.d.ts +2 -1
- package/dist/application/use-cases/list-cvs.js +18 -2
- package/dist/application/use-cases/list-cvs.js.map +1 -1
- package/dist/application/use-cases/match-candidates.d.ts +5 -1
- package/dist/application/use-cases/match-candidates.js +61 -19
- package/dist/application/use-cases/match-candidates.js.map +1 -1
- package/dist/application/use-cases/reindex-all.d.ts +22 -0
- package/dist/application/use-cases/reindex-all.js +124 -0
- package/dist/application/use-cases/reindex-all.js.map +1 -0
- package/dist/application/use-cases/semantic-search.d.ts +3 -1
- package/dist/application/use-cases/semantic-search.js +13 -3
- package/dist/application/use-cases/semantic-search.js.map +1 -1
- package/dist/application/use-cases/update-cv.d.ts +2 -1
- package/dist/application/use-cases/update-cv.js +18 -3
- package/dist/application/use-cases/update-cv.js.map +1 -1
- package/dist/domain/entities/candidate.d.ts +3 -0
- package/dist/domain/repositories/candidate-repository.d.ts +1 -0
- package/dist/domain/repositories/chunk-repository.d.ts +8 -0
- package/dist/infrastructure/config/app-config.d.ts +5 -0
- package/dist/infrastructure/config/app-config.js +4 -0
- package/dist/infrastructure/config/app-config.js.map +1 -1
- package/dist/infrastructure/persistence/database.d.ts +1 -0
- package/dist/infrastructure/persistence/database.js +20 -0
- package/dist/infrastructure/persistence/database.js.map +1 -1
- package/dist/infrastructure/persistence/lancedb-candidate-repository.d.ts +1 -0
- package/dist/infrastructure/persistence/lancedb-candidate-repository.js +20 -0
- package/dist/infrastructure/persistence/lancedb-candidate-repository.js.map +1 -1
- package/dist/infrastructure/persistence/lancedb-chunk-repository.d.ts +4 -1
- package/dist/infrastructure/persistence/lancedb-chunk-repository.js +64 -2
- package/dist/infrastructure/persistence/lancedb-chunk-repository.js.map +1 -1
- package/dist/interface/dashboard/public/200.html +1 -1
- package/dist/interface/dashboard/public/404.html +1 -1
- package/dist/interface/dashboard/public/_nuxt/builds/latest.json +1 -1
- package/dist/interface/dashboard/public/_nuxt/builds/meta/05a92851-5bed-4eaf-bd75-e0aff9ec5876.json +1 -0
- package/dist/interface/dashboard/public/_nuxt/builds/meta/1d36013b-8fb8-4cea-a448-d5f224b731ee.json +1 -0
- package/dist/interface/dashboard/public/_nuxt/builds/meta/2bb695c5-c739-46a0-a3e6-4b76aa321c29.json +1 -0
- package/dist/interface/dashboard/public/_nuxt/builds/meta/3ee0a1ee-8e79-4443-a6e7-b0b6412b0a38.json +1 -0
- package/dist/interface/dashboard/public/_nuxt/builds/meta/ba31dbc0-8fe2-44bc-8214-6b3d717566a0.json +1 -0
- package/dist/interface/dashboard/public/_nuxt/builds/meta/fc914bdb-64a6-4798-a08f-64eb8ea9a307.json +1 -0
- package/dist/interface/dashboard/public/index.html +1 -1
- package/dist/interface/mcp/server.js +105 -42
- package/dist/interface/mcp/server.js.map +1 -1
- package/dist/interface/mcp/tools/add-cv.d.ts +2 -2
- package/dist/interface/mcp/tools/add-cv.js +31 -3
- package/dist/interface/mcp/tools/add-cv.js.map +1 -1
- package/dist/interface/mcp/tools/add-job-posting.d.ts +2 -2
- package/dist/interface/mcp/tools/add-job-posting.js +20 -12
- package/dist/interface/mcp/tools/add-job-posting.js.map +1 -1
- package/dist/interface/mcp/tools/add-pipeline-note.d.ts +2 -2
- package/dist/interface/mcp/tools/add-pipeline-note.js +10 -6
- package/dist/interface/mcp/tools/add-pipeline-note.js.map +1 -1
- package/dist/interface/mcp/tools/add-reference-cv.d.ts +2 -2
- package/dist/interface/mcp/tools/add-reference-cv.js +9 -5
- package/dist/interface/mcp/tools/add-reference-cv.js.map +1 -1
- package/dist/interface/mcp/tools/add-to-pipeline.d.ts +2 -2
- package/dist/interface/mcp/tools/add-to-pipeline.js +9 -5
- package/dist/interface/mcp/tools/add-to-pipeline.js.map +1 -1
- package/dist/interface/mcp/tools/check-duplicate-candidate.d.ts +2 -2
- package/dist/interface/mcp/tools/check-duplicate-candidate.js +8 -4
- package/dist/interface/mcp/tools/check-duplicate-candidate.js.map +1 -1
- package/dist/interface/mcp/tools/compare-candidates.d.ts +2 -2
- package/dist/interface/mcp/tools/compare-candidates.js +8 -4
- package/dist/interface/mcp/tools/compare-candidates.js.map +1 -1
- package/dist/interface/mcp/tools/create-call-batch.d.ts +2 -2
- package/dist/interface/mcp/tools/create-call-batch.js +10 -6
- package/dist/interface/mcp/tools/create-call-batch.js.map +1 -1
- package/dist/interface/mcp/tools/delete-cv.d.ts +2 -2
- package/dist/interface/mcp/tools/delete-cv.js +29 -2
- package/dist/interface/mcp/tools/delete-cv.js.map +1 -1
- package/dist/interface/mcp/tools/delete-job-posting.d.ts +2 -2
- package/dist/interface/mcp/tools/delete-job-posting.js +32 -3
- package/dist/interface/mcp/tools/delete-job-posting.js.map +1 -1
- package/dist/interface/mcp/tools/export-results.d.ts +2 -2
- package/dist/interface/mcp/tools/export-results.js +7 -3
- package/dist/interface/mcp/tools/export-results.js.map +1 -1
- package/dist/interface/mcp/tools/filter-candidates.d.ts +2 -2
- package/dist/interface/mcp/tools/filter-candidates.js +17 -9
- package/dist/interface/mcp/tools/filter-candidates.js.map +1 -1
- package/dist/interface/mcp/tools/find-similar-candidates.d.ts +3 -0
- package/dist/interface/mcp/tools/find-similar-candidates.js +39 -0
- package/dist/interface/mcp/tools/find-similar-candidates.js.map +1 -0
- package/dist/interface/mcp/tools/generate-screening-report.d.ts +2 -2
- package/dist/interface/mcp/tools/generate-screening-report.js +8 -4
- package/dist/interface/mcp/tools/generate-screening-report.js.map +1 -1
- package/dist/interface/mcp/tools/get-call-batch-status.d.ts +2 -2
- package/dist/interface/mcp/tools/get-call-batch-status.js +7 -3
- package/dist/interface/mcp/tools/get-call-batch-status.js.map +1 -1
- package/dist/interface/mcp/tools/get-candidate-history.d.ts +2 -2
- package/dist/interface/mcp/tools/get-candidate-history.js +7 -3
- package/dist/interface/mcp/tools/get-candidate-history.js.map +1 -1
- package/dist/interface/mcp/tools/get-cv-chunks.d.ts +2 -2
- package/dist/interface/mcp/tools/get-cv-chunks.js +13 -9
- package/dist/interface/mcp/tools/get-cv-chunks.js.map +1 -1
- package/dist/interface/mcp/tools/get-cv-detail.d.ts +2 -2
- package/dist/interface/mcp/tools/get-cv-detail.js +6 -2
- package/dist/interface/mcp/tools/get-cv-detail.js.map +1 -1
- package/dist/interface/mcp/tools/get-cv-versions.d.ts +2 -2
- package/dist/interface/mcp/tools/get-cv-versions.js +6 -2
- package/dist/interface/mcp/tools/get-cv-versions.js.map +1 -1
- package/dist/interface/mcp/tools/get-job-posting.d.ts +2 -2
- package/dist/interface/mcp/tools/get-job-posting.js +7 -3
- package/dist/interface/mcp/tools/get-job-posting.js.map +1 -1
- package/dist/interface/mcp/tools/get-pending-actions.d.ts +2 -2
- package/dist/interface/mcp/tools/get-pending-actions.js +6 -2
- package/dist/interface/mcp/tools/get-pending-actions.js.map +1 -1
- package/dist/interface/mcp/tools/get-pipeline-candidates.d.ts +2 -2
- package/dist/interface/mcp/tools/get-pipeline-candidates.js +7 -3
- package/dist/interface/mcp/tools/get-pipeline-candidates.js.map +1 -1
- package/dist/interface/mcp/tools/get-pipeline.d.ts +2 -2
- package/dist/interface/mcp/tools/get-pipeline.js +7 -3
- package/dist/interface/mcp/tools/get-pipeline.js.map +1 -1
- package/dist/interface/mcp/tools/get-screening-history.d.ts +2 -2
- package/dist/interface/mcp/tools/get-screening-history.js +7 -3
- package/dist/interface/mcp/tools/get-screening-history.js.map +1 -1
- package/dist/interface/mcp/tools/get-server-status.d.ts +2 -2
- package/dist/interface/mcp/tools/get-server-status.js +6 -2
- package/dist/interface/mcp/tools/get-server-status.js.map +1 -1
- package/dist/interface/mcp/tools/get-stats.d.ts +2 -2
- package/dist/interface/mcp/tools/get-stats.js +6 -2
- package/dist/interface/mcp/tools/get-stats.js.map +1 -1
- package/dist/interface/mcp/tools/list-cvs.d.ts +2 -2
- package/dist/interface/mcp/tools/list-cvs.js +32 -11
- package/dist/interface/mcp/tools/list-cvs.js.map +1 -1
- package/dist/interface/mcp/tools/list-job-postings.d.ts +2 -2
- package/dist/interface/mcp/tools/list-job-postings.js +6 -2
- package/dist/interface/mcp/tools/list-job-postings.js.map +1 -1
- package/dist/interface/mcp/tools/list-reference-cvs.d.ts +2 -2
- package/dist/interface/mcp/tools/list-reference-cvs.js +7 -3
- package/dist/interface/mcp/tools/list-reference-cvs.js.map +1 -1
- package/dist/interface/mcp/tools/manage-tags.d.ts +2 -2
- package/dist/interface/mcp/tools/manage-tags.js +8 -4
- package/dist/interface/mcp/tools/manage-tags.js.map +1 -1
- package/dist/interface/mcp/tools/match-candidates.d.ts +2 -2
- package/dist/interface/mcp/tools/match-candidates.js +26 -12
- package/dist/interface/mcp/tools/match-candidates.js.map +1 -1
- package/dist/interface/mcp/tools/reindex-all.d.ts +3 -0
- package/dist/interface/mcp/tools/reindex-all.js +31 -0
- package/dist/interface/mcp/tools/reindex-all.js.map +1 -0
- package/dist/interface/mcp/tools/remove-reference-cv.d.ts +2 -2
- package/dist/interface/mcp/tools/remove-reference-cv.js +29 -2
- package/dist/interface/mcp/tools/remove-reference-cv.js.map +1 -1
- package/dist/interface/mcp/tools/reset-database.d.ts +2 -2
- package/dist/interface/mcp/tools/reset-database.js +29 -2
- package/dist/interface/mcp/tools/reset-database.js.map +1 -1
- package/dist/interface/mcp/tools/semantic-search.d.ts +2 -2
- package/dist/interface/mcp/tools/semantic-search.js +24 -11
- package/dist/interface/mcp/tools/semantic-search.js.map +1 -1
- package/dist/interface/mcp/tools/set-pending-action.d.ts +2 -2
- package/dist/interface/mcp/tools/set-pending-action.js +16 -12
- package/dist/interface/mcp/tools/set-pending-action.js.map +1 -1
- package/dist/interface/mcp/tools/update-call-outcome.d.ts +2 -2
- package/dist/interface/mcp/tools/update-call-outcome.js +10 -6
- package/dist/interface/mcp/tools/update-call-outcome.js.map +1 -1
- package/dist/interface/mcp/tools/update-cv.d.ts +2 -2
- package/dist/interface/mcp/tools/update-cv.js +16 -6
- package/dist/interface/mcp/tools/update-cv.js.map +1 -1
- package/dist/interface/mcp/tools/update-job-posting.d.ts +2 -2
- package/dist/interface/mcp/tools/update-job-posting.js +16 -12
- package/dist/interface/mcp/tools/update-job-posting.js.map +1 -1
- package/dist/interface/mcp/tools/update-pipeline-status.d.ts +2 -2
- package/dist/interface/mcp/tools/update-pipeline-status.js +9 -5
- package/dist/interface/mcp/tools/update-pipeline-status.js.map +1 -1
- package/dist/interface/mcp/types.d.ts +2 -0
- package/dist/shared/data/skill-graph.json +115 -0
- package/dist/shared/data/skill-map.json +104 -0
- package/dist/shared/mcp/logger.d.ts +7 -0
- package/dist/shared/mcp/logger.js +20 -0
- package/dist/shared/mcp/logger.js.map +1 -0
- package/dist/shared/mcp/progress.d.ts +6 -0
- package/dist/shared/mcp/progress.js +33 -0
- package/dist/shared/mcp/progress.js.map +1 -0
- package/dist/shared/services/skill-graph.d.ts +11 -0
- package/dist/shared/services/skill-graph.js +84 -0
- package/dist/shared/services/skill-graph.js.map +1 -0
- package/dist/shared/services/skill-normalizer.d.ts +6 -0
- package/dist/shared/services/skill-normalizer.js +32 -0
- package/dist/shared/services/skill-normalizer.js.map +1 -0
- package/dist/shared/types/index.d.ts +3 -1
- package/dist/shared/utils/chunking.d.ts +9 -1
- package/dist/shared/utils/chunking.js +46 -36
- package/dist/shared/utils/chunking.js.map +1 -1
- package/dist/shared/utils/skill-migration.d.ts +6 -0
- package/dist/shared/utils/skill-migration.js +35 -0
- package/dist/shared/utils/skill-migration.js.map +1 -0
- package/package.json +12 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lancedb-chunk-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/lancedb-chunk-repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lancedb-chunk-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/lancedb-chunk-repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAK5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAc7D,MAAM,OAAO,sBAAsB;IAGb;IAFZ,YAAY,CAAiB;IAErC,YAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;QAChC,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;QACtC,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,YAAY;QACV,IAAI,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACvF,CAAC;IAEO,KAAK,CAAC,KAAc;QAC1B,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,YAAY,EAAE,KAAK,CAAC,WAAW;YAC/B,YAAY,EAAE,KAAK,CAAC,WAAW;YAC/B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxC,UAAU,EAAE,KAAK,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,GAAa;QAC5B,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,WAAW,EAAE,GAAG,CAAC,YAA2B;YAC5C,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAChD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC;YAC1C,SAAS,EAAE,GAAG,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAiB;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB,EAAE,WAAyB;QACpE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,KAAK,GAAG,mBAAmB,WAAW,GAAG,CAAC;YAC9C,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,IAAI,wBAAwB,WAAW,GAAG,CAAC;YAClD,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YAC3D,OAAQ,OAAiC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,WAAmB;QAC3C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,KAAK,CAAC,MAAM,CAAC,mBAAmB,WAAW,GAAG,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAqB,EAAE,KAAa,EAAE,MAAe;QACxE,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAEvG,MAAM,UAAU,GAAG,kBAAkB,CAAC;YACtC,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAClC,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;YAEtC,OAAQ,OAAiC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACzB,KAAK,EAAE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC3D,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,MAAM,IAAI,aAAa,CAAC,oCAAoC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAAqB,EAAE,SAAiB,EAAE,KAAa,EAAE,MAAe;QACzF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAE9D,MAAM,UAAU,GAAG,kBAAkB,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YAE1E,MAAM,OAAO,GAAG,MAAM,KAAK;iBACxB,KAAK,EAAE;iBACP,SAAS,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;iBACxC,cAAc,CAAC,SAAS,CAAC;iBACzB,MAAM,CAAC,QAAQ,CAAC;iBAChB,KAAK,CAAC,WAAW,CAAC;iBAClB,KAAK,CAAC,KAAK,CAAC;iBACZ,OAAO,EAAE,CAAC;YAEb,OAAQ,OAAiC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACzB,KAAK,EAAE,GAAG,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aACrF,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8EAA8E;YAC9E,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC;YACxE,OAAO,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO;oBACL,MAAM,EAAE,IAAI;oBACZ,cAAc,EAAE,KAAK,EAAE,cAAc;oBACrC,gBAAgB,EAAE,KAAK,EAAE,gBAAgB;iBAC1C,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"ba31dbc0-8fe2-44bc-8214-6b3d717566a0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774254122070,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"ba31dbc0-8fe2-44bc-8214-6b3d717566a0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774254122071,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"ba31dbc0-8fe2-44bc-8214-6b3d717566a0","timestamp":1774254116953}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/05a92851-5bed-4eaf-bd75-e0aff9ec5876.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"05a92851-5bed-4eaf-bd75-e0aff9ec5876","timestamp":1774253816528,"prerendered":[]}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/1d36013b-8fb8-4cea-a448-d5f224b731ee.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"1d36013b-8fb8-4cea-a448-d5f224b731ee","timestamp":1774010095019,"prerendered":[]}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/2bb695c5-c739-46a0-a3e6-4b76aa321c29.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"2bb695c5-c739-46a0-a3e6-4b76aa321c29","timestamp":1774253491674,"prerendered":[]}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/3ee0a1ee-8e79-4443-a6e7-b0b6412b0a38.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"3ee0a1ee-8e79-4443-a6e7-b0b6412b0a38","timestamp":1774254104889,"prerendered":[]}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/ba31dbc0-8fe2-44bc-8214-6b3d717566a0.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"ba31dbc0-8fe2-44bc-8214-6b3d717566a0","timestamp":1774254116953,"prerendered":[]}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/fc914bdb-64a6-4798-a08f-64eb8ea9a307.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"fc914bdb-64a6-4798-a08f-64eb8ea9a307","timestamp":1774254001214,"prerendered":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"ba31dbc0-8fe2-44bc-8214-6b3d717566a0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774254122070,false]</script></body></html>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import { McpServer, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { readFileSync } from 'node:fs';
|
|
3
3
|
import { resolve, dirname } from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
@@ -28,6 +28,8 @@ import { DocxParser } from '../../infrastructure/parsers/docx-parser.js';
|
|
|
28
28
|
import { OpenAiEmbeddingService } from '../../infrastructure/ai/openai-embedding-service.js';
|
|
29
29
|
import { OpenAiStructuredExtractor } from '../../infrastructure/ai/openai-structured-extractor.js';
|
|
30
30
|
import { CsvExportService } from '../../infrastructure/export/csv-export-service.js';
|
|
31
|
+
import OpenAI from 'openai';
|
|
32
|
+
import { z } from 'zod/v4';
|
|
31
33
|
import { DashboardEventBus } from '../dashboard/event-bus.js';
|
|
32
34
|
import { wrapAllRegisteredTools } from '../dashboard/tool-wrapper.js';
|
|
33
35
|
import { startDashboardServer } from '../dashboard/server.js';
|
|
@@ -61,6 +63,7 @@ import { registerGetPendingActionsTool } from './tools/get-pending-actions.js';
|
|
|
61
63
|
import { registerGetPipelineCandidatesTool } from './tools/get-pipeline-candidates.js';
|
|
62
64
|
import { registerCheckDuplicateCandidateTool } from './tools/check-duplicate-candidate.js';
|
|
63
65
|
import { registerCompareCandidatesTool } from './tools/compare-candidates.js';
|
|
66
|
+
import { registerFindSimilarCandidatesTool } from './tools/find-similar-candidates.js';
|
|
64
67
|
import { registerGetScreeningHistoryTool } from './tools/get-screening-history.js';
|
|
65
68
|
import { registerGenerateScreeningReportTool } from './tools/generate-screening-report.js';
|
|
66
69
|
import { registerCreateCallBatchTool } from './tools/create-call-batch.js';
|
|
@@ -69,6 +72,8 @@ import { registerUpdateCallOutcomeTool } from './tools/update-call-outcome.js';
|
|
|
69
72
|
import { registerAddReferenceCvTool } from './tools/add-reference-cv.js';
|
|
70
73
|
import { registerListReferenceCvsTool } from './tools/list-reference-cvs.js';
|
|
71
74
|
import { registerRemoveReferenceCvTool } from './tools/remove-reference-cv.js';
|
|
75
|
+
import { registerReindexAllTool } from './tools/reindex-all.js';
|
|
76
|
+
import { GetStatsUseCase } from '../../application/use-cases/get-stats.js';
|
|
72
77
|
export async function createServer() {
|
|
73
78
|
const config = loadConfig();
|
|
74
79
|
configureVectorDimension(config.embeddingModel);
|
|
@@ -86,6 +91,7 @@ export async function createServer() {
|
|
|
86
91
|
const embeddingService = new OpenAiEmbeddingService(config.openaiApiKey, config.embeddingModel);
|
|
87
92
|
const extractor = new OpenAiStructuredExtractor(config.openaiApiKey, config.extractionModel);
|
|
88
93
|
const exportService = new CsvExportService();
|
|
94
|
+
const openaiClient = new OpenAI({ apiKey: config.openaiApiKey });
|
|
89
95
|
const deps = {
|
|
90
96
|
candidateRepo,
|
|
91
97
|
chunkRepo,
|
|
@@ -100,49 +106,106 @@ export async function createServer() {
|
|
|
100
106
|
embeddingService,
|
|
101
107
|
extractor,
|
|
102
108
|
exportService,
|
|
109
|
+
openaiClient,
|
|
103
110
|
};
|
|
104
|
-
const server = new McpServer({
|
|
105
|
-
|
|
106
|
-
|
|
111
|
+
const server = new McpServer({ name: 'hirebase', version: getVersion() }, { capabilities: { logging: {}, tools: { listChanged: true } } });
|
|
112
|
+
const toolGroups = {};
|
|
113
|
+
toolGroups.cv = [
|
|
114
|
+
registerAddCvTool(server, deps),
|
|
115
|
+
registerUpdateCvTool(server, deps),
|
|
116
|
+
registerDeleteCvTool(server, deps),
|
|
117
|
+
registerListCvsTool(server, deps),
|
|
118
|
+
registerGetCvDetailTool(server, deps),
|
|
119
|
+
registerGetCvChunksTool(server, deps),
|
|
120
|
+
registerGetCvVersionsTool(server, deps),
|
|
121
|
+
registerSemanticSearchTool(server, deps),
|
|
122
|
+
registerFilterCandidatesTool(server, deps),
|
|
123
|
+
registerCheckDuplicateCandidateTool(server, deps),
|
|
124
|
+
registerCompareCandidatesTool(server, deps),
|
|
125
|
+
registerFindSimilarCandidatesTool(server, deps),
|
|
126
|
+
registerMatchCandidatesTool(server, deps),
|
|
127
|
+
registerManageTagsTool(server, deps),
|
|
128
|
+
registerExportResultsTool(server, deps),
|
|
129
|
+
];
|
|
130
|
+
toolGroups.pipeline = [
|
|
131
|
+
registerAddToPipelineTool(server, deps),
|
|
132
|
+
registerUpdatePipelineStatusTool(server, deps),
|
|
133
|
+
registerAddPipelineNoteTool(server, deps),
|
|
134
|
+
registerSetPendingActionTool(server, deps),
|
|
135
|
+
registerGetPipelineTool(server, deps),
|
|
136
|
+
registerGetCandidateHistoryTool(server, deps),
|
|
137
|
+
registerGetPendingActionsTool(server, deps),
|
|
138
|
+
registerGetPipelineCandidatesTool(server, deps),
|
|
139
|
+
registerGetScreeningHistoryTool(server, deps),
|
|
140
|
+
registerGenerateScreeningReportTool(server, deps),
|
|
141
|
+
registerCreateCallBatchTool(server, deps),
|
|
142
|
+
registerGetCallBatchStatusTool(server, deps),
|
|
143
|
+
registerUpdateCallOutcomeTool(server, deps),
|
|
144
|
+
];
|
|
145
|
+
toolGroups.jobs = [
|
|
146
|
+
registerAddJobPostingTool(server, deps),
|
|
147
|
+
registerListJobPostingsTool(server, deps),
|
|
148
|
+
registerGetJobPostingTool(server, deps),
|
|
149
|
+
registerUpdateJobPostingTool(server, deps),
|
|
150
|
+
registerDeleteJobPostingTool(server, deps),
|
|
151
|
+
registerAddReferenceCvTool(server, deps),
|
|
152
|
+
registerListReferenceCvsTool(server, deps),
|
|
153
|
+
registerRemoveReferenceCvTool(server, deps),
|
|
154
|
+
];
|
|
155
|
+
toolGroups.system = [
|
|
156
|
+
registerGetStatsTool(server, deps),
|
|
157
|
+
registerGetServerStatusTool(server, deps),
|
|
158
|
+
registerResetDatabaseTool(server, deps),
|
|
159
|
+
registerReindexAllTool(server, deps),
|
|
160
|
+
];
|
|
161
|
+
// --- set_mode tool: switch active tool groups ---
|
|
162
|
+
const MODE_GROUPS = {
|
|
163
|
+
cv: ['cv', 'system'],
|
|
164
|
+
pipeline: ['pipeline', 'system'],
|
|
165
|
+
jobs: ['jobs', 'system'],
|
|
166
|
+
all: Object.keys(toolGroups),
|
|
167
|
+
};
|
|
168
|
+
server.registerTool('set_mode', {
|
|
169
|
+
description: 'Switch active tool group: cv, pipeline, jobs, all',
|
|
170
|
+
inputSchema: {
|
|
171
|
+
mode: z.enum(['cv', 'pipeline', 'jobs', 'all']).describe('Tool group'),
|
|
172
|
+
},
|
|
173
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
174
|
+
}, async ({ mode }) => {
|
|
175
|
+
const activeGroups = MODE_GROUPS[mode] ?? Object.keys(toolGroups);
|
|
176
|
+
let enabled = 0, disabled = 0;
|
|
177
|
+
for (const [name, tools] of Object.entries(toolGroups)) {
|
|
178
|
+
const isActive = activeGroups.includes(name);
|
|
179
|
+
for (const t of tools) {
|
|
180
|
+
if (isActive) {
|
|
181
|
+
t.enable();
|
|
182
|
+
enabled++;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
t.disable();
|
|
186
|
+
disabled++;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return { content: [{ type: 'text', text: JSON.stringify({ mode, enabled, disabled }) }] };
|
|
191
|
+
});
|
|
192
|
+
// --- MCP Resources ---
|
|
193
|
+
// 1. Static: DB Stats
|
|
194
|
+
const statsUseCase = new GetStatsUseCase(candidateRepo, chunkRepo, applicationRepo, applicationEventRepo);
|
|
195
|
+
server.resource('database-stats', 'hirebase://stats', { mimeType: 'application/json' }, async (uri) => {
|
|
196
|
+
const stats = await statsUseCase.execute();
|
|
197
|
+
return { contents: [{ uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(stats) }] };
|
|
198
|
+
});
|
|
199
|
+
// 2. Template: Candidate Detail
|
|
200
|
+
server.resource('candidate-detail', new ResourceTemplate('hirebase://candidates/{candidateId}', { list: undefined }), { mimeType: 'application/json' }, async (uri, vars) => {
|
|
201
|
+
const candidate = await deps.candidateRepo.findById(vars.candidateId);
|
|
202
|
+
return { contents: [{ uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(candidate) }] };
|
|
203
|
+
});
|
|
204
|
+
// 3. Template: Job Posting Detail
|
|
205
|
+
server.resource('job-posting-detail', new ResourceTemplate('hirebase://jobs/{jobId}', { list: undefined }), { mimeType: 'application/json' }, async (uri, vars) => {
|
|
206
|
+
const job = await deps.jobPostingRepo.findById(vars.jobId);
|
|
207
|
+
return { contents: [{ uri: uri.toString(), mimeType: 'application/json', text: JSON.stringify(job) }] };
|
|
107
208
|
});
|
|
108
|
-
registerAddCvTool(server, deps);
|
|
109
|
-
registerUpdateCvTool(server, deps);
|
|
110
|
-
registerSemanticSearchTool(server, deps);
|
|
111
|
-
registerFilterCandidatesTool(server, deps);
|
|
112
|
-
registerGetCvDetailTool(server, deps);
|
|
113
|
-
registerGetCvChunksTool(server, deps);
|
|
114
|
-
registerListCvsTool(server, deps);
|
|
115
|
-
registerDeleteCvTool(server, deps);
|
|
116
|
-
registerManageTagsTool(server, deps);
|
|
117
|
-
registerGetCvVersionsTool(server, deps);
|
|
118
|
-
registerGetStatsTool(server, deps);
|
|
119
|
-
registerExportResultsTool(server, deps);
|
|
120
|
-
registerResetDatabaseTool(server, deps);
|
|
121
|
-
registerGetServerStatusTool(server, deps);
|
|
122
|
-
registerAddJobPostingTool(server, deps);
|
|
123
|
-
registerListJobPostingsTool(server, deps);
|
|
124
|
-
registerGetJobPostingTool(server, deps);
|
|
125
|
-
registerMatchCandidatesTool(server, deps);
|
|
126
|
-
registerUpdateJobPostingTool(server, deps);
|
|
127
|
-
registerDeleteJobPostingTool(server, deps);
|
|
128
|
-
registerAddToPipelineTool(server, deps);
|
|
129
|
-
registerUpdatePipelineStatusTool(server, deps);
|
|
130
|
-
registerAddPipelineNoteTool(server, deps);
|
|
131
|
-
registerSetPendingActionTool(server, deps);
|
|
132
|
-
registerGetPipelineTool(server, deps);
|
|
133
|
-
registerGetCandidateHistoryTool(server, deps);
|
|
134
|
-
registerGetPendingActionsTool(server, deps);
|
|
135
|
-
registerGetPipelineCandidatesTool(server, deps);
|
|
136
|
-
registerCheckDuplicateCandidateTool(server, deps);
|
|
137
|
-
registerCompareCandidatesTool(server, deps);
|
|
138
|
-
registerGetScreeningHistoryTool(server, deps);
|
|
139
|
-
registerGenerateScreeningReportTool(server, deps);
|
|
140
|
-
registerCreateCallBatchTool(server, deps);
|
|
141
|
-
registerGetCallBatchStatusTool(server, deps);
|
|
142
|
-
registerUpdateCallOutcomeTool(server, deps);
|
|
143
|
-
registerAddReferenceCvTool(server, deps);
|
|
144
|
-
registerListReferenceCvsTool(server, deps);
|
|
145
|
-
registerRemoveReferenceCvTool(server, deps);
|
|
146
209
|
if (config.dashboardEnabled) {
|
|
147
210
|
const eventBus = new DashboardEventBus();
|
|
148
211
|
wrapAllRegisteredTools(server, eventBus, deps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/interface/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/interface/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Dependencies } from '../types.js';
|
|
3
|
-
export declare function registerAddCvTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerAddCvTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -1,13 +1,41 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
2
|
import { AddCvUseCase } from '../../../application/use-cases/add-cv.js';
|
|
3
|
+
import { createProgressReporter } from '../../../shared/mcp/progress.js';
|
|
4
|
+
import { createToolLogger } from '../../../shared/mcp/logger.js';
|
|
3
5
|
import { emitProgress } from '../../dashboard/call-context.js';
|
|
4
6
|
export function registerAddCvTool(server, deps) {
|
|
5
7
|
const useCase = new AddCvUseCase(deps.candidateRepo, deps.chunkRepo, deps.parsers, deps.embeddingService, deps.extractor);
|
|
6
|
-
server.
|
|
8
|
+
return server.registerTool('add_cv', {
|
|
9
|
+
description: 'Parse CV file, extract data, generate embeddings, store',
|
|
10
|
+
inputSchema: {
|
|
11
|
+
file_path: z.string().describe('CV file path (PDF/DOCX)'),
|
|
12
|
+
source: z.string().optional().describe('CV source channel: email | linkedin | kariyer_net | referral | direct | free text (default: "direct")'),
|
|
13
|
+
pool: z.string().optional().describe('Candidate pool name: genel | frontend | backend | staj | free text'),
|
|
14
|
+
},
|
|
15
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
16
|
+
}, async ({ file_path, source, pool }, extra) => {
|
|
7
17
|
try {
|
|
8
|
-
const
|
|
18
|
+
const reporter = createProgressReporter(extra);
|
|
19
|
+
const log = createToolLogger(extra, 'cv-parser');
|
|
20
|
+
await log.info({ event: 'parse_start', file: file_path });
|
|
21
|
+
const stepMap = {
|
|
22
|
+
checking_duplicates: 1, parsing: 2, extracting: 3,
|
|
23
|
+
chunking: 4, embedding: 5, saving: 6,
|
|
24
|
+
};
|
|
25
|
+
const totalSteps = 6;
|
|
26
|
+
let lastReported = 0;
|
|
27
|
+
const combinedProgress = (step, message) => {
|
|
28
|
+
emitProgress(step, message); // existing dashboard events
|
|
29
|
+
const num = stepMap[step] ?? lastReported; // unknown steps keep last value
|
|
30
|
+
if (num > lastReported)
|
|
31
|
+
lastReported = num; // enforce monotonic increasing
|
|
32
|
+
reporter.update(num, totalSteps, message).catch(() => { }); // fire-and-forget
|
|
33
|
+
};
|
|
34
|
+
const candidate = await useCase.execute(file_path, { source, pool }, combinedProgress);
|
|
35
|
+
await log.info({ event: 'cv_added', candidateId: candidate.id });
|
|
36
|
+
await reporter.update(totalSteps, totalSteps, 'Done');
|
|
9
37
|
return {
|
|
10
|
-
content: [{ type: 'text', text: JSON.stringify(candidate
|
|
38
|
+
content: [{ type: 'text', text: JSON.stringify(candidate) }],
|
|
11
39
|
};
|
|
12
40
|
}
|
|
13
41
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-cv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,IAAkB;IACrE,MAAM,OAAO,GAAG,IAAI,YAAY,CAC9B,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,SAAS,CACf,CAAC;IAEF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"add-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-cv.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Dependencies } from '../types.js';
|
|
3
|
-
export declare function registerAddJobPostingTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerAddJobPostingTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -1,30 +1,38 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
2
|
import { AddJobPostingUseCase } from '../../../application/use-cases/add-job-posting.js';
|
|
3
|
+
import { SkillNormalizerService } from '../../../shared/services/skill-normalizer.js';
|
|
3
4
|
export function registerAddJobPostingTool(server, deps) {
|
|
4
5
|
const useCase = new AddJobPostingUseCase(deps.jobPostingRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
return server.registerTool('add_job_posting', {
|
|
7
|
+
description: 'Create job posting with skills for matching',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
title: z.string().describe('Job title'),
|
|
10
|
+
description: z.string().describe('Job description'),
|
|
11
|
+
raw_text: z.string().optional().describe('Raw posting text'),
|
|
12
|
+
requirements: z.string().optional().describe('Job requirements'),
|
|
13
|
+
required_skills: z.array(z.string()).describe('Required skills'),
|
|
14
|
+
preferred_skills: z.array(z.string()).optional().describe('Nice-to-have skills'),
|
|
15
|
+
location: z.string().optional().describe('Job location'),
|
|
16
|
+
salary_range: z.string().optional().describe('Salary range'),
|
|
17
|
+
},
|
|
18
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
14
19
|
}, async ({ title, description, raw_text, requirements, required_skills, preferred_skills, location, salary_range }) => {
|
|
15
20
|
try {
|
|
21
|
+
const normalizer = new SkillNormalizerService();
|
|
22
|
+
const normalizedRequired = normalizer.normalizeAll(required_skills);
|
|
23
|
+
const normalizedPreferred = preferred_skills ? normalizer.normalizeAll(preferred_skills) : undefined;
|
|
16
24
|
const jobPosting = await useCase.execute({
|
|
17
25
|
title,
|
|
18
26
|
description,
|
|
19
27
|
rawText: raw_text,
|
|
20
28
|
requirements,
|
|
21
|
-
requiredSkills:
|
|
22
|
-
preferredSkills:
|
|
29
|
+
requiredSkills: normalizedRequired,
|
|
30
|
+
preferredSkills: normalizedPreferred,
|
|
23
31
|
location,
|
|
24
32
|
salaryRange: salary_range,
|
|
25
33
|
});
|
|
26
34
|
return {
|
|
27
|
-
content: [{ type: 'text', text: JSON.stringify(jobPosting
|
|
35
|
+
content: [{ type: 'text', text: JSON.stringify(jobPosting) }],
|
|
28
36
|
};
|
|
29
37
|
}
|
|
30
38
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-job-posting.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-job-posting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"add-job-posting.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-job-posting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAEzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAEtF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE9D,OAAO,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;QAC5C,WAAW,EAAE,6CAA6C;QAC1D,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC5D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAChE,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAChF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACxD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SAC7D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1G,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE;QACnH,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,sBAAsB,EAAE,CAAC;YAChD,MAAM,kBAAkB,GAAG,UAAU,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;YACpE,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACrG,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACvC,KAAK;gBACL,WAAW;gBACX,OAAO,EAAE,QAAQ;gBACjB,YAAY;gBACZ,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,mBAAmB;gBACpC,QAAQ;gBACR,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;aACvE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Dependencies } from '../types.js';
|
|
3
|
-
export declare function registerAddPipelineNoteTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerAddPipelineNoteTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,11 +2,15 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { AddPipelineNoteUseCase } from '../../../application/use-cases/add-pipeline-note.js';
|
|
3
3
|
export function registerAddPipelineNoteTool(server, deps) {
|
|
4
4
|
const useCase = new AddPipelineNoteUseCase(deps.applicationRepo, deps.applicationEventRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
return server.registerTool('add_pipeline_note', {
|
|
6
|
+
description: 'Add note, call attempt, or interview to application',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
application_id: z.string().describe('Application ID'),
|
|
9
|
+
event_type: z.string().describe('note | call_attempt | interview'),
|
|
10
|
+
note: z.string().describe('Note content'),
|
|
11
|
+
scheduled_at: z.string().optional().describe('ISO date/time for interviews'),
|
|
12
|
+
},
|
|
13
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
10
14
|
}, async ({ application_id, event_type, note, scheduled_at }) => {
|
|
11
15
|
try {
|
|
12
16
|
const event = await useCase.execute({
|
|
@@ -16,7 +20,7 @@ export function registerAddPipelineNoteTool(server, deps) {
|
|
|
16
20
|
scheduledAt: scheduled_at,
|
|
17
21
|
});
|
|
18
22
|
return {
|
|
19
|
-
content: [{ type: 'text', text: JSON.stringify(event
|
|
23
|
+
content: [{ type: 'text', text: JSON.stringify(event) }],
|
|
20
24
|
};
|
|
21
25
|
}
|
|
22
26
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-pipeline-note.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-pipeline-note.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE5F,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"add-pipeline-note.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-pipeline-note.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE5F,OAAO,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QAC9C,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SAC7E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1G,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE;QAC5D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBAClC,aAAa,EAAE,cAAc;gBAC7B,SAAS,EAAE,UAA0F;gBACrG,IAAI;gBACJ,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;aAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Dependencies } from '../types.js';
|
|
3
|
-
export declare function registerAddReferenceCvTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerAddReferenceCvTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,10 +2,14 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { AddReferenceCvUseCase } from '../../../application/use-cases/add-reference-cv.js';
|
|
3
3
|
export function registerAddReferenceCvTool(server, deps) {
|
|
4
4
|
const useCase = new AddReferenceCvUseCase(deps.referenceCvRepo, deps.candidateRepo, deps.jobPostingRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
return server.registerTool('add_reference_cv', {
|
|
6
|
+
description: 'Mark candidate as reference/benchmark CV for a job posting',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
job_posting_id: z.string().describe('Job posting ID'),
|
|
9
|
+
candidate_id: z.string().describe('Candidate ID'),
|
|
10
|
+
note: z.string().optional().describe('Why good reference'),
|
|
11
|
+
},
|
|
12
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
9
13
|
}, async ({ job_posting_id, candidate_id, note }) => {
|
|
10
14
|
try {
|
|
11
15
|
const result = await useCase.execute({
|
|
@@ -14,7 +18,7 @@ export function registerAddReferenceCvTool(server, deps) {
|
|
|
14
18
|
note,
|
|
15
19
|
});
|
|
16
20
|
return {
|
|
17
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
21
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
18
22
|
};
|
|
19
23
|
}
|
|
20
24
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-reference-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-reference-cv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAG3F,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,IAAkB;IAC9E,MAAM,OAAO,GAAG,IAAI,qBAAqB,CACvC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"add-reference-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-reference-cv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAG3F,MAAM,UAAU,0BAA0B,CAAC,MAAiB,EAAE,IAAkB;IAC9E,MAAM,OAAO,GAAG,IAAI,qBAAqB,CACvC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;QAC7C,WAAW,EAAE,4DAA4D;QACzE,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACjD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;SAC3D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACzG,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACnC,YAAY,EAAE,cAAc;gBAC5B,WAAW,EAAE,YAAY;gBACzB,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
1
|
+
import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Dependencies } from '../types.js';
|
|
3
|
-
export declare function registerAddToPipelineTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerAddToPipelineTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,10 +2,14 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { AddToPipelineUseCase } from '../../../application/use-cases/add-to-pipeline.js';
|
|
3
3
|
export function registerAddToPipelineTool(server, deps) {
|
|
4
4
|
const useCase = new AddToPipelineUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.jobPostingRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
return server.registerTool('add_to_pipeline', {
|
|
6
|
+
description: 'Add candidate to job posting pipeline (status: new)',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
job_posting_id: z.string().describe('Job posting ID'),
|
|
9
|
+
candidate_id: z.string().describe('Candidate ID'),
|
|
10
|
+
note: z.string().optional().describe('Initial note'),
|
|
11
|
+
},
|
|
12
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
9
13
|
}, async ({ job_posting_id, candidate_id, note }) => {
|
|
10
14
|
try {
|
|
11
15
|
const application = await useCase.execute({
|
|
@@ -14,7 +18,7 @@ export function registerAddToPipelineTool(server, deps) {
|
|
|
14
18
|
note,
|
|
15
19
|
});
|
|
16
20
|
return {
|
|
17
|
-
content: [{ type: 'text', text: JSON.stringify(application
|
|
21
|
+
content: [{ type: 'text', text: JSON.stringify(application) }],
|
|
18
22
|
};
|
|
19
23
|
}
|
|
20
24
|
catch (error) {
|