promptfoo 0.93.3 → 0.94.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/dist/drizzle/0008_broad_boomer.sql +2 -0
- package/dist/drizzle/0009_strong_marten_broadcloak.sql +19 -0
- package/dist/drizzle/meta/0008_snapshot.json +732 -0
- package/dist/drizzle/meta/0009_snapshot.json +622 -0
- package/dist/drizzle/meta/_journal.json +14 -0
- package/dist/package.json +17 -20
- package/dist/src/app/assets/index-4JjOSsmx.js +769 -0
- package/dist/src/app/assets/{index.es-9tmWNumA.js → index.es-DOb6N_qo.js} +1 -1
- package/dist/src/app/assets/{sync-BdPRE9yh.js → sync-MiL88_Tb.js} +1 -1
- package/dist/src/app/index.html +1 -1
- package/dist/src/{assertions.d.ts → assertions/index.d.ts} +4 -5
- package/dist/src/assertions/index.d.ts.map +1 -0
- package/dist/src/{assertions.js → assertions/index.js} +24 -50
- package/dist/src/assertions/index.js.map +1 -0
- package/dist/src/assertions/utils.d.ts +4 -0
- package/dist/src/assertions/utils.d.ts.map +1 -0
- package/dist/src/assertions/utils.js +39 -0
- package/dist/src/assertions/utils.js.map +1 -0
- package/dist/src/cache.d.ts +2 -1
- package/dist/src/cache.d.ts.map +1 -1
- package/dist/src/cache.js +16 -3
- package/dist/src/cache.js.map +1 -1
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +41 -8
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/eval.d.ts.map +1 -1
- package/dist/src/commands/eval.js +43 -19
- package/dist/src/commands/eval.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +3 -4
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/database/index.d.ts.map +1 -1
- package/dist/src/database/index.js +4 -1
- package/dist/src/database/index.js.map +1 -1
- package/dist/src/database/tables.d.ts +171 -154
- package/dist/src/database/tables.d.ts.map +1 -1
- package/dist/src/database/tables.js +7 -34
- package/dist/src/database/tables.js.map +1 -1
- package/dist/src/envars.d.ts +5 -3
- package/dist/src/envars.d.ts.map +1 -1
- package/dist/src/envars.js.map +1 -1
- package/dist/src/evaluator.d.ts.map +1 -1
- package/dist/src/evaluator.js +0 -5
- package/dist/src/evaluator.js.map +1 -1
- package/dist/src/fetch.d.ts +0 -1
- package/dist/src/fetch.d.ts.map +1 -1
- package/dist/src/fetch.js +17 -6
- package/dist/src/fetch.js.map +1 -1
- package/dist/src/googleSheets.d.ts.map +1 -1
- package/dist/src/googleSheets.js +13 -2
- package/dist/src/googleSheets.js.map +1 -1
- package/dist/src/integrations/portkey.d.ts.map +1 -1
- package/dist/src/integrations/portkey.js +1 -2
- package/dist/src/integrations/portkey.js.map +1 -1
- package/dist/src/models/eval.d.ts +1 -3
- package/dist/src/models/eval.d.ts.map +1 -1
- package/dist/src/models/eval.js +5 -21
- package/dist/src/models/eval.js.map +1 -1
- package/dist/src/models/evalResult.d.ts +2 -0
- package/dist/src/models/evalResult.d.ts.map +1 -1
- package/dist/src/models/evalResult.js +4 -1
- package/dist/src/models/evalResult.js.map +1 -1
- package/dist/src/onboarding.d.ts +2 -2
- package/dist/src/onboarding.d.ts.map +1 -1
- package/dist/src/onboarding.js +2 -2
- package/dist/src/onboarding.js.map +1 -1
- package/dist/src/prompts/processors/javascript.d.ts +1 -0
- package/dist/src/prompts/processors/javascript.d.ts.map +1 -1
- package/dist/src/prompts/processors/javascript.js +6 -2
- package/dist/src/prompts/processors/javascript.js.map +1 -1
- package/dist/src/prompts/processors/python.d.ts +2 -0
- package/dist/src/prompts/processors/python.d.ts.map +1 -1
- package/dist/src/prompts/processors/python.js +4 -2
- package/dist/src/prompts/processors/python.js.map +1 -1
- package/dist/src/providers/anthropic.js +1 -1
- package/dist/src/providers/anthropic.js.map +1 -1
- package/dist/src/providers/bedrock.d.ts +4 -0
- package/dist/src/providers/bedrock.d.ts.map +1 -1
- package/dist/src/providers/bedrock.js +12 -0
- package/dist/src/providers/bedrock.js.map +1 -1
- package/dist/src/providers/fal.d.ts.map +1 -1
- package/dist/src/providers/fal.js +1 -2
- package/dist/src/providers/fal.js.map +1 -1
- package/dist/src/providers/http.d.ts +6 -2
- package/dist/src/providers/http.d.ts.map +1 -1
- package/dist/src/providers/http.js +70 -29
- package/dist/src/providers/http.js.map +1 -1
- package/dist/src/providers/openai.d.ts.map +1 -1
- package/dist/src/providers/openai.js +48 -33
- package/dist/src/providers/openai.js.map +1 -1
- package/dist/src/providers/palm.d.ts.map +1 -1
- package/dist/src/providers/palm.js +3 -1
- package/dist/src/providers/palm.js.map +1 -1
- package/dist/src/providers/promptfoo.d.ts.map +1 -1
- package/dist/src/providers/promptfoo.js +4 -2
- package/dist/src/providers/promptfoo.js.map +1 -1
- package/dist/src/providers/replicate.d.ts.map +1 -1
- package/dist/src/providers/replicate.js +2 -3
- package/dist/src/providers/replicate.js.map +1 -1
- package/dist/src/providers/togetherai.d.ts +7 -0
- package/dist/src/providers/togetherai.d.ts.map +1 -0
- package/dist/src/providers/togetherai.js +33 -0
- package/dist/src/providers/togetherai.js.map +1 -0
- package/dist/src/providers/vertex.d.ts.map +1 -1
- package/dist/src/providers/vertex.js +4 -4
- package/dist/src/providers/vertex.js.map +1 -1
- package/dist/src/providers/vertexUtil.d.ts +78 -1
- package/dist/src/providers/vertexUtil.d.ts.map +1 -1
- package/dist/src/providers/vertexUtil.js +57 -15
- package/dist/src/providers/vertexUtil.js.map +1 -1
- package/dist/src/providers/watsonx.d.ts +5 -4
- package/dist/src/providers/watsonx.d.ts.map +1 -1
- package/dist/src/providers/watsonx.js +48 -21
- package/dist/src/providers/watsonx.js.map +1 -1
- package/dist/src/providers/xai.d.ts +7 -0
- package/dist/src/providers/xai.d.ts.map +1 -0
- package/dist/src/providers/xai.js +23 -0
- package/dist/src/providers/xai.js.map +1 -0
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +26 -0
- package/dist/src/providers.js.map +1 -1
- package/dist/src/python/pythonUtils.js +2 -2
- package/dist/src/python/pythonUtils.js.map +1 -1
- package/dist/src/redteam/commands/init.d.ts.map +1 -1
- package/dist/src/redteam/commands/init.js +10 -4
- package/dist/src/redteam/commands/init.js.map +1 -1
- package/dist/src/redteam/constants.d.ts +25 -2
- package/dist/src/redteam/constants.d.ts.map +1 -1
- package/dist/src/redteam/constants.js +335 -3
- package/dist/src/redteam/constants.js.map +1 -1
- package/dist/src/redteam/extraction/util.d.ts.map +1 -1
- package/dist/src/redteam/extraction/util.js +4 -2
- package/dist/src/redteam/extraction/util.js.map +1 -1
- package/dist/src/redteam/plugins/index.d.ts.map +1 -1
- package/dist/src/redteam/plugins/index.js +9 -4
- package/dist/src/redteam/plugins/index.js.map +1 -1
- package/dist/src/redteam/providers/crescendo/index.d.ts.map +1 -1
- package/dist/src/redteam/providers/crescendo/index.js +14 -10
- package/dist/src/redteam/providers/crescendo/index.js.map +1 -1
- package/dist/src/redteam/providers/iterative.d.ts.map +1 -1
- package/dist/src/redteam/providers/iterative.js +10 -9
- package/dist/src/redteam/providers/iterative.js.map +1 -1
- package/dist/src/redteam/providers/iterativeImage.d.ts.map +1 -1
- package/dist/src/redteam/providers/iterativeImage.js +6 -0
- package/dist/src/redteam/providers/iterativeImage.js.map +1 -1
- package/dist/src/redteam/providers/iterativeTree.d.ts +0 -7
- package/dist/src/redteam/providers/iterativeTree.d.ts.map +1 -1
- package/dist/src/redteam/providers/iterativeTree.js +11 -16
- package/dist/src/redteam/providers/iterativeTree.js.map +1 -1
- package/dist/src/redteam/providers/shared.d.ts +9 -2
- package/dist/src/redteam/providers/shared.d.ts.map +1 -1
- package/dist/src/redteam/providers/shared.js +25 -0
- package/dist/src/redteam/providers/shared.js.map +1 -1
- package/dist/src/redteam/util.d.ts +1 -0
- package/dist/src/redteam/util.d.ts.map +1 -1
- package/dist/src/redteam/util.js +5 -3
- package/dist/src/redteam/util.js.map +1 -1
- package/dist/src/server/apiSchemas.d.ts +59 -0
- package/dist/src/server/apiSchemas.d.ts.map +1 -0
- package/dist/src/server/apiSchemas.js +37 -0
- package/dist/src/server/apiSchemas.js.map +1 -0
- package/dist/src/server/routes/eval.d.ts +2 -0
- package/dist/src/server/routes/eval.d.ts.map +1 -0
- package/dist/src/server/routes/eval.js +160 -0
- package/dist/src/server/routes/eval.js.map +1 -0
- package/dist/src/server/routes/providers.d.ts.map +1 -1
- package/dist/src/server/routes/providers.js.map +1 -1
- package/dist/src/server/routes/redteam.d.ts +2 -0
- package/dist/src/server/routes/redteam.d.ts.map +1 -0
- package/dist/src/server/routes/redteam.js +43 -0
- package/dist/src/server/routes/redteam.js.map +1 -0
- package/dist/src/server/routes/user.d.ts +2 -0
- package/dist/src/server/routes/user.d.ts.map +1 -0
- package/dist/src/server/routes/user.js +60 -0
- package/dist/src/server/routes/user.js.map +1 -0
- package/dist/src/server/server.d.ts.map +1 -1
- package/dist/src/server/server.js +25 -141
- package/dist/src/server/server.js.map +1 -1
- package/dist/src/share.d.ts.map +1 -1
- package/dist/src/share.js.map +1 -1
- package/dist/src/telemetry.d.ts +21 -6
- package/dist/src/telemetry.d.ts.map +1 -1
- package/dist/src/telemetry.js +28 -11
- package/dist/src/telemetry.js.map +1 -1
- package/dist/src/testCases.d.ts.map +1 -1
- package/dist/src/testCases.js +9 -0
- package/dist/src/testCases.js.map +1 -1
- package/dist/src/types/index.d.ts +4892 -56
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +17 -0
- package/dist/src/types/index.js.map +1 -1
- package/dist/src/types/prompts.d.ts +1 -0
- package/dist/src/types/prompts.d.ts.map +1 -1
- package/dist/src/types/providers.d.ts +1 -0
- package/dist/src/types/providers.d.ts.map +1 -1
- package/dist/src/types/providers.js.map +1 -1
- package/dist/src/util/config/default.d.ts +1 -0
- package/dist/src/util/config/default.d.ts.map +1 -1
- package/dist/src/util/config/default.js +4 -0
- package/dist/src/util/config/default.js.map +1 -1
- package/dist/src/util/config/load.d.ts.map +1 -1
- package/dist/src/util/config/load.js +7 -0
- package/dist/src/util/config/load.js.map +1 -1
- package/dist/src/util/config/manage.d.ts.map +1 -1
- package/dist/src/util/config/manage.js +12 -1
- package/dist/src/util/config/manage.js.map +1 -1
- package/dist/src/util/index.d.ts +0 -1
- package/dist/src/util/index.d.ts.map +1 -1
- package/dist/src/util/index.js +1 -10
- package/dist/src/util/index.js.map +1 -1
- package/dist/src/validators/redteam.d.ts +6 -3
- package/dist/src/validators/redteam.d.ts.map +1 -1
- package/dist/src/validators/redteam.js +15 -14
- package/dist/src/validators/redteam.js.map +1 -1
- package/dist/test/assertions/index.test.d.ts +2 -0
- package/dist/test/assertions/index.test.d.ts.map +1 -0
- package/dist/test/{assertions.test.js → assertions/index.test.js} +22 -23
- package/dist/test/assertions/index.test.js.map +1 -0
- package/dist/test/assertions/utils.test.d.ts +2 -0
- package/dist/test/assertions/utils.test.d.ts.map +1 -0
- package/dist/test/{assertions.utils.test.js → assertions/utils.test.js} +58 -8
- package/dist/test/assertions/utils.test.js.map +1 -0
- package/dist/test/cache.test.js +22 -23
- package/dist/test/cache.test.js.map +1 -1
- package/dist/test/commands/init.test.js +14 -11
- package/dist/test/commands/init.test.js.map +1 -1
- package/dist/test/evaluator.test.js +0 -1
- package/dist/test/evaluator.test.js.map +1 -1
- package/dist/test/evaluatorHelpers.test.js +0 -1
- package/dist/test/evaluatorHelpers.test.js.map +1 -1
- package/dist/test/factories/evalFactory.d.ts +171 -40
- package/dist/test/factories/evalFactory.d.ts.map +1 -1
- package/dist/test/matchers.test.js +1 -1
- package/dist/test/matchers.test.js.map +1 -1
- package/dist/test/models/eval.test.js +30 -1
- package/dist/test/models/eval.test.js.map +1 -1
- package/dist/test/onboarding.test.js +1 -1
- package/dist/test/prompts/index.test.d.ts +2 -0
- package/dist/test/prompts/index.test.d.ts.map +1 -0
- package/dist/test/{prompts.test.js → prompts/index.test.js} +12 -10
- package/dist/test/prompts/index.test.js.map +1 -0
- package/dist/test/prompts/processors/javascript.test.d.ts +2 -0
- package/dist/test/prompts/processors/javascript.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.javascript.test.js → prompts/processors/javascript.test.js} +58 -5
- package/dist/test/prompts/processors/javascript.test.js.map +1 -0
- package/dist/test/prompts/processors/json.test.d.ts +2 -0
- package/dist/test/prompts/processors/json.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.json.test.js → prompts/processors/json.test.js} +2 -2
- package/dist/test/prompts/processors/json.test.js.map +1 -0
- package/dist/test/prompts/processors/jsonl.test.d.ts +2 -0
- package/dist/test/prompts/processors/jsonl.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.jsonl.test.js → prompts/processors/jsonl.test.js} +2 -2
- package/dist/test/prompts/processors/jsonl.test.js.map +1 -0
- package/dist/test/prompts/processors/markdown.test.d.ts +2 -0
- package/dist/test/prompts/processors/markdown.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.markdown.test.js → prompts/processors/markdown.test.js} +2 -2
- package/dist/test/prompts/processors/markdown.test.js.map +1 -0
- package/dist/test/prompts/processors/python.test.d.ts +2 -0
- package/dist/test/prompts/processors/python.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.python.test.js → prompts/processors/python.test.js} +19 -4
- package/dist/test/prompts/processors/python.test.js.map +1 -0
- package/dist/test/prompts/processors/python.utils.test.d.ts +2 -0
- package/dist/test/prompts/processors/python.utils.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.python.utils.test.js → prompts/processors/python.utils.test.js} +8 -6
- package/dist/test/prompts/processors/python.utils.test.js.map +1 -0
- package/dist/test/prompts/processors/string.test.d.ts +2 -0
- package/dist/test/prompts/processors/string.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.string.test.js → prompts/processors/string.test.js} +2 -2
- package/dist/test/prompts/processors/string.test.js.map +1 -0
- package/dist/test/prompts/processors/text.test.d.ts +2 -0
- package/dist/test/prompts/processors/text.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.text.test.js → prompts/processors/text.test.js} +3 -3
- package/dist/test/prompts/processors/text.test.js.map +1 -0
- package/dist/test/prompts/processors/yaml.test.d.ts +2 -0
- package/dist/test/prompts/processors/yaml.test.d.ts.map +1 -0
- package/dist/test/{prompts.processors.yaml.test.js → prompts/processors/yaml.test.js} +2 -2
- package/dist/test/prompts/processors/yaml.test.js.map +1 -0
- package/dist/test/prompts/utils.test.d.ts +2 -0
- package/dist/test/prompts/utils.test.d.ts.map +1 -0
- package/dist/test/{prompts.utils.test.js → prompts/utils.test.js} +2 -2
- package/dist/test/prompts/utils.test.js.map +1 -0
- package/dist/test/providers/anthropic.test.d.ts +2 -0
- package/dist/test/providers/anthropic.test.d.ts.map +1 -0
- package/dist/test/{providers.anthropic.test.js → providers/anthropic.test.js} +4 -4
- package/dist/test/providers/anthropic.test.js.map +1 -0
- package/dist/test/providers/azure.test.d.ts +2 -0
- package/dist/test/providers/azure.test.d.ts.map +1 -0
- package/dist/test/{providers.azure.test.js → providers/azure.test.js} +7 -7
- package/dist/test/providers/azure.test.js.map +1 -0
- package/dist/test/providers/bedrock.test.d.ts +2 -0
- package/dist/test/providers/bedrock.test.d.ts.map +1 -0
- package/dist/test/{providers.bedrock.test.js → providers/bedrock.test.js} +62 -10
- package/dist/test/providers/bedrock.test.js.map +1 -0
- package/dist/test/providers/groq.test.d.ts +2 -0
- package/dist/test/providers/groq.test.d.ts.map +1 -0
- package/dist/test/{providers.groq.test.js → providers/groq.test.js} +6 -6
- package/dist/test/providers/groq.test.js.map +1 -0
- package/dist/test/providers/http.test.d.ts +2 -0
- package/dist/test/providers/http.test.d.ts.map +1 -0
- package/dist/test/{providers.http.test.js → providers/http.test.js} +195 -47
- package/dist/test/providers/http.test.js.map +1 -0
- package/dist/test/providers/index.test.d.ts +2 -0
- package/dist/test/providers/index.test.d.ts.map +1 -0
- package/dist/test/{providers.test.js → providers/index.test.js} +193 -100
- package/dist/test/providers/index.test.js.map +1 -0
- package/dist/test/providers/llama.test.d.ts +2 -0
- package/dist/test/providers/llama.test.d.ts.map +1 -0
- package/dist/test/{providers.llama.test.js → providers/llama.test.js} +15 -10
- package/dist/test/providers/llama.test.js.map +1 -0
- package/dist/test/providers/mistral.test.d.ts +2 -0
- package/dist/test/providers/mistral.test.d.ts.map +1 -0
- package/dist/test/{providers.mistral.test.js → providers/mistral.test.js} +32 -16
- package/dist/test/providers/mistral.test.js.map +1 -0
- package/dist/test/providers/packageParser.test.d.ts +2 -0
- package/dist/test/providers/packageParser.test.d.ts.map +1 -0
- package/dist/test/{providers.packageParser.test.js → providers/packageParser.test.js} +5 -5
- package/dist/test/providers/packageParser.test.js.map +1 -0
- package/dist/test/providers/palm.test.d.ts +2 -0
- package/dist/test/providers/palm.test.d.ts.map +1 -0
- package/dist/test/providers/palm.test.js +131 -0
- package/dist/test/providers/palm.test.js.map +1 -0
- package/dist/test/providers/pythonCompletion.test.d.ts +2 -0
- package/dist/test/providers/pythonCompletion.test.d.ts.map +1 -0
- package/dist/test/{providers.pythonCompletion.test.js → providers/pythonCompletion.test.js} +8 -8
- package/dist/test/providers/pythonCompletion.test.js.map +1 -0
- package/dist/test/providers/scriptCompletion.test.d.ts +2 -0
- package/dist/test/providers/scriptCompletion.test.d.ts.map +1 -0
- package/dist/test/{providers.scriptCompletion.test.js → providers/scriptCompletion.test.js} +5 -5
- package/dist/test/providers/scriptCompletion.test.js.map +1 -0
- package/dist/test/providers/shared.test.d.ts +2 -0
- package/dist/test/providers/shared.test.d.ts.map +1 -0
- package/dist/test/{providers.shared.test.js → providers/shared.test.js} +4 -4
- package/dist/test/providers/shared.test.js.map +1 -0
- package/dist/test/providers/togetherai.test.d.ts +2 -0
- package/dist/test/providers/togetherai.test.d.ts.map +1 -0
- package/dist/test/providers/togetherai.test.js +53 -0
- package/dist/test/providers/togetherai.test.js.map +1 -0
- package/dist/test/providers/vertex.test.d.ts +2 -0
- package/dist/test/providers/vertex.test.d.ts.map +1 -0
- package/dist/test/{providers.vertex.test.js → providers/vertex.test.js} +110 -9
- package/dist/test/providers/vertex.test.js.map +1 -0
- package/dist/test/providers/watsonx.test.d.ts +2 -0
- package/dist/test/providers/watsonx.test.d.ts.map +1 -0
- package/dist/test/{providers.watsonx.test.js → providers/watsonx.test.js} +23 -22
- package/dist/test/providers/watsonx.test.js.map +1 -0
- package/dist/test/providers/xai.test.d.ts +2 -0
- package/dist/test/providers/xai.test.d.ts.map +1 -0
- package/dist/test/providers/xai.test.js +47 -0
- package/dist/test/providers/xai.test.js.map +1 -0
- package/dist/test/rateLimit.test.js +18 -28
- package/dist/test/rateLimit.test.js.map +1 -1
- package/dist/test/redteam/extraction/entities.test.js +8 -1
- package/dist/test/redteam/extraction/entities.test.js.map +1 -1
- package/dist/test/redteam/extraction/purpose.test.js +8 -1
- package/dist/test/redteam/extraction/purpose.test.js.map +1 -1
- package/dist/test/redteam/extraction/util.test.js +17 -2
- package/dist/test/redteam/extraction/util.test.js.map +1 -1
- package/dist/test/redteam/providers/iterativeTree.test.js +3 -18
- package/dist/test/redteam/providers/iterativeTree.test.js.map +1 -1
- package/dist/test/redteam/util.test.js +55 -0
- package/dist/test/redteam/util.test.js.map +1 -1
- package/dist/test/redteam/validators.test.js +1 -0
- package/dist/test/redteam/validators.test.js.map +1 -1
- package/dist/test/server/providers.test.js +13 -1
- package/dist/test/server/providers.test.js.map +1 -1
- package/dist/test/testCases.test.js +12 -1
- package/dist/test/testCases.test.js.map +1 -1
- package/dist/test/types.test.js +1 -12
- package/dist/test/types.test.js.map +1 -1
- package/dist/test/util/config/default.test.d.ts +2 -0
- package/dist/test/util/config/default.test.d.ts.map +1 -0
- package/dist/test/{util.config.default.test.js → util/config/default.test.js} +4 -4
- package/dist/test/util/config/default.test.js.map +1 -0
- package/dist/test/util/config/load.test.d.ts +2 -0
- package/dist/test/util/config/load.test.d.ts.map +1 -0
- package/dist/test/{util.config.load.test.ts.js → util/config/load.test.js} +13 -38
- package/dist/test/util/config/load.test.js.map +1 -0
- package/dist/test/util/config/main.test.d.ts +2 -0
- package/dist/test/util/config/main.test.d.ts.map +1 -0
- package/dist/test/{util.config.main.test.js → util/config/main.test.js} +13 -5
- package/dist/test/util/config/main.test.js.map +1 -0
- package/dist/test/util/deleteAll.test.d.ts +2 -0
- package/dist/test/util/deleteAll.test.d.ts.map +1 -0
- package/dist/test/{util.deleteAll.test.js → util/deleteAll.test.js} +5 -5
- package/dist/test/util/deleteAll.test.js.map +1 -0
- package/dist/test/util/file.test.d.ts +2 -0
- package/dist/test/util/file.test.d.ts.map +1 -0
- package/dist/test/{util.file.test.js → util/file.test.js} +2 -2
- package/dist/test/util/file.test.js.map +1 -0
- package/dist/test/util/generation.test.d.ts +2 -0
- package/dist/test/util/generation.test.d.ts.map +1 -0
- package/dist/test/{util.generation.test.js → util/generation.test.js} +3 -3
- package/dist/test/{util.generation.test.js.map → util/generation.test.js.map} +1 -1
- package/dist/test/util/index.test.d.ts +2 -0
- package/dist/test/util/index.test.d.ts.map +1 -0
- package/dist/test/{util.test.js → util/index.test.js} +10 -10
- package/dist/test/util/index.test.js.map +1 -0
- package/dist/test/util/json.test.d.ts +2 -0
- package/dist/test/util/json.test.d.ts.map +1 -0
- package/dist/test/{util.json.test.js → util/json.test.js} +2 -2
- package/dist/test/util/json.test.js.map +1 -0
- package/dist/test/util/listPrevious.test.d.ts +2 -0
- package/dist/test/util/listPrevious.test.d.ts.map +1 -0
- package/dist/test/{util.listPrevious.test.js → util/listPrevious.test.js} +4 -4
- package/dist/test/util/listPrevious.test.js.map +1 -0
- package/dist/test/util/templates.test.d.ts +2 -0
- package/dist/test/util/templates.test.d.ts.map +1 -0
- package/dist/test/{util.templates.test.js → util/templates.test.js} +2 -2
- package/dist/test/util/templates.test.js.map +1 -0
- package/dist/test/util/transform.test.d.ts +2 -0
- package/dist/test/util/transform.test.d.ts.map +1 -0
- package/dist/test/{util.transform.test.js → util/transform.test.js} +6 -6
- package/dist/test/util/transform.test.js.map +1 -0
- package/dist/test/{utils.d.ts → util/utils.d.ts} +1 -1
- package/dist/test/util/utils.d.ts.map +1 -0
- package/dist/test/util/utils.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +17 -20
- package/dist/src/app/assets/index-x0TdnK0A.js +0 -767
- package/dist/src/assertions.d.ts.map +0 -1
- package/dist/src/assertions.js.map +0 -1
- package/dist/src/models/provider.d.ts +0 -11
- package/dist/src/models/provider.d.ts.map +0 -1
- package/dist/src/models/provider.js +0 -52
- package/dist/src/models/provider.js.map +0 -1
- package/dist/test/assertions.test.d.ts +0 -2
- package/dist/test/assertions.test.d.ts.map +0 -1
- package/dist/test/assertions.test.js.map +0 -1
- package/dist/test/assertions.utils.test.d.ts +0 -2
- package/dist/test/assertions.utils.test.d.ts.map +0 -1
- package/dist/test/assertions.utils.test.js.map +0 -1
- package/dist/test/prompts.processors.javascript.test.d.ts +0 -2
- package/dist/test/prompts.processors.javascript.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.javascript.test.js.map +0 -1
- package/dist/test/prompts.processors.json.test.d.ts +0 -2
- package/dist/test/prompts.processors.json.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.json.test.js.map +0 -1
- package/dist/test/prompts.processors.jsonl.test.d.ts +0 -2
- package/dist/test/prompts.processors.jsonl.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.jsonl.test.js.map +0 -1
- package/dist/test/prompts.processors.markdown.test.d.ts +0 -2
- package/dist/test/prompts.processors.markdown.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.markdown.test.js.map +0 -1
- package/dist/test/prompts.processors.python.test.d.ts +0 -2
- package/dist/test/prompts.processors.python.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.python.test.js.map +0 -1
- package/dist/test/prompts.processors.python.utils.test.d.ts +0 -2
- package/dist/test/prompts.processors.python.utils.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.python.utils.test.js.map +0 -1
- package/dist/test/prompts.processors.string.test.d.ts +0 -2
- package/dist/test/prompts.processors.string.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.string.test.js.map +0 -1
- package/dist/test/prompts.processors.text.test.d.ts +0 -2
- package/dist/test/prompts.processors.text.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.text.test.js.map +0 -1
- package/dist/test/prompts.processors.yaml.test.d.ts +0 -2
- package/dist/test/prompts.processors.yaml.test.d.ts.map +0 -1
- package/dist/test/prompts.processors.yaml.test.js.map +0 -1
- package/dist/test/prompts.test.d.ts +0 -2
- package/dist/test/prompts.test.d.ts.map +0 -1
- package/dist/test/prompts.test.js.map +0 -1
- package/dist/test/prompts.utils.test.d.ts +0 -2
- package/dist/test/prompts.utils.test.d.ts.map +0 -1
- package/dist/test/prompts.utils.test.js.map +0 -1
- package/dist/test/providers.anthropic.test.d.ts +0 -2
- package/dist/test/providers.anthropic.test.d.ts.map +0 -1
- package/dist/test/providers.anthropic.test.js.map +0 -1
- package/dist/test/providers.azure.test.d.ts +0 -2
- package/dist/test/providers.azure.test.d.ts.map +0 -1
- package/dist/test/providers.azure.test.js.map +0 -1
- package/dist/test/providers.bedrock.test.d.ts +0 -2
- package/dist/test/providers.bedrock.test.d.ts.map +0 -1
- package/dist/test/providers.bedrock.test.js.map +0 -1
- package/dist/test/providers.groq.test.d.ts +0 -2
- package/dist/test/providers.groq.test.d.ts.map +0 -1
- package/dist/test/providers.groq.test.js.map +0 -1
- package/dist/test/providers.http.test.d.ts +0 -2
- package/dist/test/providers.http.test.d.ts.map +0 -1
- package/dist/test/providers.http.test.js.map +0 -1
- package/dist/test/providers.llama.test.d.ts +0 -2
- package/dist/test/providers.llama.test.d.ts.map +0 -1
- package/dist/test/providers.llama.test.js.map +0 -1
- package/dist/test/providers.mistral.test.d.ts +0 -2
- package/dist/test/providers.mistral.test.d.ts.map +0 -1
- package/dist/test/providers.mistral.test.js.map +0 -1
- package/dist/test/providers.packageParser.test.d.ts +0 -2
- package/dist/test/providers.packageParser.test.d.ts.map +0 -1
- package/dist/test/providers.packageParser.test.js.map +0 -1
- package/dist/test/providers.pythonCompletion.test.d.ts +0 -2
- package/dist/test/providers.pythonCompletion.test.d.ts.map +0 -1
- package/dist/test/providers.pythonCompletion.test.js.map +0 -1
- package/dist/test/providers.scriptCompletion.test.d.ts +0 -2
- package/dist/test/providers.scriptCompletion.test.d.ts.map +0 -1
- package/dist/test/providers.scriptCompletion.test.js.map +0 -1
- package/dist/test/providers.shared.test.d.ts +0 -2
- package/dist/test/providers.shared.test.d.ts.map +0 -1
- package/dist/test/providers.shared.test.js.map +0 -1
- package/dist/test/providers.test.d.ts +0 -2
- package/dist/test/providers.test.d.ts.map +0 -1
- package/dist/test/providers.test.js.map +0 -1
- package/dist/test/providers.vertex.test.d.ts +0 -2
- package/dist/test/providers.vertex.test.d.ts.map +0 -1
- package/dist/test/providers.vertex.test.js.map +0 -1
- package/dist/test/providers.watsonx.test.d.ts +0 -2
- package/dist/test/providers.watsonx.test.d.ts.map +0 -1
- package/dist/test/providers.watsonx.test.js.map +0 -1
- package/dist/test/util.config.default.test.d.ts +0 -2
- package/dist/test/util.config.default.test.d.ts.map +0 -1
- package/dist/test/util.config.default.test.js.map +0 -1
- package/dist/test/util.config.load.test.ts.d.ts +0 -2
- package/dist/test/util.config.load.test.ts.d.ts.map +0 -1
- package/dist/test/util.config.load.test.ts.js.map +0 -1
- package/dist/test/util.config.main.test.d.ts +0 -2
- package/dist/test/util.config.main.test.d.ts.map +0 -1
- package/dist/test/util.config.main.test.js.map +0 -1
- package/dist/test/util.deleteAll.test.d.ts +0 -2
- package/dist/test/util.deleteAll.test.d.ts.map +0 -1
- package/dist/test/util.deleteAll.test.js.map +0 -1
- package/dist/test/util.file.test.d.ts +0 -2
- package/dist/test/util.file.test.d.ts.map +0 -1
- package/dist/test/util.file.test.js.map +0 -1
- package/dist/test/util.generation.test.d.ts +0 -2
- package/dist/test/util.generation.test.d.ts.map +0 -1
- package/dist/test/util.json.test.d.ts +0 -2
- package/dist/test/util.json.test.d.ts.map +0 -1
- package/dist/test/util.json.test.js.map +0 -1
- package/dist/test/util.listPrevious.test.d.ts +0 -2
- package/dist/test/util.listPrevious.test.d.ts.map +0 -1
- package/dist/test/util.listPrevious.test.js.map +0 -1
- package/dist/test/util.templates.test.d.ts +0 -2
- package/dist/test/util.templates.test.d.ts.map +0 -1
- package/dist/test/util.templates.test.js.map +0 -1
- package/dist/test/util.test.d.ts +0 -2
- package/dist/test/util.test.d.ts.map +0 -1
- package/dist/test/util.test.js.map +0 -1
- package/dist/test/util.transform.test.d.ts +0 -2
- package/dist/test/util.transform.test.d.ts.map +0 -1
- package/dist/test/util.transform.test.js.map +0 -1
- package/dist/test/utils.d.ts.map +0 -1
- package/dist/test/utils.js.map +0 -1
- /package/dist/test/{utils.js → util/utils.js} +0 -0
|
@@ -30,30 +30,29 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
30
30
|
const child_process_1 = __importDefault(require("child_process"));
|
|
31
31
|
const dedent_1 = __importDefault(require("dedent"));
|
|
32
32
|
const fs = __importStar(require("fs"));
|
|
33
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
34
33
|
const path = __importStar(require("path"));
|
|
35
34
|
const stream_1 = __importDefault(require("stream"));
|
|
36
|
-
const cache_1 = require("
|
|
37
|
-
const esm_1 = require("
|
|
38
|
-
const logger_1 = __importDefault(require("
|
|
39
|
-
const providers_1 = require("
|
|
40
|
-
const anthropic_1 = require("
|
|
41
|
-
const azureopenai_1 = require("
|
|
42
|
-
const bedrock_1 = require("
|
|
43
|
-
const cloudflare_ai_1 = require("
|
|
44
|
-
const huggingface_1 = require("
|
|
45
|
-
const llama_1 = require("
|
|
46
|
-
const ollama_1 = require("
|
|
47
|
-
const openai_1 = require("
|
|
48
|
-
const pythonCompletion_1 = require("
|
|
49
|
-
const replicate_1 = require("
|
|
50
|
-
const scriptCompletion_1 = require("
|
|
51
|
-
const vertex_1 = require("
|
|
52
|
-
const voyage_1 = require("
|
|
53
|
-
const webhook_1 = require("
|
|
54
|
-
const iterative_1 = __importDefault(require("
|
|
55
|
-
const iterativeImage_1 = __importDefault(require("
|
|
56
|
-
const iterativeTree_1 = __importDefault(require("
|
|
35
|
+
const cache_1 = require("../../src/cache");
|
|
36
|
+
const esm_1 = require("../../src/esm");
|
|
37
|
+
const logger_1 = __importDefault(require("../../src/logger"));
|
|
38
|
+
const providers_1 = require("../../src/providers");
|
|
39
|
+
const anthropic_1 = require("../../src/providers/anthropic");
|
|
40
|
+
const azureopenai_1 = require("../../src/providers/azureopenai");
|
|
41
|
+
const bedrock_1 = require("../../src/providers/bedrock");
|
|
42
|
+
const cloudflare_ai_1 = require("../../src/providers/cloudflare-ai");
|
|
43
|
+
const huggingface_1 = require("../../src/providers/huggingface");
|
|
44
|
+
const llama_1 = require("../../src/providers/llama");
|
|
45
|
+
const ollama_1 = require("../../src/providers/ollama");
|
|
46
|
+
const openai_1 = require("../../src/providers/openai");
|
|
47
|
+
const pythonCompletion_1 = require("../../src/providers/pythonCompletion");
|
|
48
|
+
const replicate_1 = require("../../src/providers/replicate");
|
|
49
|
+
const scriptCompletion_1 = require("../../src/providers/scriptCompletion");
|
|
50
|
+
const vertex_1 = require("../../src/providers/vertex");
|
|
51
|
+
const voyage_1 = require("../../src/providers/voyage");
|
|
52
|
+
const webhook_1 = require("../../src/providers/webhook");
|
|
53
|
+
const iterative_1 = __importDefault(require("../../src/redteam/providers/iterative"));
|
|
54
|
+
const iterativeImage_1 = __importDefault(require("../../src/redteam/providers/iterativeImage"));
|
|
55
|
+
const iterativeTree_1 = __importDefault(require("../../src/redteam/providers/iterativeTree"));
|
|
57
56
|
jest.mock('fs', () => ({
|
|
58
57
|
readFileSync: jest.fn(),
|
|
59
58
|
writeFileSync: jest.fn(),
|
|
@@ -68,12 +67,11 @@ jest.mock('fs', () => ({
|
|
|
68
67
|
jest.mock('glob', () => ({
|
|
69
68
|
globSync: jest.fn(),
|
|
70
69
|
}));
|
|
71
|
-
jest.mock('node-fetch', () => jest.fn());
|
|
72
70
|
jest.mock('proxy-agent', () => ({
|
|
73
71
|
ProxyAgent: jest.fn().mockImplementation(() => ({})),
|
|
74
72
|
}));
|
|
75
|
-
jest.mock('
|
|
76
|
-
...jest.requireActual('
|
|
73
|
+
jest.mock('../../src/esm', () => ({
|
|
74
|
+
...jest.requireActual('../../src/esm'),
|
|
77
75
|
importModule: jest.fn(),
|
|
78
76
|
}));
|
|
79
77
|
jest.mock('fs', () => ({
|
|
@@ -84,15 +82,17 @@ jest.mock('fs', () => ({
|
|
|
84
82
|
jest.mock('glob', () => ({
|
|
85
83
|
globSync: jest.fn(),
|
|
86
84
|
}));
|
|
87
|
-
jest.mock('
|
|
85
|
+
jest.mock('../../src/database', () => ({
|
|
88
86
|
getDb: jest.fn(),
|
|
89
87
|
}));
|
|
90
|
-
jest.mock('
|
|
88
|
+
jest.mock('../../src/logger', () => ({
|
|
91
89
|
error: jest.fn(),
|
|
92
90
|
debug: jest.fn(),
|
|
93
91
|
info: jest.fn(),
|
|
94
92
|
warn: jest.fn(),
|
|
95
93
|
}));
|
|
94
|
+
const mockFetch = jest.mocked(jest.fn());
|
|
95
|
+
global.fetch = mockFetch;
|
|
96
96
|
const defaultMockResponse = {
|
|
97
97
|
status: 200,
|
|
98
98
|
statusText: 'OK',
|
|
@@ -113,10 +113,10 @@ describe('call provider apis', () => {
|
|
|
113
113
|
usage: { total_tokens: 10, prompt_tokens: 5, completion_tokens: 5 },
|
|
114
114
|
})),
|
|
115
115
|
};
|
|
116
|
-
|
|
116
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
117
117
|
const provider = new openai_1.OpenAiCompletionProvider('text-davinci-003');
|
|
118
118
|
const result = await provider.callApi('Test prompt');
|
|
119
|
-
expect(
|
|
119
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
120
120
|
expect(result.output).toBe('Test output');
|
|
121
121
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
122
122
|
});
|
|
@@ -129,10 +129,10 @@ describe('call provider apis', () => {
|
|
|
129
129
|
})),
|
|
130
130
|
ok: true,
|
|
131
131
|
};
|
|
132
|
-
|
|
132
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
133
133
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
134
134
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Test prompt' }]));
|
|
135
|
-
expect(
|
|
135
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
136
136
|
expect(result.output).toBe('Test output');
|
|
137
137
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
138
138
|
});
|
|
@@ -145,14 +145,14 @@ describe('call provider apis', () => {
|
|
|
145
145
|
})),
|
|
146
146
|
ok: true,
|
|
147
147
|
};
|
|
148
|
-
|
|
148
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
149
149
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
150
150
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Test prompt 2' }]));
|
|
151
|
-
expect(
|
|
151
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
152
152
|
expect(result.output).toBe('Test output 2');
|
|
153
153
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
154
154
|
const result2 = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Test prompt 2' }]));
|
|
155
|
-
expect(
|
|
155
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
156
156
|
expect(result2.output).toBe('Test output 2');
|
|
157
157
|
expect(result2.tokenUsage).toEqual({ total: 10, cached: 10 });
|
|
158
158
|
});
|
|
@@ -165,15 +165,15 @@ describe('call provider apis', () => {
|
|
|
165
165
|
})),
|
|
166
166
|
ok: true,
|
|
167
167
|
};
|
|
168
|
-
|
|
168
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
169
169
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
170
170
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Test prompt' }]));
|
|
171
|
-
expect(
|
|
171
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
172
172
|
expect(result.output).toBe('Test output');
|
|
173
173
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
174
174
|
(0, cache_1.disableCache)();
|
|
175
175
|
const result2 = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Test prompt' }]));
|
|
176
|
-
expect(
|
|
176
|
+
expect(mockFetch).toHaveBeenCalledTimes(2);
|
|
177
177
|
expect(result2.output).toBe('Test output');
|
|
178
178
|
expect(result2.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
179
179
|
(0, cache_1.enableCache)();
|
|
@@ -186,7 +186,7 @@ describe('call provider apis', () => {
|
|
|
186
186
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', { config });
|
|
187
187
|
const prompt = 'Test prompt';
|
|
188
188
|
await provider.callApi(prompt);
|
|
189
|
-
expect(
|
|
189
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
190
190
|
body: expect.stringMatching(`temperature\":3.1415926`),
|
|
191
191
|
}));
|
|
192
192
|
expect(provider.config.temperature).toBe(config.temperature);
|
|
@@ -201,7 +201,7 @@ describe('call provider apis', () => {
|
|
|
201
201
|
})),
|
|
202
202
|
ok: true,
|
|
203
203
|
};
|
|
204
|
-
|
|
204
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
205
205
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
206
206
|
config: {
|
|
207
207
|
response_format: {
|
|
@@ -223,7 +223,7 @@ describe('call provider apis', () => {
|
|
|
223
223
|
},
|
|
224
224
|
});
|
|
225
225
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Get me a person' }]));
|
|
226
|
-
expect(
|
|
226
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
227
227
|
expect(result.output).toEqual({ name: 'John', age: 30 });
|
|
228
228
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
229
229
|
});
|
|
@@ -236,12 +236,13 @@ describe('call provider apis', () => {
|
|
|
236
236
|
})),
|
|
237
237
|
ok: true,
|
|
238
238
|
};
|
|
239
|
-
|
|
239
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
240
240
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini');
|
|
241
241
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Generate inappropriate content' }]));
|
|
242
|
-
expect(
|
|
243
|
-
expect(result.
|
|
242
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
243
|
+
expect(result.output).toBe('Content policy violation');
|
|
244
244
|
expect(result.tokenUsage).toEqual({ total: 5, prompt: 5, completion: 0 });
|
|
245
|
+
expect(result.isRefusal).toBe(true);
|
|
245
246
|
});
|
|
246
247
|
it('OpenAiChatCompletionProvider callApi with function tool callbacks', async () => {
|
|
247
248
|
const mockResponse = {
|
|
@@ -266,7 +267,7 @@ describe('call provider apis', () => {
|
|
|
266
267
|
})),
|
|
267
268
|
ok: true,
|
|
268
269
|
};
|
|
269
|
-
|
|
270
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
270
271
|
const mockWeatherFunction = jest.fn().mockResolvedValue('Sunny, 25°C');
|
|
271
272
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
272
273
|
config: {
|
|
@@ -292,7 +293,7 @@ describe('call provider apis', () => {
|
|
|
292
293
|
},
|
|
293
294
|
});
|
|
294
295
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: "What's the weather in New York?" }]));
|
|
295
|
-
expect(
|
|
296
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
296
297
|
expect(mockWeatherFunction).toHaveBeenCalledWith('{"location":"New York"}');
|
|
297
298
|
expect(result.output).toBe('Sunny, 25°C');
|
|
298
299
|
expect(result.tokenUsage).toEqual({ total: 15, prompt: 10, completion: 5 });
|
|
@@ -305,10 +306,10 @@ describe('call provider apis', () => {
|
|
|
305
306
|
usage: { total_tokens: 10, prompt_tokens: 5, completion_tokens: 5 },
|
|
306
307
|
})),
|
|
307
308
|
};
|
|
308
|
-
|
|
309
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
309
310
|
const provider = new azureopenai_1.AzureOpenAiCompletionProvider('text-davinci-003');
|
|
310
311
|
const result = await provider.callApi('Test prompt');
|
|
311
|
-
expect(
|
|
312
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
312
313
|
expect(result.output).toBe('Test output');
|
|
313
314
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
314
315
|
});
|
|
@@ -320,10 +321,10 @@ describe('call provider apis', () => {
|
|
|
320
321
|
usage: { total_tokens: 10, prompt_tokens: 5, completion_tokens: 5 },
|
|
321
322
|
})),
|
|
322
323
|
};
|
|
323
|
-
|
|
324
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
324
325
|
const provider = new azureopenai_1.AzureOpenAiChatCompletionProvider('gpt-4o-mini');
|
|
325
326
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Test prompt' }]));
|
|
326
|
-
expect(
|
|
327
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
327
328
|
expect(result.output).toBe('Test output');
|
|
328
329
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
329
330
|
});
|
|
@@ -348,7 +349,7 @@ describe('call provider apis', () => {
|
|
|
348
349
|
usage: { total_tokens: 10, prompt_tokens: 5, completion_tokens: 5 },
|
|
349
350
|
})),
|
|
350
351
|
};
|
|
351
|
-
|
|
352
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
352
353
|
const provider = new azureopenai_1.AzureOpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
353
354
|
config: { dataSources },
|
|
354
355
|
});
|
|
@@ -356,7 +357,7 @@ describe('call provider apis', () => {
|
|
|
356
357
|
{ role: 'system', content: 'System prompt' },
|
|
357
358
|
{ role: 'user', content: 'Test prompt' },
|
|
358
359
|
]));
|
|
359
|
-
expect(
|
|
360
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
360
361
|
expect(result.output).toBe('Test response');
|
|
361
362
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
362
363
|
});
|
|
@@ -369,10 +370,10 @@ describe('call provider apis', () => {
|
|
|
369
370
|
usage: { total_tokens: 10, prompt_tokens: 5, completion_tokens: 5 },
|
|
370
371
|
})),
|
|
371
372
|
};
|
|
372
|
-
|
|
373
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
373
374
|
const provider = new azureopenai_1.AzureOpenAiChatCompletionProvider('gpt-4o-mini');
|
|
374
375
|
const result = await provider.callApi(JSON.stringify([{ role: 'user', content: 'Test prompt' }]));
|
|
375
|
-
expect(
|
|
376
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
376
377
|
expect(result.output).toBe('Test output');
|
|
377
378
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
378
379
|
(0, cache_1.enableCache)();
|
|
@@ -384,10 +385,10 @@ describe('call provider apis', () => {
|
|
|
384
385
|
content: 'Test output',
|
|
385
386
|
})),
|
|
386
387
|
};
|
|
387
|
-
|
|
388
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
388
389
|
const provider = new llama_1.LlamaProvider('llama.cpp');
|
|
389
390
|
const result = await provider.callApi('Test prompt');
|
|
390
|
-
expect(
|
|
391
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
391
392
|
expect(result.output).toBe('Test output');
|
|
392
393
|
});
|
|
393
394
|
it('OllamaCompletionProvider callApi', async () => {
|
|
@@ -404,10 +405,10 @@ describe('call provider apis', () => {
|
|
|
404
405
|
{"model":"llama2:13b","created_at":"2023-08-08T21:50:35.117166Z","response":" blue","done":false}
|
|
405
406
|
{"model":"llama2:13b","created_at":"2023-08-08T21:50:41.695299Z","done":true,"context":[1,29871,1,13,9314],"total_duration":10411943458,"load_duration":458333,"sample_count":217,"sample_duration":154566000,"prompt_eval_count":11,"prompt_eval_duration":3334582000,"eval_count":216,"eval_duration":6905134000}`),
|
|
406
407
|
};
|
|
407
|
-
|
|
408
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
408
409
|
const provider = new ollama_1.OllamaCompletionProvider('llama');
|
|
409
410
|
const result = await provider.callApi('Test prompt');
|
|
410
|
-
expect(
|
|
411
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
411
412
|
expect(result.output).toBe('Great question! The sky appears blue');
|
|
412
413
|
});
|
|
413
414
|
it('OllamaChatProvider callApi', async () => {
|
|
@@ -422,10 +423,10 @@ describe('call provider apis', () => {
|
|
|
422
423
|
{"model":"orca-mini","created_at":"2023-12-16T01:46:19.324309782Z","message":{"role":"assistant","content":".","images":null},"done":false}
|
|
423
424
|
{"model":"orca-mini","created_at":"2023-12-16T01:46:19.337165395Z","done":true,"total_duration":1486443841,"load_duration":1280794143,"prompt_eval_count":35,"prompt_eval_duration":142384000,"eval_count":6,"eval_duration":61912000}`),
|
|
424
425
|
};
|
|
425
|
-
|
|
426
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
426
427
|
const provider = new ollama_1.OllamaChatProvider('llama');
|
|
427
428
|
const result = await provider.callApi('Test prompt');
|
|
428
|
-
expect(
|
|
429
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
429
430
|
expect(result.output).toBe(' Because of Rayleigh scattering.');
|
|
430
431
|
});
|
|
431
432
|
it('WebhookProvider callApi', async () => {
|
|
@@ -435,10 +436,10 @@ describe('call provider apis', () => {
|
|
|
435
436
|
output: 'Test output',
|
|
436
437
|
})),
|
|
437
438
|
};
|
|
438
|
-
|
|
439
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
439
440
|
const provider = new webhook_1.WebhookProvider('http://example.com/webhook');
|
|
440
441
|
const result = await provider.callApi('Test prompt');
|
|
441
|
-
expect(
|
|
442
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
442
443
|
expect(result.output).toBe('Test output');
|
|
443
444
|
});
|
|
444
445
|
describe.each([
|
|
@@ -450,10 +451,10 @@ describe('call provider apis', () => {
|
|
|
450
451
|
...defaultMockResponse,
|
|
451
452
|
text: jest.fn().mockResolvedValue(JSON.stringify(mockedData)),
|
|
452
453
|
};
|
|
453
|
-
|
|
454
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
454
455
|
const provider = new huggingface_1.HuggingfaceTextGenerationProvider('gpt2');
|
|
455
456
|
const result = await provider.callApi('Test prompt');
|
|
456
|
-
expect(
|
|
457
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
457
458
|
expect(result.output).toBe('Test output');
|
|
458
459
|
});
|
|
459
460
|
});
|
|
@@ -462,10 +463,10 @@ describe('call provider apis', () => {
|
|
|
462
463
|
...defaultMockResponse,
|
|
463
464
|
text: jest.fn().mockResolvedValue(JSON.stringify([0.1, 0.2, 0.3, 0.4, 0.5])),
|
|
464
465
|
};
|
|
465
|
-
|
|
466
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
466
467
|
const provider = new huggingface_1.HuggingfaceFeatureExtractionProvider('distilbert-base-uncased');
|
|
467
468
|
const result = await provider.callEmbeddingApi('Test text');
|
|
468
|
-
expect(
|
|
469
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
469
470
|
expect(result.embedding).toEqual([0.1, 0.2, 0.3, 0.4, 0.5]);
|
|
470
471
|
});
|
|
471
472
|
it('HuggingfaceTextClassificationProvider callClassificationApi', async () => {
|
|
@@ -485,10 +486,10 @@ describe('call provider apis', () => {
|
|
|
485
486
|
...defaultMockResponse,
|
|
486
487
|
text: jest.fn().mockResolvedValue(JSON.stringify(mockClassification)),
|
|
487
488
|
};
|
|
488
|
-
|
|
489
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
489
490
|
const provider = new huggingface_1.HuggingfaceTextClassificationProvider('foo');
|
|
490
491
|
const result = await provider.callClassificationApi('Test text');
|
|
491
|
-
expect(
|
|
492
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
492
493
|
expect(result.classification).toEqual({
|
|
493
494
|
nothate: 0.9,
|
|
494
495
|
hate: 0.1,
|
|
@@ -498,7 +499,6 @@ describe('call provider apis', () => {
|
|
|
498
499
|
beforeAll(() => {
|
|
499
500
|
(0, cache_1.enableCache)();
|
|
500
501
|
});
|
|
501
|
-
const fetchMock = jest.mocked(node_fetch_1.default);
|
|
502
502
|
const cloudflareMinimumConfig = {
|
|
503
503
|
accountId: 'testAccountId',
|
|
504
504
|
apiKey: 'testApiKey',
|
|
@@ -530,13 +530,13 @@ describe('call provider apis', () => {
|
|
|
530
530
|
text: jest.fn().mockResolvedValue(JSON.stringify(responsePayload)),
|
|
531
531
|
ok: true,
|
|
532
532
|
};
|
|
533
|
-
|
|
533
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
534
534
|
const result = await provider.callApi(PROMPT);
|
|
535
|
-
expect(
|
|
535
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
536
536
|
expect(result.output).toBe(responsePayload.result.response);
|
|
537
537
|
expect(result.tokenUsage).toEqual(tokenUsageDefaultResponse);
|
|
538
538
|
const resultFromCache = await provider.callApi(PROMPT);
|
|
539
|
-
expect(
|
|
539
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
540
540
|
expect(resultFromCache.output).toBe(responsePayload.result.response);
|
|
541
541
|
expect(resultFromCache.tokenUsage).toEqual(tokenUsageDefaultResponse);
|
|
542
542
|
});
|
|
@@ -560,13 +560,13 @@ describe('call provider apis', () => {
|
|
|
560
560
|
text: jest.fn().mockResolvedValue(JSON.stringify(responsePayload)),
|
|
561
561
|
ok: true,
|
|
562
562
|
};
|
|
563
|
-
|
|
563
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
564
564
|
const result = await provider.callApi(PROMPT);
|
|
565
|
-
expect(
|
|
565
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
566
566
|
expect(result.output).toBe(responsePayload.result.response);
|
|
567
567
|
expect(result.tokenUsage).toEqual(tokenUsageDefaultResponse);
|
|
568
568
|
const resultFromCache = await provider.callApi(PROMPT);
|
|
569
|
-
expect(
|
|
569
|
+
expect(mockFetch).toHaveBeenCalledTimes(2);
|
|
570
570
|
expect(resultFromCache.output).toBe(responsePayload.result.response);
|
|
571
571
|
expect(resultFromCache.tokenUsage).toEqual(tokenUsageDefaultResponse);
|
|
572
572
|
}
|
|
@@ -589,7 +589,7 @@ describe('call provider apis', () => {
|
|
|
589
589
|
text: jest.fn().mockResolvedValue(JSON.stringify(responsePayload)),
|
|
590
590
|
ok: true,
|
|
591
591
|
};
|
|
592
|
-
|
|
592
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
593
593
|
const result = await provider.callApi(PROMPT);
|
|
594
594
|
expect(result.error).toContain(JSON.stringify(responsePayload.errors));
|
|
595
595
|
});
|
|
@@ -625,19 +625,14 @@ describe('call provider apis', () => {
|
|
|
625
625
|
text: jest.fn().mockResolvedValue(JSON.stringify(responsePayload)),
|
|
626
626
|
ok: true,
|
|
627
627
|
};
|
|
628
|
-
|
|
628
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
629
629
|
await cfProvider.callApi(PROMPT);
|
|
630
|
-
expect(
|
|
631
|
-
expect(
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
expect(url).toContain(cloudflareChatConfig.accountId);
|
|
635
|
-
expect(method).toBe('POST');
|
|
636
|
-
expect(headers && 'Authorization' in headers ? headers['Authorization'] : '').toContain(cloudflareChatConfig.apiKey);
|
|
637
|
-
const hydratedBody = typeof body === 'string' ? JSON.parse(body) : body;
|
|
638
|
-
expect(hydratedBody.prompt).toBe(PROMPT);
|
|
630
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
631
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
632
|
+
body: expect.stringMatching(`"prompt":"${PROMPT}"`),
|
|
633
|
+
}));
|
|
639
634
|
const { accountId: _accountId, apiKey: _apiKey, ...passThroughConfig } = cloudflareChatConfig;
|
|
640
|
-
const { prompt: _prompt, ...bodyWithoutPrompt } =
|
|
635
|
+
const { prompt: _prompt, ...bodyWithoutPrompt } = JSON.parse(jest.mocked(mockFetch).mock.calls[0][1].body);
|
|
641
636
|
expect(bodyWithoutPrompt).toEqual(passThroughConfig);
|
|
642
637
|
});
|
|
643
638
|
});
|
|
@@ -659,9 +654,9 @@ describe('call provider apis', () => {
|
|
|
659
654
|
text: jest.fn().mockResolvedValue(JSON.stringify(responsePayload)),
|
|
660
655
|
ok: true,
|
|
661
656
|
};
|
|
662
|
-
|
|
657
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
663
658
|
const result = await provider.callApi('Test chat prompt');
|
|
664
|
-
expect(
|
|
659
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
665
660
|
expect(result.output).toBe(responsePayload.result.response);
|
|
666
661
|
expect(result.tokenUsage).toEqual(tokenUsageDefaultResponse);
|
|
667
662
|
});
|
|
@@ -685,9 +680,9 @@ describe('call provider apis', () => {
|
|
|
685
680
|
text: jest.fn().mockResolvedValue(JSON.stringify(responsePayload)),
|
|
686
681
|
ok: true,
|
|
687
682
|
};
|
|
688
|
-
|
|
683
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
689
684
|
const result = await provider.callEmbeddingApi('Create embeddings from this');
|
|
690
|
-
expect(
|
|
685
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
691
686
|
expect(result.embedding).toEqual(responsePayload.result.data[0]);
|
|
692
687
|
expect(result.tokenUsage).toEqual(tokenUsageDefaultResponse);
|
|
693
688
|
});
|
|
@@ -756,7 +751,7 @@ describe('call provider apis', () => {
|
|
|
756
751
|
})),
|
|
757
752
|
ok: true,
|
|
758
753
|
};
|
|
759
|
-
|
|
754
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
760
755
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
761
756
|
config: {
|
|
762
757
|
tools: [
|
|
@@ -785,7 +780,7 @@ describe('call provider apis', () => {
|
|
|
785
780
|
},
|
|
786
781
|
});
|
|
787
782
|
const result = await provider.callApi('Add 5 and 6');
|
|
788
|
-
expect(
|
|
783
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
789
784
|
expect(result.output).toBe('11');
|
|
790
785
|
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
791
786
|
});
|
|
@@ -818,7 +813,7 @@ describe('call provider apis', () => {
|
|
|
818
813
|
})),
|
|
819
814
|
ok: true,
|
|
820
815
|
};
|
|
821
|
-
|
|
816
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
822
817
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
823
818
|
config: {
|
|
824
819
|
tools: [
|
|
@@ -866,7 +861,7 @@ describe('call provider apis', () => {
|
|
|
866
861
|
},
|
|
867
862
|
});
|
|
868
863
|
const result = await provider.callApi('Add 5 and 6, then multiply 2 and 3');
|
|
869
|
-
expect(
|
|
864
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
870
865
|
expect(result.output).toBe('11\n6');
|
|
871
866
|
expect(result.tokenUsage).toEqual({ total: 15, prompt: 7, completion: 8 });
|
|
872
867
|
});
|
|
@@ -889,7 +884,7 @@ describe('call provider apis', () => {
|
|
|
889
884
|
})),
|
|
890
885
|
ok: true,
|
|
891
886
|
};
|
|
892
|
-
|
|
887
|
+
mockFetch.mockResolvedValue(mockResponse);
|
|
893
888
|
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
894
889
|
config: {
|
|
895
890
|
tools: [
|
|
@@ -913,17 +908,97 @@ describe('call provider apis', () => {
|
|
|
913
908
|
},
|
|
914
909
|
});
|
|
915
910
|
const result = await provider.callApi('Call the error function');
|
|
916
|
-
expect(
|
|
911
|
+
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
917
912
|
expect(result.output).toEqual({ arguments: '{}', name: 'errorFunction' });
|
|
918
913
|
expect(result.tokenUsage).toEqual({ total: 5, prompt: 2, completion: 3 });
|
|
919
914
|
});
|
|
920
915
|
});
|
|
916
|
+
describe('OpenAiChatCompletionProvider response_format', () => {
|
|
917
|
+
it('should prioritize response_format from prompt config over provider config', async () => {
|
|
918
|
+
const providerResponseFormat = {
|
|
919
|
+
type: 'json_object',
|
|
920
|
+
};
|
|
921
|
+
const promptResponseFormat = {
|
|
922
|
+
type: 'json_schema',
|
|
923
|
+
json_schema: {
|
|
924
|
+
name: 'test_schema',
|
|
925
|
+
strict: true,
|
|
926
|
+
schema: {
|
|
927
|
+
type: 'object',
|
|
928
|
+
properties: { key2: { type: 'string' } },
|
|
929
|
+
additionalProperties: false,
|
|
930
|
+
},
|
|
931
|
+
},
|
|
932
|
+
};
|
|
933
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
934
|
+
config: {
|
|
935
|
+
response_format: providerResponseFormat,
|
|
936
|
+
},
|
|
937
|
+
});
|
|
938
|
+
const mockResponse = {
|
|
939
|
+
...defaultMockResponse,
|
|
940
|
+
text: jest.fn().mockResolvedValue(JSON.stringify({
|
|
941
|
+
choices: [{ message: { content: '{"key2": "value2"}' } }],
|
|
942
|
+
usage: { total_tokens: 10, prompt_tokens: 5, completion_tokens: 5 },
|
|
943
|
+
})),
|
|
944
|
+
};
|
|
945
|
+
jest.mocked(fetch).mockResolvedValue(mockResponse);
|
|
946
|
+
const result = await provider.callApi('Test prompt', {
|
|
947
|
+
vars: {},
|
|
948
|
+
prompt: {
|
|
949
|
+
raw: 'Test prompt',
|
|
950
|
+
label: 'Test prompt',
|
|
951
|
+
config: {
|
|
952
|
+
response_format: promptResponseFormat,
|
|
953
|
+
},
|
|
954
|
+
},
|
|
955
|
+
});
|
|
956
|
+
expect(fetch).toHaveBeenCalledTimes(1);
|
|
957
|
+
const fetchArgs = jest.mocked(fetch).mock.calls[0];
|
|
958
|
+
const requestBody = JSON.parse(fetchArgs[1]?.body);
|
|
959
|
+
expect(requestBody.response_format).toEqual(promptResponseFormat);
|
|
960
|
+
expect(result.output).toEqual({ key2: 'value2' });
|
|
961
|
+
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
962
|
+
});
|
|
963
|
+
it('should use provider config response_format when prompt config is not provided', async () => {
|
|
964
|
+
const providerResponseFormat = {
|
|
965
|
+
type: 'json_object',
|
|
966
|
+
};
|
|
967
|
+
const provider = new openai_1.OpenAiChatCompletionProvider('gpt-4o-mini', {
|
|
968
|
+
config: {
|
|
969
|
+
response_format: providerResponseFormat,
|
|
970
|
+
},
|
|
971
|
+
});
|
|
972
|
+
const mockResponse = {
|
|
973
|
+
...defaultMockResponse,
|
|
974
|
+
text: jest.fn().mockResolvedValue(JSON.stringify({
|
|
975
|
+
choices: [{ message: { content: '{"key1": "value1"}' } }],
|
|
976
|
+
usage: { total_tokens: 10, prompt_tokens: 5, completion_tokens: 5 },
|
|
977
|
+
})),
|
|
978
|
+
};
|
|
979
|
+
jest.mocked(fetch).mockResolvedValue(mockResponse);
|
|
980
|
+
const result = await provider.callApi('Test prompt', {
|
|
981
|
+
vars: {},
|
|
982
|
+
prompt: {
|
|
983
|
+
raw: 'Test prompt',
|
|
984
|
+
label: 'Test prompt',
|
|
985
|
+
},
|
|
986
|
+
});
|
|
987
|
+
expect(fetch).toHaveBeenCalledTimes(1);
|
|
988
|
+
const fetchArgs = jest.mocked(fetch).mock.calls[0];
|
|
989
|
+
const requestBody = JSON.parse(fetchArgs[1]?.body);
|
|
990
|
+
expect(requestBody.response_format).toEqual(providerResponseFormat);
|
|
991
|
+
expect(result.output).toBe('{"key1": "value1"}');
|
|
992
|
+
expect(result.tokenUsage).toEqual({ total: 10, prompt: 5, completion: 5 });
|
|
993
|
+
});
|
|
994
|
+
});
|
|
921
995
|
});
|
|
922
996
|
describe('loadApiProvider', () => {
|
|
923
997
|
it('loadApiProvider with yaml filepath', async () => {
|
|
924
|
-
const mockYamlContent = `
|
|
925
|
-
|
|
926
|
-
|
|
998
|
+
const mockYamlContent = (0, dedent_1.default) `
|
|
999
|
+
id: 'openai:gpt-4'
|
|
1000
|
+
config:
|
|
1001
|
+
key: 'value'`;
|
|
927
1002
|
jest.mocked(fs.readFileSync).mockReturnValueOnce(mockYamlContent);
|
|
928
1003
|
const provider = await (0, providers_1.loadApiProvider)('file://path/to/mock-provider-file.yaml');
|
|
929
1004
|
expect(provider.id()).toBe('openai:gpt-4');
|
|
@@ -1040,6 +1115,17 @@ config:
|
|
|
1040
1115
|
// Intentionally openai, because it's just a wrapper around openai
|
|
1041
1116
|
expect(provider.id()).toBe('mistralai/mistral-medium');
|
|
1042
1117
|
});
|
|
1118
|
+
it('loadApiProvider with github', async () => {
|
|
1119
|
+
const provider = await (0, providers_1.loadApiProvider)('github:gpt-4o-mini');
|
|
1120
|
+
expect(provider).toBeInstanceOf(openai_1.OpenAiChatCompletionProvider);
|
|
1121
|
+
// Intentionally openai, because it's just a wrapper around openai
|
|
1122
|
+
expect(provider.id()).toBe('gpt-4o-mini');
|
|
1123
|
+
});
|
|
1124
|
+
it('loadApiProvider with togetherai', async () => {
|
|
1125
|
+
const provider = await (0, providers_1.loadApiProvider)('togetherai:chat:meta/meta-llama/Meta-Llama-3-8B-Instruct');
|
|
1126
|
+
expect(provider).toBeInstanceOf(openai_1.OpenAiChatCompletionProvider);
|
|
1127
|
+
expect(provider.id()).toBe('meta/meta-llama/Meta-Llama-3-8B-Instruct');
|
|
1128
|
+
});
|
|
1043
1129
|
it('loadApiProvider with voyage', async () => {
|
|
1044
1130
|
const provider = await (0, providers_1.loadApiProvider)('voyage:voyage-2');
|
|
1045
1131
|
expect(provider).toBeInstanceOf(voyage_1.VoyageEmbeddingProvider);
|
|
@@ -1287,5 +1373,12 @@ config:
|
|
|
1287
1373
|
const provider = await (0, providers_1.loadApiProvider)('openai:chat:gpt-4o', { options: providerOptions });
|
|
1288
1374
|
expect(provider.label).toBe('foo');
|
|
1289
1375
|
});
|
|
1376
|
+
it('loadApiProvider with xai', async () => {
|
|
1377
|
+
const provider = await (0, providers_1.loadApiProvider)('xai:grok-2');
|
|
1378
|
+
expect(provider).toBeInstanceOf(openai_1.OpenAiChatCompletionProvider);
|
|
1379
|
+
expect(provider.id()).toBe('grok-2');
|
|
1380
|
+
expect(provider.config.apiBaseUrl).toBe('https://api.x.ai/v1');
|
|
1381
|
+
expect(provider.config.apiKeyEnvar).toBe('XAI_API_KEY');
|
|
1382
|
+
});
|
|
1290
1383
|
});
|
|
1291
|
-
//# sourceMappingURL=
|
|
1384
|
+
//# sourceMappingURL=index.test.js.map
|