job_ops-mcp 0.7.0 → 0.8.0

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/.env.example CHANGED
@@ -4,6 +4,12 @@
4
4
  MCP_JSA_PORT=7891
5
5
  MCP_JSA_HOST=127.0.0.1
6
6
 
7
+ # Auth — bearer token gating /mcp, /files/*, and the dashboard (all carry PII).
8
+ # Leave empty for localhost-only use (frictionless). REQUIRED to bind non-localhost:
9
+ # with MCP_JSA_HOST != 127.0.0.1 and no token, the server refuses to start (default-deny).
10
+ # Generate one with: openssl rand -hex 32
11
+ MCP_JSA_AUTH_TOKEN=
12
+
7
13
  # Project root — where cv.md, config/profile.yml, portals.yml live.
8
14
  # Defaults to the directory this server runs from.
9
15
  # To reuse the existing career-ops/ data, point it there:
@@ -14,7 +20,11 @@ MCP_JSA_PROJECT_ROOT=
14
20
  MCP_JSA_DATA_DIR=./data
15
21
  MCP_JSA_OUTPUT_DIR=./output
16
22
 
17
- # LLM provider only used on api/batch paths in later milestones.
23
+ # Scoring — api/batch paths prefer MCP sampling (your connected client's model; no key).
24
+ # Set false to force the BYO-key provider below even when the client supports sampling.
25
+ MCP_JSA_SAMPLING=true
26
+
27
+ # LLM provider — BYO-key FALLBACK for api/batch paths when the client can't sample.
18
28
  # chat-mode (default) runs zero LLM calls server-side; the chat client is the brain.
19
29
  MCP_JSA_LLM_PROVIDER=gemini # gemini | deepseek | none
20
30
  MCP_JSA_LLM_MODEL=
package/README.md CHANGED
@@ -83,7 +83,7 @@ without one.
83
83
 
84
84
  ---
85
85
 
86
- ## Tools (36 — one MCP `tools/list` call away)
86
+ ## Tools (38 — one MCP `tools/list` call away)
87
87
 
88
88
  | Group | Tools |
89
89
  |---|---|
@@ -94,7 +94,7 @@ without one.
94
94
  | **Outreach** | `find_warm_intros`, `find_founders`, `draft_outreach`, `draft_followup`, `draft_reply`, `get_outreach_queue`, `update_outreach`, `get_followups_due` |
95
95
  | **Interview / offer** | `extract_stories`, `get_story_bank`, `negotiation_brief` |
96
96
  | **Research** | `deep_research`, `enrich_company`, `daily_digest` |
97
- | **Profile + ops** | `get_career_packet`, `update_career_packet`, `cost_estimate` |
97
+ | **Profile + ops** | `get_career_packet`, `update_career_packet`, `update_profile` (elicitation), `cost_estimate` |
98
98
  | **Apply (preview only — never submits)** | `apply_prefill` |
99
99
  | **Visa (optional, can be hidden)** | `visa_signal`, `import_h1b`, `import_linkedin` |
100
100
  | **Scheduler (opt-in cron, off by default)** | `scheduler_status`, `scheduler_enable`, `scheduler_disable` |
@@ -105,6 +105,43 @@ tailoring_rules, outreach_tone, negotiation_playbook, career_packet — all load
105
105
 
106
106
  ---
107
107
 
108
+ ## No LLM key needed (MCP sampling)
109
+
110
+ The scoring tools (`batch_evaluate`, `evaluate_job` `mode="api"`) prefer **MCP sampling**:
111
+ the server asks your *already-connected client's model* for the completion — same rubric,
112
+ same strict-JSON contract — so you need **no separate Gemini/DeepSeek key**. The chat-mode
113
+ and api-mode rating paths collapse into one sampling-based path.
114
+
115
+ - **Capability- and transport-gated.** Sampling is a server→client request, so it needs a
116
+ transport that carries bidirectional traffic — **stdio** (e.g. Claude Desktop). The
117
+ stateless HTTP transport can't deliver server-initiated requests, so HTTP clients
118
+ **fall back automatically** to the BYO-key path (`MCP_JSA_LLM_PROVIDER` + key); if that
119
+ isn't configured either, `evaluate_job mode="chat"` (the default) still works — your
120
+ chat scores it directly. The gate checks both your client's advertised `sampling`
121
+ capability and the transport, so a fallback is clean (no hang).
122
+ - **Cost.** Sampling runs on the client's model, so the cost is **borne by the client**.
123
+ `cost_estimate` still works: sampling calls are recorded and flagged as client-borne
124
+ ($0 server cost) so the total isn't misread.
125
+ - Set `MCP_JSA_SAMPLING=false` to force the BYO-key path even when sampling is available.
126
+
127
+ ## Frictionless profile setup (MCP elicitation)
128
+
129
+ `update_profile` uses **MCP elicitation** (form mode) so your client can collect identity
130
+ fields + per-archetype taglines through a structured form — no hand-editing YAML. On
131
+ accept it writes `config/profile.yml` and reseeds the career packet in one step.
132
+
133
+ Sensitive inputs (your LinkedIn export path, credentials) use **URL-mode elicitation**
134
+ (2025-11-25): the server hands you a one-time local URL where you enter the value
135
+ directly, so it **never passes through the MCP client / chat transcript**. `import_linkedin`
136
+ uses this when you omit `path` and your client supports it.
137
+
138
+ Both are capability- and transport-gated (like sampling, elicitation is a server→client
139
+ request that needs a stdio connection). Clients without elicitation support — and all HTTP
140
+ clients — fall back to the file-based + argument paths (`update_profile fields=…`, edit
141
+ `config/profile.yml`, pass `import_linkedin path=…`), which work exactly as before.
142
+
143
+ ---
144
+
108
145
  ## Designed to be made yours
109
146
 
110
147
  The defaults assume nothing about your location, citizenship, role, or industry. Every
@@ -166,9 +203,11 @@ roles where sponsorship is a non-issue — turn it off; the rest of the system w
166
203
  | `MCP_JSA_TEMPLATE_DIR` | _empty_ | User-owned dir holding additional resume/cover themes — overrides bundled themes of the same name. See [Custom themes](#custom-themes) + [`TEMPLATES.md`](./TEMPLATES.md). |
167
204
  | `MCP_JSA_DEFAULT_TEMPLATE` | `default` | Theme used when `render_pdf` has no explicit `template` argument. |
168
205
  | `MCP_JSA_PUBLIC_BASE_URL` | _empty_ | Public URL emitted in artifact links. Default: `http://127.0.0.1:<port>`. Set when running on a remote host (Tailscale, LAN, etc.) — see [Running on a remote host](#running-on-a-remote-host--tailscale). |
169
- | `MCP_JSA_LLM_PROVIDER` | `gemini` | Used only by `api`/batch paths: `gemini`, `deepseek`, `none` |
206
+ | `MCP_JSA_AUTH_TOKEN` | _empty_ | Bearer token gating `/mcp`, `/files/*`, and the dashboard. **Required** to bind to anything other than localhost — without it, a non-localhost bind refuses to start (default-deny). See [Security model](#security-model). |
207
+ | `MCP_JSA_SAMPLING` | `true` | Prefer MCP sampling (the connected client's model — no API key) for `api`/batch scoring. Set `false` to force the BYO-key path. |
208
+ | `MCP_JSA_LLM_PROVIDER` | `gemini` | BYO-key **fallback** for `api`/batch paths when the client can't sample: `gemini`, `deepseek`, `none` |
170
209
  | `MCP_JSA_LLM_MODEL` | _empty_ | Provider-specific model id |
171
- | `GEMINI_API_KEY` / `DEEPSEEK_API_KEY` | _empty_ | Provider credentials |
210
+ | `GEMINI_API_KEY` / `DEEPSEEK_API_KEY` | _empty_ | Provider credentials (only needed when sampling is unavailable) |
172
211
  | `MCP_JSA_SCHEDULER_ENABLED` | `false` | Whether opt-in cron runs at all |
173
212
 
174
213
  A working starter is at `.env.example`.
@@ -310,23 +349,51 @@ export MCP_JSA_PUBLIC_BASE_URL="https://jobs.example.com"
310
349
  ```
311
350
 
312
351
  Every artifact link (resume PDF, .tex, .docx, eval report, apply_prefill screenshot,
313
- tracker URL) now uses that base. **No other behaviour changes** the server still binds
314
- to `MCP_JSA_HOST` (default `127.0.0.1`); to actually accept connections from other
315
- devices, also set `MCP_JSA_HOST=0.0.0.0`. `npx job_ops-mcp doctor` prints the
316
- effective public base URL so you can confirm what your links will look like.
352
+ tracker URL) now uses that base. The server still binds to `MCP_JSA_HOST` (default
353
+ `127.0.0.1`); to accept connections from other devices, also set `MCP_JSA_HOST=0.0.0.0`
354
+ **which now requires `MCP_JSA_AUTH_TOKEN`** (see [Security model](#security-model)).
355
+ `npx job_ops-mcp doctor` prints the effective public base URL and auth posture.
317
356
 
318
357
  A malformed value (e.g. `not-a-url`) is rejected at boot with a warning on stderr; the
319
358
  server keeps running with the default 127.0.0.1 base. Trailing slashes are stripped.
320
359
 
321
- ### Security note
360
+ ---
361
+
362
+ ## Security model
363
+
364
+ This server handles **PII**: your resume PDFs, cover letters, eval reports, your
365
+ LinkedIn connections, and H1B-derived employer data. The auth posture is decided entirely
366
+ by **where you bind** and **whether a token is set**:
367
+
368
+ | Bind (`MCP_JSA_HOST`) | `MCP_JSA_AUTH_TOKEN` | Result |
369
+ |---|---|---|
370
+ | `127.0.0.1` (default) | unset | **Open** — frictionless local use. PII stays on loopback. |
371
+ | `127.0.0.1` | set | **Token required** — bearer auth enforced even locally (opt-in). |
372
+ | `0.0.0.0` / LAN / Tailscale | **unset** | **Refuses to start** (default-deny). |
373
+ | `0.0.0.0` / LAN / Tailscale | set | **Token required** — bearer auth on every PII route. |
374
+
375
+ When a token is required, every PII-bearing route — the MCP endpoint (`/mcp`), the file
376
+ server (`/files/*`), and the tracker dashboard (`/`) — demands an
377
+ `Authorization: Bearer <token>` header. Requests without it get `401` with a
378
+ `WWW-Authenticate` header pointing at the protected-resource metadata document
379
+ (`/.well-known/oauth-protected-resource`). This aligns with the MCP 2025-06-18 model of
380
+ treating the server as an **OAuth Resource Server**, to the extent practical for a
381
+ self-hosted single-user tool: one operator-provisioned static token, no full
382
+ authorization-server flow.
383
+
384
+ ```bash
385
+ # Expose over Tailscale/LAN — generate a strong token first.
386
+ export MCP_JSA_HOST=0.0.0.0
387
+ export MCP_JSA_AUTH_TOKEN="$(openssl rand -hex 32)"
388
+ export MCP_JSA_PUBLIC_BASE_URL="https://jobs.example.ts.net"
389
+ npx job_ops-mcp start
390
+ ```
322
391
 
323
- This setting **only changes the URLs the server emits in responses**. It does not add
324
- authentication and does not change the bind address. If you set `MCP_JSA_HOST=0.0.0.0`
325
- so the server accepts remote connections, the HTTP file server then serves your resume
326
- PDFs, cover letters, eval reports, LinkedIn-derived data, and H1B-derived data **without
327
- authentication** to anyone who can reach the port. Restrict access to a private network
328
- (Tailscale, a VPN, a reverse proxy with auth) — never expose this directly on the public
329
- internet.
392
+ **What's protected:** `/mcp`, `/files/*`, `/`. **What's open by design:** `/healthz`
393
+ (liveness, no PII) and the discovery metadata. **Hard rule:** PII must never be served
394
+ unauthenticated to a network the default-deny boot guard exists precisely so a missing
395
+ token fails loudly instead of silently exposing your data. Still prefer a private network
396
+ (Tailscale / VPN / authenticated reverse proxy) over the public internet.
330
397
 
331
398
  ---
332
399
 
package/dist/cli.js CHANGED
@@ -279,6 +279,37 @@ async function cmdDoctor() {
279
279
  catch (e) {
280
280
  console.log(` ${warn()} modes check failed: ${e?.message ?? e}`);
281
281
  }
282
+ // 5a-ter. Auth posture — report whether the PII surface is protected.
283
+ try {
284
+ const { config: cfg } = await import('./config.js');
285
+ const p = cfg.authPolicy;
286
+ if (p.mode === 'open') {
287
+ console.log(` ${tick()} auth: open (localhost-only bind — frictionless, no token). ${c.dim('PII stays on 127.0.0.1.')}`);
288
+ console.log(` ${c.dim('To expose remotely, set MCP_JSA_HOST + MCP_JSA_AUTH_TOKEN (required).')}`);
289
+ }
290
+ else if (p.mode === 'token') {
291
+ console.log(` ${tick()} auth: bearer token required on /mcp, /files, dashboard ${c.dim(p.isLocalhost ? '(localhost + token)' : '(remote bind — PII protected)')}`);
292
+ }
293
+ else {
294
+ console.log(` ${cross()} auth: DENY — ${p.reason}`);
295
+ console.log(` Fix: ${c.bold('export MCP_JSA_AUTH_TOKEN="$(openssl rand -hex 32)"')} before exposing beyond localhost.`);
296
+ failures++;
297
+ }
298
+ }
299
+ catch { /* config never throws — defensive */ }
300
+ // 5a-quater. Sampling vs BYO key — how api-path scoring will run. Read the resolved
301
+ // config flag (not a re-parse of the env var) so doctor and the runtime never disagree.
302
+ try {
303
+ const { config: cfg } = await import('./config.js');
304
+ if (cfg.samplingEnabled) {
305
+ console.log(` ${tick()} scoring: MCP sampling preferred over stdio (client model — no key); BYO key is the fallback`);
306
+ console.log(` ${c.dim('sampling/elicitation need a stdio client (e.g. Claude Desktop); HTTP clients use the fallback paths.')}`);
307
+ }
308
+ else {
309
+ console.log(` ${warn()} scoring: sampling disabled (MCP_JSA_SAMPLING=false) — api paths require a BYO LLM key`);
310
+ }
311
+ }
312
+ catch { /* config never throws */ }
282
313
  // 5b. Public base URL — informational, never a failure.
283
314
  try {
284
315
  const { config: cfg } = await import('./config.js');
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { existsSync, mkdirSync } from 'node:fs';
3
3
  import { resolve, dirname, isAbsolute } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import { resolveAuthPolicy } from './core/auth.js';
5
6
  const here = dirname(fileURLToPath(import.meta.url));
6
7
  const INSTALL_DIR = resolve(here, '..'); // dist/ → install root
7
8
  function abs(p, base) {
@@ -47,6 +48,8 @@ export function loadConfig() {
47
48
  const port = envNum('MCP_JSA_PORT', 7891);
48
49
  const listenUrl = `http://${host}:${port}`;
49
50
  const { publicBaseUrl, publicBaseUrlIsExplicit } = resolvePublicBaseUrl(listenUrl);
51
+ const authToken = (process.env.MCP_JSA_AUTH_TOKEN ?? '').trim() || null;
52
+ const authPolicy = resolveAuthPolicy({ host, token: authToken });
50
53
  return {
51
54
  installDir,
52
55
  projectRoot,
@@ -72,6 +75,9 @@ export function loadConfig() {
72
75
  ? abs(process.env.MCP_JSA_TEMPLATE_DIR, process.cwd())
73
76
  : null,
74
77
  defaultTemplate: (process.env.MCP_JSA_DEFAULT_TEMPLATE || 'default').trim() || 'default',
78
+ authToken,
79
+ authPolicy,
80
+ samplingEnabled: envBool('MCP_JSA_SAMPLING', true),
75
81
  };
76
82
  }
77
83
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ // Auth for the remote / PII surface.
2
+ //
3
+ // The HTTP server exposes resume PDFs (/files), the tracker dashboard (/), and the MCP
4
+ // endpoint (/mcp) — all of which can surface PII (resume contents, LinkedIn connections,
5
+ // H1B-derived employer signal). When the server is bound to anything other than localhost,
6
+ // that surface MUST NOT be reachable unauthenticated.
7
+ //
8
+ // Policy (see resolveAuthPolicy):
9
+ // • localhost bind, no token → OPEN (frictionless single-user local use)
10
+ // • localhost bind, token set → TOKEN (opt-in bearer auth even locally)
11
+ // • non-localhost bind, no token → DENY (default-deny; server refuses to boot)
12
+ // • non-localhost bind, token set → TOKEN (bearer auth required on PII + /mcp)
13
+ //
14
+ // This aligns with the MCP 2025-06-18 "MCP server as OAuth Resource Server" model to the
15
+ // extent practical for a self-hosted single-user tool: a required bearer token gates the
16
+ // resource, 401s carry a WWW-Authenticate header pointing at the protected-resource
17
+ // metadata document, and the token is verified through an OAuthTokenVerifier. Full OAuth
18
+ // authorization-server flows (dynamic client registration, token issuance) are out of
19
+ // scope — the operator sets one static token via MCP_JSA_AUTH_TOKEN.
20
+ import { timingSafeEqual } from 'node:crypto';
21
+ // Hostnames that mean "loopback only" — not reachable from other machines.
22
+ const LOCALHOST_HOSTS = new Set([
23
+ '127.0.0.1', '::1', 'localhost', '::ffff:127.0.0.1', '0:0:0:0:0:0:0:1',
24
+ ]);
25
+ export function isLocalhostHost(host) {
26
+ if (!host)
27
+ return false;
28
+ return LOCALHOST_HOSTS.has(host.trim().toLowerCase());
29
+ }
30
+ /**
31
+ * Pure decision function — given the bind host and the configured token, decide the auth
32
+ * posture. Exported so tests can assert every branch without booting the server.
33
+ */
34
+ export function resolveAuthPolicy(args) {
35
+ const isLocalhost = isLocalhostHost(args.host);
36
+ const token = (args.token ?? '').trim() || null;
37
+ if (isLocalhost) {
38
+ if (token) {
39
+ return { mode: 'token', requireToken: true, isLocalhost, token,
40
+ reason: 'localhost bind with MCP_JSA_AUTH_TOKEN set — bearer auth enforced even locally' };
41
+ }
42
+ return { mode: 'open', requireToken: false, isLocalhost, token: null,
43
+ reason: 'localhost-only bind — frictionless, no token required' };
44
+ }
45
+ if (!token) {
46
+ return { mode: 'deny', requireToken: true, isLocalhost, token: null,
47
+ reason: 'non-localhost bind without MCP_JSA_AUTH_TOKEN — remote access DENIED (default-deny). '
48
+ + 'Set MCP_JSA_AUTH_TOKEN to a strong secret to expose this server beyond localhost.' };
49
+ }
50
+ return { mode: 'token', requireToken: true, isLocalhost, token,
51
+ reason: 'non-localhost bind with MCP_JSA_AUTH_TOKEN — bearer auth required on /mcp, /files, and dashboard' };
52
+ }
53
+ // Constant-time string compare (avoids leaking the token length-by-length via timing).
54
+ export function tokensMatch(a, b) {
55
+ const ba = Buffer.from(a);
56
+ const bb = Buffer.from(b);
57
+ if (ba.length !== bb.length) {
58
+ // Still do a compare against self to burn ~equal time, then return false.
59
+ timingSafeEqual(ba, ba);
60
+ return false;
61
+ }
62
+ return timingSafeEqual(ba, bb);
63
+ }
64
+ /** Extract a Bearer token from an Authorization header. Returns null when absent/malformed. */
65
+ export function bearerFromHeader(header) {
66
+ if (!header)
67
+ return null;
68
+ const m = /^Bearer\s+(.+)$/i.exec(header.trim());
69
+ return m ? m[1].trim() : null;
70
+ }
71
+ /**
72
+ * An OAuthTokenVerifier backed by a single static operator-provided token. Aligns the
73
+ * request path with the SDK's resource-server interface; on mismatch it throws so the
74
+ * caller returns 401.
75
+ */
76
+ export class StaticTokenVerifier {
77
+ token;
78
+ resource;
79
+ constructor(token, resource) {
80
+ this.token = token;
81
+ this.resource = resource;
82
+ }
83
+ async verifyAccessToken(token) {
84
+ if (!tokensMatch(token, this.token)) {
85
+ throw new Error('invalid_token');
86
+ }
87
+ return {
88
+ token,
89
+ clientId: 'mcp-jsa-operator',
90
+ scopes: ['mcp:full'],
91
+ resource: this.resource,
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * Express middleware enforcing the static bearer token on a protected route. Emits a
97
+ * spec-shaped 401 with a WWW-Authenticate header that points at the protected-resource
98
+ * metadata document (so a compliant client can discover how to authenticate).
99
+ */
100
+ export function bearerAuthMiddleware(token, resourceMetadataUrl) {
101
+ return (req, res, next) => {
102
+ const presented = bearerFromHeader(req.headers['authorization']);
103
+ if (presented && tokensMatch(presented, token)) {
104
+ req.auth = { token: presented, clientId: 'mcp-jsa-operator', scopes: ['mcp:full'] };
105
+ return next();
106
+ }
107
+ const meta = resourceMetadataUrl ? `, resource_metadata="${resourceMetadataUrl}"` : '';
108
+ res.setHeader('WWW-Authenticate', `Bearer realm="mcp-jsa"${meta}`);
109
+ res.status(401).json({
110
+ error: 'unauthorized',
111
+ error_description: presented
112
+ ? 'Invalid bearer token.'
113
+ : 'Missing bearer token. This server requires Authorization: Bearer <token> because it is bound to a non-localhost address (or MCP_JSA_AUTH_TOKEN is set).',
114
+ });
115
+ };
116
+ }
117
+ /**
118
+ * RFC 9728-style protected-resource metadata. Minimal but spec-shaped so a client can
119
+ * discover the resource identifier + the bearer scheme.
120
+ */
121
+ export function protectedResourceMetadata(resourceUrl) {
122
+ return {
123
+ resource: resourceUrl,
124
+ bearer_methods_supported: ['header'],
125
+ resource_name: 'job_ops-mcp',
126
+ // No external authorization server — the operator provisions a static token.
127
+ authorization_servers: [],
128
+ scopes_supported: ['mcp:full'],
129
+ };
130
+ }
131
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,9 @@
10
10
  //
11
11
  // The hard rule from the brief stays intact: NOTHING in the packet is invented; every
12
12
  // bullet, project, skill, and degree comes verbatim from cv.md.
13
- import { existsSync, readFileSync } from 'node:fs';
13
+ import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
14
14
  import { createHash, randomUUID } from 'node:crypto';
15
- import { resolve } from 'node:path';
15
+ import { resolve, dirname } from 'node:path';
16
16
  import yaml from 'js-yaml';
17
17
  import { config } from '../config.js';
18
18
  import { getDb, runInWriteLock } from '../db.js';
@@ -38,6 +38,47 @@ export function loadProjectFiles() {
38
38
  }
39
39
  return { cvMd, profile, portalsYml };
40
40
  }
41
+ /**
42
+ * Merge structured updates into config/profile.yml and write it back. Used by the
43
+ * `update_profile` tool (elicitation form mode) so a user can set identity fields +
44
+ * taglines through their MCP client instead of hand-editing YAML.
45
+ *
46
+ * NB: this rewrites the YAML from the parsed object, so hand-written comments in
47
+ * profile.yml are not preserved — the data is. Empty-string values are ignored (so a
48
+ * blank form field never wipes an existing value). Returns the path + counts so the
49
+ * caller can report and decide whether to reseed.
50
+ */
51
+ export function applyProfileUpdate(update) {
52
+ const path = pathInProject('config', 'profile.yml');
53
+ const raw = readIfExists(path);
54
+ const base = raw ? (yaml.load(raw) ?? {}) : {};
55
+ let candidateFieldsSet = 0;
56
+ if (update.candidate) {
57
+ base.candidate = base.candidate ?? {};
58
+ for (const [k, v] of Object.entries(update.candidate)) {
59
+ if (typeof v === 'string' && v.trim()) {
60
+ base.candidate[k] = v.trim();
61
+ candidateFieldsSet++;
62
+ }
63
+ }
64
+ }
65
+ let taglinesSet = 0;
66
+ if (update.taglines && Object.keys(update.taglines).length) {
67
+ base.taglines = (base.taglines && typeof base.taglines === 'object' && !Array.isArray(base.taglines))
68
+ ? base.taglines : {};
69
+ for (const [archetype, tagline] of Object.entries(update.taglines)) {
70
+ const a = archetype.trim();
71
+ const t = (tagline ?? '').trim();
72
+ if (a && t) {
73
+ base.taglines[a] = t;
74
+ taglinesSet++;
75
+ }
76
+ }
77
+ }
78
+ mkdirSync(dirname(path), { recursive: true });
79
+ writeFileSync(path, yaml.dump(base, { lineWidth: 100, noRefs: true }), 'utf-8');
80
+ return { path, candidate_fields_set: candidateFieldsSet, taglines_set: taglinesSet };
81
+ }
41
82
  // ── Staleness detection ──────────────────────────────────────────────────────
42
83
  const TODO_MARKER = /<TODO[\s>]/g;
43
84
  const MIN_REAL_CV_BYTES = 500; // anything smaller is probably still the example