@nathapp/nax 0.61.0 → 0.61.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.
Files changed (2) hide show
  1. package/dist/nax.js +16 -6
  2. package/package.json +1 -1
package/dist/nax.js CHANGED
@@ -18070,6 +18070,7 @@ function isLegacyFlatModels(val) {
18070
18070
  var TokenPricingSchema, ModelDefSchema, ModelEntrySchema, PerAgentModelMapSchema, ModelMapSchema, ModelTierSchema, TierConfigSchema, AutoModeConfigSchema, RectificationConfigSchema, RegressionGateConfigSchema, SmartTestRunnerConfigSchema, SMART_TEST_RUNNER_DEFAULT, smartTestRunnerFieldSchema, ExecutionConfigSchema, QualityConfigSchema, TddConfigSchema, ConstitutionConfigSchema, AnalyzeConfigSchema, SemanticReviewConfigSchema, ReviewDialogueConfigSchema, ReviewConfigSchema, PlanConfigSchema, AcceptanceFixConfigSchema, AcceptanceConfigSchema, TestCoverageConfigSchema, ContextAutoDetectConfigSchema, ContextConfigSchema, LlmRoutingConfigSchema, RoutingConfigSchema, OptimizerConfigSchema, PluginConfigEntrySchema, HooksConfigSchema, InteractionConfigSchema, StorySizeGateConfigSchema, PromptAuditConfigSchema, AgentConfigSchema, PrecheckConfigSchema, PromptsConfigSchema, ProjectProfileSchema, VALID_AGENT_TYPES, GenerateConfigSchema, DebaterPersonaEnum, DebaterSchema, toObject = (val) => val === undefined || val === null ? {} : val, RESOLVER_TYPES, makeResolverSchema = (defaultType) => exports_external.preprocess(toObject, exports_external.object({
18071
18071
  type: exports_external.enum(RESOLVER_TYPES).default(defaultType),
18072
18072
  agent: exports_external.string().min(1).optional(),
18073
+ model: exports_external.string().min(1).optional(),
18073
18074
  tieBreaker: exports_external.string().min(1).optional(),
18074
18075
  maxPromptTokens: exports_external.number().int().positive().optional()
18075
18076
  })), DebateStageConfigSchema = (defaults) => exports_external.preprocess(toObject, exports_external.object({
@@ -21694,12 +21695,16 @@ async function resolveOutcome(proposalOutputs, critiqueOutputs, stageConfig, con
21694
21695
  const adapter = _debateSessionDeps.getAgent(agentName, config2);
21695
21696
  if (adapter) {
21696
21697
  const synthesisSessionName = workdir !== undefined ? buildSessionName(workdir, featureName, storyId, "synthesis") : undefined;
21698
+ const resolverDebater = { agent: agentName, model: resolverConfig.model };
21699
+ const resolverTier = resolverConfig.model && MODEL_SHORTHAND_TIERS[resolverConfig.model.toLowerCase()] || modelTierFromDebater(resolverDebater);
21700
+ const resolverModelDef = resolveModelDefForDebater(resolverDebater, resolverTier, config2);
21697
21701
  const resolverResult = await synthesisResolver(proposalOutputs, critiqueOutputs, {
21698
21702
  adapter,
21699
21703
  promptSuffix,
21700
21704
  debaters,
21701
21705
  completeOptions: {
21702
- model: resolveDebaterModel({ agent: agentName }, config2),
21706
+ model: resolverModelDef.model,
21707
+ modelTier: resolverTier,
21703
21708
  config: config2,
21704
21709
  storyId,
21705
21710
  featureName,
@@ -21720,12 +21725,16 @@ async function resolveOutcome(proposalOutputs, critiqueOutputs, stageConfig, con
21720
21725
  if (resolverConfig.type === "custom") {
21721
21726
  const agentName = resolverConfig.agent ?? RESOLVER_FALLBACK_AGENT;
21722
21727
  const judgeSessionName = workdir !== undefined ? buildSessionName(workdir, featureName, storyId, "judge") : undefined;
21728
+ const resolverDebater = { agent: agentName, model: resolverConfig.model };
21729
+ const resolverTier = resolverConfig.model && MODEL_SHORTHAND_TIERS[resolverConfig.model.toLowerCase()] || modelTierFromDebater(resolverDebater);
21730
+ const resolverModelDef = resolveModelDefForDebater(resolverDebater, resolverTier, config2);
21723
21731
  const resolverResult = await judgeResolver(proposalOutputs, critiqueOutputs, resolverConfig, {
21724
21732
  getAgent: (name) => _debateSessionDeps.getAgent(name, config2),
21725
21733
  defaultAgentName: RESOLVER_FALLBACK_AGENT,
21726
21734
  debaters,
21727
21735
  completeOptions: {
21728
- model: resolveDebaterModel({ agent: agentName }, config2),
21736
+ model: resolverModelDef.model,
21737
+ modelTier: resolverTier,
21729
21738
  config: config2,
21730
21739
  storyId,
21731
21740
  featureName,
@@ -22719,7 +22728,8 @@ The spec above is the authoritative source for acceptance criteria.
22719
22728
  - If a debater proposed criteria beyond the spec (observable edge cases, error-path behaviors), place those in a separate \`suggestedCriteria\` array on the same story object. Each element of \`suggestedCriteria\` MUST be a plain string \u2014 never an object or structured value.
22720
22729
  - \`suggestedCriteria\` MUST contain only behavioral acceptance criteria \u2014 observable outputs, return values, state changes, or error conditions a test can assert. DO NOT include: implementation details (imports, internal structure), design suggestions ("consider X"), "not required" notes, or any criterion that cannot be expressed as a test assertion.
22721
22730
  - Never silently merge debater-invented criteria into \`acceptanceCriteria\`. The distinction matters: \`acceptanceCriteria\` drives automated testing; \`suggestedCriteria\` gates a hardening pass.
22722
- - Preserve the spec's AC wording. You may refine for clarity but must not change semantics.` : "";
22731
+ - Preserve the spec's AC wording. You may refine for clarity but must not change semantics.
22732
+ - Preserve each story's \`routing\` object unchanged \u2014 especially \`routing.complexity\` and \`routing.testStrategy\`. These are required by the schema and must not be dropped or modified during synthesis.` : "";
22723
22733
  const planSynthesisSuffix = `IMPORTANT: Your response must be a single valid JSON object in PRD format (with project, feature, branchName, userStories array, etc.). Do NOT wrap it in markdown fences. Output raw JSON only.${specAnchor}`;
22724
22734
  const outcome = await resolveOutcome(proposalOutputs, critiqueOutputs, ctx.stageConfig, ctx.config, ctx.storyId, resolverTimeoutMs, opts.workdir, opts.feature, undefined, undefined, planSynthesisSuffix, successful.map((p) => p.debater));
22725
22735
  const winningOutput = outcome.output ?? successful[0].output;
@@ -36647,7 +36657,7 @@ var package_default;
36647
36657
  var init_package = __esm(() => {
36648
36658
  package_default = {
36649
36659
  name: "@nathapp/nax",
36650
- version: "0.61.0",
36660
+ version: "0.61.1",
36651
36661
  description: "AI Coding Agent Orchestrator \u2014 loops until done",
36652
36662
  type: "module",
36653
36663
  bin: {
@@ -36727,8 +36737,8 @@ var init_version = __esm(() => {
36727
36737
  NAX_VERSION = package_default.version;
36728
36738
  NAX_COMMIT = (() => {
36729
36739
  try {
36730
- if (/^[0-9a-f]{6,10}$/.test("de7efdbe"))
36731
- return "de7efdbe";
36740
+ if (/^[0-9a-f]{6,10}$/.test("a11d3b57"))
36741
+ return "a11d3b57";
36732
36742
  } catch {}
36733
36743
  try {
36734
36744
  const result = Bun.spawnSync(["git", "rev-parse", "--short", "HEAD"], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nathapp/nax",
3
- "version": "0.61.0",
3
+ "version": "0.61.1",
4
4
  "description": "AI Coding Agent Orchestrator — loops until done",
5
5
  "type": "module",
6
6
  "bin": {