job_ops-mcp 0.4.4 → 0.5.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.
package/.env.example CHANGED
@@ -30,4 +30,14 @@ MCP_JSA_SCHEDULER_ENABLED=false
30
30
  # and visa columns are stripped from tool responses. Default: true.
31
31
  MCP_JSA_VISA_SCORING=true
32
32
 
33
+ # Public URL emitted in artifact links (resume / cover / report / tracker / etc.).
34
+ # Default: http://<host>:<port> — works when client + server are on the same machine.
35
+ # Set this when the server runs on a remote host (Tailscale / LAN / cloud) so links are
36
+ # reachable from your chat machine. Examples:
37
+ # MCP_JSA_PUBLIC_BASE_URL=http://100.64.0.5:7891 # Tailscale 100.x
38
+ # MCP_JSA_PUBLIC_BASE_URL=https://jobs.example.ts.net # Tailscale magic DNS
39
+ # MCP_JSA_PUBLIC_BASE_URL=https://jobs.example.com # reverse proxy
40
+ # Malformed values warn but do not crash the server (falls back to default).
41
+ MCP_JSA_PUBLIC_BASE_URL=
42
+
33
43
  # Playwright — usually no config needed once `npm run playwright:install` is done.
package/README.md CHANGED
@@ -87,7 +87,7 @@ without one.
87
87
  | Group | Tools |
88
88
  |---|---|
89
89
  | **Evaluation** | `evaluate_job`, `batch_evaluate`, `get_top_jobs`, `evaluate_training`, `evaluate_project` |
90
- | **Materials** | `generate_materials`, `render_pdf`, `get_report` |
90
+ | **Materials** | `generate_materials`, `render_pdf` (PDF / `.tex` / `.docx`), `get_report` |
91
91
  | **Tracker** | `get_tracker`, `update_status`, `mark_ready_to_apply` |
92
92
  | **Sourcing** | `scan_portals` (Greenhouse + Ashby + Lever + Workday + Amazon + Google + generic Playwright) |
93
93
  | **Outreach** | `find_warm_intros`, `find_founders`, `draft_outreach`, `draft_followup`, `draft_reply`, `get_outreach_queue`, `update_outreach`, `get_followups_due` |
@@ -157,6 +157,7 @@ roles where sponsorship is a non-issue — turn it off; the rest of the system w
157
157
  | `MCP_JSA_DATA_DIR` | `<install>/data` | SQLite + WAL location |
158
158
  | `MCP_JSA_OUTPUT_DIR` | `<install>/output` | Rendered artifacts (PDFs, report HTML) |
159
159
  | `MCP_JSA_VISA_SCORING` | `true` | Set `false` to drop visa surface entirely (see above) |
160
+ | `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). |
160
161
  | `MCP_JSA_LLM_PROVIDER` | `gemini` | Used only by `api`/batch paths: `gemini`, `deepseek`, `none` |
161
162
  | `MCP_JSA_LLM_MODEL` | _empty_ | Provider-specific model id |
162
163
  | `GEMINI_API_KEY` / `DEEPSEEK_API_KEY` | _empty_ | Provider credentials |
@@ -275,6 +276,89 @@ Server persists, renders HTML at `/files/reports/<id>.html`, returns the URL.
275
276
 
276
277
  ---
277
278
 
279
+ ## Running on a remote host / Tailscale
280
+
281
+ By default every artifact link the server returns starts with `http://127.0.0.1:<port>`.
282
+ That's fine when you run server + chat on the same machine. If you run the server on a
283
+ cloud instance, a homelab box, or anything you reach over Tailscale / LAN / a tunnel,
284
+ `127.0.0.1` on the link resolves to your *chat machine* — not the server — and the
285
+ links don't work.
286
+
287
+ Set `MCP_JSA_PUBLIC_BASE_URL` to the URL the chat machine actually uses to reach the
288
+ server:
289
+
290
+ ```bash
291
+ # Tailscale magic DNS
292
+ export MCP_JSA_PUBLIC_BASE_URL="https://jobs.example.ts.net"
293
+
294
+ # Tailscale 100.x IP
295
+ export MCP_JSA_PUBLIC_BASE_URL="http://100.64.0.5:7891"
296
+
297
+ # LAN IP
298
+ export MCP_JSA_PUBLIC_BASE_URL="http://192.168.1.20:7891"
299
+
300
+ # Reverse proxy
301
+ export MCP_JSA_PUBLIC_BASE_URL="https://jobs.example.com"
302
+ ```
303
+
304
+ Every artifact link (resume PDF, .tex, .docx, eval report, apply_prefill screenshot,
305
+ tracker URL) now uses that base. **No other behaviour changes** — the server still binds
306
+ to `MCP_JSA_HOST` (default `127.0.0.1`); to actually accept connections from other
307
+ devices, also set `MCP_JSA_HOST=0.0.0.0`. `npx job_ops-mcp doctor` prints the
308
+ effective public base URL so you can confirm what your links will look like.
309
+
310
+ A malformed value (e.g. `not-a-url`) is rejected at boot with a warning on stderr; the
311
+ server keeps running with the default 127.0.0.1 base. Trailing slashes are stripped.
312
+
313
+ ### Security note
314
+
315
+ This setting **only changes the URLs the server emits in responses**. It does not add
316
+ authentication and does not change the bind address. If you set `MCP_JSA_HOST=0.0.0.0`
317
+ so the server accepts remote connections, the HTTP file server then serves your resume
318
+ PDFs, cover letters, eval reports, LinkedIn-derived data, and H1B-derived data **without
319
+ authentication** to anyone who can reach the port. Restrict access to a private network
320
+ (Tailscale, a VPN, a reverse proxy with auth) — never expose this directly on the public
321
+ internet.
322
+
323
+ ---
324
+
325
+ ## Downloadable, editable source formats
326
+
327
+ `render_pdf` produces the resume and cover in any subset of three formats:
328
+
329
+ | Format | Where it lands | Use it for |
330
+ |--------|-----------------|---------------------------------------------------------------|
331
+ | `pdf` | `/files/pdfs/` | The deliverable. Light/white background, ATS-clean. |
332
+ | `tex` | `/files/tex/` | The editable LaTeX source. Compiles with vanilla `pdflatex`. |
333
+ | `docx` | `/files/docx/` | Word / Google Docs editing. Real headings + bullets, ATS-safe. |
334
+
335
+ Default is `formats: ["pdf"]` for back-compat. Request any subset:
336
+
337
+ ```jsonc
338
+ {
339
+ "method": "tools/call",
340
+ "params": {
341
+ "name": "render_pdf",
342
+ "arguments": {
343
+ "job_id": "<from evaluate_job>",
344
+ "kind": "both",
345
+ "formats": ["pdf", "tex", "docx"],
346
+ "cover_body": "I am reaching out about ..."
347
+ }
348
+ }
349
+ }
350
+ ```
351
+
352
+ All URLs persist onto the application row in the `rendered_files` JSON column so
353
+ `get_tracker`, `apply_prefill`, and `daily_digest` can find them later. Re-rendering
354
+ one format merges into the existing map — never clobbers the others.
355
+
356
+ The `.tex` and `.docx` are built from the same parsed `cv.md` and `cover_body` the
357
+ PDF uses, so editing and recompiling the `.tex` reproduces the same document. The
358
+ visa-leakage rail runs against every output format before files are written.
359
+
360
+ ---
361
+
278
362
  ## Advanced / outreach features (optional)
279
363
 
280
364
  ### Importing your LinkedIn network → warm-intro finder
package/dist/cli.js CHANGED
@@ -213,6 +213,20 @@ async function cmdDoctor() {
213
213
  // 5. Visa scoring flag
214
214
  const visaOn = (process.env.MCP_JSA_VISA_SCORING ?? 'true').toLowerCase() !== 'false';
215
215
  console.log(` ${tick()} visa scoring: ${visaOn ? 'on (0.5/0.3/0.2)' : 'off (0.6/0.4, visa tools hidden)'}`);
216
+ // 5b. Public base URL — informational, never a failure.
217
+ try {
218
+ const { config: cfg } = await import('./config.js');
219
+ if (cfg.publicBaseUrlIsExplicit) {
220
+ console.log(` ${tick()} public base URL: ${c.bold(cfg.publicBaseUrl)} (from MCP_JSA_PUBLIC_BASE_URL)`);
221
+ if (cfg.publicBaseUrl !== cfg.listenUrl) {
222
+ console.log(` listen URL is ${cfg.listenUrl} — artifact links will use the public URL above.`);
223
+ }
224
+ }
225
+ else {
226
+ console.log(` ${tick()} public base URL: ${cfg.publicBaseUrl} (default — set MCP_JSA_PUBLIC_BASE_URL to override)`);
227
+ }
228
+ }
229
+ catch { /* config never throws — defensive */ }
216
230
  // 6. Career-packet staleness check (only meaningful if the DB exists).
217
231
  try {
218
232
  const { getDb } = await import('./db.js');
@@ -257,9 +271,13 @@ async function cmdDoctor() {
257
271
  }
258
272
  // ── connect ─────────────────────────────────────────────────────────────────
259
273
  async function cmdConnect(flags) {
274
+ // When MCP_JSA_PUBLIC_BASE_URL is set (remote host / Tailscale), use it for the
275
+ // generic + LibreChat-host config blocks so the URL the user pastes actually
276
+ // reaches the server from another device. Falls back to host:port for local use.
260
277
  const port = String(flags.get('port') ?? process.env.MCP_JSA_PORT ?? '7891');
261
278
  const host = String(flags.get('host') ?? process.env.MCP_JSA_HOST ?? '127.0.0.1');
262
- const url = `http://${host}:${port}/mcp`;
279
+ const { config: cfg } = await import('./config.js');
280
+ const url = cfg.publicBaseUrlIsExplicit ? `${cfg.publicBaseUrl}/mcp` : `http://${host}:${port}/mcp`;
263
281
  // Host-resolvable from inside a Docker container (LibreChat default deploy shape).
264
282
  // host.docker.internal works out-of-the-box on Docker Desktop (macOS/Windows) and on
265
283
  // Linux when the compose file sets `extra_hosts: ["host.docker.internal:host-gateway"]`.
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,4CAA4C;AAC5C,yFAAyF;AACzF,sFAAsF;AACtF,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAiB,QAAQ,EAAE,MAAM,SAAS,CAAC;AACrG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAS,gEAAgE;AAClH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAErF,+EAA+E;AAE/E,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/G,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACpC,CAAC;AAED,+EAA+E;AAC/E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;AACnC,MAAM,CAAC,GAAG;IACR,IAAI,EAAG,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC;IACvD,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvD,GAAG,EAAI,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,EAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvD,GAAG,EAAI,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC;CACxD,CAAC;AACF,MAAM,IAAI,GAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAG,CAAC,CAAC,OAAO,CAAC;AACnD,MAAM,IAAI,GAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AAEpD,+EAA+E;AAE/E,KAAK,UAAU,OAAO,CAAC,KAAoC;IACzD,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,YAAY,IAAI,CAAC,CAAC,CAAC;IAEtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,+JAA+J,CAAC,CAAC,CAAC;IAEpL,MAAM,QAAQ,GAAuD;QACnE,EAAE,GAAG,EAAE,eAAe,EAAiB,GAAG,EAAE,OAAO,EAAmB,KAAK,EAAE,eAAe,EAAE;QAC9F,EAAE,GAAG,EAAE,4BAA4B,EAAI,GAAG,EAAE,oBAAoB,EAAM,KAAK,EAAE,qBAAqB,EAAE;QACpG,EAAE,GAAG,EAAE,qBAAqB,EAAW,GAAG,EAAE,aAAa,EAAa,KAAK,EAAE,2BAA2B,EAAE;KAC3G,CAAC;IAEF,IAAI,UAAU,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IAC7B,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,qBAAqB,GAAG,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC3F,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,GAAG,sCAAsC,KAAK,GAAG,CAAC,CAAC;YAC9E,IAAI,EAAE,CAAC;YACP,SAAS;QACX,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,eAAe,GAAG,KAAK,KAAK,GAAG,CAAC,CAAC;QACxD,UAAU,EAAE,CAAC;IACf,CAAC;IAED,wFAAwF;IACxF,uFAAuF;IACvF,0EAA0E;IAC1E,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC;IAC3E,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC;QACR,MAAM,EACJ,wBAAwB,EAAE,qBAAqB,EAC/C,gBAAgB,EAAE,YAAY,EAAE,yBAAyB,GAC1D,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,wBAAwB,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,cAAc,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,kBAAkB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QAEnG,iFAAiF;QACjF,kEAAkE;QAClE,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAChG,IAAI,MAAM,KAAK,sBAAsB,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,0CAA0C,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,mFAAmF,CAAC,EAAE,CAAC,CAAC;YAC/G,MAAM,CAAC,GAAG,MAAM,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,gBAAgB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,wBAAwB,mCAAmC,CAAC,CAAC;QACtH,CAAC;aAAM,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,uEAAuE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;QACrI,CAAC;aAAM,IAAI,MAAM,KAAK,oBAAoB,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,8CAA8C,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,CAAC;QAClI,CAAC;IACH,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,qBAAqB,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC;IAC/I,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,kCAAkC,CAAC,CAAC;IAC5F,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,+BAA+B,CAAC,CAAC;IAE1F,IAAI,UAAU,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC,CAAC;IAC/F,CAAC;IACD,KAAK,GAAG,CAAC,CAAE,8CAA8C;AAC3D,CAAC;AAED,+EAA+E;AAE/E,KAAK,UAAU,QAAQ,CAAC,KAAoC;IAC1D,iFAAiF;IACjF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK;QAAE,MAAM,cAAc,EAAE,CAAC;IACxD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,+FAA+F;IAC/F,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACvC,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO;IACvC,CAAC;IAAC,MAAM,CAAC,CAAC,6BAA6B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1F,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC,CAAC;QAC5G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,+EAA+E;AAE/E,KAAK,UAAU,SAAS;IACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,kBAAkB;IAClB,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,SAAS,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;SAC1F,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,iDAAiD,CAAC,CAAC;QAAC,QAAQ,EAAE,CAAC;IAAC,CAAC;IAE9H,cAAc;IACd,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,CAAC;YAAC,UAAU,GAAG,IAAI,CAAC;QAAC,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,sCAAsC,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC;QAAC,QAAQ,EAAE,CAAC;IAAC,CAAC;IAE5I,gCAAgC;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,kBAAkB,WAAW,EAAE,CAAC,CAAC;IACxD,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,aAAa,CAAC,EAAE,CAAC;QAClE,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC;YAC5B,IAAI,QAAQ,EAAE,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,oCAAoC,IAAI,6CAA6C,CAAC,CAAC;YAAC,CAAC;iBACnI,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC;YAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,IAAI,IAAI,kBAAkB,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACpF,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9E,MAAM,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;WACvD,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5E,IAAI,OAAO;QAAO,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,kBAAkB,QAAQ,YAAY,CAAC,CAAC;SAC5E,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,sCAAsC,CAAC,CAAC;;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,kBAAkB,QAAQ,0EAA0E,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAEjO,uBAAuB;IACvB,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,kBAAkB,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,EAAE,CAAC,CAAC;IAE7G,uEAAuE;IACvE,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAC7D,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACnD,MAAM,OAAO,GAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACjD,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,WAAW;gBACd,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,kCAAkC,OAAO,EAAE,CAAC,CAAC;gBACrE,QAAQ,EAAE,CAAC;gBACX,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,qEAAqE,SAAS,GAAG,CAAC,CAAC;gBAC1G,MAAM;YACR,KAAK,eAAe;gBAClB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,0DAA0D,SAAS,GAAG,CAAC,CAAC;gBAC/F,MAAM;YACR,KAAK,sBAAsB;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,gDAAgD,SAAS,cAAc,CAAC,CAAC;gBACjG,QAAQ,EAAE,CAAC;gBACX,MAAM;YACR,KAAK,oBAAoB;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,mBAAmB,MAAO,CAAC,OAAO,gCAAgC,SAAS,GAAG,CAAC,CAAC;gBACvG,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,mBAAmB,MAAO,CAAC,OAAO,wBAAwB,CAAC,CAAC;gBACnF,MAAM;QACV,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,0DAA0D,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAC7H,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,mBAAmB,CAAC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,+EAA+E;AAE/E,KAAK,UAAU,UAAU,CAAC,KAAoC;IAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC;IACzC,mFAAmF;IACnF,qFAAqF;IACrF,yFAAyF;IACzF,MAAM,UAAU,GAAG,sBAAsB,CAAC;IAC1C,MAAM,SAAS,GAAI,UAAU,UAAU,IAAI,IAAI,MAAM,CAAC;IAEtD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,EAAO,aAAa;QACxB,SAAS,EAAE,iBAAiB;QAC5B,GAAG;KACJ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEb,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;QACzB,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,OAAO,EAAE,KAAK;gBACd,IAAI,EAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC;gBAC7C,GAAG,EAAE;oBACH,YAAY,EAAE,IAAI;oBAClB,YAAY,EAAE,IAAI;oBAClB,oBAAoB,EAAE,OAAO,CAAC,GAAG,EAAE;iBACpC;aACF;SACF;KACF,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEb,4EAA4E;IAC5E,0EAA0E;IAC1E,4EAA4E;IAC5E,yGAAyG;IACzG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACpB,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,IAAI,EAAK,iBAAiB;gBAC1B,GAAG;gBACH,OAAO,EAAE,KAAK;aACf;SACF;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CACf,gFAAgF;QAChF,4EAA4E;QAC5E,mFAAmF;QACnF,wFAAwF,CACzF,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;QACpB,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,IAAI,EAAK,iBAAiB;gBAC1B,GAAG,EAAM,SAAS;gBAClB,OAAO,EAAE,KAAK;aACf;SACF;QACD,WAAW,EAAE;YACX,gBAAgB,EAAE,CAAC,GAAG,UAAU,IAAI,IAAI,EAAE,CAAC;SAC5C;KACF,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CACf,wEAAwE;QACxE,kBAAkB;QAClB,6CAA6C;QAC7C,oFAAoF;QACpF,mDAAmD,CACpD,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,+EAA+E;AAC/E,kFAAkF;AAClF,SAAS,SAAS,CAAC,CAAU,EAAE,MAAM,GAAG,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,GAAG,GAAG,GAAG,CAAC;IACpD,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAU,OAAO,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;gBACvC,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC;YACjC,CAAC;YACD,OAAO,GAAG,GAAG,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACnD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,+EAA+E;AAE/E,KAAK,UAAU,SAAS,CAAC,KAAoC;IAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC,CAAC;IACrG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC,CAAC;IAE1F,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC3H,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE7C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,sCAAsC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,CAAC;QAC1H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,8DAA8D,CAAC,CAAC;QACzF,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,kFAAkF,CAAC,EAAE,CAAC,CAAC;QAChH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,GAAG,MAAM,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,mCAAmC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACxG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC,wBAAwB,iDAAiD,CAAC,CAAC;IACxG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,+EAA+E;AAE/E,SAAS,OAAO;IACd,OAAO,CAAC,GAAG,CAAC;EACZ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA4BX,GAAG,CAAC,QAAQ,IAAI,sCAAsC;CACjE,CAAC,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,MAAM;gBAAK,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;gBAAI,MAAM;YAC/C,KAAK,OAAO;gBAAI,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAAG,MAAM;YAC/C,KAAK,QAAQ;gBAAG,MAAM,SAAS,EAAE,CAAC;gBAAO,MAAM;YAC/C,KAAK,SAAS;gBAAE,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;gBAAC,MAAM;YAC/C,KAAK,QAAQ;gBAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;gBAAE,MAAM;YAC/C,KAAK,WAAW,CAAC;YAAC,KAAK,IAAI,CAAC;YAAC,KAAK,SAAS;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAAC,MAAM;YAC7E,KAAK,MAAM,CAAC;YAAI,KAAK,QAAQ,CAAC;YAAC,KAAK,IAAI,CAAC;YAAC;gBAAS,OAAO,EAAE,CAAC;gBAAC,MAAM;QACtE,CAAC;IACH,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,kEAAkE;IAClE,KAAK,KAAK,CAAC;IAAC,KAAK,eAAe,CAAC;IAAC,KAAK,KAAK,CAAC;IAAC,KAAK,MAAM,CAAC;AAC5D,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -41,6 +41,8 @@ export function loadConfig() {
41
41
  }
42
42
  const host = process.env.MCP_JSA_HOST || '127.0.0.1';
43
43
  const port = envNum('MCP_JSA_PORT', 7891);
44
+ const listenUrl = `http://${host}:${port}`;
45
+ const { publicBaseUrl, publicBaseUrlIsExplicit } = resolvePublicBaseUrl(listenUrl);
44
46
  return {
45
47
  installDir,
46
48
  projectRoot,
@@ -52,12 +54,45 @@ export function loadConfig() {
52
54
  dbPath,
53
55
  port,
54
56
  host,
55
- baseUrl: `http://${host}:${port}`,
57
+ listenUrl,
58
+ publicBaseUrl,
59
+ publicBaseUrlIsExplicit,
60
+ baseUrl: publicBaseUrl, // back-compat alias
56
61
  schedulerEnabled: envBool('MCP_JSA_SCHEDULER_ENABLED', false),
57
62
  llmProvider: process.env.MCP_JSA_LLM_PROVIDER || 'none',
58
63
  llmModel: process.env.MCP_JSA_LLM_MODEL || null,
59
64
  visaScoringEnabled: envBool('MCP_JSA_VISA_SCORING', true),
60
65
  };
61
66
  }
67
+ /**
68
+ * Validate + normalize MCP_JSA_PUBLIC_BASE_URL. Falls back to listenUrl on any
69
+ * malformed input (with a stderr warning). Strips trailing slashes.
70
+ *
71
+ * Exported so the unit tests can hit it without booting the server.
72
+ */
73
+ export function resolvePublicBaseUrl(listenUrl) {
74
+ const raw = process.env.MCP_JSA_PUBLIC_BASE_URL?.trim();
75
+ if (!raw)
76
+ return { publicBaseUrl: listenUrl, publicBaseUrlIsExplicit: false };
77
+ let parsed;
78
+ try {
79
+ parsed = new URL(raw);
80
+ }
81
+ catch {
82
+ // eslint-disable-next-line no-console
83
+ console.error(`[config] WARN: MCP_JSA_PUBLIC_BASE_URL "${raw}" is not a well-formed URL — falling back to ${listenUrl}. Set it to e.g. "http://my-host:7891" or "https://jobs.example.ts.net".`);
84
+ return { publicBaseUrl: listenUrl, publicBaseUrlIsExplicit: false };
85
+ }
86
+ if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {
87
+ // eslint-disable-next-line no-console
88
+ console.error(`[config] WARN: MCP_JSA_PUBLIC_BASE_URL "${raw}" uses protocol "${parsed.protocol}" — only http: and https: are supported. Falling back to ${listenUrl}.`);
89
+ return { publicBaseUrl: listenUrl, publicBaseUrlIsExplicit: false };
90
+ }
91
+ // Reconstruct origin + optional pathname, stripping trailing slash. Drop any
92
+ // query/hash since the server emits paths under /files/ etc.
93
+ const pathname = parsed.pathname.replace(/\/+$/, '');
94
+ const cleaned = `${parsed.protocol}//${parsed.host}${pathname}`;
95
+ return { publicBaseUrl: cleaned, publicBaseUrlIsExplicit: true };
96
+ }
62
97
  export const config = loadConfig();
63
98
  //# sourceMappingURL=config.js.map
@@ -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,30 @@
1
+ // Single source of truth for artifact links emitted by every tool.
2
+ //
3
+ // Every URL the server returns (resume / cover PDF, .tex, .docx, eval report HTML,
4
+ // apply_prefill screenshot, tracker home) flows through one of these helpers. The
5
+ // helpers read `config.publicBaseUrl` which is either MCP_JSA_PUBLIC_BASE_URL (when
6
+ // set + valid) or the local listen URL (the default — preserves the original
7
+ // 127.0.0.1:7891 behaviour for local-only users).
8
+ //
9
+ // Each helper accepts an optional `base` override so unit tests can exercise the
10
+ // formatting logic without depending on the module-level config state.
11
+ import { config } from '../config.js';
12
+ /** Strip trailing slashes so we never emit `//files/...`. */
13
+ function trimSlash(u) { return u.replace(/\/+$/, ''); }
14
+ /**
15
+ * URL for a file served by Express at `/files/*`. `relPath` is the path under
16
+ * `outputDir` (e.g. `pdfs/resume-foo-9a1b.pdf`).
17
+ */
18
+ export function fileUrl(relPath, base = config.publicBaseUrl) {
19
+ const p = (relPath ?? '').replace(/^\/+/, '');
20
+ return `${trimSlash(base)}/files/${p}`;
21
+ }
22
+ /** URL of the tracker dashboard root. */
23
+ export function trackerUrl(base = config.publicBaseUrl) {
24
+ return `${trimSlash(base)}/`;
25
+ }
26
+ /** URL of the MCP endpoint. Used by `connect` to print client config blocks. */
27
+ export function mcpUrl(base = config.publicBaseUrl) {
28
+ return `${trimSlash(base)}/mcp`;
29
+ }
30
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../src/core/links.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,mFAAmF;AACnF,kFAAkF;AAClF,oFAAoF;AACpF,6EAA6E;AAC7E,kDAAkD;AAClD,EAAE;AACF,iFAAiF;AACjF,uEAAuE;AAEvE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,6DAA6D;AAC7D,SAAS,SAAS,CAAC,CAAS,IAAY,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,OAAe,MAAM,CAAC,aAAa;IAC1E,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,UAAU,CAAC,OAAe,MAAM,CAAC,aAAa;IAC5D,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;AAC/B,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,MAAM,CAAC,OAAe,MAAM,CAAC,aAAa;IACxD,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;AAClC,CAAC"}
@@ -0,0 +1,250 @@
1
+ // Word .docx generator for resume + cover letter.
2
+ //
3
+ // Uses the `docx` library (programmatic OOXML, no shell-out). Output is ATS-clean:
4
+ // - Real Heading 1/2 styles (Word + Google Docs interpret these as headings)
5
+ // - Real bulleted lists via Paragraph.bullet (NOT custom unicode dots)
6
+ // - Standard Calibri 11pt body, no text boxes, no tables for layout
7
+ // - 0.7 inch top/bottom, 0.75 inch sides — generous enough that ATS parsers
8
+ // don't reject for being too tight
9
+ //
10
+ // The visa rail (scanForVisaLeakage) MUST be applied by the caller to the raw text
11
+ // inputs before this generator runs — the docx package emits binary OOXML that
12
+ // can't be greppable after the fact.
13
+ import { Document, Packer, Paragraph, TextRun, ExternalHyperlink, PageOrientation, convertInchesToTwip, } from 'docx';
14
+ import { parseCV } from './cv_parse.js';
15
+ /** Build the resume .docx (returns a Buffer ready for fs.writeFileSync). */
16
+ export async function buildResumeDocx() {
17
+ const cv = parseCV();
18
+ return Packer.toBuffer(resumeDocument(cv));
19
+ }
20
+ /** Build the cover letter .docx. */
21
+ export async function buildCoverDocx(args) {
22
+ const cv = parseCV();
23
+ return Packer.toBuffer(coverDocument(cv, args));
24
+ }
25
+ // ── Helpers ─────────────────────────────────────────────────────────────────
26
+ const FONT = 'Calibri'; // ubiquitous, ATS-safe
27
+ const BODY_SIZE = 22; // docx sizes are half-points → 22 = 11pt
28
+ const NAME_SIZE = 36; // 18pt
29
+ const HEADING_SIZE = 26; // 13pt
30
+ const ACCENT = '145374'; // teal — matches the rest of the system
31
+ const PAGE_MARGINS = {
32
+ top: convertInchesToTwip(0.7),
33
+ bottom: convertInchesToTwip(0.7),
34
+ left: convertInchesToTwip(0.75),
35
+ right: convertInchesToTwip(0.75),
36
+ };
37
+ function makeBody(text, opts = {}) {
38
+ return new TextRun({ text, font: FONT, size: opts.size ?? BODY_SIZE,
39
+ bold: opts.bold, italics: opts.italics, color: opts.color });
40
+ }
41
+ function heading(text) {
42
+ return new Paragraph({
43
+ spacing: { before: 240, after: 80 },
44
+ border: { bottom: { color: ACCENT, style: 'single', size: 6, space: 1 } },
45
+ children: [new TextRun({ text, font: FONT, size: HEADING_SIZE, bold: true, color: ACCENT })],
46
+ });
47
+ }
48
+ function bullet(text) {
49
+ return new Paragraph({
50
+ bullet: { level: 0 },
51
+ spacing: { before: 0, after: 60, line: 280 },
52
+ children: [makeBody(text)],
53
+ });
54
+ }
55
+ function body(text, opts = {}) {
56
+ return new Paragraph({
57
+ spacing: { before: opts.spacingBefore ?? 0, after: opts.spacingAfter ?? 60, line: 280 },
58
+ children: [makeBody(text)],
59
+ });
60
+ }
61
+ // ── Resume ──────────────────────────────────────────────────────────────────
62
+ function resumeDocument(cv) {
63
+ const children = [];
64
+ // Header — name + contact + links
65
+ children.push(new Paragraph({
66
+ spacing: { after: 40 },
67
+ children: [new TextRun({ text: cv.name || 'Candidate', font: FONT, size: NAME_SIZE, bold: true })],
68
+ }));
69
+ const contact = [];
70
+ const addSep = () => { if (contact.length)
71
+ contact.push(makeBody(' · ', { color: '888888' })); };
72
+ if (cv.location) {
73
+ contact.push(makeBody(cv.location));
74
+ }
75
+ if (cv.email) {
76
+ addSep();
77
+ contact.push(makeBody(cv.email));
78
+ }
79
+ if (cv.phone) {
80
+ addSep();
81
+ contact.push(makeBody(cv.phone));
82
+ }
83
+ if (contact.length) {
84
+ children.push(new Paragraph({ spacing: { after: 40 }, children: contact }));
85
+ }
86
+ const linkRuns = [];
87
+ if (cv.linkedin_url) {
88
+ linkRuns.push(new ExternalHyperlink({
89
+ link: cv.linkedin_url,
90
+ children: [new TextRun({ text: cv.linkedin_display || cv.linkedin_url, font: FONT, size: BODY_SIZE, color: ACCENT, style: 'Hyperlink' })],
91
+ }));
92
+ }
93
+ if (cv.portfolio_url) {
94
+ if (linkRuns.length)
95
+ linkRuns.push(new TextRun({ text: ' · ', font: FONT, size: BODY_SIZE, color: '888888' }));
96
+ linkRuns.push(new ExternalHyperlink({
97
+ link: cv.portfolio_url,
98
+ children: [new TextRun({ text: cv.portfolio_display || cv.portfolio_url, font: FONT, size: BODY_SIZE, color: ACCENT, style: 'Hyperlink' })],
99
+ }));
100
+ }
101
+ if (linkRuns.length) {
102
+ children.push(new Paragraph({ spacing: { after: 80 }, children: linkRuns }));
103
+ }
104
+ // Summary
105
+ if (cv.summary?.trim()) {
106
+ children.push(heading('Summary'));
107
+ children.push(body(cv.summary.trim()));
108
+ }
109
+ // Skills
110
+ if (cv.skills?.length) {
111
+ children.push(heading('Skills'));
112
+ for (const s of cv.skills) {
113
+ children.push(new Paragraph({
114
+ spacing: { before: 0, after: 40, line: 280 },
115
+ children: [
116
+ new TextRun({ text: `${s.category}: `, font: FONT, size: BODY_SIZE, bold: true }),
117
+ makeBody(s.items),
118
+ ],
119
+ }));
120
+ }
121
+ }
122
+ // Experience
123
+ if (cv.experiences?.length) {
124
+ children.push(heading('Experience'));
125
+ for (const e of cv.experiences)
126
+ children.push(...experienceBlock(e));
127
+ }
128
+ // Projects
129
+ if (cv.projects?.length) {
130
+ children.push(heading('Projects'));
131
+ for (const p of cv.projects)
132
+ children.push(...projectBlock(p));
133
+ }
134
+ // Education
135
+ if (cv.education?.length) {
136
+ children.push(heading('Education'));
137
+ for (const e of cv.education)
138
+ children.push(...educationBlock(e));
139
+ }
140
+ return new Document({
141
+ creator: 'job_ops-mcp',
142
+ title: `${cv.name || 'Candidate'} — Resume`,
143
+ sections: [{
144
+ properties: { page: { margin: PAGE_MARGINS, size: { orientation: PageOrientation.PORTRAIT } } },
145
+ children,
146
+ }],
147
+ });
148
+ }
149
+ function experienceBlock(e) {
150
+ const out = [];
151
+ // Company \hfill period
152
+ out.push(new Paragraph({
153
+ spacing: { before: 80, after: 0, line: 280 },
154
+ tabStops: [{ type: 'right', position: 10440 }], // ~7.25 inches in twips (page width minus margins)
155
+ children: [
156
+ new TextRun({ text: e.company, font: FONT, size: BODY_SIZE, bold: true }),
157
+ new TextRun({ text: '\t', font: FONT, size: BODY_SIZE }),
158
+ new TextRun({ text: e.period || '', font: FONT, size: BODY_SIZE, italics: true, color: '555555' }),
159
+ ],
160
+ }));
161
+ // Role + location
162
+ const meta = [e.role, e.location].filter(Boolean).join(' — ');
163
+ if (meta) {
164
+ out.push(new Paragraph({
165
+ spacing: { before: 0, after: 60, line: 280 },
166
+ children: [new TextRun({ text: meta, font: FONT, size: BODY_SIZE, italics: true, color: '555555' })],
167
+ }));
168
+ }
169
+ // Bullets
170
+ for (const b of e.bullets ?? [])
171
+ out.push(bullet(b));
172
+ return out;
173
+ }
174
+ function projectBlock(p) {
175
+ const runs = [
176
+ new TextRun({ text: p.title, font: FONT, size: BODY_SIZE, bold: true }),
177
+ ];
178
+ if (p.badge) {
179
+ runs.push(new TextRun({ text: ` (${p.badge})`, font: FONT, size: BODY_SIZE - 2, color: '666666' }));
180
+ }
181
+ runs.push(new TextRun({ text: ` — ${p.description}`, font: FONT, size: BODY_SIZE }));
182
+ const out = [new Paragraph({ spacing: { before: 40, after: 40, line: 280 }, children: runs })];
183
+ if (p.tech) {
184
+ out.push(new Paragraph({
185
+ spacing: { before: 0, after: 60, line: 280 },
186
+ children: [new TextRun({ text: p.tech, font: FONT, size: BODY_SIZE - 2, italics: true, color: '666666' })],
187
+ }));
188
+ }
189
+ return out;
190
+ }
191
+ function educationBlock(e) {
192
+ const out = [];
193
+ out.push(new Paragraph({
194
+ spacing: { before: 60, after: 0, line: 280 },
195
+ tabStops: [{ type: 'right', position: 10440 }],
196
+ children: [
197
+ new TextRun({ text: e.title, font: FONT, size: BODY_SIZE, bold: true }),
198
+ new TextRun({ text: e.org ? `, ${e.org}` : '', font: FONT, size: BODY_SIZE }),
199
+ new TextRun({ text: '\t', font: FONT, size: BODY_SIZE }),
200
+ new TextRun({ text: e.year || '', font: FONT, size: BODY_SIZE, italics: true, color: '555555' }),
201
+ ],
202
+ }));
203
+ if (e.desc) {
204
+ out.push(new Paragraph({
205
+ spacing: { before: 0, after: 60, line: 280 },
206
+ children: [makeBody(e.desc, { size: BODY_SIZE - 2 })],
207
+ }));
208
+ }
209
+ return out;
210
+ }
211
+ // ── Cover letter ────────────────────────────────────────────────────────────
212
+ function coverDocument(cv, args) {
213
+ const children = [];
214
+ children.push(new Paragraph({
215
+ spacing: { after: 40 },
216
+ children: [new TextRun({ text: cv.name || 'Candidate', font: FONT, size: NAME_SIZE - 4, bold: true })],
217
+ }));
218
+ const contact = [cv.location, cv.email, cv.phone].filter(Boolean).join(' · ');
219
+ if (contact) {
220
+ children.push(body(contact, { spacingAfter: 240 }));
221
+ }
222
+ const today = new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });
223
+ children.push(body(today, { spacingAfter: 200 }));
224
+ children.push(body('Hiring Team', { spacingAfter: 0 }));
225
+ const companyLine = [args.company, args.location].filter(Boolean).join(', ');
226
+ if (companyLine)
227
+ children.push(body(companyLine, { spacingAfter: 200 }));
228
+ children.push(body('Dear Hiring Manager,', { spacingAfter: 160 }));
229
+ for (const p of args.body.split(/\n{2,}/)) {
230
+ const trimmed = p.trim();
231
+ if (trimmed)
232
+ children.push(body(trimmed, { spacingAfter: 160 }));
233
+ }
234
+ children.push(body('Best regards,', { spacingBefore: 120, spacingAfter: 0 }));
235
+ children.push(body(cv.name || 'Candidate'));
236
+ return new Document({
237
+ creator: 'job_ops-mcp',
238
+ title: `${cv.name || 'Candidate'} — Cover Letter`,
239
+ sections: [{
240
+ properties: { page: { margin: {
241
+ top: convertInchesToTwip(1),
242
+ bottom: convertInchesToTwip(1),
243
+ left: convertInchesToTwip(1),
244
+ right: convertInchesToTwip(1),
245
+ } } },
246
+ children,
247
+ }],
248
+ });
249
+ }
250
+ //# sourceMappingURL=render_docx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_docx.js","sourceRoot":"","sources":["../../src/core/render_docx.ts"],"names":[],"mappings":"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"}