@dolusoft/hirebase-mcp 1.1.15 → 1.1.17

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 (153) hide show
  1. package/README.md +1 -20
  2. package/dist/application/dto/filter-input.d.ts +1 -0
  3. package/dist/application/use-cases/bulk-add-cvs.d.ts +14 -0
  4. package/dist/application/use-cases/bulk-add-cvs.js +32 -0
  5. package/dist/application/use-cases/bulk-add-cvs.js.map +1 -0
  6. package/dist/application/use-cases/filter-candidates.js +3 -0
  7. package/dist/application/use-cases/filter-candidates.js.map +1 -1
  8. package/dist/infrastructure/config/app-config.d.ts +0 -2
  9. package/dist/infrastructure/config/app-config.js +0 -2
  10. package/dist/infrastructure/config/app-config.js.map +1 -1
  11. package/dist/interface/cli/index.js +0 -0
  12. package/dist/interface/dashboard/html.d.ts +1 -0
  13. package/dist/interface/dashboard/html.js +1007 -0
  14. package/dist/interface/dashboard/html.js.map +1 -0
  15. package/dist/interface/dashboard/public/200.html +1 -1
  16. package/dist/interface/dashboard/public/404.html +1 -1
  17. package/dist/interface/dashboard/public/_nuxt/{0AdCNZ2r.js → BTmld7lv.js} +1 -1
  18. package/dist/interface/dashboard/public/_nuxt/BtFgTcXQ.js +30 -0
  19. package/dist/interface/dashboard/public/_nuxt/{BLxpBE0v.js → BwTYWIW-.js} +1 -1
  20. package/dist/interface/dashboard/public/_nuxt/{CWPXgICh.js → CdJZeyak.js} +3 -3
  21. package/dist/interface/dashboard/public/_nuxt/{BMfODfbX.js → D9vxbU2B.js} +1 -1
  22. package/dist/interface/dashboard/public/_nuxt/{QW9Ku0B8.js → DHg6ig_T.js} +1 -1
  23. package/dist/interface/dashboard/public/_nuxt/DhFk2_Al.js +1 -0
  24. package/dist/interface/dashboard/public/_nuxt/{BTjyj6yg.js → DtX-aPBA.js} +1 -1
  25. package/dist/interface/dashboard/public/_nuxt/{Bq8olVvK.js → DvCMYK3d.js} +1 -1
  26. package/dist/interface/dashboard/public/_nuxt/{iHi62RBH.js → FR49ZCl_.js} +3 -3
  27. package/dist/interface/dashboard/public/_nuxt/builds/latest.json +1 -1
  28. package/dist/interface/dashboard/public/_nuxt/builds/meta/027020ec-4e7d-4fc7-8447-19800f7d0bac.json +1 -0
  29. package/dist/interface/dashboard/public/_nuxt/builds/meta/149e5d62-f8be-402c-b0cc-2efe0560d9d2.json +1 -0
  30. package/dist/interface/dashboard/public/_nuxt/builds/meta/18e19101-a96b-41dc-b602-f9a8f013a036.json +1 -0
  31. package/dist/interface/dashboard/public/_nuxt/builds/meta/1c51a4c0-5c2f-4100-97d3-01a1a9c5e5b9.json +1 -0
  32. package/dist/interface/dashboard/public/_nuxt/builds/meta/2fd3d0d3-6004-4659-9055-d27aa6656fd3.json +1 -0
  33. package/dist/interface/dashboard/public/_nuxt/builds/meta/32cf8bd4-f9b8-477d-bcff-75df710335e1.json +1 -0
  34. package/dist/interface/dashboard/public/_nuxt/builds/meta/3b25d236-f3cd-4770-94da-08dd37064dec.json +1 -0
  35. package/dist/interface/dashboard/public/_nuxt/builds/meta/4d9b8de6-1292-42ca-8f07-c47ba5f61768.json +1 -0
  36. package/dist/interface/dashboard/public/_nuxt/builds/meta/54792d4b-ca55-4b5d-b0dd-1d7dc34de344.json +1 -0
  37. package/dist/interface/dashboard/public/_nuxt/builds/meta/5959a14b-2494-4e0d-be28-fef9adfd889d.json +1 -0
  38. package/dist/interface/dashboard/public/_nuxt/builds/meta/60cda583-d704-4d4e-b37e-7ab337e3b6cc.json +1 -0
  39. package/dist/interface/dashboard/public/_nuxt/builds/meta/64d05a43-99ec-4c22-934e-071b310b968f.json +1 -0
  40. package/dist/interface/dashboard/public/_nuxt/builds/meta/6c1632a5-f0af-41e3-9d88-12294e03a0b9.json +1 -0
  41. package/dist/interface/dashboard/public/_nuxt/builds/meta/6c80982c-5e2c-446c-aaf6-7000a976e493.json +1 -0
  42. package/dist/interface/dashboard/public/_nuxt/builds/meta/79161adb-748c-4d36-a031-a71899a56ecd.json +1 -0
  43. package/dist/interface/dashboard/public/_nuxt/builds/meta/7aef47ca-0757-4b22-af19-6003a977fe0c.json +1 -0
  44. package/dist/interface/dashboard/public/_nuxt/builds/meta/84e5a87d-4ae5-48dd-8d5e-5b1fe89f7243.json +1 -0
  45. package/dist/interface/dashboard/public/_nuxt/builds/meta/86082677-a11d-4acf-ab04-c3c067a71622.json +1 -0
  46. package/dist/interface/dashboard/public/_nuxt/builds/meta/8892e611-c2b4-425b-a6a5-988314d8da4d.json +1 -0
  47. package/dist/interface/dashboard/public/_nuxt/builds/meta/9bfe6b22-73f8-4584-b13d-ed1df5600e12.json +1 -0
  48. package/dist/interface/dashboard/public/_nuxt/builds/meta/a39bf957-ddae-41a6-a183-08292363098b.json +1 -0
  49. package/dist/interface/dashboard/public/_nuxt/builds/meta/aba3eed8-dd4e-4a25-a13d-7dd320288af5.json +1 -0
  50. package/dist/interface/dashboard/public/_nuxt/builds/meta/b0bf7fc4-02c1-46fd-acca-f4458feed978.json +1 -0
  51. package/dist/interface/dashboard/public/_nuxt/builds/meta/b2847d83-b695-45d4-9dca-d7498158a501.json +1 -0
  52. package/dist/interface/dashboard/public/_nuxt/builds/meta/c73136b0-98f2-4b13-bce6-b2c2bffada81.json +1 -0
  53. package/dist/interface/dashboard/public/_nuxt/builds/meta/c8382eda-1354-4f92-b6d0-5b5b9f43354a.json +1 -0
  54. package/dist/interface/dashboard/public/_nuxt/builds/meta/e3abaa8f-1b4f-440f-8aa0-ad466815fcb3.json +1 -0
  55. package/dist/interface/dashboard/public/_nuxt/builds/meta/e707aa44-7202-413d-bcd5-1538b5b56570.json +1 -0
  56. package/dist/interface/dashboard/public/_nuxt/builds/meta/ea661002-05ab-4bfb-b02f-c91bb721c5e9.json +1 -0
  57. package/dist/interface/dashboard/public/_nuxt/builds/meta/ec2a9f02-6137-4473-bc4f-0e48df1e085b.json +1 -0
  58. package/dist/interface/dashboard/public/_nuxt/builds/meta/f2125e1d-c0bd-469a-a543-5f766f310d69.json +1 -0
  59. package/dist/interface/dashboard/public/_nuxt/builds/meta/f2f23a12-a792-480e-922a-ee8b73dc0310.json +1 -0
  60. package/dist/interface/dashboard/public/_nuxt/builds/meta/f4e23d88-bf4b-4110-976f-4e7a2c538e98.json +1 -0
  61. package/dist/interface/dashboard/public/_nuxt/builds/meta/f6503b83-d731-40f8-9110-c1599663b3ba.json +1 -0
  62. package/dist/interface/dashboard/public/_nuxt/builds/meta/fb00efc4-219c-4174-8827-fe876fe21945.json +1 -0
  63. package/dist/interface/dashboard/public/_nuxt/builds/meta/feac6d04-6bc5-4fa4-a241-79e897d7f8c1.json +1 -0
  64. package/dist/interface/dashboard/public/_nuxt/entry.BSUaoqsu.css +1 -0
  65. package/dist/interface/dashboard/public/_nuxt/index.BH5Gbe6q.css +1 -0
  66. package/dist/interface/dashboard/public/_nuxt/{index.CYscfxlP.css → index.CEZKOBlO.css} +1 -1
  67. package/dist/interface/dashboard/public/_nuxt/index.TQmbXYdV.css +1 -0
  68. package/dist/interface/dashboard/public/_nuxt/{B7h8tXDC.js → iov8YEuI.js} +1 -1
  69. package/dist/interface/dashboard/public/_nuxt/{C2IKXOYU.js → qq1iUjth.js} +1 -1
  70. package/dist/interface/dashboard/public/index.html +1 -1
  71. package/dist/interface/mcp/server.js +0 -12
  72. package/dist/interface/mcp/server.js.map +1 -1
  73. package/dist/interface/mcp/tools/{add-contact.d.ts → bulk-add-cvs.d.ts} +1 -1
  74. package/dist/interface/mcp/tools/bulk-add-cvs.js +28 -0
  75. package/dist/interface/mcp/tools/bulk-add-cvs.js.map +1 -0
  76. package/dist/interface/mcp/tools/filter-candidates.js +4 -2
  77. package/dist/interface/mcp/tools/filter-candidates.js.map +1 -1
  78. package/dist/interface/mcp/types.d.ts +0 -2
  79. package/package.json +71 -72
  80. package/dist/application/ports/calendar-service.d.ts +0 -42
  81. package/dist/application/ports/calendar-service.js +0 -2
  82. package/dist/application/ports/calendar-service.js.map +0 -1
  83. package/dist/infrastructure/calendar/google-calendar.service.d.ts +0 -24
  84. package/dist/infrastructure/calendar/google-calendar.service.js +0 -353
  85. package/dist/infrastructure/calendar/google-calendar.service.js.map +0 -1
  86. package/dist/infrastructure/calendar/index.d.ts +0 -1
  87. package/dist/infrastructure/calendar/index.js +0 -2
  88. package/dist/infrastructure/calendar/index.js.map +0 -1
  89. package/dist/interface/dashboard/public/_nuxt/-_rMc6Se.js +0 -401
  90. package/dist/interface/dashboard/public/_nuxt/B4WYmHkq.js +0 -1
  91. package/dist/interface/dashboard/public/_nuxt/BeosaLTc.js +0 -1
  92. package/dist/interface/dashboard/public/_nuxt/BgeIs7YY.js +0 -412
  93. package/dist/interface/dashboard/public/_nuxt/Br9ERNIk.js +0 -401
  94. package/dist/interface/dashboard/public/_nuxt/CMEleUsa.js +0 -1
  95. package/dist/interface/dashboard/public/_nuxt/CVllyrh5.js +0 -1
  96. package/dist/interface/dashboard/public/_nuxt/CXsAVqtn.js +0 -1
  97. package/dist/interface/dashboard/public/_nuxt/D0GfmhnA.js +0 -412
  98. package/dist/interface/dashboard/public/_nuxt/D6QLZU2u.js +0 -1
  99. package/dist/interface/dashboard/public/_nuxt/D7CcqX9g.js +0 -412
  100. package/dist/interface/dashboard/public/_nuxt/DGNE26xE.js +0 -1
  101. package/dist/interface/dashboard/public/_nuxt/DP7mgmwO.js +0 -1
  102. package/dist/interface/dashboard/public/_nuxt/DPvkvsJV.js +0 -1
  103. package/dist/interface/dashboard/public/_nuxt/DxJl84Er.js +0 -1
  104. package/dist/interface/dashboard/public/_nuxt/JwuJcHj8.js +0 -1
  105. package/dist/interface/dashboard/public/_nuxt/XEtfQxBf.js +0 -1
  106. package/dist/interface/dashboard/public/_nuxt/bQmPafrB.js +0 -1
  107. package/dist/interface/dashboard/public/_nuxt/builds/meta/055843bb-5e41-4bc3-b42b-417d89074bec.json +0 -1
  108. package/dist/interface/dashboard/public/_nuxt/builds/meta/0887dec6-b9e4-4d5c-aa20-c4d3743164d1.json +0 -1
  109. package/dist/interface/dashboard/public/_nuxt/builds/meta/131e7c46-6af5-4dbc-a481-1e187b75e916.json +0 -1
  110. package/dist/interface/dashboard/public/_nuxt/builds/meta/20776565-55f5-45a5-9256-34c44a89cabb.json +0 -1
  111. package/dist/interface/dashboard/public/_nuxt/builds/meta/270f5a83-1457-4ae7-9cc9-e677a3d11f3f.json +0 -1
  112. package/dist/interface/dashboard/public/_nuxt/builds/meta/359e6b85-6a49-4c04-9d61-55b27d691ee2.json +0 -1
  113. package/dist/interface/dashboard/public/_nuxt/builds/meta/3d499c69-a6ad-40af-aa0f-3de728bce182.json +0 -1
  114. package/dist/interface/dashboard/public/_nuxt/builds/meta/4a4130b0-8c3a-45a8-b0ec-75fb365382a4.json +0 -1
  115. package/dist/interface/dashboard/public/_nuxt/builds/meta/5b1398f2-12db-4829-bd27-8f6bea84da51.json +0 -1
  116. package/dist/interface/dashboard/public/_nuxt/builds/meta/5f5dc585-4404-4cc1-aed7-f41e599fa82b.json +0 -1
  117. package/dist/interface/dashboard/public/_nuxt/builds/meta/6288f3fe-6fd0-4910-840f-965365a82bbe.json +0 -1
  118. package/dist/interface/dashboard/public/_nuxt/builds/meta/7d22d81c-6f64-4bbf-95cc-7bfaaa0a4e40.json +0 -1
  119. package/dist/interface/dashboard/public/_nuxt/builds/meta/88c871e1-0450-4184-8097-9b16d5055c91.json +0 -1
  120. package/dist/interface/dashboard/public/_nuxt/builds/meta/8d4cac7e-e9ef-4e89-9b6e-f688d6c878c0.json +0 -1
  121. package/dist/interface/dashboard/public/_nuxt/builds/meta/a6dffe72-f4cc-4c31-aa18-893d6b1f925a.json +0 -1
  122. package/dist/interface/dashboard/public/_nuxt/builds/meta/ac99623a-06e9-4b63-975f-d2bdc89c09c0.json +0 -1
  123. package/dist/interface/dashboard/public/_nuxt/builds/meta/ae588cf0-9aba-4273-90ff-7dba058efdbb.json +0 -1
  124. package/dist/interface/dashboard/public/_nuxt/builds/meta/b2c71ec3-fe3e-4002-8e4c-c70c755ffa47.json +0 -1
  125. package/dist/interface/dashboard/public/_nuxt/builds/meta/b5e2b874-04ff-45e9-812e-19ff99dedd2b.json +0 -1
  126. package/dist/interface/dashboard/public/_nuxt/builds/meta/b66d956d-5fb7-4cb6-a107-1ff18fa416e8.json +0 -1
  127. package/dist/interface/dashboard/public/_nuxt/builds/meta/bb377d8b-070b-490b-89de-8b16bf942832.json +0 -1
  128. package/dist/interface/dashboard/public/_nuxt/builds/meta/bce1d1a3-5447-4650-a9d7-0ef8860fe4cd.json +0 -1
  129. package/dist/interface/dashboard/public/_nuxt/builds/meta/c0c615e1-5140-47a4-b69b-45cd18b1bd53.json +0 -1
  130. package/dist/interface/dashboard/public/_nuxt/builds/meta/c8f77a43-342e-4c12-b54f-a5a303d0bfc1.json +0 -1
  131. package/dist/interface/dashboard/public/_nuxt/builds/meta/dcd6fa82-0beb-4b20-a2e0-bc4e6105f567.json +0 -1
  132. package/dist/interface/dashboard/public/_nuxt/builds/meta/dd11345e-76cc-4eda-8846-6955403f11f4.json +0 -1
  133. package/dist/interface/dashboard/public/_nuxt/builds/meta/e0401d8c-cb34-406e-b220-bbb78db509ed.json +0 -1
  134. package/dist/interface/dashboard/public/_nuxt/builds/meta/e3b88d80-27cc-46a4-aa8c-5eb9f2b1afe4.json +0 -1
  135. package/dist/interface/dashboard/public/_nuxt/builds/meta/edf56071-c990-47a9-adea-2c94846f4652.json +0 -1
  136. package/dist/interface/dashboard/public/_nuxt/builds/meta/f2781c1c-3867-4fd2-a6bb-b35695221f0d.json +0 -1
  137. package/dist/interface/dashboard/public/_nuxt/builds/meta/f2cd9466-7680-4df3-88a7-7b7428a61966.json +0 -1
  138. package/dist/interface/dashboard/public/_nuxt/entry.BdLSmlNR.css +0 -1
  139. package/dist/interface/dashboard/public/_nuxt/entry.CCPYWN-f.css +0 -1
  140. package/dist/interface/dashboard/public/_nuxt/entry.u_d2fXHa.css +0 -1
  141. package/dist/interface/dashboard/public/_nuxt/index.B4sfIgIL.css +0 -1
  142. package/dist/interface/dashboard/public/_nuxt/index.C1uHm-Vo.css +0 -1
  143. package/dist/interface/dashboard/public/_nuxt/index.DCAZalej.css +0 -1
  144. package/dist/interface/dashboard/public/_nuxt/index.Dj1j62L8.css +0 -1
  145. package/dist/interface/dashboard/public/_nuxt/index.xroKz4Z7.css +0 -1
  146. package/dist/interface/mcp/tools/add-contact.js +0 -43
  147. package/dist/interface/mcp/tools/add-contact.js.map +0 -1
  148. package/dist/interface/mcp/tools/authorize-calendar.d.ts +0 -3
  149. package/dist/interface/mcp/tools/authorize-calendar.js +0 -20
  150. package/dist/interface/mcp/tools/authorize-calendar.js.map +0 -1
  151. package/dist/interface/mcp/tools/create-calendar-event.d.ts +0 -3
  152. package/dist/interface/mcp/tools/create-calendar-event.js +0 -46
  153. package/dist/interface/mcp/tools/create-calendar-event.js.map +0 -1
package/README.md CHANGED
@@ -30,9 +30,8 @@ src/
30
30
  | unpdf | PDF text extraction |
31
31
  | mammoth | DOCX text extraction |
32
32
  | Tesseract.js | OCR for image-based PDFs |
33
- | Google Calendar + Contacts API | Interview scheduling & contact sync (OAuth2, zero dependencies) |
34
33
 
35
- ## MCP Tools (30)
34
+ ## MCP Tools (27)
36
35
 
37
36
  ### CV Management
38
37
 
@@ -80,16 +79,6 @@ src/
80
79
 
81
80
  **Pipeline statuses:** `new` → `contacted` → `unreachable` · `not_interested` · `interview_scheduled` → `no_show` · `interviewed` → `rejected` · `offer_sent` → `hired`
82
81
 
83
- ### Google Integration
84
-
85
- | Tool | Description |
86
- |---|---|
87
- | `authorize_google` | OAuth2 authorization flow — opens browser for Google consent (one-time, covers Calendar + Contacts) |
88
- | `create_calendar_event` | Create events for interviews, meetings, and follow-ups |
89
- | `add_contact` | Save candidate contact info to Google Contacts with optional group/label |
90
-
91
- > Google tools only appear when `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` are configured. Enable **People API** and **Calendar API** in Google Cloud Console.
92
-
93
82
  ### System
94
83
 
95
84
  | Tool | Description |
@@ -201,7 +190,6 @@ pnpm build
201
190
 
202
191
  - Node.js >= 22
203
192
  - OpenAI API Key
204
- - Google Cloud OAuth2 credentials (optional, for calendar integration)
205
193
 
206
194
  ## MCP Configuration
207
195
 
@@ -212,8 +200,6 @@ claude mcp add hirebase -s user \
212
200
  -e OPENAI_API_KEY=sk-your-key \
213
201
  -e EMBEDDING_MODEL=text-embedding-3-small \
214
202
  -e DASHBOARD_ENABLED=true \
215
- -e GOOGLE_CLIENT_ID=your-client-id \
216
- -e GOOGLE_CLIENT_SECRET=your-client-secret \
217
203
  -- npx -y @dolusoft/hirebase-mcp
218
204
  ```
219
205
 
@@ -230,8 +216,6 @@ Add to your Claude Desktop config (`claude_desktop_config.json`):
230
216
  "env": {
231
217
  "OPENAI_API_KEY": "sk-your-key",
232
218
  "LANCEDB_PATH": "./data/lancedb",
233
- "GOOGLE_CLIENT_ID": "your-client-id",
234
- "GOOGLE_CLIENT_SECRET": "your-client-secret"
235
219
  }
236
220
  }
237
221
  }
@@ -248,8 +232,6 @@ Add to your Claude Desktop config (`claude_desktop_config.json`):
248
232
  | `EXTRACTION_MODEL` | `gpt-5-mini` | CV extraction model |
249
233
  | `DASHBOARD_ENABLED` | `true` | Enable real-time dashboard |
250
234
  | `DASHBOARD_PORT` | `0` (random) | Dashboard server port |
251
- | `GOOGLE_CLIENT_ID` | — | Google OAuth2 client ID (for calendar) |
252
- | `GOOGLE_CLIENT_SECRET` | — | Google OAuth2 client secret (for calendar) |
253
235
 
254
236
  ## Key Design Decisions
255
237
 
@@ -261,7 +243,6 @@ Add to your Claude Desktop config (`claude_desktop_config.json`):
261
243
  - **Section-level chunking** — each work experience is a separate chunk for granular matching
262
244
  - **OCR fallback** — image-based PDFs automatically processed with Tesseract.js
263
245
  - **Composite scoring** — matching combines semantic, skill-based, and loyalty signals
264
- - **Google Calendar** — zero-dependency OAuth2 + Calendar API using Node.js built-in `fetch`
265
246
 
266
247
  ## License
267
248
 
@@ -1,4 +1,5 @@
1
1
  export interface FilterInput {
2
+ name?: string;
2
3
  skills?: string[];
3
4
  location?: string;
4
5
  minExperienceYears?: number;
@@ -0,0 +1,14 @@
1
+ import type { Candidate } from '../../domain/entities/candidate.js';
2
+ import { AddCvUseCase } from './add-cv.js';
3
+ export interface BulkAddResult {
4
+ succeeded: Candidate[];
5
+ failed: {
6
+ file: string;
7
+ error: string;
8
+ }[];
9
+ }
10
+ export declare class BulkAddCvsUseCase {
11
+ private addCvUseCase;
12
+ constructor(addCvUseCase: AddCvUseCase);
13
+ execute(directoryPath: string): Promise<BulkAddResult>;
14
+ }
@@ -0,0 +1,32 @@
1
+ import { readdir } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ export class BulkAddCvsUseCase {
4
+ addCvUseCase;
5
+ constructor(addCvUseCase) {
6
+ this.addCvUseCase = addCvUseCase;
7
+ }
8
+ async execute(directoryPath) {
9
+ const entries = await readdir(directoryPath);
10
+ const cvFiles = entries.filter((f) => {
11
+ const ext = f.toLowerCase().split('.').pop();
12
+ return ext === 'pdf' || ext === 'docx';
13
+ });
14
+ const succeeded = [];
15
+ const failed = [];
16
+ for (const file of cvFiles) {
17
+ const filePath = join(directoryPath, file);
18
+ try {
19
+ const candidate = await this.addCvUseCase.execute(filePath);
20
+ succeeded.push(candidate);
21
+ }
22
+ catch (error) {
23
+ failed.push({
24
+ file,
25
+ error: error instanceof Error ? error.message : String(error),
26
+ });
27
+ }
28
+ }
29
+ return { succeeded, failed };
30
+ }
31
+ }
32
+ //# sourceMappingURL=bulk-add-cvs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-add-cvs.js","sourceRoot":"","sources":["../../../src/application/use-cases/bulk-add-cvs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,MAAM,OAAO,iBAAiB;IACR;IAApB,YAAoB,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAG,CAAC;IAElD,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACnC,MAAM,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7C,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAgB,EAAE,CAAC;QAClC,MAAM,MAAM,GAAsC,EAAE,CAAC;QAErD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC5D,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;CACF"}
@@ -6,6 +6,9 @@ export class FilterCandidatesUseCase {
6
6
  }
7
7
  async execute(input) {
8
8
  const conditions = [];
9
+ if (input.name) {
10
+ conditions.push(`name LIKE '%${escapeFilterValue(input.name)}%'`);
11
+ }
9
12
  if (input.skills && input.skills.length > 0) {
10
13
  for (const skill of input.skills) {
11
14
  conditions.push(`skills LIKE '%${escapeFilterValue(skill)}%'`);
@@ -1 +1 @@
1
- {"version":3,"file":"filter-candidates.js","sourceRoot":"","sources":["../../../src/application/use-cases/filter-candidates.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,OAAO,uBAAuB;IACd;IAApB,YAAoB,aAAmC;QAAnC,kBAAa,GAAb,aAAa,CAAsB;IAAG,CAAC;IAE3D,KAAK,CAAC,OAAO,CAAC,KAAkB;QAC9B,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,oBAAoB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,eAAe,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChE,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAEO,SAAS,CAAC,CAA8J;QAC9K,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK;YACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"filter-candidates.js","sourceRoot":"","sources":["../../../src/application/use-cases/filter-candidates.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,MAAM,OAAO,uBAAuB;IACd;IAApB,YAAoB,aAAmC;QAAnC,kBAAa,GAAb,aAAa,CAAsB;IAAG,CAAC;IAE3D,KAAK,CAAC,OAAO,CAAC,KAAkB;QAC9B,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,eAAe,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjC,UAAU,CAAC,IAAI,CAAC,iBAAiB,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CAAC,mBAAmB,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBACnC,UAAU,CAAC,IAAI,CAAC,oBAAoB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,eAAe,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChE,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAEO,SAAS,CAAC,CAA8J;QAC9K,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK;YACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ;YAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,eAAe,EAAE,CAAC,CAAC,eAAe;YAClC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC;IACJ,CAAC;CACF"}
@@ -5,7 +5,5 @@ export interface AppConfig {
5
5
  extractionModel: string;
6
6
  dashboardEnabled: boolean;
7
7
  dashboardPort: number;
8
- googleClientId?: string;
9
- googleClientSecret?: string;
10
8
  }
11
9
  export declare function loadConfig(): AppConfig;
@@ -10,8 +10,6 @@ export function loadConfig() {
10
10
  extractionModel: process.env.EXTRACTION_MODEL ?? 'gpt-5-mini',
11
11
  dashboardEnabled: process.env.DASHBOARD_ENABLED !== 'false',
12
12
  dashboardPort: parseInt(process.env.DASHBOARD_PORT ?? '0', 10),
13
- googleClientId: process.env.GOOGLE_CLIENT_ID,
14
- googleClientSecret: process.env.GOOGLE_CLIENT_SECRET,
15
13
  };
16
14
  }
17
15
  //# sourceMappingURL=app-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../src/infrastructure/config/app-config.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,UAAU;IACxB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAChD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,YAAY;QACZ,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,gBAAgB;QACzD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,wBAAwB,EAAE,gCAAgC;QACzG,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,YAAY;QAC7D,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,OAAO;QAC3D,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC;QAC9D,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC5C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;KACrD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../../../src/infrastructure/config/app-config.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,UAAU;IACxB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAChD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,YAAY;QACZ,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,gBAAgB;QACzD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,wBAAwB,EAAE,gCAAgC;QACzG,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,YAAY;QAC7D,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,OAAO;QAC3D,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,EAAE,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC"}
File without changes
@@ -0,0 +1 @@
1
+ export declare function getDashboardHtml(port: number): string;