hirebase-mcp 1.0.1 → 1.0.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/dist/infrastructure/ai/openai-structured-extractor.js +55 -38
- package/dist/infrastructure/ai/openai-structured-extractor.js.map +1 -1
- package/dist/infrastructure/config/app-config.d.ts +2 -0
- package/dist/infrastructure/config/app-config.js +2 -0
- package/dist/infrastructure/config/app-config.js.map +1 -1
- package/dist/interface/dashboard/event-bus.d.ts +7 -0
- package/dist/interface/dashboard/event-bus.js +16 -0
- package/dist/interface/dashboard/event-bus.js.map +1 -0
- package/dist/interface/dashboard/events.d.ts +22 -0
- package/dist/interface/dashboard/events.js +2 -0
- package/dist/interface/dashboard/events.js.map +1 -0
- package/dist/interface/dashboard/html.d.ts +1 -0
- package/dist/interface/dashboard/html.js +1007 -0
- package/dist/interface/dashboard/html.js.map +1 -0
- package/dist/interface/dashboard/server.d.ts +6 -0
- package/dist/interface/dashboard/server.js +35 -0
- package/dist/interface/dashboard/server.js.map +1 -0
- package/dist/interface/dashboard/tool-wrapper.d.ts +4 -0
- package/dist/interface/dashboard/tool-wrapper.js +93 -0
- package/dist/interface/dashboard/tool-wrapper.js.map +1 -0
- package/dist/interface/mcp/server.js +8 -0
- package/dist/interface/mcp/server.js.map +1 -1
- package/package.json +6 -3
|
@@ -4,48 +4,48 @@ import { zodTextFormat } from 'openai/helpers/zod';
|
|
|
4
4
|
import { ExtractionError } from '../../shared/errors/index.js';
|
|
5
5
|
const CvExtractionSchema = z.object({
|
|
6
6
|
name: z.string(),
|
|
7
|
-
email: z.string().
|
|
8
|
-
phone: z.string().
|
|
9
|
-
location: z.string().
|
|
10
|
-
summary: z.string().
|
|
7
|
+
email: z.string().nullable(),
|
|
8
|
+
phone: z.string().nullable(),
|
|
9
|
+
location: z.string().nullable(),
|
|
10
|
+
summary: z.string().nullable(),
|
|
11
11
|
experience: z.array(z.object({
|
|
12
12
|
company: z.string(),
|
|
13
13
|
position: z.string(),
|
|
14
|
-
start_date: z.string().
|
|
15
|
-
end_date: z.string().
|
|
16
|
-
description: z.string().
|
|
14
|
+
start_date: z.string().nullable(),
|
|
15
|
+
end_date: z.string().nullable(),
|
|
16
|
+
description: z.string().nullable(),
|
|
17
17
|
})),
|
|
18
18
|
education: z.array(z.object({
|
|
19
19
|
institution: z.string(),
|
|
20
|
-
degree: z.string().
|
|
21
|
-
field: z.string().
|
|
22
|
-
start_date: z.string().
|
|
23
|
-
end_date: z.string().
|
|
20
|
+
degree: z.string().nullable(),
|
|
21
|
+
field: z.string().nullable(),
|
|
22
|
+
start_date: z.string().nullable(),
|
|
23
|
+
end_date: z.string().nullable(),
|
|
24
24
|
})),
|
|
25
25
|
skills: z.array(z.string()),
|
|
26
26
|
languages: z.array(z.object({
|
|
27
27
|
language: z.string(),
|
|
28
|
-
level: z.string().
|
|
28
|
+
level: z.string().nullable(),
|
|
29
29
|
})),
|
|
30
30
|
certifications: z.array(z.object({
|
|
31
31
|
name: z.string(),
|
|
32
|
-
issuer: z.string().
|
|
33
|
-
date: z.string().
|
|
32
|
+
issuer: z.string().nullable(),
|
|
33
|
+
date: z.string().nullable(),
|
|
34
34
|
})),
|
|
35
35
|
projects: z.array(z.object({
|
|
36
36
|
name: z.string(),
|
|
37
|
-
description: z.string().
|
|
38
|
-
technologies: z.array(z.string()).
|
|
37
|
+
description: z.string().nullable(),
|
|
38
|
+
technologies: z.array(z.string()).nullable(),
|
|
39
39
|
})),
|
|
40
40
|
links: z
|
|
41
41
|
.object({
|
|
42
|
-
linkedin: z.string().
|
|
43
|
-
github: z.string().
|
|
44
|
-
portfolio: z.string().
|
|
45
|
-
other: z.array(z.string()).
|
|
42
|
+
linkedin: z.string().nullable(),
|
|
43
|
+
github: z.string().nullable(),
|
|
44
|
+
portfolio: z.string().nullable(),
|
|
45
|
+
other: z.array(z.string()).nullable(),
|
|
46
46
|
})
|
|
47
|
-
.
|
|
48
|
-
total_experience_years: z.number().
|
|
47
|
+
.nullable(),
|
|
48
|
+
total_experience_years: z.number().nullable(),
|
|
49
49
|
});
|
|
50
50
|
const SYSTEM_PROMPT = `You are a CV/resume parser. Extract structured information from the following CV text.
|
|
51
51
|
Be thorough and accurate. If a field is not present in the CV, omit it.
|
|
@@ -85,32 +85,49 @@ export class OpenAiStructuredExtractor {
|
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
mapToExtractedCv(parsed) {
|
|
88
|
+
const n = (v) => v ?? undefined;
|
|
88
89
|
return {
|
|
89
90
|
name: parsed.name,
|
|
90
|
-
email: parsed.email,
|
|
91
|
-
phone: parsed.phone,
|
|
92
|
-
location: parsed.location,
|
|
93
|
-
summary: parsed.summary,
|
|
91
|
+
email: n(parsed.email),
|
|
92
|
+
phone: n(parsed.phone),
|
|
93
|
+
location: n(parsed.location),
|
|
94
|
+
summary: n(parsed.summary),
|
|
94
95
|
experience: parsed.experience.map((e) => ({
|
|
95
96
|
company: e.company,
|
|
96
97
|
position: e.position,
|
|
97
|
-
startDate: e.start_date,
|
|
98
|
-
endDate: e.end_date,
|
|
99
|
-
description: e.description,
|
|
98
|
+
startDate: n(e.start_date),
|
|
99
|
+
endDate: n(e.end_date),
|
|
100
|
+
description: n(e.description),
|
|
100
101
|
})),
|
|
101
102
|
education: parsed.education.map((e) => ({
|
|
102
103
|
institution: e.institution,
|
|
103
|
-
degree: e.degree,
|
|
104
|
-
field: e.field,
|
|
105
|
-
startDate: e.start_date,
|
|
106
|
-
endDate: e.end_date,
|
|
104
|
+
degree: n(e.degree),
|
|
105
|
+
field: n(e.field),
|
|
106
|
+
startDate: n(e.start_date),
|
|
107
|
+
endDate: n(e.end_date),
|
|
107
108
|
})),
|
|
108
109
|
skills: parsed.skills,
|
|
109
|
-
languages: parsed.languages
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
110
|
+
languages: parsed.languages.map((l) => ({
|
|
111
|
+
language: l.language,
|
|
112
|
+
level: n(l.level),
|
|
113
|
+
})),
|
|
114
|
+
certifications: parsed.certifications.map((c) => ({
|
|
115
|
+
name: c.name,
|
|
116
|
+
issuer: n(c.issuer),
|
|
117
|
+
date: n(c.date),
|
|
118
|
+
})),
|
|
119
|
+
projects: parsed.projects.map((p) => ({
|
|
120
|
+
name: p.name,
|
|
121
|
+
description: n(p.description),
|
|
122
|
+
technologies: n(p.technologies),
|
|
123
|
+
})),
|
|
124
|
+
links: parsed.links ? {
|
|
125
|
+
linkedin: n(parsed.links.linkedin),
|
|
126
|
+
github: n(parsed.links.github),
|
|
127
|
+
portfolio: n(parsed.links.portfolio),
|
|
128
|
+
other: n(parsed.links.other),
|
|
129
|
+
} : undefined,
|
|
130
|
+
totalExperienceYears: n(parsed.total_experience_years),
|
|
114
131
|
};
|
|
115
132
|
}
|
|
116
133
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-structured-extractor.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/openai-structured-extractor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"openai-structured-extractor.js","sourceRoot":"","sources":["../../../src/infrastructure/ai/openai-structured-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ export function loadConfig() {
|
|
|
8
8
|
lancedbPath: process.env.LANCEDB_PATH ?? './data/lancedb',
|
|
9
9
|
embeddingModel: process.env.EMBEDDING_MODEL ?? 'text-embedding-3-large',
|
|
10
10
|
extractionModel: process.env.EXTRACTION_MODEL ?? 'gpt-5-mini',
|
|
11
|
+
dashboardEnabled: process.env.DASHBOARD_ENABLED !== 'false',
|
|
12
|
+
dashboardPort: parseInt(process.env.DASHBOARD_PORT ?? '6789', 10),
|
|
11
13
|
};
|
|
12
14
|
}
|
|
13
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":"
|
|
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;QACvE,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,MAAM,EAAE,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
import type { DashboardEvent } from './events.js';
|
|
3
|
+
export declare class DashboardEventBus extends EventEmitter {
|
|
4
|
+
private buffer;
|
|
5
|
+
emit(event: 'dashboard-event', data: DashboardEvent): boolean;
|
|
6
|
+
getHistory(): DashboardEvent[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventEmitter } from 'node:events';
|
|
2
|
+
const MAX_BUFFER = 100;
|
|
3
|
+
export class DashboardEventBus extends EventEmitter {
|
|
4
|
+
buffer = [];
|
|
5
|
+
emit(event, data) {
|
|
6
|
+
this.buffer.push(data);
|
|
7
|
+
if (this.buffer.length > MAX_BUFFER) {
|
|
8
|
+
this.buffer.shift();
|
|
9
|
+
}
|
|
10
|
+
return super.emit(event, data);
|
|
11
|
+
}
|
|
12
|
+
getHistory() {
|
|
13
|
+
return [...this.buffer];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/interface/dashboard/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACzC,MAAM,GAAqB,EAAE,CAAC;IAEtC,IAAI,CAAC,KAAwB,EAAE,IAAoB;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface ToolCallStartEvent {
|
|
2
|
+
type: 'tool_call_start';
|
|
3
|
+
id: string;
|
|
4
|
+
tool: string;
|
|
5
|
+
args: Record<string, unknown>;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ToolCallEndEvent {
|
|
9
|
+
type: 'tool_call_end';
|
|
10
|
+
id: string;
|
|
11
|
+
tool: string;
|
|
12
|
+
durationMs: number;
|
|
13
|
+
success: boolean;
|
|
14
|
+
resultPreview: string;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
export interface StatsUpdateEvent {
|
|
18
|
+
type: 'stats_update';
|
|
19
|
+
stats: Record<string, unknown>;
|
|
20
|
+
timestamp: number;
|
|
21
|
+
}
|
|
22
|
+
export type DashboardEvent = ToolCallStartEvent | ToolCallEndEvent | StatsUpdateEvent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/interface/dashboard/events.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getDashboardHtml(port: number): string;
|