@dolusoft/hirebase-mcp 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/application/use-cases/add-reference-cv.d.ts +16 -0
  2. package/dist/application/use-cases/add-reference-cv.js +36 -0
  3. package/dist/application/use-cases/add-reference-cv.js.map +1 -0
  4. package/dist/application/use-cases/list-reference-cvs.d.ts +17 -0
  5. package/dist/application/use-cases/list-reference-cvs.js +21 -0
  6. package/dist/application/use-cases/list-reference-cvs.js.map +1 -0
  7. package/dist/application/use-cases/match-candidates.d.ts +6 -1
  8. package/dist/application/use-cases/match-candidates.js +55 -3
  9. package/dist/application/use-cases/match-candidates.js.map +1 -1
  10. package/dist/application/use-cases/remove-reference-cv.d.ts +6 -0
  11. package/dist/application/use-cases/remove-reference-cv.js +10 -0
  12. package/dist/application/use-cases/remove-reference-cv.js.map +1 -0
  13. package/dist/domain/entities/index.d.ts +1 -0
  14. package/dist/domain/entities/reference-cv.d.ts +8 -0
  15. package/dist/domain/entities/reference-cv.js +2 -0
  16. package/dist/domain/entities/reference-cv.js.map +1 -0
  17. package/dist/domain/repositories/index.d.ts +1 -0
  18. package/dist/domain/repositories/reference-cv-repository.d.ts +8 -0
  19. package/dist/domain/repositories/reference-cv-repository.js +2 -0
  20. package/dist/domain/repositories/reference-cv-repository.js.map +1 -0
  21. package/dist/infrastructure/persistence/database.d.ts +2 -0
  22. package/dist/infrastructure/persistence/database.js +14 -0
  23. package/dist/infrastructure/persistence/database.js.map +1 -1
  24. package/dist/infrastructure/persistence/lancedb-reference-cv-repository.d.ts +17 -0
  25. package/dist/infrastructure/persistence/lancedb-reference-cv-repository.js +97 -0
  26. package/dist/infrastructure/persistence/lancedb-reference-cv-repository.js.map +1 -0
  27. package/dist/interface/dashboard/public/200.html +1 -1
  28. package/dist/interface/dashboard/public/404.html +1 -1
  29. package/dist/interface/dashboard/public/_nuxt/builds/latest.json +1 -1
  30. package/dist/interface/dashboard/public/_nuxt/builds/meta/269a33f3-c36d-4ceb-ae10-e708da6c151c.json +1 -0
  31. package/dist/interface/dashboard/public/_nuxt/builds/meta/71752c9b-993c-4c33-8131-3ea5f76f183f.json +1 -0
  32. package/dist/interface/dashboard/public/_nuxt/builds/meta/cf6d7f88-abc9-4998-adf7-e71ca28858d4.json +1 -0
  33. package/dist/interface/dashboard/public/_nuxt/builds/meta/e2007138-fb12-4dd0-908b-9a9d452bb2a3.json +1 -0
  34. package/dist/interface/dashboard/public/_nuxt/builds/meta/e657eee1-a443-40ce-8527-cb2d7763bdec.json +1 -0
  35. package/dist/interface/dashboard/public/_nuxt/builds/meta/fccb7849-b9fa-40e3-919d-c1085fce9db2.json +1 -0
  36. package/dist/interface/dashboard/public/index.html +1 -1
  37. package/dist/interface/mcp/server.js +9 -0
  38. package/dist/interface/mcp/server.js.map +1 -1
  39. package/dist/interface/mcp/tools/add-reference-cv.d.ts +3 -0
  40. package/dist/interface/mcp/tools/add-reference-cv.js +28 -0
  41. package/dist/interface/mcp/tools/add-reference-cv.js.map +1 -0
  42. package/dist/interface/mcp/tools/list-reference-cvs.d.ts +3 -0
  43. package/dist/interface/mcp/tools/list-reference-cvs.js +22 -0
  44. package/dist/interface/mcp/tools/list-reference-cvs.js.map +1 -0
  45. package/dist/interface/mcp/tools/match-candidates.js +4 -2
  46. package/dist/interface/mcp/tools/match-candidates.js.map +1 -1
  47. package/dist/interface/mcp/tools/remove-reference-cv.d.ts +3 -0
  48. package/dist/interface/mcp/tools/remove-reference-cv.js +22 -0
  49. package/dist/interface/mcp/tools/remove-reference-cv.js.map +1 -0
  50. package/dist/interface/mcp/types.d.ts +2 -0
  51. package/package.json +1 -1
@@ -0,0 +1,16 @@
1
+ import type { IReferenceCvRepository } from '../../domain/repositories/reference-cv-repository.js';
2
+ import type { ICandidateRepository } from '../../domain/repositories/candidate-repository.js';
3
+ import type { IJobPostingRepository } from '../../domain/repositories/job-posting-repository.js';
4
+ import type { ReferenceCv } from '../../domain/entities/reference-cv.js';
5
+ export interface AddReferenceCvInput {
6
+ jobPostingId: string;
7
+ candidateId: string;
8
+ note?: string;
9
+ }
10
+ export declare class AddReferenceCvUseCase {
11
+ private referenceCvRepo;
12
+ private candidateRepo;
13
+ private jobPostingRepo;
14
+ constructor(referenceCvRepo: IReferenceCvRepository, candidateRepo: ICandidateRepository, jobPostingRepo: IJobPostingRepository);
15
+ execute(input: AddReferenceCvInput): Promise<ReferenceCv>;
16
+ }
@@ -0,0 +1,36 @@
1
+ import { nanoid } from 'nanoid';
2
+ export class AddReferenceCvUseCase {
3
+ referenceCvRepo;
4
+ candidateRepo;
5
+ jobPostingRepo;
6
+ constructor(referenceCvRepo, candidateRepo, jobPostingRepo) {
7
+ this.referenceCvRepo = referenceCvRepo;
8
+ this.candidateRepo = candidateRepo;
9
+ this.jobPostingRepo = jobPostingRepo;
10
+ }
11
+ async execute(input) {
12
+ const jobPosting = await this.jobPostingRepo.findById(input.jobPostingId);
13
+ if (!jobPosting) {
14
+ throw new Error(`Job posting not found: ${input.jobPostingId}`);
15
+ }
16
+ const candidate = await this.candidateRepo.findById(input.candidateId);
17
+ if (!candidate) {
18
+ throw new Error(`Candidate not found: ${input.candidateId}`);
19
+ }
20
+ const existing = await this.referenceCvRepo.findByJobAndCandidate(input.jobPostingId, input.candidateId);
21
+ if (existing) {
22
+ throw new Error(`Candidate "${candidate.name}" is already a reference CV for "${jobPosting.title}"`);
23
+ }
24
+ const ref = {
25
+ id: nanoid(),
26
+ jobPostingId: input.jobPostingId,
27
+ candidateId: input.candidateId,
28
+ candidateName: candidate.name,
29
+ note: input.note ?? '',
30
+ createdAt: new Date().toISOString(),
31
+ };
32
+ await this.referenceCvRepo.save(ref);
33
+ return ref;
34
+ }
35
+ }
36
+ //# sourceMappingURL=add-reference-cv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-reference-cv.js","sourceRoot":"","sources":["../../../src/application/use-cases/add-reference-cv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAYhC,MAAM,OAAO,qBAAqB;IAEtB;IACA;IACA;IAHV,YACU,eAAuC,EACvC,aAAmC,EACnC,cAAqC;QAFrC,oBAAe,GAAf,eAAe,CAAwB;QACvC,kBAAa,GAAb,aAAa,CAAsB;QACnC,mBAAc,GAAd,cAAc,CAAuB;IAC5C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,KAA0B;QACtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QACzG,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,oCAAoC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;QACvG,CAAC;QAED,MAAM,GAAG,GAAgB;YACvB,EAAE,EAAE,MAAM,EAAE;YACZ,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,aAAa,EAAE,SAAS,CAAC,IAAI;YAC7B,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YACtB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { IReferenceCvRepository } from '../../domain/repositories/reference-cv-repository.js';
2
+ import type { IJobPostingRepository } from '../../domain/repositories/job-posting-repository.js';
3
+ import type { ReferenceCv } from '../../domain/entities/reference-cv.js';
4
+ export interface ListReferenceCvsInput {
5
+ jobPostingId: string;
6
+ }
7
+ export interface ListReferenceCvsResult {
8
+ jobPostingTitle: string;
9
+ references: ReferenceCv[];
10
+ total: number;
11
+ }
12
+ export declare class ListReferenceCvsUseCase {
13
+ private referenceCvRepo;
14
+ private jobPostingRepo;
15
+ constructor(referenceCvRepo: IReferenceCvRepository, jobPostingRepo: IJobPostingRepository);
16
+ execute(input: ListReferenceCvsInput): Promise<ListReferenceCvsResult>;
17
+ }
@@ -0,0 +1,21 @@
1
+ export class ListReferenceCvsUseCase {
2
+ referenceCvRepo;
3
+ jobPostingRepo;
4
+ constructor(referenceCvRepo, jobPostingRepo) {
5
+ this.referenceCvRepo = referenceCvRepo;
6
+ this.jobPostingRepo = jobPostingRepo;
7
+ }
8
+ async execute(input) {
9
+ const jobPosting = await this.jobPostingRepo.findById(input.jobPostingId);
10
+ if (!jobPosting) {
11
+ throw new Error(`Job posting not found: ${input.jobPostingId}`);
12
+ }
13
+ const references = await this.referenceCvRepo.findByJobPostingId(input.jobPostingId);
14
+ return {
15
+ jobPostingTitle: jobPosting.title,
16
+ references,
17
+ total: references.length,
18
+ };
19
+ }
20
+ }
21
+ //# sourceMappingURL=list-reference-cvs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-reference-cvs.js","sourceRoot":"","sources":["../../../src/application/use-cases/list-reference-cvs.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,uBAAuB;IAExB;IACA;IAFV,YACU,eAAuC,EACvC,cAAqC;QADrC,oBAAe,GAAf,eAAe,CAAwB;QACvC,mBAAc,GAAd,cAAc,CAAuB;IAC5C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,KAA4B;QACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAErF,OAAO;YACL,eAAe,EAAE,UAAU,CAAC,KAAK;YACjC,UAAU;YACV,KAAK,EAAE,UAAU,CAAC,MAAM;SACzB,CAAC;IACJ,CAAC;CACF"}
@@ -2,6 +2,7 @@ import type { IJobPostingRepository } from '../../domain/repositories/job-postin
2
2
  import type { ICandidateRepository } from '../../domain/repositories/candidate-repository.js';
3
3
  import type { IChunkRepository } from '../../domain/repositories/chunk-repository.js';
4
4
  import type { IApplicationRepository } from '../../domain/repositories/application-repository.js';
5
+ import type { IReferenceCvRepository } from '../../domain/repositories/reference-cv-repository.js';
5
6
  import type { IEmbeddingService } from '../ports/embedding-service.js';
6
7
  import type { ApplicationStatus } from '../../domain/entities/application.js';
7
8
  export interface MatchCandidatesInput {
@@ -12,6 +13,7 @@ export interface MatchCandidatesInput {
12
13
  location?: string;
13
14
  requiredSkills?: string[];
14
15
  includeLoyaltyDetail?: boolean;
16
+ useReferences?: boolean;
15
17
  }
16
18
  export interface MatchResult {
17
19
  candidateId: string;
@@ -22,6 +24,7 @@ export interface MatchResult {
22
24
  loyaltyFactor: number;
23
25
  matchedSkills: string[];
24
26
  missingSkills: string[];
27
+ referenceBoost?: number;
25
28
  pipelineStatus?: ApplicationStatus;
26
29
  location?: string;
27
30
  avgTenureMonths?: number;
@@ -33,7 +36,9 @@ export declare class MatchCandidatesUseCase {
33
36
  private chunkRepo;
34
37
  private embeddingService;
35
38
  private applicationRepo?;
36
- constructor(jobPostingRepo: IJobPostingRepository, candidateRepo: ICandidateRepository, chunkRepo: IChunkRepository, embeddingService: IEmbeddingService, applicationRepo?: IApplicationRepository | undefined);
39
+ private referenceCvRepo?;
40
+ constructor(jobPostingRepo: IJobPostingRepository, candidateRepo: ICandidateRepository, chunkRepo: IChunkRepository, embeddingService: IEmbeddingService, applicationRepo?: IApplicationRepository | undefined, referenceCvRepo?: IReferenceCvRepository | undefined);
37
41
  execute(input: MatchCandidatesInput): Promise<MatchResult[]>;
42
+ private cosineSimilarity;
38
43
  private computeSkillOverlap;
39
44
  }
@@ -9,15 +9,17 @@ export class MatchCandidatesUseCase {
9
9
  chunkRepo;
10
10
  embeddingService;
11
11
  applicationRepo;
12
- constructor(jobPostingRepo, candidateRepo, chunkRepo, embeddingService, applicationRepo) {
12
+ referenceCvRepo;
13
+ constructor(jobPostingRepo, candidateRepo, chunkRepo, embeddingService, applicationRepo, referenceCvRepo) {
13
14
  this.jobPostingRepo = jobPostingRepo;
14
15
  this.candidateRepo = candidateRepo;
15
16
  this.chunkRepo = chunkRepo;
16
17
  this.embeddingService = embeddingService;
17
18
  this.applicationRepo = applicationRepo;
19
+ this.referenceCvRepo = referenceCvRepo;
18
20
  }
19
21
  async execute(input) {
20
- const { jobPostingId, limit = 10, excludePipeline = false, excludeScreened = false, location, requiredSkills, includeLoyaltyDetail = false, } = input;
22
+ const { jobPostingId, limit = 10, excludePipeline = false, excludeScreened = false, location, requiredSkills, includeLoyaltyDetail = false, useReferences = false, } = input;
21
23
  const jobPosting = await this.jobPostingRepo.findById(jobPostingId);
22
24
  if (!jobPosting) {
23
25
  throw new Error(`Job posting not found: ${jobPostingId}`);
@@ -25,6 +27,23 @@ export class MatchCandidatesUseCase {
25
27
  // Build search text from job posting (prefer rawText for richer semantic matching)
26
28
  const searchText = [jobPosting.rawText, jobPosting.description, jobPosting.requirements].filter(Boolean).join('\n');
27
29
  const [queryVector] = await this.embeddingService.embedBatch([searchText]);
30
+ // Reference CV vector boost: compute average vector from reference CVs' chunks
31
+ let referenceVectors = [];
32
+ const referenceCandidateIds = new Set();
33
+ if (useReferences && this.referenceCvRepo) {
34
+ const refs = await this.referenceCvRepo.findByJobPostingId(jobPostingId);
35
+ for (const ref of refs) {
36
+ referenceCandidateIds.add(ref.candidateId);
37
+ }
38
+ if (referenceCandidateIds.size > 0) {
39
+ const refChunkResults = await this.chunkRepo.semanticSearch(queryVector, referenceCandidateIds.size * 10);
40
+ for (const result of refChunkResults) {
41
+ if (referenceCandidateIds.has(result.chunk.candidateId)) {
42
+ referenceVectors.push(result.chunk.vector);
43
+ }
44
+ }
45
+ }
46
+ }
28
47
  // Search chunks (fetch more than needed to aggregate by candidate)
29
48
  const chunkLimit = limit * 8;
30
49
  const searchResults = await this.chunkRepo.semanticSearch(queryVector, chunkLimit);
@@ -73,7 +92,25 @@ export class MatchCandidatesUseCase {
73
92
  // Compute scores
74
93
  const { skillOverlap, matchedSkills, missingSkills } = this.computeSkillOverlap(candidate, requiredSkillsLower, jobPosting.requiredSkills);
75
94
  const loyaltyFactor = LOYALTY_FACTORS[candidate.loyaltyScore ?? ''] ?? 0.7;
76
- const compositeScore = 0.5 * vectorScore + 0.3 * skillOverlap + 0.2 * loyaltyFactor;
95
+ // Reference boost: compute cosine similarity to reference CV vectors
96
+ let referenceBoost = 0;
97
+ if (useReferences && referenceVectors.length > 0) {
98
+ // Get this candidate's best chunk from search results
99
+ const candidateChunks = searchResults.filter((r) => r.chunk.candidateId === candidateId);
100
+ if (candidateChunks.length > 0) {
101
+ const bestChunkVector = candidateChunks[0].chunk.vector;
102
+ let totalSim = 0;
103
+ for (const refVec of referenceVectors) {
104
+ totalSim += this.cosineSimilarity(bestChunkVector, refVec);
105
+ }
106
+ referenceBoost = totalSim / referenceVectors.length;
107
+ }
108
+ }
109
+ // Scoring: with references 40% vector + 25% skill + 15% loyalty + 20% reference
110
+ // Without references: 50% vector + 30% skill + 20% loyalty (original)
111
+ const compositeScore = useReferences && referenceVectors.length > 0
112
+ ? 0.4 * vectorScore + 0.25 * skillOverlap + 0.15 * loyaltyFactor + 0.2 * referenceBoost
113
+ : 0.5 * vectorScore + 0.3 * skillOverlap + 0.2 * loyaltyFactor;
77
114
  results.push({
78
115
  candidateId,
79
116
  candidateName: candidate.name,
@@ -83,6 +120,7 @@ export class MatchCandidatesUseCase {
83
120
  loyaltyFactor,
84
121
  matchedSkills,
85
122
  missingSkills,
123
+ ...(useReferences && referenceVectors.length > 0 ? { referenceBoost: Math.round(referenceBoost * 1000) / 1000 } : {}),
86
124
  pipelineStatus,
87
125
  location: candidate.contact.location,
88
126
  ...(includeLoyaltyDetail
@@ -94,6 +132,20 @@ export class MatchCandidatesUseCase {
94
132
  results.sort((a, b) => b.compositeScore - a.compositeScore);
95
133
  return results.slice(0, limit);
96
134
  }
135
+ cosineSimilarity(a, b) {
136
+ if (a.length !== b.length || a.length === 0)
137
+ return 0;
138
+ let dot = 0;
139
+ let normA = 0;
140
+ let normB = 0;
141
+ for (let i = 0; i < a.length; i++) {
142
+ dot += a[i] * b[i];
143
+ normA += a[i] * a[i];
144
+ normB += b[i] * b[i];
145
+ }
146
+ const denom = Math.sqrt(normA) * Math.sqrt(normB);
147
+ return denom === 0 ? 0 : dot / denom;
148
+ }
97
149
  computeSkillOverlap(candidate, requiredSkillsLower, requiredSkillsOriginal) {
98
150
  if (requiredSkillsLower.length === 0) {
99
151
  return { skillOverlap: 1, matchedSkills: [], missingSkills: [] };
@@ -1 +1 @@
1
- {"version":3,"file":"match-candidates.js","sourceRoot":"","sources":["../../../src/application/use-cases/match-candidates.ts"],"names":[],"mappings":"AAiCA,MAAM,eAAe,GAA2B;IAC9C,MAAM,EAAE,GAAG;IACX,QAAQ,EAAE,GAAG;IACb,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,MAAM,OAAO,sBAAsB;IAEvB;IACA;IACA;IACA;IACA;IALV,YACU,cAAqC,EACrC,aAAmC,EACnC,SAA2B,EAC3B,gBAAmC,EACnC,eAAwC;QAJxC,mBAAc,GAAd,cAAc,CAAuB;QACrC,kBAAa,GAAb,aAAa,CAAsB;QACnC,cAAS,GAAT,SAAS,CAAkB;QAC3B,qBAAgB,GAAhB,gBAAgB,CAAmB;QACnC,oBAAe,GAAf,eAAe,CAAyB;IAC/C,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,KAA2B;QACvC,MAAM,EACJ,YAAY,EACZ,KAAK,GAAG,EAAE,EACV,eAAe,GAAG,KAAK,EACvB,eAAe,GAAG,KAAK,EACvB,QAAQ,EACR,cAAc,EACd,oBAAoB,GAAG,KAAK,GAC7B,GAAG,KAAK,CAAC;QAEV,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,mFAAmF;QACnF,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpH,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAE3E,mEAAmE;QACnE,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC;QAC7B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAEnF,iEAAiE;QACjE,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;YACrC,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACtD,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,uDAAuD;QACvD,MAAM,mBAAmB,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAClF,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,eAAe,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,kBAAkB;YAClB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;gBAC1E,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAAE,SAAS;YACpE,CAAC;YAED,6DAA6D;YAC7D,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC1E,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC,MAAM;oBAAE,SAAS;YACxB,CAAC;YAED,iBAAiB;YACjB,IAAI,cAA6C,CAAC;YAClD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;gBAC7F,IAAI,QAAQ,EAAE,CAAC;oBACb,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,IAAI,eAAe,IAAI,cAAc;gBAAE,SAAS;YAChD,IAAI,eAAe,IAAI,CAAC,cAAc,KAAK,aAAa,IAAI,cAAc,KAAK,cAAc,CAAC;gBAAE,SAAS;YAEzG,iBAAiB;YACjB,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAC7E,SAAS,EACT,mBAAmB,EACnB,UAAU,CAAC,cAAc,CAC1B,CAAC;YAEF,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,YAAY,IAAI,EAAE,CAAC,IAAI,GAAG,CAAC;YAC3E,MAAM,cAAc,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,GAAG,aAAa,CAAC;YAEpF,OAAO,CAAC,IAAI,CAAC;gBACX,WAAW;gBACX,aAAa,EAAE,SAAS,CAAC,IAAI;gBAC7B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,IAAI;gBACxD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI;gBAClD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI;gBACpD,aAAa;gBACb,aAAa;gBACb,aAAa;gBACb,cAAc;gBACd,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ;gBACpC,GAAG,CAAC,oBAAoB;oBACtB,CAAC,CAAC,EAAE,eAAe,EAAE,SAAS,CAAC,eAAe,EAAE,eAAe,EAAE,SAAS,CAAC,eAAe,EAAE;oBAC5F,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;QACL,CAAC;QAED,mDAAmD;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAEO,mBAAmB,CACzB,SAAoB,EACpB,mBAA6B,EAC7B,sBAAgC;QAEhC,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;QACnE,CAAC;QAED,MAAM,oBAAoB,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1E,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,oBAAoB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1D,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC;QACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;IACxD,CAAC;CACF"}
1
+ {"version":3,"file":"match-candidates.js","sourceRoot":"","sources":["../../../src/application/use-cases/match-candidates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { IReferenceCvRepository } from '../../domain/repositories/reference-cv-repository.js';
2
+ export declare class RemoveReferenceCvUseCase {
3
+ private referenceCvRepo;
4
+ constructor(referenceCvRepo: IReferenceCvRepository);
5
+ execute(id: string): Promise<void>;
6
+ }
@@ -0,0 +1,10 @@
1
+ export class RemoveReferenceCvUseCase {
2
+ referenceCvRepo;
3
+ constructor(referenceCvRepo) {
4
+ this.referenceCvRepo = referenceCvRepo;
5
+ }
6
+ async execute(id) {
7
+ await this.referenceCvRepo.delete(id);
8
+ }
9
+ }
10
+ //# sourceMappingURL=remove-reference-cv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-reference-cv.js","sourceRoot":"","sources":["../../../src/application/use-cases/remove-reference-cv.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,wBAAwB;IACf;IAApB,YAAoB,eAAuC;QAAvC,oBAAe,GAAf,eAAe,CAAwB;IAAG,CAAC;IAE/D,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;CACF"}
@@ -5,3 +5,4 @@ export type { JobPosting } from './job-posting.js';
5
5
  export type { Application, ApplicationStatus } from './application.js';
6
6
  export type { ApplicationEvent, ApplicationEventType } from './application-event.js';
7
7
  export type { CallBatch, CallBatchItem, CallBatchItemOutcome } from './call-batch.js';
8
+ export type { ReferenceCv } from './reference-cv.js';
@@ -0,0 +1,8 @@
1
+ export interface ReferenceCv {
2
+ readonly id: string;
3
+ readonly jobPostingId: string;
4
+ readonly candidateId: string;
5
+ readonly candidateName: string;
6
+ readonly note: string;
7
+ readonly createdAt: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reference-cv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-cv.js","sourceRoot":"","sources":["../../../src/domain/entities/reference-cv.ts"],"names":[],"mappings":""}
@@ -5,3 +5,4 @@ export type { IJobPostingRepository } from './job-posting-repository.js';
5
5
  export type { IApplicationRepository } from './application-repository.js';
6
6
  export type { IApplicationEventRepository } from './application-event-repository.js';
7
7
  export type { ICallBatchRepository, ICallBatchItemRepository } from './call-batch-repository.js';
8
+ export type { IReferenceCvRepository } from './reference-cv-repository.js';
@@ -0,0 +1,8 @@
1
+ import type { ReferenceCv } from '../entities/reference-cv.js';
2
+ export interface IReferenceCvRepository {
3
+ save(ref: ReferenceCv): Promise<void>;
4
+ findByJobPostingId(jobPostingId: string): Promise<ReferenceCv[]>;
5
+ findByJobAndCandidate(jobPostingId: string, candidateId: string): Promise<ReferenceCv | null>;
6
+ delete(id: string): Promise<void>;
7
+ count(): Promise<number>;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=reference-cv-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-cv-repository.js","sourceRoot":"","sources":["../../../src/domain/repositories/reference-cv-repository.ts"],"names":[],"mappings":""}
@@ -19,6 +19,8 @@ export declare const TABLE_NAMES: {
19
19
  readonly applicationEvents: "application_events";
20
20
  readonly callBatches: "call_batches";
21
21
  readonly callBatchItems: "call_batch_items";
22
+ readonly referenceCvs: "reference_cvs";
22
23
  };
24
+ export declare function getReferenceCvSeedRow(): Record<string, unknown>[];
23
25
  export declare function getVectorDimension(): number;
24
26
  export declare function resetAllTables(db: Connection): Promise<void>;
@@ -165,7 +165,20 @@ export const TABLE_NAMES = {
165
165
  applicationEvents: 'application_events',
166
166
  callBatches: 'call_batches',
167
167
  callBatchItems: 'call_batch_items',
168
+ referenceCvs: 'reference_cvs',
168
169
  };
170
+ export function getReferenceCvSeedRow() {
171
+ return [
172
+ {
173
+ id: '__seed__',
174
+ job_posting_id: '',
175
+ candidate_id: '',
176
+ candidate_name: '',
177
+ note: '',
178
+ created_at: '',
179
+ },
180
+ ];
181
+ }
169
182
  export function getVectorDimension() {
170
183
  return vectorDimension;
171
184
  }
@@ -184,5 +197,6 @@ export async function resetAllTables(db) {
184
197
  await db.createTable(TABLE_NAMES.applicationEvents, getApplicationEventSeedRow());
185
198
  await db.createTable(TABLE_NAMES.callBatches, getCallBatchSeedRow());
186
199
  await db.createTable(TABLE_NAMES.callBatchItems, getCallBatchItemSeedRow());
200
+ await db.createTable(TABLE_NAMES.referenceCvs, getReferenceCvSeedRow());
187
201
  }
188
202
  //# sourceMappingURL=database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Connection } from '@lancedb/lancedb';
2
+ import type { IReferenceCvRepository } from '../../domain/repositories/reference-cv-repository.js';
3
+ import type { ReferenceCv } from '../../domain/entities/reference-cv.js';
4
+ export declare class LanceDbReferenceCvRepository implements IReferenceCvRepository {
5
+ private db;
6
+ private tablePromise;
7
+ constructor(db: Connection);
8
+ private getTable;
9
+ refreshTable(): void;
10
+ private toRow;
11
+ private toEntity;
12
+ save(ref: ReferenceCv): Promise<void>;
13
+ findByJobPostingId(jobPostingId: string): Promise<ReferenceCv[]>;
14
+ findByJobAndCandidate(jobPostingId: string, candidateId: string): Promise<ReferenceCv | null>;
15
+ delete(id: string): Promise<void>;
16
+ count(): Promise<number>;
17
+ }
@@ -0,0 +1,97 @@
1
+ import { getOrCreateTable, getReferenceCvSeedRow, TABLE_NAMES } from './database.js';
2
+ import { DatabaseError } from '../../shared/errors/index.js';
3
+ import { escapeFilterValue } from '../../shared/utils/text.js';
4
+ export class LanceDbReferenceCvRepository {
5
+ db;
6
+ tablePromise;
7
+ constructor(db) {
8
+ this.db = db;
9
+ this.tablePromise = getOrCreateTable(db, TABLE_NAMES.referenceCvs, getReferenceCvSeedRow());
10
+ }
11
+ async getTable() {
12
+ const table = await this.tablePromise;
13
+ await table.checkoutLatest();
14
+ return table;
15
+ }
16
+ refreshTable() {
17
+ this.tablePromise = getOrCreateTable(this.db, TABLE_NAMES.referenceCvs, getReferenceCvSeedRow());
18
+ }
19
+ toRow(ref) {
20
+ return {
21
+ id: ref.id,
22
+ job_posting_id: ref.jobPostingId,
23
+ candidate_id: ref.candidateId,
24
+ candidate_name: ref.candidateName,
25
+ note: ref.note,
26
+ created_at: ref.createdAt,
27
+ };
28
+ }
29
+ toEntity(row) {
30
+ return {
31
+ id: row.id,
32
+ jobPostingId: row.job_posting_id,
33
+ candidateId: row.candidate_id,
34
+ candidateName: row.candidate_name,
35
+ note: row.note,
36
+ createdAt: row.created_at,
37
+ };
38
+ }
39
+ async save(ref) {
40
+ try {
41
+ const table = await this.getTable();
42
+ await table.add([this.toRow(ref)]);
43
+ }
44
+ catch (error) {
45
+ throw new DatabaseError('Failed to save reference CV', error);
46
+ }
47
+ }
48
+ async findByJobPostingId(jobPostingId) {
49
+ try {
50
+ const table = await this.getTable();
51
+ const results = await table
52
+ .query()
53
+ .where(`job_posting_id = '${escapeFilterValue(jobPostingId)}' AND id != '__seed__'`)
54
+ .toArray();
55
+ return results
56
+ .map((r) => this.toEntity(r))
57
+ .sort((a, b) => b.createdAt.localeCompare(a.createdAt));
58
+ }
59
+ catch (error) {
60
+ throw new DatabaseError('Failed to find reference CVs by job posting', error);
61
+ }
62
+ }
63
+ async findByJobAndCandidate(jobPostingId, candidateId) {
64
+ try {
65
+ const table = await this.getTable();
66
+ const results = await table
67
+ .query()
68
+ .where(`job_posting_id = '${escapeFilterValue(jobPostingId)}' AND candidate_id = '${escapeFilterValue(candidateId)}'`)
69
+ .toArray();
70
+ const rows = results.filter((r) => r.id !== '__seed__');
71
+ return rows.length > 0 ? this.toEntity(rows[0]) : null;
72
+ }
73
+ catch (error) {
74
+ throw new DatabaseError('Failed to find reference CV', error);
75
+ }
76
+ }
77
+ async delete(id) {
78
+ try {
79
+ const table = await this.getTable();
80
+ await table.delete(`id = '${escapeFilterValue(id)}'`);
81
+ }
82
+ catch (error) {
83
+ throw new DatabaseError('Failed to delete reference CV', error);
84
+ }
85
+ }
86
+ async count() {
87
+ try {
88
+ const table = await this.getTable();
89
+ const results = await table.query().where("id != '__seed__'").toArray();
90
+ return results.length;
91
+ }
92
+ catch (error) {
93
+ throw new DatabaseError('Failed to count reference CVs', error);
94
+ }
95
+ }
96
+ }
97
+ //# sourceMappingURL=lancedb-reference-cv-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lancedb-reference-cv-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/lancedb-reference-cv-repository.ts"],"names":[],"mappings":"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"}
@@ -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:"b35b302f-e133-4121-8657-1ff4b7a84dbe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773740359679,false]</script></body></html>
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:"cf6d7f88-abc9-4998-adf7-e71ca28858d4",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773748277465,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:"b35b302f-e133-4121-8657-1ff4b7a84dbe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773740359679,false]</script></body></html>
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:"cf6d7f88-abc9-4998-adf7-e71ca28858d4",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773748277465,false]</script></body></html>
@@ -1 +1 @@
1
- {"id":"b35b302f-e133-4121-8657-1ff4b7a84dbe","timestamp":1773740354314}
1
+ {"id":"cf6d7f88-abc9-4998-adf7-e71ca28858d4","timestamp":1773748272184}
@@ -0,0 +1 @@
1
+ {"id":"269a33f3-c36d-4ceb-ae10-e708da6c151c","timestamp":1773746236494,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"71752c9b-993c-4c33-8131-3ea5f76f183f","timestamp":1773745360226,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"cf6d7f88-abc9-4998-adf7-e71ca28858d4","timestamp":1773748272184,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"e2007138-fb12-4dd0-908b-9a9d452bb2a3","timestamp":1773746257881,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"e657eee1-a443-40ce-8527-cb2d7763bdec","timestamp":1773748195698,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"fccb7849-b9fa-40e3-919d-c1085fce9db2","timestamp":1773746224281,"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:"b35b302f-e133-4121-8657-1ff4b7a84dbe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773740359679,false]</script></body></html>
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:"cf6d7f88-abc9-4998-adf7-e71ca28858d4",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773748277465,false]</script></body></html>
@@ -8,6 +8,7 @@ import { LanceDbJobPostingRepository } from '../../infrastructure/persistence/la
8
8
  import { LanceDbApplicationRepository } from '../../infrastructure/persistence/lancedb-application-repository.js';
9
9
  import { LanceDbApplicationEventRepository } from '../../infrastructure/persistence/lancedb-application-event-repository.js';
10
10
  import { LanceDbCallBatchRepository, LanceDbCallBatchItemRepository } from '../../infrastructure/persistence/lancedb-call-batch-repository.js';
11
+ import { LanceDbReferenceCvRepository } from '../../infrastructure/persistence/lancedb-reference-cv-repository.js';
11
12
  import { PdfParser } from '../../infrastructure/parsers/pdf-parser.js';
12
13
  import { DocxParser } from '../../infrastructure/parsers/docx-parser.js';
13
14
  import { OpenAiEmbeddingService } from '../../infrastructure/ai/openai-embedding-service.js';
@@ -51,6 +52,9 @@ import { registerGenerateScreeningReportTool } from './tools/generate-screening-
51
52
  import { registerCreateCallBatchTool } from './tools/create-call-batch.js';
52
53
  import { registerGetCallBatchStatusTool } from './tools/get-call-batch-status.js';
53
54
  import { registerUpdateCallOutcomeTool } from './tools/update-call-outcome.js';
55
+ import { registerAddReferenceCvTool } from './tools/add-reference-cv.js';
56
+ import { registerListReferenceCvsTool } from './tools/list-reference-cvs.js';
57
+ import { registerRemoveReferenceCvTool } from './tools/remove-reference-cv.js';
54
58
  export async function createServer() {
55
59
  const config = loadConfig();
56
60
  configureVectorDimension(config.embeddingModel);
@@ -63,6 +67,7 @@ export async function createServer() {
63
67
  const applicationEventRepo = new LanceDbApplicationEventRepository(db);
64
68
  const callBatchRepo = new LanceDbCallBatchRepository(db);
65
69
  const callBatchItemRepo = new LanceDbCallBatchItemRepository(db);
70
+ const referenceCvRepo = new LanceDbReferenceCvRepository(db);
66
71
  const parsers = [new PdfParser(), new DocxParser()];
67
72
  const embeddingService = new OpenAiEmbeddingService(config.openaiApiKey, config.embeddingModel);
68
73
  const extractor = new OpenAiStructuredExtractor(config.openaiApiKey, config.extractionModel);
@@ -76,6 +81,7 @@ export async function createServer() {
76
81
  applicationEventRepo,
77
82
  callBatchRepo,
78
83
  callBatchItemRepo,
84
+ referenceCvRepo,
79
85
  parsers,
80
86
  embeddingService,
81
87
  extractor,
@@ -120,6 +126,9 @@ export async function createServer() {
120
126
  registerCreateCallBatchTool(server, deps);
121
127
  registerGetCallBatchStatusTool(server, deps);
122
128
  registerUpdateCallOutcomeTool(server, deps);
129
+ registerAddReferenceCvTool(server, deps);
130
+ registerListReferenceCvsTool(server, deps);
131
+ registerRemoveReferenceCvTool(server, deps);
123
132
  if (config.dashboardEnabled) {
124
133
  const eventBus = new DashboardEventBus();
125
134
  wrapAllRegisteredTools(server, eventBus, deps);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/interface/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/interface/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { Dependencies } from '../types.js';
3
+ export declare function registerAddReferenceCvTool(server: McpServer, deps: Dependencies): void;
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod/v4';
2
+ import { AddReferenceCvUseCase } from '../../../application/use-cases/add-reference-cv.js';
3
+ export function registerAddReferenceCvTool(server, deps) {
4
+ const useCase = new AddReferenceCvUseCase(deps.referenceCvRepo, deps.candidateRepo, deps.jobPostingRepo);
5
+ server.tool('add_reference_cv', 'Mark a candidate as a reference/benchmark CV for a job posting. Reference CVs represent the ideal candidate profile — e.g. a successfully hired person whose pattern you want to replicate.', {
6
+ job_posting_id: z.string().describe('ID of the job posting'),
7
+ candidate_id: z.string().describe('ID of the candidate to mark as reference'),
8
+ note: z.string().optional().describe('Why this candidate is a good reference, e.g. "Hired, performing well, .NET+EF+MSSQL pattern"'),
9
+ }, async ({ job_posting_id, candidate_id, note }) => {
10
+ try {
11
+ const result = await useCase.execute({
12
+ jobPostingId: job_posting_id,
13
+ candidateId: candidate_id,
14
+ note,
15
+ });
16
+ return {
17
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
18
+ };
19
+ }
20
+ catch (error) {
21
+ return {
22
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
23
+ isError: true,
24
+ };
25
+ }
26
+ });
27
+ }
28
+ //# sourceMappingURL=add-reference-cv.js.map
@@ -0,0 +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,IAAI,CACT,kBAAkB,EAClB,6LAA6L,EAC7L;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;KACrI,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/C,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,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,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,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { Dependencies } from '../types.js';
3
+ export declare function registerListReferenceCvsTool(server: McpServer, deps: Dependencies): void;
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod/v4';
2
+ import { ListReferenceCvsUseCase } from '../../../application/use-cases/list-reference-cvs.js';
3
+ export function registerListReferenceCvsTool(server, deps) {
4
+ const useCase = new ListReferenceCvsUseCase(deps.referenceCvRepo, deps.jobPostingRepo);
5
+ server.tool('list_reference_cvs', 'List all reference/benchmark CVs for a job posting. These are the ideal candidate profiles that successful hires match.', {
6
+ job_posting_id: z.string().describe('ID of the job posting'),
7
+ }, async ({ job_posting_id }) => {
8
+ try {
9
+ const result = await useCase.execute({ jobPostingId: job_posting_id });
10
+ return {
11
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
12
+ };
13
+ }
14
+ catch (error) {
15
+ return {
16
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
17
+ isError: true,
18
+ };
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=list-reference-cvs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-reference-cvs.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/list-reference-cvs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAG/F,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAkB;IAChF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CACzC,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,yHAAyH,EACzH;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAC7D,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,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,7 +1,7 @@
1
1
  import { z } from 'zod/v4';
2
2
  import { MatchCandidatesUseCase } from '../../../application/use-cases/match-candidates.js';
3
3
  export function registerMatchCandidatesTool(server, deps) {
4
- const useCase = new MatchCandidatesUseCase(deps.jobPostingRepo, deps.candidateRepo, deps.chunkRepo, deps.embeddingService, deps.applicationRepo);
4
+ const useCase = new MatchCandidatesUseCase(deps.jobPostingRepo, deps.candidateRepo, deps.chunkRepo, deps.embeddingService, deps.applicationRepo, deps.referenceCvRepo);
5
5
  server.tool('match_candidates', 'Find the best matching candidates for a job posting using semantic search, skill overlap, and loyalty scoring. Supports filtering by location, required skills, and pipeline status exclusion.', {
6
6
  job_posting_id: z.string().describe('ID of the job posting to match against'),
7
7
  limit: z.number().optional().describe('Maximum number of candidates to return (default: 10)'),
@@ -10,7 +10,8 @@ export function registerMatchCandidatesTool(server, deps) {
10
10
  location: z.string().optional().describe('Filter by location (partial match, e.g. "Ankara")'),
11
11
  required_skills: z.array(z.string()).optional().describe('Hard filter: candidate must have ALL these skills (case-insensitive exact match)'),
12
12
  include_loyalty_detail: z.boolean().optional().describe('Include avgTenureMonths and shortStintCount in results (default: false)'),
13
- }, async ({ job_posting_id, limit, exclude_pipeline, exclude_screened, location, required_skills, include_loyalty_detail }) => {
13
+ use_references: z.boolean().optional().describe('Boost candidates similar to reference CVs (successful hires). Adds referenceBoost score and adjusts composite scoring weights. Default: false'),
14
+ }, async ({ job_posting_id, limit, exclude_pipeline, exclude_screened, location, required_skills, include_loyalty_detail, use_references }) => {
14
15
  try {
15
16
  const results = await useCase.execute({
16
17
  jobPostingId: job_posting_id,
@@ -20,6 +21,7 @@ export function registerMatchCandidatesTool(server, deps) {
20
21
  location,
21
22
  requiredSkills: required_skills,
22
23
  includeLoyaltyDetail: include_loyalty_detail,
24
+ useReferences: use_references,
23
25
  });
24
26
  return {
25
27
  content: [{ type: 'text', text: JSON.stringify(results, null, 2) }],
@@ -1 +1 @@
1
- {"version":3,"file":"match-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/match-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAG5F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CACxC,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,eAAe,CACrB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gMAAgM,EAChM;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC7E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC7F,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QAChH,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;QACnH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC7F,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;QAC5I,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;KACnI,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,sBAAsB,EAAE,EAAE,EAAE;QACzH,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,YAAY,EAAE,cAAc;gBAC5B,KAAK;gBACL,eAAe,EAAE,gBAAgB;gBACjC,eAAe,EAAE,gBAAgB;gBACjC,QAAQ;gBACR,cAAc,EAAE,eAAe;gBAC/B,oBAAoB,EAAE,sBAAsB;aAC7C,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC7E,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
+ {"version":3,"file":"match-candidates.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/match-candidates.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAG5F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CACxC,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,eAAe,CACrB,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,gMAAgM,EAChM;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC7E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC7F,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QAChH,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;QACnH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC7F,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;QAC5I,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;QAClI,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+IAA+I,CAAC;KACjM,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,sBAAsB,EAAE,cAAc,EAAE,EAAE,EAAE;QACzI,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpC,YAAY,EAAE,cAAc;gBAC5B,KAAK;gBACL,eAAe,EAAE,gBAAgB;gBACjC,eAAe,EAAE,gBAAgB;gBACjC,QAAQ;gBACR,cAAc,EAAE,eAAe;gBAC/B,oBAAoB,EAAE,sBAAsB;gBAC5C,aAAa,EAAE,cAAc;aAC9B,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC7E,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,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { Dependencies } from '../types.js';
3
+ export declare function registerRemoveReferenceCvTool(server: McpServer, deps: Dependencies): void;
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod/v4';
2
+ import { RemoveReferenceCvUseCase } from '../../../application/use-cases/remove-reference-cv.js';
3
+ export function registerRemoveReferenceCvTool(server, deps) {
4
+ const useCase = new RemoveReferenceCvUseCase(deps.referenceCvRepo);
5
+ server.tool('remove_reference_cv', 'Remove a reference CV from a job posting.', {
6
+ reference_id: z.string().describe('ID of the reference CV to remove'),
7
+ }, async ({ reference_id }) => {
8
+ try {
9
+ await useCase.execute(reference_id);
10
+ return {
11
+ content: [{ type: 'text', text: JSON.stringify({ success: true, message: 'Reference CV removed' }) }],
12
+ };
13
+ }
14
+ catch (error) {
15
+ return {
16
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
17
+ isError: true,
18
+ };
19
+ }
20
+ });
21
+ }
22
+ //# sourceMappingURL=remove-reference-cv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-reference-cv.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/remove-reference-cv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AAGjG,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,IAAkB;IACjF,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAEnE,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,2CAA2C,EAC3C;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,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,sBAAsB,EAAE,CAAC,EAAE,CAAC;aAC/G,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"}
@@ -9,6 +9,7 @@ import type { IJobPostingRepository } from '../../domain/repositories/job-postin
9
9
  import type { IApplicationRepository } from '../../domain/repositories/application-repository.js';
10
10
  import type { IApplicationEventRepository } from '../../domain/repositories/application-event-repository.js';
11
11
  import type { ICallBatchRepository, ICallBatchItemRepository } from '../../domain/repositories/call-batch-repository.js';
12
+ import type { IReferenceCvRepository } from '../../domain/repositories/reference-cv-repository.js';
12
13
  interface Refreshable {
13
14
  refreshTable(): void;
14
15
  }
@@ -21,6 +22,7 @@ export interface Dependencies {
21
22
  applicationEventRepo: IApplicationEventRepository & Refreshable;
22
23
  callBatchRepo: ICallBatchRepository & Refreshable;
23
24
  callBatchItemRepo: ICallBatchItemRepository & Refreshable;
25
+ referenceCvRepo: IReferenceCvRepository & Refreshable;
24
26
  parsers: IDocumentParser[];
25
27
  embeddingService: IEmbeddingService;
26
28
  extractor: IStructuredExtractor;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dolusoft/hirebase-mcp",
3
- "version": "1.2.1",
3
+ "version": "1.3.1",
4
4
  "description": "HireBase - AI-powered CV search engine with LanceDB and MCP",
5
5
  "type": "module",
6
6
  "main": "dist/interface/cli/index.js",