axiom 0.51.1 → 0.52.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/bin.js +6 -6
- package/dist/{chunk-7PROY4ZA.js → chunk-5FZ6VK76.js} +2 -2
- package/dist/{chunk-72PVEOMF.js → chunk-753O2WTV.js} +8 -6
- package/dist/{chunk-72PVEOMF.js.map → chunk-753O2WTV.js.map} +1 -1
- package/dist/{chunk-63VQQCZB.js → chunk-AB6SNLJL.js} +6 -6
- package/dist/{chunk-63VQQCZB.js.map → chunk-AB6SNLJL.js.map} +1 -1
- package/dist/{chunk-3VKWOZAQ.js → chunk-JOJAEFHB.js} +11 -3
- package/dist/chunk-JOJAEFHB.js.map +1 -0
- package/dist/{chunk-SQJ53C2N.js → chunk-VCHEEAYA.js} +7 -7
- package/dist/{chunk-PU64TWX4.js → chunk-VM3QYJPV.js} +6 -6
- package/dist/{chunk-PU64TWX4.js.map → chunk-VM3QYJPV.js.map} +1 -1
- package/dist/{config-6PyyriW8.d.ts → config-B_4bFL7j.d.ts} +10 -0
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/docs/README.md +2 -2
- package/dist/docs/config/README.md +1 -1
- package/dist/docs/config/functions/defineConfig.md +1 -1
- package/dist/docs/config/interfaces/AxiomConfig.md +22 -1
- package/dist/docs/config/type-aliases/AxiomEvalInstrumentationHook.md +1 -1
- package/dist/docs/evals/README.md +1 -1
- package/dist/docs/evals/classes/AxiomReporter.md +1 -1
- package/dist/docs/evals/functions/Eval.md +1 -1
- package/dist/docs/evals/interfaces/EvalBuilder.md +1 -1
- package/dist/docs/evals/interfaces/EvalContextData.md +1 -1
- package/dist/docs/evals/online/README.md +1 -1
- package/dist/docs/evals/online/functions/onlineEval.md +1 -1
- package/dist/docs/evals/online/type-aliases/OnlineEvalParams.md +1 -1
- package/dist/docs/evals/online/type-aliases/OnlineEvalScorerEntry.md +1 -1
- package/dist/docs/evals/online/type-aliases/OnlineEvalScorerInput.md +1 -1
- package/dist/docs/evals/online/type-aliases/SampledOnlineEvalScorer.md +1 -1
- package/dist/docs/evals/online/type-aliases/ScorerSampling.md +1 -1
- package/dist/docs/evals/type-aliases/Case.md +1 -1
- package/dist/docs/evals/type-aliases/Chat.md +1 -1
- package/dist/docs/evals/type-aliases/EvalParams.md +1 -1
- package/dist/docs/evals/type-aliases/EvalTask.md +1 -1
- package/dist/docs/evals/type-aliases/Evaluation.md +1 -1
- package/dist/docs/evals/type-aliases/Task.md +1 -1
- package/dist/docs/feedback/README.md +1 -1
- package/dist/docs/feedback/functions/createFeedbackClient.md +1 -1
- package/dist/docs/feedback/type-aliases/FeedbackClient.md +1 -1
- package/dist/docs/feedback/type-aliases/FeedbackConfig.md +1 -1
- package/dist/docs/feedback/type-aliases/FeedbackErrorContext.md +1 -1
- package/dist/docs/feedback/type-aliases/FeedbackEvent.md +1 -1
- package/dist/docs/feedback/type-aliases/FeedbackInput.md +1 -1
- package/dist/docs/feedback/type-aliases/FeedbackLinks.md +1 -1
- package/dist/docs/feedback/type-aliases/FeedbackSettings.md +1 -1
- package/dist/docs/feedback/type-aliases/SendFeedbackFn.md +1 -1
- package/dist/docs/feedback/variables/Feedback.md +1 -1
- package/dist/docs/index/README.md +1 -1
- package/dist/docs/index/functions/axiomAIMiddleware.md +1 -1
- package/dist/docs/index/functions/axiomAIMiddlewareV1.md +1 -1
- package/dist/docs/index/functions/axiomAIMiddlewareV2.md +1 -1
- package/dist/docs/index/functions/axiomAIMiddlewareV3.md +1 -1
- package/dist/docs/index/functions/createAppScope.md +1 -1
- package/dist/docs/index/functions/experimental_parse.md +1 -1
- package/dist/docs/index/functions/getGlobalTracer.md +1 -1
- package/dist/docs/index/functions/initAxiomAI.md +1 -1
- package/dist/docs/index/functions/resetAxiomAI.md +1 -1
- package/dist/docs/index/functions/withSpan.md +1 -1
- package/dist/docs/index/functions/wrapAISDKModel.md +1 -1
- package/dist/docs/index/functions/wrapTool.md +1 -1
- package/dist/docs/index/functions/wrapTools.md +1 -1
- package/dist/docs/index/interfaces/AxiomTelemetryConfig.md +1 -1
- package/dist/docs/index/interfaces/experimental_AxiomPromptMetadata.md +1 -1
- package/dist/docs/index/interfaces/experimental_ParsedMessage.md +1 -1
- package/dist/docs/index/type-aliases/AxiomAIRedactionPolicy.md +1 -1
- package/dist/docs/index/type-aliases/WithSpanOptions.md +1 -1
- package/dist/docs/index/type-aliases/experimental_InferContext.md +1 -1
- package/dist/docs/index/type-aliases/experimental_InferSchema.md +1 -1
- package/dist/docs/index/type-aliases/experimental_ParsedMessagesArray.md +1 -1
- package/dist/docs/index/type-aliases/experimental_Prompt.md +1 -1
- package/dist/docs/index/type-aliases/experimental_TSchema.md +1 -1
- package/dist/docs/index/variables/RedactionPolicy.md +1 -1
- package/dist/docs/index/variables/experimental_Type.md +1 -1
- package/dist/docs/index/variables/onlineEval.md +1 -1
- package/dist/docs/scorers/aggregations/README.md +1 -1
- package/dist/docs/scorers/aggregations/functions/Mean.md +1 -1
- package/dist/docs/scorers/aggregations/functions/Median.md +1 -1
- package/dist/docs/scorers/aggregations/functions/PassAtK.md +1 -1
- package/dist/docs/scorers/aggregations/functions/PassHatK.md +1 -1
- package/dist/docs/scorers/aggregations/type-aliases/Aggregation.md +1 -1
- package/dist/docs/scorers/aggregations/variables/AllTrialsPass.md +1 -1
- package/dist/docs/scorers/aggregations/variables/AtLeastOneTrialPasses.md +1 -1
- package/dist/docs/scorers/scorers/README.md +1 -1
- package/dist/docs/scorers/scorers/functions/Scorer.md +1 -1
- package/dist/docs/scorers/scorers/type-aliases/Score.md +1 -1
- package/dist/docs/scorers/scorers/type-aliases/ScoreWithName.md +1 -1
- package/dist/docs/scorers/scorers/type-aliases/ScorerLike.md +1 -1
- package/dist/docs/scorers/scorers/type-aliases/ScorerOptions.md +1 -1
- package/dist/docs/scorers/scorers/type-aliases/ScorerType.md +1 -1
- package/dist/evals/online.js +2 -2
- package/dist/evals.d.ts +1 -1
- package/dist/evals.js +6 -6
- package/dist/evals.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/{run-vitest-SA4SZBNK.js → run-vitest-CEFOYWEV.js} +18 -10
- package/dist/run-vitest-CEFOYWEV.js.map +1 -0
- package/package.json +4 -4
- package/dist/chunk-3VKWOZAQ.js.map +0 -1
- package/dist/run-vitest-SA4SZBNK.js.map +0 -1
- /package/dist/{chunk-7PROY4ZA.js.map → chunk-5FZ6VK76.js.map} +0 -0
- /package/dist/{chunk-SQJ53C2N.js.map → chunk-VCHEEAYA.js.map} +0 -0
package/dist/bin.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
extractOverrides,
|
|
4
4
|
loadEvalCommand
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-753O2WTV.js";
|
|
6
6
|
import {
|
|
7
7
|
OAuth,
|
|
8
8
|
fetchOrganizations,
|
|
@@ -14,12 +14,12 @@ import {
|
|
|
14
14
|
startCallbackServer,
|
|
15
15
|
verifyToken,
|
|
16
16
|
waitForCallback
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-JOJAEFHB.js";
|
|
18
|
+
import "./chunk-AB6SNLJL.js";
|
|
19
19
|
import {
|
|
20
20
|
AxiomCLIError
|
|
21
21
|
} from "./chunk-ISSDOC43.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-VM3QYJPV.js";
|
|
23
23
|
import "./chunk-MM5FFQJT.js";
|
|
24
24
|
import "./chunk-4TKUTT24.js";
|
|
25
25
|
import "./chunk-KEXKKQVW.js";
|
|
@@ -389,7 +389,7 @@ import { Command } from "commander";
|
|
|
389
389
|
var loadVersionCommand = (program2) => {
|
|
390
390
|
return program2.addCommand(
|
|
391
391
|
new Command("version").description("cli version").action(() => {
|
|
392
|
-
console.log("0.
|
|
392
|
+
console.log("0.52.1");
|
|
393
393
|
})
|
|
394
394
|
);
|
|
395
395
|
};
|
|
@@ -399,7 +399,7 @@ var { loadEnvConfig } = pkg;
|
|
|
399
399
|
loadEnvConfig(process.cwd());
|
|
400
400
|
var { cleanedArgv, overrides } = extractOverrides(process.argv.slice(2));
|
|
401
401
|
var program = new Command2();
|
|
402
|
-
program.name("axiom").description("Axiom's CLI to manage your objects and run evals").version("0.
|
|
402
|
+
program.name("axiom").description("Axiom's CLI to manage your objects and run evals").version("0.52.1");
|
|
403
403
|
program.hook("preAction", async (_, actionCommand) => {
|
|
404
404
|
const commandName = actionCommand.name();
|
|
405
405
|
const parentCommand = actionCommand.parent;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getGlobalTracer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VM3QYJPV.js";
|
|
4
4
|
import {
|
|
5
5
|
isValidName
|
|
6
6
|
} from "./chunk-MM5FFQJT.js";
|
|
@@ -280,4 +280,4 @@ async function executeOnlineEvalInternal(name, params, linkContexts) {
|
|
|
280
280
|
export {
|
|
281
281
|
onlineEval
|
|
282
282
|
};
|
|
283
|
-
//# sourceMappingURL=chunk-
|
|
283
|
+
//# sourceMappingURL=chunk-5FZ6VK76.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
createPartialDefaults,
|
|
3
3
|
getAuthContext,
|
|
4
4
|
validateConfig
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-JOJAEFHB.js";
|
|
6
6
|
import {
|
|
7
7
|
EVAL_CONTEXT,
|
|
8
8
|
assertZodV4,
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
putOnSpan,
|
|
17
17
|
setGlobalFlagOverrides,
|
|
18
18
|
withEvalContext
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-AB6SNLJL.js";
|
|
20
20
|
import {
|
|
21
21
|
AxiomCLIError,
|
|
22
22
|
errorToString
|
|
@@ -329,7 +329,8 @@ async function loadConfig(cwd = process.cwd()) {
|
|
|
329
329
|
const mergedConfig = customMerger(defaults, result.config);
|
|
330
330
|
const validatedConfig = validateConfig(mergedConfig);
|
|
331
331
|
return {
|
|
332
|
-
config: validatedConfig
|
|
332
|
+
config: validatedConfig,
|
|
333
|
+
configPath: result._configFile
|
|
333
334
|
};
|
|
334
335
|
} catch (error) {
|
|
335
336
|
if (error instanceof AxiomCLIError) {
|
|
@@ -382,7 +383,7 @@ var loadEvalCommand = (program, flagOverrides = {}) => {
|
|
|
382
383
|
let exclude;
|
|
383
384
|
let testNamePattern;
|
|
384
385
|
const isGlobPattern = isGlob(target);
|
|
385
|
-
const { config: loadedConfig } = await loadConfig(".");
|
|
386
|
+
const { config: loadedConfig, configPath } = await loadConfig(".");
|
|
386
387
|
validateFlagOverrides(flagOverrides, loadedConfig.eval.flagSchema);
|
|
387
388
|
const config = {
|
|
388
389
|
...loadedConfig,
|
|
@@ -422,7 +423,7 @@ var loadEvalCommand = (program, flagOverrides = {}) => {
|
|
|
422
423
|
consoleUrl = options.consoleUrl;
|
|
423
424
|
let runVitestModule;
|
|
424
425
|
try {
|
|
425
|
-
runVitestModule = await import("./run-vitest-
|
|
426
|
+
runVitestModule = await import("./run-vitest-CEFOYWEV.js");
|
|
426
427
|
} catch (err) {
|
|
427
428
|
if (err && typeof err === "object" && "code" in err && (err.code === "ERR_MODULE_NOT_FOUND" || err.code === "MODULE_NOT_FOUND")) {
|
|
428
429
|
throw new AxiomCLIError("Failed to load vitest.");
|
|
@@ -441,6 +442,7 @@ var loadEvalCommand = (program, flagOverrides = {}) => {
|
|
|
441
442
|
list: options.list,
|
|
442
443
|
overrides: flagOverrides,
|
|
443
444
|
config,
|
|
445
|
+
configPath,
|
|
444
446
|
runId,
|
|
445
447
|
consoleUrl: options.consoleUrl
|
|
446
448
|
});
|
|
@@ -465,4 +467,4 @@ export {
|
|
|
465
467
|
getConsoleUrl,
|
|
466
468
|
loadEvalCommand
|
|
467
469
|
};
|
|
468
|
-
//# sourceMappingURL=chunk-
|
|
470
|
+
//# sourceMappingURL=chunk-753O2WTV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/utils/parse-flag-overrides.ts","../../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js","../../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js","../src/cli/commands/eval.command.ts","../src/context.ts","../src/cli/utils/eval-context-runner.ts","../src/cli/utils/glob-utils.ts","../src/config/loader.ts"],"sourcesContent":["import { type ZodError, type ZodObject, type z } from 'zod';\nimport { formatZodErrors, generateFlagExamples } from './format-zod-errors.js';\nimport { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { dotNotationToNested, isValidPath, parsePath } from '../../util/dot-path.js';\nimport { makeDeepPartial } from '../../util/deep-partial-schema.js';\nimport { assertZodV4 } from '../../util/zod-internals.js';\n\nexport interface FlagOverrides {\n [key: string]: any;\n}\n\nconst FLAG_RE = /^--flag\\.([^=]+)(?:=(.*))?$/;\nconst CONFIG_RE = /^--flags-config(?:=(.*))?$/;\n\nfunction ensureNoSpaceSeparatedSyntax(\n flagName: string,\n value: string | undefined,\n nextToken: string | undefined,\n flagType: 'flag' | 'config',\n): void {\n if (value === undefined && nextToken !== undefined) {\n if (\n flagType === 'flag' &&\n !nextToken.startsWith('-') &&\n nextToken !== 'true' &&\n nextToken !== 'false'\n ) {\n console.error(`❌ Invalid syntax: --flag.${flagName} ${nextToken}`);\n console.error(`💡 Use: --flag.${flagName}=${nextToken}`);\n process.exit(1);\n } else if (flagType === 'config' && !nextToken.startsWith('-')) {\n console.error(`❌ Invalid syntax: --flags-config ${nextToken}`);\n console.error(`💡 Use: --flags-config=${nextToken}`);\n process.exit(1);\n }\n }\n}\n\n/**\n * Extract and validate flag overrides using a Zod schema\n */\nexport function extractAndValidateFlagOverrides<S extends z.ZodObject<any>>(\n argv: string[],\n flagSchema?: S,\n): {\n cleanedArgv: string[];\n overrides: S extends ZodObject<any> ? z.output<S> : FlagOverrides;\n} {\n if (flagSchema) {\n assertZodV4(flagSchema, 'flagSchema');\n }\n\n const { cleanedArgv, overrides } = extractOverrides(argv);\n\n if (flagSchema && Object.keys(overrides).length > 0) {\n // Use deep partial schema - allows partial nested objects\n const deepPartialSchema = makeDeepPartial(flagSchema as ZodObject<any>);\n const result = deepPartialSchema.safeParse(overrides);\n\n if (!result.success) {\n console.error('❌ Invalid flags:');\n console.error(formatZodErrors(result.error));\n\n const examples = generateFlagExamples(result.error);\n if (examples.length > 0) {\n console.error('\\n💡 Examples:');\n examples.forEach((example) => console.error(` ${example}`));\n }\n\n process.exit(1);\n }\n\n return { cleanedArgv, overrides: result.data as any };\n }\n\n return { cleanedArgv, overrides: overrides as any };\n}\n\nexport type FlagValidationError =\n | { type: 'invalid_path'; path: string }\n | { type: 'invalid_value'; zodError: ZodError };\n\nexport interface FlagValidationResult {\n success: boolean;\n errors: FlagValidationError[];\n}\n\n/**\n * Validate already-parsed flag overrides against a Zod schema.\n * Returns validation result without side effects (no console output, no process.exit).\n *\n * @param overrides - Flag overrides in dot-notation form (e.g., { 'model.temperature': 0.7 })\n * @param flagSchema - Zod schema to validate against\n * @returns Validation result with any errors found\n */\nexport function collectFlagValidationErrors(\n overrides: FlagOverrides,\n flagSchema?: unknown,\n): FlagValidationResult {\n // No schema provided = no validation, any flags allowed\n if (!flagSchema || Object.keys(overrides).length === 0) {\n return { success: true, errors: [] };\n }\n\n assertZodV4(flagSchema, 'flagSchema');\n\n const schema = flagSchema as any;\n const errors: FlagValidationError[] = [];\n\n // First pass: check all paths exist in schema\n for (const dotPath of Object.keys(overrides)) {\n const segments = parsePath(dotPath);\n if (!isValidPath(schema, segments)) {\n errors.push({ type: 'invalid_path', path: dotPath });\n }\n }\n\n // If there are invalid paths, don't proceed to value validation\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n // Second pass: validate values using nested object approach with deep partial\n // This allows providing only some flags without requiring all nested objects\n const nestedObject = dotNotationToNested(overrides);\n const deepPartialSchema = makeDeepPartial(schema);\n const result = deepPartialSchema.safeParse(nestedObject);\n\n if (!result.success) {\n errors.push({ type: 'invalid_value', zodError: result.error });\n }\n\n return { success: errors.length === 0, errors };\n}\n\n/**\n * Print flag validation errors to console and exit.\n */\nexport function printFlagValidationErrorsAndExit(errors: FlagValidationError[]): never {\n console.error('❌ Invalid CLI flags:');\n\n for (const error of errors) {\n if (error.type === 'invalid_path') {\n console.error(` • flag '${error.path}': Invalid flag path`);\n } else {\n console.error(formatZodErrors(error.zodError));\n\n const examples = generateFlagExamples(error.zodError);\n if (examples.length > 0) {\n console.error('\\n💡 Valid examples:');\n examples.forEach((example) => console.error(` ${example}`));\n }\n }\n }\n\n process.exit(1);\n}\n\n/**\n * Validate already-parsed flag overrides against a Zod schema.\n * Use this when you have flag overrides in dot-notation form (e.g., { 'model.temperature': 0.7 })\n * and want to validate them against a schema before running evals.\n *\n * @param overrides - Flag overrides in dot-notation form\n * @param flagSchema - Zod schema to validate against\n */\nexport function validateFlagOverrides(overrides: FlagOverrides, flagSchema?: unknown): void {\n const result = collectFlagValidationErrors(overrides, flagSchema);\n if (!result.success) {\n printFlagValidationErrorsAndExit(result.errors);\n }\n}\n\n/**\n * Coerce string values to appropriate types.\n * Priority: boolean -> number -> JSON -> string\n */\nfunction coerceValue(raw: string): any {\n // Handle explicit boolean strings\n if (raw === 'true') return true;\n if (raw === 'false') return false;\n\n // Try number conversion\n const num = Number(raw);\n if (!Number.isNaN(num) && raw.trim() === num.toString()) {\n return num;\n }\n\n // Try JSON parsing (for objects/arrays)\n try {\n return JSON.parse(raw);\n } catch {\n // Fallback to string\n return raw;\n }\n}\n\n/**\n * Load and parse a JSON config file\n */\nfunction loadConfigFile(path: string): any {\n const abs = resolve(process.cwd(), path);\n try {\n const contents = readFileSync(abs, 'utf8');\n const parsed = JSON.parse(contents);\n\n if (typeof parsed !== 'object' || Array.isArray(parsed) || parsed === null) {\n console.error(\n `❌ Flags config must be a JSON object, got ${Array.isArray(parsed) ? 'array' : typeof parsed}`,\n );\n process.exit(1);\n }\n\n return parsed;\n } catch (err: any) {\n console.error(`❌ Could not read or parse flags config \"${path}\": ${err.message}`);\n process.exit(1);\n }\n}\n\n/**\n * Extract flag overrides with support for both CLI flags and config files.\n *\n * Supports CLI flags:\n * - --flag.temperature=0.9\n * - --flag.dryRun=true | false\n * - --flag.foo={\"bar\":1} (JSON literal)\n * - --flag.bare (interpreted as true)\n *\n * Or config file:\n * - --flags-config=path/to/config.json\n *\n * Enforces exclusive mode - cannot use both --flags-config and --flag.* together.\n */\nexport function extractOverrides(argv: string[]): {\n cleanedArgv: string[];\n overrides: FlagOverrides;\n} {\n const cleanedArgv: string[] = [];\n const overrides: FlagOverrides = {};\n let configPath: string | null = null;\n let hasCliFlags = false;\n let configPathCount = 0;\n\n for (let i = 0; i < argv.length; i++) {\n const token = argv[i];\n const configMatch = token.match(CONFIG_RE);\n const flagMatch = token.match(FLAG_RE);\n\n if (configMatch) {\n // Handle --flags-config\n configPathCount++;\n if (configPathCount > 1) {\n console.error('❌ Only one --flags-config can be supplied.');\n process.exit(1);\n }\n\n const value = configMatch[1]; // undefined means no equals sign\n const nextToken = argv.length > i + 1 ? argv[i + 1] : undefined;\n\n ensureNoSpaceSeparatedSyntax('flags-config', value, nextToken, 'config');\n\n if (!value) {\n console.error('❌ --flags-config requires a file path');\n console.error('💡 Use: --flags-config=path/to/config.json');\n process.exit(1);\n }\n\n configPath = value;\n\n // Don't add to cleanedArgv\n } else if (flagMatch) {\n // Handle --flag.*\n hasCliFlags = true;\n\n const key = flagMatch[1];\n const value = flagMatch[2]; // undefined means bare flag (boolean true)\n const nextToken = argv.length > i + 1 ? argv[i + 1] : undefined;\n\n ensureNoSpaceSeparatedSyntax(key, value, nextToken, 'flag');\n\n // If no value, treat as boolean true\n const finalValue = value === undefined ? 'true' : value;\n overrides[key] = coerceValue(finalValue);\n\n // Don't add to cleanedArgv\n } else {\n cleanedArgv.push(token);\n }\n }\n\n if (configPath && hasCliFlags) {\n console.error('❌ Cannot use both --flags-config and --flag.* arguments together.');\n console.error('Choose one approach:');\n console.error(' • Config file: --flags-config=my-flags.json');\n console.error(' • CLI flags: --flag.temperature=0.9 --flag.model=gpt-4o');\n process.exit(1);\n }\n\n if (configPath) {\n const configOverrides = loadConfigFile(configPath);\n return { cleanedArgv, overrides: configOverrides };\n }\n\n return { cleanedArgv, overrides };\n}\n","// src/index.ts\nvar f = {\n reset: [0, 0],\n bold: [1, 22, \"\\x1B[22m\\x1B[1m\"],\n dim: [2, 22, \"\\x1B[22m\\x1B[2m\"],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n gray: [90, 39],\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39],\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n}, h = Object.entries(f);\nfunction a(n) {\n return String(n);\n}\na.open = \"\";\na.close = \"\";\nvar B = /* @__PURE__ */ h.reduce(\n (n, [e]) => (n[e] = a, n),\n { isColorSupported: !1 }\n);\nfunction m() {\n return { ...B };\n}\nfunction C(n = !1) {\n let e = typeof process != \"undefined\" ? process : void 0, i = (e == null ? void 0 : e.env) || {}, g = (e == null ? void 0 : e.argv) || [];\n return !(\"NO_COLOR\" in i || g.includes(\"--no-color\")) && (\"FORCE_COLOR\" in i || g.includes(\"--color\") || (e == null ? void 0 : e.platform) === \"win32\" || n && i.TERM !== \"dumb\" || \"CI\" in i) || typeof window != \"undefined\" && !!window.chrome;\n}\nfunction p(n = !1) {\n let e = C(n), i = (r, t, c, o) => {\n let l = \"\", s = 0;\n do\n l += r.substring(s, o) + c, s = o + t.length, o = r.indexOf(t, s);\n while (~o);\n return l + r.substring(s);\n }, g = (r, t, c = r) => {\n let o = (l) => {\n let s = String(l), b = s.indexOf(t, r.length);\n return ~b ? r + i(s, t, c, b) + t : r + s + t;\n };\n return o.open = r, o.close = t, o;\n }, u = {\n isColorSupported: e\n }, d = (r) => `\\x1B[${r}m`;\n for (let [r, t] of h)\n u[r] = e ? g(\n d(t[0]),\n d(t[1]),\n t[2]\n ) : a;\n return u;\n}\n\nexport {\n m as a,\n C as b,\n p as c\n};\n","import {\n a as e,\n b as t,\n c as o\n} from \"./chunk-BVHSVHOK.js\";\n\n// src/node.ts\nimport { isatty as s } from \"tty\";\nvar r = process.env.FORCE_TTY !== void 0 || s(1);\nfunction n() {\n return t(r);\n}\nfunction a() {\n return o(r);\n}\nvar u = o(r);\nexport {\n a as createColors,\n u as default,\n e as getDefaultColors,\n n as isSupported\n};\n","import { Command, Argument, Option } from 'commander';\nimport { customAlphabet } from 'nanoid';\nimport { lstatSync } from 'node:fs';\nimport { runEvalWithContext } from '../utils/eval-context-runner';\nimport { validateFlagOverrides, type FlagOverrides } from '../utils/parse-flag-overrides';\nimport { isGlob } from '../utils/glob-utils';\nimport { loadConfig } from '../../config/loader';\nimport { AxiomCLIError } from '../../util/errors';\nimport { getAuthContext } from '../auth/global-auth';\nimport c from 'tinyrainbow';\n\nconst createRunId = customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', 10);\n\n// Module-level storage for console URL override\nlet consoleUrl: string | undefined;\nexport function getConsoleUrl(): string | undefined {\n return consoleUrl;\n}\n/**\n * Gets default token from auth context or falls back to env var\n */\nfunction getDefaultToken(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n const authContext = getAuthContext();\n return authContext?.token || process.env.AXIOM_TOKEN;\n}\n\n/**\n * Gets default URL from auth context or falls back to env var\n */\nfunction getDefaultUrl(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n const authContext = getAuthContext();\n return authContext?.url || process.env.AXIOM_URL || 'https://api.axiom.co';\n}\n\n/**\n * Gets default organization id from auth context or falls back to env var\n */\nfunction getDefaultOrgId(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n const authContext = getAuthContext();\n return authContext?.orgId ?? process.env.AXIOM_ORG_ID;\n}\n\nexport const loadEvalCommand = (program: Command, flagOverrides: FlagOverrides = {}) => {\n return program.addCommand(\n new Command('eval')\n .description('run evals locally')\n .addArgument(\n new Argument('[target]', 'file, directory, glob pattern, or eval name').default(\n '.',\n 'any *.eval.ts file in current directory',\n ),\n )\n .option('-w, --watch true', 'keep server running and watch for changes', false)\n .option('-t, --token <TOKEN>', 'axiom token', getDefaultToken)\n .option('-d, --dataset <DATASET>', 'axiom dataset name')\n .option('-u, --url <AXIOM URL>', 'axiom url', getDefaultUrl)\n .option('-o, --org-id <ORG ID>', 'axiom organization id', getDefaultOrgId)\n .option('-b, --baseline <BASELINE ID>', 'id of baseline evaluation to compare against')\n .option('--debug', 'run locally without any network operations', false)\n .option('--list', 'list evaluations and test cases without running them', false)\n /** Hides the option from the help output, but still allows it to be passed */\n .addOption(new Option('-c, --console-url <URL>', 'console url override').hideHelp())\n .action(async (target: string, options) => {\n try {\n // Propagate debug mode to processes that we can't reach otherwise (e.g., reporter, app instrumentation)\n if (options.debug) {\n process.env.AXIOM_DEBUG = 'true';\n }\n\n let include: string[] = [];\n let exclude: string[] | undefined;\n let testNamePattern: RegExp | undefined;\n\n const isGlobPattern = isGlob(target);\n\n // Load config file first to get defaults\n const { config: loadedConfig } = await loadConfig('.');\n\n // Validate CLI flags against schema\n validateFlagOverrides(flagOverrides, loadedConfig.eval.flagSchema);\n\n // Override config with CLI options if provided\n const config = {\n ...loadedConfig,\n eval: {\n ...loadedConfig.eval,\n ...(options.token && { token: options.token }),\n ...(options.url && { url: options.url }),\n ...(options.dataset && { dataset: options.dataset }),\n ...(options.orgId && { orgId: options.orgId }),\n },\n };\n\n if (isGlobPattern) {\n // Handle glob patterns like \"**/*.eval.ts\" or \"**/my-feature/*\"\n include = [target];\n } else {\n try {\n // Try to treat as file/directory path\n const stat = lstatSync(target);\n if (stat.isDirectory()) {\n include = config?.eval?.include || [];\n } else {\n // Single file\n include = [target];\n }\n } catch {\n // Path doesn't exist, treat as eval name\n testNamePattern = new RegExp(target, 'i');\n // Use config include patterns when searching by name\n include = config?.eval?.include || [];\n }\n }\n\n exclude = config?.eval?.exclude;\n\n if (!config?.eval?.instrumentation) {\n console.warn(\n c.yellow(\n '⚠ App instrumentation (`eval.instrumentation` in `axiom.config.ts`) not configured. Using default provider.',\n ),\n );\n console.log('');\n }\n\n const runId = createRunId();\n\n consoleUrl = options.consoleUrl;\n\n // Dynamic import to avoid loading vitest at CLI startup (breaks `npx axiom login`)\n let runVitestModule;\n try {\n runVitestModule = await import('../../evals/run-vitest');\n } catch (err: unknown) {\n if (\n err &&\n typeof err === 'object' &&\n 'code' in err &&\n (err.code === 'ERR_MODULE_NOT_FOUND' || err.code === 'MODULE_NOT_FOUND')\n ) {\n throw new AxiomCLIError('Failed to load vitest.');\n }\n throw err;\n }\n const { runVitest } = runVitestModule;\n\n await runEvalWithContext(flagOverrides, async () => {\n return runVitest('.', {\n watch: options.watch,\n baseline: options.baseline,\n include,\n exclude,\n testNamePattern,\n debug: options.debug,\n list: options.list,\n overrides: flagOverrides,\n config,\n runId,\n consoleUrl: options.consoleUrl,\n });\n });\n } catch (error) {\n if (error instanceof AxiomCLIError) {\n console.error(`\\n❌ ${error.message}\\n`);\n process.exit(1);\n }\n throw error;\n }\n }),\n );\n};\n","import { getEvalContext, putOnSpan, EVAL_CONTEXT } from './evals/context/storage';\n\n/**\n * Override flag values for the current evaluation context with trace-specific isolation.\n * Now creates overlay contexts to prevent overrides from leaking to sibling operations.\n *\n * @internal - For framework use only. Use scope.overrideFlags() for typed flag access.\n * @param partial - Partial flag overrides\n */\nexport function overrideFlags(partial: Record<string, any>): void {\n const current = getEvalContext();\n\n if (!current) {\n if (process.env.NODE_ENV !== 'test') {\n console.warn('overrideFlags called outside of evaluation context');\n }\n return;\n }\n\n // Create overlay context instead of mutating the current one\n const overlayContext = {\n ...current,\n flags: { ...current.flags, ...partial }, // Merge for backwards compatibility\n parent: current,\n overrides: { ...partial },\n };\n\n // We need to update the current ALS context in place\n const currentCtx = EVAL_CONTEXT.get();\n if (currentCtx) {\n // Update current context to overlay\n Object.assign(currentCtx, overlayContext);\n }\n\n // Write all overridden flags to span\n for (const [key, value] of Object.entries(partial)) {\n putOnSpan('flag', key, value);\n }\n}\n","import { overrideFlags } from '../../context';\nimport { withEvalContext } from '../../evals/context/storage';\nimport { setGlobalFlagOverrides } from '../../evals/context/global-flags';\nimport type { FlagOverrides } from './parse-flag-overrides';\n\n/**\n * Run evaluation with flag overrides applied to the context.\n * This ensures flag overrides are established before any test files load.\n *\n * @param overrides - Flag overrides from CLI parsing\n * @param runFn - Function that runs the evaluation (typically runVitest)\n */\nexport async function runEvalWithContext<T>(\n overrides: FlagOverrides,\n runFn: () => Promise<T>,\n): Promise<T> {\n setGlobalFlagOverrides(overrides);\n\n return withEvalContext({ initialFlags: overrides }, async () => {\n // TODO: is this necessary? given the `setGlobalFlagOverrides` call above?\n if (Object.keys(overrides).length > 0) {\n overrideFlags(overrides);\n }\n\n return runFn();\n });\n}\n","/**\n * Simple glob detection utility\n * Detects if a string contains glob pattern characters\n */\nexport function isGlob(str: string): boolean {\n // Check for glob characters: * ? [ ] { } !\n return /[*?[\\]{}!]/.test(str);\n}\n","import { loadConfig as c12LoadConfig } from 'c12';\nimport { defu } from 'defu';\nimport {\n createPartialDefaults,\n validateConfig,\n type AxiomConfig,\n type ResolvedAxiomConfig,\n} from './index';\nimport { AxiomCLIError, errorToString } from '../util/errors';\n\n/**\n * Custom merger that uses defu but overrides include/exclude arrays instead of merging them\n */\nfunction customMerger(target: any, source: any): any {\n const merged = defu(source, target);\n\n // If source explicitly has eval.include, override it instead of merging\n if (source?.eval && 'include' in source.eval) {\n merged.eval.include = source.eval.include;\n }\n\n // If source explicitly has eval.flagSchema, use it directly (defu mangles Zod objects)\n if (source?.eval && 'flagSchema' in source.eval) {\n merged.eval.flagSchema = source.eval.flagSchema;\n }\n\n return merged;\n}\n\n/**\n * Result of loading a config file\n */\nexport interface LoadConfigResult {\n config: ResolvedAxiomConfig;\n}\n\n/**\n * Load Axiom configuration from axiom.config.ts (or .js, .mjs, etc.)\n *\n * @param cwd - The directory to search for config file (defaults to process.cwd())\n * @returns The loaded config and the path to the config file (if found)\n *\n * @example\n * ```typescript\n * const { config } = await loadConfig();\n * ```\n */\nexport async function loadConfig(cwd: string = process.cwd()): Promise<LoadConfigResult> {\n try {\n const defaults = createPartialDefaults();\n\n const result = await c12LoadConfig<AxiomConfig>({\n name: 'axiom',\n cwd,\n // Support common config file extensions\n configFile: 'axiom.config',\n // Don't use defaultConfig - we'll merge manually to control array behavior\n // Disable configs other than .ts/.js/.mts/.mjs/.cts/.cjs\n rcFile: false,\n globalRc: false,\n packageJson: false,\n giget: false,\n });\n\n // Manually merge with defaults, overriding `include` instead of merging\n const mergedConfig = customMerger(defaults, result.config);\n const validatedConfig = validateConfig(mergedConfig);\n\n return {\n config: validatedConfig,\n };\n } catch (error) {\n if (error instanceof AxiomCLIError) {\n throw error;\n }\n // c12 throws if config file has errors\n throw new AxiomCLIError(`Failed to load config file: ${errorToString(error)}`);\n }\n}\n"],"mappings":"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","names":["r","s","u"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/utils/parse-flag-overrides.ts","../../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/chunk-BVHSVHOK.js","../../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.js","../src/cli/commands/eval.command.ts","../src/context.ts","../src/cli/utils/eval-context-runner.ts","../src/cli/utils/glob-utils.ts","../src/config/loader.ts"],"sourcesContent":["import { type ZodError, type ZodObject, type z } from 'zod';\nimport { formatZodErrors, generateFlagExamples } from './format-zod-errors.js';\nimport { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { dotNotationToNested, isValidPath, parsePath } from '../../util/dot-path.js';\nimport { makeDeepPartial } from '../../util/deep-partial-schema.js';\nimport { assertZodV4 } from '../../util/zod-internals.js';\n\nexport interface FlagOverrides {\n [key: string]: any;\n}\n\nconst FLAG_RE = /^--flag\\.([^=]+)(?:=(.*))?$/;\nconst CONFIG_RE = /^--flags-config(?:=(.*))?$/;\n\nfunction ensureNoSpaceSeparatedSyntax(\n flagName: string,\n value: string | undefined,\n nextToken: string | undefined,\n flagType: 'flag' | 'config',\n): void {\n if (value === undefined && nextToken !== undefined) {\n if (\n flagType === 'flag' &&\n !nextToken.startsWith('-') &&\n nextToken !== 'true' &&\n nextToken !== 'false'\n ) {\n console.error(`❌ Invalid syntax: --flag.${flagName} ${nextToken}`);\n console.error(`💡 Use: --flag.${flagName}=${nextToken}`);\n process.exit(1);\n } else if (flagType === 'config' && !nextToken.startsWith('-')) {\n console.error(`❌ Invalid syntax: --flags-config ${nextToken}`);\n console.error(`💡 Use: --flags-config=${nextToken}`);\n process.exit(1);\n }\n }\n}\n\n/**\n * Extract and validate flag overrides using a Zod schema\n */\nexport function extractAndValidateFlagOverrides<S extends z.ZodObject<any>>(\n argv: string[],\n flagSchema?: S,\n): {\n cleanedArgv: string[];\n overrides: S extends ZodObject<any> ? z.output<S> : FlagOverrides;\n} {\n if (flagSchema) {\n assertZodV4(flagSchema, 'flagSchema');\n }\n\n const { cleanedArgv, overrides } = extractOverrides(argv);\n\n if (flagSchema && Object.keys(overrides).length > 0) {\n // Use deep partial schema - allows partial nested objects\n const deepPartialSchema = makeDeepPartial(flagSchema as ZodObject<any>);\n const result = deepPartialSchema.safeParse(overrides);\n\n if (!result.success) {\n console.error('❌ Invalid flags:');\n console.error(formatZodErrors(result.error));\n\n const examples = generateFlagExamples(result.error);\n if (examples.length > 0) {\n console.error('\\n💡 Examples:');\n examples.forEach((example) => console.error(` ${example}`));\n }\n\n process.exit(1);\n }\n\n return { cleanedArgv, overrides: result.data as any };\n }\n\n return { cleanedArgv, overrides: overrides as any };\n}\n\nexport type FlagValidationError =\n | { type: 'invalid_path'; path: string }\n | { type: 'invalid_value'; zodError: ZodError };\n\nexport interface FlagValidationResult {\n success: boolean;\n errors: FlagValidationError[];\n}\n\n/**\n * Validate already-parsed flag overrides against a Zod schema.\n * Returns validation result without side effects (no console output, no process.exit).\n *\n * @param overrides - Flag overrides in dot-notation form (e.g., { 'model.temperature': 0.7 })\n * @param flagSchema - Zod schema to validate against\n * @returns Validation result with any errors found\n */\nexport function collectFlagValidationErrors(\n overrides: FlagOverrides,\n flagSchema?: unknown,\n): FlagValidationResult {\n // No schema provided = no validation, any flags allowed\n if (!flagSchema || Object.keys(overrides).length === 0) {\n return { success: true, errors: [] };\n }\n\n assertZodV4(flagSchema, 'flagSchema');\n\n const schema = flagSchema as any;\n const errors: FlagValidationError[] = [];\n\n // First pass: check all paths exist in schema\n for (const dotPath of Object.keys(overrides)) {\n const segments = parsePath(dotPath);\n if (!isValidPath(schema, segments)) {\n errors.push({ type: 'invalid_path', path: dotPath });\n }\n }\n\n // If there are invalid paths, don't proceed to value validation\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n // Second pass: validate values using nested object approach with deep partial\n // This allows providing only some flags without requiring all nested objects\n const nestedObject = dotNotationToNested(overrides);\n const deepPartialSchema = makeDeepPartial(schema);\n const result = deepPartialSchema.safeParse(nestedObject);\n\n if (!result.success) {\n errors.push({ type: 'invalid_value', zodError: result.error });\n }\n\n return { success: errors.length === 0, errors };\n}\n\n/**\n * Print flag validation errors to console and exit.\n */\nexport function printFlagValidationErrorsAndExit(errors: FlagValidationError[]): never {\n console.error('❌ Invalid CLI flags:');\n\n for (const error of errors) {\n if (error.type === 'invalid_path') {\n console.error(` • flag '${error.path}': Invalid flag path`);\n } else {\n console.error(formatZodErrors(error.zodError));\n\n const examples = generateFlagExamples(error.zodError);\n if (examples.length > 0) {\n console.error('\\n💡 Valid examples:');\n examples.forEach((example) => console.error(` ${example}`));\n }\n }\n }\n\n process.exit(1);\n}\n\n/**\n * Validate already-parsed flag overrides against a Zod schema.\n * Use this when you have flag overrides in dot-notation form (e.g., { 'model.temperature': 0.7 })\n * and want to validate them against a schema before running evals.\n *\n * @param overrides - Flag overrides in dot-notation form\n * @param flagSchema - Zod schema to validate against\n */\nexport function validateFlagOverrides(overrides: FlagOverrides, flagSchema?: unknown): void {\n const result = collectFlagValidationErrors(overrides, flagSchema);\n if (!result.success) {\n printFlagValidationErrorsAndExit(result.errors);\n }\n}\n\n/**\n * Coerce string values to appropriate types.\n * Priority: boolean -> number -> JSON -> string\n */\nfunction coerceValue(raw: string): any {\n // Handle explicit boolean strings\n if (raw === 'true') return true;\n if (raw === 'false') return false;\n\n // Try number conversion\n const num = Number(raw);\n if (!Number.isNaN(num) && raw.trim() === num.toString()) {\n return num;\n }\n\n // Try JSON parsing (for objects/arrays)\n try {\n return JSON.parse(raw);\n } catch {\n // Fallback to string\n return raw;\n }\n}\n\n/**\n * Load and parse a JSON config file\n */\nfunction loadConfigFile(path: string): any {\n const abs = resolve(process.cwd(), path);\n try {\n const contents = readFileSync(abs, 'utf8');\n const parsed = JSON.parse(contents);\n\n if (typeof parsed !== 'object' || Array.isArray(parsed) || parsed === null) {\n console.error(\n `❌ Flags config must be a JSON object, got ${Array.isArray(parsed) ? 'array' : typeof parsed}`,\n );\n process.exit(1);\n }\n\n return parsed;\n } catch (err: any) {\n console.error(`❌ Could not read or parse flags config \"${path}\": ${err.message}`);\n process.exit(1);\n }\n}\n\n/**\n * Extract flag overrides with support for both CLI flags and config files.\n *\n * Supports CLI flags:\n * - --flag.temperature=0.9\n * - --flag.dryRun=true | false\n * - --flag.foo={\"bar\":1} (JSON literal)\n * - --flag.bare (interpreted as true)\n *\n * Or config file:\n * - --flags-config=path/to/config.json\n *\n * Enforces exclusive mode - cannot use both --flags-config and --flag.* together.\n */\nexport function extractOverrides(argv: string[]): {\n cleanedArgv: string[];\n overrides: FlagOverrides;\n} {\n const cleanedArgv: string[] = [];\n const overrides: FlagOverrides = {};\n let configPath: string | null = null;\n let hasCliFlags = false;\n let configPathCount = 0;\n\n for (let i = 0; i < argv.length; i++) {\n const token = argv[i];\n const configMatch = token.match(CONFIG_RE);\n const flagMatch = token.match(FLAG_RE);\n\n if (configMatch) {\n // Handle --flags-config\n configPathCount++;\n if (configPathCount > 1) {\n console.error('❌ Only one --flags-config can be supplied.');\n process.exit(1);\n }\n\n const value = configMatch[1]; // undefined means no equals sign\n const nextToken = argv.length > i + 1 ? argv[i + 1] : undefined;\n\n ensureNoSpaceSeparatedSyntax('flags-config', value, nextToken, 'config');\n\n if (!value) {\n console.error('❌ --flags-config requires a file path');\n console.error('💡 Use: --flags-config=path/to/config.json');\n process.exit(1);\n }\n\n configPath = value;\n\n // Don't add to cleanedArgv\n } else if (flagMatch) {\n // Handle --flag.*\n hasCliFlags = true;\n\n const key = flagMatch[1];\n const value = flagMatch[2]; // undefined means bare flag (boolean true)\n const nextToken = argv.length > i + 1 ? argv[i + 1] : undefined;\n\n ensureNoSpaceSeparatedSyntax(key, value, nextToken, 'flag');\n\n // If no value, treat as boolean true\n const finalValue = value === undefined ? 'true' : value;\n overrides[key] = coerceValue(finalValue);\n\n // Don't add to cleanedArgv\n } else {\n cleanedArgv.push(token);\n }\n }\n\n if (configPath && hasCliFlags) {\n console.error('❌ Cannot use both --flags-config and --flag.* arguments together.');\n console.error('Choose one approach:');\n console.error(' • Config file: --flags-config=my-flags.json');\n console.error(' • CLI flags: --flag.temperature=0.9 --flag.model=gpt-4o');\n process.exit(1);\n }\n\n if (configPath) {\n const configOverrides = loadConfigFile(configPath);\n return { cleanedArgv, overrides: configOverrides };\n }\n\n return { cleanedArgv, overrides };\n}\n","// src/index.ts\nvar f = {\n reset: [0, 0],\n bold: [1, 22, \"\\x1B[22m\\x1B[1m\"],\n dim: [2, 22, \"\\x1B[22m\\x1B[2m\"],\n italic: [3, 23],\n underline: [4, 24],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n gray: [90, 39],\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39],\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49]\n}, h = Object.entries(f);\nfunction a(n) {\n return String(n);\n}\na.open = \"\";\na.close = \"\";\nvar B = /* @__PURE__ */ h.reduce(\n (n, [e]) => (n[e] = a, n),\n { isColorSupported: !1 }\n);\nfunction m() {\n return { ...B };\n}\nfunction C(n = !1) {\n let e = typeof process != \"undefined\" ? process : void 0, i = (e == null ? void 0 : e.env) || {}, g = (e == null ? void 0 : e.argv) || [];\n return !(\"NO_COLOR\" in i || g.includes(\"--no-color\")) && (\"FORCE_COLOR\" in i || g.includes(\"--color\") || (e == null ? void 0 : e.platform) === \"win32\" || n && i.TERM !== \"dumb\" || \"CI\" in i) || typeof window != \"undefined\" && !!window.chrome;\n}\nfunction p(n = !1) {\n let e = C(n), i = (r, t, c, o) => {\n let l = \"\", s = 0;\n do\n l += r.substring(s, o) + c, s = o + t.length, o = r.indexOf(t, s);\n while (~o);\n return l + r.substring(s);\n }, g = (r, t, c = r) => {\n let o = (l) => {\n let s = String(l), b = s.indexOf(t, r.length);\n return ~b ? r + i(s, t, c, b) + t : r + s + t;\n };\n return o.open = r, o.close = t, o;\n }, u = {\n isColorSupported: e\n }, d = (r) => `\\x1B[${r}m`;\n for (let [r, t] of h)\n u[r] = e ? g(\n d(t[0]),\n d(t[1]),\n t[2]\n ) : a;\n return u;\n}\n\nexport {\n m as a,\n C as b,\n p as c\n};\n","import {\n a as e,\n b as t,\n c as o\n} from \"./chunk-BVHSVHOK.js\";\n\n// src/node.ts\nimport { isatty as s } from \"tty\";\nvar r = process.env.FORCE_TTY !== void 0 || s(1);\nfunction n() {\n return t(r);\n}\nfunction a() {\n return o(r);\n}\nvar u = o(r);\nexport {\n a as createColors,\n u as default,\n e as getDefaultColors,\n n as isSupported\n};\n","import { Command, Argument, Option } from 'commander';\nimport { customAlphabet } from 'nanoid';\nimport { lstatSync } from 'node:fs';\nimport { runEvalWithContext } from '../utils/eval-context-runner';\nimport { validateFlagOverrides, type FlagOverrides } from '../utils/parse-flag-overrides';\nimport { isGlob } from '../utils/glob-utils';\nimport { loadConfig } from '../../config/loader';\nimport { AxiomCLIError } from '../../util/errors';\nimport { getAuthContext } from '../auth/global-auth';\nimport c from 'tinyrainbow';\n\nconst createRunId = customAlphabet('0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', 10);\n\n// Module-level storage for console URL override\nlet consoleUrl: string | undefined;\nexport function getConsoleUrl(): string | undefined {\n return consoleUrl;\n}\n/**\n * Gets default token from auth context or falls back to env var\n */\nfunction getDefaultToken(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n const authContext = getAuthContext();\n return authContext?.token || process.env.AXIOM_TOKEN;\n}\n\n/**\n * Gets default URL from auth context or falls back to env var\n */\nfunction getDefaultUrl(value: unknown): string {\n if (typeof value === 'string') {\n return value;\n }\n const authContext = getAuthContext();\n return authContext?.url || process.env.AXIOM_URL || 'https://api.axiom.co';\n}\n\n/**\n * Gets default organization id from auth context or falls back to env var\n */\nfunction getDefaultOrgId(value: unknown): string | undefined {\n if (typeof value === 'string') {\n return value;\n }\n const authContext = getAuthContext();\n return authContext?.orgId ?? process.env.AXIOM_ORG_ID;\n}\n\nexport const loadEvalCommand = (program: Command, flagOverrides: FlagOverrides = {}) => {\n return program.addCommand(\n new Command('eval')\n .description('run evals locally')\n .addArgument(\n new Argument('[target]', 'file, directory, glob pattern, or eval name').default(\n '.',\n 'any *.eval.ts file in current directory',\n ),\n )\n .option('-w, --watch true', 'keep server running and watch for changes', false)\n .option('-t, --token <TOKEN>', 'axiom token', getDefaultToken)\n .option('-d, --dataset <DATASET>', 'axiom dataset name')\n .option('-u, --url <AXIOM URL>', 'axiom url', getDefaultUrl)\n .option('-o, --org-id <ORG ID>', 'axiom organization id', getDefaultOrgId)\n .option('-b, --baseline <BASELINE ID>', 'id of baseline evaluation to compare against')\n .option('--debug', 'run locally without any network operations', false)\n .option('--list', 'list evaluations and test cases without running them', false)\n /** Hides the option from the help output, but still allows it to be passed */\n .addOption(new Option('-c, --console-url <URL>', 'console url override').hideHelp())\n .action(async (target: string, options) => {\n try {\n // Propagate debug mode to processes that we can't reach otherwise (e.g., reporter, app instrumentation)\n if (options.debug) {\n process.env.AXIOM_DEBUG = 'true';\n }\n\n let include: string[] = [];\n let exclude: string[] | undefined;\n let testNamePattern: RegExp | undefined;\n\n const isGlobPattern = isGlob(target);\n\n // Load config file first to get defaults\n const { config: loadedConfig, configPath } = await loadConfig('.');\n\n // Validate CLI flags against schema\n validateFlagOverrides(flagOverrides, loadedConfig.eval.flagSchema);\n\n // Override config with CLI options if provided\n const config = {\n ...loadedConfig,\n eval: {\n ...loadedConfig.eval,\n ...(options.token && { token: options.token }),\n ...(options.url && { url: options.url }),\n ...(options.dataset && { dataset: options.dataset }),\n ...(options.orgId && { orgId: options.orgId }),\n },\n };\n\n if (isGlobPattern) {\n // Handle glob patterns like \"**/*.eval.ts\" or \"**/my-feature/*\"\n include = [target];\n } else {\n try {\n // Try to treat as file/directory path\n const stat = lstatSync(target);\n if (stat.isDirectory()) {\n include = config?.eval?.include || [];\n } else {\n // Single file\n include = [target];\n }\n } catch {\n // Path doesn't exist, treat as eval name\n testNamePattern = new RegExp(target, 'i');\n // Use config include patterns when searching by name\n include = config?.eval?.include || [];\n }\n }\n\n exclude = config?.eval?.exclude;\n\n if (!config?.eval?.instrumentation) {\n console.warn(\n c.yellow(\n '⚠ App instrumentation (`eval.instrumentation` in `axiom.config.ts`) not configured. Using default provider.',\n ),\n );\n console.log('');\n }\n\n const runId = createRunId();\n\n consoleUrl = options.consoleUrl;\n\n // Dynamic import to avoid loading vitest at CLI startup (breaks `npx axiom login`)\n let runVitestModule;\n try {\n runVitestModule = await import('../../evals/run-vitest');\n } catch (err: unknown) {\n if (\n err &&\n typeof err === 'object' &&\n 'code' in err &&\n (err.code === 'ERR_MODULE_NOT_FOUND' || err.code === 'MODULE_NOT_FOUND')\n ) {\n throw new AxiomCLIError('Failed to load vitest.');\n }\n throw err;\n }\n const { runVitest } = runVitestModule;\n\n await runEvalWithContext(flagOverrides, async () => {\n return runVitest('.', {\n watch: options.watch,\n baseline: options.baseline,\n include,\n exclude,\n testNamePattern,\n debug: options.debug,\n list: options.list,\n overrides: flagOverrides,\n config,\n configPath,\n runId,\n consoleUrl: options.consoleUrl,\n });\n });\n } catch (error) {\n if (error instanceof AxiomCLIError) {\n console.error(`\\n❌ ${error.message}\\n`);\n process.exit(1);\n }\n throw error;\n }\n }),\n );\n};\n","import { getEvalContext, putOnSpan, EVAL_CONTEXT } from './evals/context/storage';\n\n/**\n * Override flag values for the current evaluation context with trace-specific isolation.\n * Now creates overlay contexts to prevent overrides from leaking to sibling operations.\n *\n * @internal - For framework use only. Use scope.overrideFlags() for typed flag access.\n * @param partial - Partial flag overrides\n */\nexport function overrideFlags(partial: Record<string, any>): void {\n const current = getEvalContext();\n\n if (!current) {\n if (process.env.NODE_ENV !== 'test') {\n console.warn('overrideFlags called outside of evaluation context');\n }\n return;\n }\n\n // Create overlay context instead of mutating the current one\n const overlayContext = {\n ...current,\n flags: { ...current.flags, ...partial }, // Merge for backwards compatibility\n parent: current,\n overrides: { ...partial },\n };\n\n // We need to update the current ALS context in place\n const currentCtx = EVAL_CONTEXT.get();\n if (currentCtx) {\n // Update current context to overlay\n Object.assign(currentCtx, overlayContext);\n }\n\n // Write all overridden flags to span\n for (const [key, value] of Object.entries(partial)) {\n putOnSpan('flag', key, value);\n }\n}\n","import { overrideFlags } from '../../context';\nimport { withEvalContext } from '../../evals/context/storage';\nimport { setGlobalFlagOverrides } from '../../evals/context/global-flags';\nimport type { FlagOverrides } from './parse-flag-overrides';\n\n/**\n * Run evaluation with flag overrides applied to the context.\n * This ensures flag overrides are established before any test files load.\n *\n * @param overrides - Flag overrides from CLI parsing\n * @param runFn - Function that runs the evaluation (typically runVitest)\n */\nexport async function runEvalWithContext<T>(\n overrides: FlagOverrides,\n runFn: () => Promise<T>,\n): Promise<T> {\n setGlobalFlagOverrides(overrides);\n\n return withEvalContext({ initialFlags: overrides }, async () => {\n // TODO: is this necessary? given the `setGlobalFlagOverrides` call above?\n if (Object.keys(overrides).length > 0) {\n overrideFlags(overrides);\n }\n\n return runFn();\n });\n}\n","/**\n * Simple glob detection utility\n * Detects if a string contains glob pattern characters\n */\nexport function isGlob(str: string): boolean {\n // Check for glob characters: * ? [ ] { } !\n return /[*?[\\]{}!]/.test(str);\n}\n","import { loadConfig as c12LoadConfig } from 'c12';\nimport { defu } from 'defu';\nimport {\n createPartialDefaults,\n validateConfig,\n type AxiomConfig,\n type ResolvedAxiomConfig,\n} from './index';\nimport { AxiomCLIError, errorToString } from '../util/errors';\n\n/**\n * Custom merger that uses defu but overrides include/exclude arrays instead of merging them\n */\nfunction customMerger(target: any, source: any): any {\n const merged = defu(source, target);\n\n // If source explicitly has eval.include, override it instead of merging\n if (source?.eval && 'include' in source.eval) {\n merged.eval.include = source.eval.include;\n }\n\n // If source explicitly has eval.flagSchema, use it directly (defu mangles Zod objects)\n if (source?.eval && 'flagSchema' in source.eval) {\n merged.eval.flagSchema = source.eval.flagSchema;\n }\n\n return merged;\n}\n\n/**\n * Result of loading a config file\n */\nexport interface LoadConfigResult {\n config: ResolvedAxiomConfig;\n configPath?: string;\n}\n\n/**\n * Load Axiom configuration from axiom.config.ts (or .js, .mjs, etc.)\n *\n * @param cwd - The directory to search for config file (defaults to process.cwd())\n * @returns The loaded config and the path to the config file (if found)\n *\n * @example\n * ```typescript\n * const { config } = await loadConfig();\n * ```\n */\nexport async function loadConfig(cwd: string = process.cwd()): Promise<LoadConfigResult> {\n try {\n const defaults = createPartialDefaults();\n\n const result = await c12LoadConfig<AxiomConfig>({\n name: 'axiom',\n cwd,\n // Support common config file extensions\n configFile: 'axiom.config',\n // Don't use defaultConfig - we'll merge manually to control array behavior\n // Disable configs other than .ts/.js/.mts/.mjs/.cts/.cjs\n rcFile: false,\n globalRc: false,\n packageJson: false,\n giget: false,\n });\n\n // Manually merge with defaults, overriding `include` instead of merging\n const mergedConfig = customMerger(defaults, result.config);\n const validatedConfig = validateConfig(mergedConfig);\n\n return {\n config: validatedConfig,\n configPath: result._configFile,\n };\n } catch (error) {\n if (error instanceof AxiomCLIError) {\n throw error;\n }\n // c12 throws if config file has errors\n throw new AxiomCLIError(`Failed to load config file: ${errorToString(error)}`);\n }\n}\n"],"mappings":"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","names":["r","s","u"]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getRedactionPolicy,
|
|
6
6
|
handleMaybeRedactedAttribute,
|
|
7
7
|
package_default
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-VM3QYJPV.js";
|
|
9
9
|
import {
|
|
10
10
|
isValidName
|
|
11
11
|
} from "./chunk-MM5FFQJT.js";
|
|
@@ -2030,7 +2030,7 @@ function wrapAISDKModel(model) {
|
|
|
2030
2030
|
}
|
|
2031
2031
|
|
|
2032
2032
|
// src/evals/context/global-flags.ts
|
|
2033
|
-
var GLOBAL_OVERRIDES_SYMBOL = Symbol.for("axiom.global_flag_overrides");
|
|
2033
|
+
var GLOBAL_OVERRIDES_SYMBOL = /* @__PURE__ */ Symbol.for("axiom.global_flag_overrides");
|
|
2034
2034
|
function getRoot() {
|
|
2035
2035
|
return globalThis[GLOBAL_OVERRIDES_SYMBOL] ?? {};
|
|
2036
2036
|
}
|
|
@@ -2048,7 +2048,7 @@ function getGlobalFlagOverrides() {
|
|
|
2048
2048
|
import { trace as trace3 } from "@opentelemetry/api";
|
|
2049
2049
|
|
|
2050
2050
|
// src/evals/context/manager.ts
|
|
2051
|
-
var CONTEXT_MANAGER_SYMBOL = Symbol.for("axiom.context_manager");
|
|
2051
|
+
var CONTEXT_MANAGER_SYMBOL = /* @__PURE__ */ Symbol.for("axiom.context_manager");
|
|
2052
2052
|
var globalScope = globalThis;
|
|
2053
2053
|
function getGlobalContextManager() {
|
|
2054
2054
|
return globalScope[CONTEXT_MANAGER_SYMBOL];
|
|
@@ -2116,14 +2116,14 @@ function createAsyncHook(_name) {
|
|
|
2116
2116
|
}
|
|
2117
2117
|
|
|
2118
2118
|
// src/evals/context/storage.ts
|
|
2119
|
-
var CONFIG_SCOPE_SYMBOL = Symbol.for("axiom.eval.configScope");
|
|
2119
|
+
var CONFIG_SCOPE_SYMBOL = /* @__PURE__ */ Symbol.for("axiom.eval.configScope");
|
|
2120
2120
|
function getGlobalConfigScope() {
|
|
2121
2121
|
return globalThis[CONFIG_SCOPE_SYMBOL];
|
|
2122
2122
|
}
|
|
2123
2123
|
function setGlobalConfigScope(scope) {
|
|
2124
2124
|
globalThis[CONFIG_SCOPE_SYMBOL] = scope;
|
|
2125
2125
|
}
|
|
2126
|
-
var AXIOM_CONFIG_SYMBOL = Symbol.for("axiom.eval.config");
|
|
2126
|
+
var AXIOM_CONFIG_SYMBOL = /* @__PURE__ */ Symbol.for("axiom.eval.config");
|
|
2127
2127
|
function getAxiomConfig() {
|
|
2128
2128
|
return globalThis[AXIOM_CONFIG_SYMBOL];
|
|
2129
2129
|
}
|
|
@@ -3140,4 +3140,4 @@ export {
|
|
|
3140
3140
|
withEvalContext,
|
|
3141
3141
|
getConfigScope
|
|
3142
3142
|
};
|
|
3143
|
-
//# sourceMappingURL=chunk-
|
|
3143
|
+
//# sourceMappingURL=chunk-AB6SNLJL.js.map
|