Skip to content

Commit 90ed568

Browse files
authored
Merge pull request #1 from twilio-labs/fix-npx
fix npx
2 parents 74da2c4 + a03614b commit 90ed568

File tree

4 files changed

+143
-39
lines changed

4 files changed

+143
-39
lines changed

package-lock.json

Lines changed: 108 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"dist/"
1616
],
1717
"scripts": {
18-
"build": "tsc -p tsconfig.build.json && chmod +x dist/cli.js",
18+
"build": "tsc -p tsconfig.build.json && tsc-esm-fix --ext .js ./dist && chmod +x dist/cli.js",
1919
"cli:extract-metrics": "node --import tsx/esm src/cli.ts extract-metrics",
2020
"cli:generate-summary": "node --import tsx/esm src/cli.ts generate-summary",
2121
"dashboard": "node --watch --import tsx/esm dashboard/server.ts",
@@ -57,6 +57,7 @@
5757
"mocha": "^10.2.0",
5858
"sinon": "^15.0.2",
5959
"supertest": "^6.3.3",
60+
"tsc-esm-fix": "^3.1.2",
6061
"tsx": "^4.19.3",
6162
"typescript": "^5.3.3"
6263
}

src/cli.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1+
#!/usr/bin/env node
12
import { hideBin } from 'yargs/helpers';
23
import yargs from 'yargs/yargs';
34

45
import ExtractMetrics from './extract-metrics';
56
import GenerateSummary from './generate-summary';
6-
import logger from './utils/logger';
7+
import { logger } from './utils';
78

89
// Define the main CLI command structure
910
yargs(hideBin(process.argv))

src/metrics/summary-generator.ts

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import fs from 'fs';
1+
import { promises as fs } from 'fs';
22
import path from 'path';
33

44
import { logger } from '../utils';
@@ -61,7 +61,7 @@ class SummaryGenerator {
6161

6262
// Write the summary file
6363
const summaryPath = path.join(this.metricsDir, 'summary.json');
64-
fs.writeFileSync(summaryPath, JSON.stringify(uniqueMetrics, null, 2));
64+
await fs.writeFile(summaryPath, JSON.stringify(uniqueMetrics, null, 2));
6565

6666
this.printSummaryStatistics(uniqueMetrics);
6767

@@ -168,33 +168,31 @@ class SummaryGenerator {
168168
`Writing metric file for task ${metric.taskId} with ${metric.apiCalls ?? 0} API calls`,
169169
);
170170

171-
fs.writeFileSync(
172-
filePath,
173-
JSON.stringify(
174-
{
175-
mode: metric.mode,
176-
taskNumber: metric.taskId,
177-
directoryId: metric.directoryId ?? '',
178-
model: metric.model,
179-
startTime: metric.startTime,
180-
completed: true,
181-
apiCalls: metric.apiCalls ?? 0,
182-
interactions: metric.interactions ?? 0,
183-
tokensIn: metric.tokensIn ?? 0,
184-
tokensOut: metric.tokensOut ?? 0,
185-
totalTokens: metric.totalTokens ?? 0,
186-
cacheWrites: metric.cacheWrites ?? 0,
187-
cacheReads: metric.cacheReads ?? 0,
188-
conversationHistoryIndex: metric.conversationHistoryIndex ?? 0,
189-
cost: metric.cost ?? 0,
190-
success: metric.success ?? false,
191-
endTime: metric.endTime,
192-
duration: metric.duration,
193-
},
194-
null,
195-
2,
196-
),
171+
const payload = JSON.stringify(
172+
{
173+
mode: metric.mode,
174+
taskNumber: metric.taskId,
175+
directoryId: metric.directoryId ?? '',
176+
model: metric.model,
177+
startTime: metric.startTime,
178+
completed: true,
179+
apiCalls: metric.apiCalls ?? 0,
180+
interactions: metric.interactions ?? 0,
181+
tokensIn: metric.tokensIn ?? 0,
182+
tokensOut: metric.tokensOut ?? 0,
183+
totalTokens: metric.totalTokens ?? 0,
184+
cacheWrites: metric.cacheWrites ?? 0,
185+
cacheReads: metric.cacheReads ?? 0,
186+
conversationHistoryIndex: metric.conversationHistoryIndex ?? 0,
187+
cost: metric.cost ?? 0,
188+
success: metric.success ?? false,
189+
endTime: metric.endTime,
190+
duration: metric.duration,
191+
},
192+
null,
193+
2,
197194
);
195+
await fs.writeFile(filePath, payload);
198196

199197
successfulWrites.push(filename);
200198
} catch (error) {
@@ -230,7 +228,7 @@ class SummaryGenerator {
230228
const tasksDir = path.join(this.metricsDir, 'tasks');
231229
let files: string[];
232230
try {
233-
files = fs.readdirSync(tasksDir);
231+
files = await fs.readdir(tasksDir);
234232
} catch (error) {
235233
logger.error(
236234
`Failed to read tasks directory: ${(error as Error).message}`,
@@ -306,7 +304,7 @@ class SummaryGenerator {
306304
try {
307305
// Write the summary file
308306
const summaryPath = path.join(this.metricsDir, 'summary.json');
309-
fs.writeFileSync(summaryPath, JSON.stringify(allMetrics, null, 2));
307+
await fs.writeFile(summaryPath, JSON.stringify(allMetrics, null, 2));
310308

311309
this.printSummaryStatistics(allMetrics);
312310

@@ -341,7 +339,7 @@ class SummaryGenerator {
341339
const summaryPath = path.join(this.metricsDir, 'summary.json');
342340

343341
try {
344-
const content = fs.readFileSync(summaryPath, 'utf8');
342+
const content = await fs.readFile(summaryPath, 'utf8');
345343
existingMetrics = JSON.parse(content);
346344
} catch (error) {
347345
logger.warn(
@@ -403,7 +401,7 @@ class SummaryGenerator {
403401

404402
try {
405403
// Write the merged summary
406-
fs.writeFileSync(summaryPath, JSON.stringify(allMetrics, null, 2));
404+
await fs.writeFile(summaryPath, JSON.stringify(allMetrics, null, 2));
407405

408406
return SummaryResult.success(
409407
`Merged summary: updated ${updatedMetrics.length}, added ${addedMetrics.length} metrics`,
@@ -436,7 +434,7 @@ class SummaryGenerator {
436434

437435
try {
438436
const tasksDir = path.join(this.metricsDir, 'tasks');
439-
const files = fs.readdirSync(tasksDir);
437+
const files = await fs.readdir(tasksDir);
440438

441439
if (directoryId) {
442440
const specificPattern = new RegExp(

0 commit comments

Comments
 (0)