praxis-agent 0.67.2 → 0.69.0

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.
@@ -79,6 +79,8 @@ interface ProjectEvalRunOptions {
79
79
  factory: IdentifiedEvalRuntimeFactory;
80
80
  run: number;
81
81
  allowTools?: readonly string[];
82
+ provider?: string;
83
+ profile?: string;
82
84
  model?: string;
83
85
  keepTemp?: boolean;
84
86
  runVerification?: boolean;
@@ -124,6 +124,10 @@ export async function runProjectEvalCase(options) {
124
124
  cwd: workspace.cwd,
125
125
  configRoot: workspace.config,
126
126
  home: workspace.home,
127
+ ...(options.provider === undefined ? {} : { provider: options.provider }),
128
+ ...(options.profile === undefined
129
+ ? {}
130
+ : { providerProfile: options.profile }),
127
131
  maxTurns: options.case.execution.maxTurns,
128
132
  pluginDirectories: [],
129
133
  allowedTools,
@@ -4,7 +4,7 @@ import { type ProjectEvalCheckSummary, type ProjectEvalVerificationEvidence, typ
4
4
  export type { ProjectEvalCheckSummary, ProjectEvalVerifierOutcome, ProjectEvalVerificationEvidence, } from './project-eval-runner.js';
5
5
  import { type ProjectEvalIdentity } from './project-eval-identity.js';
6
6
  import type { PraxisBuildIdentity } from '../platform/praxis-build-identity.js';
7
- export declare const PROJECT_EVAL_HELP = "Usage: praxis eval [options] <target>\n\nRun deterministic project outcome evaluations in isolated workspaces.\n\nOptions:\n --case <glob> Filter case names\n --tag <tag[,tag]> Filter tags; repeatable\n --runs <1..50> Override run count\n --model <model> Override model\n --allow-tools <rules> Grant gated tools; comma-separated and repeatable\n --run-verification Enable verifier subprocesses\n --output-dir <dir> Write artifacts to this directory\n --keep-temp Preserve temporary workspaces\n --json Print exactly one aggregate JSON value\n --verbose Print run progress to stderr\n -h, --help Display help\n\nUse praxis eval compare --help to compare two completed aggregate artifacts.";
7
+ export declare const PROJECT_EVAL_HELP = "Usage: praxis eval [options] <target>\n\nRun deterministic project outcome evaluations in isolated workspaces.\n\nOptions:\n --case <glob> Filter case names\n --tag <tag[,tag]> Filter tags; repeatable\n --runs <1..50> Override run count\n --model <model> Override model\n --provider <id> Override provider\n --profile <id> Override provider profile\n --allow-tools <rules> Grant gated tools; comma-separated and repeatable\n --run-verification Enable verifier subprocesses\n --output-dir <dir> Write artifacts to this directory\n --keep-temp Preserve temporary workspaces\n --json Print exactly one aggregate JSON value\n --verbose Print run progress to stderr\n -h, --help Display help\n\nUse praxis eval compare --help to compare two completed aggregate artifacts.";
8
8
  export interface ProjectEvalDependencies {
9
9
  runtimeFactory: IdentifiedEvalRuntimeFactory;
10
10
  loadBuildIdentity: () => Promise<PraxisBuildIdentity>;
@@ -17,6 +17,8 @@ export interface ProjectEvalOptions {
17
17
  tags: string[];
18
18
  runs?: number;
19
19
  model?: string;
20
+ provider?: string;
21
+ profile?: string;
20
22
  allowTools: string[];
21
23
  runVerification: boolean;
22
24
  outputDir?: string;
@@ -13,6 +13,8 @@ Options:
13
13
  --tag <tag[,tag]> Filter tags; repeatable
14
14
  --runs <1..50> Override run count
15
15
  --model <model> Override model
16
+ --provider <id> Override provider
17
+ --profile <id> Override provider profile
16
18
  --allow-tools <rules> Grant gated tools; comma-separated and repeatable
17
19
  --run-verification Enable verifier subprocesses
18
20
  --output-dir <dir> Write artifacts to this directory
@@ -60,6 +62,8 @@ export function parseProjectEvalOptions(argv) {
60
62
  options.verbose = true;
61
63
  else if (value === '--case' ||
62
64
  value === '--model' ||
65
+ value === '--provider' ||
66
+ value === '--profile' ||
63
67
  value === '--output-dir' ||
64
68
  value === '--runs' ||
65
69
  value === '--tag' ||
@@ -70,6 +74,10 @@ export function parseProjectEvalOptions(argv) {
70
74
  options.caseGlob = selected;
71
75
  else if (value === '--model')
72
76
  options.model = selected;
77
+ else if (value === '--provider')
78
+ options.provider = selected;
79
+ else if (value === '--profile')
80
+ options.profile = selected;
73
81
  else if (value === '--output-dir')
74
82
  options.outputDir = selected;
75
83
  else if (value === '--runs') {
@@ -143,6 +151,10 @@ function runSummary(result, outputDirectory) {
143
151
  };
144
152
  }
145
153
  export async function executeProjectEvalCommand(argv, io, dependencies, callerCwd = process.cwd(), signal) {
154
+ if (argv[0] === 'qualify') {
155
+ const { executeHeldOutQualificationCommand } = await import('./held-out-qualification.js');
156
+ return executeHeldOutQualificationCommand(argv.slice(1), io, dependencies, callerCwd, signal);
157
+ }
146
158
  if (argv[0] === 'compare')
147
159
  return executeProjectEvalCompareCommand(argv.slice(1), io, callerCwd, signal);
148
160
  const options = parseProjectEvalOptions(argv);
@@ -174,6 +186,10 @@ export async function executeProjectEvalCommand(argv, io, dependencies, callerCw
174
186
  run: runIndex,
175
187
  allowTools: options.allowTools,
176
188
  ...(options.model === undefined ? {} : { model: options.model }),
189
+ ...(options.provider === undefined
190
+ ? {}
191
+ : { provider: options.provider }),
192
+ ...(options.profile === undefined ? {} : { profile: options.profile }),
177
193
  keepTemp: options.keepTemp,
178
194
  runVerification: options.runVerification,
179
195
  outputDir: outputDirectory,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "praxis-agent",
3
- "version": "0.67.2",
3
+ "version": "0.69.0",
4
4
  "description": "Local-first, single-user general agent for the command line.",
5
5
  "license": "MIT",
6
6
  "author": "wuqisen",
@@ -62,7 +62,9 @@
62
62
  "verify:ci-coverage": "node scripts/verify-ci-coverage.mjs",
63
63
  "verify:fixture-contracts": "node scripts/verify-fixture-contracts.mjs",
64
64
  "test:fixtures": "node scripts/run-fixture-contracts.mjs",
65
- "test:eval:baseline": "vitest run src/evals/coding-baseline.test.ts src/evals/project-eval-comparison.test.ts src/evals/apply-patch-admission.test.ts src/evals/lsp-diagnostics-admission.test.ts src/evals/glob-ripgrep-admission.test.ts"
65
+ "test:eval:baseline": "vitest run src/evals/coding-baseline.test.ts src/evals/project-eval-comparison.test.ts src/evals/apply-patch-admission.test.ts src/evals/lsp-diagnostics-admission.test.ts src/evals/glob-ripgrep-admission.test.ts",
66
+ "test:eval:held-out-contract": "vitest run src/evals/held-out-corpus.test.ts",
67
+ "test:eval:held-out-qualification": "vitest run src/evals/held-out-qualification.test.ts"
66
68
  },
67
69
  "engines": {
68
70
  "node": ">=24"