-
Notifications
You must be signed in to change notification settings - Fork 17
[PROD RELEASE] - AI Review/Updates & Fixes #7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
901b560
95dc2c9
e1a9c2d
830ac26
55368fa
866c597
ab5be37
fb9f46e
dad6801
2671eff
f3546bb
865fed1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,4 +6,5 @@ dist | |
| .env | ||
| *.db | ||
| *.db-* | ||
| .vscode | ||
| .vscode | ||
| test-data | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| v24.13.0 | ||
| v24.14.0 |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -5,6 +5,7 @@ | |||||
| "main": "index.js", | ||||||
| "scripts": { | ||||||
| "test": "vitest run", | ||||||
| "test:integration": "vitest run --config vitest.integration.config.ts", | ||||||
| "dev": "mastra dev", | ||||||
| "build": "mastra build", | ||||||
| "start": "mastra start", | ||||||
|
|
@@ -25,26 +26,27 @@ | |||||
| }, | ||||||
| "dependencies": { | ||||||
| "@mastra/auth-auth0": "^1.0.1", | ||||||
| "@mastra/core": "^1.10.0", | ||||||
| "@mastra/core": "^1.15.0", | ||||||
| "@mastra/evals": "^1.1.2", | ||||||
| "@mastra/libsql": "^1.6.4", | ||||||
| "@mastra/loggers": "^1.0.2", | ||||||
| "@mastra/memory": "^1.6.1", | ||||||
| "@mastra/observability": "^1.3.1", | ||||||
| "@mastra/pg": "^1.7.2", | ||||||
| "ai": "^6.0.105", | ||||||
| "ai-sdk-ollama": "^3.8.0", | ||||||
| "@mastra/libsql": "^1.7.1", | ||||||
| "@mastra/loggers": "^1.0.3", | ||||||
| "@mastra/memory": "^1.9.0", | ||||||
| "@mastra/observability": "^1.5.1", | ||||||
| "@mastra/pg": "^1.8.2", | ||||||
| "@topcoder/wipro-ai-sdk-provider": "git+https://git.topcoder.com/Topcoder-Platform/Wipro-Provider-AI-SDK.git", | ||||||
|
||||||
| "@topcoder/wipro-ai-sdk-provider": "git+https://git.topcoder.com/Topcoder-Platform/Wipro-Provider-AI-SDK.git", | |
| "@topcoder/wipro-ai-sdk-provider": "git+https://git.topcoder.com/Topcoder-Platform/Wipro-Provider-AI-SDK.git#v1.0.0", |
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,53 @@ | ||
| import { Agent } from '@mastra/core/agent'; | ||
| import { wipro } from '../../../utils'; | ||
|
|
||
| export const jdRewriterAgent = new Agent({ | ||
| id: 'jd-rewriter-agent', | ||
| name: 'Job Description Rewriter', | ||
| model: wipro.chatModel('gpt-5-chat', { | ||
| temperature: 0.3, | ||
| topK: 40, | ||
| topP: 0.9, | ||
| maxOutputTokens: 16384, | ||
| }), | ||
| instructions: { | ||
| role: 'system', | ||
| content: `You are an expert technical recruiter and job description writer for Topcoder. | ||
| Your sole job is to take a raw, rough, or vague job description and rewrite it | ||
| into a clear, professional, well-structured format suitable for posting as a | ||
| Topcoder opportunity. | ||
|
|
||
| ──────────────────────────────────────────────────────── | ||
| CONTEXT | ||
| ──────────────────────────────────────────────────────── | ||
| Talent managers receive rough or vague job descriptions from customers that | ||
| are not in a suitable format for posting. You must rewrite them into a | ||
| standardized, professional format ensuring consistency across all | ||
| opportunities posted on the Topcoder platform. | ||
|
|
||
| ──────────────────────────────────────────────────────── | ||
| SKILLS-DRIVEN REWRITING PROTOCOL | ||
| ──────────────────────────────────────────────────────── | ||
| Follow these concerns in order: | ||
|
|
||
| 1. **jd-content-rewriting** — Rewrite the raw text into clear, professional, | ||
| specific language. Follow the rewriting principles, action verb usage, | ||
| signal word classification, and sparse/detailed input handling rules. | ||
|
|
||
| 2. **jd-structure-formatting** — Format the rewritten content into the | ||
| canonical Topcoder JD structure. Follow the section order, formatting | ||
| rules, and Markdown conventions for the formattedDescription output. | ||
|
|
||
| 3. **jd-skills-extraction** — Extract skill keywords from the rewritten | ||
| content. Follow the canonical casing rules, extraction heuristics, and | ||
| compound term splitting rules. | ||
|
|
||
| ──────────────────────────────────────────────────────── | ||
| STRICT OUTPUT CONTRACT | ||
| ──────────────────────────────────────────────────────── | ||
| Return ONLY the JSON object matching the provided schema. | ||
| Do NOT add commentary, markdown fences, or extra keys. | ||
| Every field is mandatory per the schema — never omit a key. | ||
| /no_think`, | ||
| }, | ||
| }); |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -2,22 +2,24 @@ import { Mastra } from '@mastra/core'; | |||||
| import { Observability, DefaultExporter, SensitiveDataFilter } from '@mastra/observability'; | ||||||
| import { skillExtractionWorkflow } from './workflows/skills/skill-extraction-workflow'; | ||||||
| import { challengeContextWorkflow } from './workflows/challenge/challenge-context-workflow'; | ||||||
| import { jdAutowriteWorkflow } from './workflows/jd/jd-autowrite-workflow'; | ||||||
| import { skillsMatchingAgent } from './agents/skills/skills-matching-agent'; | ||||||
| import { challengeParserAgent } from './agents/challenge/challenge-parser-agent'; | ||||||
| import { jdRewriterAgent } from './agents/jd/jd-rewriter-agent'; | ||||||
| import { PostgresStore } from '@mastra/pg'; | ||||||
| import { | ||||||
| skillDiscoveryAnswerRelevancyScorer, | ||||||
| skillDiscoveryPromptAlignmentScorer, | ||||||
| } from './scorers/skills-matching-scorers'; | ||||||
| instanceAnswerRelevancyScorer, | ||||||
| instancePromptAlignmentScorer, | ||||||
| } from './scorers/instance-scorers'; | ||||||
|
||||||
| } from './scorers/instance-scorers'; | |
| } from './scorers/skills-matching-scorers'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
apk add --no-cachealready avoids caching the index; runningapk updateafterwards is redundant and adds an extra layer/time. Consider removingRUN apk update(or combine update+add in a single layer without--no-cacheif you intentionally need the index cache).