@roarkanalytics/sdk-mcp 3.3.0 → 3.4.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.
@@ -633,7 +633,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
633
633
  },
634
634
  http: {
635
635
  example:
636
- 'curl https://api.roark.ai/v1/simulation/run \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN" \\\n -d \'{\n "plan": {\n "agentEndpoints": [\n {\n "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"\n }\n ],\n "direction": "INBOUND",\n "maxSimulationDurationSeconds": 300,\n "metrics": [\n {}\n ],\n "description": "A run plan for testing inbound calls",\n "endCallPhrases": [\n "goodbye"\n ],\n "endCallReasons": [\n "Order has been confirmed by the agent"\n ],\n "executionMode": "PARALLEL",\n "iterationCount": 1,\n "maxConcurrentJobs": 5,\n "name": "Billing regression",\n "silenceTimeoutSeconds": 30\n }\n }\'',
636
+ 'curl https://api.roark.ai/v1/simulation/run \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN" \\\n -d \'{\n "plan": {\n "agentEndpoints": [\n {\n "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"\n }\n ],\n "direction": "INBOUND",\n "maxSimulationDurationSeconds": 300,\n "metrics": [\n {}\n ],\n "description": "A run plan for testing inbound calls",\n "endCallPhrases": [\n "goodbye"\n ],\n "endCallReasons": [\n "Order has been confirmed by the agent"\n ],\n "enrichWithLiveConversation": false,\n "executionMode": "PARALLEL",\n "iterationCount": 1,\n "maxConcurrentJobs": 5,\n "name": "Billing regression",\n "silenceTimeoutSeconds": 30\n }\n }\'',
637
637
  },
638
638
  },
639
639
  },
@@ -709,9 +709,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
709
709
  qualified: 'client.simulationRunPlan.list',
710
710
  params: ['after?: string;', 'agentId?: string;', 'limit?: number;', 'searchText?: string;'],
711
711
  response:
712
- "{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }",
712
+ "{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }",
713
713
  markdown:
714
- "## list\n\n`client.simulationRunPlan.list(after?: string, agentId?: string, limit?: number, searchText?: string): { data: object[]; pagination: object; }`\n\n**get** `/v1/simulation/plan`\n\nReturns a paginated list of simulation run plans. Optionally filter by search text or agent ID.\n\n### Parameters\n\n- `after?: string`\n Cursor for pagination - use the nextCursor value from a previous response\n\n- `agentId?: string`\n Filter run plans by agent ID\n\n- `limit?: number`\n Maximum number of run plans to return (default: 20, max: 50)\n\n- `searchText?: string`\n Search text to filter run plans by name\n\n### Returns\n\n- `{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }`\n Paginated list of simulation run plans\n\n - `data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }[]`\n - `pagination: { hasMore: boolean; nextCursor: string; total: number; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst simulationRunPlans = await client.simulationRunPlan.list();\n\nconsole.log(simulationRunPlans);\n```",
714
+ "## list\n\n`client.simulationRunPlan.list(after?: string, agentId?: string, limit?: number, searchText?: string): { data: object[]; pagination: object; }`\n\n**get** `/v1/simulation/plan`\n\nReturns a paginated list of simulation run plans. Optionally filter by search text or agent ID.\n\n### Parameters\n\n- `after?: string`\n Cursor for pagination - use the nextCursor value from a previous response\n\n- `agentId?: string`\n Filter run plans by agent ID\n\n- `limit?: number`\n Maximum number of run plans to return (default: 20, max: 50)\n\n- `searchText?: string`\n Search text to filter run plans by name\n\n### Returns\n\n- `{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }`\n Paginated list of simulation run plans\n\n - `data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }[]`\n - `pagination: { hasMore: boolean; nextCursor: string; total: number; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst simulationRunPlans = await client.simulationRunPlan.list();\n\nconsole.log(simulationRunPlans);\n```",
715
715
  perLanguage: {
716
716
  typescript: {
717
717
  method: 'client.simulationRunPlan.list',
@@ -739,9 +739,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
739
739
  qualified: 'client.simulationRunPlan.getByID',
740
740
  params: ['planId: string;'],
741
741
  response:
742
- "{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }",
742
+ "{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }",
743
743
  markdown:
744
- "## getById\n\n`client.simulationRunPlan.getByID(planId: string): { data: object; }`\n\n**get** `/v1/simulation/plan/{planId}`\n\nReturns a specific simulation run plan by its ID.\n\n### Parameters\n\n- `planId: string`\n\n### Returns\n\n- `{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }`\n\n - `data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.simulationRunPlan.getByID('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(response);\n```",
744
+ "## getById\n\n`client.simulationRunPlan.getByID(planId: string): { data: object; }`\n\n**get** `/v1/simulation/plan/{planId}`\n\nReturns a specific simulation run plan by its ID.\n\n### Parameters\n\n- `planId: string`\n\n### Returns\n\n- `{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }`\n\n - `data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.simulationRunPlan.getByID('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(response);\n```",
745
745
  perLanguage: {
746
746
  typescript: {
747
747
  method: 'client.simulationRunPlan.getByID',
@@ -772,12 +772,13 @@ const EMBEDDED_METHODS: MethodEntry[] = [
772
772
  'agentEndpoints: { id: string; }[];',
773
773
  "direction: 'INBOUND' | 'OUTBOUND';",
774
774
  'maxSimulationDurationSeconds: number;',
775
- 'metrics: { id?: string; metricId?: string; slug?: string; }[];',
775
+ "metrics: { id?: string; conversationSource?: 'SIMULATED' | 'LIVE'; metricId?: string; slug?: string; }[];",
776
776
  'name: string;',
777
777
  'autoRun?: boolean;',
778
778
  'description?: string;',
779
779
  'endCallPhrases?: string[];',
780
780
  'endCallReasons?: string[];',
781
+ 'enrichWithLiveConversation?: boolean;',
781
782
  "executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';",
782
783
  "flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[];",
783
784
  'iterationCount?: number;',
@@ -787,9 +788,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
787
788
  'silenceTimeoutSeconds?: number;',
788
789
  ],
789
790
  response:
790
- "{ data: { runPlan: { id: string; agentEndpoints: object[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: object[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: object[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: object[]; name: string; personas: object[]; scenarios: object[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; runPlanJob?: { createdAt: string; simulationRunPlanId: string; simulationRunPlanJobId: string; status: string; }; }; }",
791
+ "{ data: { runPlan: { id: string; agentEndpoints: object[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: object[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: object[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: object[]; name: string; personas: object[]; scenarios: object[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; runPlanJob?: { createdAt: string; simulationRunPlanId: string; simulationRunPlanJobId: string; status: string; }; }; }",
791
792
  markdown:
792
- "## create\n\n`client.simulationRunPlan.create(agentEndpoints: { id: string; }[], direction: 'INBOUND' | 'OUTBOUND', maxSimulationDurationSeconds: number, metrics: { id?: string; metricId?: string; slug?: string; }[], name: string, autoRun?: boolean, description?: string, endCallPhrases?: string[], endCallReasons?: string[], executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT', flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[], iterationCount?: number, maxConcurrentJobs?: number, personas?: { id: string; }[], scenarios?: { id: string; variables?: object; }[], silenceTimeoutSeconds?: number): { data: object; }`\n\n**post** `/v1/simulation/plan`\n\nCreates a new simulation run plan.\n\nTo run a simulation, use POST /v1/simulation/run instead: it starts a run from a plan or\nfrom an inline configuration, and takes runtime variables. Create a plan here when you want\na reusable, named one to run later.\n\n### Parameters\n\n- `agentEndpoints: { id: string; }[]`\n Agent endpoints to include in this run plan\n\n- `direction: 'INBOUND' | 'OUTBOUND'`\n Direction of the simulation (INBOUND or OUTBOUND)\n\n- `maxSimulationDurationSeconds: number`\n Maximum duration in seconds for each simulation\n\n- `metrics: { id?: string; metricId?: string; slug?: string; }[]`\n Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`.\n\n- `name: string`\n Name of the run plan\n\n- `autoRun?: boolean`\n Deprecated: use POST /v1/simulation/run, which starts a run and accepts runtime `variables` as well. This flag runs the plan with only the values pinned on it.\n\n- `description?: string`\n Description of the run plan\n\n- `endCallPhrases?: string[]`\n Phrases that trigger end of call. Empty array disables the feature.\n\n- `endCallReasons?: string[]`\n Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.\n\n- `executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'`\n Execution mode (PARALLEL or SEQUENTIAL)\n\n- `flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]`\n Customer flows to include in this run plan. The same flow can appear more than once with a different persona override or different variables.\n\n- `iterationCount?: number`\n Number of iterations to run for each test case (1-10000)\n\n- `maxConcurrentJobs?: number`\n Maximum number of concurrent simulation jobs\n\n- `personas?: { id: string; }[]`\n Personas to include in this run plan. Required with `scenarios`; ignored with `flows`, where each variant carries its own persona.\n\n- `scenarios?: { id: string; variables?: object; }[]`\n Deprecated: use `flows` instead. Scenarios to include in this run plan. The same scenario ID can appear multiple times with different variables.\n\n- `silenceTimeoutSeconds?: number`\n Timeout in seconds for silence detection\n\n### Returns\n\n- `{ data: { runPlan: { id: string; agentEndpoints: object[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: object[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: object[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: object[]; name: string; personas: object[]; scenarios: object[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; runPlanJob?: { createdAt: string; simulationRunPlanId: string; simulationRunPlanJobId: string; status: string; }; }; }`\n\n - `data: { runPlan: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; runPlanJob?: { createdAt: string; simulationRunPlanId: string; simulationRunPlanJobId: string; status: string; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst simulationRunPlan = await client.simulationRunPlan.create({\n agentEndpoints: [{ id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' }],\n direction: 'INBOUND',\n maxSimulationDurationSeconds: 300,\n metrics: [{}],\n name: 'My Run Plan',\n});\n\nconsole.log(simulationRunPlan);\n```",
793
+ "## create\n\n`client.simulationRunPlan.create(agentEndpoints: { id: string; }[], direction: 'INBOUND' | 'OUTBOUND', maxSimulationDurationSeconds: number, metrics: { id?: string; conversationSource?: 'SIMULATED' | 'LIVE'; metricId?: string; slug?: string; }[], name: string, autoRun?: boolean, description?: string, endCallPhrases?: string[], endCallReasons?: string[], enrichWithLiveConversation?: boolean, executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT', flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[], iterationCount?: number, maxConcurrentJobs?: number, personas?: { id: string; }[], scenarios?: { id: string; variables?: object; }[], silenceTimeoutSeconds?: number): { data: object; }`\n\n**post** `/v1/simulation/plan`\n\nCreates a new simulation run plan.\n\nTo run a simulation, use POST /v1/simulation/run instead: it starts a run from a plan or\nfrom an inline configuration, and takes runtime variables. Create a plan here when you want\na reusable, named one to run later.\n\n### Parameters\n\n- `agentEndpoints: { id: string; }[]`\n Agent endpoints to include in this run plan\n\n- `direction: 'INBOUND' | 'OUTBOUND'`\n Direction of the simulation (INBOUND or OUTBOUND)\n\n- `maxSimulationDurationSeconds: number`\n Maximum duration in seconds for each simulation\n\n- `metrics: { id?: string; conversationSource?: 'SIMULATED' | 'LIVE'; metricId?: string; slug?: string; }[]`\n Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`.\n\n- `name: string`\n Name of the run plan\n\n- `autoRun?: boolean`\n Deprecated: use POST /v1/simulation/run, which starts a run and accepts runtime `variables` as well. This flag runs the plan with only the values pinned on it.\n\n- `description?: string`\n Description of the run plan\n\n- `endCallPhrases?: string[]`\n Phrases that trigger end of call. Empty array disables the feature.\n\n- `endCallReasons?: string[]`\n Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.\n\n- `enrichWithLiveConversation?: boolean`\n Merge the customer's own recording of the real call into each simulation, so metrics can be\nscored against the live leg as well as the simulated one. This is the API equivalent of the\ndashboard's live-enrichment toggle.\n\nWith this on, the run provisions a phone number and holds each call open for up to 15 minutes\nwaiting for a matching call to be posted to POST /v1/call. A call matches on the provisioned\nnumber (`roarkPhoneNumber` on the job) with a start time inside the simulation window. If\nnothing arrives, the simulation still completes and any `LIVE`-sourced metric produces no value.\n\nRequired by any metric whose `requiresLiveConversation` is true: without it that metric is\nsilently skipped.\n\n- `executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'`\n Execution mode (PARALLEL or SEQUENTIAL)\n\n- `flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]`\n Customer flows to include in this run plan. The same flow can appear more than once with a different persona override or different variables.\n\n- `iterationCount?: number`\n Number of iterations to run for each test case (1-10000)\n\n- `maxConcurrentJobs?: number`\n Maximum number of concurrent simulation jobs\n\n- `personas?: { id: string; }[]`\n Personas to include in this run plan. Required with `scenarios`; ignored with `flows`, where each variant carries its own persona.\n\n- `scenarios?: { id: string; variables?: object; }[]`\n Deprecated: use `flows` instead. Scenarios to include in this run plan. The same scenario ID can appear multiple times with different variables.\n\n- `silenceTimeoutSeconds?: number`\n Timeout in seconds for silence detection\n\n### Returns\n\n- `{ data: { runPlan: { id: string; agentEndpoints: object[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: object[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: object[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: object[]; name: string; personas: object[]; scenarios: object[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; runPlanJob?: { createdAt: string; simulationRunPlanId: string; simulationRunPlanJobId: string; status: string; }; }; }`\n\n - `data: { runPlan: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; runPlanJob?: { createdAt: string; simulationRunPlanId: string; simulationRunPlanJobId: string; status: string; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst simulationRunPlan = await client.simulationRunPlan.create({\n agentEndpoints: [{ id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' }],\n direction: 'INBOUND',\n maxSimulationDurationSeconds: 300,\n metrics: [{}],\n name: 'My Run Plan',\n});\n\nconsole.log(simulationRunPlan);\n```",
793
794
  perLanguage: {
794
795
  typescript: {
795
796
  method: 'client.simulationRunPlan.create',
@@ -803,7 +804,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
803
804
  },
804
805
  http: {
805
806
  example:
806
- 'curl https://api.roark.ai/v1/simulation/plan \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN" \\\n -d \'{\n "agentEndpoints": [\n {\n "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"\n }\n ],\n "direction": "INBOUND",\n "maxSimulationDurationSeconds": 300,\n "metrics": [\n {}\n ],\n "name": "My Run Plan",\n "autoRun": false,\n "description": "A run plan for testing inbound calls",\n "endCallPhrases": [\n "goodbye"\n ],\n "endCallReasons": [\n "Order has been confirmed by the agent"\n ],\n "executionMode": "PARALLEL",\n "iterationCount": 1,\n "maxConcurrentJobs": 5,\n "silenceTimeoutSeconds": 30\n }\'',
807
+ 'curl https://api.roark.ai/v1/simulation/plan \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN" \\\n -d \'{\n "agentEndpoints": [\n {\n "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"\n }\n ],\n "direction": "INBOUND",\n "maxSimulationDurationSeconds": 300,\n "metrics": [\n {}\n ],\n "name": "My Run Plan",\n "autoRun": false,\n "description": "A run plan for testing inbound calls",\n "endCallPhrases": [\n "goodbye"\n ],\n "endCallReasons": [\n "Order has been confirmed by the agent"\n ],\n "enrichWithLiveConversation": false,\n "executionMode": "PARALLEL",\n "iterationCount": 1,\n "maxConcurrentJobs": 5,\n "silenceTimeoutSeconds": 30\n }\'',
807
808
  },
808
809
  },
809
810
  },
@@ -822,22 +823,23 @@ const EMBEDDED_METHODS: MethodEntry[] = [
822
823
  "direction?: 'INBOUND' | 'OUTBOUND';",
823
824
  'endCallPhrases?: string[];',
824
825
  'endCallReasons?: string[];',
826
+ 'enrichWithLiveConversation?: boolean;',
825
827
  "executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT';",
826
828
  "flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[];",
827
829
  'isHidden?: boolean;',
828
830
  'iterationCount?: number;',
829
831
  'maxConcurrentJobs?: number;',
830
832
  'maxSimulationDurationSeconds?: number;',
831
- 'metrics?: { id?: string; metricId?: string; slug?: string; }[];',
833
+ "metrics?: { id?: string; conversationSource?: 'SIMULATED' | 'LIVE'; metricId?: string; slug?: string; }[];",
832
834
  'name?: string;',
833
835
  'personas?: { id: string; }[];',
834
836
  'scenarios?: { id: string; variables?: object; }[];',
835
837
  'silenceTimeoutSeconds?: number;',
836
838
  ],
837
839
  response:
838
- "{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }",
840
+ "{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }",
839
841
  markdown:
840
- "## update\n\n`client.simulationRunPlan.update(planId: string, agentEndpoints?: { id: string; }[], description?: string, direction?: 'INBOUND' | 'OUTBOUND', endCallPhrases?: string[], endCallReasons?: string[], executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT', flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[], isHidden?: boolean, iterationCount?: number, maxConcurrentJobs?: number, maxSimulationDurationSeconds?: number, metrics?: { id?: string; metricId?: string; slug?: string; }[], name?: string, personas?: { id: string; }[], scenarios?: { id: string; variables?: object; }[], silenceTimeoutSeconds?: number): { data: object; }`\n\n**put** `/v1/simulation/plan/{planId}`\n\nUpdates an existing simulation run plan by its ID.\n\n### Parameters\n\n- `planId: string`\n\n- `agentEndpoints?: { id: string; }[]`\n Agent endpoints to include in this run plan\n\n- `description?: string`\n Description of the run plan\n\n- `direction?: 'INBOUND' | 'OUTBOUND'`\n Direction of the simulation (INBOUND or OUTBOUND)\n\n- `endCallPhrases?: string[]`\n Phrases that trigger end of call. Empty array disables the feature.\n\n- `endCallReasons?: string[]`\n Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.\n\n- `executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'`\n Execution mode (PARALLEL or SEQUENTIAL)\n\n- `flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]`\n Replaces the customer flows attached to this run plan. Omit to leave them unchanged; send an empty array to detach them all.\n\n- `isHidden?: boolean`\n Whether this plan is hidden from GET /v1/simulation/plan.\n\nA run started without `saveAsPlan` creates a hidden plan to carry it. Send\n`{ \"name\": \"...\", \"isHidden\": false }` to keep that configuration as a reusable plan,\nwhich is what the app does when you save a one-off run.\n\n- `iterationCount?: number`\n Number of iterations to run for each test case (1-10000)\n\n- `maxConcurrentJobs?: number`\n Maximum number of concurrent simulation jobs\n\n- `maxSimulationDurationSeconds?: number`\n Maximum duration in seconds for each simulation\n\n- `metrics?: { id?: string; metricId?: string; slug?: string; }[]`\n Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`.\n\n- `name?: string`\n Name of the run plan\n\n- `personas?: { id: string; }[]`\n Personas to include in this run plan\n\n- `scenarios?: { id: string; variables?: object; }[]`\n Deprecated: use `flows` instead. Replaces the scenarios on this run plan. Omit to leave them unchanged; send an empty array to detach them all, which is how a scenario-based plan is moved over to flows.\n\n- `silenceTimeoutSeconds?: number`\n Timeout in seconds for silence detection\n\n### Returns\n\n- `{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }`\n\n - `data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst simulationRunPlan = await client.simulationRunPlan.update(\n '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(simulationRunPlan);\n```",
842
+ "## update\n\n`client.simulationRunPlan.update(planId: string, agentEndpoints?: { id: string; }[], description?: string, direction?: 'INBOUND' | 'OUTBOUND', endCallPhrases?: string[], endCallReasons?: string[], enrichWithLiveConversation?: boolean, executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT', flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[], isHidden?: boolean, iterationCount?: number, maxConcurrentJobs?: number, maxSimulationDurationSeconds?: number, metrics?: { id?: string; conversationSource?: 'SIMULATED' | 'LIVE'; metricId?: string; slug?: string; }[], name?: string, personas?: { id: string; }[], scenarios?: { id: string; variables?: object; }[], silenceTimeoutSeconds?: number): { data: object; }`\n\n**put** `/v1/simulation/plan/{planId}`\n\nUpdates an existing simulation run plan by its ID.\n\n### Parameters\n\n- `planId: string`\n\n- `agentEndpoints?: { id: string; }[]`\n Agent endpoints to include in this run plan\n\n- `description?: string`\n Description of the run plan\n\n- `direction?: 'INBOUND' | 'OUTBOUND'`\n Direction of the simulation (INBOUND or OUTBOUND)\n\n- `endCallPhrases?: string[]`\n Phrases that trigger end of call. Empty array disables the feature.\n\n- `endCallReasons?: string[]`\n Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.\n\n- `enrichWithLiveConversation?: boolean`\n Whether to merge the customer's own live recording into each simulation of this plan.\n\n- `executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'`\n Execution mode (PARALLEL or SEQUENTIAL)\n\n- `flows?: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]`\n Replaces the customer flows attached to this run plan. Omit to leave them unchanged; send an empty array to detach them all.\n\n- `isHidden?: boolean`\n Whether this plan is hidden from GET /v1/simulation/plan.\n\nA run started without `saveAsPlan` creates a hidden plan to carry it. Send\n`{ \"name\": \"...\", \"isHidden\": false }` to keep that configuration as a reusable plan,\nwhich is what the app does when you save a one-off run.\n\n- `iterationCount?: number`\n Number of iterations to run for each test case (1-10000)\n\n- `maxConcurrentJobs?: number`\n Maximum number of concurrent simulation jobs\n\n- `maxSimulationDurationSeconds?: number`\n Maximum duration in seconds for each simulation\n\n- `metrics?: { id?: string; conversationSource?: 'SIMULATED' | 'LIVE'; metricId?: string; slug?: string; }[]`\n Metric definitions to include in this run plan. Reference each by `id` (UUID) or `slug`.\n\n- `name?: string`\n Name of the run plan\n\n- `personas?: { id: string; }[]`\n Personas to include in this run plan\n\n- `scenarios?: { id: string; variables?: object; }[]`\n Deprecated: use `flows` instead. Replaces the scenarios on this run plan. Omit to leave them unchanged; send an empty array to detach them all, which is how a scenario-based plan is moved over to flows.\n\n- `silenceTimeoutSeconds?: number`\n Timeout in seconds for silence detection\n\n### Returns\n\n- `{ data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | object[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }; }`\n\n - `data: { id: string; agentEndpoints: { id: string; }[]; createdAt: string; direction: 'INBOUND' | 'OUTBOUND'; endCallPhrases: string[]; endCallReasons: string[]; enrichWithLiveConversation: boolean; evaluators: { id: string; }[]; executionMode: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; flows: { id: string; edgeCases?: 'ALL' | { id: string; personaOverrideId?: string; variables?: object; }[]; happyPath?: boolean; personaOverrideId?: string; variables?: object; }[]; iterationCount: number; maxConcurrentJobs: number; maxSimulationDurationSeconds: number; metrics: { id: string; conversationSource: 'SIMULATED' | 'LIVE'; }[]; name: string; personas: { id: string; }[]; scenarios: { id: string; variables?: object; }[]; silenceTimeoutSeconds: number; testCaseCount: number; updatedAt: string; description?: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst simulationRunPlan = await client.simulationRunPlan.update(\n '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(simulationRunPlan);\n```",
841
843
  perLanguage: {
842
844
  typescript: {
843
845
  method: 'client.simulationRunPlan.update',
@@ -1334,7 +1336,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1334
1336
  response:
1335
1337
  "{ data: { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; branchingMode: 'DETERMINISTIC' | 'ADAPTIVE'; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: object[]; title: string; type: 'SCRIPTED'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: object[]; title: string; type: 'SCRIPTED'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'SCRIPTED'; updatedAt: string; description?: string; graph?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'IMPROV'; updatedAt: string; description?: string; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'VOICEMAIL'; updatedAt: string; description?: string; }; }",
1336
1338
  markdown:
1337
- "## update\n\n`client.customerFlow.update(flowId: string, agentExpectations?: { prompt: string; }[], agentIds?: string[], branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE', description?: string, title?: string): { data: object; }`\n\n**put** `/v1/customer-flow/{flowId}`\n\nUpdates a flow's title, description, branching mode, linked agents or flow-level expectations. The step graph is replaced through PUT /graph.\n\n### Parameters\n\n- `flowId: string`\n\n- `agentExpectations?: { prompt: string; }[]`\n Replaces the flow-level expectations. Omit to leave them unchanged.\n\n- `agentIds?: string[]`\n Replaces the linked agents. Omit to leave them unchanged. An improv flow must keep at least one; a scripted flow can be left with none.\n\n- `branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'`\n Scripted flows only.\n\n- `description?: string`\n\n- `title?: string`\n\n### Returns\n\n- `{ data: { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; branchingMode: 'DETERMINISTIC' | 'ADAPTIVE'; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: object[]; title: string; type: 'SCRIPTED'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: object[]; title: string; type: 'SCRIPTED'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'SCRIPTED'; updatedAt: string; description?: string; graph?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'IMPROV'; updatedAt: string; description?: string; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'VOICEMAIL'; updatedAt: string; description?: string; }; }`\n\n - `data: { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; branchingMode: 'DETERMINISTIC' | 'ADAPTIVE'; createdAt: string; edgeCases: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; title: string; type: 'SCRIPTED'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; title: string; type: 'SCRIPTED'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'SCRIPTED'; updatedAt: string; description?: string; graph?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; }[]; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }[]; happyPath: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'IMPROV'; updatedAt: string; description?: string; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'VOICEMAIL'; updatedAt: string; description?: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst customerFlow = await client.customerFlow.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(customerFlow);\n```",
1339
+ "## update\n\n`client.customerFlow.update(flowId: string, agentExpectations?: { prompt: string; }[], agentIds?: string[], branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE', description?: string, title?: string): { data: object; }`\n\n**put** `/v1/customer-flow/{flowId}`\n\nUpdates a flow's title, description, branching mode, linked agents or flow-level expectations. The step graph is replaced through PUT /graph.\n\n### Parameters\n\n- `flowId: string`\n\n- `agentExpectations?: { prompt: string; }[]`\n Replaces the flow-level expectations. Omit to leave them unchanged.\n\n- `agentIds?: string[]`\n Replaces the linked agents. Omit to leave them unchanged. An improv flow must keep at least one; a scripted flow can be left with none.\n\n- `branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'`\n Scripted flows only. How a run walks the graph. DETERMINISTIC (\"Simulate every path\" in the app) places one call per variant, each following its path exactly whatever the agent says. ADAPTIVE (\"Adapt to your agent\") collapses the paths into one call PER PERSONA, on which the simulated customer picks a branch from what the agent actually said. Both modes speak the exact authored lines, and neither changes how metrics or expectations grade.\n\n- `description?: string`\n\n- `title?: string`\n\n### Returns\n\n- `{ data: { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; branchingMode: 'DETERMINISTIC' | 'ADAPTIVE'; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: object[]; title: string; type: 'SCRIPTED'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: object[]; title: string; type: 'SCRIPTED'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'SCRIPTED'; updatedAt: string; description?: string; graph?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'IMPROV'; updatedAt: string; description?: string; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: object[]; createdAt: string; environment: object; isGenerated: boolean; personaOverride: object; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'VOICEMAIL'; updatedAt: string; description?: string; }; }`\n\n - `data: { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; branchingMode: 'DETERMINISTIC' | 'ADAPTIVE'; createdAt: string; edgeCases: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; title: string; type: 'SCRIPTED'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; steps: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; title: string; type: 'SCRIPTED'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'SCRIPTED'; updatedAt: string; description?: string; graph?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: { type: 'AGENT_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_TURN'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_FIRST_MESSAGE'; content?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'CUSTOMER_SILENCE'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; silenceDurationSeconds?: number; steps?: object[]; } | { type: 'CUSTOMER_DTMF'; dtmfDigits?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'VOICEMAIL'; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; } | { type: 'SCENARIO_LINK'; linkedCustomerFlowId?: string; linkedCustomerFlowVariantId?: string; mergeIntoNodeIds?: string[]; nodeId?: string; ref?: string; steps?: object[]; }[]; }[]; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }[]; happyPath: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'IMPROV'; updatedAt: string; prompt?: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'IMPROV'; updatedAt: string; description?: string; } | { id: string; agentExpectations: { id: string; prompt: string; }[]; agents: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }[]; createdAt: string; edgeCases: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }[]; happyPath: { id: string; additionalExpectations: { id: string; prompt: string; }[]; createdAt: string; environment: { id: string; backgroundNoise: string; createdAt: string; name: string; updatedAt: string; description?: string; }; isGenerated: boolean; personaOverride: { id: string; accent: string; age: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise: string; baseEmotion: 'NEUTRAL' | 'CHEERFUL' | 'CONFUSED' | 'FRUSTRATED' | 'SKEPTICAL' | 'RUSHED' | 'DISTRACTED'; confirmationStyle: 'EXPLICIT' | 'VAGUE'; createdAt: string; gender: 'MALE' | 'FEMALE'; hasDisfluencies: boolean; idleMessageMaxSpokenCount: number; idleMessageResetCountOnUserSpeechEnabled: boolean; idleMessages: string[]; idleTimeoutSeconds: number; intentClarity: 'CLEAR' | 'INDIRECT' | 'VAGUE'; language: string; memoryReliability: 'HIGH' | 'LOW'; name: string; properties: object; responseTiming: 'RELAXED' | 'NORMAL' | 'QUICK'; speechClarity: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages: string[]; updatedAt: string; backstoryPrompt?: string; description?: string; secondaryLanguage?: 'EN'; }; precededByCustomerFlowId: string; precededByCustomerFlowVariantId: string; title: string; type: 'VOICEMAIL'; updatedAt: string; }; source: 'SYSTEM' | 'CUSTOM'; title: string; type: 'VOICEMAIL'; updatedAt: string; description?: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst customerFlow = await client.customerFlow.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(customerFlow);\n```",
1338
1340
  perLanguage: {
1339
1341
  typescript: {
1340
1342
  method: 'client.customerFlow.update',
package/src/server.ts CHANGED
@@ -28,7 +28,7 @@ export const newMcpServer = async ({
28
28
  new McpServer(
29
29
  {
30
30
  name: 'roarkanalytics_sdk_api',
31
- version: '3.3.0', // x-release-please-version
31
+ version: '3.4.0', // x-release-please-version
32
32
  },
33
33
  {
34
34
  instructions: await getInstructions({ stainlessApiKey, customInstructionsPath }),