Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ on: [push, pull_request]
jobs:
ci:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v6
- uses: pnpm/action-setup@v6
- uses: actions/setup-node@v6
with:
node-version: '22.19'
cache: pnpm
- uses: astral-sh/setup-uv@v7
- run: pnpm install --frozen-lockfile --ignore-scripts
- run: pnpm run --if-present lint
- run: pnpm run --if-present test
- run: pnpm quality
- run: pnpm cf:build
2 changes: 1 addition & 1 deletion agent-edge.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

/** @type {{ name: string, url: string, llmsTxt: string, llmsFullTxt?: string, indexMd: string, catalog: object }} */
// biome-ignore format: generated payload from apply-agent-surfaces (JSON keys/quotes)
export const AGENT_SURFACE = {
const AGENT_SURFACE = {
"name": "RolePatch",
"url": "https://rolepatch.com",
"llmsFullTxt": "# RolePatch — full agent brief\n\nAI-powered resume tailoring. Score fit against a job description, rewrite bullets for the role, and prep interviews.\n\n## Index\n\n# RolePatch\n\nAI-powered resume tailoring and job-application assistant.\n\n## What it is\n\n- Score resume fit against a job description\n- Rewrite bullets for the role\n- Cover letters, company research, STAR prep\n\n## Who it's for\n\nJob seekers who want reviewed, role-specific application materials — not generic AI fluff.\n\n## Agent entrypoints\n\n- https://rolepatch.com/llms.txt\n- https://rolepatch.com/api/ai\n- https://rolepatch.com/index.md\n\nDashboard routes require auth and are not agent-indexed.\n\n## Product links\n\n- Home: https://rolepatch.com/ — Product landing\n- Pricing: https://rolepatch.com/pricing — Plans and limits\n- Tools: https://rolepatch.com/tools — Public tools\n\n## Machine surfaces\n\n- https://rolepatch.com/llms.txt\n- https://rolepatch.com/llms-full.txt\n- https://rolepatch.com/api/ai\n- https://rolepatch.com/index.md\n- https://rolepatch.com/sitemap.xml\n- https://rolepatch.com/robots.txt\n\n## Contact\n\n- Owner: https://sarthakagrawal.dev\n- Agent email for directory verification: sarthakagrawal@agentmail.to\n",
Expand Down
14 changes: 7 additions & 7 deletions extension/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export interface ScrapedJob {
| 'generic';
}

interface ApplyPacketProfileAnswer {
export interface ApplyPacketProfileAnswer {
id: string;
category: string;
label: string;
Expand All @@ -39,7 +39,7 @@ interface ApplyPacketProofItem {
source_url?: string;
}

interface ApplyPacket {
export interface ApplyPacket {
job_id: string;
company?: string;
role?: string;
Expand All @@ -54,20 +54,20 @@ interface ApplyPacket {
receipt?: ApplyPacketReceipt | null;
}

interface ReceiptField {
export interface ReceiptField {
label: string;
value: string;
source: 'profile' | 'resume' | 'cover_letter' | 'user' | 'system' | 'ats';
}

interface FileAttachment {
export interface FileAttachment {
kind: 'resume' | 'cover_letter' | 'other';
name: string;
type: string;
base64: string;
}

interface FillResult {
export interface FillResult {
ok: boolean;
job_id: string;
url: string;
Expand All @@ -82,7 +82,7 @@ interface FillResult {
error?: string;
}

interface SubmitResult {
export interface SubmitResult {
ok: boolean;
job_id: string;
url: string;
Expand All @@ -96,7 +96,7 @@ interface SubmitResult {
error?: string;
}

interface FieldSnapshotResult {
export interface FieldSnapshotResult {
ok: boolean;
fields: ReceiptField[];
error?: string;
Expand Down
122 changes: 33 additions & 89 deletions knip.json
Original file line number Diff line number Diff line change
@@ -1,100 +1,44 @@
{
"$schema": "https://unpkg.com/knip@latest/schema.json",
"entry": ["open-next.config.ts", "agent-edge.mjs"],
"project": ["**/*.{ts,tsx,js,jsx,mjs,cjs,mts}"],
"ignore": [
"**/dist/**",
"**/build/**",
"**/.next/**",
"**/.astro/**",
"**/.output/**",
"**/node_modules/**",
"**/coverage/**",
"**/public/**",
"**/*.config.{js,ts,mjs,cjs}",
"**/eslint.config.*",
"**/blume.config.*",
"**/docs-blume/**",
"scripts/**",
"tests/e2e/**",
"test/**",
"**/*.test.{ts,tsx,js,mjs}",
"**/*.spec.{ts,tsx,js,mjs}",
"**/*.d.mts",
"**/*.d.ts",
"**/__tests__/**",
"**/playground/**",
"**/examples/**",
"extension/**"
"$schema": "https://unpkg.com/knip@6/schema.json",
"entry": [
"src/app/**/*.{ts,tsx}",
"src/**/*.test.{ts,tsx}",
"src/**/__tests__/**/*.{ts,tsx}",
"__tests__/**/*.{ts,tsx}",
"agent-edge.mjs",
"worker.mjs",
"scripts/*.mjs",
"blume.config.ts",
"next.config.ts",
"open-next.config.ts",
"postcss.config.mjs",
"vitest.config.ts"
],
"project": [
"src/**/*.{ts,tsx}",
"scripts/*.mjs",
"*.config.{ts,mjs}",
"agent-edge.mjs",
"worker.mjs"
],
"ignore": ["blume.config.ts", "open-next.config.ts"],
"ignoreDependencies": [
"typescript",
"@types/*",
"biome",
"@biomejs/biome",
"prettier",
"prettier-plugin-tailwindcss",
"husky",
"lint-staged",
"vitest",
"@vitest/*",
"@cloudflare/vitest-pool-workers",
"playwright",
"@playwright/test",
"drizzle-kit",
"wrangler",
"opennextjs-cloudflare",
"tailwindcss",
"@tailwindcss/*",
"lightningcss",
"tsx",
"size-limit",
"knip",
"blume",
"@blume/*",
"stockfish",
"astro",
"@astrojs/*",
"@shikijs/*",
"shiki",
"@vercel/node",
"three-stdlib",
"@mozilla/readability",
"@sparticuz/chromium",
"jscpd",
"mammoth",
"pdf-parse",
"puppeteer-core"
],
"ignoreBinaries": [
"next",
"astro",
"vite",
"wrangler",
"drizzle-kit",
"tsx",
"biome",
"playwright",
"vitest",
"knip",
"eslint",
"prettier",
"blume",
"yt-dlp",
"tailscale",
"gemini",
"fallow",
"security"
],
"ignoreIssues": {
"src/app/api/**/route.ts": ["exports", "types"],
"src/lib/actions/**": ["exports", "types"],
"lib/actions/**": ["exports", "types"],
"**/schema.ts": ["exports", "types"],
"**/db/schema*.ts": ["exports", "types"],
"**/commands/**": ["exports", "types"],
"**/agent-edge.*": ["exports", "types"],
"**/foundry-monitoring.ts": ["exports", "types"],
"**/analytics.ts": ["exports", "types"],
"**/api-timing.ts": ["exports", "types"]
"workspaces": {
"extension": {
"entry": ["src/background.ts", "src/content.ts", "src/popup.ts", "scripts/*.mjs"],
"project": ["src/**/*.ts", "scripts/*.mjs"]
},
"landing-astro": {
"entry": ["src/pages/**/*.astro", "astro.config.mjs"],
"project": ["src/**/*.{astro,ts}", "astro.config.mjs"],
"ignoreDependencies": ["lightningcss", "tailwindcss"]
}
}
}
11 changes: 10 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,15 @@
"docs:build": "blume build",
"docs:dev": "blume dev",
"knip": "knip --no-exit-code --reporter symbols",
"knip:strict": "knip --reporter symbols"
"knip:strict": "knip --reporter symbols",
"quality:unused": "node scripts/check-code-health.mjs unused",
"quality:complexity": "node scripts/check-code-health.mjs complexity",
"quality:duplication": "node scripts/check-code-health.mjs duplication",
"quality:cycles": "node scripts/check-code-health.mjs cycles",
"quality:dependencies": "node scripts/check-code-health.mjs dependencies",
"quality:suppressions": "node scripts/check-code-health.mjs suppressions",
"quality:hygiene": "node scripts/check-code-health.mjs hygiene",
"quality": "pnpm check && pnpm typecheck && pnpm test:coverage && pnpm docs:check && pnpm --filter @rolepatch/extension typecheck && pnpm quality:unused && pnpm quality:complexity && pnpm quality:duplication && pnpm quality:cycles && pnpm quality:dependencies && pnpm quality:suppressions && pnpm quality:hygiene"
},
"dependencies": {
"@ai-sdk/openai-compatible": "^2.0.41",
Expand Down Expand Up @@ -80,6 +88,7 @@
"beasties": "^0.3.5",
"blume": "1.2.0",
"husky": "^9.1.7",
"jscpd": "5.0.14",
"jsdom": "^29.1.1",
"knip": "^6.29.0",
"tailwindcss": "^4.3.3",
Expand Down
68 changes: 68 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading