diff --git a/packages/markform/scripts/test-live-agent.ts b/packages/markform/scripts/test-live-agent.ts index f1447bb0..7e8e820f 100644 --- a/packages/markform/scripts/test-live-agent.ts +++ b/packages/markform/scripts/test-live-agent.ts @@ -34,6 +34,7 @@ import { parseForm } from '../src/engine/parse.js'; import { serializeSession } from '../src/engine/session.js'; import type { SessionTranscript, SessionTurn, Patch } from '../src/engine/coreTypes.js'; import { createMarkformTools, MarkformSessionStore } from '../src/integrations/vercelAiSdkTools.js'; +import { CLI_DEFAULT_MAX_RETRIES } from '../src/settings.js'; // Get the directory of this script const __filename = fileURLToPath(import.meta.url); @@ -352,6 +353,7 @@ If a field asks for specific format (email, date, etc.), use the correct format. prompt, tools: tools as unknown as Parameters[0]['tools'], maxSteps: 5, + maxRetries: CLI_DEFAULT_MAX_RETRIES, } as Parameters[0]); console.log(`Model response: ${result.text || '(tool calls only)'}`); diff --git a/packages/markform/src/cli/commands/fill.ts b/packages/markform/src/cli/commands/fill.ts index 0a232d5e..7f42dcc6 100644 --- a/packages/markform/src/cli/commands/fill.ts +++ b/packages/markform/src/cli/commands/fill.ts @@ -40,6 +40,7 @@ import { createLiveAgent, buildMockWireFormat } from '../../harness/liveAgent.js import { createMockAgent } from '../../harness/mockAgent.js'; import { fillForm } from '../../harness/programmaticFill.js'; import { + CLI_DEFAULT_MAX_RETRIES, DEFAULT_MAX_ISSUES_PER_TURN, DEFAULT_MAX_PATCHES_PER_TURN, DEFAULT_MAX_TURNS, @@ -159,6 +160,11 @@ export function registerFillCommand(program: Command): void { `Maximum issues shown per turn (default: ${DEFAULT_MAX_ISSUES_PER_TURN})`, String(DEFAULT_MAX_ISSUES_PER_TURN), ) + .option( + '--max-retries ', + `Maximum retries for transient API errors (default: ${CLI_DEFAULT_MAX_RETRIES})`, + String(CLI_DEFAULT_MAX_RETRIES), + ) .option('--max-fields ', 'Maximum unique fields per turn (applied before --max-issues)') .option('--max-groups ', 'Maximum unique groups per turn (applied before --max-issues)') .option( @@ -197,6 +203,7 @@ export function registerFillCommand(program: Command): void { maxTurns?: string; maxPatches?: string; maxIssues?: string; + maxRetries?: string; maxFields?: string; maxGroups?: string; roles?: string; @@ -388,6 +395,7 @@ export function registerFillCommand(program: Command): void { } // Run programmatic fill with parallel enabled + const maxRetries = parseInt(options.maxRetries!, 10); const result = await fillForm({ form, model: options.model!, @@ -395,6 +403,7 @@ export function registerFillCommand(program: Command): void { enableWebSearch: true, captureWireFormat: false, recordFill: true, + maxRetries, targetRoles, fillMode, maxTurnsTotal: options.maxTurns ? parseInt(options.maxTurns, 10) : undefined, @@ -641,6 +650,7 @@ export function registerFillCommand(program: Command): void { systemPromptAddition: systemPrompt, targetRole, enableWebSearch: true, + maxRetries: parseInt(options.maxRetries!, 10), callbacks, }); agent = liveAgent; diff --git a/packages/markform/src/cli/commands/research.ts b/packages/markform/src/cli/commands/research.ts index e398fdc2..633ba4b1 100644 --- a/packages/markform/src/cli/commands/research.ts +++ b/packages/markform/src/cli/commands/research.ts @@ -22,6 +22,7 @@ import { } from '../../llms.js'; import { AGENT_ROLE, + CLI_DEFAULT_MAX_RETRIES, DEFAULT_MAX_TURNS, DEFAULT_RESEARCH_MAX_ISSUES_PER_TURN, DEFAULT_RESEARCH_MAX_PATCHES_PER_TURN, @@ -78,6 +79,11 @@ export function registerResearchCommand(program: Command): void { `Maximum issues per turn (default: ${DEFAULT_RESEARCH_MAX_ISSUES_PER_TURN})`, String(DEFAULT_RESEARCH_MAX_ISSUES_PER_TURN), ) + .option( + '--max-retries ', + `Maximum retries for transient API errors (default: ${CLI_DEFAULT_MAX_RETRIES})`, + String(CLI_DEFAULT_MAX_RETRIES), + ) .option('--transcript', 'Save session transcript') .action(async (input: string, options: Record, cmd: Command) => { const ctx = getCommandContext(cmd); @@ -158,6 +164,7 @@ export function registerResearchCommand(program: Command): void { const maxTurns = parseInt(options.maxTurns as string, 10); const maxPatchesPerTurn = parseInt(options.maxPatches as string, 10); const maxIssuesPerTurn = parseInt(options.maxIssues as string, 10); + const maxRetries = parseInt(options.maxRetries as string, 10); // Log research start logInfo(ctx, `Research fill with model: ${modelId}`); @@ -184,6 +191,7 @@ export function registerResearchCommand(program: Command): void { enableWebSearch: true, captureWireFormat: false, recordFill: false, + maxRetries, maxTurnsTotal: maxTurns, maxPatchesPerTurn, maxIssuesPerTurn, diff --git a/packages/markform/src/cli/commands/run.ts b/packages/markform/src/cli/commands/run.ts index 1aa089d8..4a8e7ecb 100644 --- a/packages/markform/src/cli/commands/run.ts +++ b/packages/markform/src/cli/commands/run.ts @@ -25,6 +25,7 @@ import { AGENT_ROLE, USER_ROLE, MAX_FORMS_IN_MENU, + CLI_DEFAULT_MAX_RETRIES, DEFAULT_MAX_TURNS, DEFAULT_MAX_PATCHES_PER_TURN, DEFAULT_MAX_ISSUES_PER_TURN, @@ -243,6 +244,7 @@ async function runAgentFillWorkflow( maxTurnsTotal: maxTurns, maxPatchesPerTurn, maxIssuesPerTurn, + maxRetries: CLI_DEFAULT_MAX_RETRIES, targetRoles: [AGENT_ROLE], fillMode: overwrite ? 'overwrite' : 'continue', enableWebSearch: isResearch, diff --git a/packages/markform/src/harness/harnessTypes.ts b/packages/markform/src/harness/harnessTypes.ts index db625ce3..952b824c 100644 --- a/packages/markform/src/harness/harnessTypes.ts +++ b/packages/markform/src/harness/harnessTypes.ts @@ -191,9 +191,11 @@ export interface LiveAgentConfig { * Uses the Vercel AI SDK's built-in exponential backoff with jitter. * Set to 0 to disable retries (useful for fast tests). * - * @default 3 + * **Required** — must be set explicitly. + * The Vercel AI SDK's own default is 2. Common values: 0 (no retries / tests), + * 2–3 (production). */ - maxRetries?: number; + maxRetries: number; /** * AbortSignal for cancelling in-flight LLM calls. @@ -549,9 +551,11 @@ export interface FillOptions { * Set to 0 to disable AI SDK retries and handle retries externally * (recommended for production harnesses that need full control over retry behavior). * - * @default 3 (DEFAULT_MAX_RETRIES from settings.ts) + * **Required** — must be set explicitly. + * The Vercel AI SDK's own default is 2. Common values: 0 (no retries / tests), + * 2–3 (production). */ - maxRetries?: number; + maxRetries: number; } /** diff --git a/packages/markform/src/harness/liveAgent.ts b/packages/markform/src/harness/liveAgent.ts index d7f7cd1c..19da2989 100644 --- a/packages/markform/src/harness/liveAgent.ts +++ b/packages/markform/src/harness/liveAgent.ts @@ -24,12 +24,7 @@ import type { } from '../engine/coreTypes.js'; import { PatchSchema } from '../engine/coreTypes.js'; import { serializeForm } from '../engine/serialize.js'; -import { - DEFAULT_ROLE_INSTRUCTIONS, - AGENT_ROLE, - DEFAULT_MAX_STEPS_PER_TURN, - DEFAULT_MAX_RETRIES, -} from '../settings.js'; +import { DEFAULT_ROLE_INSTRUCTIONS, AGENT_ROLE, DEFAULT_MAX_STEPS_PER_TURN } from '../settings.js'; import { getWebSearchConfig } from '../llms.js'; import { wrapApiError } from '../errors.js'; import type { @@ -85,7 +80,7 @@ export class LiveAgent implements Agent { this.additionalTools = config.additionalTools ?? {}; this.callbacks = config.callbacks; this.executionId = config.executionId ?? '0-serial'; - this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES; + this.maxRetries = config.maxRetries; this.signal = config.signal; // TODO: Make toolChoice configurable per-model or per-form in the future. // For now, 'required' is always safe since Markform agents must use tools. diff --git a/packages/markform/src/harness/programmaticFill.ts b/packages/markform/src/harness/programmaticFill.ts index 3de4e3d3..73d61382 100644 --- a/packages/markform/src/harness/programmaticFill.ts +++ b/packages/markform/src/harness/programmaticFill.ts @@ -583,7 +583,7 @@ export async function fillForm(options: FillOptions): Promise { maxStepsPerTurn: options.maxStepsPerTurn, toolChoice: options.toolChoice, signal: options.signal, - ...(options.maxRetries !== undefined && { maxRetries: options.maxRetries }), + maxRetries: options.maxRetries, }); // 7. Run harness loop @@ -901,7 +901,7 @@ async function fillFormParallel( executionId, toolChoice: options.toolChoice, signal: options.signal, - ...(options.maxRetries !== undefined && { maxRetries: options.maxRetries }), + maxRetries: options.maxRetries, }) ); }; diff --git a/packages/markform/src/research/runResearch.ts b/packages/markform/src/research/runResearch.ts index 0ac67c49..b3cbb856 100644 --- a/packages/markform/src/research/runResearch.ts +++ b/packages/markform/src/research/runResearch.ts @@ -79,6 +79,7 @@ export async function runResearch( targetRole: config.targetRoles?.[0] ?? AGENT_ROLE, enableWebSearch: options.enableWebSearch, additionalTools: options.additionalTools, + maxRetries: options.maxRetries, }); // Get available tools for logging diff --git a/packages/markform/src/settings.ts b/packages/markform/src/settings.ts index d2dcff69..a894c3b4 100644 --- a/packages/markform/src/settings.ts +++ b/packages/markform/src/settings.ts @@ -223,13 +223,6 @@ export const DEFAULT_MAX_ISSUES_PER_TURN = 10; */ export const DEFAULT_MAX_PARALLEL_AGENTS = 4; -/** - * Default maximum AI SDK retries for transient API errors (429, 503, etc.). - * The Vercel AI SDK handles retry with exponential backoff automatically. - * Set to 0 to disable retries (useful for fast tests). - */ -export const DEFAULT_MAX_RETRIES = 3; - /** * Default maximum AI SDK steps (tool call rounds) per harness turn. * Matches AI SDK's ToolLoopAgent default of 20. @@ -237,6 +230,16 @@ export const DEFAULT_MAX_RETRIES = 3; */ export const DEFAULT_MAX_STEPS_PER_TURN = 20; +/** + * Default maximum retries for transient API errors in CLI commands. + * + * This is the single source of truth for the CLI retry default. + * The Vercel AI SDK's own default is 2; we use 3 for slightly more resilience + * in CLI usage. The TypeScript API (`FillOptions`, `LiveAgentConfig`) has no + * default — callers must provide `maxRetries` explicitly. + */ +export const CLI_DEFAULT_MAX_RETRIES = 3; + // ============================================================================= // Research Defaults // ============================================================================= diff --git a/packages/markform/tests/integration/programmaticFill.test.ts b/packages/markform/tests/integration/programmaticFill.test.ts index 8d35d30d..ec96c3c0 100644 --- a/packages/markform/tests/integration/programmaticFill.test.ts +++ b/packages/markform/tests/integration/programmaticFill.test.ts @@ -47,6 +47,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -98,6 +99,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -142,6 +144,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -183,6 +186,7 @@ describe('programmatic fill API - integration tests', () => { form: 'not a valid markform document', model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -201,6 +205,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'nonexistent/provider-model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -222,6 +227,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -259,6 +265,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -316,6 +323,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -371,6 +379,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -407,6 +416,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -445,6 +455,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -496,6 +507,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -539,6 +551,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -584,6 +597,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -625,6 +639,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -671,6 +686,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -719,6 +735,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -771,6 +788,7 @@ describe('programmatic fill API - integration tests', () => { form: emptyForm, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { @@ -907,6 +925,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, enableParallel: true, recordFill: true, @@ -946,6 +965,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, enableParallel: true, recordFill: true, @@ -992,6 +1012,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, enableParallel: true, recordFill: true, @@ -1027,6 +1048,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, enableParallel: true, recordFill: true, diff --git a/packages/markform/tests/integration/sessionReplay.test.ts b/packages/markform/tests/integration/sessionReplay.test.ts index 81f23442..386527fb 100644 --- a/packages/markform/tests/integration/sessionReplay.test.ts +++ b/packages/markform/tests/integration/sessionReplay.test.ts @@ -107,6 +107,7 @@ describe('Session Replay Integration', () => { form: formContent, model: mockModel, enableWebSearch: false, + maxRetries: 0, maxTurnsTotal: session.turns.length, maxPatchesPerTurn: 20, maxIssuesPerTurn: 20, diff --git a/packages/markform/tests/unit/harness/liveAgent.test.ts b/packages/markform/tests/unit/harness/liveAgent.test.ts index 20da09c3..ec3f2dd0 100644 --- a/packages/markform/tests/unit/harness/liveAgent.test.ts +++ b/packages/markform/tests/unit/harness/liveAgent.test.ts @@ -54,6 +54,7 @@ describe('LiveAgent', () => { const config: LiveAgentConfig = { model: mockModel as any, enableWebSearch: false, + maxRetries: 0, }; const agent = createLiveAgent(config); @@ -66,6 +67,7 @@ describe('LiveAgent', () => { const config: LiveAgentConfig = { model: mockModel as any, enableWebSearch: false, + maxRetries: 0, additionalTools: { custom_search: mockCustomTool, lookup_data: mockCustomTool, @@ -85,6 +87,7 @@ describe('LiveAgent', () => { const config: LiveAgentConfig = { model: mockModel as any, enableWebSearch: false, + maxRetries: 0, additionalTools: { web_search: mockCustomTool, // Custom tool with same name }, @@ -104,6 +107,7 @@ describe('LiveAgent', () => { const config: LiveAgentConfig = { model: mockModel as any, enableWebSearch: false, + maxRetries: 0, }; const agent = createLiveAgent(config); @@ -116,6 +120,7 @@ describe('LiveAgent', () => { const config: LiveAgentConfig = { model: mockModel as any, enableWebSearch: false, + maxRetries: 0, additionalTools: {}, }; const agent = createLiveAgent(config); @@ -129,6 +134,7 @@ describe('LiveAgent', () => { const config: LiveAgentConfig = { model: mockModel as any, enableWebSearch: false, + maxRetries: 0, }; const agent = createLiveAgent(config); @@ -161,10 +167,22 @@ describe('LiveAgent', () => { }); }); -describe('DEFAULT_MAX_RETRIES', () => { - it('is 3 per retry/backoff policy', async () => { - const { DEFAULT_MAX_RETRIES } = await import('../../../src/settings.js'); - expect(DEFAULT_MAX_RETRIES).toBe(3); +describe('maxRetries is required (no default)', () => { + it('maxRetries is a required field on LiveAgentConfig', () => { + // Verify that maxRetries is required by checking the type system enforces it. + // This test documents the intentional removal of DEFAULT_MAX_RETRIES. + const config: LiveAgentConfig = { + model: mockModel as any, + enableWebSearch: false, + maxRetries: 0, + }; + const agent = createLiveAgent(config); + expect(agent).toBeDefined(); + }); + + it('CLI_DEFAULT_MAX_RETRIES is the single source for CLI retry default', async () => { + const { CLI_DEFAULT_MAX_RETRIES } = await import('../../../src/settings.js'); + expect(CLI_DEFAULT_MAX_RETRIES).toBe(3); }); }); diff --git a/packages/markform/tests/unit/harness/programmaticFill.test.ts b/packages/markform/tests/unit/harness/programmaticFill.test.ts index 174db57e..3c652296 100644 --- a/packages/markform/tests/unit/harness/programmaticFill.test.ts +++ b/packages/markform/tests/unit/harness/programmaticFill.test.ts @@ -76,6 +76,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', // ignored when _testAgent provided enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, // Pre-fill user field @@ -96,6 +97,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, @@ -114,6 +116,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, @@ -134,6 +137,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, @@ -153,6 +157,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, @@ -173,6 +178,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'Pre-filled Name' }, @@ -192,6 +198,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { nonexistent: 'value' }, @@ -213,6 +220,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: { complex: 'object' } }, @@ -234,6 +242,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { @@ -261,6 +270,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -287,6 +297,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -312,6 +323,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -339,6 +351,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -365,6 +378,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -395,6 +409,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -419,6 +434,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -442,6 +458,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -466,6 +483,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'Pre-filled' }, @@ -498,6 +516,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -535,6 +554,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, maxTurnsTotal: 2, @@ -559,6 +579,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, maxTurnsTotal: 1, @@ -577,6 +598,7 @@ describe('fillForm', () => { form: 'not a valid form', model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -595,6 +617,7 @@ describe('fillForm', () => { form: SIMPLE_FORM, model: 'invalid/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -620,6 +643,7 @@ describe('fillForm', () => { }, }, enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -654,6 +678,7 @@ Original Name form: formWithName, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, fillMode: 'continue', @@ -677,6 +702,7 @@ Original Name form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, @@ -706,6 +732,7 @@ Original Name form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, @@ -725,6 +752,7 @@ Original Name form: r1.markdown, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, targetRoles: ['user', 'agent'], @@ -749,6 +777,7 @@ Original Name form: COMPLETED_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, targetRoles: ['user', 'agent'], @@ -771,6 +800,7 @@ Original Name form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John Doe' }, @@ -887,6 +917,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: true, @@ -909,6 +940,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: false, @@ -930,6 +962,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: true, @@ -950,6 +983,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: false, @@ -961,6 +995,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: true, @@ -989,6 +1024,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: true, @@ -1014,6 +1050,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: true, @@ -1039,6 +1076,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: true, @@ -1067,6 +1105,7 @@ Strong company form: PARALLEL_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, enableParallel: true, @@ -1105,6 +1144,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, // Enable fill record inputContext: { name: 'John' }, @@ -1146,6 +1186,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { name: 'John' }, @@ -1175,6 +1216,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { name: 'John' }, @@ -1204,6 +1246,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, maxTurnsTotal: 2, @@ -1238,6 +1281,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { name: 'John' }, @@ -1273,6 +1317,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1300,6 +1345,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1332,6 +1378,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, inputContext: { name: 'John' }, @@ -1367,6 +1414,7 @@ Strong company inputContext: { name: 'John Doe' }, targetRoles: ['user', 'agent'], enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, }); @@ -1378,6 +1426,7 @@ Strong company form: SIMPLE_FORM, model: 'unknown/test-model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -1399,6 +1448,7 @@ Strong company inputContext: { name: 'John Doe' }, targetRoles: ['user', 'agent'], enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -1421,6 +1471,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1450,6 +1501,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1470,6 +1522,7 @@ Strong company form: 'not valid markform content {{{{', model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, }); @@ -1501,6 +1554,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1531,6 +1585,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1559,6 +1614,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1599,6 +1655,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: false, inputContext: { name: 'John' }, @@ -1629,6 +1686,7 @@ Strong company form: SIMPLE_FORM, model: 'mock/model', enableWebSearch: false, + maxRetries: 0, captureWireFormat: false, recordFill: true, // This triggers mergeCallbacks inputContext: { name: 'John' }, @@ -1727,6 +1785,7 @@ markform: }, }, enableWebSearch: true, + maxRetries: 0, enableParallel: true, captureWireFormat: false, recordFill: false, @@ -1783,6 +1842,7 @@ markform: }, }, enableWebSearch: true, + maxRetries: 0, enableParallel: false, captureWireFormat: false, recordFill: false,