@dolusoft/hirebase-mcp 1.3.4 → 1.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -2
- package/dist/infrastructure/persistence/database.js +15 -1
- package/dist/infrastructure/persistence/database.js.map +1 -1
- package/dist/interface/cli/index.js +19 -2
- package/dist/interface/cli/index.js.map +1 -1
- package/dist/interface/dashboard/public/200.html +1 -1
- package/dist/interface/dashboard/public/404.html +1 -1
- package/dist/interface/dashboard/public/_nuxt/builds/latest.json +1 -1
- package/dist/interface/dashboard/public/_nuxt/builds/meta/a4cd5ce8-79f3-42cd-99a6-ddc9cd1696d0.json +1 -0
- package/dist/interface/dashboard/public/_nuxt/builds/meta/c24c5825-f907-4b91-805a-a6f061aae9ee.json +1 -0
- package/dist/interface/dashboard/public/_nuxt/builds/meta/c344ef44-e491-4e51-ae81-c21dfe2317bb.json +1 -0
- package/dist/interface/dashboard/public/index.html +1 -1
- package/dist/interface/mcp/server.js +15 -1
- package/dist/interface/mcp/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ src/
|
|
|
31
31
|
| mammoth | DOCX text extraction |
|
|
32
32
|
| Tesseract.js | OCR for image-based PDFs |
|
|
33
33
|
|
|
34
|
-
## MCP Tools (
|
|
34
|
+
## MCP Tools (38)
|
|
35
35
|
|
|
36
36
|
### CV Management
|
|
37
37
|
|
|
@@ -45,6 +45,7 @@ src/
|
|
|
45
45
|
| `get_cv_versions` | Version history |
|
|
46
46
|
| `list_cvs` | Paginated candidate list with sorting |
|
|
47
47
|
| `manage_tags` | Add/remove/list tags |
|
|
48
|
+
| `check_duplicate_candidate` | Check if a candidate already exists by name or email before importing |
|
|
48
49
|
|
|
49
50
|
### Search & Matching
|
|
50
51
|
|
|
@@ -53,6 +54,7 @@ src/
|
|
|
53
54
|
| `semantic_search` | Vector similarity search with optional section filter |
|
|
54
55
|
| `filter_candidates` | Structured filtering (skills, location, experience, languages, tags) |
|
|
55
56
|
| `match_candidates` | Composite scoring: semantic similarity + skill overlap + loyalty factor |
|
|
57
|
+
| `compare_candidates` | Compare 2–5 candidates side by side, optionally with job skill match scores |
|
|
56
58
|
| `export_results` | Export as JSON or CSV |
|
|
57
59
|
|
|
58
60
|
### Job Posting Management
|
|
@@ -65,6 +67,14 @@ src/
|
|
|
65
67
|
| `update_job_posting` | Update existing job posting |
|
|
66
68
|
| `delete_job_posting` | Delete a job posting |
|
|
67
69
|
|
|
70
|
+
### Reference CVs
|
|
71
|
+
|
|
72
|
+
| Tool | Description |
|
|
73
|
+
|---|---|
|
|
74
|
+
| `add_reference_cv` | Mark a candidate as a reference/benchmark CV for a job posting |
|
|
75
|
+
| `list_reference_cvs` | List all reference CVs for a job posting |
|
|
76
|
+
| `remove_reference_cv` | Remove a reference CV from a job posting |
|
|
77
|
+
|
|
68
78
|
### Recruitment Pipeline
|
|
69
79
|
|
|
70
80
|
| Tool | Description |
|
|
@@ -74,17 +84,33 @@ src/
|
|
|
74
84
|
| `add_pipeline_note` | Add notes, call attempts, or interview records |
|
|
75
85
|
| `set_pending_action` | Track pending actions with due dates and owner (us/candidate) |
|
|
76
86
|
| `get_pipeline` | Full pipeline view for a job posting |
|
|
87
|
+
| `get_pipeline_candidates` | Lightweight list of candidates in a pipeline (ID, name, status only) |
|
|
77
88
|
| `get_candidate_history` | Candidate's recruitment history across all postings |
|
|
78
89
|
| `get_pending_actions` | All overdue and upcoming pending actions |
|
|
79
90
|
|
|
80
91
|
**Pipeline statuses:** `new` → `contacted` → `unreachable` · `not_interested` · `interview_scheduled` → `no_show` · `interviewed` → `rejected` · `offer_sent` → `hired`
|
|
81
92
|
|
|
93
|
+
### Screening
|
|
94
|
+
|
|
95
|
+
| Tool | Description |
|
|
96
|
+
|---|---|
|
|
97
|
+
| `get_screening_history` | Shortlisted, screened out, and in-pipeline candidates for a job posting |
|
|
98
|
+
| `generate_screening_report` | Summary report with statistics, shortlisted, screened out, and pending candidates |
|
|
99
|
+
|
|
100
|
+
### Call Batches
|
|
101
|
+
|
|
102
|
+
| Tool | Description |
|
|
103
|
+
|---|---|
|
|
104
|
+
| `create_call_batch` | Create a call batch: assign candidates to a person for calling |
|
|
105
|
+
| `get_call_batch_status` | Status of a call batch: candidates, phone numbers, and call outcomes |
|
|
106
|
+
| `update_call_outcome` | Update call outcome: `pending`, `reached`, or `unreachable` |
|
|
107
|
+
|
|
82
108
|
### System
|
|
83
109
|
|
|
84
110
|
| Tool | Description |
|
|
85
111
|
|---|---|
|
|
86
112
|
| `get_stats` | Database statistics (candidates, skills, locations, etc.) |
|
|
87
|
-
| `get_server_status` | Server
|
|
113
|
+
| `get_server_status` | Server version, dashboard URL, connected clients, config |
|
|
88
114
|
| `reset_database` | Drop and recreate all tables |
|
|
89
115
|
|
|
90
116
|
## How It Works
|
|
@@ -18,7 +18,21 @@ export async function getDatabase(dbPath) {
|
|
|
18
18
|
export async function getOrCreateTable(db, tableName, seedData) {
|
|
19
19
|
const tableNames = await db.tableNames();
|
|
20
20
|
if (tableNames.includes(tableName)) {
|
|
21
|
-
|
|
21
|
+
try {
|
|
22
|
+
return await db.openTable(tableName);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// Table is listed but can't be opened (e.g. uncommitted manifest from a crashed write).
|
|
26
|
+
// Drop and recreate from seed data.
|
|
27
|
+
try {
|
|
28
|
+
await db.dropTable(tableName);
|
|
29
|
+
}
|
|
30
|
+
catch { }
|
|
31
|
+
if (seedData && seedData.length > 0) {
|
|
32
|
+
return db.createTable(tableName, seedData);
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Table "${tableName}" is corrupted and has no seed data for recovery`);
|
|
35
|
+
}
|
|
22
36
|
}
|
|
23
37
|
if (seedData && seedData.length > 0) {
|
|
24
38
|
return db.createTable(tableName, seedData);
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/infrastructure/persistence/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { appendFileSync, mkdirSync } from 'node:fs';
|
|
4
|
+
import { join } from 'node:path';
|
|
3
5
|
import { createServer } from '../mcp/server.js';
|
|
6
|
+
function log(msg) {
|
|
7
|
+
const line = `${new Date().toISOString()} ${msg}\n`;
|
|
8
|
+
process.stderr.write(line);
|
|
9
|
+
try {
|
|
10
|
+
const dir = join(process.cwd(), 'data');
|
|
11
|
+
mkdirSync(dir, { recursive: true });
|
|
12
|
+
appendFileSync(join(dir, 'hirebase.log'), line);
|
|
13
|
+
}
|
|
14
|
+
catch { }
|
|
15
|
+
}
|
|
16
|
+
process.on('unhandledRejection', (reason) => {
|
|
17
|
+
log(`[FATAL] Unhandled rejection: ${reason instanceof Error ? reason.stack : String(reason)}`);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
});
|
|
4
20
|
async function main() {
|
|
21
|
+
log('[INFO] HireBase MCP Server starting...');
|
|
5
22
|
const server = await createServer();
|
|
6
23
|
const transport = new StdioServerTransport();
|
|
7
24
|
await server.connect(transport);
|
|
8
25
|
// Graceful shutdown: when parent process (Claude Code) exits, stdin closes.
|
|
9
26
|
// The dashboard HTTP server keeps the event loop alive, so we must exit explicitly.
|
|
10
27
|
process.stdin.on('end', () => process.exit(0));
|
|
11
|
-
|
|
28
|
+
log('[INFO] HireBase MCP Server started on stdio');
|
|
12
29
|
}
|
|
13
30
|
main().catch((error) => {
|
|
14
|
-
|
|
31
|
+
log(`[FATAL] ${error instanceof Error ? error.stack : String(error)}`);
|
|
15
32
|
process.exit(1);
|
|
16
33
|
});
|
|
17
34
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,4EAA4E;IAC5E,oFAAoF;IACpF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,SAAS,GAAG,CAAC,GAAW;IACtB,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QACxC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,GAAG,CAAC,gCAAgC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,4EAA4E;IAC5E,oFAAoF;IACpF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,GAAG,CAAC,6CAA6C,CAAC,CAAC;AACrD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,GAAG,CAAC,WAAW,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"c344ef44-e491-4e51-ae81-c21dfe2317bb",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773758587808,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"c344ef44-e491-4e51-ae81-c21dfe2317bb",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773758587808,false]</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"id":"
|
|
1
|
+
{"id":"c344ef44-e491-4e51-ae81-c21dfe2317bb","timestamp":1773758579461}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/a4cd5ce8-79f3-42cd-99a6-ddc9cd1696d0.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"a4cd5ce8-79f3-42cd-99a6-ddc9cd1696d0","timestamp":1773758537071,"prerendered":[]}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/c24c5825-f907-4b91-805a-a6f061aae9ee.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"c24c5825-f907-4b91-805a-a6f061aae9ee","timestamp":1773757920286,"prerendered":[]}
|
package/dist/interface/dashboard/public/_nuxt/builds/meta/c344ef44-e491-4e51-ae81-c21dfe2317bb.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id":"c344ef44-e491-4e51-ae81-c21dfe2317bb","timestamp":1773758579461,"prerendered":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"
|
|
1
|
+
<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_nuxt/entry.Cjj6Q9Tz.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FR49ZCl_.js"><script type="module" src="/_nuxt/FR49ZCl_.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"c344ef44-e491-4e51-ae81-c21dfe2317bb",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1773758587808,false]</script></body></html>
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { resolve, dirname } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
2
5
|
import { loadConfig } from '../../infrastructure/config/app-config.js';
|
|
6
|
+
function getVersion() {
|
|
7
|
+
try {
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const pkgPath = resolve(__dirname, '..', '..', '..', 'package.json');
|
|
10
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
11
|
+
return pkg.version ?? 'unknown';
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return 'unknown';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
3
17
|
import { getDatabase, configureVectorDimension } from '../../infrastructure/persistence/database.js';
|
|
4
18
|
import { LanceDbCandidateRepository } from '../../infrastructure/persistence/lancedb-candidate-repository.js';
|
|
5
19
|
import { LanceDbChunkRepository } from '../../infrastructure/persistence/lancedb-chunk-repository.js';
|
|
@@ -89,7 +103,7 @@ export async function createServer() {
|
|
|
89
103
|
};
|
|
90
104
|
const server = new McpServer({
|
|
91
105
|
name: 'hirebase',
|
|
92
|
-
version:
|
|
106
|
+
version: getVersion(),
|
|
93
107
|
});
|
|
94
108
|
registerAddCvTool(server, deps);
|
|
95
109
|
registerUpdateCvTool(server, deps);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/interface/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/interface/mcp/server.ts"],"names":[],"mappings":"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"}
|