careermate 0.1.2 → 0.1.4
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/AGENTS.md +33 -0
- package/LICENSE +21 -0
- package/README.md +3 -1
- package/apps/web/public/pages/documents.js +7 -2
- package/apps/web/public/pages/home.js +4 -7
- package/apps/web/public/pages/jobs.js +1 -5
- package/apps/web/public/pages/profile.js +3 -3
- package/apps/web/public/styles.css +7 -2
- package/dist/doctor.mjs +112 -90
- package/dist/install-page/analytics.js +97 -0
- package/dist/install-page/index.html +77 -56
- package/dist/install-page/og.png +0 -0
- package/dist/install-page/robots.txt +4 -0
- package/dist/install-page/sitemap.xml +21 -0
- package/dist/install-page/start.html +13 -10
- package/dist/install-page/style.css +75 -40
- package/dist/mcp.mjs +112 -90
- package/dist/migrate.mjs +95 -82
- package/dist/public/pages/documents.js +7 -2
- package/dist/public/pages/home.js +4 -7
- package/dist/public/pages/jobs.js +1 -5
- package/dist/public/pages/profile.js +3 -3
- package/dist/public/styles.css +7 -2
- package/dist/web.mjs +113 -86
- package/docs/FAQ.md +101 -0
- package/docs/career-os/README.md +76 -0
- package/docs/career-os/eop/cover-letter.md +46 -0
- package/docs/career-os/eop/fit-analysis.md +48 -0
- package/docs/career-os/eop/interview-prep.md +39 -0
- package/docs/career-os/eop/job-analysis.md +42 -0
- package/docs/career-os/eop/profile-extraction.md +37 -0
- package/docs/career-os/knowledge/ats.md +131 -0
- package/docs/career-os/knowledge/company-research.md +137 -0
- package/docs/career-os/knowledge/cover-letter.md +135 -0
- package/docs/career-os/knowledge/fit-matching.md +121 -0
- package/docs/career-os/knowledge/human-writing.md +118 -0
- package/docs/career-os/knowledge/interview-behavioral.md +132 -0
- package/docs/career-os/knowledge/interview-technical.md +126 -0
- package/docs/career-os/knowledge/linkedin-profile.md +152 -0
- package/docs/career-os/knowledge/networking-referrals.md +166 -0
- package/docs/career-os/knowledge/offer-evaluation-decision.md +121 -0
- package/docs/career-os/knowledge/onboarding-first-90-days.md +126 -0
- package/docs/career-os/knowledge/portfolio.md +121 -0
- package/docs/career-os/knowledge/recruiter-screen.md +105 -0
- package/docs/career-os/knowledge/rejection-triage-iteration.md +115 -0
- package/docs/career-os/knowledge/resume.md +123 -0
- package/docs/career-os/knowledge/salary-negotiation.md +123 -0
- package/docs/career-os/knowledge/verifiers/ats-compat.md +64 -0
- package/docs/career-os/knowledge/verifiers/consistency.md +61 -0
- package/docs/career-os/knowledge/verifiers/human-voice.md +82 -0
- package/docs/career-os/knowledge/verifiers/recency-staleness.md +72 -0
- package/docs/career-os/knowledge/verifiers/responsiveness-on-target.md +82 -0
- package/docs/career-os/knowledge/verifiers/truthfulness.md +67 -0
- package/package.json +11 -3
- package/packages/db/src/repositories.ts +18 -1
- package/packages/mcp-tools/src/tools.ts +5 -5
- package/packages/parsers/src/documents.ts +13 -1
- package/packages/shared/src/schemas.ts +115 -81
- package/scripts/build-dist.mjs +7 -1
- package/scripts/gen-og.mjs +1 -1
- package/scripts/test.ts +25 -0
- package/scripts/ui-smoke.ts +32 -4
- package/dist/install-page/.omc/state/agent-replay-55a58c0d-bb6e-43ea-8a05-4b6c93b80b34.jsonl +0 -12
- package/dist/install-page/.omc/state/idle-notif-cooldown.json +0 -3
- package/dist/install-page/.omc/state/sessions/55a58c0d-bb6e-43ea-8a05-4b6c93b80b34/mission-state.json +0 -147
- package/dist/install-page/.omc/state/sessions/55a58c0d-bb6e-43ea-8a05-4b6c93b80b34/pre-tool-advisory-throttle.json +0 -22
- package/dist/install-page/.omc/state/sessions/55a58c0d-bb6e-43ea-8a05-4b6c93b80b34/subagent-tracking-state.json +0 -44
- package/docs/ARCHITECTURE.md +0 -208
- package/docs/CHANGES_V1.md +0 -103
- package/docs/DATA_MODEL.md +0 -460
- package/docs/DECISIONS.md +0 -277
- package/docs/DEMO.md +0 -242
- package/docs/ROADMAP.md +0 -135
- package/docs/RUNTIME_DISTRIBUTION_RESEARCH.md +0 -135
- package/docs/TODO.md +0 -57
- package/docs/UX_NOTES.md +0 -247
- package/docs/superpowers/specs/2026-06-16-demo-dashboard-deploy-design.md +0 -64
package/dist/mcp.mjs
CHANGED
|
@@ -92585,29 +92585,42 @@ function isSafeUrl(u) {
|
|
|
92585
92585
|
return !/^[a-z][a-z0-9+.-]*:/i.test(s) || /^(https?:|mailto:)/i.test(s);
|
|
92586
92586
|
}
|
|
92587
92587
|
var UNSAFE_URL_MSG = "javascript: \uAC19\uC740 \uC704\uD5D8\uD55C \uB9C1\uD06C\uB294 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. http(s) \uB9C1\uD06C\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.";
|
|
92588
|
-
var
|
|
92589
|
-
var
|
|
92588
|
+
var MAX_URL = 2e3;
|
|
92589
|
+
var SafeUrl = external_exports.string().min(1).max(MAX_URL).refine(isSafeUrl, { message: UNSAFE_URL_MSG });
|
|
92590
|
+
var SafeUrlOptional = external_exports.string().max(MAX_URL).optional().refine((u) => u == null || u === "" || isSafeUrl(u), { message: UNSAFE_URL_MSG });
|
|
92591
|
+
var MAX_LINE = 500;
|
|
92592
|
+
var MAX_NOTE = 1e4;
|
|
92593
|
+
var MAX_BODY = 2e5;
|
|
92594
|
+
var MAX_ITEM = 2e3;
|
|
92595
|
+
var MAX_ITEMS = 500;
|
|
92596
|
+
var EMPTY_MSG = "\uB0B4\uC6A9\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4(\uACF5\uBC31\uB9CC\uC73C\uB85C\uB294 \uC800\uC7A5\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4).";
|
|
92597
|
+
var reqLine = external_exports.string().trim().min(1).max(MAX_LINE);
|
|
92598
|
+
var optLine = external_exports.string().max(MAX_LINE).optional();
|
|
92599
|
+
var optNote = external_exports.string().max(MAX_NOTE).optional();
|
|
92600
|
+
var optBody = external_exports.string().max(MAX_BODY).optional();
|
|
92601
|
+
var reqBody = external_exports.string().max(MAX_BODY).refine((s) => s.trim().length > 0, { message: EMPTY_MSG });
|
|
92602
|
+
var strList = external_exports.array(external_exports.string().max(MAX_ITEM)).max(MAX_ITEMS);
|
|
92590
92603
|
var baseRecord = {
|
|
92591
92604
|
id,
|
|
92592
92605
|
created_at: isoDateTime,
|
|
92593
92606
|
updated_at: isoDateTime
|
|
92594
92607
|
};
|
|
92595
92608
|
var LinkSchema = external_exports.object({
|
|
92596
|
-
label:
|
|
92609
|
+
label: reqLine,
|
|
92597
92610
|
url: SafeUrl
|
|
92598
92611
|
});
|
|
92599
92612
|
var ProfileInputSchema = external_exports.object({
|
|
92600
|
-
name:
|
|
92601
|
-
email:
|
|
92602
|
-
phone:
|
|
92603
|
-
location:
|
|
92604
|
-
headline: external_exports.string().optional().describe("\uD55C \uC904 \uC18C\uAC1C / \uC9C1\uBB34 \uD0C0\uC774\uD2C0"),
|
|
92605
|
-
summary: external_exports.string().optional().describe("\uC790\uAE30\uC18C\uAC1C \uC694\uC57D"),
|
|
92606
|
-
desired_roles:
|
|
92607
|
-
desired_conditions: external_exports.string().optional().describe("\uD76C\uB9DD \uADFC\uBB34 \uC870\uAC74 (\uC5F0\uBD09, \uC9C0\uC5ED, \uADFC\uBB34\uD615\uD0DC \uB4F1)"),
|
|
92608
|
-
preferred_tone: external_exports.string().optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C \uC120\uD638 \uBB38\uCCB4 (\uC608: \uB2F4\uBC31\uD558\uACE0 \uAD6C\uCCB4\uC801)"),
|
|
92609
|
-
emphasis_points:
|
|
92610
|
-
links: external_exports.array(LinkSchema).optional().describe("\uD3EC\uD2B8\uD3F4\uB9AC\uC624/\uAE43\uD5C8\uBE0C/\uB9C1\uD06C\uB4DC\uC778 \uB4F1")
|
|
92613
|
+
name: reqLine.optional(),
|
|
92614
|
+
email: optLine,
|
|
92615
|
+
phone: optLine,
|
|
92616
|
+
location: optLine,
|
|
92617
|
+
headline: external_exports.string().max(MAX_LINE).optional().describe("\uD55C \uC904 \uC18C\uAC1C / \uC9C1\uBB34 \uD0C0\uC774\uD2C0"),
|
|
92618
|
+
summary: external_exports.string().max(MAX_NOTE).optional().describe("\uC790\uAE30\uC18C\uAC1C \uC694\uC57D"),
|
|
92619
|
+
desired_roles: strList.optional().describe("\uD76C\uB9DD \uC9C1\uBB34"),
|
|
92620
|
+
desired_conditions: external_exports.string().max(MAX_NOTE).optional().describe("\uD76C\uB9DD \uADFC\uBB34 \uC870\uAC74 (\uC5F0\uBD09, \uC9C0\uC5ED, \uADFC\uBB34\uD615\uD0DC \uB4F1)"),
|
|
92621
|
+
preferred_tone: external_exports.string().max(MAX_LINE).optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C \uC120\uD638 \uBB38\uCCB4 (\uC608: \uB2F4\uBC31\uD558\uACE0 \uAD6C\uCCB4\uC801)"),
|
|
92622
|
+
emphasis_points: strList.optional().describe("\uAC15\uC870\uD558\uACE0 \uC2F6\uC740 \uD575\uC2EC \uD3EC\uC778\uD2B8"),
|
|
92623
|
+
links: external_exports.array(LinkSchema).max(MAX_ITEMS).optional().describe("\uD3EC\uD2B8\uD3F4\uB9AC\uC624/\uAE43\uD5C8\uBE0C/\uB9C1\uD06C\uB4DC\uC778 \uB4F1")
|
|
92611
92624
|
});
|
|
92612
92625
|
var ProfileRecordSchema = external_exports.object({
|
|
92613
92626
|
...baseRecord,
|
|
@@ -92624,15 +92637,15 @@ var ProfileRecordSchema = external_exports.object({
|
|
|
92624
92637
|
links: external_exports.array(LinkSchema)
|
|
92625
92638
|
});
|
|
92626
92639
|
var ExperienceInputSchema = external_exports.object({
|
|
92627
|
-
company:
|
|
92628
|
-
role:
|
|
92629
|
-
employment_type: external_exports.string().optional().describe("\uC815\uADDC\uC9C1/\uACC4\uC57D\uC9C1/\uC778\uD134/\uD504\uB9AC\uB79C\uC11C \uB4F1"),
|
|
92630
|
-
start_date: external_exports.string().optional().describe("YYYY-MM \uB610\uB294 YYYY-MM-DD"),
|
|
92631
|
-
end_date: external_exports.string().optional().describe("\uC7AC\uC9C1 \uC911\uC774\uBA74 \uBE44\uC6CC\uB450\uAE30"),
|
|
92640
|
+
company: reqLine,
|
|
92641
|
+
role: optLine,
|
|
92642
|
+
employment_type: external_exports.string().max(MAX_LINE).optional().describe("\uC815\uADDC\uC9C1/\uACC4\uC57D\uC9C1/\uC778\uD134/\uD504\uB9AC\uB79C\uC11C \uB4F1"),
|
|
92643
|
+
start_date: external_exports.string().max(MAX_LINE).optional().describe("YYYY-MM \uB610\uB294 YYYY-MM-DD"),
|
|
92644
|
+
end_date: external_exports.string().max(MAX_LINE).optional().describe("\uC7AC\uC9C1 \uC911\uC774\uBA74 \uBE44\uC6CC\uB450\uAE30"),
|
|
92632
92645
|
is_current: external_exports.boolean().optional(),
|
|
92633
|
-
description:
|
|
92634
|
-
achievements:
|
|
92635
|
-
tech:
|
|
92646
|
+
description: optBody,
|
|
92647
|
+
achievements: strList.optional().describe("\uC131\uACFC/\uC5C5\uC801 (\uC815\uB7C9 \uC9C0\uD45C \uAD8C\uC7A5)"),
|
|
92648
|
+
tech: strList.optional().describe("\uC0AC\uC6A9 \uAE30\uC220/\uB3C4\uAD6C"),
|
|
92636
92649
|
order_index: external_exports.number().optional()
|
|
92637
92650
|
});
|
|
92638
92651
|
var ExperienceRecordSchema = external_exports.object({
|
|
@@ -92649,14 +92662,14 @@ var ExperienceRecordSchema = external_exports.object({
|
|
|
92649
92662
|
order_index: external_exports.number()
|
|
92650
92663
|
});
|
|
92651
92664
|
var ProjectInputSchema = external_exports.object({
|
|
92652
|
-
name:
|
|
92653
|
-
role:
|
|
92654
|
-
description:
|
|
92655
|
-
highlights:
|
|
92656
|
-
tech:
|
|
92665
|
+
name: reqLine,
|
|
92666
|
+
role: optLine,
|
|
92667
|
+
description: optBody,
|
|
92668
|
+
highlights: strList.optional(),
|
|
92669
|
+
tech: strList.optional(),
|
|
92657
92670
|
url: SafeUrlOptional,
|
|
92658
|
-
start_date:
|
|
92659
|
-
end_date:
|
|
92671
|
+
start_date: optLine,
|
|
92672
|
+
end_date: optLine,
|
|
92660
92673
|
order_index: external_exports.number().optional()
|
|
92661
92674
|
});
|
|
92662
92675
|
var ProjectRecordSchema = external_exports.object({
|
|
@@ -92672,9 +92685,9 @@ var ProjectRecordSchema = external_exports.object({
|
|
|
92672
92685
|
order_index: external_exports.number()
|
|
92673
92686
|
});
|
|
92674
92687
|
var SkillInputSchema = external_exports.object({
|
|
92675
|
-
name:
|
|
92676
|
-
category: external_exports.string().optional().describe("\uC5B8\uC5B4/\uD504\uB808\uC784\uC6CC\uD06C/\uD234/\uC18C\uD504\uD2B8\uC2A4\uD0AC \uB4F1"),
|
|
92677
|
-
level: external_exports.string().optional().describe("\uC0C1/\uC911/\uD558 \uB610\uB294 \uC790\uC720 \uC11C\uC220"),
|
|
92688
|
+
name: reqLine,
|
|
92689
|
+
category: external_exports.string().max(MAX_LINE).optional().describe("\uC5B8\uC5B4/\uD504\uB808\uC784\uC6CC\uD06C/\uD234/\uC18C\uD504\uD2B8\uC2A4\uD0AC \uB4F1"),
|
|
92690
|
+
level: external_exports.string().max(MAX_LINE).optional().describe("\uC0C1/\uC911/\uD558 \uB610\uB294 \uC790\uC720 \uC11C\uC220"),
|
|
92678
92691
|
years: external_exports.number().optional(),
|
|
92679
92692
|
order_index: external_exports.number().optional()
|
|
92680
92693
|
});
|
|
@@ -92688,11 +92701,11 @@ var SkillRecordSchema = external_exports.object({
|
|
|
92688
92701
|
});
|
|
92689
92702
|
var DocumentInputSchema = external_exports.object({
|
|
92690
92703
|
kind: external_exports.enum(DOCUMENT_KINDS),
|
|
92691
|
-
title:
|
|
92692
|
-
content:
|
|
92704
|
+
title: reqLine,
|
|
92705
|
+
content: reqBody.describe("Markdown \uB610\uB294 \uC77C\uBC18 \uD14D\uC2A4\uD2B8 \uBCF8\uBB38"),
|
|
92693
92706
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
92694
92707
|
is_primary: external_exports.boolean().optional().describe("\uB300\uD45C \uBB38\uC11C \uC5EC\uBD80"),
|
|
92695
|
-
tags:
|
|
92708
|
+
tags: strList.optional()
|
|
92696
92709
|
});
|
|
92697
92710
|
var DocumentRecordSchema = external_exports.object({
|
|
92698
92711
|
...baseRecord,
|
|
@@ -92704,19 +92717,19 @@ var DocumentRecordSchema = external_exports.object({
|
|
|
92704
92717
|
tags: external_exports.array(external_exports.string())
|
|
92705
92718
|
});
|
|
92706
92719
|
var CoverLetterInputSchema = external_exports.object({
|
|
92707
|
-
title:
|
|
92708
|
-
job_id:
|
|
92720
|
+
title: reqLine,
|
|
92721
|
+
job_id: optLine.describe("\uD2B9\uC815 \uACF5\uACE0\uC5D0 \uC5F0\uACB0\uD560 \uACBD\uC6B0"),
|
|
92709
92722
|
is_primary: external_exports.boolean().optional(),
|
|
92710
|
-
content:
|
|
92723
|
+
content: optBody.describe("\uCD08\uAE30 \uBC84\uC804 \uBCF8\uBB38 (\uC788\uC73C\uBA74 v1\uB85C \uC800\uC7A5)"),
|
|
92711
92724
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
92712
|
-
note:
|
|
92725
|
+
note: optNote.describe("\uCD08\uAE30 \uBC84\uC804 \uBA54\uBAA8")
|
|
92713
92726
|
});
|
|
92714
92727
|
var CoverLetterVersionInputSchema = external_exports.object({
|
|
92715
|
-
cover_letter_id:
|
|
92716
|
-
title: external_exports.string().optional().describe("\uC0C8 \uC790\uAE30\uC18C\uAC1C\uC11C\uB97C \uB9CC\uB4E4 \uB54C \uC81C\uBAA9"),
|
|
92717
|
-
job_id:
|
|
92718
|
-
content:
|
|
92719
|
-
note:
|
|
92728
|
+
cover_letter_id: optLine.describe("\uAE30\uC874 \uC790\uAE30\uC18C\uAC1C\uC11C\uC5D0 \uC0C8 \uBC84\uC804 \uCD94\uAC00 \uC2DC"),
|
|
92729
|
+
title: external_exports.string().max(MAX_LINE).optional().describe("\uC0C8 \uC790\uAE30\uC18C\uAC1C\uC11C\uB97C \uB9CC\uB4E4 \uB54C \uC81C\uBAA9"),
|
|
92730
|
+
job_id: optLine,
|
|
92731
|
+
content: reqBody,
|
|
92732
|
+
note: optNote.describe("\uC774 \uBC84\uC804\uC758 \uBCC0\uACBD \uC694\uC57D (\uC608: \uC9C0\uC6D0\uB3D9\uAE30 \uBCF4\uAC15)"),
|
|
92720
92733
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
92721
92734
|
set_current: external_exports.boolean().optional().describe("\uC774 \uBC84\uC804\uC744 \uD604\uC7AC \uBC84\uC804\uC73C\uB85C \uC9C0\uC815 (\uAE30\uBCF8 true)")
|
|
92722
92735
|
});
|
|
@@ -92740,16 +92753,16 @@ var CoverLetterRecordSchema = external_exports.object({
|
|
|
92740
92753
|
versions: external_exports.array(CoverLetterVersionRecordSchema).optional()
|
|
92741
92754
|
});
|
|
92742
92755
|
var JobInputSchema = external_exports.object({
|
|
92743
|
-
company:
|
|
92744
|
-
position:
|
|
92756
|
+
company: reqLine,
|
|
92757
|
+
position: reqLine.describe("\uC9C1\uBB34/\uD3EC\uC9C0\uC158\uBA85"),
|
|
92745
92758
|
url: SafeUrlOptional,
|
|
92746
|
-
location:
|
|
92747
|
-
employment_type:
|
|
92748
|
-
description:
|
|
92749
|
-
requirements:
|
|
92750
|
-
keywords:
|
|
92751
|
-
deadline: external_exports.string().optional().describe("\uB9C8\uAC10\uC77C YYYY-MM-DD"),
|
|
92752
|
-
source: external_exports.string().optional().describe("\uCD9C\uCC98 (\uC0AC\uB78C\uC778/\uC6D0\uD2F0\uB4DC/\uC9C1\uC811 \uC785\uB825 \uB4F1)")
|
|
92759
|
+
location: optLine,
|
|
92760
|
+
employment_type: optLine,
|
|
92761
|
+
description: optBody.describe("\uACF5\uACE0 \uC6D0\uBB38 \uB610\uB294 \uC815\uB9AC\uB41C \uD14D\uC2A4\uD2B8"),
|
|
92762
|
+
requirements: strList.optional().describe("\uC790\uACA9\uC694\uAC74/\uC6B0\uB300\uC0AC\uD56D \uD575\uC2EC"),
|
|
92763
|
+
keywords: strList.optional().describe("\uD575\uC2EC \uD0A4\uC6CC\uB4DC"),
|
|
92764
|
+
deadline: external_exports.string().max(MAX_LINE).optional().describe("\uB9C8\uAC10\uC77C YYYY-MM-DD"),
|
|
92765
|
+
source: external_exports.string().max(MAX_LINE).optional().describe("\uCD9C\uCC98 (\uC0AC\uB78C\uC778/\uC6D0\uD2F0\uB4DC/\uC9C1\uC811 \uC785\uB825 \uB4F1)")
|
|
92753
92766
|
});
|
|
92754
92767
|
var JobRecordSchema = external_exports.object({
|
|
92755
92768
|
...baseRecord,
|
|
@@ -92765,14 +92778,14 @@ var JobRecordSchema = external_exports.object({
|
|
|
92765
92778
|
source: external_exports.string().nullable()
|
|
92766
92779
|
});
|
|
92767
92780
|
var FitAnalysisInputSchema = external_exports.object({
|
|
92768
|
-
job_id:
|
|
92781
|
+
job_id: reqLine.describe("\uBD84\uC11D \uB300\uC0C1 \uACF5\uACE0 ID"),
|
|
92769
92782
|
score: external_exports.number().min(0).max(100).optional().describe("\uC885\uD569 \uC801\uD569\uB3C4 0~100"),
|
|
92770
|
-
summary: external_exports.string().optional().describe("\uD55C\uB450 \uBB38\uB2E8 \uC694\uC57D"),
|
|
92771
|
-
strengths:
|
|
92772
|
-
gaps:
|
|
92773
|
-
matched_keywords:
|
|
92774
|
-
missing_keywords:
|
|
92775
|
-
recommendations:
|
|
92783
|
+
summary: external_exports.string().max(MAX_NOTE).optional().describe("\uD55C\uB450 \uBB38\uB2E8 \uC694\uC57D"),
|
|
92784
|
+
strengths: strList.optional().describe("\uAC15\uC810 / \uC798 \uB9DE\uB294 \uBD80\uBD84"),
|
|
92785
|
+
gaps: strList.optional().describe("\uBD80\uC871\uD55C \uBD80\uBD84 / \uBCF4\uC644 \uD544\uC694"),
|
|
92786
|
+
matched_keywords: strList.optional(),
|
|
92787
|
+
missing_keywords: strList.optional(),
|
|
92788
|
+
recommendations: strList.optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C/\uC9C0\uC6D0 \uC804\uB7B5 \uC81C\uC548")
|
|
92776
92789
|
});
|
|
92777
92790
|
var FitAnalysisRecordSchema = external_exports.object({
|
|
92778
92791
|
...baseRecord,
|
|
@@ -92786,18 +92799,18 @@ var FitAnalysisRecordSchema = external_exports.object({
|
|
|
92786
92799
|
recommendations: external_exports.array(external_exports.string())
|
|
92787
92800
|
});
|
|
92788
92801
|
var ApplicationInputSchema = external_exports.object({
|
|
92789
|
-
job_id:
|
|
92802
|
+
job_id: reqLine,
|
|
92790
92803
|
status: external_exports.enum(APPLICATION_STATUSES).optional(),
|
|
92791
|
-
resume_id:
|
|
92792
|
-
cover_letter_id:
|
|
92793
|
-
applied_at:
|
|
92794
|
-
notes:
|
|
92804
|
+
resume_id: optLine,
|
|
92805
|
+
cover_letter_id: optLine,
|
|
92806
|
+
applied_at: optLine,
|
|
92807
|
+
notes: optNote
|
|
92795
92808
|
});
|
|
92796
92809
|
var ApplicationStatusUpdateSchema = external_exports.object({
|
|
92797
|
-
job_id:
|
|
92798
|
-
application_id:
|
|
92810
|
+
job_id: optLine,
|
|
92811
|
+
application_id: optLine,
|
|
92799
92812
|
status: external_exports.enum(APPLICATION_STATUSES),
|
|
92800
|
-
note:
|
|
92813
|
+
note: optNote.describe("\uC0C1\uD0DC \uBCC0\uACBD \uC0AC\uC720/\uBA54\uBAA8")
|
|
92801
92814
|
});
|
|
92802
92815
|
var ApplicationRecordSchema = external_exports.object({
|
|
92803
92816
|
...baseRecord,
|
|
@@ -92809,24 +92822,24 @@ var ApplicationRecordSchema = external_exports.object({
|
|
|
92809
92822
|
notes: external_exports.string().nullable()
|
|
92810
92823
|
});
|
|
92811
92824
|
var StarGuideSchema = external_exports.object({
|
|
92812
|
-
question: external_exports.string(),
|
|
92813
|
-
situation:
|
|
92814
|
-
task:
|
|
92815
|
-
action:
|
|
92816
|
-
result:
|
|
92825
|
+
question: external_exports.string().max(MAX_NOTE),
|
|
92826
|
+
situation: optNote,
|
|
92827
|
+
task: optNote,
|
|
92828
|
+
action: optNote,
|
|
92829
|
+
result: optNote
|
|
92817
92830
|
});
|
|
92818
92831
|
var InterviewQuestionSchema = external_exports.object({
|
|
92819
|
-
question: external_exports.string(),
|
|
92820
|
-
intent: external_exports.string().optional().describe("\uC9C8\uBB38 \uC758\uB3C4"),
|
|
92821
|
-
followups:
|
|
92822
|
-
answer_outline:
|
|
92832
|
+
question: external_exports.string().max(MAX_NOTE),
|
|
92833
|
+
intent: external_exports.string().max(MAX_NOTE).optional().describe("\uC9C8\uBB38 \uC758\uB3C4"),
|
|
92834
|
+
followups: strList.optional().describe("\uC608\uC0C1 \uAF2C\uB9AC \uC9C8\uBB38"),
|
|
92835
|
+
answer_outline: optBody.describe("\uB2F5\uBCC0 \uAC00\uC774\uB4DC/\uD575\uC2EC \uD3EC\uC778\uD2B8")
|
|
92823
92836
|
});
|
|
92824
92837
|
var InterviewPrepInputSchema = external_exports.object({
|
|
92825
|
-
job_id:
|
|
92826
|
-
questions: external_exports.array(InterviewQuestionSchema).optional(),
|
|
92827
|
-
star_guides: external_exports.array(StarGuideSchema).optional(),
|
|
92828
|
-
self_introduction:
|
|
92829
|
-
notes:
|
|
92838
|
+
job_id: reqLine,
|
|
92839
|
+
questions: external_exports.array(InterviewQuestionSchema).max(MAX_ITEMS).optional(),
|
|
92840
|
+
star_guides: external_exports.array(StarGuideSchema).max(MAX_ITEMS).optional(),
|
|
92841
|
+
self_introduction: optBody.describe("1\uBD84 \uC790\uAE30\uC18C\uAC1C \uCD08\uC548"),
|
|
92842
|
+
notes: optNote.describe("\uBA74\uC811 \uD6C4\uAE30/\uBA54\uBAA8")
|
|
92830
92843
|
});
|
|
92831
92844
|
var InterviewPrepRecordSchema = external_exports.object({
|
|
92832
92845
|
...baseRecord,
|
|
@@ -92880,7 +92893,7 @@ var ApplicationContextSchema = external_exports.object({
|
|
|
92880
92893
|
});
|
|
92881
92894
|
|
|
92882
92895
|
// packages/shared/src/build-info.ts
|
|
92883
|
-
var APP_VERSION = true ? "0.1.
|
|
92896
|
+
var APP_VERSION = true ? "0.1.4" : "0.0.0-dev";
|
|
92884
92897
|
var BUNDLED = true;
|
|
92885
92898
|
|
|
92886
92899
|
// packages/shared/src/index.ts
|
|
@@ -94955,9 +94968,19 @@ async function finishPdf(buf, base) {
|
|
|
94955
94968
|
});
|
|
94956
94969
|
return base("pdf", { text, bytes: buf.length, warnings: pageWarnings });
|
|
94957
94970
|
} catch (e) {
|
|
94971
|
+
const name = e && typeof e === "object" && "name" in e ? String(e.name) : "";
|
|
94972
|
+
if (name === "PasswordException") {
|
|
94973
|
+
return base("unsupported", {
|
|
94974
|
+
bytes: buf.length,
|
|
94975
|
+
warnings: [
|
|
94976
|
+
"\uC774 PDF\uB294 \uC554\uD638(\uBE44\uBC00\uBC88\uD638)\uB85C \uBCF4\uD638\uB418\uC5B4 \uC788\uC5B4 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. PDF \uBDF0\uC5B4\uC5D0\uC11C \uC554\uD638\uB97C \uD574\uC81C\uD574 \uB2E4\uC2DC \uC800\uC7A5\uD558\uAC70\uB098, \uB0B4\uC6A9\uC744 \uD14D\uC2A4\uD2B8\uB85C \uBD99\uC5EC\uB123\uC5B4 \uC8FC\uC138\uC694."
|
|
94977
|
+
],
|
|
94978
|
+
unsupported: true
|
|
94979
|
+
});
|
|
94980
|
+
}
|
|
94958
94981
|
return base("unsupported", {
|
|
94959
94982
|
bytes: buf.length,
|
|
94960
|
-
warnings: [`PDF\uB97C \uC77D\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4(${errMsg(e)}). \
|
|
94983
|
+
warnings: [`PDF\uB97C \uC77D\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4(${errMsg(e)}). \uC190\uC0C1\uB418\uC5C8\uAC70\uB098 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 PDF\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4. \uD14D\uC2A4\uD2B8\uB85C \uBD99\uC5EC\uB123\uC5B4 \uC8FC\uC138\uC694.`],
|
|
94961
94984
|
unsupported: true
|
|
94962
94985
|
});
|
|
94963
94986
|
}
|
|
@@ -95523,13 +95546,12 @@ ${lines}`;
|
|
|
95523
95546
|
name: "add_resume",
|
|
95524
95547
|
title: "\uC774\uB825\uC11C/\uACBD\uB825\uAE30\uC220\uC11C \uCD94\uAC00",
|
|
95525
95548
|
description: "\uC774\uB825\uC11C, \uACBD\uB825\uAE30\uC220\uC11C, \uD3EC\uD2B8\uD3F4\uB9AC\uC624 \uB4F1 \uBB38\uC11C\uB97C \uC800\uC7A5\uD569\uB2C8\uB2E4. content\uC5D0\uB294 \uC0AC\uC6A9\uC790\uAC00 \uC5C5\uB85C\uB4DC/\uBD99\uC5EC\uB123\uC740 \uD14D\uC2A4\uD2B8(\uB610\uB294 \uC815\uB9AC\uD55C Markdown)\uB97C \uB123\uC73C\uC138\uC694. kind \uAE30\uBCF8\uAC12\uC740 resume\uC785\uB2C8\uB2E4. is_primary=true\uB85C \uB300\uD45C \uBB38\uC11C\uB97C \uC9C0\uC815\uD558\uBA74 get_application_context\uC758 primary_resume\uB85C \uB178\uCD9C\uB429\uB2C8\uB2E4.",
|
|
95549
|
+
// Reuse the shared (length-bounded, whitespace-rejecting) Document schema so
|
|
95550
|
+
// the MCP ingestion path — the primary route for résumé text — inherits the
|
|
95551
|
+
// same caps as the web API. kind stays optional here (defaults to resume).
|
|
95526
95552
|
inputSchema: {
|
|
95527
|
-
|
|
95528
|
-
|
|
95529
|
-
kind: external_exports.enum(DOCUMENT_KINDS).optional().describe("resume(\uC774\uB825\uC11C)/career_description(\uACBD\uB825\uAE30\uC220\uC11C)/portfolio/other"),
|
|
95530
|
-
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
95531
|
-
is_primary: external_exports.boolean().optional().describe("\uB300\uD45C \uBB38\uC11C \uC5EC\uBD80"),
|
|
95532
|
-
tags: external_exports.array(external_exports.string()).optional()
|
|
95553
|
+
...DocumentInputSchema.omit({ kind: true }).shape,
|
|
95554
|
+
kind: external_exports.enum(DOCUMENT_KINDS).optional().describe("resume(\uC774\uB825\uC11C)/career_description(\uACBD\uB825\uAE30\uC220\uC11C)/portfolio/other")
|
|
95533
95555
|
},
|
|
95534
95556
|
handler: (args) => {
|
|
95535
95557
|
const doc = addResume(args);
|
package/dist/migrate.mjs
CHANGED
|
@@ -4422,29 +4422,42 @@ function isSafeUrl(u) {
|
|
|
4422
4422
|
return !/^[a-z][a-z0-9+.-]*:/i.test(s) || /^(https?:|mailto:)/i.test(s);
|
|
4423
4423
|
}
|
|
4424
4424
|
var UNSAFE_URL_MSG = "javascript: \uAC19\uC740 \uC704\uD5D8\uD55C \uB9C1\uD06C\uB294 \uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. http(s) \uB9C1\uD06C\uB97C \uC0AC\uC6A9\uD558\uC138\uC694.";
|
|
4425
|
-
var
|
|
4426
|
-
var
|
|
4425
|
+
var MAX_URL = 2e3;
|
|
4426
|
+
var SafeUrl = external_exports.string().min(1).max(MAX_URL).refine(isSafeUrl, { message: UNSAFE_URL_MSG });
|
|
4427
|
+
var SafeUrlOptional = external_exports.string().max(MAX_URL).optional().refine((u) => u == null || u === "" || isSafeUrl(u), { message: UNSAFE_URL_MSG });
|
|
4428
|
+
var MAX_LINE = 500;
|
|
4429
|
+
var MAX_NOTE = 1e4;
|
|
4430
|
+
var MAX_BODY = 2e5;
|
|
4431
|
+
var MAX_ITEM = 2e3;
|
|
4432
|
+
var MAX_ITEMS = 500;
|
|
4433
|
+
var EMPTY_MSG = "\uB0B4\uC6A9\uC774 \uBE44\uC5B4 \uC788\uC2B5\uB2C8\uB2E4(\uACF5\uBC31\uB9CC\uC73C\uB85C\uB294 \uC800\uC7A5\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4).";
|
|
4434
|
+
var reqLine = external_exports.string().trim().min(1).max(MAX_LINE);
|
|
4435
|
+
var optLine = external_exports.string().max(MAX_LINE).optional();
|
|
4436
|
+
var optNote = external_exports.string().max(MAX_NOTE).optional();
|
|
4437
|
+
var optBody = external_exports.string().max(MAX_BODY).optional();
|
|
4438
|
+
var reqBody = external_exports.string().max(MAX_BODY).refine((s) => s.trim().length > 0, { message: EMPTY_MSG });
|
|
4439
|
+
var strList = external_exports.array(external_exports.string().max(MAX_ITEM)).max(MAX_ITEMS);
|
|
4427
4440
|
var baseRecord = {
|
|
4428
4441
|
id,
|
|
4429
4442
|
created_at: isoDateTime,
|
|
4430
4443
|
updated_at: isoDateTime
|
|
4431
4444
|
};
|
|
4432
4445
|
var LinkSchema = external_exports.object({
|
|
4433
|
-
label:
|
|
4446
|
+
label: reqLine,
|
|
4434
4447
|
url: SafeUrl
|
|
4435
4448
|
});
|
|
4436
4449
|
var ProfileInputSchema = external_exports.object({
|
|
4437
|
-
name:
|
|
4438
|
-
email:
|
|
4439
|
-
phone:
|
|
4440
|
-
location:
|
|
4441
|
-
headline: external_exports.string().optional().describe("\uD55C \uC904 \uC18C\uAC1C / \uC9C1\uBB34 \uD0C0\uC774\uD2C0"),
|
|
4442
|
-
summary: external_exports.string().optional().describe("\uC790\uAE30\uC18C\uAC1C \uC694\uC57D"),
|
|
4443
|
-
desired_roles:
|
|
4444
|
-
desired_conditions: external_exports.string().optional().describe("\uD76C\uB9DD \uADFC\uBB34 \uC870\uAC74 (\uC5F0\uBD09, \uC9C0\uC5ED, \uADFC\uBB34\uD615\uD0DC \uB4F1)"),
|
|
4445
|
-
preferred_tone: external_exports.string().optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C \uC120\uD638 \uBB38\uCCB4 (\uC608: \uB2F4\uBC31\uD558\uACE0 \uAD6C\uCCB4\uC801)"),
|
|
4446
|
-
emphasis_points:
|
|
4447
|
-
links: external_exports.array(LinkSchema).optional().describe("\uD3EC\uD2B8\uD3F4\uB9AC\uC624/\uAE43\uD5C8\uBE0C/\uB9C1\uD06C\uB4DC\uC778 \uB4F1")
|
|
4450
|
+
name: reqLine.optional(),
|
|
4451
|
+
email: optLine,
|
|
4452
|
+
phone: optLine,
|
|
4453
|
+
location: optLine,
|
|
4454
|
+
headline: external_exports.string().max(MAX_LINE).optional().describe("\uD55C \uC904 \uC18C\uAC1C / \uC9C1\uBB34 \uD0C0\uC774\uD2C0"),
|
|
4455
|
+
summary: external_exports.string().max(MAX_NOTE).optional().describe("\uC790\uAE30\uC18C\uAC1C \uC694\uC57D"),
|
|
4456
|
+
desired_roles: strList.optional().describe("\uD76C\uB9DD \uC9C1\uBB34"),
|
|
4457
|
+
desired_conditions: external_exports.string().max(MAX_NOTE).optional().describe("\uD76C\uB9DD \uADFC\uBB34 \uC870\uAC74 (\uC5F0\uBD09, \uC9C0\uC5ED, \uADFC\uBB34\uD615\uD0DC \uB4F1)"),
|
|
4458
|
+
preferred_tone: external_exports.string().max(MAX_LINE).optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C \uC120\uD638 \uBB38\uCCB4 (\uC608: \uB2F4\uBC31\uD558\uACE0 \uAD6C\uCCB4\uC801)"),
|
|
4459
|
+
emphasis_points: strList.optional().describe("\uAC15\uC870\uD558\uACE0 \uC2F6\uC740 \uD575\uC2EC \uD3EC\uC778\uD2B8"),
|
|
4460
|
+
links: external_exports.array(LinkSchema).max(MAX_ITEMS).optional().describe("\uD3EC\uD2B8\uD3F4\uB9AC\uC624/\uAE43\uD5C8\uBE0C/\uB9C1\uD06C\uB4DC\uC778 \uB4F1")
|
|
4448
4461
|
});
|
|
4449
4462
|
var ProfileRecordSchema = external_exports.object({
|
|
4450
4463
|
...baseRecord,
|
|
@@ -4461,15 +4474,15 @@ var ProfileRecordSchema = external_exports.object({
|
|
|
4461
4474
|
links: external_exports.array(LinkSchema)
|
|
4462
4475
|
});
|
|
4463
4476
|
var ExperienceInputSchema = external_exports.object({
|
|
4464
|
-
company:
|
|
4465
|
-
role:
|
|
4466
|
-
employment_type: external_exports.string().optional().describe("\uC815\uADDC\uC9C1/\uACC4\uC57D\uC9C1/\uC778\uD134/\uD504\uB9AC\uB79C\uC11C \uB4F1"),
|
|
4467
|
-
start_date: external_exports.string().optional().describe("YYYY-MM \uB610\uB294 YYYY-MM-DD"),
|
|
4468
|
-
end_date: external_exports.string().optional().describe("\uC7AC\uC9C1 \uC911\uC774\uBA74 \uBE44\uC6CC\uB450\uAE30"),
|
|
4477
|
+
company: reqLine,
|
|
4478
|
+
role: optLine,
|
|
4479
|
+
employment_type: external_exports.string().max(MAX_LINE).optional().describe("\uC815\uADDC\uC9C1/\uACC4\uC57D\uC9C1/\uC778\uD134/\uD504\uB9AC\uB79C\uC11C \uB4F1"),
|
|
4480
|
+
start_date: external_exports.string().max(MAX_LINE).optional().describe("YYYY-MM \uB610\uB294 YYYY-MM-DD"),
|
|
4481
|
+
end_date: external_exports.string().max(MAX_LINE).optional().describe("\uC7AC\uC9C1 \uC911\uC774\uBA74 \uBE44\uC6CC\uB450\uAE30"),
|
|
4469
4482
|
is_current: external_exports.boolean().optional(),
|
|
4470
|
-
description:
|
|
4471
|
-
achievements:
|
|
4472
|
-
tech:
|
|
4483
|
+
description: optBody,
|
|
4484
|
+
achievements: strList.optional().describe("\uC131\uACFC/\uC5C5\uC801 (\uC815\uB7C9 \uC9C0\uD45C \uAD8C\uC7A5)"),
|
|
4485
|
+
tech: strList.optional().describe("\uC0AC\uC6A9 \uAE30\uC220/\uB3C4\uAD6C"),
|
|
4473
4486
|
order_index: external_exports.number().optional()
|
|
4474
4487
|
});
|
|
4475
4488
|
var ExperienceRecordSchema = external_exports.object({
|
|
@@ -4486,14 +4499,14 @@ var ExperienceRecordSchema = external_exports.object({
|
|
|
4486
4499
|
order_index: external_exports.number()
|
|
4487
4500
|
});
|
|
4488
4501
|
var ProjectInputSchema = external_exports.object({
|
|
4489
|
-
name:
|
|
4490
|
-
role:
|
|
4491
|
-
description:
|
|
4492
|
-
highlights:
|
|
4493
|
-
tech:
|
|
4502
|
+
name: reqLine,
|
|
4503
|
+
role: optLine,
|
|
4504
|
+
description: optBody,
|
|
4505
|
+
highlights: strList.optional(),
|
|
4506
|
+
tech: strList.optional(),
|
|
4494
4507
|
url: SafeUrlOptional,
|
|
4495
|
-
start_date:
|
|
4496
|
-
end_date:
|
|
4508
|
+
start_date: optLine,
|
|
4509
|
+
end_date: optLine,
|
|
4497
4510
|
order_index: external_exports.number().optional()
|
|
4498
4511
|
});
|
|
4499
4512
|
var ProjectRecordSchema = external_exports.object({
|
|
@@ -4509,9 +4522,9 @@ var ProjectRecordSchema = external_exports.object({
|
|
|
4509
4522
|
order_index: external_exports.number()
|
|
4510
4523
|
});
|
|
4511
4524
|
var SkillInputSchema = external_exports.object({
|
|
4512
|
-
name:
|
|
4513
|
-
category: external_exports.string().optional().describe("\uC5B8\uC5B4/\uD504\uB808\uC784\uC6CC\uD06C/\uD234/\uC18C\uD504\uD2B8\uC2A4\uD0AC \uB4F1"),
|
|
4514
|
-
level: external_exports.string().optional().describe("\uC0C1/\uC911/\uD558 \uB610\uB294 \uC790\uC720 \uC11C\uC220"),
|
|
4525
|
+
name: reqLine,
|
|
4526
|
+
category: external_exports.string().max(MAX_LINE).optional().describe("\uC5B8\uC5B4/\uD504\uB808\uC784\uC6CC\uD06C/\uD234/\uC18C\uD504\uD2B8\uC2A4\uD0AC \uB4F1"),
|
|
4527
|
+
level: external_exports.string().max(MAX_LINE).optional().describe("\uC0C1/\uC911/\uD558 \uB610\uB294 \uC790\uC720 \uC11C\uC220"),
|
|
4515
4528
|
years: external_exports.number().optional(),
|
|
4516
4529
|
order_index: external_exports.number().optional()
|
|
4517
4530
|
});
|
|
@@ -4525,11 +4538,11 @@ var SkillRecordSchema = external_exports.object({
|
|
|
4525
4538
|
});
|
|
4526
4539
|
var DocumentInputSchema = external_exports.object({
|
|
4527
4540
|
kind: external_exports.enum(DOCUMENT_KINDS),
|
|
4528
|
-
title:
|
|
4529
|
-
content:
|
|
4541
|
+
title: reqLine,
|
|
4542
|
+
content: reqBody.describe("Markdown \uB610\uB294 \uC77C\uBC18 \uD14D\uC2A4\uD2B8 \uBCF8\uBB38"),
|
|
4530
4543
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
4531
4544
|
is_primary: external_exports.boolean().optional().describe("\uB300\uD45C \uBB38\uC11C \uC5EC\uBD80"),
|
|
4532
|
-
tags:
|
|
4545
|
+
tags: strList.optional()
|
|
4533
4546
|
});
|
|
4534
4547
|
var DocumentRecordSchema = external_exports.object({
|
|
4535
4548
|
...baseRecord,
|
|
@@ -4541,19 +4554,19 @@ var DocumentRecordSchema = external_exports.object({
|
|
|
4541
4554
|
tags: external_exports.array(external_exports.string())
|
|
4542
4555
|
});
|
|
4543
4556
|
var CoverLetterInputSchema = external_exports.object({
|
|
4544
|
-
title:
|
|
4545
|
-
job_id:
|
|
4557
|
+
title: reqLine,
|
|
4558
|
+
job_id: optLine.describe("\uD2B9\uC815 \uACF5\uACE0\uC5D0 \uC5F0\uACB0\uD560 \uACBD\uC6B0"),
|
|
4546
4559
|
is_primary: external_exports.boolean().optional(),
|
|
4547
|
-
content:
|
|
4560
|
+
content: optBody.describe("\uCD08\uAE30 \uBC84\uC804 \uBCF8\uBB38 (\uC788\uC73C\uBA74 v1\uB85C \uC800\uC7A5)"),
|
|
4548
4561
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
4549
|
-
note:
|
|
4562
|
+
note: optNote.describe("\uCD08\uAE30 \uBC84\uC804 \uBA54\uBAA8")
|
|
4550
4563
|
});
|
|
4551
4564
|
var CoverLetterVersionInputSchema = external_exports.object({
|
|
4552
|
-
cover_letter_id:
|
|
4553
|
-
title: external_exports.string().optional().describe("\uC0C8 \uC790\uAE30\uC18C\uAC1C\uC11C\uB97C \uB9CC\uB4E4 \uB54C \uC81C\uBAA9"),
|
|
4554
|
-
job_id:
|
|
4555
|
-
content:
|
|
4556
|
-
note:
|
|
4565
|
+
cover_letter_id: optLine.describe("\uAE30\uC874 \uC790\uAE30\uC18C\uAC1C\uC11C\uC5D0 \uC0C8 \uBC84\uC804 \uCD94\uAC00 \uC2DC"),
|
|
4566
|
+
title: external_exports.string().max(MAX_LINE).optional().describe("\uC0C8 \uC790\uAE30\uC18C\uAC1C\uC11C\uB97C \uB9CC\uB4E4 \uB54C \uC81C\uBAA9"),
|
|
4567
|
+
job_id: optLine,
|
|
4568
|
+
content: reqBody,
|
|
4569
|
+
note: optNote.describe("\uC774 \uBC84\uC804\uC758 \uBCC0\uACBD \uC694\uC57D (\uC608: \uC9C0\uC6D0\uB3D9\uAE30 \uBCF4\uAC15)"),
|
|
4557
4570
|
source: external_exports.enum(CONTENT_SOURCES).optional(),
|
|
4558
4571
|
set_current: external_exports.boolean().optional().describe("\uC774 \uBC84\uC804\uC744 \uD604\uC7AC \uBC84\uC804\uC73C\uB85C \uC9C0\uC815 (\uAE30\uBCF8 true)")
|
|
4559
4572
|
});
|
|
@@ -4577,16 +4590,16 @@ var CoverLetterRecordSchema = external_exports.object({
|
|
|
4577
4590
|
versions: external_exports.array(CoverLetterVersionRecordSchema).optional()
|
|
4578
4591
|
});
|
|
4579
4592
|
var JobInputSchema = external_exports.object({
|
|
4580
|
-
company:
|
|
4581
|
-
position:
|
|
4593
|
+
company: reqLine,
|
|
4594
|
+
position: reqLine.describe("\uC9C1\uBB34/\uD3EC\uC9C0\uC158\uBA85"),
|
|
4582
4595
|
url: SafeUrlOptional,
|
|
4583
|
-
location:
|
|
4584
|
-
employment_type:
|
|
4585
|
-
description:
|
|
4586
|
-
requirements:
|
|
4587
|
-
keywords:
|
|
4588
|
-
deadline: external_exports.string().optional().describe("\uB9C8\uAC10\uC77C YYYY-MM-DD"),
|
|
4589
|
-
source: external_exports.string().optional().describe("\uCD9C\uCC98 (\uC0AC\uB78C\uC778/\uC6D0\uD2F0\uB4DC/\uC9C1\uC811 \uC785\uB825 \uB4F1)")
|
|
4596
|
+
location: optLine,
|
|
4597
|
+
employment_type: optLine,
|
|
4598
|
+
description: optBody.describe("\uACF5\uACE0 \uC6D0\uBB38 \uB610\uB294 \uC815\uB9AC\uB41C \uD14D\uC2A4\uD2B8"),
|
|
4599
|
+
requirements: strList.optional().describe("\uC790\uACA9\uC694\uAC74/\uC6B0\uB300\uC0AC\uD56D \uD575\uC2EC"),
|
|
4600
|
+
keywords: strList.optional().describe("\uD575\uC2EC \uD0A4\uC6CC\uB4DC"),
|
|
4601
|
+
deadline: external_exports.string().max(MAX_LINE).optional().describe("\uB9C8\uAC10\uC77C YYYY-MM-DD"),
|
|
4602
|
+
source: external_exports.string().max(MAX_LINE).optional().describe("\uCD9C\uCC98 (\uC0AC\uB78C\uC778/\uC6D0\uD2F0\uB4DC/\uC9C1\uC811 \uC785\uB825 \uB4F1)")
|
|
4590
4603
|
});
|
|
4591
4604
|
var JobRecordSchema = external_exports.object({
|
|
4592
4605
|
...baseRecord,
|
|
@@ -4602,14 +4615,14 @@ var JobRecordSchema = external_exports.object({
|
|
|
4602
4615
|
source: external_exports.string().nullable()
|
|
4603
4616
|
});
|
|
4604
4617
|
var FitAnalysisInputSchema = external_exports.object({
|
|
4605
|
-
job_id:
|
|
4618
|
+
job_id: reqLine.describe("\uBD84\uC11D \uB300\uC0C1 \uACF5\uACE0 ID"),
|
|
4606
4619
|
score: external_exports.number().min(0).max(100).optional().describe("\uC885\uD569 \uC801\uD569\uB3C4 0~100"),
|
|
4607
|
-
summary: external_exports.string().optional().describe("\uD55C\uB450 \uBB38\uB2E8 \uC694\uC57D"),
|
|
4608
|
-
strengths:
|
|
4609
|
-
gaps:
|
|
4610
|
-
matched_keywords:
|
|
4611
|
-
missing_keywords:
|
|
4612
|
-
recommendations:
|
|
4620
|
+
summary: external_exports.string().max(MAX_NOTE).optional().describe("\uD55C\uB450 \uBB38\uB2E8 \uC694\uC57D"),
|
|
4621
|
+
strengths: strList.optional().describe("\uAC15\uC810 / \uC798 \uB9DE\uB294 \uBD80\uBD84"),
|
|
4622
|
+
gaps: strList.optional().describe("\uBD80\uC871\uD55C \uBD80\uBD84 / \uBCF4\uC644 \uD544\uC694"),
|
|
4623
|
+
matched_keywords: strList.optional(),
|
|
4624
|
+
missing_keywords: strList.optional(),
|
|
4625
|
+
recommendations: strList.optional().describe("\uC790\uAE30\uC18C\uAC1C\uC11C/\uC9C0\uC6D0 \uC804\uB7B5 \uC81C\uC548")
|
|
4613
4626
|
});
|
|
4614
4627
|
var FitAnalysisRecordSchema = external_exports.object({
|
|
4615
4628
|
...baseRecord,
|
|
@@ -4623,18 +4636,18 @@ var FitAnalysisRecordSchema = external_exports.object({
|
|
|
4623
4636
|
recommendations: external_exports.array(external_exports.string())
|
|
4624
4637
|
});
|
|
4625
4638
|
var ApplicationInputSchema = external_exports.object({
|
|
4626
|
-
job_id:
|
|
4639
|
+
job_id: reqLine,
|
|
4627
4640
|
status: external_exports.enum(APPLICATION_STATUSES).optional(),
|
|
4628
|
-
resume_id:
|
|
4629
|
-
cover_letter_id:
|
|
4630
|
-
applied_at:
|
|
4631
|
-
notes:
|
|
4641
|
+
resume_id: optLine,
|
|
4642
|
+
cover_letter_id: optLine,
|
|
4643
|
+
applied_at: optLine,
|
|
4644
|
+
notes: optNote
|
|
4632
4645
|
});
|
|
4633
4646
|
var ApplicationStatusUpdateSchema = external_exports.object({
|
|
4634
|
-
job_id:
|
|
4635
|
-
application_id:
|
|
4647
|
+
job_id: optLine,
|
|
4648
|
+
application_id: optLine,
|
|
4636
4649
|
status: external_exports.enum(APPLICATION_STATUSES),
|
|
4637
|
-
note:
|
|
4650
|
+
note: optNote.describe("\uC0C1\uD0DC \uBCC0\uACBD \uC0AC\uC720/\uBA54\uBAA8")
|
|
4638
4651
|
});
|
|
4639
4652
|
var ApplicationRecordSchema = external_exports.object({
|
|
4640
4653
|
...baseRecord,
|
|
@@ -4646,24 +4659,24 @@ var ApplicationRecordSchema = external_exports.object({
|
|
|
4646
4659
|
notes: external_exports.string().nullable()
|
|
4647
4660
|
});
|
|
4648
4661
|
var StarGuideSchema = external_exports.object({
|
|
4649
|
-
question: external_exports.string(),
|
|
4650
|
-
situation:
|
|
4651
|
-
task:
|
|
4652
|
-
action:
|
|
4653
|
-
result:
|
|
4662
|
+
question: external_exports.string().max(MAX_NOTE),
|
|
4663
|
+
situation: optNote,
|
|
4664
|
+
task: optNote,
|
|
4665
|
+
action: optNote,
|
|
4666
|
+
result: optNote
|
|
4654
4667
|
});
|
|
4655
4668
|
var InterviewQuestionSchema = external_exports.object({
|
|
4656
|
-
question: external_exports.string(),
|
|
4657
|
-
intent: external_exports.string().optional().describe("\uC9C8\uBB38 \uC758\uB3C4"),
|
|
4658
|
-
followups:
|
|
4659
|
-
answer_outline:
|
|
4669
|
+
question: external_exports.string().max(MAX_NOTE),
|
|
4670
|
+
intent: external_exports.string().max(MAX_NOTE).optional().describe("\uC9C8\uBB38 \uC758\uB3C4"),
|
|
4671
|
+
followups: strList.optional().describe("\uC608\uC0C1 \uAF2C\uB9AC \uC9C8\uBB38"),
|
|
4672
|
+
answer_outline: optBody.describe("\uB2F5\uBCC0 \uAC00\uC774\uB4DC/\uD575\uC2EC \uD3EC\uC778\uD2B8")
|
|
4660
4673
|
});
|
|
4661
4674
|
var InterviewPrepInputSchema = external_exports.object({
|
|
4662
|
-
job_id:
|
|
4663
|
-
questions: external_exports.array(InterviewQuestionSchema).optional(),
|
|
4664
|
-
star_guides: external_exports.array(StarGuideSchema).optional(),
|
|
4665
|
-
self_introduction:
|
|
4666
|
-
notes:
|
|
4675
|
+
job_id: reqLine,
|
|
4676
|
+
questions: external_exports.array(InterviewQuestionSchema).max(MAX_ITEMS).optional(),
|
|
4677
|
+
star_guides: external_exports.array(StarGuideSchema).max(MAX_ITEMS).optional(),
|
|
4678
|
+
self_introduction: optBody.describe("1\uBD84 \uC790\uAE30\uC18C\uAC1C \uCD08\uC548"),
|
|
4679
|
+
notes: optNote.describe("\uBA74\uC811 \uD6C4\uAE30/\uBA54\uBAA8")
|
|
4667
4680
|
});
|
|
4668
4681
|
var InterviewPrepRecordSchema = external_exports.object({
|
|
4669
4682
|
...baseRecord,
|