job_ops-mcp 0.3.0 → 0.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.
- package/README.md +37 -9
- package/dist/cli.js +101 -15
- package/dist/cli.js.map +1 -1
- package/dist/core/profile.js +210 -30
- package/dist/core/profile.js.map +1 -1
- package/dist/mcp/server.js +16 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/reseed.js +37 -0
- package/dist/mcp/tools/reseed.js.map +1 -0
- package/dist/server.js +61 -28
- package/dist/server.js.map +1 -1
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -20,23 +20,43 @@ npx job_ops-mcp init
|
|
|
20
20
|
|
|
21
21
|
# 2. Open cv.md, config/profile.yml, portals.yml and replace every <TODO> placeholder.
|
|
22
22
|
|
|
23
|
-
# 3.
|
|
23
|
+
# 3. Rebuild the career_packet from your now-real cv.md
|
|
24
|
+
# (or just re-run `init` — it auto-reseeds when it detects cv.md changed)
|
|
25
|
+
npx job_ops-mcp reseed
|
|
26
|
+
|
|
27
|
+
# 4. Confirm everything is wired
|
|
24
28
|
npx job_ops-mcp doctor
|
|
25
29
|
|
|
26
|
-
#
|
|
30
|
+
# 5. Boot the server (Chromium auto-installs on first run)
|
|
27
31
|
npx job_ops-mcp start
|
|
28
32
|
# ▷ job_ops-mcp listening on http://127.0.0.1:7891
|
|
29
33
|
|
|
30
|
-
#
|
|
34
|
+
# 6. Get a copy-paste config block for your MCP client
|
|
31
35
|
npx job_ops-mcp connect
|
|
32
36
|
|
|
33
|
-
#
|
|
37
|
+
# 7. Paste a job URL or pasted JD into your chat — the chat calls evaluate_job, draws on
|
|
34
38
|
# your rubric + career_packet + tailoring rules, and walks the rest of the workflow.
|
|
35
39
|
```
|
|
36
40
|
|
|
37
41
|
That's the loop. Everything else (warm-intro finder, story bank, negotiation brief,
|
|
38
42
|
batch rater, scheduler, …) is wired in but optional.
|
|
39
43
|
|
|
44
|
+
### The edit-cv.md loop
|
|
45
|
+
|
|
46
|
+
Your `career_packet` is the source of truth the chat uses to score JDs and draft
|
|
47
|
+
materials. It's built from `cv.md` + `config/profile.yml`. Whenever you edit `cv.md`,
|
|
48
|
+
**re-run reseed** so the chat sees the new bullets:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# After any edit to cv.md:
|
|
52
|
+
npx job_ops-mcp reseed
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`reseed` writes a NEW active version (the previous version is demoted, history kept).
|
|
56
|
+
The chat can also call the `reseed_career_packet` MCP tool to do the same thing without
|
|
57
|
+
leaving the conversation. `doctor` warns when `cv.md` changed since the last reseed, and
|
|
58
|
+
`init` auto-reseeds when it detects the mismatch.
|
|
59
|
+
|
|
40
60
|
---
|
|
41
61
|
|
|
42
62
|
## What it does
|
|
@@ -146,16 +166,16 @@ A working starter is at `.env.example`.
|
|
|
146
166
|
|
|
147
167
|
---
|
|
148
168
|
|
|
149
|
-
## Wiring it to Claude Desktop
|
|
169
|
+
## Wiring it to Claude Desktop (stdio transport)
|
|
150
170
|
|
|
151
|
-
|
|
171
|
+
Claude Desktop's local MCP only speaks **stdio**, not HTTP. Use the `--stdio` flag:
|
|
152
172
|
|
|
153
173
|
```jsonc
|
|
154
174
|
{
|
|
155
175
|
"mcpServers": {
|
|
156
176
|
"job_ops-mcp": {
|
|
157
177
|
"command": "npx",
|
|
158
|
-
"args": ["-y", "job_ops-mcp", "start"],
|
|
178
|
+
"args": ["-y", "job_ops-mcp", "start", "--stdio"],
|
|
159
179
|
"env": {
|
|
160
180
|
"MCP_JSA_PORT": "7891",
|
|
161
181
|
"MCP_JSA_PROJECT_ROOT": "/absolute/path/to/your/job-search/dir"
|
|
@@ -168,8 +188,16 @@ A working starter is at `.env.example`.
|
|
|
168
188
|
(Drop into `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS,
|
|
169
189
|
`%APPDATA%/Claude/claude_desktop_config.json` on Windows. Restart Claude Desktop.)
|
|
170
190
|
|
|
171
|
-
|
|
172
|
-
`
|
|
191
|
+
In `--stdio` mode the MCP transport rides stdin/stdout (which Claude Desktop drives via
|
|
192
|
+
the `npx` spawn); the HTTP file server still binds to `MCP_JSA_PORT` in the background
|
|
193
|
+
so the `http://127.0.0.1:7891/files/*` links the server returns continue to resolve in
|
|
194
|
+
your browser.
|
|
195
|
+
|
|
196
|
+
Generic MCP clients that take a streamable-HTTP URL: skip the `--stdio` flag, run
|
|
197
|
+
`npx job_ops-mcp start` in a terminal, and point your client at
|
|
198
|
+
`http://127.0.0.1:7891/mcp`.
|
|
199
|
+
|
|
200
|
+
`npx job_ops-mcp connect` prints both blocks ready to paste.
|
|
173
201
|
|
|
174
202
|
### LibreChat
|
|
175
203
|
|
package/dist/cli.js
CHANGED
|
@@ -84,11 +84,26 @@ async function cmdInit(flags) {
|
|
|
84
84
|
const { config: cfg } = await import('./config.js');
|
|
85
85
|
const { getDb } = await import('./db.js');
|
|
86
86
|
getDb();
|
|
87
|
-
const { ensureActiveCareerPacket } = await import('./core/profile.js');
|
|
88
|
-
const seed = ensureActiveCareerPacket();
|
|
87
|
+
const { ensureActiveCareerPacket, getActiveCareerPacket, loadProjectFiles, packetStatus, seedCareerPacketFromFiles, } = await import('./core/profile.js');
|
|
88
|
+
const seed = await ensureActiveCareerPacket();
|
|
89
89
|
console.log(`\n ${tick()} data dir: ${cfg.dataDir}`);
|
|
90
90
|
console.log(` ${tick()} SQLite migrations applied`);
|
|
91
91
|
console.log(` ${tick()} career_packet ${seed.created ? 'seeded' : 'present'} (v${seed.version})`);
|
|
92
|
+
// Stale check: cv.md was edited after the last reseed? Rebuild and tell the user
|
|
93
|
+
// clearly. The previous active row is demoted (history retained).
|
|
94
|
+
const status = packetStatus({ active: getActiveCareerPacket(), cvMd: loadProjectFiles().cvMd });
|
|
95
|
+
if (status === 'cv_edited_since_seed') {
|
|
96
|
+
console.log(` ${warn()} cv.md was edited after the last reseed.`);
|
|
97
|
+
console.log(` ${c.dim('→ auto-reseeding now (previous active row demoted, version bumped, history kept)…')}`);
|
|
98
|
+
const r = await seedCareerPacketFromFiles({ mode: 'reseed' });
|
|
99
|
+
console.log(` ${tick()} reseeded → v${r.version} (${r.sections_with_cv_content}/6 sections populated from cv.md)`);
|
|
100
|
+
}
|
|
101
|
+
else if (status === 'cv_is_example') {
|
|
102
|
+
console.log(` ${warn()} cv.md still looks like the example template — fill it in, then run ${c.bold('npx job_ops-mcp reseed')}.`);
|
|
103
|
+
}
|
|
104
|
+
else if (status === 'packet_is_template') {
|
|
105
|
+
console.log(` ${warn()} active packet still has TODO markers. Run ${c.bold('npx job_ops-mcp reseed')} to rebuild from cv.md.`);
|
|
106
|
+
}
|
|
92
107
|
}
|
|
93
108
|
catch (e) {
|
|
94
109
|
console.log(` ${cross()} migration error: ${e?.message ?? e}`);
|
|
@@ -109,10 +124,15 @@ async function cmdStart(flags) {
|
|
|
109
124
|
// Default project root = cwd, so users who ran `init` get their files picked up.
|
|
110
125
|
if (!process.env.MCP_JSA_PROJECT_ROOT)
|
|
111
126
|
process.env.MCP_JSA_PROJECT_ROOT = process.cwd();
|
|
127
|
+
const stdio = !!flags.get('stdio');
|
|
112
128
|
const skipBrowserCheck = !!flags.get('skip-chromium-check');
|
|
113
|
-
|
|
129
|
+
// In stdio mode we MUST keep stdout clean — `npx playwright install` writes
|
|
130
|
+
// to stdout and would corrupt the JSON-RPC channel. Force-skip the prompt
|
|
131
|
+
// there and let the user run `doctor` first to confirm Chromium is installed.
|
|
132
|
+
if (!skipBrowserCheck && !stdio)
|
|
114
133
|
await ensureChromium();
|
|
115
|
-
await import('./server.js');
|
|
134
|
+
const { bootServer } = await import('./server.js');
|
|
135
|
+
await bootServer({ stdio });
|
|
116
136
|
}
|
|
117
137
|
async function ensureChromium() {
|
|
118
138
|
// Detect a previously-installed Chromium by attempting `playwright.chromium.executablePath()`.
|
|
@@ -193,6 +213,41 @@ async function cmdDoctor() {
|
|
|
193
213
|
// 5. Visa scoring flag
|
|
194
214
|
const visaOn = (process.env.MCP_JSA_VISA_SCORING ?? 'true').toLowerCase() !== 'false';
|
|
195
215
|
console.log(` ${tick()} visa scoring: ${visaOn ? 'on (0.5/0.3/0.2)' : 'off (0.6/0.4, visa tools hidden)'}`);
|
|
216
|
+
// 6. Career-packet staleness check (only meaningful if the DB exists).
|
|
217
|
+
try {
|
|
218
|
+
const { getDb } = await import('./db.js');
|
|
219
|
+
getDb();
|
|
220
|
+
const { getActiveCareerPacket, loadProjectFiles, packetStatus } = await import('./core/profile.js');
|
|
221
|
+
const active = getActiveCareerPacket();
|
|
222
|
+
const status = packetStatus({ active, cvMd: loadProjectFiles().cvMd });
|
|
223
|
+
const fixReseed = c.bold('npx job_ops-mcp reseed');
|
|
224
|
+
const fixInit = c.bold('npx job_ops-mcp init');
|
|
225
|
+
switch (status) {
|
|
226
|
+
case 'no_packet':
|
|
227
|
+
console.log(` ${cross()} no active career_packet. Fix: ${fixInit}`);
|
|
228
|
+
failures++;
|
|
229
|
+
break;
|
|
230
|
+
case 'no_cv':
|
|
231
|
+
console.log(` ${warn()} cv.md missing — packet is identity-only. Fix: create cv.md, then ${fixReseed}.`);
|
|
232
|
+
break;
|
|
233
|
+
case 'cv_is_example':
|
|
234
|
+
console.log(` ${warn()} cv.md is still the example template. Fill it in, then ${fixReseed}.`);
|
|
235
|
+
break;
|
|
236
|
+
case 'cv_edited_since_seed':
|
|
237
|
+
console.log(` ${cross()} cv.md was edited after the last reseed. Run ${fixReseed} to refresh.`);
|
|
238
|
+
failures++;
|
|
239
|
+
break;
|
|
240
|
+
case 'packet_is_template':
|
|
241
|
+
console.log(` ${warn()} career_packet v${active.version} still has TODO markers. Run ${fixReseed}.`);
|
|
242
|
+
break;
|
|
243
|
+
case 'ok':
|
|
244
|
+
console.log(` ${tick()} career_packet v${active.version} matches current cv.md`);
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
console.log(` ${warn()} career_packet check skipped — DB not initialized (run ${c.bold('npx job_ops-mcp init')} first).`);
|
|
250
|
+
}
|
|
196
251
|
console.log('');
|
|
197
252
|
if (failures > 0) {
|
|
198
253
|
console.log(c.red(`${failures} check(s) failed.`));
|
|
@@ -218,14 +273,16 @@ async function cmdConnect(flags) {
|
|
|
218
273
|
transport: 'streamable-http',
|
|
219
274
|
url,
|
|
220
275
|
}, null, 2));
|
|
221
|
-
console.log(c.bold('\nClaude Desktop — claude_desktop_config.json:'));
|
|
222
|
-
console.log(c.dim('macOS:
|
|
276
|
+
console.log(c.bold('\nClaude Desktop — claude_desktop_config.json (stdio transport):'));
|
|
277
|
+
console.log(c.dim('macOS: ~/Library/Application Support/Claude/claude_desktop_config.json'));
|
|
223
278
|
console.log(c.dim('Windows: %APPDATA%/Claude/claude_desktop_config.json\n'));
|
|
279
|
+
console.log(c.dim('Claude Desktop only speaks MCP over stdio. The --stdio flag binds MCP to'));
|
|
280
|
+
console.log(c.dim('stdin/stdout; the HTTP file server still runs on the port so /files/* links work.\n'));
|
|
224
281
|
console.log(JSON.stringify({
|
|
225
282
|
mcpServers: {
|
|
226
283
|
'job_ops-mcp': {
|
|
227
284
|
command: 'npx',
|
|
228
|
-
args: ['-y', PKG.name, 'start'],
|
|
285
|
+
args: ['-y', PKG.name, 'start', '--stdio'],
|
|
229
286
|
env: {
|
|
230
287
|
MCP_JSA_PORT: port,
|
|
231
288
|
MCP_JSA_HOST: host,
|
|
@@ -234,13 +291,6 @@ async function cmdConnect(flags) {
|
|
|
234
291
|
},
|
|
235
292
|
},
|
|
236
293
|
}, null, 2));
|
|
237
|
-
console.log(c.bold('\nClaude Desktop — manual streamable-HTTP (if the npx form is unsupported):'));
|
|
238
|
-
console.log(c.dim('First boot the server in a separate terminal: `npx job_ops-mcp start`, then:'));
|
|
239
|
-
console.log(JSON.stringify({
|
|
240
|
-
mcpServers: {
|
|
241
|
-
'job_ops-mcp': { transport: { type: 'streamable-http', url } },
|
|
242
|
-
},
|
|
243
|
-
}, null, 2));
|
|
244
294
|
// ── LibreChat ────────────────────────────────────────────────────────────
|
|
245
295
|
// LibreChat's MCP transport for HTTP endpoints is `type: streamable-http`
|
|
246
296
|
// (NOT `sse` — that's a separate legacy transport). Add to `librechat.yaml`
|
|
@@ -311,6 +361,35 @@ function yamlBlock(o, indent = 0) {
|
|
|
311
361
|
}
|
|
312
362
|
return JSON.stringify(o);
|
|
313
363
|
}
|
|
364
|
+
// ── reseed ──────────────────────────────────────────────────────────────────
|
|
365
|
+
async function cmdReseed(flags) {
|
|
366
|
+
if (!process.env.MCP_JSA_PROJECT_ROOT)
|
|
367
|
+
process.env.MCP_JSA_PROJECT_ROOT = process.cwd();
|
|
368
|
+
console.log(c.bold('\njob_ops-mcp reseed\n'));
|
|
369
|
+
console.log(c.dim('Rebuilds the active career_packet from the current cv.md + config/profile.yml.'));
|
|
370
|
+
console.log(c.dim('Bumps version; the previous active row is demoted (history kept).\n'));
|
|
371
|
+
const { loadProjectFiles, cvHasRealContent, seedCareerPacketFromFiles, packetPreview } = await import('./core/profile.js');
|
|
372
|
+
const { cvMd, profile } = loadProjectFiles();
|
|
373
|
+
if (!profile && !flags.get('force')) {
|
|
374
|
+
console.error(` ${cross()} config/profile.yml not found. Run ${c.bold('npx job_ops-mcp init')} first, or pass --force.`);
|
|
375
|
+
process.exit(1);
|
|
376
|
+
}
|
|
377
|
+
if (!cvHasRealContent(cvMd) && !flags.get('force')) {
|
|
378
|
+
console.error(` ${warn()} cv.md is missing or looks like the <TODO> example template.`);
|
|
379
|
+
console.error(` ${c.dim('Fill it in first, then re-run.')}`);
|
|
380
|
+
console.error(` ${c.dim('Or pass --force to reseed anyway (identity-only — most sections stay as <TODO>).')}`);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
const r = await seedCareerPacketFromFiles({ mode: 'reseed' });
|
|
384
|
+
console.log(` ${tick()} active career_packet → version ${c.bold(`v${r.version}`)} (${r.bytes} bytes)`);
|
|
385
|
+
console.log(` ${tick()} ${r.sections_with_cv_content}/6 sections populated from cv.md (sections 3-8)`);
|
|
386
|
+
console.log('');
|
|
387
|
+
console.log(c.dim('Preview (first ~400 chars):'));
|
|
388
|
+
console.log(c.dim('─'.repeat(64)));
|
|
389
|
+
console.log(packetPreview(r.preview, 600));
|
|
390
|
+
console.log(c.dim('─'.repeat(64)));
|
|
391
|
+
console.log('');
|
|
392
|
+
}
|
|
314
393
|
// ── help ────────────────────────────────────────────────────────────────────
|
|
315
394
|
function cmdHelp() {
|
|
316
395
|
console.log(`
|
|
@@ -323,8 +402,12 @@ COMMANDS
|
|
|
323
402
|
init Scaffold cv.md / config/profile.yml / portals.yml from examples
|
|
324
403
|
and run SQLite migrations. Idempotent.
|
|
325
404
|
start Boot the MCP + HTTP server. Auto-installs Chromium on first run.
|
|
405
|
+
start --stdio Same server, but MCP rides stdin/stdout (for Claude Desktop).
|
|
406
|
+
HTTP file server still runs on the port so /files/* links work.
|
|
407
|
+
reseed Rebuild the active career_packet from the current cv.md +
|
|
408
|
+
config/profile.yml. Run this after editing cv.md.
|
|
326
409
|
doctor Diagnose Node version, Chromium, config files, LLM key.
|
|
327
|
-
connect Print copy-paste MCP client config (Claude Desktop +
|
|
410
|
+
connect Print copy-paste MCP client config (Claude Desktop + LibreChat).
|
|
328
411
|
help Show this message.
|
|
329
412
|
|
|
330
413
|
ENV
|
|
@@ -358,6 +441,9 @@ async function main() {
|
|
|
358
441
|
case 'connect':
|
|
359
442
|
await cmdConnect(flags);
|
|
360
443
|
break;
|
|
444
|
+
case 'reseed':
|
|
445
|
+
await cmdReseed(flags);
|
|
446
|
+
break;
|
|
361
447
|
case '--version':
|
|
362
448
|
case '-v':
|
|
363
449
|
case 'version':
|
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/core/profile.js
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
// Loads cv.md + config/profile.yml + portals.yml from the configured project root
|
|
2
|
-
//
|
|
1
|
+
// Loads cv.md + config/profile.yml + portals.yml from the configured project root,
|
|
2
|
+
// and rebuilds the active career_packet from those files.
|
|
3
|
+
//
|
|
4
|
+
// The packet content is built from THREE inputs:
|
|
5
|
+
// 1. modes/career_packet.md — the structural template (sections, hard rules)
|
|
6
|
+
// 2. config/profile.yml — identity → Section 1
|
|
7
|
+
// 3. cv.md — parsed via parseCV() → Sections 3-8 (work, projects,
|
|
8
|
+
// skills, education) so the chat sees real bullets,
|
|
9
|
+
// not <TODO> placeholders.
|
|
10
|
+
//
|
|
11
|
+
// The hard rule from the brief stays intact: NOTHING in the packet is invented; every
|
|
12
|
+
// bullet, project, skill, and degree comes verbatim from cv.md.
|
|
3
13
|
import { existsSync, readFileSync } from 'node:fs';
|
|
4
|
-
import { createHash } from 'node:crypto';
|
|
14
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
5
15
|
import { resolve } from 'node:path';
|
|
6
16
|
import yaml from 'js-yaml';
|
|
7
|
-
import { randomUUID } from 'node:crypto';
|
|
8
17
|
import { config } from '../config.js';
|
|
9
|
-
import { getDb } from '../db.js';
|
|
18
|
+
import { getDb, runInWriteLock } from '../db.js';
|
|
19
|
+
import { parseCV } from './cv_parse.js';
|
|
10
20
|
// ── Loaders ──────────────────────────────────────────────────────────────────
|
|
11
21
|
export function pathInProject(...parts) {
|
|
12
22
|
return resolve(config.projectRoot, ...parts);
|
|
@@ -27,38 +37,177 @@ export function loadProjectFiles() {
|
|
|
27
37
|
}
|
|
28
38
|
return { cvMd, profile, portalsYml };
|
|
29
39
|
}
|
|
30
|
-
// ──
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const db = getDb();
|
|
39
|
-
const existing = db
|
|
40
|
-
.prepare('SELECT version FROM career_packet WHERE is_active = 1')
|
|
41
|
-
.get();
|
|
42
|
-
if (existing)
|
|
43
|
-
return { version: existing.version, created: false };
|
|
44
|
-
const packetTemplatePath = resolve(config.modesDir, 'career_packet.md');
|
|
45
|
-
const packetBody = readIfExists(packetTemplatePath) ?? '# Career Packet (empty)';
|
|
46
|
-
const { cvMd, profile } = loadProjectFiles();
|
|
47
|
-
const identityBlock = renderIdentityBlock(profile);
|
|
48
|
-
const content = packetBody.replace(/## 1\. Identity[\s\S]*?(?=^## )/m, `## 1. Identity\n\n${identityBlock}\n\n`);
|
|
49
|
-
const sourceHash = cvMd ? sha256(cvMd) : null;
|
|
50
|
-
db.prepare(`
|
|
51
|
-
INSERT INTO career_packet (id, version, content, taglines, is_active, source_cv_hash, notes)
|
|
52
|
-
VALUES (?, 1, ?, NULL, 1, ?, 'seeded on first run')
|
|
53
|
-
`).run(randomUUID(), content, sourceHash);
|
|
54
|
-
return { version: 1, created: true };
|
|
40
|
+
// ── Staleness detection ──────────────────────────────────────────────────────
|
|
41
|
+
const TODO_MARKER = /<TODO[\s>]/g;
|
|
42
|
+
const MIN_REAL_CV_BYTES = 500; // anything smaller is probably still the example
|
|
43
|
+
/** True when the packet body still has 3+ literal `<TODO ...>` markers (template-y). */
|
|
44
|
+
export function isPlaceholderPacket(content) {
|
|
45
|
+
if (!content)
|
|
46
|
+
return true;
|
|
47
|
+
return (content.match(TODO_MARKER) || []).length >= 3;
|
|
55
48
|
}
|
|
49
|
+
/** True when cv.md exists with non-trivial, non-example content. */
|
|
50
|
+
export function cvHasRealContent(cvMd) {
|
|
51
|
+
if (!cvMd)
|
|
52
|
+
return false;
|
|
53
|
+
if (cvMd.length < MIN_REAL_CV_BYTES)
|
|
54
|
+
return false;
|
|
55
|
+
// The example template has every bullet starting with `<...>` (placeholder).
|
|
56
|
+
// A real CV has at least a few bullets that don't start with an angle bracket.
|
|
57
|
+
const realBullets = (cvMd.match(/^[ \t]*-[ \t]+[^<\n]/gm) || []).length;
|
|
58
|
+
return realBullets >= 3;
|
|
59
|
+
}
|
|
60
|
+
export function packetStatus(args) {
|
|
61
|
+
if (!args.active)
|
|
62
|
+
return 'no_packet';
|
|
63
|
+
if (!args.cvMd)
|
|
64
|
+
return 'no_cv';
|
|
65
|
+
if (!cvHasRealContent(args.cvMd))
|
|
66
|
+
return 'cv_is_example';
|
|
67
|
+
// cv has real content — now check it matches what we built the packet from.
|
|
68
|
+
if (args.active.source_cv_hash && sha256(args.cvMd) !== args.active.source_cv_hash) {
|
|
69
|
+
return 'cv_edited_since_seed';
|
|
70
|
+
}
|
|
71
|
+
if (isPlaceholderPacket(args.active.content))
|
|
72
|
+
return 'packet_is_template';
|
|
73
|
+
return 'ok';
|
|
74
|
+
}
|
|
75
|
+
// ── Active-packet accessor ──────────────────────────────────────────────────
|
|
56
76
|
export function getActiveCareerPacket() {
|
|
57
77
|
const row = getDb()
|
|
58
78
|
.prepare(`SELECT id, version, content, source_cv_hash FROM career_packet WHERE is_active = 1`)
|
|
59
79
|
.get();
|
|
60
80
|
return row ?? null;
|
|
61
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Rebuild the active career packet from cv.md + profile.yml using the template at
|
|
84
|
+
* modes/career_packet.md. Always writes a NEW row (bumps version, demotes previous)
|
|
85
|
+
* unless `mode: 'ensure_active'` and an active row already exists.
|
|
86
|
+
*
|
|
87
|
+
* mode='reseed' — always writes a new version. The default.
|
|
88
|
+
* mode='ensure_active' — only seeds if no active row exists (used by first-run boot).
|
|
89
|
+
*/
|
|
90
|
+
export async function seedCareerPacketFromFiles(opts = {}) {
|
|
91
|
+
const mode = opts.mode ?? 'reseed';
|
|
92
|
+
const db = getDb();
|
|
93
|
+
if (mode === 'ensure_active') {
|
|
94
|
+
const existing = db.prepare(`SELECT version, content FROM career_packet WHERE is_active = 1`).get();
|
|
95
|
+
if (existing) {
|
|
96
|
+
return {
|
|
97
|
+
version: existing.version, created: false, reused: true,
|
|
98
|
+
bytes: existing.content.length, sections_with_cv_content: countSectionsWithCvContent(existing.content),
|
|
99
|
+
preview: existing.content.slice(0, 400),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const { content, sectionsWithContent, cvHash } = buildPacketContent();
|
|
104
|
+
const id = randomUUID();
|
|
105
|
+
const result = await runInWriteLock(() => {
|
|
106
|
+
const lastV = db.prepare(`SELECT COALESCE(MAX(version), 0) AS v FROM career_packet`).get().v;
|
|
107
|
+
const newV = lastV + 1;
|
|
108
|
+
db.prepare(`UPDATE career_packet SET is_active = 0 WHERE is_active = 1`).run();
|
|
109
|
+
db.prepare(`
|
|
110
|
+
INSERT INTO career_packet (id, version, content, taglines, is_active, source_cv_hash, notes)
|
|
111
|
+
VALUES (?, ?, ?, NULL, 1, ?, ?)
|
|
112
|
+
`).run(id, newV, content, cvHash, mode === 'ensure_active' ? 'seeded on first run' : 'reseeded from cv.md + profile.yml');
|
|
113
|
+
return { version: newV };
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
version: result.version, created: true, reused: false,
|
|
117
|
+
bytes: content.length, sections_with_cv_content: sectionsWithContent,
|
|
118
|
+
preview: content.slice(0, 400),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/** Back-compat thin wrapper around seedCareerPacketFromFiles for boot-time callers. */
|
|
122
|
+
export async function ensureActiveCareerPacket() {
|
|
123
|
+
const r = await seedCareerPacketFromFiles({ mode: 'ensure_active' });
|
|
124
|
+
return { version: r.version, created: r.created };
|
|
125
|
+
}
|
|
126
|
+
function buildPacketContent() {
|
|
127
|
+
const { cvMd, profile } = loadProjectFiles();
|
|
128
|
+
const templatePath = resolve(config.modesDir, 'career_packet.md');
|
|
129
|
+
let content = readIfExists(templatePath) ?? '# Career Packet (empty template)';
|
|
130
|
+
// Always inject identity from profile.yml into Section 1.
|
|
131
|
+
content = replaceSectionBody(content, '1.', renderIdentityBlock(profile));
|
|
132
|
+
let sectionsWithContent = 0;
|
|
133
|
+
if (cvMd) {
|
|
134
|
+
const cv = parseCV(); // parseCV reads cv.md via loadProjectFiles() internally
|
|
135
|
+
// Sections 3, 4, 5 — experience bullet banks. The template ships three: most recent,
|
|
136
|
+
// previous, earlier. If cv.md has more roles, fold the extras into Section 5.
|
|
137
|
+
const exp = cv.experiences;
|
|
138
|
+
if (exp[0]) {
|
|
139
|
+
content = replaceSectionBody(content, '3.', renderRoleSection(exp[0]));
|
|
140
|
+
sectionsWithContent++;
|
|
141
|
+
}
|
|
142
|
+
if (exp[1]) {
|
|
143
|
+
content = replaceSectionBody(content, '4.', renderRoleSection(exp[1]));
|
|
144
|
+
sectionsWithContent++;
|
|
145
|
+
}
|
|
146
|
+
if (exp.slice(2).length) {
|
|
147
|
+
content = replaceSectionBody(content, '5.', exp.slice(2).map(renderRoleSection).join('\n\n'));
|
|
148
|
+
sectionsWithContent++;
|
|
149
|
+
}
|
|
150
|
+
// Section 6 — projects bank.
|
|
151
|
+
if (cv.projects.length) {
|
|
152
|
+
content = replaceSectionBody(content, '6.', renderProjectsBank(cv.projects));
|
|
153
|
+
sectionsWithContent++;
|
|
154
|
+
}
|
|
155
|
+
// Section 7 — skills bank.
|
|
156
|
+
if (cv.skills.length) {
|
|
157
|
+
content = replaceSectionBody(content, '7.', renderSkillsBank(cv.skills));
|
|
158
|
+
sectionsWithContent++;
|
|
159
|
+
}
|
|
160
|
+
// Section 8 — education.
|
|
161
|
+
if (cv.education.length) {
|
|
162
|
+
content = replaceSectionBody(content, '8.', renderEducationBank(cv.education));
|
|
163
|
+
sectionsWithContent++;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
content,
|
|
168
|
+
sectionsWithContent,
|
|
169
|
+
cvHash: cvMd ? sha256(cvMd) : null,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
function countSectionsWithCvContent(content) {
|
|
173
|
+
// Heuristic: count Sections 3-8 whose body still contains a <TODO marker (meaning NOT
|
|
174
|
+
// populated from cv.md). Real sections = 6 - count(TODO sections).
|
|
175
|
+
const sections = splitNumberedSections(content);
|
|
176
|
+
let withContent = 0;
|
|
177
|
+
for (const n of ['3.', '4.', '5.', '6.', '7.', '8.']) {
|
|
178
|
+
const body = sections.get(n) ?? '';
|
|
179
|
+
if (body && !TODO_MARKER.test(body))
|
|
180
|
+
withContent++;
|
|
181
|
+
TODO_MARKER.lastIndex = 0; // reset global regex
|
|
182
|
+
}
|
|
183
|
+
return withContent;
|
|
184
|
+
}
|
|
185
|
+
// ── Section parsing + rewriting ─────────────────────────────────────────────
|
|
186
|
+
/** Replace the body of `## N. ...` (keep the heading line) with newBody. */
|
|
187
|
+
function replaceSectionBody(content, prefix, newBody) {
|
|
188
|
+
// Match the heading line (## N. ...) and capture everything after it until the next
|
|
189
|
+
// `## ` heading or end-of-document. We anchor the prefix to start-of-line.
|
|
190
|
+
const escaped = prefix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
191
|
+
const re = new RegExp(`(^## ${escaped}[^\\n]*\\n)([\\s\\S]*?)(?=^## |\\z)`, 'm');
|
|
192
|
+
if (!re.test(content))
|
|
193
|
+
return content; // section not in template — leave content alone
|
|
194
|
+
return content.replace(re, (_match, heading) => `${heading}\n${newBody.trim()}\n\n`);
|
|
195
|
+
}
|
|
196
|
+
function splitNumberedSections(content) {
|
|
197
|
+
const out = new Map();
|
|
198
|
+
const re = /^## (\d+\.)[^\n]*$/gm;
|
|
199
|
+
const matches = [];
|
|
200
|
+
let m;
|
|
201
|
+
while ((m = re.exec(content))) {
|
|
202
|
+
matches.push({ prefix: m[1], start: m.index + m[0].length, end: -1 });
|
|
203
|
+
}
|
|
204
|
+
for (let i = 0; i < matches.length; i++) {
|
|
205
|
+
matches[i].end = i + 1 < matches.length ? matches[i + 1].start - (`## ${matches[i + 1].prefix}`.length + 1) : content.length;
|
|
206
|
+
out.set(matches[i].prefix, content.slice(matches[i].start, matches[i].end).trim());
|
|
207
|
+
}
|
|
208
|
+
return out;
|
|
209
|
+
}
|
|
210
|
+
// ── Renderers ───────────────────────────────────────────────────────────────
|
|
62
211
|
function renderIdentityBlock(profile) {
|
|
63
212
|
if (!profile?.candidate)
|
|
64
213
|
return '_No `config/profile.yml` found — populate it to enrich._';
|
|
@@ -82,7 +231,38 @@ function renderIdentityBlock(profile) {
|
|
|
82
231
|
lines.push(`- **Twitter:** ${c.twitter}`);
|
|
83
232
|
return lines.length ? lines.join('\n') : '_Profile present but no candidate fields filled._';
|
|
84
233
|
}
|
|
234
|
+
function renderRoleSection(exp) {
|
|
235
|
+
const meta = [exp.location, exp.period].filter(Boolean).join(' · ');
|
|
236
|
+
const head = `**${exp.company}** — ${exp.role}` + (meta ? ` \n_${meta}_` : '');
|
|
237
|
+
const bullets = exp.bullets.length
|
|
238
|
+
? exp.bullets.map(b => `- ${b}`).join('\n')
|
|
239
|
+
: '- _(no bullets in cv.md for this role)_';
|
|
240
|
+
return `${head}\n\n${bullets}`;
|
|
241
|
+
}
|
|
242
|
+
function renderProjectsBank(projects) {
|
|
243
|
+
return projects.map(p => {
|
|
244
|
+
const badge = p.badge ? ` (${p.badge})` : '';
|
|
245
|
+
const tech = p.tech ? ` \n _${p.tech}_` : '';
|
|
246
|
+
return `- **${p.title}**${badge} — ${p.description}${tech}`;
|
|
247
|
+
}).join('\n');
|
|
248
|
+
}
|
|
249
|
+
function renderSkillsBank(skills) {
|
|
250
|
+
return skills.map(s => `- **${s.category}:** ${s.items}`).join('\n');
|
|
251
|
+
}
|
|
252
|
+
function renderEducationBank(edus) {
|
|
253
|
+
return edus.map(e => {
|
|
254
|
+
const year = e.year ? ` (${e.year})` : '';
|
|
255
|
+
const desc = e.desc ? `. ${e.desc}` : '';
|
|
256
|
+
const orgPart = e.org ? ` — ${e.org}` : '';
|
|
257
|
+
return `- **${e.title}**${orgPart}${year}${desc}`;
|
|
258
|
+
}).join('\n');
|
|
259
|
+
}
|
|
85
260
|
function sha256(s) {
|
|
86
261
|
return createHash('sha256').update(s, 'utf-8').digest('hex');
|
|
87
262
|
}
|
|
263
|
+
// Used by callers (CLI doctor, MCP tool) — preview = first ~400 chars of the active packet.
|
|
264
|
+
export function packetPreview(content, max = 400) {
|
|
265
|
+
const trimmed = content.trim();
|
|
266
|
+
return trimmed.length <= max ? trimmed : trimmed.slice(0, max) + '\n…';
|
|
267
|
+
}
|
|
88
268
|
//# sourceMappingURL=profile.js.map
|
package/dist/core/profile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/core/profile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/core/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
// below, and add it to ALL_TOOLS. resources/list comes from src/core/resources.ts.
|
|
10
10
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
11
11
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
12
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
12
13
|
import { config } from '../config.js';
|
|
13
14
|
import { listResources } from '../core/resources.js';
|
|
14
15
|
import { registerTools } from './define.js';
|
|
@@ -33,6 +34,7 @@ import { batchEvaluateTool } from './tools/batch_evaluate.js';
|
|
|
33
34
|
import { generateMaterialsTool } from './tools/generate_materials.js';
|
|
34
35
|
// G7 — training/project/research/digest + profile ops
|
|
35
36
|
import { evaluateTrainingTool, evaluateProjectTool, deepResearchTool, dailyDigestTool, getCareerPacketTool, updateCareerPacketTool, enrichCompanyTool, costEstimateTool, } from './tools/ops.js';
|
|
37
|
+
import { reseedCareerPacketTool } from './tools/reseed.js';
|
|
36
38
|
// G8 — apply prefill
|
|
37
39
|
import { applyPrefillTool } from './tools/apply_prefill.js';
|
|
38
40
|
// G9 — scheduler
|
|
@@ -51,7 +53,7 @@ const FULL_TOOLSET = [
|
|
|
51
53
|
extractStoriesTool, getStoryBankTool, negotiationBriefTool,
|
|
52
54
|
batchEvaluateTool, generateMaterialsTool,
|
|
53
55
|
evaluateTrainingTool, evaluateProjectTool, deepResearchTool, dailyDigestTool,
|
|
54
|
-
getCareerPacketTool, updateCareerPacketTool, enrichCompanyTool, costEstimateTool,
|
|
56
|
+
getCareerPacketTool, updateCareerPacketTool, reseedCareerPacketTool, enrichCompanyTool, costEstimateTool,
|
|
55
57
|
applyPrefillTool,
|
|
56
58
|
schedulerStatusTool, schedulerEnableTool, schedulerDisableTool,
|
|
57
59
|
];
|
|
@@ -100,4 +102,17 @@ export function mountMcp(app, path = '/mcp') {
|
|
|
100
102
|
app.delete(path, (_req, res) => res.status(405).end());
|
|
101
103
|
}
|
|
102
104
|
export function listAllTools() { return ALL_TOOLS; }
|
|
105
|
+
// ── stdio transport ─────────────────────────────────────────────────────────
|
|
106
|
+
// Used by Claude Desktop and any other MCP client that only speaks stdio.
|
|
107
|
+
// Blocks until stdin closes (the client disconnects). In stdio mode the caller
|
|
108
|
+
// must keep stdout clean — all logging in this process already goes to stderr.
|
|
109
|
+
export async function serveStdio() {
|
|
110
|
+
const server = getMcpServer();
|
|
111
|
+
const transport = new StdioServerTransport();
|
|
112
|
+
await server.connect(transport);
|
|
113
|
+
// Server runs until transport closes; transport.onclose fires when stdin EOFs.
|
|
114
|
+
await new Promise((resolve) => {
|
|
115
|
+
transport.onclose = () => resolve();
|
|
116
|
+
});
|
|
117
|
+
}
|
|
103
118
|
//# sourceMappingURL=server.js.map
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,EAAE;AACF,wFAAwF;AACxF,uFAAuF;AACvF,4DAA4D;AAC5D,EAAE;AACF,qFAAqF;AACrF,oFAAoF;AACpF,mFAAmF;AAEnF,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// reseed_career_packet — rebuild the active career_packet from the current cv.md +
|
|
2
|
+
// config/profile.yml. Bumps version, demotes the previous active row (history kept).
|
|
3
|
+
// Same underlying logic as the CLI `reseed` subcommand.
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { defineTool, okResult, errResult } from '../define.js';
|
|
6
|
+
import { seedCareerPacketFromFiles, loadProjectFiles, cvHasRealContent, packetPreview } from '../../core/profile.js';
|
|
7
|
+
export const reseedCareerPacketTool = defineTool({
|
|
8
|
+
name: 'reseed_career_packet',
|
|
9
|
+
title: 'Rebuild the career packet from cv.md + profile.yml',
|
|
10
|
+
description: 'Re-reads cv.md and config/profile.yml and writes a NEW active career_packet ' +
|
|
11
|
+
'version, demoting the previous one (history retained). Use after editing cv.md so ' +
|
|
12
|
+
'the chat sees your real bullets, not the <TODO> template. Identity comes from ' +
|
|
13
|
+
'profile.yml; bullets / projects / skills / education come from cv.md.',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
confirm_empty_cv: z.boolean().optional()
|
|
16
|
+
.describe('cv.md missing or trivially small? Set true to seed identity-only anyway. Default false (errors instead).'),
|
|
17
|
+
},
|
|
18
|
+
handler: async (args) => {
|
|
19
|
+
const { cvMd } = loadProjectFiles();
|
|
20
|
+
if (!cvHasRealContent(cvMd) && !args.confirm_empty_cv) {
|
|
21
|
+
return errResult('cv.md is missing or still looks like the <TODO> example template. ' +
|
|
22
|
+
'Fill it in first, then re-run. Pass confirm_empty_cv=true to reseed anyway ' +
|
|
23
|
+
'(identity-only — most sections will stay as <TODO> placeholders).');
|
|
24
|
+
}
|
|
25
|
+
const r = await seedCareerPacketFromFiles({ mode: 'reseed' });
|
|
26
|
+
return okResult({
|
|
27
|
+
ok: true,
|
|
28
|
+
new_version: r.version,
|
|
29
|
+
bytes: r.bytes,
|
|
30
|
+
sections_with_cv_content: r.sections_with_cv_content,
|
|
31
|
+
sections_max: 6,
|
|
32
|
+
preview: packetPreview(r.preview, 400),
|
|
33
|
+
note: 'previous active packet demoted; history retained in career_packet table',
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=reseed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reseed.js","sourceRoot":"","sources":["../../../src/mcp/tools/reseed.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,qFAAqF;AACrF,wDAAwD;AAExD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAErH,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;IAC/C,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,oDAAoD;IAC3D,WAAW,EACT,8EAA8E;QAC9E,oFAAoF;QACpF,gFAAgF;QAChF,uEAAuE;IACzE,WAAW,EAAE;QACX,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;aACrC,QAAQ,CAAC,0GAA0G,CAAC;KACxH;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtD,OAAO,SAAS,CACd,oEAAoE;gBACpE,6EAA6E;gBAC7E,mEAAmE,CACpE,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,yBAAyB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,QAAQ,CAAC;YACd,EAAE,EAAE,IAAI;YACR,WAAW,EAAgB,CAAC,CAAC,OAAO;YACpC,KAAK,EAAsB,CAAC,CAAC,KAAK;YAClC,wBAAwB,EAAG,CAAC,CAAC,wBAAwB;YACrD,YAAY,EAAe,CAAC;YAC5B,OAAO,EAAoB,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC;YACxD,IAAI,EAAuB,yEAAyE;SACrG,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -1,40 +1,67 @@
|
|
|
1
|
-
// Entrypoint. One process
|
|
1
|
+
// Entrypoint. One process, two transport modes:
|
|
2
|
+
//
|
|
3
|
+
// HTTP (default) — npx job_ops-mcp start
|
|
4
|
+
// MCP transport + file server + tracker dashboard, all on MCP_JSA_PORT.
|
|
5
|
+
//
|
|
6
|
+
// stdio (Claude Desktop) — npx job_ops-mcp start --stdio
|
|
7
|
+
// MCP transport on stdin/stdout; HTTP file server still runs on the port
|
|
8
|
+
// so /files/* artifact links the chat returns still resolve in a browser.
|
|
9
|
+
//
|
|
10
|
+
// In stdio mode all logging MUST go to stderr — stdout is the MCP channel.
|
|
2
11
|
import { buildHttpApp } from './http/app.js';
|
|
3
|
-
import { mountMcp } from './mcp/server.js';
|
|
12
|
+
import { mountMcp, serveStdio } from './mcp/server.js';
|
|
4
13
|
import { config } from './config.js';
|
|
5
14
|
import { getDb } from './db.js';
|
|
6
15
|
import { ensureActiveCareerPacket, loadProjectFiles } from './core/profile.js';
|
|
7
16
|
import { closeBrowser } from './core/render.js';
|
|
8
17
|
import { shutdownScanResources } from './core/scan_engine.js';
|
|
9
18
|
import { applyState as applySchedulerState, readEnabledJobs } from './core/scheduler.js';
|
|
10
|
-
async function
|
|
11
|
-
//
|
|
19
|
+
export async function bootServer(opts = {}) {
|
|
20
|
+
// Migrations + first-run seeding (side-effect of getDb()).
|
|
12
21
|
getDb();
|
|
13
|
-
const seed = ensureActiveCareerPacket();
|
|
22
|
+
const seed = await ensureActiveCareerPacket();
|
|
14
23
|
const files = loadProjectFiles();
|
|
15
24
|
const app = buildHttpApp();
|
|
16
|
-
|
|
25
|
+
// In stdio mode we DON'T mount /mcp — MCP rides stdin/stdout instead.
|
|
26
|
+
// The Express server still runs so /files/* artifact links resolve.
|
|
27
|
+
if (!opts.stdio) {
|
|
28
|
+
mountMcp(app, '/mcp');
|
|
29
|
+
}
|
|
17
30
|
applySchedulerState();
|
|
18
31
|
const enabled = readEnabledJobs();
|
|
19
32
|
const server = app.listen(config.port, config.host, () => {
|
|
20
|
-
const
|
|
33
|
+
const lines = opts.stdio
|
|
34
|
+
? [
|
|
35
|
+
'',
|
|
36
|
+
`▷ job_ops-mcp stdio mode`,
|
|
37
|
+
` · MCP transport: stdin/stdout`,
|
|
38
|
+
` · File server: ${config.baseUrl}/files/* (for artifact links)`,
|
|
39
|
+
` · Tracker UI: ${config.baseUrl}/`,
|
|
40
|
+
` · DB: ${config.dbPath}`,
|
|
41
|
+
` · Project root: ${config.projectRoot}`,
|
|
42
|
+
` · career_packet: ${seed.created ? `seeded v${seed.version}` : `existing v${seed.version}`}`,
|
|
43
|
+
` · scheduler: ${enabled.length ? enabled.join(', ') : 'off'}`,
|
|
44
|
+
` · visa scoring: ${config.visaScoringEnabled ? 'on (0.5/0.3/0.2)' : 'off (0.6/0.4, visa tools hidden)'}`,
|
|
45
|
+
'',
|
|
46
|
+
]
|
|
47
|
+
: [
|
|
48
|
+
'',
|
|
49
|
+
`▷ job_ops-mcp listening on ${config.baseUrl}`,
|
|
50
|
+
` · MCP endpoint: ${config.baseUrl}/mcp`,
|
|
51
|
+
` · Tracker UI: ${config.baseUrl}/`,
|
|
52
|
+
` · File server: ${config.baseUrl}/files/*`,
|
|
53
|
+
` · DB: ${config.dbPath}`,
|
|
54
|
+
` · Project root: ${config.projectRoot}`,
|
|
55
|
+
` · cv.md present: ${!!files.cvMd}`,
|
|
56
|
+
` · profile.yml: ${!!files.profile}`,
|
|
57
|
+
` · portals.yml: ${!!files.portalsYml}`,
|
|
58
|
+
` · career_packet: ${seed.created ? `seeded v${seed.version}` : `existing v${seed.version}`}`,
|
|
59
|
+
` · scheduler: ${enabled.length ? enabled.join(', ') : 'off'}`,
|
|
60
|
+
` · visa scoring: ${config.visaScoringEnabled ? 'on (0.5/0.3/0.2)' : 'off (0.6/0.4, visa tools hidden)'}`,
|
|
61
|
+
'',
|
|
62
|
+
];
|
|
21
63
|
// eslint-disable-next-line no-console
|
|
22
|
-
console.error(
|
|
23
|
-
'',
|
|
24
|
-
`▷ mcp-jsa listening on ${baseUrl}`,
|
|
25
|
-
` · MCP endpoint: ${baseUrl}/mcp`,
|
|
26
|
-
` · Tracker UI: ${baseUrl}/`,
|
|
27
|
-
` · File server: ${baseUrl}/files/*`,
|
|
28
|
-
` · DB: ${config.dbPath}`,
|
|
29
|
-
` · Project root: ${config.projectRoot}`,
|
|
30
|
-
` · cv.md present: ${!!files.cvMd}`,
|
|
31
|
-
` · profile.yml: ${!!files.profile}`,
|
|
32
|
-
` · portals.yml: ${!!files.portalsYml}`,
|
|
33
|
-
` · career_packet: ${seed.created ? `seeded v${seed.version}` : `existing v${seed.version}`}`,
|
|
34
|
-
` · scheduler: ${enabled.length ? enabled.join(', ') : 'off'}`,
|
|
35
|
-
` · visa scoring: ${config.visaScoringEnabled ? 'on (0.5/0.3/0.2)' : 'off (0.6/0.4, visa tools hidden)'}`,
|
|
36
|
-
'',
|
|
37
|
-
].join('\n'));
|
|
64
|
+
console.error(lines.join('\n'));
|
|
38
65
|
});
|
|
39
66
|
const shutdown = async (signal) => {
|
|
40
67
|
// eslint-disable-next-line no-console
|
|
@@ -46,10 +73,16 @@ async function main() {
|
|
|
46
73
|
};
|
|
47
74
|
process.on('SIGINT', () => { void shutdown('SIGINT'); });
|
|
48
75
|
process.on('SIGTERM', () => { void shutdown('SIGTERM'); });
|
|
76
|
+
if (opts.stdio) {
|
|
77
|
+
// Block here until the stdio client disconnects (stdin EOFs).
|
|
78
|
+
// The HTTP file server keeps serving /files/* in parallel.
|
|
79
|
+
await serveStdio();
|
|
80
|
+
// eslint-disable-next-line no-console
|
|
81
|
+
console.error('[shutdown] stdio client disconnected');
|
|
82
|
+
server.close();
|
|
83
|
+
await closeBrowser();
|
|
84
|
+
await shutdownScanResources();
|
|
85
|
+
process.exit(0);
|
|
86
|
+
}
|
|
49
87
|
}
|
|
50
|
-
main().catch((err) => {
|
|
51
|
-
// eslint-disable-next-line no-console
|
|
52
|
-
console.error('[fatal]', err);
|
|
53
|
-
process.exit(1);
|
|
54
|
-
});
|
|
55
88
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,+CAA+C;AAC/C,4EAA4E;AAC5E,EAAE;AACF,6DAA6D;AAC7D,6EAA6E;AAC7E,8EAA8E;AAC9E,EAAE;AACF,2EAA2E;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMzF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAoB,EAAE;IACrD,2DAA2D;IAC3D,KAAK,EAAE,CAAC;IACR,MAAM,IAAI,GAAG,MAAM,wBAAwB,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IAEjC,MAAM,GAAG,GAAG,YAAY,EAAE,CAAC;IAC3B,sEAAsE;IACtE,oEAAoE;IACpE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACxB,CAAC;IACD,mBAAmB,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YACtB,CAAC,CAAC;gBACE,EAAE;gBACF,0BAA0B;gBAC1B,kCAAkC;gBAClC,uBAAuB,MAAM,CAAC,OAAO,gCAAgC;gBACrE,uBAAuB,MAAM,CAAC,OAAO,GAAG;gBACxC,uBAAuB,MAAM,CAAC,MAAM,EAAE;gBACtC,uBAAuB,MAAM,CAAC,WAAW,EAAE;gBAC3C,uBAAuB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,EAAE;gBAC/F,uBAAuB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBACpE,uBAAuB,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,EAAE;gBAC5G,EAAE;aACH;YACH,CAAC,CAAC;gBACE,EAAE;gBACF,8BAA8B,MAAM,CAAC,OAAO,EAAE;gBAC9C,uBAAuB,MAAM,CAAC,OAAO,MAAM;gBAC3C,uBAAuB,MAAM,CAAC,OAAO,GAAG;gBACxC,uBAAuB,MAAM,CAAC,OAAO,UAAU;gBAC/C,uBAAuB,MAAM,CAAC,MAAM,EAAE;gBACtC,uBAAuB,MAAM,CAAC,WAAW,EAAE;gBAC3C,uBAAuB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE;gBACrC,uBAAuB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE;gBACxC,uBAAuB,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE;gBAC3C,uBAAuB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,EAAE;gBAC/F,uBAAuB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;gBACpE,uBAAuB,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kCAAkC,EAAE;gBAC5G,EAAE;aACH,CAAC;QACN,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAc,EAAE,EAAE;QACxC,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,MAAM,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,qBAAqB,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAG,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,8DAA8D;QAC9D,2DAA2D;QAC3D,MAAM,UAAU,EAAE,CAAC;QACnB,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,qBAAqB,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "job_ops-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Self-hosted MCP server for the full job-search loop: portal scanning, JD evaluation, tailored resume + cover PDFs, outreach drafting, story bank, negotiation brief — chat-driven, human-in-the-loop.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -14,8 +14,16 @@
|
|
|
14
14
|
"url": "https://github.com/mohith-das/job_ops-mcp/issues"
|
|
15
15
|
},
|
|
16
16
|
"keywords": [
|
|
17
|
-
"mcp",
|
|
18
|
-
"
|
|
17
|
+
"mcp",
|
|
18
|
+
"model-context-protocol",
|
|
19
|
+
"claude",
|
|
20
|
+
"job-search",
|
|
21
|
+
"resume",
|
|
22
|
+
"cover-letter",
|
|
23
|
+
"ats",
|
|
24
|
+
"career",
|
|
25
|
+
"agent",
|
|
26
|
+
"playwright"
|
|
19
27
|
],
|
|
20
28
|
"bin": {
|
|
21
29
|
"job_ops-mcp": "dist/cli.js",
|