career-compass-mcp 2.4.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,56 @@
1
+ /**
2
+ * How `manifest.json` is written to disk — the encoding, not the content.
3
+ *
4
+ * `manifest.json` is generated from the live server by
5
+ * `scripts/gen-manifest-tools.mjs`, and it is checked in with every non-ASCII
6
+ * character as a `\uXXXX` escape. Both forms are valid JSON and decode
7
+ * identically, so the choice is purely about diffs: the descriptions are full
8
+ * of em dashes, and letting them land as literals buries the first real copy
9
+ * change under a screenful of encoding noise.
10
+ *
11
+ * That invariant was documented only in a comment inside the generator, which
12
+ * meant nothing enforced it. The v2.4.0 release (18ec920) checked the manifest
13
+ * back in with literal em dashes — semantically identical, so
14
+ * manifest-truth.test.ts (which compares *parsed* descriptions) stayed green
15
+ * and CI never noticed. The cost showed up in the workflow instead:
16
+ * `gen-manifest-tools.mjs --check` failed on a clean checkout of main claiming
17
+ * "manifest.json disagrees with the server" when the copy was in fact correct,
18
+ * and `npm run gen:manifest` rewrote ten untouched lines every run.
19
+ *
20
+ * So the encoding lives here, in one typed place, exercised by
21
+ * manifest-truth.test.ts against the file that actually ships.
22
+ */
23
+ /**
24
+ * Escape every non-ASCII character in an already-serialized JSON string.
25
+ *
26
+ * JSON's `\u` escape is exactly four hex digits, so anything outside the BMP
27
+ * has to be emitted as the surrogate pair JSON already uses internally. The
28
+ * first version of this formatted the whole code point with a single escape,
29
+ * which turned a four-digit `padStart` into a five-digit sequence: an emoji
30
+ * (`U+1F600`) came out as `ὠ0`, which re-parses as `ὠ` followed by a
31
+ * literal `0` — `ὠ0`. Still valid JSON, so nothing threw; the description was
32
+ * just silently corrupted. No manifest string has ever contained an astral
33
+ * character, so this was latent rather than shipped, but the failure mode is
34
+ * quiet enough to be worth closing.
35
+ */
36
+ export declare function escapeNonAscii(json: string): string;
37
+ /** A tool as both the manifest and a `tools/list` response describe it. */
38
+ export interface ManifestTool {
39
+ name: string;
40
+ description: string;
41
+ }
42
+ /**
43
+ * The exact bytes `manifest.json` should contain, given the manifest as parsed
44
+ * and the tools the server actually serves.
45
+ *
46
+ * Spreading rather than mutating keeps the caller's object intact; `tools`
47
+ * already exists on the manifest, so it keeps its original key position and
48
+ * the rewrite stays a content diff instead of a reordering.
49
+ *
50
+ * Emits LF endings. The repo is developed on Windows with `core.autocrlf=true`,
51
+ * so a working copy is checked out with CRLF while the committed blob is LF —
52
+ * comparisons against this output must normalize line endings rather than
53
+ * assume either one.
54
+ */
55
+ export declare function renderManifest(manifest: Record<string, unknown>, tools: ManifestTool[]): string;
56
+ //# sourceMappingURL=manifest-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-format.d.ts","sourceRoot":"","sources":["../../src/manifest-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAcnD;AAED,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,YAAY,EAAE,GACpB,MAAM,CAER"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * How `manifest.json` is written to disk — the encoding, not the content.
3
+ *
4
+ * `manifest.json` is generated from the live server by
5
+ * `scripts/gen-manifest-tools.mjs`, and it is checked in with every non-ASCII
6
+ * character as a `\uXXXX` escape. Both forms are valid JSON and decode
7
+ * identically, so the choice is purely about diffs: the descriptions are full
8
+ * of em dashes, and letting them land as literals buries the first real copy
9
+ * change under a screenful of encoding noise.
10
+ *
11
+ * That invariant was documented only in a comment inside the generator, which
12
+ * meant nothing enforced it. The v2.4.0 release (18ec920) checked the manifest
13
+ * back in with literal em dashes — semantically identical, so
14
+ * manifest-truth.test.ts (which compares *parsed* descriptions) stayed green
15
+ * and CI never noticed. The cost showed up in the workflow instead:
16
+ * `gen-manifest-tools.mjs --check` failed on a clean checkout of main claiming
17
+ * "manifest.json disagrees with the server" when the copy was in fact correct,
18
+ * and `npm run gen:manifest` rewrote ten untouched lines every run.
19
+ *
20
+ * So the encoding lives here, in one typed place, exercised by
21
+ * manifest-truth.test.ts against the file that actually ships.
22
+ */
23
+ /**
24
+ * Escape every non-ASCII character in an already-serialized JSON string.
25
+ *
26
+ * JSON's `\u` escape is exactly four hex digits, so anything outside the BMP
27
+ * has to be emitted as the surrogate pair JSON already uses internally. The
28
+ * first version of this formatted the whole code point with a single escape,
29
+ * which turned a four-digit `padStart` into a five-digit sequence: an emoji
30
+ * (`U+1F600`) came out as `ὠ0`, which re-parses as `ὠ` followed by a
31
+ * literal `0` — `ὠ0`. Still valid JSON, so nothing threw; the description was
32
+ * just silently corrupted. No manifest string has ever contained an astral
33
+ * character, so this was latent rather than shipped, but the failure mode is
34
+ * quiet enough to be worth closing.
35
+ */
36
+ export function escapeNonAscii(json) {
37
+ let out = "";
38
+ // Iterating a string yields whole code points, so `ch` is the astral
39
+ // character itself (length 2) rather than a lone surrogate.
40
+ for (const ch of json) {
41
+ if (ch.codePointAt(0) <= 127) {
42
+ out += ch;
43
+ continue;
44
+ }
45
+ for (let i = 0; i < ch.length; i++) {
46
+ out += "\\u" + ch.charCodeAt(i).toString(16).padStart(4, "0");
47
+ }
48
+ }
49
+ return out;
50
+ }
51
+ /**
52
+ * The exact bytes `manifest.json` should contain, given the manifest as parsed
53
+ * and the tools the server actually serves.
54
+ *
55
+ * Spreading rather than mutating keeps the caller's object intact; `tools`
56
+ * already exists on the manifest, so it keeps its original key position and
57
+ * the rewrite stays a content diff instead of a reordering.
58
+ *
59
+ * Emits LF endings. The repo is developed on Windows with `core.autocrlf=true`,
60
+ * so a working copy is checked out with CRLF while the committed blob is LF —
61
+ * comparisons against this output must normalize line endings rather than
62
+ * assume either one.
63
+ */
64
+ export function renderManifest(manifest, tools) {
65
+ return escapeNonAscii(JSON.stringify({ ...manifest, tools }, null, 2)) + "\n";
66
+ }
67
+ //# sourceMappingURL=manifest-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-format.js","sourceRoot":"","sources":["../../src/manifest-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,qEAAqE;IACrE,4DAA4D;IAC5D,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAE,IAAI,GAAG,EAAE,CAAC;YAC9B,GAAG,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAQD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAiC,EACjC,KAAqB;IAErB,OAAO,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAChF,CAAC"}
@@ -1,5 +1,29 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  /** The shapes as one block, for the `data` parameter description. */
3
3
  export declare const SECTION_SHAPE_HELP: string;
4
+ /**
5
+ * `data` has to survive arriving as a JSON string.
6
+ *
7
+ * Its shape depends on `section`, so it is declared `z.unknown()`, and zod emits
8
+ * `{}` for that — a required property with no `type` at all. A client with no
9
+ * type to hold onto sends the value as a JSON string, the section schema sees a
10
+ * string where it wants an object or an array, and every write is refused. That
11
+ * was issue #34: `save_career_section` never wrote once, for anyone, on v2.4.0,
12
+ * which also meant a fresh install could never leave the empty state.
13
+ *
14
+ * Parsing here rather than widening the section schemas keeps one shape on disk:
15
+ * the section schema stays the single description of a valid section, and this
16
+ * only decides what counts as "the caller sent JSON".
17
+ *
18
+ * Every section is an object or an array, so a bare string is never a valid
19
+ * value — parsing one can't mask a legitimate write.
20
+ */
21
+ export declare function coerceSectionData(data: unknown): {
22
+ ok: true;
23
+ value: unknown;
24
+ } | {
25
+ ok: false;
26
+ message: string;
27
+ };
4
28
  export declare function registerCareerKBTools(server: McpServer): void;
5
29
  //# sourceMappingURL=career-kb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"career-kb.d.ts","sourceRoot":"","sources":["../../../src/tools/career-kb.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0DzE,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,QAElB,CAAC;AAEd,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2X7D"}
1
+ {"version":3,"file":"career-kb.d.ts","sourceRoot":"","sources":["../../../src/tools/career-kb.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0DzE,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,QAElB,CAAC;AAEd;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,OAAO,GACZ;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAyB/D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqZ7D"}
@@ -51,6 +51,48 @@ const SECTION_SHAPES = {
51
51
  export const SECTION_SHAPE_HELP = Object.entries(SECTION_SHAPES)
52
52
  .map(([section, shape]) => `${section}: ${shape}`)
53
53
  .join("\n");
54
+ /**
55
+ * `data` has to survive arriving as a JSON string.
56
+ *
57
+ * Its shape depends on `section`, so it is declared `z.unknown()`, and zod emits
58
+ * `{}` for that — a required property with no `type` at all. A client with no
59
+ * type to hold onto sends the value as a JSON string, the section schema sees a
60
+ * string where it wants an object or an array, and every write is refused. That
61
+ * was issue #34: `save_career_section` never wrote once, for anyone, on v2.4.0,
62
+ * which also meant a fresh install could never leave the empty state.
63
+ *
64
+ * Parsing here rather than widening the section schemas keeps one shape on disk:
65
+ * the section schema stays the single description of a valid section, and this
66
+ * only decides what counts as "the caller sent JSON".
67
+ *
68
+ * Every section is an object or an array, so a bare string is never a valid
69
+ * value — parsing one can't mask a legitimate write.
70
+ */
71
+ export function coerceSectionData(data) {
72
+ if (typeof data !== "string")
73
+ return { ok: true, value: data };
74
+ const trimmed = data.trim();
75
+ if (trimmed === "") {
76
+ return {
77
+ ok: false,
78
+ message: "`data` arrived as an empty string. Send the section contents as JSON.",
79
+ };
80
+ }
81
+ try {
82
+ return { ok: true, value: JSON.parse(trimmed) };
83
+ }
84
+ catch {
85
+ // A string that isn't JSON is a different failure from a wrong shape, and
86
+ // saying so is what stops the caller re-sending the same prose twice.
87
+ const preview = trimmed.length > 60 ? `${trimmed.slice(0, 60)}…` : trimmed;
88
+ return {
89
+ ok: false,
90
+ message: `\`data\` arrived as a string that isn't valid JSON, so nothing was written.\n\n` +
91
+ ` Received: ${preview}\n\n` +
92
+ `Send the section contents as JSON — an object for \`profile\`, an array for every other section.`,
93
+ };
94
+ }
95
+ }
54
96
  export function registerCareerKBTools(server) {
55
97
  server.registerTool("ingest_document", {
56
98
  title: "Ingest Career Document",
@@ -345,8 +387,19 @@ ${statusUpdated
345
387
  "kept as a timestamped .bak next to it.",
346
388
  inputSchema: {
347
389
  section: z.enum(CAREER_SECTIONS).describe("Which part of the Career KB to write. 'profile' is a single object; every other section is a list."),
348
- data: z.unknown().describe("The complete contents for this section — an object for 'profile', an array for every " +
349
- "other section. Shapes (? marks optional):\n\n" +
390
+ // Declared as a union, not `z.unknown()`: zod emits `{}` for unknown, and
391
+ // a required property with no `type` is what made clients send this as a
392
+ // JSON string and every write fail (#34). Object and array come first so
393
+ // a client picks a structured form; `string` stays in the union so a
394
+ // client that still stringifies reaches coerceSectionData and a useful
395
+ // error, instead of being refused by the SDK before the handler runs.
396
+ data: z.union([
397
+ z.record(z.string(), z.unknown()),
398
+ z.array(z.unknown()),
399
+ z.string(),
400
+ ]).describe("The complete contents for this section — an object for 'profile', an array for every " +
401
+ "other section. Send it as structured JSON, not as a stringified blob. " +
402
+ "Shapes (? marks optional):\n\n" +
350
403
  SECTION_SHAPE_HELP),
351
404
  },
352
405
  }, async ({ section, data }) => {
@@ -354,8 +407,21 @@ ${statusUpdated
354
407
  // disk. Writing first and validating on read would let one bad write make
355
408
  // the whole KB unloadable — loadCareerData fails closed on a corrupt
356
409
  // section, so an invalid profile.yaml takes every KB-backed tool down.
410
+ // Clients that get no `type` for `data` send it as a JSON string; unwrap
411
+ // that before validating, or every write from those clients is refused.
412
+ const coerced = coerceSectionData(data);
413
+ if (!coerced.ok) {
414
+ return {
415
+ isError: true,
416
+ content: [{
417
+ type: "text",
418
+ text: `❌ ${coerced.message}\n\n` +
419
+ `Expected \`${section}\`: ${SECTION_SHAPES[section]}`,
420
+ }],
421
+ };
422
+ }
357
423
  const schema = CAREER_SECTION_SCHEMA[section];
358
- const parsed = schema.safeParse(data);
424
+ const parsed = schema.safeParse(coerced.value);
359
425
  if (!parsed.success) {
360
426
  const issues = parsed.error.issues
361
427
  .slice(0, 6)
@@ -1 +1 @@
1
- {"version":3,"file":"career-kb.js","sourceRoot":"","sources":["../../../src/tools/career-kb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"career-kb.js","sourceRoot":"","sources":["../../../src/tools/career-kb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAkB,iBAAiB,EAAgB,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChL,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1G,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;qCAEqC;AACrC,MAAM,qBAAqB,GAAG;IAC5B,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC/B,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IACtB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IAC1B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;CAC1B,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,MAAM,cAAc,GAAuD;IACzE,OAAO,EACL,iFAAiF;QACjF,+FAA+F;IACjG,UAAU,EACR,kFAAkF;QAClF,mDAAmD;QACnD,qEAAqE;QACrE,4EAA4E;QAC5E,gGAAgG;IAClG,MAAM,EACJ,yEAAyE;QACzE,wEAAwE;IAC1E,SAAS,EACP,qEAAqE;QACrE,4DAA4D;IAC9D,QAAQ,EACN,mFAAmF;QACnF,6BAA6B;IAC/B,YAAY,EACV,oFAAoF;QACpF,0BAA0B;CAC7B,CAAC;AAEF,qEAAqE;AACrE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;KAC7D,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,KAAK,KAAK,EAAE,CAAC;KACjD,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAa;IAEb,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAE/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QACnB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,uEAAuE;SACjF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3E,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EACL,iFAAiF;gBACjF,eAAe,OAAO,MAAM;gBAC5B,kGAAkG;SACrG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IAErD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,wBAAwB;QAC/B,kGAAkG;QAClG,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EACT,kKAAkK;YAClK,wJAAwJ;QAC1J,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAC5D,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,EAAE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACxJ,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACnF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACrF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;SACrG;KACF;IACD,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,wEAAwE;IACxE,2EAA2E;IAC3E,6DAA6D;IAC7D,KAAK,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,EAAE;QACjF,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;YAGJ,YAAY;EACtB,cAAc,CAAC,CAAC,CAAC,aAAa,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE;EACnD,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE;EAC5D,UAAU,CAAC,CAAC,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAG7C,cAAc,CAAC,mBAAmB,EAAE,OAAO,CAAC;;;;;;;;;;;;;;mBAc3B,YAAY,MAAM,iBAAiB,IAAI,iBAAiB,MAAM,UAAU,IAAI,gBAAgB;;WAEpG,cAAc,IAAI,SAAS;cACxB,iBAAiB,IAAI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mFAkCuC;iBAC1E,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,6BAA6B;QACpC,qIAAqI;QACrI,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;QACD,0EAA0E;QAC1E,mEAAmE;QACnE,yEAAyE;QACzE,4CAA4C;QAC5C,WAAW,EACT,6FAA6F;YAC7F,yFAAyF;YACzF,uFAAuF;QACzF,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3C,4FAA4F;gBAC1F,sFAAsF,CACzF;YACD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;YAChI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kFAAkF,CAAC;YACxH,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC/E,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,4BAA4B,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,gLAAgL,CAAC;YACrU,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC5E,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;SAC9G;KACF,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,EAAE;QACtG,yEAAyE;QACzE,yEAAyE;QACzE,uEAAuE;QACvE,8CAA8C;QAC9C,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,aAAa,EAAE,CAAC;YAClB,wEAAwE;YACxE,iEAAiE;YACjE,MAAM,cAAc,CAAC,CAAC,QAAQ,EAAE,EAAE;gBAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,aAAa,CAAC,CAAC;gBACpE,qEAAqE;gBACrE,IAAI,CAAC,GAAG;oBAAE,OAAO;gBACjB,OAAO,GAAG,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;gBACjC,IAAI,GAAG,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;gBACxB,iCAAiC;gBACjC,GAAG,CAAC,MAAM,GAAG,UAAU,CAAC;gBACxB,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC3C,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE;;;eAGD,OAAO,IAAI,SAAS;YACvB,IAAI,IAAI,SAAS;EAC3B,WAAW,CAAC,CAAC,CAAC,aAAa,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;YACnC,YAAY;qBACH,cAAc,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS;;;EAGnF,cAAc,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;;;;;8CAKT,YAAY;;;;;;;EAOxD,cAAc,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC,CAAC,EAAE;;cAE1E,YAAY;EACxB,YAAY,KAAK,gBAAgB,CAAC,CAAC,CAAC,qGAAqG,CAAC,CAAC,CAAC,EAAE;EAC9I,YAAY,KAAK,kBAAkB,CAAC,CAAC,CAAC,iGAAiG,CAAC,CAAC,CAAC,EAAE;EAC5I,YAAY,KAAK,oBAAoB,CAAC,CAAC,CAAC,8FAA8F,CAAC,CAAC,CAAC,EAAE;EAC3I,YAAY,KAAK,4BAA4B,CAAC,CAAC,CAAC,uGAAuG,CAAC,CAAC,CAAC,EAAE;;;;;;;EAO5J,aAAa;wBACb,CAAC,CAAC;YACQ,aAAa,6CAA6C;wBACpE,CAAC,CAAC,aAAa;4BACb,CAAC,CAAC;sCACgC,aAAa,+EAA+E;4BAC9H,CAAC,CAAC,EAAE,EAAE;iBACD,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,wBAAwB;QAC/B,uGAAuG;QACvG,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EACT,oSAAoS;QACtS,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;gBACX,YAAY;gBACZ,mBAAmB;gBACnB,kBAAkB;gBAClB,mBAAmB;gBACnB,gBAAgB;gBAChB,KAAK;gBACL,MAAM;aACP,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACnE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACxF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6GAA6G,CAAC;YACtJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAC7E,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YAC9G,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACrI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC;gBACb,qBAAqB;gBACrB,mBAAmB;gBACnB,gBAAgB;gBAChB,WAAW;gBACX,iBAAiB;gBACjB,QAAQ;aACT,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SACrE;KACF,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5F,MAAM,KAAK,GAAiB;YAC1B,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YAC9B,IAAI;YACJ,OAAO;YACP,MAAM;YACN,aAAa;YACb,OAAO;YACP,IAAI;YACJ,OAAO;YACP,SAAS;YACT,MAAM;SACP,CAAC;QAEF,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAM;4BACZ,IAAI,EACF,4EAA4E;gCAC5E,mDAAmD;gCACnD,8FAA8F;gCAC9F,yDAAyD,OAAO,EAAE;yBACrE,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG;YACX,OAAO,IAAI,KAAK,OAAO,IAAI;YAC3B,IAAI;YACJ,aAAa,IAAI,KAAK,aAAa,IAAI;YACvC,SAAS,IAAI,cAAc,SAAS,EAAE;SACvC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE9B,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,yCAAyC,IAAI,UAAU;wBACvD,KAAK,OAAO,IAAI;wBAChB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/B,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnF,cAAc,KAAK,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,sBAAsB;wBAChF,+FAA+F;iBAClG,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,wBAAwB;QAC/B,0EAA0E;QAC1E,yEAAyE;QACzE,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,WAAW,EACT,yFAAyF;YACzF,0FAA0F;YAC1F,2FAA2F;YAC3F,wCAAwC;QAC1C,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CACvC,oGAAoG,CACrG;YACD,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,qEAAqE;YACrE,uEAAuE;YACvE,sEAAsE;YACtE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;gBACZ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;gBACjC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpB,CAAC,CAAC,MAAM,EAAE;aACX,CAAC,CAAC,QAAQ,CACT,uFAAuF;gBACrF,wEAAwE;gBACxE,gCAAgC;gBAChC,kBAAkB,CACrB;SACF;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1B,wEAAwE;QACxE,0EAA0E;QAC1E,qEAAqE;QACrE,uEAAuE;QACvE,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,KAAK,OAAO,CAAC,OAAO,MAAM;4BAC1B,cAAc,OAAO,OAAO,cAAc,CAAC,OAAO,CAAC,EAAE;qBACxD,CAAC;aACH,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;iBAC/B,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,uCAAuC,OAAO,6BAA6B;4BAC3E,kBAAkB,OAAO,2BAA2B,MAAM,EAAE;4BAC5D,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;4BACzF,iEAAiE;4BACjE,+DAA+D;4BAC/D,0CAA0C;4BAC1C,kBAAkB,OAAO,OAAO,cAAc,CAAC,OAAO,CAAC,EAAE;qBAC5D,CAAC;aACH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,OAAO,KAAM,KAAe,CAAC,OAAO,EAAE,EAAE,CAAC;aAC/F,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,aAAa,OAAO,OAAO,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,OAAO;wBAC5E,KAAK,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,OAAO,CAAC,SAAS;wBAC7D,uFAAuF;iBAC1F,CAAC;SACH,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "career-compass-mcp",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "description": "AI-native career co-pilot for Claude — Career KB, resume tailoring, job pipeline, interview prep, and offer evaluation via MCP",
5
5
  "type": "module",
6
6
  "main": "build/src/index.js",