@dolusoft/hirebase-mcp 1.2.0 → 1.2.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 (50) hide show
  1. package/dist/application/use-cases/create-call-batch.d.ts +25 -0
  2. package/dist/application/use-cases/create-call-batch.js +72 -0
  3. package/dist/application/use-cases/create-call-batch.js.map +1 -0
  4. package/dist/application/use-cases/get-call-batch-status.d.ts +19 -0
  5. package/dist/application/use-cases/get-call-batch-status.js +23 -0
  6. package/dist/application/use-cases/get-call-batch-status.js.map +1 -0
  7. package/dist/application/use-cases/update-call-outcome.d.ts +19 -0
  8. package/dist/application/use-cases/update-call-outcome.js +63 -0
  9. package/dist/application/use-cases/update-call-outcome.js.map +1 -0
  10. package/dist/domain/entities/application.d.ts +1 -1
  11. package/dist/domain/entities/call-batch.d.ts +21 -0
  12. package/dist/domain/entities/call-batch.js +2 -0
  13. package/dist/domain/entities/call-batch.js.map +1 -0
  14. package/dist/domain/entities/index.d.ts +1 -0
  15. package/dist/domain/repositories/call-batch-repository.d.ts +17 -0
  16. package/dist/domain/repositories/call-batch-repository.js +2 -0
  17. package/dist/domain/repositories/call-batch-repository.js.map +1 -0
  18. package/dist/domain/repositories/index.d.ts +1 -0
  19. package/dist/infrastructure/persistence/database.d.ts +4 -0
  20. package/dist/infrastructure/persistence/database.js +32 -0
  21. package/dist/infrastructure/persistence/database.js.map +1 -1
  22. package/dist/infrastructure/persistence/lancedb-call-batch-repository.d.ts +33 -0
  23. package/dist/infrastructure/persistence/lancedb-call-batch-repository.js +216 -0
  24. package/dist/infrastructure/persistence/lancedb-call-batch-repository.js.map +1 -0
  25. package/dist/interface/dashboard/public/200.html +1 -1
  26. package/dist/interface/dashboard/public/404.html +1 -1
  27. package/dist/interface/dashboard/public/_nuxt/builds/latest.json +1 -1
  28. package/dist/interface/dashboard/public/_nuxt/builds/meta/6d598d93-4de0-403a-a158-2c2529504b0f.json +1 -0
  29. package/dist/interface/dashboard/public/_nuxt/builds/meta/83d6f570-2c34-4be5-9948-1051c85501d8.json +1 -0
  30. package/dist/interface/dashboard/public/_nuxt/builds/meta/b35b302f-e133-4121-8657-1ff4b7a84dbe.json +1 -0
  31. package/dist/interface/dashboard/public/_nuxt/builds/meta/cfdbad0b-52a7-4db5-a767-c65e5a0af0b2.json +1 -0
  32. package/dist/interface/dashboard/public/_nuxt/builds/meta/eac7333a-e06c-4c97-ae42-eeea7caaa1b3.json +1 -0
  33. package/dist/interface/dashboard/public/index.html +1 -1
  34. package/dist/interface/mcp/server.js +11 -0
  35. package/dist/interface/mcp/server.js.map +1 -1
  36. package/dist/interface/mcp/tools/add-pipeline-note.js +1 -3
  37. package/dist/interface/mcp/tools/add-pipeline-note.js.map +1 -1
  38. package/dist/interface/mcp/tools/create-call-batch.d.ts +3 -0
  39. package/dist/interface/mcp/tools/create-call-batch.js +30 -0
  40. package/dist/interface/mcp/tools/create-call-batch.js.map +1 -0
  41. package/dist/interface/mcp/tools/get-call-batch-status.d.ts +3 -0
  42. package/dist/interface/mcp/tools/get-call-batch-status.js +22 -0
  43. package/dist/interface/mcp/tools/get-call-batch-status.js.map +1 -0
  44. package/dist/interface/mcp/tools/update-call-outcome.d.ts +3 -0
  45. package/dist/interface/mcp/tools/update-call-outcome.js +30 -0
  46. package/dist/interface/mcp/tools/update-call-outcome.js.map +1 -0
  47. package/dist/interface/mcp/tools/update-pipeline-status.js +1 -16
  48. package/dist/interface/mcp/tools/update-pipeline-status.js.map +1 -1
  49. package/dist/interface/mcp/types.d.ts +3 -0
  50. package/package.json +1 -1
@@ -0,0 +1,25 @@
1
+ import type { IApplicationRepository } from '../../domain/repositories/application-repository.js';
2
+ import type { IApplicationEventRepository } from '../../domain/repositories/application-event-repository.js';
3
+ import type { ICandidateRepository } from '../../domain/repositories/candidate-repository.js';
4
+ import type { ICallBatchRepository } from '../../domain/repositories/call-batch-repository.js';
5
+ import type { ICallBatchItemRepository } from '../../domain/repositories/call-batch-repository.js';
6
+ import type { CallBatch, CallBatchItem } from '../../domain/entities/call-batch.js';
7
+ export interface CreateCallBatchInput {
8
+ jobPostingId: string;
9
+ sentTo: string;
10
+ candidateIds: string[];
11
+ note?: string;
12
+ }
13
+ export interface CreateCallBatchResult {
14
+ batch: CallBatch;
15
+ items: CallBatchItem[];
16
+ }
17
+ export declare class CreateCallBatchUseCase {
18
+ private applicationRepo;
19
+ private applicationEventRepo;
20
+ private candidateRepo;
21
+ private callBatchRepo;
22
+ private callBatchItemRepo;
23
+ constructor(applicationRepo: IApplicationRepository, applicationEventRepo: IApplicationEventRepository, candidateRepo: ICandidateRepository, callBatchRepo: ICallBatchRepository, callBatchItemRepo: ICallBatchItemRepository);
24
+ execute(input: CreateCallBatchInput): Promise<CreateCallBatchResult>;
25
+ }
@@ -0,0 +1,72 @@
1
+ import { nanoid } from 'nanoid';
2
+ export class CreateCallBatchUseCase {
3
+ applicationRepo;
4
+ applicationEventRepo;
5
+ candidateRepo;
6
+ callBatchRepo;
7
+ callBatchItemRepo;
8
+ constructor(applicationRepo, applicationEventRepo, candidateRepo, callBatchRepo, callBatchItemRepo) {
9
+ this.applicationRepo = applicationRepo;
10
+ this.applicationEventRepo = applicationEventRepo;
11
+ this.candidateRepo = candidateRepo;
12
+ this.callBatchRepo = callBatchRepo;
13
+ this.callBatchItemRepo = callBatchItemRepo;
14
+ }
15
+ async execute(input) {
16
+ const now = new Date().toISOString();
17
+ const batchId = nanoid();
18
+ const batch = {
19
+ id: batchId,
20
+ jobPostingId: input.jobPostingId,
21
+ sentTo: input.sentTo,
22
+ note: input.note ?? '',
23
+ createdAt: now,
24
+ updatedAt: now,
25
+ };
26
+ await this.callBatchRepo.save(batch);
27
+ const items = [];
28
+ for (const candidateId of input.candidateIds) {
29
+ const application = await this.applicationRepo.findByJobAndCandidate(input.jobPostingId, candidateId);
30
+ if (!application) {
31
+ throw new Error(`No application found for candidate ${candidateId} in job ${input.jobPostingId}`);
32
+ }
33
+ const candidate = await this.candidateRepo.findById(candidateId);
34
+ const phone = candidate?.contact?.phone ?? '';
35
+ const candidateName = candidate?.name ?? candidateId;
36
+ const item = {
37
+ id: nanoid(),
38
+ batchId,
39
+ applicationId: application.id,
40
+ candidateId,
41
+ candidateName,
42
+ phone,
43
+ outcome: 'pending',
44
+ note: '',
45
+ createdAt: now,
46
+ updatedAt: now,
47
+ };
48
+ await this.callBatchItemRepo.save(item);
49
+ items.push(item);
50
+ // Mark application as to_call
51
+ const updatedApp = {
52
+ ...application,
53
+ status: 'to_call',
54
+ notes: `${application.notes}\n[${now}] Batch ${batchId} için to_call listesine alındı — ${input.sentTo}'e iletildi`.trim(),
55
+ updatedAt: now,
56
+ };
57
+ await this.applicationRepo.update(updatedApp);
58
+ const event = {
59
+ id: nanoid(),
60
+ applicationId: application.id,
61
+ eventType: 'status_change',
62
+ fromStatus: application.status,
63
+ toStatus: 'to_call',
64
+ note: `Call batch oluşturuldu (${batchId}) — ${input.sentTo} arayacak`,
65
+ createdAt: now,
66
+ };
67
+ await this.applicationEventRepo.save(event);
68
+ }
69
+ return { batch, items };
70
+ }
71
+ }
72
+ //# sourceMappingURL=create-call-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-call-batch.js","sourceRoot":"","sources":["../../../src/application/use-cases/create-call-batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ICallBatchRepository } from '../../domain/repositories/call-batch-repository.js';
2
+ import type { ICallBatchItemRepository } from '../../domain/repositories/call-batch-repository.js';
3
+ import type { CallBatch, CallBatchItem } from '../../domain/entities/call-batch.js';
4
+ export interface GetCallBatchStatusResult {
5
+ batch: CallBatch;
6
+ items: CallBatchItem[];
7
+ summary: {
8
+ total: number;
9
+ pending: number;
10
+ reached: number;
11
+ unreachable: number;
12
+ };
13
+ }
14
+ export declare class GetCallBatchStatusUseCase {
15
+ private callBatchRepo;
16
+ private callBatchItemRepo;
17
+ constructor(callBatchRepo: ICallBatchRepository, callBatchItemRepo: ICallBatchItemRepository);
18
+ execute(batchId: string): Promise<GetCallBatchStatusResult>;
19
+ }
@@ -0,0 +1,23 @@
1
+ export class GetCallBatchStatusUseCase {
2
+ callBatchRepo;
3
+ callBatchItemRepo;
4
+ constructor(callBatchRepo, callBatchItemRepo) {
5
+ this.callBatchRepo = callBatchRepo;
6
+ this.callBatchItemRepo = callBatchItemRepo;
7
+ }
8
+ async execute(batchId) {
9
+ const batch = await this.callBatchRepo.findById(batchId);
10
+ if (!batch) {
11
+ throw new Error(`Call batch not found: ${batchId}`);
12
+ }
13
+ const items = await this.callBatchItemRepo.findByBatchId(batchId);
14
+ const summary = {
15
+ total: items.length,
16
+ pending: items.filter((i) => i.outcome === 'pending').length,
17
+ reached: items.filter((i) => i.outcome === 'reached').length,
18
+ unreachable: items.filter((i) => i.outcome === 'unreachable').length,
19
+ };
20
+ return { batch, items, summary };
21
+ }
22
+ }
23
+ //# sourceMappingURL=get-call-batch-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-call-batch-status.js","sourceRoot":"","sources":["../../../src/application/use-cases/get-call-batch-status.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,yBAAyB;IAE1B;IACA;IAFV,YACU,aAAmC,EACnC,iBAA2C;QAD3C,kBAAa,GAAb,aAAa,CAAsB;QACnC,sBAAiB,GAAjB,iBAAiB,CAA0B;IAClD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,OAAe;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAElE,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,KAAK,CAAC,MAAM;YACnB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM;YAC5D,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,MAAM;YAC5D,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,MAAM;SACrE,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import type { IApplicationRepository } from '../../domain/repositories/application-repository.js';
2
+ import type { IApplicationEventRepository } from '../../domain/repositories/application-event-repository.js';
3
+ import type { ICallBatchRepository } from '../../domain/repositories/call-batch-repository.js';
4
+ import type { ICallBatchItemRepository } from '../../domain/repositories/call-batch-repository.js';
5
+ import type { CallBatchItem, CallBatchItemOutcome } from '../../domain/entities/call-batch.js';
6
+ export interface UpdateCallOutcomeInput {
7
+ batchId: string;
8
+ applicationId: string;
9
+ outcome: CallBatchItemOutcome;
10
+ note?: string;
11
+ }
12
+ export declare class UpdateCallOutcomeUseCase {
13
+ private callBatchRepo;
14
+ private callBatchItemRepo;
15
+ private applicationRepo;
16
+ private applicationEventRepo;
17
+ constructor(callBatchRepo: ICallBatchRepository, callBatchItemRepo: ICallBatchItemRepository, applicationRepo: IApplicationRepository, applicationEventRepo: IApplicationEventRepository);
18
+ execute(input: UpdateCallOutcomeInput): Promise<CallBatchItem>;
19
+ }
@@ -0,0 +1,63 @@
1
+ import { nanoid } from 'nanoid';
2
+ export class UpdateCallOutcomeUseCase {
3
+ callBatchRepo;
4
+ callBatchItemRepo;
5
+ applicationRepo;
6
+ applicationEventRepo;
7
+ constructor(callBatchRepo, callBatchItemRepo, applicationRepo, applicationEventRepo) {
8
+ this.callBatchRepo = callBatchRepo;
9
+ this.callBatchItemRepo = callBatchItemRepo;
10
+ this.applicationRepo = applicationRepo;
11
+ this.applicationEventRepo = applicationEventRepo;
12
+ }
13
+ async execute(input) {
14
+ const batch = await this.callBatchRepo.findById(input.batchId);
15
+ if (!batch) {
16
+ throw new Error(`Call batch not found: ${input.batchId}`);
17
+ }
18
+ const item = await this.callBatchItemRepo.findByBatchAndApplication(input.batchId, input.applicationId);
19
+ if (!item) {
20
+ throw new Error(`Batch item not found for application ${input.applicationId} in batch ${input.batchId}`);
21
+ }
22
+ const now = new Date().toISOString();
23
+ const updatedItem = {
24
+ ...item,
25
+ outcome: input.outcome,
26
+ note: input.note ?? item.note,
27
+ updatedAt: now,
28
+ };
29
+ await this.callBatchItemRepo.update(updatedItem);
30
+ // Update application status based on outcome
31
+ const application = await this.applicationRepo.findById(input.applicationId);
32
+ if (application) {
33
+ const newStatus = input.outcome === 'reached'
34
+ ? 'contacted'
35
+ : input.outcome === 'unreachable'
36
+ ? 'unreachable'
37
+ : null;
38
+ if (newStatus && application.status !== newStatus) {
39
+ const noteText = input.note
40
+ ? `${input.note} (Batch: ${input.batchId})`
41
+ : `Arama sonucu: ${input.outcome} (Batch: ${input.batchId})`;
42
+ await this.applicationRepo.update({
43
+ ...application,
44
+ status: newStatus,
45
+ notes: `${application.notes}\n[${now}] ${noteText}`.trim(),
46
+ updatedAt: now,
47
+ });
48
+ const event = {
49
+ id: nanoid(),
50
+ applicationId: input.applicationId,
51
+ eventType: 'call_attempt',
52
+ fromStatus: application.status,
53
+ toStatus: newStatus,
54
+ note: noteText,
55
+ createdAt: now,
56
+ };
57
+ await this.applicationEventRepo.save(event);
58
+ }
59
+ }
60
+ return updatedItem;
61
+ }
62
+ }
63
+ //# sourceMappingURL=update-call-outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-call-outcome.js","sourceRoot":"","sources":["../../../src/application/use-cases/update-call-outcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAehC,MAAM,OAAO,wBAAwB;IAEzB;IACA;IACA;IACA;IAJV,YACU,aAAmC,EACnC,iBAA2C,EAC3C,eAAuC,EACvC,oBAAiD;QAHjD,kBAAa,GAAb,aAAa,CAAsB;QACnC,sBAAiB,GAAjB,iBAAiB,CAA0B;QAC3C,oBAAe,GAAf,eAAe,CAAwB;QACvC,yBAAoB,GAApB,oBAAoB,CAA6B;IACxD,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,KAA6B;QACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,yBAAyB,CACjE,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,aAAa,CACpB,CAAC;QACF,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,wCAAwC,KAAK,CAAC,aAAa,aAAa,KAAK,CAAC,OAAO,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,WAAW,GAAkB;YACjC,GAAG,IAAI;YACP,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;YAC7B,SAAS,EAAE,GAAG;SACf,CAAC;QAEF,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEjD,6CAA6C;QAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,SAAS,GACb,KAAK,CAAC,OAAO,KAAK,SAAS;gBACzB,CAAC,CAAE,WAAqB;gBACxB,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,aAAa;oBAC/B,CAAC,CAAE,aAAuB;oBAC1B,CAAC,CAAC,IAAI,CAAC;YAEb,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI;oBACzB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,OAAO,GAAG;oBAC3C,CAAC,CAAC,iBAAiB,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,OAAO,GAAG,CAAC;gBAE/D,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;oBAChC,GAAG,WAAW;oBACd,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,GAAG,WAAW,CAAC,KAAK,MAAM,GAAG,KAAK,QAAQ,EAAE,CAAC,IAAI,EAAE;oBAC1D,SAAS,EAAE,GAAG;iBACf,CAAC,CAAC;gBAEH,MAAM,KAAK,GAAqB;oBAC9B,EAAE,EAAE,MAAM,EAAE;oBACZ,aAAa,EAAE,KAAK,CAAC,aAAa;oBAClC,SAAS,EAAE,cAAc;oBACzB,UAAU,EAAE,WAAW,CAAC,MAAM;oBAC9B,QAAQ,EAAE,SAAS;oBACnB,IAAI,EAAE,QAAQ;oBACd,SAAS,EAAE,GAAG;iBACf,CAAC;gBACF,MAAM,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- export type ApplicationStatus = 'new' | 'contacted' | 'unreachable' | 'not_interested' | 'interview_scheduled' | 'no_show' | 'interviewed' | 'rejected' | 'offer_sent' | 'hired' | 'shortlisted' | 'screened_out';
1
+ export type ApplicationStatus = 'new' | 'to_call' | 'contacted' | 'unreachable' | 'not_interested' | 'interview_scheduled' | 'no_show' | 'interviewed' | 'rejected' | 'offer_sent' | 'hired' | 'shortlisted' | 'screened_out';
2
2
  export interface Application {
3
3
  readonly id: string;
4
4
  readonly jobPostingId: string;
@@ -0,0 +1,21 @@
1
+ export type CallBatchItemOutcome = 'pending' | 'reached' | 'unreachable';
2
+ export interface CallBatch {
3
+ readonly id: string;
4
+ readonly jobPostingId: string;
5
+ readonly sentTo: string;
6
+ readonly note: string;
7
+ readonly createdAt: string;
8
+ readonly updatedAt: string;
9
+ }
10
+ export interface CallBatchItem {
11
+ readonly id: string;
12
+ readonly batchId: string;
13
+ readonly applicationId: string;
14
+ readonly candidateId: string;
15
+ readonly candidateName: string;
16
+ readonly phone: string;
17
+ readonly outcome: CallBatchItemOutcome;
18
+ readonly note: string;
19
+ readonly createdAt: string;
20
+ readonly updatedAt: string;
21
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=call-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-batch.js","sourceRoot":"","sources":["../../../src/domain/entities/call-batch.ts"],"names":[],"mappings":""}
@@ -4,3 +4,4 @@ export type { CvVersion } from './cv-version.js';
4
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
+ export type { CallBatch, CallBatchItem, CallBatchItemOutcome } from './call-batch.js';
@@ -0,0 +1,17 @@
1
+ import type { CallBatch, CallBatchItem } from '../entities/call-batch.js';
2
+ export interface ICallBatchRepository {
3
+ save(batch: CallBatch): Promise<void>;
4
+ findById(id: string): Promise<CallBatch | null>;
5
+ findByJobPostingId(jobPostingId: string): Promise<CallBatch[]>;
6
+ update(batch: CallBatch): Promise<void>;
7
+ delete(id: string): Promise<void>;
8
+ count(): Promise<number>;
9
+ }
10
+ export interface ICallBatchItemRepository {
11
+ save(item: CallBatchItem): Promise<void>;
12
+ findByBatchId(batchId: string): Promise<CallBatchItem[]>;
13
+ findByBatchAndApplication(batchId: string, applicationId: string): Promise<CallBatchItem | null>;
14
+ update(item: CallBatchItem): Promise<void>;
15
+ deleteByBatchId(batchId: string): Promise<void>;
16
+ count(): Promise<number>;
17
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=call-batch-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-batch-repository.js","sourceRoot":"","sources":["../../../src/domain/repositories/call-batch-repository.ts"],"names":[],"mappings":""}
@@ -4,3 +4,4 @@ export type { IVersionRepository } from './version-repository.js';
4
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
+ export type { ICallBatchRepository, ICallBatchItemRepository } from './call-batch-repository.js';
@@ -8,6 +8,8 @@ export declare function getVersionSeedRow(): Record<string, unknown>[];
8
8
  export declare function getJobPostingSeedRow(): Record<string, unknown>[];
9
9
  export declare function getApplicationSeedRow(): Record<string, unknown>[];
10
10
  export declare function getApplicationEventSeedRow(): Record<string, unknown>[];
11
+ export declare function getCallBatchSeedRow(): Record<string, unknown>[];
12
+ export declare function getCallBatchItemSeedRow(): Record<string, unknown>[];
11
13
  export declare const TABLE_NAMES: {
12
14
  readonly candidates: "candidates";
13
15
  readonly chunks: "cv_chunks";
@@ -15,6 +17,8 @@ export declare const TABLE_NAMES: {
15
17
  readonly jobPostings: "job_postings";
16
18
  readonly applications: "applications";
17
19
  readonly applicationEvents: "application_events";
20
+ readonly callBatches: "call_batches";
21
+ readonly callBatchItems: "call_batch_items";
18
22
  };
19
23
  export declare function getVectorDimension(): number;
20
24
  export declare function resetAllTables(db: Connection): Promise<void>;
@@ -128,6 +128,34 @@ export function getApplicationEventSeedRow() {
128
128
  },
129
129
  ];
130
130
  }
131
+ export function getCallBatchSeedRow() {
132
+ return [
133
+ {
134
+ id: '__seed__',
135
+ job_posting_id: '',
136
+ sent_to: '',
137
+ note: '',
138
+ created_at: '',
139
+ updated_at: '',
140
+ },
141
+ ];
142
+ }
143
+ export function getCallBatchItemSeedRow() {
144
+ return [
145
+ {
146
+ id: '__seed__',
147
+ batch_id: '',
148
+ application_id: '',
149
+ candidate_id: '',
150
+ candidate_name: '',
151
+ phone: '',
152
+ outcome: '',
153
+ note: '',
154
+ created_at: '',
155
+ updated_at: '',
156
+ },
157
+ ];
158
+ }
131
159
  export const TABLE_NAMES = {
132
160
  candidates: 'candidates',
133
161
  chunks: 'cv_chunks',
@@ -135,6 +163,8 @@ export const TABLE_NAMES = {
135
163
  jobPostings: 'job_postings',
136
164
  applications: 'applications',
137
165
  applicationEvents: 'application_events',
166
+ callBatches: 'call_batches',
167
+ callBatchItems: 'call_batch_items',
138
168
  };
139
169
  export function getVectorDimension() {
140
170
  return vectorDimension;
@@ -152,5 +182,7 @@ export async function resetAllTables(db) {
152
182
  await db.createTable(TABLE_NAMES.jobPostings, getJobPostingSeedRow());
153
183
  await db.createTable(TABLE_NAMES.applications, getApplicationSeedRow());
154
184
  await db.createTable(TABLE_NAMES.applicationEvents, getApplicationEventSeedRow());
185
+ await db.createTable(TABLE_NAMES.callBatches, getCallBatchSeedRow());
186
+ await db.createTable(TABLE_NAMES.callBatchItems, getCallBatchItemSeedRow());
155
187
  }
156
188
  //# 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":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAG5C,MAAM,gBAAgB,GAA2B;IAC/C,wBAAwB,EAAE,IAAI;IAC9B,wBAAwB,EAAE,IAAI;IAC9B,wBAAwB,EAAE,IAAI;CAC/B,CAAC;AAEF,IAAI,eAAe,GAAG,IAAI,CAAC;AAE3B,MAAM,UAAU,wBAAwB,CAAC,cAAsB;IAC7D,eAAe,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;AAC7D,CAAC;AAED,IAAI,UAAU,GAAsB,IAAI,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAc,EACd,SAAiB,EACjB,QAAoC;IAEpC,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;IAEzC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,4CAA4C,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;YACpB,aAAa,EAAE,EAAE;YACjB,kBAAkB,EAAE,EAAE;YACtB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;YACd,OAAO,EAAE,CAAC;SACX;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,YAAY,EAAE,EAAE;YAChB,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1C,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,EAAE;YACT,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,IAAI;YACrB,gBAAgB,EAAE,IAAI;YACtB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,EAAE;YAChB,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,cAAc,EAAE,EAAE;YAClB,kBAAkB,EAAE,EAAE;YACtB,oBAAoB,EAAE,EAAE;YACxB,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE;YACR,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,cAAc,EAAE,EAAE;YAClB,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL;YACE,EAAE,EAAE,UAAU;YACd,QAAQ,EAAE,EAAE;YACZ,cAAc,EAAE,EAAE;YAClB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,EAAE;YAClB,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,EAAE;YACR,UAAU,EAAE,EAAE;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,WAAW;IACnB,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,cAAc;IAC3B,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,oBAAoB;IACvC,WAAW,EAAE,cAAc;IAC3B,cAAc,EAAE,kBAAkB;CAC1B,CAAC;AAEX,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAc;IACjD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACpE,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,EAAE,qBAAqB,EAAE,CAAC,CAAC;IACxE,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,CAAC,CAAC;IAClF,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACrE,MAAM,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,EAAE,uBAAuB,EAAE,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { Connection } from '@lancedb/lancedb';
2
+ import type { ICallBatchRepository, ICallBatchItemRepository } from '../../domain/repositories/call-batch-repository.js';
3
+ import type { CallBatch, CallBatchItem } from '../../domain/entities/call-batch.js';
4
+ export declare class LanceDbCallBatchRepository implements ICallBatchRepository {
5
+ private db;
6
+ private tablePromise;
7
+ constructor(db: Connection);
8
+ private getTable;
9
+ refreshTable(): void;
10
+ private toRow;
11
+ private toEntity;
12
+ save(batch: CallBatch): Promise<void>;
13
+ findById(id: string): Promise<CallBatch | null>;
14
+ findByJobPostingId(jobPostingId: string): Promise<CallBatch[]>;
15
+ update(batch: CallBatch): Promise<void>;
16
+ delete(id: string): Promise<void>;
17
+ count(): Promise<number>;
18
+ }
19
+ export declare class LanceDbCallBatchItemRepository implements ICallBatchItemRepository {
20
+ private db;
21
+ private tablePromise;
22
+ constructor(db: Connection);
23
+ private getTable;
24
+ refreshTable(): void;
25
+ private toRow;
26
+ private toEntity;
27
+ save(item: CallBatchItem): Promise<void>;
28
+ findByBatchId(batchId: string): Promise<CallBatchItem[]>;
29
+ findByBatchAndApplication(batchId: string, applicationId: string): Promise<CallBatchItem | null>;
30
+ update(item: CallBatchItem): Promise<void>;
31
+ deleteByBatchId(batchId: string): Promise<void>;
32
+ count(): Promise<number>;
33
+ }
@@ -0,0 +1,216 @@
1
+ import { getOrCreateTable, getCallBatchSeedRow, getCallBatchItemSeedRow, TABLE_NAMES } from './database.js';
2
+ import { DatabaseError } from '../../shared/errors/index.js';
3
+ import { escapeFilterValue } from '../../shared/utils/text.js';
4
+ export class LanceDbCallBatchRepository {
5
+ db;
6
+ tablePromise;
7
+ constructor(db) {
8
+ this.db = db;
9
+ this.tablePromise = getOrCreateTable(db, TABLE_NAMES.callBatches, getCallBatchSeedRow());
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.callBatches, getCallBatchSeedRow());
18
+ }
19
+ toRow(batch) {
20
+ return {
21
+ id: batch.id,
22
+ job_posting_id: batch.jobPostingId,
23
+ sent_to: batch.sentTo,
24
+ note: batch.note,
25
+ created_at: batch.createdAt,
26
+ updated_at: batch.updatedAt,
27
+ };
28
+ }
29
+ toEntity(row) {
30
+ return {
31
+ id: row.id,
32
+ jobPostingId: row.job_posting_id,
33
+ sentTo: row.sent_to,
34
+ note: row.note,
35
+ createdAt: row.created_at,
36
+ updatedAt: row.updated_at,
37
+ };
38
+ }
39
+ async save(batch) {
40
+ try {
41
+ const table = await this.getTable();
42
+ await table.add([this.toRow(batch)]);
43
+ }
44
+ catch (error) {
45
+ throw new DatabaseError('Failed to save call batch', error);
46
+ }
47
+ }
48
+ async findById(id) {
49
+ try {
50
+ const table = await this.getTable();
51
+ const results = await table
52
+ .query()
53
+ .where(`id = '${escapeFilterValue(id)}'`)
54
+ .toArray();
55
+ const rows = results.filter((r) => r.id !== '__seed__');
56
+ return rows.length > 0 ? this.toEntity(rows[0]) : null;
57
+ }
58
+ catch (error) {
59
+ throw new DatabaseError('Failed to find call batch by id', error);
60
+ }
61
+ }
62
+ async findByJobPostingId(jobPostingId) {
63
+ try {
64
+ const table = await this.getTable();
65
+ const results = await table
66
+ .query()
67
+ .where(`job_posting_id = '${escapeFilterValue(jobPostingId)}' AND id != '__seed__'`)
68
+ .toArray();
69
+ return results
70
+ .map((r) => this.toEntity(r))
71
+ .sort((a, b) => b.createdAt.localeCompare(a.createdAt));
72
+ }
73
+ catch (error) {
74
+ throw new DatabaseError('Failed to find call batches by job posting', error);
75
+ }
76
+ }
77
+ async update(batch) {
78
+ try {
79
+ const table = await this.getTable();
80
+ await table.delete(`id = '${escapeFilterValue(batch.id)}'`);
81
+ await table.add([this.toRow(batch)]);
82
+ }
83
+ catch (error) {
84
+ throw new DatabaseError('Failed to update call batch', error);
85
+ }
86
+ }
87
+ async delete(id) {
88
+ try {
89
+ const table = await this.getTable();
90
+ await table.delete(`id = '${escapeFilterValue(id)}'`);
91
+ }
92
+ catch (error) {
93
+ throw new DatabaseError('Failed to delete call batch', error);
94
+ }
95
+ }
96
+ async count() {
97
+ try {
98
+ const table = await this.getTable();
99
+ const results = await table.query().where("id != '__seed__'").toArray();
100
+ return results.length;
101
+ }
102
+ catch (error) {
103
+ throw new DatabaseError('Failed to count call batches', error);
104
+ }
105
+ }
106
+ }
107
+ export class LanceDbCallBatchItemRepository {
108
+ db;
109
+ tablePromise;
110
+ constructor(db) {
111
+ this.db = db;
112
+ this.tablePromise = getOrCreateTable(db, TABLE_NAMES.callBatchItems, getCallBatchItemSeedRow());
113
+ }
114
+ async getTable() {
115
+ const table = await this.tablePromise;
116
+ await table.checkoutLatest();
117
+ return table;
118
+ }
119
+ refreshTable() {
120
+ this.tablePromise = getOrCreateTable(this.db, TABLE_NAMES.callBatchItems, getCallBatchItemSeedRow());
121
+ }
122
+ toRow(item) {
123
+ return {
124
+ id: item.id,
125
+ batch_id: item.batchId,
126
+ application_id: item.applicationId,
127
+ candidate_id: item.candidateId,
128
+ candidate_name: item.candidateName,
129
+ phone: item.phone,
130
+ outcome: item.outcome,
131
+ note: item.note,
132
+ created_at: item.createdAt,
133
+ updated_at: item.updatedAt,
134
+ };
135
+ }
136
+ toEntity(row) {
137
+ return {
138
+ id: row.id,
139
+ batchId: row.batch_id,
140
+ applicationId: row.application_id,
141
+ candidateId: row.candidate_id,
142
+ candidateName: row.candidate_name,
143
+ phone: row.phone,
144
+ outcome: row.outcome,
145
+ note: row.note,
146
+ createdAt: row.created_at,
147
+ updatedAt: row.updated_at,
148
+ };
149
+ }
150
+ async save(item) {
151
+ try {
152
+ const table = await this.getTable();
153
+ await table.add([this.toRow(item)]);
154
+ }
155
+ catch (error) {
156
+ throw new DatabaseError('Failed to save call batch item', error);
157
+ }
158
+ }
159
+ async findByBatchId(batchId) {
160
+ try {
161
+ const table = await this.getTable();
162
+ const results = await table
163
+ .query()
164
+ .where(`batch_id = '${escapeFilterValue(batchId)}' AND id != '__seed__'`)
165
+ .toArray();
166
+ return results.map((r) => this.toEntity(r));
167
+ }
168
+ catch (error) {
169
+ throw new DatabaseError('Failed to find call batch items by batch', error);
170
+ }
171
+ }
172
+ async findByBatchAndApplication(batchId, applicationId) {
173
+ try {
174
+ const table = await this.getTable();
175
+ const results = await table
176
+ .query()
177
+ .where(`batch_id = '${escapeFilterValue(batchId)}' AND application_id = '${escapeFilterValue(applicationId)}'`)
178
+ .toArray();
179
+ const rows = results.filter((r) => r.id !== '__seed__');
180
+ return rows.length > 0 ? this.toEntity(rows[0]) : null;
181
+ }
182
+ catch (error) {
183
+ throw new DatabaseError('Failed to find call batch item', error);
184
+ }
185
+ }
186
+ async update(item) {
187
+ try {
188
+ const table = await this.getTable();
189
+ await table.delete(`id = '${escapeFilterValue(item.id)}'`);
190
+ await table.add([this.toRow(item)]);
191
+ }
192
+ catch (error) {
193
+ throw new DatabaseError('Failed to update call batch item', error);
194
+ }
195
+ }
196
+ async deleteByBatchId(batchId) {
197
+ try {
198
+ const table = await this.getTable();
199
+ await table.delete(`batch_id = '${escapeFilterValue(batchId)}'`);
200
+ }
201
+ catch (error) {
202
+ throw new DatabaseError('Failed to delete call batch items', error);
203
+ }
204
+ }
205
+ async count() {
206
+ try {
207
+ const table = await this.getTable();
208
+ const results = await table.query().where("id != '__seed__'").toArray();
209
+ return results.length;
210
+ }
211
+ catch (error) {
212
+ throw new DatabaseError('Failed to count call batch items', error);
213
+ }
214
+ }
215
+ }
216
+ //# sourceMappingURL=lancedb-call-batch-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lancedb-call-batch-repository.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/lancedb-call-batch-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:"b4071b37-04ea-4aad-89c1-665c0a33ff14",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773502792240,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:"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 +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:"b4071b37-04ea-4aad-89c1-665c0a33ff14",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773502792240,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:"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 +1 @@
1
- {"id":"b4071b37-04ea-4aad-89c1-665c0a33ff14","timestamp":1773502786903}
1
+ {"id":"b35b302f-e133-4121-8657-1ff4b7a84dbe","timestamp":1773740354314}
@@ -0,0 +1 @@
1
+ {"id":"6d598d93-4de0-403a-a158-2c2529504b0f","timestamp":1773739519840,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"83d6f570-2c34-4be5-9948-1051c85501d8","timestamp":1773738288439,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"b35b302f-e133-4121-8657-1ff4b7a84dbe","timestamp":1773740354314,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"cfdbad0b-52a7-4db5-a767-c65e5a0af0b2","timestamp":1773740286337,"prerendered":[]}
@@ -0,0 +1 @@
1
+ {"id":"eac7333a-e06c-4c97-ae42-eeea7caaa1b3","timestamp":1773740274040,"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:"b4071b37-04ea-4aad-89c1-665c0a33ff14",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773502792240,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:"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>
@@ -7,6 +7,7 @@ import { LanceDbVersionRepository } from '../../infrastructure/persistence/lance
7
7
  import { LanceDbJobPostingRepository } from '../../infrastructure/persistence/lancedb-job-posting-repository.js';
8
8
  import { LanceDbApplicationRepository } from '../../infrastructure/persistence/lancedb-application-repository.js';
9
9
  import { LanceDbApplicationEventRepository } from '../../infrastructure/persistence/lancedb-application-event-repository.js';
10
+ import { LanceDbCallBatchRepository, LanceDbCallBatchItemRepository } from '../../infrastructure/persistence/lancedb-call-batch-repository.js';
10
11
  import { PdfParser } from '../../infrastructure/parsers/pdf-parser.js';
11
12
  import { DocxParser } from '../../infrastructure/parsers/docx-parser.js';
12
13
  import { OpenAiEmbeddingService } from '../../infrastructure/ai/openai-embedding-service.js';
@@ -47,6 +48,9 @@ import { registerCheckDuplicateCandidateTool } from './tools/check-duplicate-can
47
48
  import { registerCompareCandidatesTool } from './tools/compare-candidates.js';
48
49
  import { registerGetScreeningHistoryTool } from './tools/get-screening-history.js';
49
50
  import { registerGenerateScreeningReportTool } from './tools/generate-screening-report.js';
51
+ import { registerCreateCallBatchTool } from './tools/create-call-batch.js';
52
+ import { registerGetCallBatchStatusTool } from './tools/get-call-batch-status.js';
53
+ import { registerUpdateCallOutcomeTool } from './tools/update-call-outcome.js';
50
54
  export async function createServer() {
51
55
  const config = loadConfig();
52
56
  configureVectorDimension(config.embeddingModel);
@@ -57,6 +61,8 @@ export async function createServer() {
57
61
  const jobPostingRepo = new LanceDbJobPostingRepository(db);
58
62
  const applicationRepo = new LanceDbApplicationRepository(db);
59
63
  const applicationEventRepo = new LanceDbApplicationEventRepository(db);
64
+ const callBatchRepo = new LanceDbCallBatchRepository(db);
65
+ const callBatchItemRepo = new LanceDbCallBatchItemRepository(db);
60
66
  const parsers = [new PdfParser(), new DocxParser()];
61
67
  const embeddingService = new OpenAiEmbeddingService(config.openaiApiKey, config.embeddingModel);
62
68
  const extractor = new OpenAiStructuredExtractor(config.openaiApiKey, config.extractionModel);
@@ -68,6 +74,8 @@ export async function createServer() {
68
74
  jobPostingRepo,
69
75
  applicationRepo,
70
76
  applicationEventRepo,
77
+ callBatchRepo,
78
+ callBatchItemRepo,
71
79
  parsers,
72
80
  embeddingService,
73
81
  extractor,
@@ -109,6 +117,9 @@ export async function createServer() {
109
117
  registerCompareCandidatesTool(server, deps);
110
118
  registerGetScreeningHistoryTool(server, deps);
111
119
  registerGenerateScreeningReportTool(server, deps);
120
+ registerCreateCallBatchTool(server, deps);
121
+ registerGetCallBatchStatusTool(server, deps);
122
+ registerUpdateCallOutcomeTool(server, deps);
112
123
  if (config.dashboardEnabled) {
113
124
  const eventBus = new DashboardEventBus();
114
125
  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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"}
@@ -4,9 +4,7 @@ export function registerAddPipelineNoteTool(server, deps) {
4
4
  const useCase = new AddPipelineNoteUseCase(deps.applicationRepo, deps.applicationEventRepo);
5
5
  server.tool('add_pipeline_note', 'Add a note, call attempt, or interview record to an application in the pipeline.', {
6
6
  application_id: z.string().describe('ID of the application'),
7
- event_type: z
8
- .enum(['note', 'call_attempt', 'interview'])
9
- .describe('Type of event: note, call_attempt, or interview'),
7
+ event_type: z.string().describe('Type of event: note, call_attempt, or interview'),
10
8
  note: z.string().describe('Note content'),
11
9
  scheduled_at: z.string().optional().describe('Scheduled date/time (ISO format) for interview events'),
12
10
  }, async ({ application_id, event_type, note, scheduled_at }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"add-pipeline-note.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-pipeline-note.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE5F,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,kFAAkF,EAClF;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,UAAU,EAAE,CAAC;aACV,IAAI,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;aAC3C,QAAQ,CAAC,iDAAiD,CAAC;QAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACtG,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBAClC,aAAa,EAAE,cAAc;gBAC7B,SAAS,EAAE,UAAU;gBACrB,IAAI;gBACJ,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC3E,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":"add-pipeline-note.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/add-pipeline-note.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qDAAqD,CAAC;AAG7F,MAAM,UAAU,2BAA2B,CAAC,MAAiB,EAAE,IAAkB;IAC/E,MAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE5F,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,kFAAkF,EAClF;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAClF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACzC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KACtG,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBAClC,aAAa,EAAE,cAAc;gBAC7B,SAAS,EAAE,UAA0F;gBACrG,IAAI;gBACJ,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC3E,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 registerCreateCallBatchTool(server: McpServer, deps: Dependencies): void;
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod/v4';
2
+ import { CreateCallBatchUseCase } from '../../../application/use-cases/create-call-batch.js';
3
+ export function registerCreateCallBatchTool(server, deps) {
4
+ const useCase = new CreateCallBatchUseCase(deps.applicationRepo, deps.applicationEventRepo, deps.candidateRepo, deps.callBatchRepo, deps.callBatchItemRepo);
5
+ server.tool('create_call_batch', 'Create a call batch: mark a list of candidates as to_call and assign them to a person (e.g. Sezer) for calling. Tracks who will call, when the batch was created, and the outcome of each call.', {
6
+ job_posting_id: z.string().describe('ID of the job posting'),
7
+ sent_to: z.string().describe('Name of the person who will make the calls, e.g. "Sezer"'),
8
+ candidate_ids: z.array(z.string()).describe('List of candidate IDs to include in this call batch'),
9
+ note: z.string().optional().describe('Optional note about this batch, e.g. "Bayram sonrasına randevu alınacak"'),
10
+ }, async ({ job_posting_id, sent_to, candidate_ids, note }) => {
11
+ try {
12
+ const result = await useCase.execute({
13
+ jobPostingId: job_posting_id,
14
+ sentTo: sent_to,
15
+ candidateIds: candidate_ids,
16
+ note,
17
+ });
18
+ return {
19
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
20
+ };
21
+ }
22
+ catch (error) {
23
+ return {
24
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
25
+ isError: true,
26
+ };
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=create-call-batch.js.map
@@ -0,0 +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,IAAI,CACT,mBAAmB,EACnB,iMAAiM,EACjM;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;QACxF,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAClG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;KACjH,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE;QACzD,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,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 registerGetCallBatchStatusTool(server: McpServer, deps: Dependencies): void;
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod/v4';
2
+ import { GetCallBatchStatusUseCase } from '../../../application/use-cases/get-call-batch-status.js';
3
+ export function registerGetCallBatchStatusTool(server, deps) {
4
+ const useCase = new GetCallBatchStatusUseCase(deps.callBatchRepo, deps.callBatchItemRepo);
5
+ server.tool('get_call_batch_status', 'Get the status of a call batch: shows all candidates, their phone numbers, and the outcome of each call (pending, reached, unreachable).', {
6
+ batch_id: z.string().describe('ID of the call batch'),
7
+ }, async ({ batch_id }) => {
8
+ try {
9
+ const result = await useCase.execute(batch_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=get-call-batch-status.js.map
@@ -0,0 +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,IAAI,CACT,uBAAuB,EACvB,0IAA0I,EAC1I;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACtD,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,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,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 registerUpdateCallOutcomeTool(server: McpServer, deps: Dependencies): void;
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod/v4';
2
+ import { UpdateCallOutcomeUseCase } from '../../../application/use-cases/update-call-outcome.js';
3
+ export function registerUpdateCallOutcomeTool(server, deps) {
4
+ const useCase = new UpdateCallOutcomeUseCase(deps.callBatchRepo, deps.callBatchItemRepo, deps.applicationRepo, deps.applicationEventRepo);
5
+ server.tool('update_call_outcome', 'Update the outcome of a call attempt for a candidate in a call batch. Valid outcomes: pending (not yet called), reached (contact made, appointment scheduled), unreachable (could not reach).', {
6
+ batch_id: z.string().describe('ID of the call batch'),
7
+ application_id: z.string().describe('ID of the application within the batch'),
8
+ outcome: z.string().describe('Outcome of the call. Valid values: pending, reached, unreachable'),
9
+ note: z.string().optional().describe('Optional note about the call result, e.g. appointment date/time'),
10
+ }, async ({ batch_id, application_id, outcome, note }) => {
11
+ try {
12
+ const result = await useCase.execute({
13
+ batchId: batch_id,
14
+ applicationId: application_id,
15
+ outcome: outcome,
16
+ note,
17
+ });
18
+ return {
19
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
20
+ };
21
+ }
22
+ catch (error) {
23
+ return {
24
+ content: [{ type: 'text', text: JSON.stringify({ error: error.message }) }],
25
+ isError: true,
26
+ };
27
+ }
28
+ });
29
+ }
30
+ //# sourceMappingURL=update-call-outcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-call-outcome.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/update-call-outcome.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AAIjG,MAAM,UAAU,6BAA6B,CAAC,MAAiB,EAAE,IAAkB;IACjF,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAC1C,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,+LAA+L,EAC/L;QACE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACrD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAChG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;KACxG,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACnC,OAAO,EAAE,QAAQ;gBACjB,aAAa,EAAE,cAAc;gBAC7B,OAAO,EAAE,OAA+B;gBACxC,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"}
@@ -4,22 +4,7 @@ export function registerUpdatePipelineStatusTool(server, deps) {
4
4
  const useCase = new UpdatePipelineStatusUseCase(deps.applicationRepo, deps.applicationEventRepo);
5
5
  server.tool('update_pipeline_status', 'Update the status of a candidate in the recruitment pipeline. Statuses: new, contacted, unreachable, not_interested, interview_scheduled, no_show, interviewed, rejected, offer_sent, hired, shortlisted, screened_out.', {
6
6
  application_id: z.string().describe('ID of the application'),
7
- new_status: z
8
- .enum([
9
- 'new',
10
- 'contacted',
11
- 'unreachable',
12
- 'not_interested',
13
- 'interview_scheduled',
14
- 'no_show',
15
- 'interviewed',
16
- 'rejected',
17
- 'offer_sent',
18
- 'hired',
19
- 'shortlisted',
20
- 'screened_out',
21
- ])
22
- .describe('New status'),
7
+ new_status: z.string().describe('New status. Valid values: new, to_call, contacted, unreachable, not_interested, interview_scheduled, no_show, interviewed, rejected, offer_sent, hired, shortlisted, screened_out'),
23
8
  note: z.string().optional().describe('Optional note about the status change'),
24
9
  }, async ({ application_id, new_status, note }) => {
25
10
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"update-pipeline-status.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/update-pipeline-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,0DAA0D,CAAC;AAGvG,MAAM,UAAU,gCAAgC,CAAC,MAAiB,EAAE,IAAkB;IACpF,MAAM,OAAO,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEjG,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,yNAAyN,EACzN;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,UAAU,EAAE,CAAC;aACV,IAAI,CAAC;YACJ,KAAK;YACL,WAAW;YACX,aAAa;YACb,gBAAgB;YAChB,qBAAqB;YACrB,SAAS;YACT,aAAa;YACb,UAAU;YACV,YAAY;YACZ,OAAO;YACP,aAAa;YACb,cAAc;SACf,CAAC;aACD,QAAQ,CAAC,YAAY,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACxC,aAAa,EAAE,cAAc;gBAC7B,SAAS,EAAE,UAAU;gBACrB,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjF,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":"update-pipeline-status.js","sourceRoot":"","sources":["../../../../src/interface/mcp/tools/update-pipeline-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAC3B,OAAO,EAAE,2BAA2B,EAAE,MAAM,0DAA0D,CAAC;AAGvG,MAAM,UAAU,gCAAgC,CAAC,MAAiB,EAAE,IAAkB;IACpF,MAAM,OAAO,GAAG,IAAI,2BAA2B,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEjG,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,yNAAyN,EACzN;QACE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC5D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mLAAmL,CAAC;QACpN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KAC9E,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;gBACxC,aAAa,EAAE,cAAc;gBAC7B,SAAS,EAAE,UAAiF;gBAC5F,IAAI;aACL,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjF,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"}
@@ -8,6 +8,7 @@ import type { IExportService } from '../../application/ports/export-service.js';
8
8
  import type { IJobPostingRepository } from '../../domain/repositories/job-posting-repository.js';
9
9
  import type { IApplicationRepository } from '../../domain/repositories/application-repository.js';
10
10
  import type { IApplicationEventRepository } from '../../domain/repositories/application-event-repository.js';
11
+ import type { ICallBatchRepository, ICallBatchItemRepository } from '../../domain/repositories/call-batch-repository.js';
11
12
  interface Refreshable {
12
13
  refreshTable(): void;
13
14
  }
@@ -18,6 +19,8 @@ export interface Dependencies {
18
19
  jobPostingRepo: IJobPostingRepository & Refreshable;
19
20
  applicationRepo: IApplicationRepository & Refreshable;
20
21
  applicationEventRepo: IApplicationEventRepository & Refreshable;
22
+ callBatchRepo: ICallBatchRepository & Refreshable;
23
+ callBatchItemRepo: ICallBatchItemRepository & Refreshable;
21
24
  parsers: IDocumentParser[];
22
25
  embeddingService: IEmbeddingService;
23
26
  extractor: IStructuredExtractor;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dolusoft/hirebase-mcp",
3
- "version": "1.2.0",
3
+ "version": "1.2.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",