@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":"add-to-pipeline.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-to-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAGzF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CACtC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"add-to-pipeline.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-to-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAGzF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CACtC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;QAC5C,WAAW,EAAE,qDAAqD;QAClE,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,cAAc,CAAC;SACrD;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,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACxC,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,WAAW,CAAC,EAAE,CAAC;aACxE,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 registerCheckDuplicateCandidateTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerCheckDuplicateCandidateTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,14 +2,18 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { CheckDuplicateCandidateUseCase } from '../../../application/use-cases/check-duplicate-candidate.js';
|
|
3
3
|
export function registerCheckDuplicateCandidateTool(server, deps) {
|
|
4
4
|
const useCase = new CheckDuplicateCandidateUseCase(deps.candidateRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
return server.registerTool('check_duplicate_candidate', {
|
|
6
|
+
description: 'Check duplicate by name or email before import',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
name: z.string().optional().describe('Name (partial match)'),
|
|
9
|
+
email: z.string().optional().describe('Email (exact match)'),
|
|
10
|
+
},
|
|
11
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
8
12
|
}, async ({ name, email }) => {
|
|
9
13
|
try {
|
|
10
14
|
const result = await useCase.execute({ name, email });
|
|
11
15
|
return {
|
|
12
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
16
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
13
17
|
};
|
|
14
18
|
}
|
|
15
19
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-duplicate-candidate.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/check-duplicate-candidate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"check-duplicate-candidate.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/check-duplicate-candidate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEvE,OAAO,MAAM,CAAC,YAAY,CAAC,2BAA2B,EAAE;QACtD,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAC7D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,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 registerCompareCandidatesTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerCompareCandidatesTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,14 +2,18 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { CompareCandidatesUseCase } from '../../../application/use-cases/compare-candidates.js';
|
|
3
3
|
export function registerCompareCandidatesTool(server, deps) {
|
|
4
4
|
const useCase = new CompareCandidatesUseCase(deps.candidateRepo, deps.jobPostingRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
return server.registerTool('compare_candidates', {
|
|
6
|
+
description: 'Compare 2-5 candidates side by side',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
candidate_ids: z.array(z.string()).describe('Candidate IDs (2-5)'),
|
|
9
|
+
job_posting_id: z.string().optional().describe('Job posting for scoring'),
|
|
10
|
+
},
|
|
11
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
8
12
|
}, async ({ candidate_ids, job_posting_id }) => {
|
|
9
13
|
try {
|
|
10
14
|
const result = await useCase.execute(candidate_ids, job_posting_id);
|
|
11
15
|
return {
|
|
12
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
16
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
13
17
|
};
|
|
14
18
|
}
|
|
15
19
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/compare-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,IAAkB;IACjF,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEtF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"compare-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/compare-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,IAAkB;IACjF,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAEtF,OAAO,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE;QAC/C,WAAW,EAAE,qCAAqC;QAClD,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SAC1E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;YACpE,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 registerCreateCallBatchTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerCreateCallBatchTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,11 +2,15 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { CreateCallBatchUseCase } from '../../../application/use-cases/create-call-batch.js';
|
|
3
3
|
export function registerCreateCallBatchTool(server, deps) {
|
|
4
4
|
const useCase = new CreateCallBatchUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.callBatchRepo, deps.callBatchItemRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
return server.registerTool('create_call_batch', {
|
|
6
|
+
description: 'Create call batch, assign candidates to a caller',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
job_posting_id: z.string().describe('Job posting ID'),
|
|
9
|
+
sent_to: z.string().describe('Caller name'),
|
|
10
|
+
candidate_ids: z.array(z.string()).describe('Candidate IDs'),
|
|
11
|
+
note: z.string().optional().describe('Batch note'),
|
|
12
|
+
},
|
|
13
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
10
14
|
}, async ({ job_posting_id, sent_to, candidate_ids, note }) => {
|
|
11
15
|
try {
|
|
12
16
|
const result = await useCase.execute({
|
|
@@ -16,7 +20,7 @@ export function registerCreateCallBatchTool(server, deps) {
|
|
|
16
20
|
note,
|
|
17
21
|
});
|
|
18
22
|
return {
|
|
19
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
23
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
20
24
|
};
|
|
21
25
|
}
|
|
22
26
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-call-batch.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/create-call-batch.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,CACxC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,CACvB,CAAC;IAEF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"create-call-batch.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/create-call-batch.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,CACxC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,CACvB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QAC9C,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3C,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC5D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SACnD;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,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACnC,YAAY,EAAE,cAAc;gBAC5B,MAAM,EAAE,OAAO;gBACf,YAAY,EAAE,aAAa;gBAC3B,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 registerDeleteCvTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerDeleteCvTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -1,8 +1,35 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
2
|
import { DeleteCvUseCase } from '../../../application/use-cases/delete-cv.js';
|
|
3
3
|
export function registerDeleteCvTool(server, deps) {
|
|
4
|
-
const useCase = new DeleteCvUseCase(deps.candidateRepo, deps.chunkRepo, deps.versionRepo);
|
|
5
|
-
server.
|
|
4
|
+
const useCase = new DeleteCvUseCase(deps.candidateRepo, deps.chunkRepo, deps.versionRepo, deps.applicationRepo, deps.applicationEventRepo);
|
|
5
|
+
return server.registerTool('delete_cv', {
|
|
6
|
+
description: 'Delete candidate and all associated data',
|
|
7
|
+
inputSchema: { candidate_id: z.string().describe('Candidate ID') },
|
|
8
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
9
|
+
}, async ({ candidate_id }) => {
|
|
10
|
+
try {
|
|
11
|
+
const confirmation = await server.server.elicitInput({
|
|
12
|
+
message: 'Bu CV\'yi kalici olarak silmek istediginize emin misiniz?',
|
|
13
|
+
requestedSchema: {
|
|
14
|
+
type: 'object',
|
|
15
|
+
properties: {
|
|
16
|
+
confirmed: {
|
|
17
|
+
type: 'boolean',
|
|
18
|
+
title: 'Onayla',
|
|
19
|
+
description: 'Evet, devam et',
|
|
20
|
+
default: false,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
required: ['confirmed'],
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
if (confirmation.action !== 'accept' || !confirmation.content?.confirmed) {
|
|
27
|
+
return { content: [{ type: 'text', text: 'Islem iptal edildi.' }] };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Client doesn't support elicitation — proceed without
|
|
32
|
+
}
|
|
6
33
|
try {
|
|
7
34
|
await useCase.execute(candidate_id);
|
|
8
35
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-cv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,IAAkB;IACxE,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"delete-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-cv.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAG9E,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,IAAkB;IACxE,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE3I,OAAO,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE;QACtC,WAAW,EAAE,0CAA0C;QACvD,WAAW,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;QAClE,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACnD,OAAO,EAAE,2DAA2D;gBACpE,eAAe,EAAE;oBACf,IAAI,EAAE,QAAiB;oBACvB,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,SAAkB;4BACxB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,gBAAgB;4BAC7B,OAAO,EAAE,KAAK;yBACf;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF,CAAC,CAAC;YACH,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAE,YAAY,CAAC,OAAe,EAAE,SAAS,EAAE,CAAC;gBAClF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;aACrG,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 registerDeleteJobPostingTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerDeleteJobPostingTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
|
+
import { DeleteJobPostingUseCase } from '../../../application/use-cases/delete-job-posting.js';
|
|
2
3
|
export function registerDeleteJobPostingTool(server, deps) {
|
|
3
|
-
server.
|
|
4
|
-
|
|
4
|
+
return server.registerTool('delete_job_posting', {
|
|
5
|
+
description: 'Delete a job posting by ID.',
|
|
6
|
+
inputSchema: {
|
|
7
|
+
id: z.string().describe('Job posting ID'),
|
|
8
|
+
},
|
|
9
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
5
10
|
}, async ({ id }) => {
|
|
11
|
+
try {
|
|
12
|
+
const confirmation = await server.server.elicitInput({
|
|
13
|
+
message: 'Bu is ilanini silmek istediginize emin misiniz?',
|
|
14
|
+
requestedSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
confirmed: {
|
|
18
|
+
type: 'boolean',
|
|
19
|
+
title: 'Onayla',
|
|
20
|
+
description: 'Evet, devam et',
|
|
21
|
+
default: false,
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ['confirmed'],
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
if (confirmation.action !== 'accept' || !confirmation.content?.confirmed) {
|
|
28
|
+
return { content: [{ type: 'text', text: 'Islem iptal edildi.' }] };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Client doesn't support elicitation — proceed without
|
|
33
|
+
}
|
|
6
34
|
try {
|
|
7
35
|
const existing = await deps.jobPostingRepo.findById(id);
|
|
8
36
|
if (!existing) {
|
|
@@ -11,7 +39,8 @@ export function registerDeleteJobPostingTool(server, deps) {
|
|
|
11
39
|
isError: true,
|
|
12
40
|
};
|
|
13
41
|
}
|
|
14
|
-
|
|
42
|
+
const useCase = new DeleteJobPostingUseCase(deps.jobPostingRepo, deps.applicationRepo, deps.applicationEventRepo);
|
|
43
|
+
await useCase.execute(id);
|
|
15
44
|
return {
|
|
16
45
|
content: [{ type: 'text', text: JSON.stringify({ deleted: true, id, title: existing.title }) }],
|
|
17
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-job-posting.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-job-posting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"delete-job-posting.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/delete-job-posting.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAG/F,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,OAAO,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE;QAC/C,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SAC1C;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACxG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACnD,OAAO,EAAE,iDAAiD;gBAC1D,eAAe,EAAE;oBACf,IAAI,EAAE,QAAiB;oBACvB,UAAU,EAAE;wBACV,SAAS,EAAE;4BACT,IAAI,EAAE,SAAkB;4BACxB,KAAK,EAAE,QAAQ;4BACf,WAAW,EAAE,gBAAgB;4BAC7B,OAAO,EAAE,KAAK;yBACf;qBACF;oBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;iBACxB;aACF,CAAC,CAAC;YACH,IAAI,YAAY,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAE,YAAY,CAAC,OAAe,EAAE,SAAS,EAAE,CAAC;gBAClF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC;YAC/E,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrG,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAClH,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;aACzG,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 registerExportResultsTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerExportResultsTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,9 +2,13 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { ExportResultsUseCase } from '../../../application/use-cases/export-results.js';
|
|
3
3
|
export function registerExportResultsTool(server, deps) {
|
|
4
4
|
const useCase = new ExportResultsUseCase(deps.candidateRepo, deps.exportService);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
return server.registerTool('export_results', {
|
|
6
|
+
description: 'Export candidates as JSON or CSV',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
candidate_ids: z.array(z.string()).describe('Candidate IDs'),
|
|
9
|
+
format: z.enum(['json', 'csv']).describe('Output format'),
|
|
10
|
+
},
|
|
11
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
8
12
|
}, async ({ candidate_ids, format }) => {
|
|
9
13
|
try {
|
|
10
14
|
const result = await useCase.execute(candidate_ids, format);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-results.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/export-results.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAIxF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"export-results.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/export-results.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAIxF,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,IAAkB;IAC7E,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAEjF,OAAO,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;QAC3C,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC1D;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,MAAsB,CAAC,CAAC;YAC5E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,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 registerFilterCandidatesTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerFilterCandidatesTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,14 +2,20 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { FilterCandidatesUseCase } from '../../../application/use-cases/filter-candidates.js';
|
|
3
3
|
export function registerFilterCandidatesTool(server, deps) {
|
|
4
4
|
const useCase = new FilterCandidatesUseCase(deps.candidateRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
return server.registerTool('filter_candidates', {
|
|
6
|
+
description: 'Filter candidates by name, skills, location, experience, tags',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
name: z.string().optional().describe('Name (partial match)'),
|
|
9
|
+
skills: z.array(z.string()).optional().describe('Required skills'),
|
|
10
|
+
location: z.string().optional().describe('Location (partial match)'),
|
|
11
|
+
min_experience_years: z.number().optional().describe('Min experience years'),
|
|
12
|
+
languages: z.array(z.string()).optional().describe('Required languages'),
|
|
13
|
+
tags: z.array(z.string()).optional().describe('Required tags'),
|
|
14
|
+
pool: z.string().optional().describe('Filter by pool name'),
|
|
15
|
+
source: z.string().optional().describe('Filter by source channel'),
|
|
16
|
+
},
|
|
17
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
18
|
+
}, async ({ name, skills, location, min_experience_years, languages, tags, pool, source }) => {
|
|
13
19
|
try {
|
|
14
20
|
const results = await useCase.execute({
|
|
15
21
|
name,
|
|
@@ -18,9 +24,11 @@ export function registerFilterCandidatesTool(server, deps) {
|
|
|
18
24
|
minExperienceYears: min_experience_years,
|
|
19
25
|
languages,
|
|
20
26
|
tags,
|
|
27
|
+
pool,
|
|
28
|
+
source,
|
|
21
29
|
});
|
|
22
30
|
return {
|
|
23
|
-
content: [{ type: 'text', text: JSON.stringify(results
|
|
31
|
+
content: [{ type: 'text', text: JSON.stringify(results) }],
|
|
24
32
|
};
|
|
25
33
|
}
|
|
26
34
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/filter-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAG9F,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEhE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"filter-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/filter-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAG9F,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAEhE,OAAO,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QAC9C,WAAW,EAAE,+DAA+D;QAC5E,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACpE,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC5E,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACxE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SACnE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;QACzF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,IAAI;gBACJ,MAAM;gBACN,QAAQ;gBACR,kBAAkB,EAAE,oBAAoB;gBACxC,SAAS;gBACT,IAAI;gBACJ,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;aACpE,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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
import { FindSimilarCandidatesUseCase } from '../../../application/use-cases/find-similar-candidates.js';
|
|
3
|
+
import { createProgressReporter } from '../../../shared/mcp/progress.js';
|
|
4
|
+
export function registerFindSimilarCandidatesTool(server, deps) {
|
|
5
|
+
const useCase = new FindSimilarCandidatesUseCase(deps.candidateRepo, deps.chunkRepo);
|
|
6
|
+
return server.registerTool('find_similar_candidates', {
|
|
7
|
+
description: 'Find candidates similar to a reference candidate using centroid vector computation',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
candidate_id: z.string().describe('Reference candidate ID'),
|
|
10
|
+
limit: z.number().optional().describe('Max results (default: 5)'),
|
|
11
|
+
section_focus: z
|
|
12
|
+
.enum(['experience', 'skills', 'all'])
|
|
13
|
+
.optional()
|
|
14
|
+
.describe('Which CV sections to use for similarity (default: all)'),
|
|
15
|
+
},
|
|
16
|
+
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
17
|
+
}, async ({ candidate_id, limit, section_focus }, extra) => {
|
|
18
|
+
try {
|
|
19
|
+
const reporter = createProgressReporter(extra);
|
|
20
|
+
await reporter.update(1, undefined, 'Computing centroid vector for reference candidate...');
|
|
21
|
+
const results = await useCase.execute({
|
|
22
|
+
candidateId: candidate_id,
|
|
23
|
+
limit,
|
|
24
|
+
sectionFocus: section_focus,
|
|
25
|
+
});
|
|
26
|
+
await reporter.update(2, undefined, `Done — ${results.length} similar candidates found`);
|
|
27
|
+
return {
|
|
28
|
+
content: [{ type: 'text', text: JSON.stringify(results) }],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
|
|
34
|
+
isError: true,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=find-similar-candidates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-similar-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/find-similar-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAGzE,MAAM,UAAU,iCAAiC,CAAC,MAAiB,EAAE,IAAkB;IACrF,MAAM,OAAO,GAAG,IAAI,4BAA4B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAErF,OAAO,MAAM,CAAC,YAAY,CAAC,yBAAyB,EAAE;QACpD,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACjE,aAAa,EAAE,CAAC;iBACb,IAAI,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;SACtE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACzD,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,EAAE;QACzD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,sDAAsD,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,WAAW,EAAE,YAAY;gBACzB,KAAK;gBACL,YAAY,EAAE,aAAa;aAC5B,CAAC,CAAC;YACH,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,OAAO,CAAC,MAAM,2BAA2B,CAAC,CAAC;YACzF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;aACpE,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,CAAC,CAAC;AACL,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 registerGenerateScreeningReportTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerGenerateScreeningReportTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,14 +2,18 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { GenerateScreeningReportUseCase } from '../../../application/use-cases/generate-screening-report.js';
|
|
3
3
|
export function registerGenerateScreeningReportTool(server, deps) {
|
|
4
4
|
const useCase = new GenerateScreeningReportUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.jobPostingRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
return server.registerTool('generate_screening_report', {
|
|
6
|
+
description: 'Screening summary: stats, shortlisted, screened out, pending',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
job_posting_id: z.string().describe('Job posting ID'),
|
|
9
|
+
since: z.string().optional().describe('ISO date filter'),
|
|
10
|
+
},
|
|
11
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
8
12
|
}, async ({ job_posting_id, since }) => {
|
|
9
13
|
try {
|
|
10
14
|
const result = await useCase.execute(job_posting_id, since);
|
|
11
15
|
return {
|
|
12
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
16
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
13
17
|
};
|
|
14
18
|
}
|
|
15
19
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-screening-report.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/generate-screening-report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAChD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"generate-screening-report.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/generate-screening-report.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAG7G,MAAM,UAAU,mCAAmC,CAAC,MAAiB,EAAE,IAAkB;IACvF,MAAM,OAAO,GAAG,IAAI,8BAA8B,CAChD,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,2BAA2B,EAAE;QACtD,WAAW,EAAE,8DAA8D;QAC3E,WAAW,EAAE;YACX,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SACzD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;YAC5D,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 registerGetCallBatchStatusTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerGetCallBatchStatusTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,13 +2,17 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { GetCallBatchStatusUseCase } from '../../../application/use-cases/get-call-batch-status.js';
|
|
3
3
|
export function registerGetCallBatchStatusTool(server, deps) {
|
|
4
4
|
const useCase = new GetCallBatchStatusUseCase(deps.callBatchRepo, deps.callBatchItemRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
5
|
+
return server.registerTool('get_call_batch_status', {
|
|
6
|
+
description: 'Call batch status: candidates, phones, outcomes',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
batch_id: z.string().describe('Call batch ID'),
|
|
9
|
+
},
|
|
10
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
7
11
|
}, async ({ batch_id }) => {
|
|
8
12
|
try {
|
|
9
13
|
const result = await useCase.execute(batch_id);
|
|
10
14
|
return {
|
|
11
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
15
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
12
16
|
};
|
|
13
17
|
}
|
|
14
18
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-call-batch-status.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-call-batch-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGpG,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,IAAkB;IAClF,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE1F,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"get-call-batch-status.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-call-batch-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,yBAAyB,EAAE,MAAM,yDAAyD,CAAC;AAGpG,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,IAAkB;IAClF,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAE1F,OAAO,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;QAClD,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC/C;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,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 registerGetCandidateHistoryTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerGetCandidateHistoryTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,13 +2,17 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { GetCandidateHistoryUseCase } from '../../../application/use-cases/get-candidate-history.js';
|
|
3
3
|
export function registerGetCandidateHistoryTool(server, deps) {
|
|
4
4
|
const useCase = new GetCandidateHistoryUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.jobPostingRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
5
|
+
return server.registerTool('get_candidate_history', {
|
|
6
|
+
description: 'Full recruitment history across all postings',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
candidate_id: z.string().describe('Candidate ID'),
|
|
9
|
+
},
|
|
10
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
7
11
|
}, async ({ candidate_id }) => {
|
|
8
12
|
try {
|
|
9
13
|
const result = await useCase.execute(candidate_id);
|
|
10
14
|
return {
|
|
11
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
15
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
12
16
|
};
|
|
13
17
|
}
|
|
14
18
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-candidate-history.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-candidate-history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAGrG,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,IAAkB;IACnF,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAC5C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"get-candidate-history.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/get-candidate-history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AAGrG,MAAM,UAAU,+BAA+B,CAAC,MAAiB,EAAE,IAAkB;IACnF,MAAM,OAAO,GAAG,IAAI,0BAA0B,CAC5C,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,OAAO,MAAM,CAAC,YAAY,CAAC,uBAAuB,EAAE;QAClD,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;SAClD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KAC1D,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACnD,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 registerGetCvChunksTool(server: McpServer, deps: Dependencies):
|
|
3
|
+
export declare function registerGetCvChunksTool(server: McpServer, deps: Dependencies): RegisteredTool;
|
|
@@ -2,13 +2,17 @@ import { z } from 'zod/v4';
|
|
|
2
2
|
import { GetCvChunksUseCase } from '../../../application/use-cases/get-cv-chunks.js';
|
|
3
3
|
export function registerGetCvChunksTool(server, deps) {
|
|
4
4
|
const useCase = new GetCvChunksUseCase(deps.chunkRepo, deps.candidateRepo);
|
|
5
|
-
server.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
.
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
return server.registerTool('get_cv_chunks', {
|
|
6
|
+
description: 'CV text chunks/sections (single or batch max 10)',
|
|
7
|
+
inputSchema: {
|
|
8
|
+
candidate_id: z.string().optional().describe('Single candidate ID'),
|
|
9
|
+
candidate_ids: z.array(z.string()).optional().describe('Batch candidate IDs (max 10)'),
|
|
10
|
+
section_type: z
|
|
11
|
+
.enum(['summary', 'experience', 'education', 'skills', 'projects', 'certifications', 'full'])
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('Section type filter'),
|
|
14
|
+
},
|
|
15
|
+
annotations: { readOnlyHint: true, openWorldHint: false },
|
|
12
16
|
}, async ({ candidate_id, candidate_ids, section_type }) => {
|
|
13
17
|
try {
|
|
14
18
|
if (candidate_id && candidate_ids) {
|
|
@@ -26,12 +30,12 @@ export function registerGetCvChunksTool(server, deps) {
|
|
|
26
30
|
if (candidate_ids) {
|
|
27
31
|
const result = await useCase.executeBatch(candidate_ids, section_type);
|
|
28
32
|
return {
|
|
29
|
-
content: [{ type: 'text', text: JSON.stringify(result
|
|
33
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
30
34
|
};
|
|
31
35
|
}
|
|
32
36
|
const chunks = await useCase.execute(candidate_id, section_type);
|
|
33
37
|
return {
|
|
34
|
-
content: [{ type: 'text', text: JSON.stringify(chunks
|
|
38
|
+
content: [{ type: 'text', text: JSON.stringify(chunks) }],
|
|
35
39
|
};
|
|
36
40
|
}
|
|
37
41
|
catch (error) {
|