config.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.pluginConfigSchematics = void 0;
const sdk_1 = require("@lmstudio/sdk");
exports.pluginConfigSchematics = (0, sdk_1.createConfigSchematics)()
.field("dataPath", "string", {
displayName: "Data Path",
subtitle: "Directory where job applications and data are stored. " +
"Leave blank to use ~/job-search-data.",
}, "")
.field("resumePath", "string", {
displayName: "Resume File Path",
subtitle: "Absolute path to your resume file. Supports PDF (.pdf), plain text (.txt), and Markdown (.md). " +
"Used by match_resume_to_job and generate_cover_letter.",
}, "")
.field("maxSearchResults", "numeric", {
int: true, min: 3, max: 20,
displayName: "Max Search Results",
subtitle: "Maximum number of job search results to return per query.",
slider: { min: 3, max: 20, step: 1 },
}, 8)
// Location & citizenship
.field("preferredLocation", "string", {
displayName: "Preferred Job Location",
subtitle: "Default location for job searches — e.g. 'India', 'Bangalore', 'Remote India', 'USA'. " +
"Used by search_jobs when no location is specified.",
}, "India")
.field("homeCountry", "string", {
displayName: "Home Country",
subtitle: "Your home country. Used to detect when a job is international " +
"and whether a work permit is required.",
}, "India")
.field("citizenship", "string", {
displayName: "Citizenship",
subtitle: "Your citizenship (e.g. 'Indian', 'US'). Used by check_work_permit " +
"to assess visa eligibility for international roles.",
}, "Indian")
.field("openToInternational", "boolean", {
displayName: "Open to International Roles",
subtitle: "Toggle on to include international job listings in searches and recommendations. " +
"When off, searches stay within your preferred location.",
}, false)
.field("homeJobBoards", "string", {
displayName: "Home Country Job Boards",
subtitle: "Comma-separated job board domains used when searching for local roles. " +
"E.g. naukri.com,linkedin.com,foundit.in — add or remove boards to suit your region.",
}, "naukri.com,linkedin.com,foundit.in,instahyre.com,iimjobs.com,wellfound.com,shine.com")
.field("globalJobBoards", "string", {
displayName: "Global Job Boards",
subtitle: "Comma-separated job board domains used when searching for international roles. " +
"E.g. linkedin.com,indeed.com,glassdoor.com",
}, "linkedin.com,indeed.com,glassdoor.com,lever.co,greenhouse.io,wellfound.com")
.field("searxngUrl", "string", {
displayName: "SearXNG URL",
subtitle: "Base URL of your self-hosted SearXNG instance (e.g. http://localhost:8080). " +
"Leave blank to use the built-in DDG/Bing scraper. " +
"SearXNG aggregates many engines and has no rate limits.",
}, "")
.field("searchRecencyWindow", "string", {
displayName: "Search Recency Window",
subtitle: "Limit all web searches to results published within this window. " +
"Options: day, week, month, year, any (no filter). " +
"Default is week — use day for very fresh job listings, month if results are sparse.",
}, "week")
.build();