@telnyx/voice-agent-tester 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,8 +46,8 @@ jobs:
46
46
 
47
47
  - name: Setup Git user
48
48
  run: |
49
- git config user.name TelnyxIntegrations
50
- git config user.email integrations@telnyx.com
49
+ git config user.name "github-actions[bot]"
50
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
51
51
 
52
52
  - name: Use Node.js 20.x
53
53
  uses: actions/setup-node@v4
@@ -64,9 +64,44 @@ jobs:
64
64
  env:
65
65
  CI: true
66
66
 
67
- - name: Create draft release
67
+ - name: Determine next version
68
+ id: version
68
69
  run: |
69
- npx release-it --ci --github.draft --no-npm.publish${{ env.INCREMENT_ARG }}${{ env.PRERELEASE_ARGS }}
70
+ NEXT=$(npx release-it --ci --release-version${{ env.INCREMENT_ARG }}${{ env.PRERELEASE_ARGS }} 2>/dev/null)
71
+ echo "next=$NEXT" >> "$GITHUB_OUTPUT"
72
+ echo "branch=release/v$NEXT" >> "$GITHUB_OUTPUT"
73
+ env:
74
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75
+
76
+ - name: Create release branch
77
+ run: |
78
+ git checkout -b "${{ steps.version.outputs.branch }}"
79
+
80
+ - name: Create draft release on branch
81
+ run: |
82
+ npx release-it --ci --github.draft --no-npm.publish --no-git.push --no-git.requireUpstream${{ env.INCREMENT_ARG }}${{ env.PRERELEASE_ARGS }}
70
83
  env:
71
84
  NPM_TOKEN: ${{ secrets.NPM_CI_TOKEN }}
72
85
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
86
+
87
+ - name: Push release branch
88
+ run: |
89
+ git push origin "${{ steps.version.outputs.branch }}"
90
+
91
+ - name: Create pull request
92
+ run: |
93
+ gh pr create \
94
+ --title "chore: release v${{ steps.version.outputs.next }}" \
95
+ --body "## Release v${{ steps.version.outputs.next }}
96
+
97
+ Automated release PR created by the draft-release workflow.
98
+
99
+ - Version bump in \`package.json\`
100
+ - Updated \`CHANGELOG.md\`
101
+ - Draft GitHub release created
102
+
103
+ **After merging**, publish the release from the [releases page](https://github.com/${{ github.repository }}/releases)." \
104
+ --base "${{ env.TARGET_REF }}" \
105
+ --head "${{ steps.version.outputs.branch }}"
106
+ env:
107
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -19,8 +19,8 @@ jobs:
19
19
 
20
20
  - name: Setup Git user
21
21
  run: |
22
- git config user.name TelnyxIntegrations
23
- git config user.email integrations@telnyx.com
22
+ git config user.name "github-actions[bot]"
23
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
24
24
 
25
25
  - name: Use Node.js 20.x
26
26
  uses: actions/setup-node@v4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.1](https://github.com/team-telnyx/voice-agent-tester/compare/v0.4.0...v0.4.1) (2026-02-18)
4
+
5
+ ### Features
6
+
7
+ * require provider-specific params for comparison mode ([#10](https://github.com/team-telnyx/voice-agent-tester/issues/10)) ([db9eb27](https://github.com/team-telnyx/voice-agent-tester/commit/db9eb273c139374a9f6358126113cab92f8f5b32))
8
+ * use Qwen/Qwen3-235B-A22B as model for imported assistants ([#11](https://github.com/team-telnyx/voice-agent-tester/issues/11)) ([3c4ed0a](https://github.com/team-telnyx/voice-agent-tester/commit/3c4ed0a14498833544f1797426b234585adcb49b))
9
+
10
+ ### Bug Fixes
11
+
12
+ * add --no-git.requireUpstream to release-it in draft workflow ([#14](https://github.com/team-telnyx/voice-agent-tester/issues/14)) ([9553e65](https://github.com/team-telnyx/voice-agent-tester/commit/9553e65bdc6f0094853895da6b806befc5a898f6))
13
+ * use triggering user as git author and create PR for releases ([#13](https://github.com/team-telnyx/voice-agent-tester/issues/13)) ([8ebecba](https://github.com/team-telnyx/voice-agent-tester/commit/8ebecba1839985949e46bec457f327711f89138d))
14
+
3
15
  ## [0.4.0](https://github.com/team-telnyx/voice-agent-tester/compare/v0.3.0...v0.4.0) (2026-01-26)
4
16
 
5
17
  ### Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telnyx/voice-agent-tester",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "A command-line tool to test voice agents using Puppeteer",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
package/src/index.js CHANGED
@@ -87,6 +87,50 @@ function substituteUrlParams(url, params) {
87
87
  return result;
88
88
  }
89
89
 
90
+ /**
91
+ * Get the list of missing provider-specific parameters required for comparison mode.
92
+ * Each provider has its own set of required params for the direct widget benchmark.
93
+ *
94
+ * @param {Object} argv - Parsed CLI arguments
95
+ * @returns {Array<{key: string, flag: string, description: string}>} Missing params
96
+ */
97
+ function getCompareRequiredParams(argv) {
98
+ const missing = [];
99
+
100
+ switch (argv.provider) {
101
+ case 'vapi':
102
+ if (!argv.shareKey) {
103
+ missing.push({ key: 'shareKey', flag: '--share-key', description: 'Vapi share key' });
104
+ }
105
+ break;
106
+ case 'elevenlabs':
107
+ if (!argv.branchId) {
108
+ missing.push({ key: 'branchId', flag: '--branch-id', description: 'ElevenLabs branch ID' });
109
+ }
110
+ break;
111
+ // retell and others: no extra params needed yet
112
+ }
113
+
114
+ return missing;
115
+ }
116
+
117
+ /**
118
+ * Get provider-specific template parameters for comparison mode URL/HTML substitution.
119
+ *
120
+ * @param {Object} argv - Parsed CLI arguments
121
+ * @returns {Object} Template params to merge into provider params
122
+ */
123
+ function getCompareTemplateParams(argv) {
124
+ switch (argv.provider) {
125
+ case 'vapi':
126
+ return { shareKey: argv.shareKey };
127
+ case 'elevenlabs':
128
+ return { branchId: argv.branchId };
129
+ default:
130
+ return {};
131
+ }
132
+ }
133
+
90
134
  // Helper function to load and validate application config
91
135
  function loadApplicationConfig(configPath, params = {}) {
92
136
  const configFile = fs.readFileSync(configPath, 'utf8');
@@ -235,6 +279,14 @@ const argv = yargs(hideBin(process.argv))
235
279
  type: 'string',
236
280
  description: 'Provider assistant/agent ID to import (required with --provider)'
237
281
  })
282
+ .option('share-key', {
283
+ type: 'string',
284
+ description: 'Vapi share key for direct widget testing (required for comparison mode with --provider vapi)'
285
+ })
286
+ .option('branch-id', {
287
+ type: 'string',
288
+ description: 'ElevenLabs branch ID for direct widget testing (required for comparison mode with --provider elevenlabs)'
289
+ })
238
290
  .option('assistant-id', {
239
291
  type: 'string',
240
292
  description: 'Assistant/agent ID for direct benchmarking (works with all providers)'
@@ -456,8 +508,8 @@ async function main() {
456
508
  // Parse URL parameters for template substitution
457
509
  const params = parseParams(argv.params);
458
510
 
459
- // Determine if we should run comparison benchmark
460
- const shouldCompare = argv.provider && argv.compare && !argv.noCompare;
511
+ // Determine if we should run comparison benchmark (may be updated later if public key is missing)
512
+ let shouldCompare = argv.provider && argv.compare && !argv.noCompare;
461
513
 
462
514
  // Store credentials for potential comparison run
463
515
  let telnyxApiKey = argv.apiKey;
@@ -492,6 +544,29 @@ async function main() {
492
544
  }
493
545
  }
494
546
 
547
+ // Require provider-specific params when comparison mode is enabled
548
+ if (shouldCompare) {
549
+ const missingParams = getCompareRequiredParams(argv);
550
+ if (missingParams.length > 0) {
551
+ for (const param of missingParams) {
552
+ console.log(`\nšŸ”‘ ${param.description} is required for comparison mode`);
553
+ const inputVal = await promptUserInput(`Enter ${param.description} (or press Enter to skip comparison): `);
554
+ if (inputVal) {
555
+ argv[param.key] = inputVal;
556
+ } else {
557
+ console.warn(`āš ļø Missing ${param.flag}. Disabling comparison mode (--no-compare).`);
558
+ console.warn(` To run comparison benchmarks, pass ${param.flag} <value>\n`);
559
+ argv.compare = false;
560
+ argv.noCompare = true;
561
+ break;
562
+ }
563
+ }
564
+ }
565
+ }
566
+
567
+ // Re-evaluate shouldCompare after potential public key prompt
568
+ shouldCompare = argv.provider && argv.compare && !argv.noCompare;
569
+
495
570
  const importResult = await importAssistantsFromProvider({
496
571
  provider: argv.provider,
497
572
  providerApiKey: providerApiKey,
@@ -583,7 +658,7 @@ async function main() {
583
658
 
584
659
  // Phase 1: Provider Direct Benchmark
585
660
  // Load provider-specific application config with provider assistant ID
586
- const providerParams = { ...params, assistantId: providerImportId };
661
+ const providerParams = { ...params, assistantId: providerImportId, ...getCompareTemplateParams(argv) };
587
662
  const providerAppPath = path.resolve(__packageDir, 'applications', `${argv.provider}.yaml`);
588
663
 
589
664
  if (!fs.existsSync(providerAppPath)) {
@@ -200,7 +200,7 @@ async function configureImportedAssistant({ assistantId, assistantName, telnyxAp
200
200
  },
201
201
  body: JSON.stringify({
202
202
  name: newName,
203
- model: 'Qwen/Qwen3-235B-A22',
203
+ model: 'Qwen/Qwen3-235B-A22B',
204
204
  telephony_settings: {
205
205
  supports_unauthenticated_web_calls: true
206
206
  },