🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@exercode/problem-utils

Package Overview
Dependencies
Maintainers
1
Versions
75
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@exercode/problem-utils - npm Package Compare versions

Comparing version
1.6.0
to
1.7.0
+1
-1
dist/presets/llm.cjs

@@ -1,2 +0,2 @@

"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),s=require("node:path"),t=require("@ai-sdk/google"),n=require("ai"),a=require("zod"),i=require("../helpers/parseArgs.cjs"),o=require("../helpers/printTestCaseResult.cjs"),u=require("../helpers/readTestCases.cjs"),c=require("../types/decisionCode.cjs"),l=a.z.object({model:a.z.enum(["google/gemini-2.5-flash-lite"])});function p(){return(p=e.asyncToGenerator(e.regenerator().m(function a(p,d){var C,g,m,f,v,q,T,b,j,h,D,E,R,k,w,A,P,x,y,I;return e.regenerator().w(function(a){for(;;)switch(a.p=a.n){case 0:return C=i.parseArgs(process.argv),g=l.parse(C.params),a.n=1,u.readTestCases(s.join(p,"test_cases"));case 1:return m=a.v,a.n=2,r.promises.readFile(s.join(C.cwd,"prompt.txt"),"utf8");case 2:f=a.v,v=e.createForOfIteratorHelper(m),a.p=3,v.s();case 4:if((q=v.n()).done){a.n=11;break}return T=q.value,b=Date.now(),a.p=5,a.n=6,n.generateText({model:t.google(g.model.slice(7)),prompt:null!=(j=null==(h=d.buildPrompt)?void 0:h.call(d,{prompt:f,testCase:T}))?j:f.replaceAll("{input}",null!=(D=T.input)?D:"")});case 6:return E=a.v,R=E.text,k=Date.now(),P=e.objectSpread2,x={testCaseId:T.id,decisionCode:c.DecisionCode.ACCEPTED,stdin:T.input,stdout:R,timeSeconds:(k-b)/1e3},a.n=7,d.test({testCase:T,result:{output:R}});case 7:if(w=P(x,a.v),o.printTestCaseResult(w),w.decisionCode===c.DecisionCode.ACCEPTED){a.n=8;break}return a.a(3,11);case 8:a.n=10;break;case 9:return a.p=9,y=a.v,A=Date.now(),o.printTestCaseResult({testCaseId:T.id,decisionCode:c.DecisionCode.RUNTIME_ERROR,stdin:T.input,stderr:y instanceof Error?y.message:String(y),timeSeconds:(A-b)/1e3}),a.a(3,11);case 10:a.n=4;break;case 11:a.n=13;break;case 12:a.p=12,I=a.v,v.e(I);case 13:return a.p=13,v.f(),a.f(13);case 14:return a.a(2)}},a,null,[[5,9],[3,12,13,14]])}))).apply(this,arguments)}exports.llmJudgePreset=function(e,r){return p.apply(this,arguments)};
"use strict";var e=require("../_virtual/_rollupPluginBabelHelpers.cjs"),r=require("node:fs"),t=require("node:path"),s=require("@ai-sdk/amazon-bedrock"),n=require("@ai-sdk/google"),a=require("@ai-sdk/openai"),o=require("@ai-sdk/xai"),i=require("ai"),u=require("zod"),c=require("../helpers/parseArgs.cjs"),d=require("../helpers/printTestCaseResult.cjs"),l=require("../helpers/readTestCases.cjs"),p=require("../types/decisionCode.cjs"),C={bedrock:s.bedrock,google:n.google,openai:a.openai,xai:o.xai},m=u.z.object({model:u.z.string().min(1)});function f(){return(f=e.asyncToGenerator(e.regenerator().m(function s(n,a){var o,u,C,f,v,b,q,k,T,w,h,j,E,D,x,R,A,y,P,z;return e.regenerator().w(function(s){for(;;)switch(s.p=s.n){case 0:return o=c.parseArgs(process.argv),u=m.parse(o.params),s.n=1,l.readTestCases(t.join(n,"test_cases"));case 1:return C=s.v,s.n=2,r.promises.readFile(t.join(o.cwd,"prompt.txt"),"utf8");case 2:f=s.v,v=e.createForOfIteratorHelper(C),s.p=3,v.s();case 4:if((b=v.n()).done){s.n=11;break}return q=b.value,k=Date.now(),s.p=5,s.n=6,i.generateText({model:g(u.model),prompt:null!=(T=null==(w=a.buildPrompt)?void 0:w.call(a,{prompt:f,testCase:q}))?T:f.replaceAll("{input}",null!=(h=q.input)?h:"")});case 6:return j=s.v,E=j.text,D=Date.now(),A=e.objectSpread2,y={testCaseId:q.id,decisionCode:p.DecisionCode.ACCEPTED,stdin:q.input,stdout:E,timeSeconds:(D-k)/1e3},s.n=7,a.test({testCase:q,result:{output:E}});case 7:if(x=A(y,s.v),d.printTestCaseResult(x),x.decisionCode===p.DecisionCode.ACCEPTED){s.n=8;break}return s.a(3,11);case 8:s.n=10;break;case 9:return s.p=9,P=s.v,R=Date.now(),d.printTestCaseResult({testCaseId:q.id,decisionCode:p.DecisionCode.RUNTIME_ERROR,stdin:q.input,stderr:P instanceof Error?P.message:String(P),timeSeconds:(R-k)/1e3}),s.a(3,11);case 10:s.n=4;break;case 11:s.n=13;break;case 12:s.p=12,z=s.v,v.e(z);case 13:return s.p=13,v.f(),s.f(13);case 14:return s.a(2)}},s,null,[[5,9],[3,12,13,14]])}))).apply(this,arguments)}function g(r){var t,s=r.split("/"),n=e.slicedToArray(s,2),a=n[0],o=n[1];if(!a||!o)throw new Error("bad model: ".concat(r));var i=null==(t=C[a])?void 0:t.call(C,o);if(!i)throw new Error("model not found: ".concat(r));return i}exports.llmJudgePreset=function(e,r){return f.apply(this,arguments)};
//# sourceMappingURL=llm.cjs.map

@@ -1,1 +0,1 @@

{"version":3,"file":"llm.cjs","sources":["../../src/presets/llm.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { google } from '@ai-sdk/google';\nimport type { ModelMessage } from 'ai';\nimport { generateText } from 'ai';\nimport { z } from 'zod';\n\nimport { parseArgs } from '../helpers/parseArgs.js';\nimport { printTestCaseResult } from '../helpers/printTestCaseResult.js';\nimport { readTestCases } from '../helpers/readTestCases.js';\nimport { DecisionCode } from '../types/decisionCode.js';\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nconst PROMPT_FILENAME = 'prompt.txt';\n\nconst judgeParamsSchema = z.object({\n model: z.enum(['google/gemini-2.5-flash-lite']),\n});\n\ninterface LlmJudgePresetOptions {\n buildPrompt?: (context: {\n prompt: string;\n testCase: { id: string; input?: string; output?: string };\n }) => string | ModelMessage[];\n test: (context: {\n testCase: { id: string; input?: string; output?: string };\n result: { output: string };\n }) => Partial<TestCaseResult> | Promise<Partial<TestCaseResult>>;\n}\n\n/**\n * A preset judge function for running and testing a user prompt in LLM.\n *\n * @example\n * Create `judge.ts`:\n * ```ts\n * import { llmJudgePreset } from '@exercode/problem-utils/presets/llm';\n * import { DecisionCode } from '@exercode/problem-utils';\n *\n * await llmJudgePreset(import.meta.dirname, {\n * test: (context) {\n * return { decisionCode: context.result.output ? DecisionCode.ACCEPTED : DecisionCode.WRONG_ANSWER };\n * }\n * });\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun judge.ts model_answers/java '{ \"model\": \"gemini-2.5-flash-lite\" }'\n * ```\n */\nexport async function llmJudgePreset(problemDir: string, options: LlmJudgePresetOptions): Promise<void> {\n const args = parseArgs(process.argv);\n const params = judgeParamsSchema.parse(args.params);\n\n const testCases = await readTestCases(path.join(problemDir, 'test_cases'));\n\n const prompt = await fs.promises.readFile(path.join(args.cwd, PROMPT_FILENAME), 'utf8');\n\n for (const testCase of testCases) {\n const startTimeMilliseconds = Date.now();\n try {\n // requires `GOOGLE_GENERATIVE_AI_API_KEY`\n const { text } = await generateText({\n model: google(params.model.slice('google/'.length)),\n prompt: options.buildPrompt?.({ prompt, testCase }) ?? prompt.replaceAll('{input}', testCase.input ?? ''),\n });\n\n const stopTimeMilliseconds = Date.now();\n\n const testCaseResult = {\n testCaseId: testCase.id,\n decisionCode: DecisionCode.ACCEPTED,\n stdin: testCase.input,\n stdout: text,\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n ...(await options.test({ testCase, result: { output: text } })),\n };\n\n printTestCaseResult(testCaseResult);\n\n if (testCaseResult.decisionCode !== DecisionCode.ACCEPTED) break;\n } catch (error) {\n const stopTimeMilliseconds = Date.now();\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode: DecisionCode.RUNTIME_ERROR,\n stdin: testCase.input,\n stderr: error instanceof Error ? error.message : String(error),\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n });\n\n break;\n }\n }\n}\n"],"names":["judgeParamsSchema","z","object","model","_llmJudgePreset","_asyncToGenerator","_regenerator","m","_callee","problemDir","options","args","params","testCases","prompt","_iterator","_step","testCase","startTimeMilliseconds","_options$buildPrompt","_options$buildPrompt2","_testCase$input","_yield$generateText","text","stopTimeMilliseconds","testCaseResult","_stopTimeMilliseconds","_t","_t2","_t3","_t4","w","_context","p","n","parseArgs","process","argv","parse","readTestCases","path","join","v","fs","promises","readFile","cwd","_createForOfIteratorHelper","s","done","value","Date","now","generateText","google","slice","buildPrompt","call","replaceAll","input","_objectSpread","testCaseId","id","decisionCode","DecisionCode","ACCEPTED","stdin","stdout","timeSeconds","test","result","output","printTestCaseResult","a","RUNTIME_ERROR","stderr","Error","message","String","e","f","apply","this","arguments","_x","_x2"],"mappings":"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"}
{"version":3,"file":"llm.cjs","sources":["../../src/presets/llm.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { bedrock } from '@ai-sdk/amazon-bedrock';\nimport { google } from '@ai-sdk/google';\nimport { openai } from '@ai-sdk/openai';\nimport { xai } from '@ai-sdk/xai';\nimport type { LanguageModel, ModelMessage } from 'ai';\nimport { generateText } from 'ai';\nimport { z } from 'zod';\n\nimport { parseArgs } from '../helpers/parseArgs.js';\nimport { printTestCaseResult } from '../helpers/printTestCaseResult.js';\nimport { readTestCases } from '../helpers/readTestCases.js';\nimport { DecisionCode } from '../types/decisionCode.js';\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nconst PROMPT_FILENAME = 'prompt.txt';\n\nconst providerByName: Record<string, typeof bedrock | typeof google | typeof openai | typeof xai> = {\n // requires `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`\n bedrock,\n // requires `GOOGLE_GENERATIVE_AI_API_KEY`\n google,\n // requires `OPENAI_API_KEY`\n openai,\n // requires `XAI_API_KEY`\n xai,\n} as const;\n\nconst judgeParamsSchema = z.object({\n model: z.string().min(1),\n});\n\ninterface LlmJudgePresetOptions {\n buildPrompt?: (context: {\n prompt: string;\n testCase: { id: string; input?: string; output?: string };\n }) => string | ModelMessage[];\n test: (context: {\n testCase: { id: string; input?: string; output?: string };\n result: { output: string };\n }) => Partial<TestCaseResult> | Promise<Partial<TestCaseResult>>;\n}\n\n/**\n * A preset judge function for running and testing a user prompt in LLM.\n *\n * @example\n * Create `judge.ts`:\n * ```ts\n * import { llmJudgePreset } from '@exercode/problem-utils/presets/llm';\n * import { DecisionCode } from '@exercode/problem-utils';\n *\n * await llmJudgePreset(import.meta.dirname, {\n * test: (context) {\n * return { decisionCode: context.result.output ? DecisionCode.ACCEPTED : DecisionCode.WRONG_ANSWER };\n * }\n * });\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun judge.ts model_answers/java '{ \"model\": \"gemini-2.5-flash-lite\" }'\n * ```\n */\nexport async function llmJudgePreset(problemDir: string, options: LlmJudgePresetOptions): Promise<void> {\n const args = parseArgs(process.argv);\n const params = judgeParamsSchema.parse(args.params);\n\n const testCases = await readTestCases(path.join(problemDir, 'test_cases'));\n\n const prompt = await fs.promises.readFile(path.join(args.cwd, PROMPT_FILENAME), 'utf8');\n\n for (const testCase of testCases) {\n const startTimeMilliseconds = Date.now();\n try {\n const { text } = await generateText({\n model: toLanguageModel(params.model),\n prompt: options.buildPrompt?.({ prompt, testCase }) ?? prompt.replaceAll('{input}', testCase.input ?? ''),\n });\n\n const stopTimeMilliseconds = Date.now();\n\n const testCaseResult = {\n testCaseId: testCase.id,\n decisionCode: DecisionCode.ACCEPTED,\n stdin: testCase.input,\n stdout: text,\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n ...(await options.test({ testCase, result: { output: text } })),\n };\n\n printTestCaseResult(testCaseResult);\n\n if (testCaseResult.decisionCode !== DecisionCode.ACCEPTED) break;\n } catch (error) {\n const stopTimeMilliseconds = Date.now();\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode: DecisionCode.RUNTIME_ERROR,\n stdin: testCase.input,\n stderr: error instanceof Error ? error.message : String(error),\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n });\n\n break;\n }\n }\n}\n\nfunction toLanguageModel(model: string): LanguageModel {\n const [providerId, modelId] = model.split('/');\n if (!providerId || !modelId) throw new Error(`bad model: ${model}`);\n const languageModel = providerByName[providerId]?.(modelId);\n if (!languageModel) throw new Error(`model not found: ${model}`);\n return languageModel;\n}\n"],"names":["providerByName","bedrock","google","openai","xai","judgeParamsSchema","z","object","model","string","min","_llmJudgePreset","_asyncToGenerator","_regenerator","m","_callee","problemDir","options","args","params","testCases","prompt","_iterator","_step","testCase","startTimeMilliseconds","_options$buildPrompt","_options$buildPrompt2","_testCase$input","_yield$generateText","text","stopTimeMilliseconds","testCaseResult","_stopTimeMilliseconds","_t","_t2","_t3","_t4","w","_context","p","n","parseArgs","process","argv","parse","readTestCases","path","join","v","fs","promises","readFile","cwd","_createForOfIteratorHelper","s","done","value","Date","now","generateText","toLanguageModel","buildPrompt","call","replaceAll","input","_objectSpread","testCaseId","id","decisionCode","DecisionCode","ACCEPTED","stdin","stdout","timeSeconds","test","result","output","printTestCaseResult","a","RUNTIME_ERROR","stderr","Error","message","String","e","f","apply","this","arguments","_providerByName$provi","_model$split","split","_model$split2","_slicedToArray","providerId","modelId","concat","languageModel","_x","_x2"],"mappings":"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"}

@@ -1,2 +0,2 @@

import{asyncToGenerator as e,regenerator as r,objectSpread2 as t,createForOfIteratorHelper as s}from"../_virtual/_rollupPluginBabelHelpers.js";import o from"node:fs";import n from"node:path";import{google as a}from"@ai-sdk/google";import{generateText as i}from"ai";import{z as p}from"zod";import{parseArgs as l}from"../helpers/parseArgs.js";import{printTestCaseResult as c}from"../helpers/printTestCaseResult.js";import{readTestCases as m}from"../helpers/readTestCases.js";import{DecisionCode as u}from"../types/decisionCode.js";var d=p.object({model:p.enum(["google/gemini-2.5-flash-lite"])});function f(e,r){return C.apply(this,arguments)}function C(){return(C=e(r().m(function e(p,f){var C,v,g,b,j,h,E,k,w,T,D,R,y,A,I,P,S,_,x,F;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return C=l(process.argv),v=d.parse(C.params),e.n=1,m(n.join(p,"test_cases"));case 1:return g=e.v,e.n=2,o.promises.readFile(n.join(C.cwd,"prompt.txt"),"utf8");case 2:b=e.v,j=s(g),e.p=3,j.s();case 4:if((h=j.n()).done){e.n=11;break}return E=h.value,k=Date.now(),e.p=5,e.n=6,i({model:a(v.model.slice(7)),prompt:null!=(w=null==(T=f.buildPrompt)?void 0:T.call(f,{prompt:b,testCase:E}))?w:b.replaceAll("{input}",null!=(D=E.input)?D:"")});case 6:return R=e.v,y=R.text,A=Date.now(),S=t,_={testCaseId:E.id,decisionCode:u.ACCEPTED,stdin:E.input,stdout:y,timeSeconds:(A-k)/1e3},e.n=7,f.test({testCase:E,result:{output:y}});case 7:if(I=S(_,e.v),c(I),I.decisionCode===u.ACCEPTED){e.n=8;break}return e.a(3,11);case 8:e.n=10;break;case 9:return e.p=9,x=e.v,P=Date.now(),c({testCaseId:E.id,decisionCode:u.RUNTIME_ERROR,stdin:E.input,stderr:x instanceof Error?x.message:String(x),timeSeconds:(P-k)/1e3}),e.a(3,11);case 10:e.n=4;break;case 11:e.n=13;break;case 12:e.p=12,F=e.v,j.e(F);case 13:return e.p=13,j.f(),e.f(13);case 14:return e.a(2)}},e,null,[[5,9],[3,12,13,14]])}))).apply(this,arguments)}export{f as llmJudgePreset};
import{asyncToGenerator as e,regenerator as r,objectSpread2 as o,createForOfIteratorHelper as t,slicedToArray as s}from"../_virtual/_rollupPluginBabelHelpers.js";import a from"node:fs";import n from"node:path";import{bedrock as i}from"@ai-sdk/amazon-bedrock";import{google as p}from"@ai-sdk/google";import{openai as c}from"@ai-sdk/openai";import{xai as d}from"@ai-sdk/xai";import{generateText as l}from"ai";import{z as m}from"zod";import{parseArgs as u}from"../helpers/parseArgs.js";import{printTestCaseResult as f}from"../helpers/printTestCaseResult.js";import{readTestCases as v}from"../helpers/readTestCases.js";import{DecisionCode as C}from"../types/decisionCode.js";var b={bedrock:i,google:p,openai:c,xai:d},g=m.object({model:m.string().min(1)});function k(e,r){return w.apply(this,arguments)}function w(){return(w=e(r().m(function e(s,i){var p,c,d,m,b,k,w,j,E,T,x,y,A,D,R,I,P,S,_,z;return r().w(function(e){for(;;)switch(e.p=e.n){case 0:return p=u(process.argv),c=g.parse(p.params),e.n=1,v(n.join(s,"test_cases"));case 1:return d=e.v,e.n=2,a.promises.readFile(n.join(p.cwd,"prompt.txt"),"utf8");case 2:m=e.v,b=t(d),e.p=3,b.s();case 4:if((k=b.n()).done){e.n=11;break}return w=k.value,j=Date.now(),e.p=5,e.n=6,l({model:h(c.model),prompt:null!=(E=null==(T=i.buildPrompt)?void 0:T.call(i,{prompt:m,testCase:w}))?E:m.replaceAll("{input}",null!=(x=w.input)?x:"")});case 6:return y=e.v,A=y.text,D=Date.now(),P=o,S={testCaseId:w.id,decisionCode:C.ACCEPTED,stdin:w.input,stdout:A,timeSeconds:(D-j)/1e3},e.n=7,i.test({testCase:w,result:{output:A}});case 7:if(R=P(S,e.v),f(R),R.decisionCode===C.ACCEPTED){e.n=8;break}return e.a(3,11);case 8:e.n=10;break;case 9:return e.p=9,_=e.v,I=Date.now(),f({testCaseId:w.id,decisionCode:C.RUNTIME_ERROR,stdin:w.input,stderr:_ instanceof Error?_.message:String(_),timeSeconds:(I-j)/1e3}),e.a(3,11);case 10:e.n=4;break;case 11:e.n=13;break;case 12:e.p=12,z=e.v,b.e(z);case 13:return e.p=13,b.f(),e.f(13);case 14:return e.a(2)}},e,null,[[5,9],[3,12,13,14]])}))).apply(this,arguments)}function h(e){var r,o=e.split("/"),t=s(o,2),a=t[0],n=t[1];if(!a||!n)throw new Error("bad model: ".concat(e));var i=null==(r=b[a])?void 0:r.call(b,n);if(!i)throw new Error("model not found: ".concat(e));return i}export{k as llmJudgePreset};
//# sourceMappingURL=llm.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"llm.js","sources":["../../src/presets/llm.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { google } from '@ai-sdk/google';\nimport type { ModelMessage } from 'ai';\nimport { generateText } from 'ai';\nimport { z } from 'zod';\n\nimport { parseArgs } from '../helpers/parseArgs.js';\nimport { printTestCaseResult } from '../helpers/printTestCaseResult.js';\nimport { readTestCases } from '../helpers/readTestCases.js';\nimport { DecisionCode } from '../types/decisionCode.js';\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nconst PROMPT_FILENAME = 'prompt.txt';\n\nconst judgeParamsSchema = z.object({\n model: z.enum(['google/gemini-2.5-flash-lite']),\n});\n\ninterface LlmJudgePresetOptions {\n buildPrompt?: (context: {\n prompt: string;\n testCase: { id: string; input?: string; output?: string };\n }) => string | ModelMessage[];\n test: (context: {\n testCase: { id: string; input?: string; output?: string };\n result: { output: string };\n }) => Partial<TestCaseResult> | Promise<Partial<TestCaseResult>>;\n}\n\n/**\n * A preset judge function for running and testing a user prompt in LLM.\n *\n * @example\n * Create `judge.ts`:\n * ```ts\n * import { llmJudgePreset } from '@exercode/problem-utils/presets/llm';\n * import { DecisionCode } from '@exercode/problem-utils';\n *\n * await llmJudgePreset(import.meta.dirname, {\n * test: (context) {\n * return { decisionCode: context.result.output ? DecisionCode.ACCEPTED : DecisionCode.WRONG_ANSWER };\n * }\n * });\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun judge.ts model_answers/java '{ \"model\": \"gemini-2.5-flash-lite\" }'\n * ```\n */\nexport async function llmJudgePreset(problemDir: string, options: LlmJudgePresetOptions): Promise<void> {\n const args = parseArgs(process.argv);\n const params = judgeParamsSchema.parse(args.params);\n\n const testCases = await readTestCases(path.join(problemDir, 'test_cases'));\n\n const prompt = await fs.promises.readFile(path.join(args.cwd, PROMPT_FILENAME), 'utf8');\n\n for (const testCase of testCases) {\n const startTimeMilliseconds = Date.now();\n try {\n // requires `GOOGLE_GENERATIVE_AI_API_KEY`\n const { text } = await generateText({\n model: google(params.model.slice('google/'.length)),\n prompt: options.buildPrompt?.({ prompt, testCase }) ?? prompt.replaceAll('{input}', testCase.input ?? ''),\n });\n\n const stopTimeMilliseconds = Date.now();\n\n const testCaseResult = {\n testCaseId: testCase.id,\n decisionCode: DecisionCode.ACCEPTED,\n stdin: testCase.input,\n stdout: text,\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n ...(await options.test({ testCase, result: { output: text } })),\n };\n\n printTestCaseResult(testCaseResult);\n\n if (testCaseResult.decisionCode !== DecisionCode.ACCEPTED) break;\n } catch (error) {\n const stopTimeMilliseconds = Date.now();\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode: DecisionCode.RUNTIME_ERROR,\n stdin: testCase.input,\n stderr: error instanceof Error ? error.message : String(error),\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n });\n\n break;\n }\n }\n}\n"],"names":["judgeParamsSchema","z","object","model","llmJudgePreset","_x","_x2","_llmJudgePreset","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","problemDir","options","args","params","testCases","prompt","_iterator","_step","testCase","startTimeMilliseconds","_options$buildPrompt","_options$buildPrompt2","_testCase$input","_yield$generateText","text","stopTimeMilliseconds","testCaseResult","_stopTimeMilliseconds","_t","_t2","_t3","_t4","w","_context","p","n","parseArgs","process","argv","parse","readTestCases","path","join","v","fs","promises","readFile","cwd","_createForOfIteratorHelper","s","done","value","Date","now","generateText","google","slice","buildPrompt","call","replaceAll","input","_objectSpread","testCaseId","id","decisionCode","DecisionCode","ACCEPTED","stdin","stdout","timeSeconds","test","result","output","printTestCaseResult","a","RUNTIME_ERROR","stderr","Error","message","String","e","f"],"mappings":"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"}
{"version":3,"file":"llm.js","sources":["../../src/presets/llm.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { bedrock } from '@ai-sdk/amazon-bedrock';\nimport { google } from '@ai-sdk/google';\nimport { openai } from '@ai-sdk/openai';\nimport { xai } from '@ai-sdk/xai';\nimport type { LanguageModel, ModelMessage } from 'ai';\nimport { generateText } from 'ai';\nimport { z } from 'zod';\n\nimport { parseArgs } from '../helpers/parseArgs.js';\nimport { printTestCaseResult } from '../helpers/printTestCaseResult.js';\nimport { readTestCases } from '../helpers/readTestCases.js';\nimport { DecisionCode } from '../types/decisionCode.js';\nimport type { TestCaseResult } from '../types/testCaseResult.js';\n\nconst PROMPT_FILENAME = 'prompt.txt';\n\nconst providerByName: Record<string, typeof bedrock | typeof google | typeof openai | typeof xai> = {\n // requires `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`\n bedrock,\n // requires `GOOGLE_GENERATIVE_AI_API_KEY`\n google,\n // requires `OPENAI_API_KEY`\n openai,\n // requires `XAI_API_KEY`\n xai,\n} as const;\n\nconst judgeParamsSchema = z.object({\n model: z.string().min(1),\n});\n\ninterface LlmJudgePresetOptions {\n buildPrompt?: (context: {\n prompt: string;\n testCase: { id: string; input?: string; output?: string };\n }) => string | ModelMessage[];\n test: (context: {\n testCase: { id: string; input?: string; output?: string };\n result: { output: string };\n }) => Partial<TestCaseResult> | Promise<Partial<TestCaseResult>>;\n}\n\n/**\n * A preset judge function for running and testing a user prompt in LLM.\n *\n * @example\n * Create `judge.ts`:\n * ```ts\n * import { llmJudgePreset } from '@exercode/problem-utils/presets/llm';\n * import { DecisionCode } from '@exercode/problem-utils';\n *\n * await llmJudgePreset(import.meta.dirname, {\n * test: (context) {\n * return { decisionCode: context.result.output ? DecisionCode.ACCEPTED : DecisionCode.WRONG_ANSWER };\n * }\n * });\n * ```\n *\n * Run with the required parameters:\n * ```bash\n * bun judge.ts model_answers/java '{ \"model\": \"gemini-2.5-flash-lite\" }'\n * ```\n */\nexport async function llmJudgePreset(problemDir: string, options: LlmJudgePresetOptions): Promise<void> {\n const args = parseArgs(process.argv);\n const params = judgeParamsSchema.parse(args.params);\n\n const testCases = await readTestCases(path.join(problemDir, 'test_cases'));\n\n const prompt = await fs.promises.readFile(path.join(args.cwd, PROMPT_FILENAME), 'utf8');\n\n for (const testCase of testCases) {\n const startTimeMilliseconds = Date.now();\n try {\n const { text } = await generateText({\n model: toLanguageModel(params.model),\n prompt: options.buildPrompt?.({ prompt, testCase }) ?? prompt.replaceAll('{input}', testCase.input ?? ''),\n });\n\n const stopTimeMilliseconds = Date.now();\n\n const testCaseResult = {\n testCaseId: testCase.id,\n decisionCode: DecisionCode.ACCEPTED,\n stdin: testCase.input,\n stdout: text,\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n ...(await options.test({ testCase, result: { output: text } })),\n };\n\n printTestCaseResult(testCaseResult);\n\n if (testCaseResult.decisionCode !== DecisionCode.ACCEPTED) break;\n } catch (error) {\n const stopTimeMilliseconds = Date.now();\n\n printTestCaseResult({\n testCaseId: testCase.id,\n decisionCode: DecisionCode.RUNTIME_ERROR,\n stdin: testCase.input,\n stderr: error instanceof Error ? error.message : String(error),\n timeSeconds: (stopTimeMilliseconds - startTimeMilliseconds) / 1000,\n });\n\n break;\n }\n }\n}\n\nfunction toLanguageModel(model: string): LanguageModel {\n const [providerId, modelId] = model.split('/');\n if (!providerId || !modelId) throw new Error(`bad model: ${model}`);\n const languageModel = providerByName[providerId]?.(modelId);\n if (!languageModel) throw new Error(`model not found: ${model}`);\n return languageModel;\n}\n"],"names":["providerByName","bedrock","google","openai","xai","judgeParamsSchema","z","object","model","string","min","llmJudgePreset","_x","_x2","_llmJudgePreset","apply","this","arguments","_asyncToGenerator","_regenerator","m","_callee","problemDir","options","args","params","testCases","prompt","_iterator","_step","testCase","startTimeMilliseconds","_options$buildPrompt","_options$buildPrompt2","_testCase$input","_yield$generateText","text","stopTimeMilliseconds","testCaseResult","_stopTimeMilliseconds","_t","_t2","_t3","_t4","w","_context","p","n","parseArgs","process","argv","parse","readTestCases","path","join","v","fs","promises","readFile","cwd","_createForOfIteratorHelper","s","done","value","Date","now","generateText","toLanguageModel","buildPrompt","call","replaceAll","input","_objectSpread","testCaseId","id","decisionCode","DecisionCode","ACCEPTED","stdin","stdout","timeSeconds","test","result","output","printTestCaseResult","a","RUNTIME_ERROR","stderr","Error","message","String","e","f","_providerByName$provi","_model$split","split","_model$split2","_slicedToArray","providerId","modelId","concat","languageModel"],"mappings":"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"}
{
"name": "@exercode/problem-utils",
"version": "1.6.0",
"version": "1.7.0",
"description": ":100: A set of utilities for judging programs on Exercode (https://exercode.willbooster.com/).",

@@ -52,3 +52,6 @@ "keywords": [

"dependencies": {
"@ai-sdk/amazon-bedrock": "4.0.13",
"@ai-sdk/google": "3.0.2",
"@ai-sdk/openai": "3.0.7",
"@ai-sdk/xai": "3.0.13",
"ai": "6.0.7",

@@ -55,0 +58,0 @@ "front-matter": "4.0.2",