From 8fe91b2d6e28bf61f3e39e7b7cc8e80feff84fb7 Mon Sep 17 00:00:00 2001 From: aiirvizionz Date: Sun, 9 Aug 2026 16:11:41 -0600 Subject: [PATCH] fix scale instance ID precision --- packages/cli/src/commands/scale.test.ts | 7 +++++++ packages/cli/src/commands/scale.ts | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/cli/src/commands/scale.test.ts b/packages/cli/src/commands/scale.test.ts index ba208d44..2d689d46 100644 --- a/packages/cli/src/commands/scale.test.ts +++ b/packages/cli/src/commands/scale.test.ts @@ -58,6 +58,13 @@ describe('getNextId', () => { expect(getNextId(instances)).toBe('inst-0100'); }); + it('increments ids beyond the safe integer range without collisions', () => { + const instances: FleetEntry[] = [ + { id: 'inst-9007199254740992', provider: 'aws', status: 'running', createdAt: '', hourlyRate: 0.096 }, + ]; + expect(getNextId(instances)).toBe('inst-9007199254740993'); + }); + it('ignores ids that do not match the inst- pattern', () => { const instances: FleetEntry[] = [ { id: 'custom-id', provider: 'aws', status: 'running', createdAt: '', hourlyRate: 0.096 }, diff --git a/packages/cli/src/commands/scale.ts b/packages/cli/src/commands/scale.ts index c57cc9f7..219adb7c 100644 --- a/packages/cli/src/commands/scale.ts +++ b/packages/cli/src/commands/scale.ts @@ -116,9 +116,9 @@ export function getNextId(instances: FleetEntry[]): string { const nums = instances .map((i) => /^inst-(\d+)$/.exec(i.id)?.[1]) .filter((value): value is string => value !== undefined) - .map((value) => Number.parseInt(value, 10)); - const max = nums.length > 0 ? Math.max(...nums) : 0; - return `inst-${String(max + 1).padStart(4, '0')}`; + .map((value) => BigInt(value)); + const max = nums.reduce((highest, value) => value > highest ? value : highest, 0n); + return `inst-${String(max + 1n).padStart(4, '0')}`; } export function parsePositiveInteger(value: string): number {