From 07838d97d858efaeb1dfac543619c2f852b93682 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 13:58:45 -0300 Subject: [PATCH 01/20] feat: add --all flag to agent preview end (W-22203669) - Adds --all to end multiple preview sessions at once - When combined with --api-name or --authoring-bundle, ends only sessions for that specific agent; when used alone, ends all sessions in the project - Adds --no-prompt (-p) to skip the confirmation prompt shown by --all - Makes --target-org optional (no org needed for client-side session cleanup); raises a clear error when --api-name is used without --target-org - Restores inline previewSessionStore implementation (the @salesforce/agents shim was broken against the installed 1.1.1 version); adds getSessionDir and removeCacheById helpers needed by the --all code path - Adds 13 unit tests for the new end command behaviour Co-Authored-By: Claude Sonnet 4.6 --- command-snapshot.json | 14 +- messages/agent.preview.end.md | 36 +++- src/commands/agent/preview/end.ts | 154 ++++++++++++-- src/commands/agent/preview/sessions.ts | 16 +- src/commands/agent/preview/start.ts | 10 +- src/previewSessionStore.ts | 193 ++++++++++++++++-- test/commands/agent/preview/end.test.ts | 258 ++++++++++++++++++++++++ 7 files changed, 624 insertions(+), 57 deletions(-) create mode 100644 test/commands/agent/preview/end.test.ts diff --git a/command-snapshot.json b/command-snapshot.json index 050e1343..4a81a72e 100644 --- a/command-snapshot.json +++ b/command-snapshot.json @@ -107,8 +107,18 @@ "alias": [], "command": "agent:preview:end", "flagAliases": [], - "flagChars": ["n", "o"], - "flags": ["api-name", "api-version", "authoring-bundle", "flags-dir", "json", "session-id", "target-org"], + "flagChars": ["n", "o", "p"], + "flags": [ + "all", + "api-name", + "api-version", + "authoring-bundle", + "flags-dir", + "json", + "no-prompt", + "session-id", + "target-org" + ], "plugin": "@salesforce/plugin-agent" }, { diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index fc75cfe6..a09c1dfb 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -8,6 +8,8 @@ You must have previously started a programmatic agent preview session with the " The original "agent preview start" command outputs a session ID which you then use with the --session-id flag of this command to end the session. You don't have to specify the --session-id flag if an agent has only one active preview session. You must also use either the --authoring-bundle or --api-name flag to specify the API name of the authoring bundle or the published agent, respecitvely. To find either API name, navigate to your package directory in your DX project. The API name of an authoring bundle is the same as its directory name under the "aiAuthoringBundles" metadata directory. Similarly, the published agent's API name is the same as its directory name under the "Bots" metadata directory. +Use the --all flag to end all active preview sessions at once. You can combine --all with --api-name or --authoring-bundle to end only sessions for a specific agent, or use --all alone to end every session across all agents in the project. + # flags.session-id.summary Session ID outputted by "agent preview start". Not required when the agent has exactly one active session. Run "agent preview sessions" to see the list of all sessions. @@ -20,6 +22,14 @@ API name of the activated published agent you want to preview. API name of the authoring bundle metadata component that contains the agent's Agent Script file. +# flags.all.summary + +End all active preview sessions. If combined with --api-name or --authoring-bundle, only sessions for that agent are ended. + +# flags.no-prompt.summary + +Don't prompt for confirmation before ending sessions when using --all. + # error.noSession No agent preview session found. Run "sf agent preview start" to start a new agent preview session. @@ -40,13 +50,29 @@ Preview session '%s' is invalid or has expired. Failed to end preview session: %s +# error.missingTargetOrgForApiName + +The --target-org flag is required when using --api-name because a connection to the org is needed to locate the published agent. + # output.tracesPath Session traces: %s +# output.noSessionsFound + +No active preview sessions found. + +# output.endedAll + +Ended %s preview session(s). + +# prompt.confirmAll + +About to end %s preview session(s) across %s agent(s). Continue? + # examples -- End a preview session of a published agent by specifying its session ID and API name ; use the default org: +- End a preview session of a published agent by specifying its session ID and API name; use the default org: <%= config.bin %> <%= command.id %> --session-id --api-name My_Published_Agent @@ -57,3 +83,11 @@ Session traces: %s - End a preview session of an agent using its authoring bundle API name; you get an error if the agent has more than one active session. <%= config.bin %> <%= command.id %> --authoring-bundle My_Local_Agent + +- End all active preview sessions across all agents in the project (prompts for confirmation): + + <%= config.bin %> <%= command.id %> --all + +- End all active preview sessions for a specific agent without prompting: + + <%= config.bin %> <%= command.id %> --all --authoring-bundle My_Local_Agent --no-prompt diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index 4e801002..6f2757d8 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -14,19 +14,30 @@ * limitations under the License. */ -import { Flags, SfCommand, toHelpSection } from '@salesforce/sf-plugins-core'; +import { Flags, SfCommand, toHelpSection, prompts } from '@salesforce/sf-plugins-core'; import { Messages, SfError, Lifecycle, EnvironmentVariable } from '@salesforce/core'; import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; -import { getCachedSessionIds, removeCache, validatePreviewSession } from '../../../previewSessionStore.js'; +import type { Connection } from '@salesforce/core'; +import { + getCachedSessionIds, + getSessionDir, + listCachedSessions, + removeCache, + removeCacheById, + validatePreviewSession, +} from '../../../previewSessionStore.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.end'); -export type AgentPreviewEndResult = { +export type EndedSession = { + agentId: string; sessionId: string; tracesPath: string; }; +export type AgentPreviewEndResult = { ended: EndedSession[] } | EndedSession; + export default class AgentPreviewEnd extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); @@ -40,47 +51,57 @@ export default class AgentPreviewEnd extends SfCommand { public static readonly errorCodes = toHelpSection('ERROR CODES', { 'Succeeded (0)': 'Preview session ended successfully and traces saved.', + 'MissingTargetOrgForApiName (1)': 'The --target-org flag is required when --api-name is used.', 'NotFound (2)': 'Agent not found, or no preview session exists for this agent.', 'PreviewEndFailed (4)': 'Failed to end the preview session.', 'SessionAmbiguous (5)': 'Multiple preview sessions found; specify --session-id to choose one.', }); public static readonly flags = { - 'target-org': Flags.requiredOrg(), + 'target-org': Flags.optionalOrg(), 'api-version': Flags.orgApiVersion(), 'session-id': Flags.string({ summary: messages.getMessage('flags.session-id.summary'), required: false, + exclusive: ['all'], }), 'api-name': Flags.string({ summary: messages.getMessage('flags.api-name.summary'), char: 'n', - exactlyOne: ['api-name', 'authoring-bundle'], + exclusive: ['authoring-bundle'], + atLeastOne: ['api-name', 'authoring-bundle', 'all'], }), 'authoring-bundle': Flags.string({ summary: messages.getMessage('flags.authoring-bundle.summary'), - exactlyOne: ['api-name', 'authoring-bundle'], + exclusive: ['api-name'], + atLeastOne: ['api-name', 'authoring-bundle', 'all'], + }), + all: Flags.boolean({ + summary: messages.getMessage('flags.all.summary'), + exclusive: ['session-id'], + atLeastOne: ['api-name', 'authoring-bundle', 'all'], + }), + 'no-prompt': Flags.boolean({ + summary: messages.getMessage('flags.no-prompt.summary'), + char: 'p', }), }; public async run(): Promise { const { flags } = await this.parse(AgentPreviewEnd); - const conn = flags['target-org'].getConnection(flags['api-version']); - const agentIdentifier = flags['authoring-bundle'] ?? flags['api-name']!; - // Initialize agent with error tracking - let agent; - try { - agent = flags['authoring-bundle'] - ? await Agent.init({ connection: conn, project: this.project!, aabName: flags['authoring-bundle'] }) - : await Agent.init({ connection: conn, project: this.project!, apiNameOrId: flags['api-name']! }); - } catch (error) { - const wrapped = SfError.wrap(error); - await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_agent_not_found' }); - throw new SfError(messages.getMessage('error.agentNotFound', [agentIdentifier]), 'AgentNotFound', [], 2, wrapped); + if (flags['api-name'] && !flags['target-org']) { + throw new SfError(messages.getMessage('error.missingTargetOrgForApiName'), 'MissingTargetOrgForApiName', [], 1); } - // Get or validate session ID + const conn = flags['target-org']?.getConnection(flags['api-version']); + + if (flags['all']) { + return this.endAll(flags, conn); + } + + const agent = await this.initAgent(flags, conn); + let sessionId = flags['session-id']; if (sessionId === undefined) { const cached = await getCachedSessionIds(this.project!, agent); @@ -102,7 +123,6 @@ export default class AgentPreviewEnd extends SfCommand { agent.setSessionId(sessionId); - // Validate session try { await validatePreviewSession(agent); } catch (error) { @@ -120,7 +140,6 @@ export default class AgentPreviewEnd extends SfCommand { const tracesPath = await agent.getHistoryDir(); await removeCache(agent); - // End preview with error tracking try { if (agent instanceof ScriptAgent) { await agent.preview.end(); @@ -140,8 +159,99 @@ export default class AgentPreviewEnd extends SfCommand { } await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_success' }); - const result = { sessionId, tracesPath }; + const result: EndedSession = { agentId: agent.getAgentIdForStorage(), sessionId, tracesPath }; this.log(messages.getMessage('output.tracesPath', [tracesPath])); return result; } + + private async initAgent( + flags: { 'api-name'?: string; 'authoring-bundle'?: string }, + conn: Connection | undefined + ): Promise { + const agentIdentifier = flags['authoring-bundle'] ?? flags['api-name']!; + try { + // conn is always defined when --api-name is used (validated in run()); for --authoring-bundle + // ScriptAgent performs only local operations so conn may be undefined at runtime but is safe to cast. + return flags['authoring-bundle'] + ? await Agent.init({ + connection: conn as Connection, + project: this.project!, + aabName: flags['authoring-bundle'], + }) + : await Agent.init({ connection: conn as Connection, project: this.project!, apiNameOrId: flags['api-name']! }); + } catch (error) { + const wrapped = SfError.wrap(error); + await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_agent_not_found' }); + throw new SfError(messages.getMessage('error.agentNotFound', [agentIdentifier]), 'AgentNotFound', [], 2, wrapped); + } + } + + private async endAll( + flags: { 'api-name'?: string; 'authoring-bundle'?: string; 'no-prompt'?: boolean }, + conn: Connection | undefined + ): Promise<{ ended: EndedSession[] }> { + let sessionsToEnd: EndedSession[]; + let agent: ScriptAgent | ProductionAgent | undefined; + + if (flags['api-name'] !== undefined || flags['authoring-bundle'] !== undefined) { + agent = await this.initAgent(flags, conn); + const agentId = agent.getAgentIdForStorage(); + const sessionIds = await getCachedSessionIds(this.project!, agent); + sessionsToEnd = sessionIds.map((sessionId) => ({ + agentId, + sessionId, + tracesPath: getSessionDir(this.project!, agentId, sessionId), + })); + } else { + const allSessions = await listCachedSessions(this.project!); + sessionsToEnd = allSessions.flatMap(({ agentId, sessionIds }) => + sessionIds.map((sessionId) => ({ + agentId, + sessionId, + tracesPath: getSessionDir(this.project!, agentId, sessionId), + })) + ); + } + + if (sessionsToEnd.length === 0) { + this.log(messages.getMessage('output.noSessionsFound')); + return { ended: [] }; + } + + if (!flags['no-prompt']) { + const agentCount = new Set(sessionsToEnd.map((s) => s.agentId)).size; + const confirmed = await prompts.confirm({ + message: messages.getMessage('prompt.confirmAll', [sessionsToEnd.length, agentCount]), + }); + if (!confirmed) { + return { ended: [] }; + } + } + + // Process sessions serially so that agent.setSessionId() / agent.preview.end() calls on the + // shared agent object do not race with each other. + for (const { agentId, sessionId } of sessionsToEnd) { + if (agent !== undefined) { + // For --api-name / --authoring-bundle: end the session via the agent so that + // ScriptAgent flushes traces to disk and ProductionAgent issues the server-side request. + agent.setSessionId(sessionId); + if (agent instanceof ScriptAgent) { + // eslint-disable-next-line no-await-in-loop + await agent.preview.end(); + } else if (agent instanceof ProductionAgent) { + // eslint-disable-next-line no-await-in-loop + await agent.preview.end('UserRequest'); + } + } + // eslint-disable-next-line no-await-in-loop + await removeCacheById(this.project!, agentId, sessionId); + } + + await Lifecycle.getInstance().emitTelemetry({ + eventName: 'agent_preview_end_all_success', + sessionCount: sessionsToEnd.length, + }); + this.log(messages.getMessage('output.endedAll', [sessionsToEnd.length])); + return { ended: sessionsToEnd }; + } } diff --git a/src/commands/agent/preview/sessions.ts b/src/commands/agent/preview/sessions.ts index cdcab638..c90fa266 100644 --- a/src/commands/agent/preview/sessions.ts +++ b/src/commands/agent/preview/sessions.ts @@ -16,7 +16,7 @@ import { SfCommand, toHelpSection } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; -import { listCachedSessions, SessionType } from '../../../previewSessionStore.js'; +import { listCachedSessions } from '../../../previewSessionStore.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.sessions'); @@ -25,8 +25,6 @@ export type AgentPreviewSessionsResult = Array<{ agentId: string; displayName?: string; sessionId: string; - timestamp?: string; - sessionType?: SessionType; }>; export default class AgentPreviewSessions extends SfCommand { @@ -42,9 +40,9 @@ export default class AgentPreviewSessions extends SfCommand { const entries = await listCachedSessions(this.project!); const rows: AgentPreviewSessionsResult = []; - for (const { agentId, displayName, sessions } of entries) { - for (const { sessionId, timestamp, sessionType } of sessions) { - rows.push({ agentId, displayName, sessionId, timestamp, sessionType }); + for (const { agentId, displayName, sessionIds } of entries) { + for (const sessionId of sessionIds) { + rows.push({ agentId, displayName, sessionId }); } } @@ -59,21 +57,15 @@ export default class AgentPreviewSessions extends SfCommand ({ agent: r.displayName ?? r.agentId, sessionId: r.sessionId, - timestamp: r.timestamp ?? '', - sessionType: r.sessionType ?? '', })); this.table({ data: tableData, columns: [ { key: 'agent', name: agentColumnHeader }, { key: 'sessionId', name: sessionIdHeader }, - { key: 'timestamp', name: timestampHeader }, - { key: 'sessionType', name: sessionTypeHeader }, ], }); return rows; diff --git a/src/commands/agent/preview/start.ts b/src/commands/agent/preview/start.ts index 61a2e2dc..c2fa4be6 100644 --- a/src/commands/agent/preview/start.ts +++ b/src/commands/agent/preview/start.ts @@ -17,7 +17,7 @@ import { Flags, SfCommand, toHelpSection } from '@salesforce/sf-plugins-core'; import { EnvironmentVariable, Lifecycle, Messages, SfError } from '@salesforce/core'; import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; -import { createCache, SessionType } from '../../../previewSessionStore.js'; +import { createCache } from '../../../previewSessionStore.js'; import { COMPILATION_API_EXIT_CODES } from '../../../common.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); @@ -158,8 +158,7 @@ export default class AgentPreviewStart extends SfCommand { + const historyDir = await agent.getHistoryDir(); + const metaPath = join(historyDir, SESSION_META_FILE); + const meta: SessionMeta = { displayName: options?.displayName }; + await writeFile(metaPath, JSON.stringify(meta), 'utf-8'); +} + +/** + * Validate that the session was started for this agent (marker file exists in agent's history dir for current sessionId). + * Caller must set sessionId on the agent (agent.setSessionId) before calling. + * Throws SfError if the session marker is not found. + */ +export async function validatePreviewSession(agent: ScriptAgent | ProductionAgent): Promise { + const historyDir = await agent.getHistoryDir(); + const metaPath = join(historyDir, SESSION_META_FILE); + try { + await readFile(metaPath, 'utf-8'); + } catch { + throw new SfError( + 'No preview session found for this session ID. Run "sf agent preview start" first.', + 'PreviewSessionNotFound' + ); + } +} + +/** + * Remove the session marker so this session is no longer considered "active" for send/end without --session-id. + * Call after ending the session. Caller must set sessionId on the agent before calling. + */ +export async function removeCache(agent: ScriptAgent | ProductionAgent): Promise { + const historyDir = await agent.getHistoryDir(); + const metaPath = join(historyDir, SESSION_META_FILE); + try { + await unlink(metaPath); + } catch { + // already removed or never created + } +} + +/** + * List session IDs that have a cache marker (started via "agent preview start") for this agent. + * Uses project path and agent's storage ID to find .sfdx/agents//sessions//session-meta.json. + */ +export async function getCachedSessionIds(project: SfProject, agent: ScriptAgent | ProductionAgent): Promise { + const agentId = agent.getAgentIdForStorage(); + const sessionsDir = join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions'); + const sessionIds: string[] = []; + try { + const entries = await readdir(sessionsDir, { withFileTypes: true }); + const dirs = entries.filter((e) => e.isDirectory()).map((e) => e.name); + const hasMarker = await Promise.all( + dirs.map(async (name) => { + try { + await readFile(join(sessionsDir, name, SESSION_META_FILE), 'utf-8'); + return true; + } catch { + return false; + } + }) + ); + dirs.forEach((name, i) => { + if (hasMarker[i]) sessionIds.push(name); + }); + } catch { + // sessions dir missing or unreadable + } + return sessionIds; +} + +/** + * Return the history directory path for a session given its agentId and sessionId. + * Mirrors the path that agent.getHistoryDir() returns, without needing a full agent object. + */ +export function getSessionDir(project: SfProject, agentId: string, sessionId: string): string { + return join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions', sessionId); +} + +/** + * Remove the session marker by agentId and sessionId, without requiring a full agent object. + * Use this when iterating sessions from listCachedSessions (--all path). + */ +export async function removeCacheById(project: SfProject, agentId: string, sessionId: string): Promise { + const metaPath = join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions', sessionId, SESSION_META_FILE); + try { + await unlink(metaPath); + } catch { + // already removed or never created + } +} + +/** + * Return the single "current" session ID when safe: exactly one cached session for this agent. + * Returns undefined when there are zero or multiple sessions (caller should require --session-id). + */ +export async function getCurrentSessionId( + project: SfProject, + agent: ScriptAgent | ProductionAgent +): Promise { + const ids = await getCachedSessionIds(project, agent); + return ids.length === 1 ? ids[0] : undefined; +} + +/** + * List all cached preview sessions in the project, grouped by agent ID. + * displayName (when present in session-meta.json) is the authoring bundle name or production agent API name for display. + * Use this to show users which sessions exist so they can end or clean up. + */ +export async function listCachedSessions(project: SfProject): Promise { + const agentsBaseDir = join(project.getPath(), '.sfdx', 'agents'); + const result: CachedSessionEntry[] = []; + try { + const agentDirs = await readdir(agentsBaseDir, { withFileTypes: true }); + const entries = await Promise.all( + agentDirs + .filter((ent) => ent.isDirectory()) + .map(async (ent) => { + const agentId = ent.name; + const sessionsDir = join(agentsBaseDir, agentId, 'sessions'); + let sessionIds: string[] = []; + let displayName: string | undefined; + try { + const sessionDirs = await readdir(sessionsDir, { withFileTypes: true }); + const withMarker = await Promise.all( + sessionDirs + .filter((s) => s.isDirectory()) + .map(async (s) => { + try { + await readFile(join(sessionsDir, s.name, SESSION_META_FILE), 'utf-8'); + return s.name; + } catch { + return null; + } + }) + ); + sessionIds = withMarker.filter((id): id is string => id !== null); + if (sessionIds.length > 0) { + try { + const raw = await readFile(join(sessionsDir, sessionIds[0], SESSION_META_FILE), 'utf-8'); + const meta = JSON.parse(raw) as SessionMeta; + displayName = meta.displayName; + } catch { + // ignore + } + } + } catch { + // no sessions dir or unreadable + } + return { agentId, displayName, sessionIds }; + }) + ); + result.push(...entries.filter((e) => e.sessionIds.length > 0)); + } catch { + // no agents dir or unreadable + } + return result; +} diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts new file mode 100644 index 00000000..9b23d702 --- /dev/null +++ b/test/commands/agent/preview/end.test.ts @@ -0,0 +1,258 @@ +/* + * Copyright 2026, Salesforce, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-explicit-any */ + +import { join } from 'node:path'; +import { expect } from 'chai'; +import sinon from 'sinon'; +import esmock from 'esmock'; +import { TestContext } from '@salesforce/core/testSetup'; +import { SfProject } from '@salesforce/core'; + +const MOCK_PROJECT_DIR = join(process.cwd(), 'test', 'mock-projects', 'agent-generate-template'); +const SESSION_ID = 'test-session-123'; +const AGENT_ID = 'my_agent_id'; +const TRACES_PATH = `/mock/.sfdx/agents/${AGENT_ID}/sessions/${SESSION_ID}`; + +describe('agent preview end', () => { + const $$ = new TestContext(); + let AgentPreviewEnd: any; + let initStub: sinon.SinonStub; + let getCachedSessionIdsStub: sinon.SinonStub; + let getSessionDirStub: sinon.SinonStub; + let listCachedSessionsStub: sinon.SinonStub; + let removeCacheStub: sinon.SinonStub; + let removeCacheByIdStub: sinon.SinonStub; + let validatePreviewSessionStub: sinon.SinonStub; + let confirmStub: sinon.SinonStub; + let agentPreviewEndStub: sinon.SinonStub; + + beforeEach(async () => { + agentPreviewEndStub = $$.SANDBOX.stub().resolves(); + getCachedSessionIdsStub = $$.SANDBOX.stub().resolves([SESSION_ID]); + getSessionDirStub = $$.SANDBOX.stub().returns(TRACES_PATH); + listCachedSessionsStub = $$.SANDBOX.stub().resolves([]); + removeCacheStub = $$.SANDBOX.stub().resolves(); + removeCacheByIdStub = $$.SANDBOX.stub().resolves(); + validatePreviewSessionStub = $$.SANDBOX.stub().resolves(); + confirmStub = $$.SANDBOX.stub().resolves(true); + + const MockScriptAgent = class MockScriptAgent { + public preview = { end: agentPreviewEndStub }; + public name = 'TestAgent'; + public setSessionId = sinon.stub(); + public getHistoryDir = sinon.stub().resolves(TRACES_PATH); + public getAgentIdForStorage = sinon.stub().returns(AGENT_ID); + }; + const MockProductionAgent = class MockProductionAgent {}; + + const mockAgentInstance = new MockScriptAgent(); + initStub = $$.SANDBOX.stub().resolves(mockAgentInstance); + + const mod = await esmock('../../../../src/commands/agent/preview/end.js', { + '@salesforce/agents': { + Agent: { init: initStub }, + ScriptAgent: MockScriptAgent, + ProductionAgent: MockProductionAgent, + }, + '../../../../src/previewSessionStore.js': { + getCachedSessionIds: getCachedSessionIdsStub, + getSessionDir: getSessionDirStub, + listCachedSessions: listCachedSessionsStub, + removeCache: removeCacheStub, + removeCacheById: removeCacheByIdStub, + validatePreviewSession: validatePreviewSessionStub, + }, + '@salesforce/sf-plugins-core': { + Flags: (await import('@salesforce/sf-plugins-core')).Flags, + SfCommand: (await import('@salesforce/sf-plugins-core')).SfCommand, + toHelpSection: (await import('@salesforce/sf-plugins-core')).toHelpSection, + prompts: { + confirm: confirmStub, + }, + }, + }); + + AgentPreviewEnd = mod.default; + + $$.inProject(true); + const mockProject = { + getPath: () => MOCK_PROJECT_DIR, + getDefaultPackage: () => ({ fullPath: join(MOCK_PROJECT_DIR, 'force-app') }), + } as unknown as SfProject; + $$.SANDBOX.stub(SfProject, 'resolve').resolves(mockProject); + $$.SANDBOX.stub(SfProject, 'getInstance').returns(mockProject); + }); + + afterEach(() => { + $$.restore(); + }); + + describe('single-session end (default behaviour)', () => { + it('ends a session for an authoring bundle using the cached session ID', async () => { + const result = await AgentPreviewEnd.run(['--authoring-bundle', 'My_Local_Agent']); + + expect(initStub.calledOnce).to.be.true; + expect(validatePreviewSessionStub.calledOnce).to.be.true; + expect(removeCacheStub.calledOnce).to.be.true; + expect(agentPreviewEndStub.calledOnce).to.be.true; + expect(result).to.deep.include({ sessionId: SESSION_ID, tracesPath: TRACES_PATH }); + }); + + it('ends a session with an explicit --session-id flag, skipping the cache lookup', async () => { + const explicitSessionId = 'explicit-session-456'; + + const result = await AgentPreviewEnd.run([ + '--authoring-bundle', + 'My_Local_Agent', + '--session-id', + explicitSessionId, + ]); + + expect(getCachedSessionIdsStub.called).to.be.false; + expect(result).to.deep.include({ sessionId: explicitSessionId }); + }); + + it('throws when no session is cached for the agent', async () => { + getCachedSessionIdsStub.resolves([]); + + try { + await AgentPreviewEnd.run(['--authoring-bundle', 'My_Local_Agent']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.include('No agent preview session found'); + } + }); + + it('throws when multiple sessions are cached for the agent', async () => { + getCachedSessionIdsStub.resolves(['session-1', 'session-2']); + + try { + await AgentPreviewEnd.run(['--authoring-bundle', 'My_Local_Agent']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.include('Multiple preview sessions found'); + } + }); + + it('throws when --api-name is provided without --target-org', async () => { + try { + await AgentPreviewEnd.run(['--api-name', 'My_Published_Agent']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.include('--target-org flag is required'); + } + }); + + it('throws when neither --api-name, --authoring-bundle, nor --all is provided', async () => { + try { + await AgentPreviewEnd.run([]); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.match(/api-name|authoring-bundle|all/i); + } + }); + + it('throws when --session-id and --all are both provided', async () => { + try { + await AgentPreviewEnd.run(['--authoring-bundle', 'My_Local_Agent', '--session-id', 'sid', '--all']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.match(/cannot also be provided/i); + } + }); + }); + + describe('--all flag: ends all sessions across all agents', () => { + it('uses listCachedSessions when no agent identifier is given', async () => { + listCachedSessionsStub.resolves([ + { agentId: 'agent_a', sessionIds: ['session-1', 'session-2'] }, + { agentId: 'agent_b', sessionIds: ['session-3'] }, + ]); + getSessionDirStub.callsFake( + (_proj: any, agentId: string, sessionId: string) => `/mock/.sfdx/agents/${agentId}/sessions/${sessionId}` + ); + + const result = await AgentPreviewEnd.run(['--all', '--no-prompt']); + + expect(listCachedSessionsStub.calledOnce).to.be.true; + expect(initStub.called).to.be.false; + expect(removeCacheByIdStub.callCount).to.equal(3); + expect(result).to.deep.equal({ + ended: [ + { agentId: 'agent_a', sessionId: 'session-1', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-1' }, + { agentId: 'agent_a', sessionId: 'session-2', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-2' }, + { agentId: 'agent_b', sessionId: 'session-3', tracesPath: '/mock/.sfdx/agents/agent_b/sessions/session-3' }, + ], + }); + }); + + it('filters to the specified agent when combined with --authoring-bundle', async () => { + getCachedSessionIdsStub.resolves(['session-1', 'session-2']); + getSessionDirStub.returns(TRACES_PATH); + + const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); + + expect(initStub.calledOnce).to.be.true; + expect(listCachedSessionsStub.called).to.be.false; + expect(removeCacheByIdStub.callCount).to.equal(2); + expect((result as { ended: unknown[] }).ended).to.have.length(2); + }); + + it('logs a message and returns an empty list when no sessions are found', async () => { + listCachedSessionsStub.resolves([]); + + const result = await AgentPreviewEnd.run(['--all', '--no-prompt']); + + expect(result).to.deep.equal({ ended: [] }); + expect(removeCacheByIdStub.called).to.be.false; + }); + }); + + describe('--all flag: confirmation prompt', () => { + it('prompts for confirmation before ending sessions', async () => { + listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessionIds: ['session-1'] }]); + getSessionDirStub.returns(TRACES_PATH); + confirmStub.resolves(true); + + await AgentPreviewEnd.run(['--all']); + + expect(confirmStub.calledOnce).to.be.true; + expect(removeCacheByIdStub.calledOnce).to.be.true; + }); + + it('returns an empty ended list when user declines the confirmation prompt', async () => { + listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessionIds: ['session-1'] }]); + confirmStub.resolves(false); + + const result = await AgentPreviewEnd.run(['--all']); + + expect(removeCacheByIdStub.called).to.be.false; + expect(result).to.deep.equal({ ended: [] }); + }); + + it('skips the confirmation prompt when --no-prompt is provided', async () => { + listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessionIds: ['session-1'] }]); + getSessionDirStub.returns(TRACES_PATH); + + await AgentPreviewEnd.run(['--all', '--no-prompt']); + + expect(confirmStub.called).to.be.false; + expect(removeCacheByIdStub.calledOnce).to.be.true; + }); + }); +}); From c0f8d357b39d73ed2d73318e7c38b8a34d44e032 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 14:32:31 -0300 Subject: [PATCH 02/20] fix: address review findings for --all flag on agent preview end - Add try/catch in endAll serial loop with structured PreviewEndPartialFailure error listing which sessions failed vs succeeded - Restore timestamp/sessionType columns on agent preview sessions (W-22203667 regression introduced by the shim revert in the previous commit) - Add three missing tests: --all+--api-name happy path, missing --target-org guard, and mid-loop failure with partial results assertions - Document --no-prompt only has effect when used with --all Co-Authored-By: Claude Sonnet 4.6 --- messages/agent.preview.end.md | 2 +- src/commands/agent/preview/end.ts | 62 +++++++---- src/commands/agent/preview/sessions.ts | 14 ++- src/commands/agent/preview/start.ts | 11 +- src/previewSessionStore.ts | 142 ++++++++++++++++++------ test/commands/agent/preview/end.test.ts | 73 +++++++++++- 6 files changed, 241 insertions(+), 63 deletions(-) diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index a09c1dfb..000885f6 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -28,7 +28,7 @@ End all active preview sessions. If combined with --api-name or --authoring-bund # flags.no-prompt.summary -Don't prompt for confirmation before ending sessions when using --all. +Don't prompt for confirmation before ending sessions. Only has an effect when used with --all. # error.noSession diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index 6f2757d8..1b831d31 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -171,7 +171,8 @@ export default class AgentPreviewEnd extends SfCommand { const agentIdentifier = flags['authoring-bundle'] ?? flags['api-name']!; try { // conn is always defined when --api-name is used (validated in run()); for --authoring-bundle - // ScriptAgent performs only local operations so conn may be undefined at runtime but is safe to cast. + // ScriptAgent performs only local operations so it may not need a connection at runtime. + // We pass conn as-is and let the agents library throw if it actually requires a connection. return flags['authoring-bundle'] ? await Agent.init({ connection: conn as Connection, @@ -204,8 +205,8 @@ export default class AgentPreviewEnd extends SfCommand { })); } else { const allSessions = await listCachedSessions(this.project!); - sessionsToEnd = allSessions.flatMap(({ agentId, sessionIds }) => - sessionIds.map((sessionId) => ({ + sessionsToEnd = allSessions.flatMap(({ agentId, sessions }) => + sessions.map(({ sessionId }) => ({ agentId, sessionId, tracesPath: getSessionDir(this.project!, agentId, sessionId), @@ -230,28 +231,51 @@ export default class AgentPreviewEnd extends SfCommand { // Process sessions serially so that agent.setSessionId() / agent.preview.end() calls on the // shared agent object do not race with each other. - for (const { agentId, sessionId } of sessionsToEnd) { - if (agent !== undefined) { - // For --api-name / --authoring-bundle: end the session via the agent so that - // ScriptAgent flushes traces to disk and ProductionAgent issues the server-side request. - agent.setSessionId(sessionId); - if (agent instanceof ScriptAgent) { - // eslint-disable-next-line no-await-in-loop - await agent.preview.end(); - } else if (agent instanceof ProductionAgent) { - // eslint-disable-next-line no-await-in-loop - await agent.preview.end('UserRequest'); + const ended: EndedSession[] = []; + const failed: Array<{ session: EndedSession; error: string }> = []; + + for (const session of sessionsToEnd) { + const { agentId, sessionId } = session; + try { + if (agent !== undefined) { + // For --api-name / --authoring-bundle: end the session via the agent so that + // ScriptAgent flushes traces to disk and ProductionAgent issues the server-side request. + agent.setSessionId(sessionId); + if (agent instanceof ScriptAgent) { + // eslint-disable-next-line no-await-in-loop + await agent.preview.end(); + } else if (agent instanceof ProductionAgent) { + // eslint-disable-next-line no-await-in-loop + await agent.preview.end('UserRequest'); + } } + // eslint-disable-next-line no-await-in-loop + await removeCacheById(this.project!, agentId, sessionId); + ended.push(session); + } catch (error) { + failed.push({ session, error: SfError.wrap(error).message }); } - // eslint-disable-next-line no-await-in-loop - await removeCacheById(this.project!, agentId, sessionId); + } + + if (failed.length > 0) { + const failedList = failed.map((f) => `${f.session.agentId}/${f.session.sessionId}: ${f.error}`).join(', '); + const endedIds = ended.map((e) => `${e.agentId}/${e.sessionId}`).join(', '); + const msg = `Failed to end ${failed.length} session(s): [${failedList}]. Successfully ended ${ + ended.length + } session(s)${ended.length > 0 ? `: [${endedIds}]` : ''}.`; + await Lifecycle.getInstance().emitTelemetry({ + eventName: 'agent_preview_end_all_partial_failure', + failedCount: failed.length, + succeededCount: ended.length, + }); + throw new SfError(msg, 'PreviewEndPartialFailure', [], 4); } await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_all_success', - sessionCount: sessionsToEnd.length, + sessionCount: ended.length, }); - this.log(messages.getMessage('output.endedAll', [sessionsToEnd.length])); - return { ended: sessionsToEnd }; + this.log(messages.getMessage('output.endedAll', [ended.length])); + return { ended }; } } diff --git a/src/commands/agent/preview/sessions.ts b/src/commands/agent/preview/sessions.ts index c90fa266..8c67ea0c 100644 --- a/src/commands/agent/preview/sessions.ts +++ b/src/commands/agent/preview/sessions.ts @@ -25,6 +25,8 @@ export type AgentPreviewSessionsResult = Array<{ agentId: string; displayName?: string; sessionId: string; + timestamp?: string; + sessionType?: string; }>; export default class AgentPreviewSessions extends SfCommand { @@ -40,9 +42,9 @@ export default class AgentPreviewSessions extends SfCommand { const entries = await listCachedSessions(this.project!); const rows: AgentPreviewSessionsResult = []; - for (const { agentId, displayName, sessionIds } of entries) { - for (const sessionId of sessionIds) { - rows.push({ agentId, displayName, sessionId }); + for (const { agentId, displayName, sessions } of entries) { + for (const { sessionId, timestamp, sessionType } of sessions) { + rows.push({ agentId, displayName, sessionId, timestamp, sessionType }); } } @@ -57,15 +59,21 @@ export default class AgentPreviewSessions extends SfCommand ({ agent: r.displayName ?? r.agentId, sessionId: r.sessionId, + timestamp: r.timestamp ?? '', + sessionType: r.sessionType ?? '', })); this.table({ data: tableData, columns: [ { key: 'agent', name: agentColumnHeader }, { key: 'sessionId', name: sessionIdHeader }, + { key: 'timestamp', name: timestampHeader }, + { key: 'sessionType', name: sessionTypeHeader }, ], }); return rows; diff --git a/src/commands/agent/preview/start.ts b/src/commands/agent/preview/start.ts index c2fa4be6..237da417 100644 --- a/src/commands/agent/preview/start.ts +++ b/src/commands/agent/preview/start.ts @@ -158,7 +158,8 @@ export default class AgentPreviewStart extends SfCommand; /** * Save a marker so send/end can validate that the session was started for this agent. * Caller must have started the session (agent has sessionId set). Uses agent.getHistoryDir() for the path. * Pass displayName (authoring bundle name or production agent API name) so "agent preview sessions" can show it. + * Pass sessionType ('simulated' | 'live' | 'published') so "agent preview sessions" can show the session type. */ export async function createCache( agent: ScriptAgent | ProductionAgent, - options?: { displayName?: string } + options?: { displayName?: string; sessionType?: SessionType } ): Promise { const historyDir = await agent.getHistoryDir(); const metaPath = join(historyDir, SESSION_META_FILE); - const meta: SessionMeta = { displayName: options?.displayName }; + const meta: SessionMeta = { + displayName: options?.displayName, + timestamp: new Date().toISOString(), + sessionType: options?.sessionType, + }; await writeFile(metaPath, JSON.stringify(meta), 'utf-8'); + + // Update the sessions index for ordered browsing + const sessionId = basename(historyDir); + const sessionsDir = dirname(historyDir); + const indexPath = join(sessionsDir, SESSION_INDEX_FILE); + const index = await readSessionIndex(indexPath); + if (!index.some((e) => e.sessionId === sessionId)) { + index.push({ sessionId, displayName: meta.displayName, timestamp: meta.timestamp, sessionType: meta.sessionType }); + await writeFile(indexPath, JSON.stringify(index, null, 2), 'utf-8'); + } } /** @@ -76,6 +91,16 @@ export async function removeCache(agent: ScriptAgent | ProductionAgent): Promise } catch { // already removed or never created } + + // Remove entry from the sessions index + const sessionId = basename(historyDir); + const sessionsDir = dirname(historyDir); + const indexPath = join(sessionsDir, SESSION_INDEX_FILE); + const index = await readSessionIndex(indexPath); + const updated = index.filter((e) => e.sessionId !== sessionId); + if (updated.length !== index.length) { + await writeFile(indexPath, JSON.stringify(updated, null, 2), 'utf-8'); + } } /** @@ -118,15 +143,25 @@ export function getSessionDir(project: SfProject, agentId: string, sessionId: st /** * Remove the session marker by agentId and sessionId, without requiring a full agent object. + * Also removes the entry from the sessions index. * Use this when iterating sessions from listCachedSessions (--all path). */ export async function removeCacheById(project: SfProject, agentId: string, sessionId: string): Promise { - const metaPath = join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions', sessionId, SESSION_META_FILE); + const sessionsDir = join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions'); + const metaPath = join(sessionsDir, sessionId, SESSION_META_FILE); try { await unlink(metaPath); } catch { // already removed or never created } + + // Remove entry from the sessions index + const indexPath = join(sessionsDir, SESSION_INDEX_FILE); + const index = await readSessionIndex(indexPath); + const updated = index.filter((e) => e.sessionId !== sessionId); + if (updated.length !== index.length) { + await writeFile(indexPath, JSON.stringify(updated, null, 2), 'utf-8'); + } } /** @@ -141,55 +176,94 @@ export async function getCurrentSessionId( return ids.length === 1 ? ids[0] : undefined; } +/** + * Read the sessions index file, returning an empty array if missing or unreadable. + */ +async function readSessionIndex(indexPath: string): Promise { + try { + const raw = await readFile(indexPath, 'utf-8'); + return JSON.parse(raw) as SessionIndex; + } catch { + return []; + } +} + +export type CachedSessionInfo = { sessionId: string; timestamp?: string; sessionType?: SessionType }; +export type CachedSessionEntry = { agentId: string; displayName?: string; sessions: CachedSessionInfo[] }; + /** * List all cached preview sessions in the project, grouped by agent ID. * displayName (when present in session-meta.json) is the authoring bundle name or production agent API name for display. + * timestamp and sessionType are included when available (written by "agent preview start" after W-22203667). + * Prefers the sessions index for ordered, metadata-rich results; falls back to directory scan for older sessions. * Use this to show users which sessions exist so they can end or clean up. */ export async function listCachedSessions(project: SfProject): Promise { - const agentsBaseDir = join(project.getPath(), '.sfdx', 'agents'); + const base = join(project.getPath(), '.sfdx', 'agents'); const result: CachedSessionEntry[] = []; try { - const agentDirs = await readdir(agentsBaseDir, { withFileTypes: true }); + const agentDirs = await readdir(base, { withFileTypes: true }); const entries = await Promise.all( agentDirs .filter((ent) => ent.isDirectory()) .map(async (ent) => { const agentId = ent.name; - const sessionsDir = join(agentsBaseDir, agentId, 'sessions'); - let sessionIds: string[] = []; + const sessionsDir = join(base, agentId, 'sessions'); + let sessions: CachedSessionInfo[] = []; let displayName: string | undefined; try { - const sessionDirs = await readdir(sessionsDir, { withFileTypes: true }); - const withMarker = await Promise.all( - sessionDirs - .filter((s) => s.isDirectory()) - .map(async (s) => { + // Prefer the index for ordered, metadata-rich results + const index = await readSessionIndex(join(sessionsDir, SESSION_INDEX_FILE)); + if (index.length > 0) { + // Verify each indexed session still has its marker file (guard against manual cleanup) + const verified = await Promise.all( + index.map(async (entry) => { try { - await readFile(join(sessionsDir, s.name, SESSION_META_FILE), 'utf-8'); - return s.name; + await readFile(join(sessionsDir, entry.sessionId, SESSION_META_FILE), 'utf-8'); + return entry; } catch { return null; } }) - ); - sessionIds = withMarker.filter((id): id is string => id !== null); - if (sessionIds.length > 0) { - try { - const raw = await readFile(join(sessionsDir, sessionIds[0], SESSION_META_FILE), 'utf-8'); - const meta = JSON.parse(raw) as SessionMeta; - displayName = meta.displayName; - } catch { - // ignore + ); + sessions = verified + .filter((e): e is SessionIndex[number] => e !== null) + .map(({ sessionId, timestamp, sessionType }) => ({ sessionId, timestamp, sessionType })); + displayName = index[0]?.displayName; + } else { + // Fallback: scan directories (no index yet, e.g. sessions started before this feature) + const sessionDirs = await readdir(sessionsDir, { withFileTypes: true }); + const sessionInfos = await Promise.all( + sessionDirs + .filter((s) => s.isDirectory()) + .map(async (s): Promise => { + try { + const raw = await readFile(join(sessionsDir, s.name, SESSION_META_FILE), 'utf-8'); + const meta = JSON.parse(raw) as SessionMeta; + return { sessionId: s.name, timestamp: meta.timestamp, sessionType: meta.sessionType }; + } catch { + return null; + } + }) + ); + sessions = sessionInfos.filter((s): s is CachedSessionInfo => s !== null); + if (sessions.length > 0) { + try { + const raw = await readFile(join(sessionsDir, sessions[0].sessionId, SESSION_META_FILE), 'utf-8'); + const meta = JSON.parse(raw) as SessionMeta; + displayName = meta.displayName; + } catch { + // ignore + } } } } catch { // no sessions dir or unreadable } - return { agentId, displayName, sessionIds }; + return { agentId, displayName, sessions }; }) ); - result.push(...entries.filter((e) => e.sessionIds.length > 0)); + result.push(...entries.filter((e) => e.sessions.length > 0)); } catch { // no agents dir or unreadable } diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index 9b23d702..d3a83e6b 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -180,8 +180,8 @@ describe('agent preview end', () => { describe('--all flag: ends all sessions across all agents', () => { it('uses listCachedSessions when no agent identifier is given', async () => { listCachedSessionsStub.resolves([ - { agentId: 'agent_a', sessionIds: ['session-1', 'session-2'] }, - { agentId: 'agent_b', sessionIds: ['session-3'] }, + { agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }, { sessionId: 'session-2' }] }, + { agentId: 'agent_b', sessions: [{ sessionId: 'session-3' }] }, ]); getSessionDirStub.callsFake( (_proj: any, agentId: string, sessionId: string) => `/mock/.sfdx/agents/${agentId}/sessions/${sessionId}` @@ -213,6 +213,37 @@ describe('agent preview end', () => { expect((result as { ended: unknown[] }).ended).to.have.length(2); }); + it('filters to the specified agent when combined with --api-name and --target-org (happy path)', async () => { + getCachedSessionIdsStub.resolves(['session-a', 'session-b']); + getSessionDirStub.callsFake( + (_proj: any, agentId: string, sessionId: string) => `/mock/.sfdx/agents/${agentId}/sessions/${sessionId}` + ); + + const result = await AgentPreviewEnd.run([ + '--all', + '--api-name', + 'My_Published_Agent', + '--target-org', + 'test@org.com', + '--no-prompt', + ]); + + expect(initStub.calledOnce).to.be.true; + expect(listCachedSessionsStub.called).to.be.false; + expect(removeCacheByIdStub.callCount).to.equal(2); + expect((result as { ended: unknown[] }).ended).to.have.length(2); + }); + + it('throws MissingTargetOrgForApiName when --all + --api-name is used without --target-org', async () => { + try { + await AgentPreviewEnd.run(['--all', '--api-name', 'My_Published_Agent']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.include('--target-org flag is required'); + expect((error as any).name).to.equal('MissingTargetOrgForApiName'); + } + }); + it('logs a message and returns an empty list when no sessions are found', async () => { listCachedSessionsStub.resolves([]); @@ -221,11 +252,43 @@ describe('agent preview end', () => { expect(result).to.deep.equal({ ended: [] }); expect(removeCacheByIdStub.called).to.be.false; }); + + it('records partial results and throws a structured error when agent.preview.end() throws mid-loop', async () => { + // Three sessions: session-1 succeeds, session-2 fails, session-3 succeeds + getCachedSessionIdsStub.resolves(['session-1', 'session-2', 'session-3']); + getSessionDirStub.callsFake( + (_proj: any, agentId: string, sessionId: string) => `/mock/.sfdx/agents/${agentId}/sessions/${sessionId}` + ); + // Fail only on the second call (session-2) + agentPreviewEndStub + .onFirstCall() + .resolves() + .onSecondCall() + .rejects(new Error('network timeout')) + .onThirdCall() + .resolves(); + + try { + await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + const err = error as any; + // Structured error: lists which sessions failed + expect(err.message).to.include('Failed to end 1 session(s)'); + expect(err.message).to.include('session-2'); + expect(err.message).to.include('network timeout'); + // Also mentions the ones that succeeded + expect(err.message).to.include('Successfully ended 2 session(s)'); + // Only 2 successful removes happened (session-1 and session-3) + expect(removeCacheByIdStub.callCount).to.equal(2); + expect(err.name).to.equal('PreviewEndPartialFailure'); + } + }); }); describe('--all flag: confirmation prompt', () => { it('prompts for confirmation before ending sessions', async () => { - listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessionIds: ['session-1'] }]); + listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); getSessionDirStub.returns(TRACES_PATH); confirmStub.resolves(true); @@ -236,7 +299,7 @@ describe('agent preview end', () => { }); it('returns an empty ended list when user declines the confirmation prompt', async () => { - listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessionIds: ['session-1'] }]); + listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); confirmStub.resolves(false); const result = await AgentPreviewEnd.run(['--all']); @@ -246,7 +309,7 @@ describe('agent preview end', () => { }); it('skips the confirmation prompt when --no-prompt is provided', async () => { - listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessionIds: ['session-1'] }]); + listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); getSessionDirStub.returns(TRACES_PATH); await AgentPreviewEnd.run(['--all', '--no-prompt']); From cd0f1104fc98cdcb412003fc4c3bc27406d23cc3 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 14:35:44 -0300 Subject: [PATCH 03/20] chore: regenerate schemas and fix NUT type assertions for EndedSession union Co-Authored-By: Claude Sonnet 4.6 --- schemas/agent-preview-end.json | 25 ++++++++++++++++++++++++- schemas/agent-preview-sessions.json | 6 +----- test/nuts/z3.agent.preview.nut.ts | 4 ++-- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/schemas/agent-preview-end.json b/schemas/agent-preview-end.json index 9ce8737d..a75cfe6d 100644 --- a/schemas/agent-preview-end.json +++ b/schemas/agent-preview-end.json @@ -3,8 +3,31 @@ "$ref": "#/definitions/AgentPreviewEndResult", "definitions": { "AgentPreviewEndResult": { + "anyOf": [ + { + "type": "object", + "properties": { + "ended": { + "type": "array", + "items": { + "$ref": "#/definitions/EndedSession" + } + } + }, + "required": ["ended"], + "additionalProperties": false + }, + { + "$ref": "#/definitions/EndedSession" + } + ] + }, + "EndedSession": { "type": "object", "properties": { + "agentId": { + "type": "string" + }, "sessionId": { "type": "string" }, @@ -12,7 +35,7 @@ "type": "string" } }, - "required": ["sessionId", "tracesPath"], + "required": ["agentId", "sessionId", "tracesPath"], "additionalProperties": false } } diff --git a/schemas/agent-preview-sessions.json b/schemas/agent-preview-sessions.json index 168f2e48..87101e87 100644 --- a/schemas/agent-preview-sessions.json +++ b/schemas/agent-preview-sessions.json @@ -20,16 +20,12 @@ "type": "string" }, "sessionType": { - "$ref": "#/definitions/SessionType" + "type": "string" } }, "required": ["agentId", "sessionId"], "additionalProperties": false } - }, - "SessionType": { - "type": "string", - "enum": ["simulated", "live", "published"] } } } diff --git a/test/nuts/z3.agent.preview.nut.ts b/test/nuts/z3.agent.preview.nut.ts index cbaf7724..3aba0890 100644 --- a/test/nuts/z3.agent.preview.nut.ts +++ b/test/nuts/z3.agent.preview.nut.ts @@ -80,7 +80,7 @@ describe('agent preview', function () { const endResult = execCmd( `agent preview end --session-id ${sessionId} --authoring-bundle ${bundleApiName} --target-org ${targetOrg} --json` - ).jsonOutput?.result; + ).jsonOutput?.result as import('../../src/commands/agent/preview/end.js').EndedSession | undefined; expect(endResult?.sessionId).to.equal(sessionId); expect(endResult?.tracesPath).to.be.a('string').and.include('.sfdx').and.include('agents'); }); @@ -154,7 +154,7 @@ describe('agent preview', function () { `agent preview end --session-id ${sessionId} --api-name ${ publishedAgent!.DeveloperName } --target-org ${targetOrg} --json` - ).jsonOutput?.result; + ).jsonOutput?.result as import('../../src/commands/agent/preview/end.js').EndedSession | undefined; expect(endResult?.sessionId).to.equal(sessionId); expect(endResult?.tracesPath).to.be.a('string'); }); From 2b06552eb1eed49f23bc4b2c79c45d4cfb602031 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 14:43:19 -0300 Subject: [PATCH 04/20] fix: restore SessionType named import in start.ts Co-Authored-By: Claude Sonnet 4.6 --- src/commands/agent/preview/start.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/commands/agent/preview/start.ts b/src/commands/agent/preview/start.ts index 237da417..61a2e2dc 100644 --- a/src/commands/agent/preview/start.ts +++ b/src/commands/agent/preview/start.ts @@ -17,7 +17,7 @@ import { Flags, SfCommand, toHelpSection } from '@salesforce/sf-plugins-core'; import { EnvironmentVariable, Lifecycle, Messages, SfError } from '@salesforce/core'; import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; -import { createCache } from '../../../previewSessionStore.js'; +import { createCache, SessionType } from '../../../previewSessionStore.js'; import { COMPILATION_API_EXIT_CODES } from '../../../common.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); @@ -168,10 +168,7 @@ export default class AgentPreviewStart extends SfCommand Date: Tue, 28 Apr 2026 14:50:32 -0300 Subject: [PATCH 05/20] refactor: restore pre-shim inline session store; scope to W-22203669 only Replace the bloated inline rewrite with the correct base (commit 57fb5f7, the last working inline implementation before the broken shim). Only the two helpers needed by --all are added on top: getSessionDir and removeCacheById. sessions.ts and start.ts are restored to their main state. Co-Authored-By: Claude Sonnet 4.6 --- schemas/agent-preview-sessions.json | 6 +- src/commands/agent/preview/sessions.ts | 4 +- src/previewSessionStore.ts | 115 +++++++++++++------------ 3 files changed, 66 insertions(+), 59 deletions(-) diff --git a/schemas/agent-preview-sessions.json b/schemas/agent-preview-sessions.json index 87101e87..168f2e48 100644 --- a/schemas/agent-preview-sessions.json +++ b/schemas/agent-preview-sessions.json @@ -20,12 +20,16 @@ "type": "string" }, "sessionType": { - "type": "string" + "$ref": "#/definitions/SessionType" } }, "required": ["agentId", "sessionId"], "additionalProperties": false } + }, + "SessionType": { + "type": "string", + "enum": ["simulated", "live", "published"] } } } diff --git a/src/commands/agent/preview/sessions.ts b/src/commands/agent/preview/sessions.ts index 8c67ea0c..cdcab638 100644 --- a/src/commands/agent/preview/sessions.ts +++ b/src/commands/agent/preview/sessions.ts @@ -16,7 +16,7 @@ import { SfCommand, toHelpSection } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; -import { listCachedSessions } from '../../../previewSessionStore.js'; +import { listCachedSessions, SessionType } from '../../../previewSessionStore.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.sessions'); @@ -26,7 +26,7 @@ export type AgentPreviewSessionsResult = Array<{ displayName?: string; sessionId: string; timestamp?: string; - sessionType?: string; + sessionType?: SessionType; }>; export default class AgentPreviewSessions extends SfCommand { diff --git a/src/previewSessionStore.ts b/src/previewSessionStore.ts index 3b10f7f0..6ce7a3ac 100644 --- a/src/previewSessionStore.ts +++ b/src/previewSessionStore.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import { readdir, readFile, unlink, writeFile } from 'node:fs/promises'; +import { readdir, readFile, rename, unlink, writeFile } from 'node:fs/promises'; import { basename, dirname, join } from 'node:path'; -import { SfError, type SfProject } from '@salesforce/core'; +import { SfError } from '@salesforce/core'; +import type { SfProject } from '@salesforce/core'; import type { ProductionAgent, ScriptAgent } from '@salesforce/agents'; const SESSION_META_FILE = 'session-meta.json'; @@ -24,7 +25,7 @@ const SESSION_INDEX_FILE = 'index.json'; export type SessionType = 'simulated' | 'live' | 'published'; export type SessionMeta = { displayName?: string; timestamp?: string; sessionType?: SessionType }; -export type SessionIndex = Array<{ +type SessionIndex = Array<{ sessionId: string; displayName?: string; timestamp?: string; @@ -35,7 +36,6 @@ export type SessionIndex = Array<{ * Save a marker so send/end can validate that the session was started for this agent. * Caller must have started the session (agent has sessionId set). Uses agent.getHistoryDir() for the path. * Pass displayName (authoring bundle name or production agent API name) so "agent preview sessions" can show it. - * Pass sessionType ('simulated' | 'live' | 'published') so "agent preview sessions" can show the session type. */ export async function createCache( agent: ScriptAgent | ProductionAgent, @@ -54,11 +54,17 @@ export async function createCache( const sessionId = basename(historyDir); const sessionsDir = dirname(historyDir); const indexPath = join(sessionsDir, SESSION_INDEX_FILE); - const index = await readSessionIndex(indexPath); - if (!index.some((e) => e.sessionId === sessionId)) { - index.push({ sessionId, displayName: meta.displayName, timestamp: meta.timestamp, sessionType: meta.sessionType }); - await writeFile(indexPath, JSON.stringify(index, null, 2), 'utf-8'); - } + await updateSessionIndex(indexPath, (index) => { + if (!index.some((e) => e.sessionId === sessionId)) { + index.push({ + sessionId, + displayName: meta.displayName, + timestamp: meta.timestamp, + sessionType: meta.sessionType, + }); + } + return index; + }); } /** @@ -96,11 +102,7 @@ export async function removeCache(agent: ScriptAgent | ProductionAgent): Promise const sessionId = basename(historyDir); const sessionsDir = dirname(historyDir); const indexPath = join(sessionsDir, SESSION_INDEX_FILE); - const index = await readSessionIndex(indexPath); - const updated = index.filter((e) => e.sessionId !== sessionId); - if (updated.length !== index.length) { - await writeFile(indexPath, JSON.stringify(updated, null, 2), 'utf-8'); - } + await updateSessionIndex(indexPath, (index) => index.filter((e) => e.sessionId !== sessionId)); } /** @@ -134,8 +136,20 @@ export async function getCachedSessionIds(project: SfProject, agent: ScriptAgent } /** - * Return the history directory path for a session given its agentId and sessionId. - * Mirrors the path that agent.getHistoryDir() returns, without needing a full agent object. + * Return the single "current" session ID when safe: exactly one cached session for this agent. + * Returns undefined when there are zero or multiple sessions (caller should require --session-id). + */ +export async function getCurrentSessionId( + project: SfProject, + agent: ScriptAgent | ProductionAgent +): Promise { + const ids = await getCachedSessionIds(project, agent); + return ids.length === 1 ? ids[0] : undefined; +} + +/** + * Return the history directory path for a session given its agentId and sessionId, + * without requiring a full agent object. Used by the --all path in agent preview end. */ export function getSessionDir(project: SfProject, agentId: string, sessionId: string): string { return join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions', sessionId); @@ -143,8 +157,7 @@ export function getSessionDir(project: SfProject, agentId: string, sessionId: st /** * Remove the session marker by agentId and sessionId, without requiring a full agent object. - * Also removes the entry from the sessions index. - * Use this when iterating sessions from listCachedSessions (--all path). + * Used by the --all path in agent preview end when iterating sessions from listCachedSessions. */ export async function removeCacheById(project: SfProject, agentId: string, sessionId: string): Promise { const sessionsDir = join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions'); @@ -154,31 +167,14 @@ export async function removeCacheById(project: SfProject, agentId: string, sessi } catch { // already removed or never created } - - // Remove entry from the sessions index - const indexPath = join(sessionsDir, SESSION_INDEX_FILE); - const index = await readSessionIndex(indexPath); - const updated = index.filter((e) => e.sessionId !== sessionId); - if (updated.length !== index.length) { - await writeFile(indexPath, JSON.stringify(updated, null, 2), 'utf-8'); - } + await updateSessionIndex(join(sessionsDir, SESSION_INDEX_FILE), (index) => + index.filter((e) => e.sessionId !== sessionId) + ); } -/** - * Return the single "current" session ID when safe: exactly one cached session for this agent. - * Returns undefined when there are zero or multiple sessions (caller should require --session-id). - */ -export async function getCurrentSessionId( - project: SfProject, - agent: ScriptAgent | ProductionAgent -): Promise { - const ids = await getCachedSessionIds(project, agent); - return ids.length === 1 ? ids[0] : undefined; -} +export type CachedSessionInfo = { sessionId: string; timestamp?: string; sessionType?: SessionType }; +export type CachedSessionEntry = { agentId: string; displayName?: string; sessions: CachedSessionInfo[] }; -/** - * Read the sessions index file, returning an empty array if missing or unreadable. - */ async function readSessionIndex(indexPath: string): Promise { try { const raw = await readFile(indexPath, 'utf-8'); @@ -188,14 +184,17 @@ async function readSessionIndex(indexPath: string): Promise { } } -export type CachedSessionInfo = { sessionId: string; timestamp?: string; sessionType?: SessionType }; -export type CachedSessionEntry = { agentId: string; displayName?: string; sessions: CachedSessionInfo[] }; +async function updateSessionIndex(indexPath: string, updater: (index: SessionIndex) => SessionIndex): Promise { + const index = await readSessionIndex(indexPath); + const updated = updater(index); + const tmpPath = `${indexPath}.tmp`; + await writeFile(tmpPath, JSON.stringify(updated, null, 2), 'utf-8'); + await rename(tmpPath, indexPath); +} /** * List all cached preview sessions in the project, grouped by agent ID. * displayName (when present in session-meta.json) is the authoring bundle name or production agent API name for display. - * timestamp and sessionType are included when available (written by "agent preview start" after W-22203667). - * Prefers the sessions index for ordered, metadata-rich results; falls back to directory scan for older sessions. * Use this to show users which sessions exist so they can end or clean up. */ export async function listCachedSessions(project: SfProject): Promise { @@ -236,26 +235,30 @@ export async function listCachedSessions(project: SfProject): Promise s.isDirectory()) - .map(async (s): Promise => { + .map(async (s): Promise<(CachedSessionInfo & { displayName?: string }) | null> => { try { const raw = await readFile(join(sessionsDir, s.name, SESSION_META_FILE), 'utf-8'); const meta = JSON.parse(raw) as SessionMeta; - return { sessionId: s.name, timestamp: meta.timestamp, sessionType: meta.sessionType }; + return { + sessionId: s.name, + timestamp: meta.timestamp, + sessionType: meta.sessionType, + displayName: meta.displayName, + }; } catch { return null; } }) ); - sessions = sessionInfos.filter((s): s is CachedSessionInfo => s !== null); - if (sessions.length > 0) { - try { - const raw = await readFile(join(sessionsDir, sessions[0].sessionId, SESSION_META_FILE), 'utf-8'); - const meta = JSON.parse(raw) as SessionMeta; - displayName = meta.displayName; - } catch { - // ignore - } - } + const validSessions = sessionInfos.filter( + (s): s is CachedSessionInfo & { displayName?: string } => s !== null + ); + sessions = validSessions.map(({ sessionId, timestamp, sessionType }) => ({ + sessionId, + timestamp, + sessionType, + })); + displayName = validSessions[0]?.displayName; } } catch { // no sessions dir or unreadable From 2aa93f1ba22940e90bb49bc10162ad85d59a15b0 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 14:54:01 -0300 Subject: [PATCH 06/20] fix: remove agentId from EndedSession public result type agentId was not in the original result type and is not needed by callers. Kept as an internal SessionTask type for routing within endAll. Co-Authored-By: Claude Sonnet 4.6 --- schemas/agent-preview-end.json | 5 +---- src/commands/agent/preview/end.ts | 21 +++++++++++---------- test/commands/agent/preview/end.test.ts | 6 +++--- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/schemas/agent-preview-end.json b/schemas/agent-preview-end.json index a75cfe6d..5458bdd6 100644 --- a/schemas/agent-preview-end.json +++ b/schemas/agent-preview-end.json @@ -25,9 +25,6 @@ "EndedSession": { "type": "object", "properties": { - "agentId": { - "type": "string" - }, "sessionId": { "type": "string" }, @@ -35,7 +32,7 @@ "type": "string" } }, - "required": ["agentId", "sessionId", "tracesPath"], + "required": ["sessionId", "tracesPath"], "additionalProperties": false } } diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index 1b831d31..602b2299 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -31,13 +31,14 @@ Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.end'); export type EndedSession = { - agentId: string; sessionId: string; tracesPath: string; }; export type AgentPreviewEndResult = { ended: EndedSession[] } | EndedSession; +type SessionTask = EndedSession & { agentId: string }; + export default class AgentPreviewEnd extends SfCommand { public static readonly summary = messages.getMessage('summary'); public static readonly description = messages.getMessage('description'); @@ -159,7 +160,7 @@ export default class AgentPreviewEnd extends SfCommand { } await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_success' }); - const result: EndedSession = { agentId: agent.getAgentIdForStorage(), sessionId, tracesPath }; + const result: EndedSession = { sessionId, tracesPath }; this.log(messages.getMessage('output.tracesPath', [tracesPath])); return result; } @@ -191,7 +192,7 @@ export default class AgentPreviewEnd extends SfCommand { flags: { 'api-name'?: string; 'authoring-bundle'?: string; 'no-prompt'?: boolean }, conn: Connection | undefined ): Promise<{ ended: EndedSession[] }> { - let sessionsToEnd: EndedSession[]; + let sessionsToEnd: SessionTask[]; let agent: ScriptAgent | ProductionAgent | undefined; if (flags['api-name'] !== undefined || flags['authoring-bundle'] !== undefined) { @@ -232,10 +233,10 @@ export default class AgentPreviewEnd extends SfCommand { // Process sessions serially so that agent.setSessionId() / agent.preview.end() calls on the // shared agent object do not race with each other. const ended: EndedSession[] = []; - const failed: Array<{ session: EndedSession; error: string }> = []; + const failed: Array<{ task: SessionTask; error: string }> = []; - for (const session of sessionsToEnd) { - const { agentId, sessionId } = session; + for (const task of sessionsToEnd) { + const { agentId, sessionId, tracesPath } = task; try { if (agent !== undefined) { // For --api-name / --authoring-bundle: end the session via the agent so that @@ -251,15 +252,15 @@ export default class AgentPreviewEnd extends SfCommand { } // eslint-disable-next-line no-await-in-loop await removeCacheById(this.project!, agentId, sessionId); - ended.push(session); + ended.push({ sessionId, tracesPath }); } catch (error) { - failed.push({ session, error: SfError.wrap(error).message }); + failed.push({ task, error: SfError.wrap(error).message }); } } if (failed.length > 0) { - const failedList = failed.map((f) => `${f.session.agentId}/${f.session.sessionId}: ${f.error}`).join(', '); - const endedIds = ended.map((e) => `${e.agentId}/${e.sessionId}`).join(', '); + const failedList = failed.map((f) => `${f.task.agentId}/${f.task.sessionId}: ${f.error}`).join(', '); + const endedIds = ended.map((e) => e.sessionId).join(', '); const msg = `Failed to end ${failed.length} session(s): [${failedList}]. Successfully ended ${ ended.length } session(s)${ended.length > 0 ? `: [${endedIds}]` : ''}.`; diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index d3a83e6b..d3cb4214 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -194,9 +194,9 @@ describe('agent preview end', () => { expect(removeCacheByIdStub.callCount).to.equal(3); expect(result).to.deep.equal({ ended: [ - { agentId: 'agent_a', sessionId: 'session-1', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-1' }, - { agentId: 'agent_a', sessionId: 'session-2', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-2' }, - { agentId: 'agent_b', sessionId: 'session-3', tracesPath: '/mock/.sfdx/agents/agent_b/sessions/session-3' }, + { sessionId: 'session-1', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-1' }, + { sessionId: 'session-2', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-2' }, + { sessionId: 'session-3', tracesPath: '/mock/.sfdx/agents/agent_b/sessions/session-3' }, ], }); }); From 0336fb9e8c6f43f36b7820e0faff69da155b0588 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 14:58:38 -0300 Subject: [PATCH 07/20] refactor: enforce --target-org dependency on --api-name at flag level Use oclif dependsOn instead of a manual guard in run(). authoring-bundle does not need target-org since it works client-side only. Co-Authored-By: Claude Sonnet 4.6 --- messages/agent.preview.end.md | 4 ---- src/commands/agent/preview/end.ts | 6 +----- test/commands/agent/preview/end.test.ts | 7 +++---- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index 000885f6..8edad25e 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -50,10 +50,6 @@ Preview session '%s' is invalid or has expired. Failed to end preview session: %s -# error.missingTargetOrgForApiName - -The --target-org flag is required when using --api-name because a connection to the org is needed to locate the published agent. - # output.tracesPath Session traces: %s diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index 602b2299..5f27fd33 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -52,7 +52,6 @@ export default class AgentPreviewEnd extends SfCommand { public static readonly errorCodes = toHelpSection('ERROR CODES', { 'Succeeded (0)': 'Preview session ended successfully and traces saved.', - 'MissingTargetOrgForApiName (1)': 'The --target-org flag is required when --api-name is used.', 'NotFound (2)': 'Agent not found, or no preview session exists for this agent.', 'PreviewEndFailed (4)': 'Failed to end the preview session.', 'SessionAmbiguous (5)': 'Multiple preview sessions found; specify --session-id to choose one.', @@ -71,6 +70,7 @@ export default class AgentPreviewEnd extends SfCommand { char: 'n', exclusive: ['authoring-bundle'], atLeastOne: ['api-name', 'authoring-bundle', 'all'], + dependsOn: ['target-org'], }), 'authoring-bundle': Flags.string({ summary: messages.getMessage('flags.authoring-bundle.summary'), @@ -91,10 +91,6 @@ export default class AgentPreviewEnd extends SfCommand { public async run(): Promise { const { flags } = await this.parse(AgentPreviewEnd); - if (flags['api-name'] && !flags['target-org']) { - throw new SfError(messages.getMessage('error.missingTargetOrgForApiName'), 'MissingTargetOrgForApiName', [], 1); - } - const conn = flags['target-org']?.getConnection(flags['api-version']); if (flags['all']) { diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index d3cb4214..7ebd5a87 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -154,7 +154,7 @@ describe('agent preview end', () => { await AgentPreviewEnd.run(['--api-name', 'My_Published_Agent']); expect.fail('Expected an error to be thrown'); } catch (error: unknown) { - expect((error as Error).message).to.include('--target-org flag is required'); + expect((error as Error).message).to.include('--target-org'); } }); @@ -234,13 +234,12 @@ describe('agent preview end', () => { expect((result as { ended: unknown[] }).ended).to.have.length(2); }); - it('throws MissingTargetOrgForApiName when --all + --api-name is used without --target-org', async () => { + it('throws when --all + --api-name is used without --target-org', async () => { try { await AgentPreviewEnd.run(['--all', '--api-name', 'My_Published_Agent']); expect.fail('Expected an error to be thrown'); } catch (error: unknown) { - expect((error as Error).message).to.include('--target-org flag is required'); - expect((error as any).name).to.equal('MissingTargetOrgForApiName'); + expect((error as Error).message).to.include('--target-org'); } }); From 3ea4c2693304ced6fe08e61abc552567321524fc Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 15:03:14 -0300 Subject: [PATCH 08/20] refactor: extract callPreviewEnd to remove instanceof duplication The ScriptAgent/ProductionAgent branching was identical in the single-session path and the endAll loop. Extracted to a module-level function. Co-Authored-By: Claude Sonnet 4.6 --- src/commands/agent/preview/end.ts | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index 5f27fd33..b0c44970 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -30,6 +30,14 @@ import { Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.end'); +async function callPreviewEnd(agent: ScriptAgent | ProductionAgent): Promise { + if (agent instanceof ScriptAgent) { + await agent.preview.end(); + } else if (agent instanceof ProductionAgent) { + await agent.preview.end('UserRequest'); + } +} + export type EndedSession = { sessionId: string; tracesPath: string; @@ -138,11 +146,7 @@ export default class AgentPreviewEnd extends SfCommand { await removeCache(agent); try { - if (agent instanceof ScriptAgent) { - await agent.preview.end(); - } else if (agent instanceof ProductionAgent) { - await agent.preview.end('UserRequest'); - } + await callPreviewEnd(agent); } catch (error) { const wrapped = SfError.wrap(error); await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_failed' }); @@ -235,16 +239,11 @@ export default class AgentPreviewEnd extends SfCommand { const { agentId, sessionId, tracesPath } = task; try { if (agent !== undefined) { - // For --api-name / --authoring-bundle: end the session via the agent so that - // ScriptAgent flushes traces to disk and ProductionAgent issues the server-side request. + // For --api-name / --authoring-bundle: ScriptAgent flushes traces to disk, + // ProductionAgent issues the server-side request. agent.setSessionId(sessionId); - if (agent instanceof ScriptAgent) { - // eslint-disable-next-line no-await-in-loop - await agent.preview.end(); - } else if (agent instanceof ProductionAgent) { - // eslint-disable-next-line no-await-in-loop - await agent.preview.end('UserRequest'); - } + // eslint-disable-next-line no-await-in-loop + await callPreviewEnd(agent); } // eslint-disable-next-line no-await-in-loop await removeCacheById(this.project!, agentId, sessionId); From f54e90667057f3f06aea640c8fa7a3eeb895dc53 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 15:13:43 -0300 Subject: [PATCH 09/20] chore: restore atomic-write comment on updateSessionIndex Co-Authored-By: Claude Sonnet 4.6 --- src/previewSessionStore.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/previewSessionStore.ts b/src/previewSessionStore.ts index 6ce7a3ac..ef9213d6 100644 --- a/src/previewSessionStore.ts +++ b/src/previewSessionStore.ts @@ -184,6 +184,8 @@ async function readSessionIndex(indexPath: string): Promise { } } +// Atomically read-modify-write the sessions index: write to a tmp file then rename to avoid +// partial writes and reduce the window for concurrent-write races (last writer wins, no silent drops). async function updateSessionIndex(indexPath: string, updater: (index: SessionIndex) => SessionIndex): Promise { const index = await readSessionIndex(indexPath); const updated = updater(index); From 6f64ff5731902595005772b5af2c0653ae0f447a Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 15:32:26 -0300 Subject: [PATCH 10/20] refactor: eliminate getSessionDir/removeCacheById in favor of duck-typed removeCache removeCache only needs getHistoryDir(), so the no-agent path in --all can pass a plain object instead of requiring a separate removeCacheById helper. Loosened removeCache/validatePreviewSession signatures to structural types. Co-Authored-By: Claude Sonnet 4.6 --- src/commands/agent/preview/end.ts | 18 ++++++----- src/previewSessionStore.ts | 29 ++---------------- test/commands/agent/preview/end.test.ts | 40 +++++++------------------ 3 files changed, 24 insertions(+), 63 deletions(-) diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index b0c44970..77ee8a09 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -14,16 +14,15 @@ * limitations under the License. */ +import { join } from 'node:path'; import { Flags, SfCommand, toHelpSection, prompts } from '@salesforce/sf-plugins-core'; import { Messages, SfError, Lifecycle, EnvironmentVariable } from '@salesforce/core'; import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; import type { Connection } from '@salesforce/core'; import { getCachedSessionIds, - getSessionDir, listCachedSessions, removeCache, - removeCacheById, validatePreviewSession, } from '../../../previewSessionStore.js'; @@ -195,6 +194,7 @@ export default class AgentPreviewEnd extends SfCommand { let sessionsToEnd: SessionTask[]; let agent: ScriptAgent | ProductionAgent | undefined; + const projectPath = this.project!.getPath(); if (flags['api-name'] !== undefined || flags['authoring-bundle'] !== undefined) { agent = await this.initAgent(flags, conn); const agentId = agent.getAgentIdForStorage(); @@ -202,7 +202,7 @@ export default class AgentPreviewEnd extends SfCommand { sessionsToEnd = sessionIds.map((sessionId) => ({ agentId, sessionId, - tracesPath: getSessionDir(this.project!, agentId, sessionId), + tracesPath: join(projectPath, '.sfdx', 'agents', agentId, 'sessions', sessionId), })); } else { const allSessions = await listCachedSessions(this.project!); @@ -210,7 +210,7 @@ export default class AgentPreviewEnd extends SfCommand { sessions.map(({ sessionId }) => ({ agentId, sessionId, - tracesPath: getSessionDir(this.project!, agentId, sessionId), + tracesPath: join(projectPath, '.sfdx', 'agents', agentId, 'sessions', sessionId), })) ); } @@ -236,7 +236,7 @@ export default class AgentPreviewEnd extends SfCommand { const failed: Array<{ task: SessionTask; error: string }> = []; for (const task of sessionsToEnd) { - const { agentId, sessionId, tracesPath } = task; + const { sessionId, tracesPath } = task; try { if (agent !== undefined) { // For --api-name / --authoring-bundle: ScriptAgent flushes traces to disk, @@ -244,9 +244,13 @@ export default class AgentPreviewEnd extends SfCommand { agent.setSessionId(sessionId); // eslint-disable-next-line no-await-in-loop await callPreviewEnd(agent); + // eslint-disable-next-line no-await-in-loop + await removeCache(agent); + } else { + // No agent object — client-side cleanup only using the known path. + // eslint-disable-next-line no-await-in-loop + await removeCache({ getHistoryDir: () => Promise.resolve(tracesPath) }); } - // eslint-disable-next-line no-await-in-loop - await removeCacheById(this.project!, agentId, sessionId); ended.push({ sessionId, tracesPath }); } catch (error) { failed.push({ task, error: SfError.wrap(error).message }); diff --git a/src/previewSessionStore.ts b/src/previewSessionStore.ts index ef9213d6..ea5c6d57 100644 --- a/src/previewSessionStore.ts +++ b/src/previewSessionStore.ts @@ -72,7 +72,7 @@ export async function createCache( * Caller must set sessionId on the agent (agent.setSessionId) before calling. * Throws SfError if the session marker is not found. */ -export async function validatePreviewSession(agent: ScriptAgent | ProductionAgent): Promise { +export async function validatePreviewSession(agent: { getHistoryDir: () => Promise }): Promise { const historyDir = await agent.getHistoryDir(); const metaPath = join(historyDir, SESSION_META_FILE); try { @@ -89,7 +89,7 @@ export async function validatePreviewSession(agent: ScriptAgent | ProductionAgen * Remove the session marker so this session is no longer considered "active" for send/end without --session-id. * Call after ending the session. Caller must set sessionId on the agent before calling. */ -export async function removeCache(agent: ScriptAgent | ProductionAgent): Promise { +export async function removeCache(agent: { getHistoryDir: () => Promise }): Promise { const historyDir = await agent.getHistoryDir(); const metaPath = join(historyDir, SESSION_META_FILE); try { @@ -147,31 +147,6 @@ export async function getCurrentSessionId( return ids.length === 1 ? ids[0] : undefined; } -/** - * Return the history directory path for a session given its agentId and sessionId, - * without requiring a full agent object. Used by the --all path in agent preview end. - */ -export function getSessionDir(project: SfProject, agentId: string, sessionId: string): string { - return join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions', sessionId); -} - -/** - * Remove the session marker by agentId and sessionId, without requiring a full agent object. - * Used by the --all path in agent preview end when iterating sessions from listCachedSessions. - */ -export async function removeCacheById(project: SfProject, agentId: string, sessionId: string): Promise { - const sessionsDir = join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions'); - const metaPath = join(sessionsDir, sessionId, SESSION_META_FILE); - try { - await unlink(metaPath); - } catch { - // already removed or never created - } - await updateSessionIndex(join(sessionsDir, SESSION_INDEX_FILE), (index) => - index.filter((e) => e.sessionId !== sessionId) - ); -} - export type CachedSessionInfo = { sessionId: string; timestamp?: string; sessionType?: SessionType }; export type CachedSessionEntry = { agentId: string; displayName?: string; sessions: CachedSessionInfo[] }; diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index 7ebd5a87..db5ee6a2 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -33,10 +33,8 @@ describe('agent preview end', () => { let AgentPreviewEnd: any; let initStub: sinon.SinonStub; let getCachedSessionIdsStub: sinon.SinonStub; - let getSessionDirStub: sinon.SinonStub; let listCachedSessionsStub: sinon.SinonStub; let removeCacheStub: sinon.SinonStub; - let removeCacheByIdStub: sinon.SinonStub; let validatePreviewSessionStub: sinon.SinonStub; let confirmStub: sinon.SinonStub; let agentPreviewEndStub: sinon.SinonStub; @@ -44,10 +42,8 @@ describe('agent preview end', () => { beforeEach(async () => { agentPreviewEndStub = $$.SANDBOX.stub().resolves(); getCachedSessionIdsStub = $$.SANDBOX.stub().resolves([SESSION_ID]); - getSessionDirStub = $$.SANDBOX.stub().returns(TRACES_PATH); listCachedSessionsStub = $$.SANDBOX.stub().resolves([]); removeCacheStub = $$.SANDBOX.stub().resolves(); - removeCacheByIdStub = $$.SANDBOX.stub().resolves(); validatePreviewSessionStub = $$.SANDBOX.stub().resolves(); confirmStub = $$.SANDBOX.stub().resolves(true); @@ -71,10 +67,8 @@ describe('agent preview end', () => { }, '../../../../src/previewSessionStore.js': { getCachedSessionIds: getCachedSessionIdsStub, - getSessionDir: getSessionDirStub, listCachedSessions: listCachedSessionsStub, removeCache: removeCacheStub, - removeCacheById: removeCacheByIdStub, validatePreviewSession: validatePreviewSessionStub, }, '@salesforce/sf-plugins-core': { @@ -183,41 +177,34 @@ describe('agent preview end', () => { { agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }, { sessionId: 'session-2' }] }, { agentId: 'agent_b', sessions: [{ sessionId: 'session-3' }] }, ]); - getSessionDirStub.callsFake( - (_proj: any, agentId: string, sessionId: string) => `/mock/.sfdx/agents/${agentId}/sessions/${sessionId}` - ); const result = await AgentPreviewEnd.run(['--all', '--no-prompt']); expect(listCachedSessionsStub.calledOnce).to.be.true; expect(initStub.called).to.be.false; - expect(removeCacheByIdStub.callCount).to.equal(3); + expect(removeCacheStub.callCount).to.equal(3); expect(result).to.deep.equal({ ended: [ - { sessionId: 'session-1', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-1' }, - { sessionId: 'session-2', tracesPath: '/mock/.sfdx/agents/agent_a/sessions/session-2' }, - { sessionId: 'session-3', tracesPath: '/mock/.sfdx/agents/agent_b/sessions/session-3' }, + { sessionId: 'session-1', tracesPath: `${MOCK_PROJECT_DIR}/.sfdx/agents/agent_a/sessions/session-1` }, + { sessionId: 'session-2', tracesPath: `${MOCK_PROJECT_DIR}/.sfdx/agents/agent_a/sessions/session-2` }, + { sessionId: 'session-3', tracesPath: `${MOCK_PROJECT_DIR}/.sfdx/agents/agent_b/sessions/session-3` }, ], }); }); it('filters to the specified agent when combined with --authoring-bundle', async () => { getCachedSessionIdsStub.resolves(['session-1', 'session-2']); - getSessionDirStub.returns(TRACES_PATH); const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); expect(initStub.calledOnce).to.be.true; expect(listCachedSessionsStub.called).to.be.false; - expect(removeCacheByIdStub.callCount).to.equal(2); + expect(removeCacheStub.callCount).to.equal(2); expect((result as { ended: unknown[] }).ended).to.have.length(2); }); it('filters to the specified agent when combined with --api-name and --target-org (happy path)', async () => { getCachedSessionIdsStub.resolves(['session-a', 'session-b']); - getSessionDirStub.callsFake( - (_proj: any, agentId: string, sessionId: string) => `/mock/.sfdx/agents/${agentId}/sessions/${sessionId}` - ); const result = await AgentPreviewEnd.run([ '--all', @@ -230,7 +217,7 @@ describe('agent preview end', () => { expect(initStub.calledOnce).to.be.true; expect(listCachedSessionsStub.called).to.be.false; - expect(removeCacheByIdStub.callCount).to.equal(2); + expect(removeCacheStub.callCount).to.equal(2); expect((result as { ended: unknown[] }).ended).to.have.length(2); }); @@ -249,15 +236,12 @@ describe('agent preview end', () => { const result = await AgentPreviewEnd.run(['--all', '--no-prompt']); expect(result).to.deep.equal({ ended: [] }); - expect(removeCacheByIdStub.called).to.be.false; + expect(removeCacheStub.called).to.be.false; }); it('records partial results and throws a structured error when agent.preview.end() throws mid-loop', async () => { // Three sessions: session-1 succeeds, session-2 fails, session-3 succeeds getCachedSessionIdsStub.resolves(['session-1', 'session-2', 'session-3']); - getSessionDirStub.callsFake( - (_proj: any, agentId: string, sessionId: string) => `/mock/.sfdx/agents/${agentId}/sessions/${sessionId}` - ); // Fail only on the second call (session-2) agentPreviewEndStub .onFirstCall() @@ -279,7 +263,7 @@ describe('agent preview end', () => { // Also mentions the ones that succeeded expect(err.message).to.include('Successfully ended 2 session(s)'); // Only 2 successful removes happened (session-1 and session-3) - expect(removeCacheByIdStub.callCount).to.equal(2); + expect(removeCacheStub.callCount).to.equal(2); expect(err.name).to.equal('PreviewEndPartialFailure'); } }); @@ -288,13 +272,12 @@ describe('agent preview end', () => { describe('--all flag: confirmation prompt', () => { it('prompts for confirmation before ending sessions', async () => { listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); - getSessionDirStub.returns(TRACES_PATH); confirmStub.resolves(true); await AgentPreviewEnd.run(['--all']); expect(confirmStub.calledOnce).to.be.true; - expect(removeCacheByIdStub.calledOnce).to.be.true; + expect(removeCacheStub.calledOnce).to.be.true; }); it('returns an empty ended list when user declines the confirmation prompt', async () => { @@ -303,18 +286,17 @@ describe('agent preview end', () => { const result = await AgentPreviewEnd.run(['--all']); - expect(removeCacheByIdStub.called).to.be.false; + expect(removeCacheStub.called).to.be.false; expect(result).to.deep.equal({ ended: [] }); }); it('skips the confirmation prompt when --no-prompt is provided', async () => { listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); - getSessionDirStub.returns(TRACES_PATH); await AgentPreviewEnd.run(['--all', '--no-prompt']); expect(confirmStub.called).to.be.false; - expect(removeCacheByIdStub.calledOnce).to.be.true; + expect(removeCacheStub.calledOnce).to.be.true; }); }); }); From 26666d1cf26a8f4f37425bcd24565922688474da Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 15:36:44 -0300 Subject: [PATCH 11/20] chore: restore previewSessionStore.ts to main shim and upgrade @salesforce/agents to 1.2.0 The shim was inadvertently replaced with a full inline implementation. Restoring it to the re-export shim from main. Bumping agents to 1.2.0 which now exports the session store functions the shim references. Co-Authored-By: Claude Sonnet 4.6 --- src/previewSessionStore.ts | 247 +------------------ yarn.lock | 486 +++++++++++++++++++------------------ 2 files changed, 265 insertions(+), 468 deletions(-) diff --git a/src/previewSessionStore.ts b/src/previewSessionStore.ts index ea5c6d57..eb926372 100644 --- a/src/previewSessionStore.ts +++ b/src/previewSessionStore.ts @@ -14,238 +14,15 @@ * limitations under the License. */ -import { readdir, readFile, rename, unlink, writeFile } from 'node:fs/promises'; -import { basename, dirname, join } from 'node:path'; -import { SfError } from '@salesforce/core'; -import type { SfProject } from '@salesforce/core'; -import type { ProductionAgent, ScriptAgent } from '@salesforce/agents'; - -const SESSION_META_FILE = 'session-meta.json'; -const SESSION_INDEX_FILE = 'index.json'; - -export type SessionType = 'simulated' | 'live' | 'published'; -export type SessionMeta = { displayName?: string; timestamp?: string; sessionType?: SessionType }; -type SessionIndex = Array<{ - sessionId: string; - displayName?: string; - timestamp?: string; - sessionType?: SessionType; -}>; - -/** - * Save a marker so send/end can validate that the session was started for this agent. - * Caller must have started the session (agent has sessionId set). Uses agent.getHistoryDir() for the path. - * Pass displayName (authoring bundle name or production agent API name) so "agent preview sessions" can show it. - */ -export async function createCache( - agent: ScriptAgent | ProductionAgent, - options?: { displayName?: string; sessionType?: SessionType } -): Promise { - const historyDir = await agent.getHistoryDir(); - const metaPath = join(historyDir, SESSION_META_FILE); - const meta: SessionMeta = { - displayName: options?.displayName, - timestamp: new Date().toISOString(), - sessionType: options?.sessionType, - }; - await writeFile(metaPath, JSON.stringify(meta), 'utf-8'); - - // Update the sessions index for ordered browsing - const sessionId = basename(historyDir); - const sessionsDir = dirname(historyDir); - const indexPath = join(sessionsDir, SESSION_INDEX_FILE); - await updateSessionIndex(indexPath, (index) => { - if (!index.some((e) => e.sessionId === sessionId)) { - index.push({ - sessionId, - displayName: meta.displayName, - timestamp: meta.timestamp, - sessionType: meta.sessionType, - }); - } - return index; - }); -} - -/** - * Validate that the session was started for this agent (marker file exists in agent's history dir for current sessionId). - * Caller must set sessionId on the agent (agent.setSessionId) before calling. - * Throws SfError if the session marker is not found. - */ -export async function validatePreviewSession(agent: { getHistoryDir: () => Promise }): Promise { - const historyDir = await agent.getHistoryDir(); - const metaPath = join(historyDir, SESSION_META_FILE); - try { - await readFile(metaPath, 'utf-8'); - } catch { - throw new SfError( - 'No preview session found for this session ID. Run "sf agent preview start" first.', - 'PreviewSessionNotFound' - ); - } -} - -/** - * Remove the session marker so this session is no longer considered "active" for send/end without --session-id. - * Call after ending the session. Caller must set sessionId on the agent before calling. - */ -export async function removeCache(agent: { getHistoryDir: () => Promise }): Promise { - const historyDir = await agent.getHistoryDir(); - const metaPath = join(historyDir, SESSION_META_FILE); - try { - await unlink(metaPath); - } catch { - // already removed or never created - } - - // Remove entry from the sessions index - const sessionId = basename(historyDir); - const sessionsDir = dirname(historyDir); - const indexPath = join(sessionsDir, SESSION_INDEX_FILE); - await updateSessionIndex(indexPath, (index) => index.filter((e) => e.sessionId !== sessionId)); -} - -/** - * List session IDs that have a cache marker (started via "agent preview start") for this agent. - * Uses project path and agent's storage ID to find .sfdx/agents//sessions//session-meta.json. - */ -export async function getCachedSessionIds(project: SfProject, agent: ScriptAgent | ProductionAgent): Promise { - const agentId = agent.getAgentIdForStorage(); - const sessionsDir = join(project.getPath(), '.sfdx', 'agents', agentId, 'sessions'); - const sessionIds: string[] = []; - try { - const entries = await readdir(sessionsDir, { withFileTypes: true }); - const dirs = entries.filter((e) => e.isDirectory()).map((e) => e.name); - const hasMarker = await Promise.all( - dirs.map(async (name) => { - try { - await readFile(join(sessionsDir, name, SESSION_META_FILE), 'utf-8'); - return true; - } catch { - return false; - } - }) - ); - dirs.forEach((name, i) => { - if (hasMarker[i]) sessionIds.push(name); - }); - } catch { - // sessions dir missing or unreadable - } - return sessionIds; -} - -/** - * Return the single "current" session ID when safe: exactly one cached session for this agent. - * Returns undefined when there are zero or multiple sessions (caller should require --session-id). - */ -export async function getCurrentSessionId( - project: SfProject, - agent: ScriptAgent | ProductionAgent -): Promise { - const ids = await getCachedSessionIds(project, agent); - return ids.length === 1 ? ids[0] : undefined; -} - -export type CachedSessionInfo = { sessionId: string; timestamp?: string; sessionType?: SessionType }; -export type CachedSessionEntry = { agentId: string; displayName?: string; sessions: CachedSessionInfo[] }; - -async function readSessionIndex(indexPath: string): Promise { - try { - const raw = await readFile(indexPath, 'utf-8'); - return JSON.parse(raw) as SessionIndex; - } catch { - return []; - } -} - -// Atomically read-modify-write the sessions index: write to a tmp file then rename to avoid -// partial writes and reduce the window for concurrent-write races (last writer wins, no silent drops). -async function updateSessionIndex(indexPath: string, updater: (index: SessionIndex) => SessionIndex): Promise { - const index = await readSessionIndex(indexPath); - const updated = updater(index); - const tmpPath = `${indexPath}.tmp`; - await writeFile(tmpPath, JSON.stringify(updated, null, 2), 'utf-8'); - await rename(tmpPath, indexPath); -} - -/** - * List all cached preview sessions in the project, grouped by agent ID. - * displayName (when present in session-meta.json) is the authoring bundle name or production agent API name for display. - * Use this to show users which sessions exist so they can end or clean up. - */ -export async function listCachedSessions(project: SfProject): Promise { - const base = join(project.getPath(), '.sfdx', 'agents'); - const result: CachedSessionEntry[] = []; - try { - const agentDirs = await readdir(base, { withFileTypes: true }); - const entries = await Promise.all( - agentDirs - .filter((ent) => ent.isDirectory()) - .map(async (ent) => { - const agentId = ent.name; - const sessionsDir = join(base, agentId, 'sessions'); - let sessions: CachedSessionInfo[] = []; - let displayName: string | undefined; - try { - // Prefer the index for ordered, metadata-rich results - const index = await readSessionIndex(join(sessionsDir, SESSION_INDEX_FILE)); - if (index.length > 0) { - // Verify each indexed session still has its marker file (guard against manual cleanup) - const verified = await Promise.all( - index.map(async (entry) => { - try { - await readFile(join(sessionsDir, entry.sessionId, SESSION_META_FILE), 'utf-8'); - return entry; - } catch { - return null; - } - }) - ); - sessions = verified - .filter((e): e is SessionIndex[number] => e !== null) - .map(({ sessionId, timestamp, sessionType }) => ({ sessionId, timestamp, sessionType })); - displayName = index[0]?.displayName; - } else { - // Fallback: scan directories (no index yet, e.g. sessions started before this feature) - const sessionDirs = await readdir(sessionsDir, { withFileTypes: true }); - const sessionInfos = await Promise.all( - sessionDirs - .filter((s) => s.isDirectory()) - .map(async (s): Promise<(CachedSessionInfo & { displayName?: string }) | null> => { - try { - const raw = await readFile(join(sessionsDir, s.name, SESSION_META_FILE), 'utf-8'); - const meta = JSON.parse(raw) as SessionMeta; - return { - sessionId: s.name, - timestamp: meta.timestamp, - sessionType: meta.sessionType, - displayName: meta.displayName, - }; - } catch { - return null; - } - }) - ); - const validSessions = sessionInfos.filter( - (s): s is CachedSessionInfo & { displayName?: string } => s !== null - ); - sessions = validSessions.map(({ sessionId, timestamp, sessionType }) => ({ - sessionId, - timestamp, - sessionType, - })); - displayName = validSessions[0]?.displayName; - } - } catch { - // no sessions dir or unreadable - } - return { agentId, displayName, sessions }; - }) - ); - result.push(...entries.filter((e) => e.sessions.length > 0)); - } catch { - // no agents dir or unreadable - } - return result; -} +export { + createPreviewSessionCache as createCache, + validatePreviewSession, + removePreviewSessionCache as removeCache, + getCachedPreviewSessionIds as getCachedSessionIds, + getCurrentPreviewSessionId as getCurrentSessionId, + listCachedPreviewSessions as listCachedSessions, + type SessionType, + type PreviewSessionMeta, + type CachedPreviewSessionInfo, + type CachedPreviewSessionEntry, +} from '@salesforce/agents'; diff --git a/yarn.lock b/yarn.lock index 45c4afb8..25c075e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1346,7 +1346,7 @@ "@jsforce/jsforce-node@^3.10.13": version "3.10.14" - resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.10.14.tgz#e6429626118a86247605f14b2466026f7180cff8" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsforce/jsforce-node/-/jsforce-node-3.10.14.tgz#e6429626118a86247605f14b2466026f7180cff8" integrity sha512-p8Ug1SypcAT7Q0zZA0+7fyBmgUpB/aXkde4Bxmu0S/O4p28CVwgYvKyFd9vswmHIhFabd/QqUCrlYuVhYdr2Ew== dependencies: "@sindresorhus/is" "^4" @@ -1362,22 +1362,22 @@ "@jsonjoy.com/base64@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== "@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": version "1.2.1" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== "@jsonjoy.com/codegen@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== "@jsonjoy.com/json-pack@^1.11.0": version "1.21.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== dependencies: "@jsonjoy.com/base64" "^1.1.2" @@ -1391,7 +1391,7 @@ "@jsonjoy.com/json-pointer@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== dependencies: "@jsonjoy.com/codegen" "^1.0.0" @@ -1399,7 +1399,7 @@ "@jsonjoy.com/util@^1.9.0": version "1.9.0" - resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== dependencies: "@jsonjoy.com/buffers" "^1.0.0" @@ -1407,7 +1407,7 @@ "@nodable/entities@2.1.0", "@nodable/entities@^2.1.0": version "2.1.0" - resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA== "@nodelib/fs.scandir@2.1.5": @@ -1561,7 +1561,7 @@ "@pinojs/redact@^0.4.0": version "0.4.0" - resolved "https://registry.yarnpkg.com/@pinojs/redact/-/redact-0.4.0.tgz#c3de060dd12640dcc838516aa2a6803cc7b2e9d6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@pinojs/redact/-/redact-0.4.0.tgz#c3de060dd12640dcc838516aa2a6803cc7b2e9d6" integrity sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg== "@pkgjs/parseargs@^0.11.0": @@ -1597,7 +1597,7 @@ "@salesforce/agents@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-1.2.0.tgz#6f360f824b80bd66e8ba561f98fe52bc62e24ab9" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/agents/-/agents-1.2.0.tgz#6f360f824b80bd66e8ba561f98fe52bc62e24ab9" integrity sha512-gyF1xzJcEp3MuS8Apf1eUGUvy41zq7HQqKPEhDIU6aUiowoewW/RI9LcPB0K7LPrGCIiARq4TYKlxf452HASqA== dependencies: "@salesforce/core" "^8.28.3" @@ -1688,7 +1688,7 @@ "@salesforce/kit@^3.2.3", "@salesforce/kit@^3.2.4", "@salesforce/kit@^3.2.6": version "3.2.6" - resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-3.2.6.tgz#6a6c13b463b51694a43d61094af67171086ed4f5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/kit/-/kit-3.2.6.tgz#6a6c13b463b51694a43d61094af67171086ed4f5" integrity sha512-O8S4LWerHa9Zosqh+IoQjgLtpxMOfObRxaRnUdRV4MLtFUi+bQxQiyFvve6eEaBaMP1b1xVDQpvSvQ+PXEDGFQ== dependencies: "@salesforce/ts-types" "^2.0.12" @@ -1746,7 +1746,27 @@ cli-progress "^3.12.0" terminal-link "^3.0.0" -"@salesforce/source-deploy-retrieve@^12.32.7", "@salesforce/source-deploy-retrieve@^12.32.8": +"@salesforce/source-deploy-retrieve@^12.32.7": + version "12.35.0" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.35.0.tgz#3df5f9ebd25e8b31ab245ec3827b44a97f8e1156" + integrity sha512-R/qO0JavpDsfhmkoR/z9jcB9mJFrJCAfaRaySmDuaqiHPuBVlpzey44irCtboNq6agqkOOogIbE3d4gUt5BGHQ== + dependencies: + "@salesforce/core" "^8.28.4" + "@salesforce/kit" "^3.2.4" + "@salesforce/ts-types" "^2.0.12" + "@salesforce/types" "^1.6.0" + fast-levenshtein "^3.0.0" + fast-xml-parser "^5.7.2" + got "^11.8.6" + graceful-fs "^4.2.11" + ignore "^5.3.2" + jszip "^3.10.1" + mime "2.6.0" + minimatch "^9.0.9" + proxy-agent "^6.5.0" + yaml "^2.8.3" + +"@salesforce/source-deploy-retrieve@^12.32.8": version "12.34.5" resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.34.5.tgz#c02cd88f6c673c75b0d15bf06c8dafc85d06a004" integrity sha512-iL+656HXNGFMv0DTPF4MKCaJ3de9qGyIzOrOyZ/CL1l0CYcgp2YHrLJuSaCKujul0ymceUGcAptSsZcSVWhjqw== @@ -1768,12 +1788,12 @@ "@salesforce/ts-types@^2.0.11", "@salesforce/ts-types@^2.0.12": version "2.0.12" - resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-2.0.12.tgz#60420622812a7ec7e46d220667bc29b42dc247ff" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/ts-types/-/ts-types-2.0.12.tgz#60420622812a7ec7e46d220667bc29b42dc247ff" integrity sha512-BIJyduJC18Kc8z+arUm5AZ9VkPRyw1KKAm+Tk+9LT99eOzhNilyfKzhZ4t+tG2lIGgnJpmytZfVDZ0e2kFul8g== "@salesforce/types@^1.6.0", "@salesforce/types@^1.7.1": version "1.7.1" - resolved "https://registry.yarnpkg.com/@salesforce/types/-/types-1.7.1.tgz#8983f87508ac21bfb334fe650b7cafdfe4278cf8" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/types/-/types-1.7.1.tgz#8983f87508ac21bfb334fe650b7cafdfe4278cf8" integrity sha512-PyV3ZyZum8bjO1LByNXWCSOGt1b9X9x2knIiFWgnYTsHmLK8OP+f6i+wPh4qu1e8+Zr+hNV0rTKVP8p/kCGqyQ== "@shikijs/core@1.29.2": @@ -1834,7 +1854,7 @@ "@sindresorhus/is@^4", "@sindresorhus/is@^4.0.0": version "4.6.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sindresorhus/is@^5.2.0": @@ -2403,7 +2423,7 @@ "@szmarczak/http-timer@^4.0.5": version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" @@ -2417,7 +2437,7 @@ "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" - resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== "@tsconfig/node10@^1.0.7": @@ -2442,7 +2462,7 @@ "@types/cacheable-request@^6.0.1": version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" @@ -2464,7 +2484,7 @@ "@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.2": version "4.2.0" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3" integrity sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q== "@types/inquirer@^9.0.9": @@ -2487,7 +2507,7 @@ "@types/keyv@^3.1.4": version "3.1.4" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" @@ -2525,7 +2545,7 @@ "@types/node@*": version "25.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-25.6.0.tgz#4e09bad9b469871f2d0f68140198cbd714f4edca" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/node/-/node-25.6.0.tgz#4e09bad9b469871f2d0f68140198cbd714f4edca" integrity sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ== dependencies: undici-types "~7.19.0" @@ -2576,7 +2596,7 @@ "@types/responselike@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== dependencies: "@types/node" "*" @@ -2774,7 +2794,7 @@ JSONStream@^1.3.5: abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" @@ -2798,14 +2818,14 @@ acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.9.0: agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" agent-base@^7.1.0, agent-base@^7.1.2: version "7.1.4" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== aggregate-error@^3.0.0: @@ -2828,7 +2848,7 @@ ajv@^6.12.4: ajv@^8.11.0, ajv@^8.18.0: version "8.20.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9" integrity sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA== dependencies: fast-deep-equal "^3.1.3" @@ -3039,7 +3059,7 @@ arrify@^1.0.1: asap@*: version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== assertion-error@^1.1.0: @@ -3049,7 +3069,7 @@ assertion-error@^1.1.0: ast-types@^0.13.4: version "0.13.4" - resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== dependencies: tslib "^2.0.1" @@ -3073,12 +3093,12 @@ async@^3.2.6: asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== atomic-sleep@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== auto-bind@^5.0.1: @@ -3095,7 +3115,7 @@ available-typed-arrays@^1.0.7: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== balanced-match@^3.0.0: @@ -3110,12 +3130,12 @@ balanced-match@^4.0.2: base64-js@^1.3.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base64url@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== baseline-browser-mapping@^2.10.12: @@ -3124,9 +3144,9 @@ baseline-browser-mapping@^2.10.12: integrity sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g== basic-ftp@^5.0.2: - version "5.3.0" - resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.3.0.tgz#88f057d1ba8442643c505c4c83bbaa4442b15cfd" - integrity sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w== + version "5.3.1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/basic-ftp/-/basic-ftp-5.3.1.tgz#3148ee9af43c0522514a4f973fecb1d3cbb6d71e" + integrity sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw== binary-extensions@^2.0.0: version "2.3.0" @@ -3192,7 +3212,7 @@ browserslist@^4.24.0, browserslist@^4.28.1: buffer-equal-constant-time@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer-from@^1.0.0: @@ -3202,7 +3222,7 @@ buffer-from@^1.0.0: buffer@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -3215,7 +3235,7 @@ builtin-modules@^3.3.0: cacheable-lookup@^5.0.3: version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-lookup@^7.0.0: @@ -3238,7 +3258,7 @@ cacheable-request@^10.2.8: cacheable-request@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== dependencies: clone-response "^1.0.2" @@ -3261,7 +3281,7 @@ caching-transform@^4.0.0: call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: es-errors "^1.3.0" @@ -3292,7 +3312,7 @@ callsites@^3.0.0: camel-case@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: pascal-case "^3.1.2" @@ -3324,7 +3344,7 @@ caniuse-lite@^1.0.30001782: capital-case@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== dependencies: no-case "^3.0.4" @@ -3364,7 +3384,7 @@ chalk@^5.0.0, chalk@^5.3.0, chalk@^5.6.2: change-case@^4, change-case@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== dependencies: camel-case "^4.1.2" @@ -3512,7 +3532,7 @@ cliui@^8.0.1: clone-response@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" @@ -3538,12 +3558,12 @@ color-name@~1.1.4: colorette@^2.0.7: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -3596,7 +3616,7 @@ confusing-browser-globals@1.0.11: constant-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== dependencies: no-case "^3.0.4" @@ -3656,7 +3676,7 @@ core-js-compat@^3.34.0: core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig-typescript-loader@^4.0.0: @@ -3690,7 +3710,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: csprng@*: version "0.1.2" - resolved "https://registry.yarnpkg.com/csprng/-/csprng-0.1.2.tgz#4bc68f12fa368d252a59841cbaca974b18ab45e2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/csprng/-/csprng-0.1.2.tgz#4bc68f12fa368d252a59841cbaca974b18ab45e2" integrity sha512-D3WAbvvgUVIqSxUfdvLeGjuotsB32bvfVPd+AaaTWMtyUeC9zgCnw5xs94no89yFLVsafvY9dMZEhTwsY/ZecA== dependencies: sequin "*" @@ -3702,12 +3722,12 @@ csstype@^3.2.2: csv-parse@^5.5.2: version "5.6.0" - resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.6.0.tgz#219beace2a3e9f28929999d2aa417d3fb3071c7f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/csv-parse/-/csv-parse-5.6.0.tgz#219beace2a3e9f28929999d2aa417d3fb3071c7f" integrity sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q== csv-stringify@^6.6.0: version "6.7.0" - resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-6.7.0.tgz#74c657f278e7ac6ebc8f6812d098dfe0ea0b7e14" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/csv-stringify/-/csv-stringify-6.7.0.tgz#74c657f278e7ac6ebc8f6812d098dfe0ea0b7e14" integrity sha512-UdtziYp5HuTz7e5j8Nvq+a/3HQo+2/aJZ9xntNTpmRRIg/3YYqDVgiS9fvAhtNbnyfbv2ZBe0bqCHqzhE7FqWQ== dargs@^7.0.0: @@ -3717,7 +3737,7 @@ dargs@^7.0.0: data-uri-to-buffer@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== data-view-buffer@^1.0.2: @@ -3749,7 +3769,7 @@ data-view-byte-offset@^1.0.1: dateformat@^4.6.3: version "4.6.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.3: @@ -3786,7 +3806,7 @@ decamelize@^4.0.0: decompress-response@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" @@ -3812,7 +3832,7 @@ default-require-extensions@^3.0.0: defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-data-property@^1.0.1, define-data-property@^1.1.4: @@ -3835,7 +3855,7 @@ define-properties@^1.1.3, define-properties@^1.2.1: degenerator@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: ast-types "^0.13.4" @@ -3844,7 +3864,7 @@ degenerator@^5.0.0: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== dequal@^2.0.0: @@ -3932,7 +3952,7 @@ domutils@^3.2.2: dot-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: no-case "^3.0.4" @@ -3947,7 +3967,7 @@ dot-prop@^5.1.0: dunder-proto@^1.0.0, dunder-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: call-bind-apply-helpers "^1.0.1" @@ -3961,7 +3981,7 @@ eastasianwidth@^0.2.0: ecdsa-sig-formatter@1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== dependencies: safe-buffer "^5.0.1" @@ -4000,7 +4020,7 @@ emoji-regex@^9.2.2: end-of-stream@^1.1.0: version "1.4.5" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== dependencies: once "^1.4.0" @@ -4089,12 +4109,12 @@ es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23 es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-iterator-helpers@^1.2.1: @@ -4121,14 +4141,14 @@ es-iterator-helpers@^1.2.1: es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== dependencies: es-errors "^1.3.0" es-set-tostringtag@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== dependencies: es-errors "^1.3.0" @@ -4189,7 +4209,7 @@ escape-string-regexp@^5.0.0: escodegen@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -4452,7 +4472,7 @@ espree@^9.6.0, espree@^9.6.1: esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2, esquery@^1.5.0: @@ -4471,22 +4491,22 @@ esrecurse@^4.3.0: estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== event-target-shim@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== events@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^4.1.0: @@ -4526,12 +4546,12 @@ extend@^3.0.2: fast-copy@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3: @@ -4557,31 +4577,31 @@ fast-levenshtein@^2.0.6: fast-levenshtein@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== dependencies: fastest-levenshtein "^1.0.7" fast-safe-stringify@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-uri@^3.0.1: version "3.1.0" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== fast-xml-builder@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz#50188e1452a5fa095f415d3e63dcac0a1dbcbf11" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz#50188e1452a5fa095f415d3e63dcac0a1dbcbf11" integrity sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA== dependencies: path-expression-matcher "^1.1.3" fast-xml-parser@5.7.2, fast-xml-parser@^5.6.0, fast-xml-parser@^5.7.1, fast-xml-parser@^5.7.2: version "5.7.2" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz#fecd0b054c6c132fc03dab994a413da781e0eb9f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz#fecd0b054c6c132fc03dab994a413da781e0eb9f" integrity sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w== dependencies: "@nodable/entities" "^2.1.0" @@ -4591,7 +4611,7 @@ fast-xml-parser@5.7.2, fast-xml-parser@^5.6.0, fast-xml-parser@^5.7.1, fast-xml- fastest-levenshtein@^1.0.7: version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: @@ -4603,14 +4623,14 @@ fastq@^1.6.0: faye-websocket@>=0.9.1: version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" faye@^1.4.0, faye@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/faye/-/faye-1.4.1.tgz#fd2f84e21d62b1cced1bd34968925b466d44a381" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/faye/-/faye-1.4.1.tgz#fd2f84e21d62b1cced1bd34968925b466d44a381" integrity sha512-Cg/khikhqlvumHO3efwx2tps2ZgQRjUMrO24G0quz7MMzRYYaEjU224YFXOeuPIvanRegIchVxj6pmHK1W0ikA== dependencies: asap "*" @@ -4749,7 +4769,7 @@ form-data-encoder@^2.1.2: form-data@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== dependencies: asynckit "^0.4.0" @@ -4793,7 +4813,7 @@ fsevents@~2.3.2: function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: @@ -4851,7 +4871,7 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== dependencies: call-bind-apply-helpers "^1.0.2" @@ -4872,7 +4892,7 @@ get-package-type@^0.1.0: get-proto@^1.0.0, get-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: dunder-proto "^1.0.1" @@ -4885,7 +4905,7 @@ get-stdin@^9.0.0: get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -4906,7 +4926,7 @@ get-symbol-description@^1.1.0: get-uri@^6.0.1: version "6.0.5" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.5.tgz#714892aa4a871db671abc5395e5e9447bc306a16" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-uri/-/get-uri-6.0.5.tgz#714892aa4a871db671abc5395e5e9447bc306a16" integrity sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg== dependencies: basic-ftp "^5.0.2" @@ -4950,7 +4970,7 @@ glob-parent@^6.0.2: glob-to-regex.js@^1.0.1: version "1.2.0" - resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== glob@^10.3.10: @@ -5053,12 +5073,12 @@ globby@^14.1.0: gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== got@^11.8.6: version "11.8.6" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" @@ -5097,7 +5117,7 @@ graceful-fs@4.2.10: graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== graphemer@^1.4.0: @@ -5148,12 +5168,12 @@ has-proto@^1.2.0: has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-tostringtag@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: has-symbols "^1.0.3" @@ -5168,7 +5188,7 @@ hasha@^5.0.0: hasown@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg== dependencies: function-bind "^1.1.2" @@ -5204,7 +5224,7 @@ he@^1.2.0: header-case@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== dependencies: capital-case "^1.0.4" @@ -5212,7 +5232,7 @@ header-case@^2.0.4: help-me@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== hosted-git-info@^2.1.4: @@ -5256,7 +5276,7 @@ htmlparser2@^10.0.0: http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: version "4.2.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== http-call@^5.2.2: @@ -5273,12 +5293,12 @@ http-call@^5.2.2: http-parser-js@>=0.5.1: version "0.5.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: agent-base "^7.1.0" @@ -5286,7 +5306,7 @@ http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" @@ -5302,7 +5322,7 @@ http2-wrapper@^2.1.10: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -5310,7 +5330,7 @@ https-proxy-agent@^5.0.0: https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.6: version "7.0.6" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: agent-base "^7.1.2" @@ -5333,7 +5353,7 @@ husky@^7.0.4: hyperdyperid@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== iconv-lite@^0.7.0: @@ -5345,12 +5365,12 @@ iconv-lite@^0.7.0: ieee754@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.0, ignore@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== ignore@^7.0.3: @@ -5360,7 +5380,7 @@ ignore@^7.0.3: immediate@~3.0.5: version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: @@ -5396,7 +5416,7 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4: @@ -5466,9 +5486,9 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -ip-address@^10.0.1: +ip-address@^10.1.1: version "10.1.1" - resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-10.1.1.tgz#a7614252413e3751b841aaffba939090d2c4c37b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ip-address/-/ip-address-10.1.1.tgz#a7614252413e3751b841aaffba939090d2c4c37b" integrity sha512-1FMu8/N15Ck1BL551Jf42NYIoin2unWjLQ2Fze/DXryJRl5twqtwNHlO39qERGbIOcKYWHdgRryhOC+NG4eaLw== is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: @@ -5786,7 +5806,7 @@ isarray@^2.0.5: isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: @@ -5894,7 +5914,7 @@ jake@^10.8.5: joycon@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: @@ -5919,7 +5939,7 @@ js-yaml@^4.1.0: js2xmlparser@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== dependencies: xmlcreate "^2.0.4" @@ -5941,7 +5961,7 @@ jsesc@~0.5.0: json-buffer@3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1: @@ -5961,7 +5981,7 @@ json-schema-traverse@^0.4.1: json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-stable-stringify-without-jsonify@^1.0.1: @@ -5971,7 +5991,7 @@ json-stable-stringify-without-jsonify@^1.0.1: json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^1.0.2: @@ -6014,7 +6034,7 @@ jsonparse@^1.2.0: jsonwebtoken@9.0.3: version "9.0.3" - resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#6cd57ab01e9b0ac07cb847d53d3c9b6ee31f7ae2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#6cd57ab01e9b0ac07cb847d53d3c9b6ee31f7ae2" integrity sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g== dependencies: jws "^4.0.1" @@ -6040,7 +6060,7 @@ jsonwebtoken@9.0.3: jszip@3.10.1, jszip@^3.10.1: version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== dependencies: lie "~3.3.0" @@ -6065,7 +6085,7 @@ just-extend@^6.2.0: jwa@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== dependencies: buffer-equal-constant-time "^1.0.1" @@ -6074,7 +6094,7 @@ jwa@^2.0.1: jws@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.1.tgz#07edc1be8fac20e677b283ece261498bd38f0690" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jws/-/jws-4.0.1.tgz#07edc1be8fac20e677b283ece261498bd38f0690" integrity sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA== dependencies: jwa "^2.0.1" @@ -6082,7 +6102,7 @@ jws@^4.0.1: keyv@^4.0.0, keyv@^4.5.3: version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -6102,7 +6122,7 @@ levn@^0.4.1: lie@~3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== dependencies: immediate "~3.0.5" @@ -6176,12 +6196,12 @@ lodash.get@^4.4.2: lodash.includes@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== lodash.isboolean@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== lodash.isfunction@^3.0.9: @@ -6191,22 +6211,22 @@ lodash.isfunction@^3.0.9: lodash.isinteger@^4.0.4: version "4.0.4" - resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== lodash.isnumber@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isstring@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== lodash.kebabcase@^4.1.1: @@ -6226,7 +6246,7 @@ lodash.mergewith@^4.6.2: lodash.once@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== lodash.snakecase@^4.1.1: @@ -6283,14 +6303,14 @@ loupe@^2.3.6: lower-case@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: tslib "^2.0.3" lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lowercase-keys@^3.0.0: @@ -6324,7 +6344,7 @@ lru-cache@^6.0.0: lru-cache@^7.14.1: version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== lunr@^2.3.9: @@ -6380,7 +6400,7 @@ marked@^13.0.0: math-intrinsics@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== mdast-util-to-hast@^13.0.0: @@ -6410,7 +6430,7 @@ mdurl@^2.0.0: memfs@4.38.1: version "4.38.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.38.1.tgz#43cc07ee74dc321dbd0cba778db6cd94a4648895" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/memfs/-/memfs-4.38.1.tgz#43cc07ee74dc321dbd0cba778db6cd94a4648895" integrity sha512-exfrOkkU3m0EpbQ0iQJP93HUbkprnIBU7IUnobSNAzHkBUzsklLwENGLEm8ZwJmMuLoFEfv1pYQ54wSpkay4kQ== dependencies: "@jsonjoy.com/json-pack" "^1.11.0" @@ -6494,19 +6514,19 @@ micromatch@^4.0.2, micromatch@^4.0.8: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@2.6.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mime@^4.0.0: @@ -6521,12 +6541,12 @@ mimic-fn@^2.1.0: mimic-response@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== mimic-response@^4.0.0: @@ -6569,7 +6589,7 @@ minimatch@^5.0.1, minimatch@^5.1.6: minimatch@^9.0.4, minimatch@^9.0.5, minimatch@^9.0.9: version "9.0.9" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e" integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg== dependencies: brace-expansion "^2.0.2" @@ -6585,7 +6605,7 @@ minimist-options@4.1.0: minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: @@ -6626,12 +6646,12 @@ mri@^1.2.0: ms@^2.1.1, ms@^2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multistream@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/multistream/-/multistream-3.1.0.tgz#49c382bc0bb355e34d15ba3a9fc1cf0f66b9fded" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/multistream/-/multistream-3.1.0.tgz#49c382bc0bb355e34d15ba3a9fc1cf0f66b9fded" integrity sha512-zBgD3kn8izQAN/TaL1PCMv15vYpf+Vcrsfub06njuYVYlzUldzpopTlrEZ53pZVEbfn3Shtv7vRFoOv6LOV87Q== dependencies: inherits "^2.0.1" @@ -6664,7 +6684,7 @@ neo-async@^2.6.2: netmask@^2.0.2: version "2.1.1" - resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.1.1.tgz#80043d265b53aa521b3bd01e8fcdf353f9e1e81e" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/netmask/-/netmask-2.1.1.tgz#80043d265b53aa521b3bd01e8fcdf353f9e1e81e" integrity sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA== nise@^4.1.0: @@ -6691,7 +6711,7 @@ nise@^5.1.9: no-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: lower-case "^2.0.2" @@ -6699,7 +6719,7 @@ no-case@^3.0.4: nock@^13.5.6: version "13.5.6" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.5.6.tgz#5e693ec2300bbf603b61dae6df0225673e6c4997" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/nock/-/nock-13.5.6.tgz#5e693ec2300bbf603b61dae6df0225673e6c4997" integrity sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ== dependencies: debug "^4.1.0" @@ -6718,7 +6738,7 @@ node-exports-info@^1.6.0: node-fetch@^2.6.1, node-fetch@^2.6.9: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -6771,7 +6791,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== normalize-url@^8.0.0: @@ -6922,12 +6942,12 @@ oclif@^4.22.87: on-exit-leak-free@^2.1.0: version "2.1.2" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -6971,7 +6991,7 @@ own-keys@^1.0.1: p-cancelable@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-cancelable@^3.0.0: @@ -7021,7 +7041,7 @@ p-try@^2.0.0: pac-proxy-agent@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df" integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA== dependencies: "@tootallnate/quickjs-emscripten" "^0.23.0" @@ -7035,7 +7055,7 @@ pac-proxy-agent@^7.1.0: pac-resolver@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== dependencies: degenerator "^5.0.0" @@ -7058,12 +7078,12 @@ package-json-from-dist@^1.0.0: pako@~1.0.2: version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== param-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: dot-case "^3.0.4" @@ -7096,7 +7116,7 @@ parse-json@^5.0.0, parse-json@^5.2.0: pascal-case@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: no-case "^3.0.4" @@ -7109,7 +7129,7 @@ patch-console@^2.0.0: path-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== dependencies: dot-case "^3.0.4" @@ -7122,7 +7142,7 @@ path-exists@^4.0.0: path-expression-matcher@^1.1.3, path-expression-matcher@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a" integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ== path-is-absolute@^1.0.0: @@ -7205,7 +7225,7 @@ picomatch@^4.0.3, picomatch@^4.0.4: pino-abstract-transport@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== dependencies: readable-stream "^4.0.0" @@ -7213,14 +7233,14 @@ pino-abstract-transport@^1.2.0: pino-abstract-transport@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== dependencies: split2 "^4.0.0" pino-pretty@^11.3.0: version "11.3.0" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-11.3.0.tgz#390b3be044cf3d2e9192c7d19d44f6b690468f2e" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-pretty/-/pino-pretty-11.3.0.tgz#390b3be044cf3d2e9192c7d19d44f6b690468f2e" integrity sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA== dependencies: colorette "^2.0.7" @@ -7240,12 +7260,12 @@ pino-pretty@^11.3.0: pino-std-serializers@^7.0.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz#a7b0cd65225f29e92540e7853bd73b07479893fc" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz#a7b0cd65225f29e92540e7853bd73b07479893fc" integrity sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw== pino@^9.7.0: version "9.14.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-9.14.0.tgz#673d9711c2d1e64d18670c1ec05ef7ba14562556" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino/-/pino-9.14.0.tgz#673d9711c2d1e64d18670c1ec05ef7ba14562556" integrity sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w== dependencies: "@pinojs/redact" "^0.4.0" @@ -7302,7 +7322,7 @@ pretty-quick@^3.3.1: process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process-on-spawn@^1.0.0: @@ -7314,12 +7334,12 @@ process-on-spawn@^1.0.0: process-warning@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== process@^0.11.10: version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== prop-types@^15.8.1: @@ -7333,12 +7353,12 @@ prop-types@^15.8.1: propagate@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== proper-lockfile@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== dependencies: graceful-fs "^4.2.4" @@ -7357,7 +7377,7 @@ proto-list@~1.2.1: proxy-agent@^6.5.0: version "6.5.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d" integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A== dependencies: agent-base "^7.1.2" @@ -7371,12 +7391,12 @@ proxy-agent@^6.5.0: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pump@^3.0.0: version "3.0.4" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== dependencies: end-of-stream "^1.1.0" @@ -7399,7 +7419,7 @@ queue-microtask@^1.2.2: quick-format-unescaped@^4.0.3: version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== quick-lru@^4.0.1: @@ -7409,7 +7429,7 @@ quick-lru@^4.0.1: quick-lru@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== randombytes@^2.1.0: @@ -7460,7 +7480,7 @@ read-pkg@^5.2.0: readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.4.0: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -7469,7 +7489,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.4.0: readable-stream@^4.0.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== dependencies: abort-controller "^3.0.0" @@ -7480,7 +7500,7 @@ readable-stream@^4.0.0: readable-stream@~2.3.6: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -7500,7 +7520,7 @@ readdirp@~3.6.0: real-require@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== rechoir@^0.6.2: @@ -7597,7 +7617,7 @@ require-directory@^2.1.1: require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^2.0.0: @@ -7607,7 +7627,7 @@ require-main-filename@^2.0.0: resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-from@5.0.0, resolve-from@^5.0.0: @@ -7651,7 +7671,7 @@ resolve@^2.0.0-next.5, resolve@^2.0.0-next.6: responselike@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: lowercase-keys "^2.0.0" @@ -7678,7 +7698,7 @@ retry@0.13.1: retry@^0.12.0: version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: @@ -7725,12 +7745,12 @@ safe-array-concat@^1.1.3: safe-buffer@*, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-push-apply@^1.0.0: @@ -7752,7 +7772,7 @@ safe-regex-test@^1.1.0: safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.4.3: version "2.5.0" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== "safer-buffer@>= 2.1.2 < 3.0.0": @@ -7762,7 +7782,7 @@ safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.4.3: sax@>=0.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b" integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA== scheduler@^0.23.0, scheduler@^0.23.2: @@ -7774,7 +7794,7 @@ scheduler@^0.23.0, scheduler@^0.23.2: secure-json-parse@^2.4.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== "semver@2 || 3 || 4 || 5": @@ -7796,12 +7816,12 @@ semver@^6.0.0, semver@^6.3.1: semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.3, semver@^7.7.4: version "7.7.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== sentence-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== dependencies: no-case "^3.0.4" @@ -7810,7 +7830,7 @@ sentence-case@^3.0.4: sequin@*: version "0.1.1" - resolved "https://registry.yarnpkg.com/sequin/-/sequin-0.1.1.tgz#5c2d389d66a383734eaafbc45edeb2c1cb1be701" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sequin/-/sequin-0.1.1.tgz#5c2d389d66a383734eaafbc45edeb2c1cb1be701" integrity sha512-hJWMZRwP75ocoBM+1/YaCsvS0j5MTPeBHJkS2/wruehl9xwtX30HlDF1Gt6UZ8HHHY8SJa2/IL+jo+JJCd59rA== serialize-javascript@^6.0.2: @@ -7863,7 +7883,7 @@ set-proto@^1.0.0: setimmediate@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== shebang-command@^2.0.0: @@ -8011,12 +8031,12 @@ slice-ansi@^7.1.0: smart-buffer@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snake-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== dependencies: dot-case "^3.0.4" @@ -8024,7 +8044,7 @@ snake-case@^3.0.4: socks-proxy-agent@^8.0.5: version "8.0.5" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== dependencies: agent-base "^7.1.2" @@ -8032,16 +8052,16 @@ socks-proxy-agent@^8.0.5: socks "^2.8.3" socks@^2.8.3: - version "2.8.7" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.7.tgz#e2fb1d9a603add75050a2067db8c381a0b5669ea" - integrity sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A== + version "2.8.8" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/socks/-/socks-2.8.8.tgz#23bef6d02748eac847ad75610deb6c472554c67a" + integrity sha512-NlGELfPrgX2f1TAAcz0WawlLn+0r3FyhhCRpFFK2CemXenPYvzMWWZINv3eDNo9ucdwme7oCHRY0Jnbs4aIkog== dependencies: - ip-address "^10.0.1" + ip-address "^10.1.1" smart-buffer "^4.2.0" sonic-boom@^4.0.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.1.tgz#28598250df4899c0ac572d7e2f0460690ba6a030" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sonic-boom/-/sonic-boom-4.2.1.tgz#28598250df4899c0ac572d7e2f0460690ba6a030" integrity sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q== dependencies: atomic-sleep "^1.0.0" @@ -8080,7 +8100,7 @@ source-map-support@^0.5.21: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== space-separated-tokens@^2.0.0: @@ -8143,7 +8163,7 @@ split2@^3.0.0, split2@^3.2.2: split2@^4.0.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== sprintf-js@~1.0.2: @@ -8268,14 +8288,14 @@ string.prototype.trimstart@^1.0.8: string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" @@ -8333,12 +8353,12 @@ strip-indent@^3.0.0: strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strnum@^2.2.3: version "2.2.3" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.3.tgz#0119fce02749a11bb126a4d686ac5dbdf6e57586" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/strnum/-/strnum-2.2.3.tgz#0119fce02749a11bb126a4d686ac5dbdf6e57586" integrity sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg== supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: @@ -8397,12 +8417,12 @@ text-table@^0.2.0: thingies@^2.5.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" integrity sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg== thread-stream@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== dependencies: real-require "^0.2.0" @@ -8432,17 +8452,17 @@ tinyglobby@^0.2.14, tinyglobby@^0.2.9: fdir "^6.5.0" picomatch "^4.0.4" -tldts-core@^7.0.28: - version "7.0.28" - resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.28.tgz#28c256edae2ed177b2a8338a51caf81d41580ecf" - integrity sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ== +tldts-core@^7.0.29: + version "7.0.29" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tldts-core/-/tldts-core-7.0.29.tgz#c3806f5af57b0351ed9415899be2a8dafa3f56dc" + integrity sha512-W99NuU7b1DcG3uJ3v9k9VztCH3WialNbBkBft5wCs8V8mexu0XQqaZEYb9l9RNNzK8+3EJ9PKWB0/RUtTQ/o+Q== tldts@^7.0.5: - version "7.0.28" - resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.28.tgz#5a5bb26ef3f70008d88c6e53ff58cd59ed8d4c68" - integrity sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw== + version "7.0.29" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tldts/-/tldts-7.0.29.tgz#5a246d4ffcdf8b34cd9cc2dea424162a653f69d1" + integrity sha512-JIXCerhudr/N6OWLwLF1HVsTTUo7ry6qHa5eWZEkiMuxsIiAACL55tGLfqfHfoH7QaMQUW8fngD7u7TxWexYQg== dependencies: - tldts-core "^7.0.28" + tldts-core "^7.0.29" to-regex-range@^5.0.1: version "5.0.1" @@ -8453,19 +8473,19 @@ to-regex-range@^5.0.1: tough-cookie@*: version "6.0.1" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.1.tgz#a495f833836609ed983c19bc65639cfbceb54c76" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tough-cookie/-/tough-cookie-6.0.1.tgz#a495f833836609ed983c19bc65639cfbceb54c76" integrity sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw== dependencies: tldts "^7.0.5" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== tree-dump@^1.0.3, tree-dump@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== trim-lines@^3.0.0: @@ -8517,7 +8537,7 @@ ts-node@^10.8.1, ts-node@^10.9.2: ts-retry-promise@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/ts-retry-promise/-/ts-retry-promise-0.8.1.tgz#ba90eb07cb03677fcbf78fe38e94c9183927e154" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ts-retry-promise/-/ts-retry-promise-0.8.1.tgz#ba90eb07cb03677fcbf78fe38e94c9183927e154" integrity sha512-+AHPUmAhr5bSRRK5CurE9kNH8gZlEHnCgusZ0zy2bjfatUBDX0h6vGQjiT0YrGwSDwRZmU+bapeX6mj55FOPvg== tsconfig-paths@^3.15.0: @@ -8532,12 +8552,12 @@ tsconfig-paths@^3.15.0: tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.2: version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tunnel-agent@*, tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" @@ -8704,7 +8724,7 @@ undici-types@~6.21.0: undici-types@~7.19.0: version "7.19.2" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" integrity sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg== unicorn-magic@^0.3.0: @@ -8770,14 +8790,14 @@ update-browserslist-db@^1.2.3: upper-case-first@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== dependencies: tslib "^2.0.3" upper-case@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== dependencies: tslib "^2.0.3" @@ -8791,7 +8811,7 @@ uri-js@^4.2.2: util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^8.3.2: @@ -8840,12 +8860,12 @@ vfile@^6.0.0: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== websocket-driver@>=0.5.1: version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -8854,12 +8874,12 @@ websocket-driver@>=0.5.1: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -9017,7 +9037,7 @@ wrap-ansi@^9.0.0, wrap-ansi@^9.0.2: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.0: @@ -9037,7 +9057,7 @@ ws@^8.15.0: xml2js@^0.6.2: version "0.6.2" - resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== dependencies: sax ">=0.6.0" @@ -9045,12 +9065,12 @@ xml2js@^0.6.2: xmlbuilder@~11.0.0: version "11.0.1" - resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== xmlcreate@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== y18n@^4.0.0: @@ -9171,7 +9191,7 @@ yoga-wasm-web@~0.3.3: zod@^4.1.12: version "4.3.6" - resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" + resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== zwitch@^2.0.4: From 4c9f7957e9afe8fd2bb64c8480eb085c95a56e12 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 15:40:15 -0300 Subject: [PATCH 12/20] chore: restore yarn.lock to main state Co-Authored-By: Claude Sonnet 4.6 --- yarn.lock | 486 ++++++++++++++++++++++++++---------------------------- 1 file changed, 233 insertions(+), 253 deletions(-) diff --git a/yarn.lock b/yarn.lock index 25c075e5..45c4afb8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1346,7 +1346,7 @@ "@jsforce/jsforce-node@^3.10.13": version "3.10.14" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsforce/jsforce-node/-/jsforce-node-3.10.14.tgz#e6429626118a86247605f14b2466026f7180cff8" + resolved "https://registry.yarnpkg.com/@jsforce/jsforce-node/-/jsforce-node-3.10.14.tgz#e6429626118a86247605f14b2466026f7180cff8" integrity sha512-p8Ug1SypcAT7Q0zZA0+7fyBmgUpB/aXkde4Bxmu0S/O4p28CVwgYvKyFd9vswmHIhFabd/QqUCrlYuVhYdr2Ew== dependencies: "@sindresorhus/is" "^4" @@ -1362,22 +1362,22 @@ "@jsonjoy.com/base64@^1.1.2": version "1.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/base64/-/base64-1.1.2.tgz#cf8ea9dcb849b81c95f14fc0aaa151c6b54d2578" integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA== "@jsonjoy.com/buffers@^1.0.0", "@jsonjoy.com/buffers@^1.2.0": version "1.2.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz#8d99c7f67eaf724d3428dfd9826c6455266a5c83" integrity sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA== "@jsonjoy.com/codegen@^1.0.0": version "1.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz#5c23f796c47675f166d23b948cdb889184b93207" integrity sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g== "@jsonjoy.com/json-pack@^1.11.0": version "1.21.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz#93f8dd57fe3a3a92132b33d1eb182dcd9e7629fa" integrity sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg== dependencies: "@jsonjoy.com/base64" "^1.1.2" @@ -1391,7 +1391,7 @@ "@jsonjoy.com/json-pointer@^1.0.2": version "1.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz#049cb530ac24e84cba08590c5e36b431c4843408" integrity sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg== dependencies: "@jsonjoy.com/codegen" "^1.0.0" @@ -1399,7 +1399,7 @@ "@jsonjoy.com/util@^1.9.0": version "1.9.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" + resolved "https://registry.yarnpkg.com/@jsonjoy.com/util/-/util-1.9.0.tgz#7ee95586aed0a766b746cd8d8363e336c3c47c46" integrity sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ== dependencies: "@jsonjoy.com/buffers" "^1.0.0" @@ -1407,7 +1407,7 @@ "@nodable/entities@2.1.0", "@nodable/entities@^2.1.0": version "2.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" + resolved "https://registry.yarnpkg.com/@nodable/entities/-/entities-2.1.0.tgz#f543e5c6446720d4cf9e498a83019dd159973bc2" integrity sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA== "@nodelib/fs.scandir@2.1.5": @@ -1561,7 +1561,7 @@ "@pinojs/redact@^0.4.0": version "0.4.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@pinojs/redact/-/redact-0.4.0.tgz#c3de060dd12640dcc838516aa2a6803cc7b2e9d6" + resolved "https://registry.yarnpkg.com/@pinojs/redact/-/redact-0.4.0.tgz#c3de060dd12640dcc838516aa2a6803cc7b2e9d6" integrity sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg== "@pkgjs/parseargs@^0.11.0": @@ -1597,7 +1597,7 @@ "@salesforce/agents@^1.2.0": version "1.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/agents/-/agents-1.2.0.tgz#6f360f824b80bd66e8ba561f98fe52bc62e24ab9" + resolved "https://registry.yarnpkg.com/@salesforce/agents/-/agents-1.2.0.tgz#6f360f824b80bd66e8ba561f98fe52bc62e24ab9" integrity sha512-gyF1xzJcEp3MuS8Apf1eUGUvy41zq7HQqKPEhDIU6aUiowoewW/RI9LcPB0K7LPrGCIiARq4TYKlxf452HASqA== dependencies: "@salesforce/core" "^8.28.3" @@ -1688,7 +1688,7 @@ "@salesforce/kit@^3.2.3", "@salesforce/kit@^3.2.4", "@salesforce/kit@^3.2.6": version "3.2.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/kit/-/kit-3.2.6.tgz#6a6c13b463b51694a43d61094af67171086ed4f5" + resolved "https://registry.yarnpkg.com/@salesforce/kit/-/kit-3.2.6.tgz#6a6c13b463b51694a43d61094af67171086ed4f5" integrity sha512-O8S4LWerHa9Zosqh+IoQjgLtpxMOfObRxaRnUdRV4MLtFUi+bQxQiyFvve6eEaBaMP1b1xVDQpvSvQ+PXEDGFQ== dependencies: "@salesforce/ts-types" "^2.0.12" @@ -1746,27 +1746,7 @@ cli-progress "^3.12.0" terminal-link "^3.0.0" -"@salesforce/source-deploy-retrieve@^12.32.7": - version "12.35.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.35.0.tgz#3df5f9ebd25e8b31ab245ec3827b44a97f8e1156" - integrity sha512-R/qO0JavpDsfhmkoR/z9jcB9mJFrJCAfaRaySmDuaqiHPuBVlpzey44irCtboNq6agqkOOogIbE3d4gUt5BGHQ== - dependencies: - "@salesforce/core" "^8.28.4" - "@salesforce/kit" "^3.2.4" - "@salesforce/ts-types" "^2.0.12" - "@salesforce/types" "^1.6.0" - fast-levenshtein "^3.0.0" - fast-xml-parser "^5.7.2" - got "^11.8.6" - graceful-fs "^4.2.11" - ignore "^5.3.2" - jszip "^3.10.1" - mime "2.6.0" - minimatch "^9.0.9" - proxy-agent "^6.5.0" - yaml "^2.8.3" - -"@salesforce/source-deploy-retrieve@^12.32.8": +"@salesforce/source-deploy-retrieve@^12.32.7", "@salesforce/source-deploy-retrieve@^12.32.8": version "12.34.5" resolved "https://registry.yarnpkg.com/@salesforce/source-deploy-retrieve/-/source-deploy-retrieve-12.34.5.tgz#c02cd88f6c673c75b0d15bf06c8dafc85d06a004" integrity sha512-iL+656HXNGFMv0DTPF4MKCaJ3de9qGyIzOrOyZ/CL1l0CYcgp2YHrLJuSaCKujul0ymceUGcAptSsZcSVWhjqw== @@ -1788,12 +1768,12 @@ "@salesforce/ts-types@^2.0.11", "@salesforce/ts-types@^2.0.12": version "2.0.12" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/ts-types/-/ts-types-2.0.12.tgz#60420622812a7ec7e46d220667bc29b42dc247ff" + resolved "https://registry.yarnpkg.com/@salesforce/ts-types/-/ts-types-2.0.12.tgz#60420622812a7ec7e46d220667bc29b42dc247ff" integrity sha512-BIJyduJC18Kc8z+arUm5AZ9VkPRyw1KKAm+Tk+9LT99eOzhNilyfKzhZ4t+tG2lIGgnJpmytZfVDZ0e2kFul8g== "@salesforce/types@^1.6.0", "@salesforce/types@^1.7.1": version "1.7.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@salesforce/types/-/types-1.7.1.tgz#8983f87508ac21bfb334fe650b7cafdfe4278cf8" + resolved "https://registry.yarnpkg.com/@salesforce/types/-/types-1.7.1.tgz#8983f87508ac21bfb334fe650b7cafdfe4278cf8" integrity sha512-PyV3ZyZum8bjO1LByNXWCSOGt1b9X9x2knIiFWgnYTsHmLK8OP+f6i+wPh4qu1e8+Zr+hNV0rTKVP8p/kCGqyQ== "@shikijs/core@1.29.2": @@ -1854,7 +1834,7 @@ "@sindresorhus/is@^4", "@sindresorhus/is@^4.0.0": version "4.6.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== "@sindresorhus/is@^5.2.0": @@ -2423,7 +2403,7 @@ "@szmarczak/http-timer@^4.0.5": version "4.0.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" @@ -2437,7 +2417,7 @@ "@tootallnate/quickjs-emscripten@^0.23.0": version "0.23.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== "@tsconfig/node10@^1.0.7": @@ -2462,7 +2442,7 @@ "@types/cacheable-request@^6.0.1": version "6.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== dependencies: "@types/http-cache-semantics" "*" @@ -2484,7 +2464,7 @@ "@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.2": version "4.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#f6a7788f438cbfde15f29acad46512b4c01913b3" integrity sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q== "@types/inquirer@^9.0.9": @@ -2507,7 +2487,7 @@ "@types/keyv@^3.1.4": version "3.1.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== dependencies: "@types/node" "*" @@ -2545,7 +2525,7 @@ "@types/node@*": version "25.6.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/node/-/node-25.6.0.tgz#4e09bad9b469871f2d0f68140198cbd714f4edca" + resolved "https://registry.yarnpkg.com/@types/node/-/node-25.6.0.tgz#4e09bad9b469871f2d0f68140198cbd714f4edca" integrity sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ== dependencies: undici-types "~7.19.0" @@ -2596,7 +2576,7 @@ "@types/responselike@^1.0.0": version "1.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== dependencies: "@types/node" "*" @@ -2794,7 +2774,7 @@ JSONStream@^1.3.5: abort-controller@^3.0.0: version "3.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" @@ -2818,14 +2798,14 @@ acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1, acorn@^8.9.0: agent-base@6: version "6.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" agent-base@^7.1.0, agent-base@^7.1.2: version "7.1.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== aggregate-error@^3.0.0: @@ -2848,7 +2828,7 @@ ajv@^6.12.4: ajv@^8.11.0, ajv@^8.18.0: version "8.20.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.20.0.tgz#304b3636add88ba7d936760dd50ece006dea95f9" integrity sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA== dependencies: fast-deep-equal "^3.1.3" @@ -3059,7 +3039,7 @@ arrify@^1.0.1: asap@*: version "2.0.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== assertion-error@^1.1.0: @@ -3069,7 +3049,7 @@ assertion-error@^1.1.0: ast-types@^0.13.4: version "0.13.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== dependencies: tslib "^2.0.1" @@ -3093,12 +3073,12 @@ async@^3.2.6: asynckit@^0.4.0: version "0.4.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== atomic-sleep@^1.0.0: version "1.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== auto-bind@^5.0.1: @@ -3115,7 +3095,7 @@ available-typed-arrays@^1.0.7: balanced-match@^1.0.0: version "1.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== balanced-match@^3.0.0: @@ -3130,12 +3110,12 @@ balanced-match@^4.0.2: base64-js@^1.3.1: version "1.5.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base64url@^3.0.1: version "3.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" + resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== baseline-browser-mapping@^2.10.12: @@ -3144,9 +3124,9 @@ baseline-browser-mapping@^2.10.12: integrity sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g== basic-ftp@^5.0.2: - version "5.3.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/basic-ftp/-/basic-ftp-5.3.1.tgz#3148ee9af43c0522514a4f973fecb1d3cbb6d71e" - integrity sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw== + version "5.3.0" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.3.0.tgz#88f057d1ba8442643c505c4c83bbaa4442b15cfd" + integrity sha512-5K9eNNn7ywHPsYnFwjKgYH8Hf8B5emh7JKcPaVjjrMJFQQwGpwowEnZNEtHs7DfR7hCZsmaK3VA4HUK0YarT+w== binary-extensions@^2.0.0: version "2.3.0" @@ -3212,7 +3192,7 @@ browserslist@^4.24.0, browserslist@^4.28.1: buffer-equal-constant-time@^1.0.1: version "1.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== buffer-from@^1.0.0: @@ -3222,7 +3202,7 @@ buffer-from@^1.0.0: buffer@^6.0.3: version "6.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: base64-js "^1.3.1" @@ -3235,7 +3215,7 @@ builtin-modules@^3.3.0: cacheable-lookup@^5.0.3: version "5.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== cacheable-lookup@^7.0.0: @@ -3258,7 +3238,7 @@ cacheable-request@^10.2.8: cacheable-request@^7.0.2: version "7.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== dependencies: clone-response "^1.0.2" @@ -3281,7 +3261,7 @@ caching-transform@^4.0.0: call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: es-errors "^1.3.0" @@ -3312,7 +3292,7 @@ callsites@^3.0.0: camel-case@^4.1.2: version "4.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: pascal-case "^3.1.2" @@ -3344,7 +3324,7 @@ caniuse-lite@^1.0.30001782: capital-case@^1.0.4: version "1.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== dependencies: no-case "^3.0.4" @@ -3384,7 +3364,7 @@ chalk@^5.0.0, chalk@^5.3.0, chalk@^5.6.2: change-case@^4, change-case@^4.1.2: version "4.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== dependencies: camel-case "^4.1.2" @@ -3532,7 +3512,7 @@ cliui@^8.0.1: clone-response@^1.0.2: version "1.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" @@ -3558,12 +3538,12 @@ color-name@~1.1.4: colorette@^2.0.7: version "2.0.20" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" @@ -3616,7 +3596,7 @@ confusing-browser-globals@1.0.11: constant-case@^3.0.4: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== dependencies: no-case "^3.0.4" @@ -3676,7 +3656,7 @@ core-js-compat@^3.34.0: core-util-is@~1.0.0: version "1.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig-typescript-loader@^4.0.0: @@ -3710,7 +3690,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: csprng@*: version "0.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/csprng/-/csprng-0.1.2.tgz#4bc68f12fa368d252a59841cbaca974b18ab45e2" + resolved "https://registry.yarnpkg.com/csprng/-/csprng-0.1.2.tgz#4bc68f12fa368d252a59841cbaca974b18ab45e2" integrity sha512-D3WAbvvgUVIqSxUfdvLeGjuotsB32bvfVPd+AaaTWMtyUeC9zgCnw5xs94no89yFLVsafvY9dMZEhTwsY/ZecA== dependencies: sequin "*" @@ -3722,12 +3702,12 @@ csstype@^3.2.2: csv-parse@^5.5.2: version "5.6.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/csv-parse/-/csv-parse-5.6.0.tgz#219beace2a3e9f28929999d2aa417d3fb3071c7f" + resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-5.6.0.tgz#219beace2a3e9f28929999d2aa417d3fb3071c7f" integrity sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q== csv-stringify@^6.6.0: version "6.7.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/csv-stringify/-/csv-stringify-6.7.0.tgz#74c657f278e7ac6ebc8f6812d098dfe0ea0b7e14" + resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-6.7.0.tgz#74c657f278e7ac6ebc8f6812d098dfe0ea0b7e14" integrity sha512-UdtziYp5HuTz7e5j8Nvq+a/3HQo+2/aJZ9xntNTpmRRIg/3YYqDVgiS9fvAhtNbnyfbv2ZBe0bqCHqzhE7FqWQ== dargs@^7.0.0: @@ -3737,7 +3717,7 @@ dargs@^7.0.0: data-uri-to-buffer@^6.0.2: version "6.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz#8a58bb67384b261a38ef18bea1810cb01badd28b" integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw== data-view-buffer@^1.0.2: @@ -3769,7 +3749,7 @@ data-view-byte-offset@^1.0.1: dateformat@^4.6.3: version "4.6.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.3: @@ -3806,7 +3786,7 @@ decamelize@^4.0.0: decompress-response@^6.0.0: version "6.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: mimic-response "^3.1.0" @@ -3832,7 +3812,7 @@ default-require-extensions@^3.0.0: defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: version "2.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== define-data-property@^1.0.1, define-data-property@^1.1.4: @@ -3855,7 +3835,7 @@ define-properties@^1.1.3, define-properties@^1.2.1: degenerator@^5.0.0: version "5.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: ast-types "^0.13.4" @@ -3864,7 +3844,7 @@ degenerator@^5.0.0: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== dequal@^2.0.0: @@ -3952,7 +3932,7 @@ domutils@^3.2.2: dot-case@^3.0.4: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: no-case "^3.0.4" @@ -3967,7 +3947,7 @@ dot-prop@^5.1.0: dunder-proto@^1.0.0, dunder-proto@^1.0.1: version "1.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== dependencies: call-bind-apply-helpers "^1.0.1" @@ -3981,7 +3961,7 @@ eastasianwidth@^0.2.0: ecdsa-sig-formatter@1.0.11: version "1.0.11" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== dependencies: safe-buffer "^5.0.1" @@ -4020,7 +4000,7 @@ emoji-regex@^9.2.2: end-of-stream@^1.1.0: version "1.4.5" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== dependencies: once "^1.4.0" @@ -4109,12 +4089,12 @@ es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23 es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.3.0: version "1.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-iterator-helpers@^1.2.1: @@ -4141,14 +4121,14 @@ es-iterator-helpers@^1.2.1: es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== dependencies: es-errors "^1.3.0" es-set-tostringtag@^2.1.0: version "2.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== dependencies: es-errors "^1.3.0" @@ -4209,7 +4189,7 @@ escape-string-regexp@^5.0.0: escodegen@^2.1.0: version "2.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -4472,7 +4452,7 @@ espree@^9.6.0, espree@^9.6.1: esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2, esquery@^1.5.0: @@ -4491,22 +4471,22 @@ esrecurse@^4.3.0: estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== event-target-shim@^5.0.0: version "5.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== events@^3.3.0: version "3.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^4.1.0: @@ -4546,12 +4526,12 @@ extend@^3.0.2: fast-copy@^3.0.2: version "3.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" + resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.2, fast-glob@^3.3.3: @@ -4577,31 +4557,31 @@ fast-levenshtein@^2.0.6: fast-levenshtein@^3.0.0: version "3.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz#37b899ae47e1090e40e3fd2318e4d5f0142ca912" integrity sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ== dependencies: fastest-levenshtein "^1.0.7" fast-safe-stringify@^2.1.1: version "2.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-uri@^3.0.1: version "3.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== fast-xml-builder@^1.1.5: version "1.1.5" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz#50188e1452a5fa095f415d3e63dcac0a1dbcbf11" + resolved "https://registry.yarnpkg.com/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz#50188e1452a5fa095f415d3e63dcac0a1dbcbf11" integrity sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA== dependencies: path-expression-matcher "^1.1.3" fast-xml-parser@5.7.2, fast-xml-parser@^5.6.0, fast-xml-parser@^5.7.1, fast-xml-parser@^5.7.2: version "5.7.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz#fecd0b054c6c132fc03dab994a413da781e0eb9f" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz#fecd0b054c6c132fc03dab994a413da781e0eb9f" integrity sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w== dependencies: "@nodable/entities" "^2.1.0" @@ -4611,7 +4591,7 @@ fast-xml-parser@5.7.2, fast-xml-parser@^5.6.0, fast-xml-parser@^5.7.1, fast-xml- fastest-levenshtein@^1.0.7: version "1.0.16" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.6.0: @@ -4623,14 +4603,14 @@ fastq@^1.6.0: faye-websocket@>=0.9.1: version "0.11.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" faye@^1.4.0, faye@^1.4.1: version "1.4.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/faye/-/faye-1.4.1.tgz#fd2f84e21d62b1cced1bd34968925b466d44a381" + resolved "https://registry.yarnpkg.com/faye/-/faye-1.4.1.tgz#fd2f84e21d62b1cced1bd34968925b466d44a381" integrity sha512-Cg/khikhqlvumHO3efwx2tps2ZgQRjUMrO24G0quz7MMzRYYaEjU224YFXOeuPIvanRegIchVxj6pmHK1W0ikA== dependencies: asap "*" @@ -4769,7 +4749,7 @@ form-data-encoder@^2.1.2: form-data@^4.0.4: version "4.0.5" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.5.tgz#b49e48858045ff4cbf6b03e1805cebcad3679053" integrity sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w== dependencies: asynckit "^0.4.0" @@ -4813,7 +4793,7 @@ fsevents@~2.3.2: function-bind@^1.1.2: version "1.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: @@ -4871,7 +4851,7 @@ get-func-name@^2.0.1, get-func-name@^2.0.2: get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: version "1.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== dependencies: call-bind-apply-helpers "^1.0.2" @@ -4892,7 +4872,7 @@ get-package-type@^0.1.0: get-proto@^1.0.0, get-proto@^1.0.1: version "1.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== dependencies: dunder-proto "^1.0.1" @@ -4905,7 +4885,7 @@ get-stdin@^9.0.0: get-stream@^5.0.0, get-stream@^5.1.0: version "5.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -4926,7 +4906,7 @@ get-symbol-description@^1.1.0: get-uri@^6.0.1: version "6.0.5" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/get-uri/-/get-uri-6.0.5.tgz#714892aa4a871db671abc5395e5e9447bc306a16" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.5.tgz#714892aa4a871db671abc5395e5e9447bc306a16" integrity sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg== dependencies: basic-ftp "^5.0.2" @@ -4970,7 +4950,7 @@ glob-parent@^6.0.2: glob-to-regex.js@^1.0.1: version "1.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" + resolved "https://registry.yarnpkg.com/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz#2b323728271d133830850e32311f40766c5f6413" integrity sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ== glob@^10.3.10: @@ -5073,12 +5053,12 @@ globby@^14.1.0: gopd@^1.0.1, gopd@^1.2.0: version "1.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== got@^11.8.6: version "11.8.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== dependencies: "@sindresorhus/is" "^4.0.0" @@ -5117,7 +5097,7 @@ graceful-fs@4.2.10: graceful-fs@^4.1.15, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: version "4.2.11" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== graphemer@^1.4.0: @@ -5168,12 +5148,12 @@ has-proto@^1.2.0: has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-tostringtag@^1.0.2: version "1.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: has-symbols "^1.0.3" @@ -5188,7 +5168,7 @@ hasha@^5.0.0: hasown@^2.0.2: version "2.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.3.tgz#5e5c2b15b60370a4c7930c383dfb76bf17bc403c" integrity sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg== dependencies: function-bind "^1.1.2" @@ -5224,7 +5204,7 @@ he@^1.2.0: header-case@^2.0.4: version "2.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== dependencies: capital-case "^1.0.4" @@ -5232,7 +5212,7 @@ header-case@^2.0.4: help-me@^5.0.0: version "5.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" + resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== hosted-git-info@^2.1.4: @@ -5276,7 +5256,7 @@ htmlparser2@^10.0.0: http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: version "4.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== http-call@^5.2.2: @@ -5293,12 +5273,12 @@ http-call@^5.2.2: http-parser-js@>=0.5.1: version "0.5.10" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: version "7.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== dependencies: agent-base "^7.1.0" @@ -5306,7 +5286,7 @@ http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1: http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: quick-lru "^5.1.1" @@ -5322,7 +5302,7 @@ http2-wrapper@^2.1.10: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -5330,7 +5310,7 @@ https-proxy-agent@^5.0.0: https-proxy-agent@^7.0.1, https-proxy-agent@^7.0.6: version "7.0.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: agent-base "^7.1.2" @@ -5353,7 +5333,7 @@ husky@^7.0.4: hyperdyperid@^1.2.0: version "1.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" + resolved "https://registry.yarnpkg.com/hyperdyperid/-/hyperdyperid-1.2.0.tgz#59668d323ada92228d2a869d3e474d5a33b69e6b" integrity sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A== iconv-lite@^0.7.0: @@ -5365,12 +5345,12 @@ iconv-lite@^0.7.0: ieee754@^1.2.1: version "1.2.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.0, ignore@^5.3.2: version "5.3.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== ignore@^7.0.3: @@ -5380,7 +5360,7 @@ ignore@^7.0.3: immediate@~3.0.5: version "3.0.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: @@ -5416,7 +5396,7 @@ inflight@^1.0.4: inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4: @@ -5486,9 +5466,9 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -ip-address@^10.1.1: +ip-address@^10.0.1: version "10.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ip-address/-/ip-address-10.1.1.tgz#a7614252413e3751b841aaffba939090d2c4c37b" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-10.1.1.tgz#a7614252413e3751b841aaffba939090d2c4c37b" integrity sha512-1FMu8/N15Ck1BL551Jf42NYIoin2unWjLQ2Fze/DXryJRl5twqtwNHlO39qERGbIOcKYWHdgRryhOC+NG4eaLw== is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: @@ -5806,7 +5786,7 @@ isarray@^2.0.5: isarray@~1.0.0: version "1.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: @@ -5914,7 +5894,7 @@ jake@^10.8.5: joycon@^3.1.1: version "3.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: @@ -5939,7 +5919,7 @@ js-yaml@^4.1.0: js2xmlparser@^4.0.1: version "4.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" + resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== dependencies: xmlcreate "^2.0.4" @@ -5961,7 +5941,7 @@ jsesc@~0.5.0: json-buffer@3.0.1: version "3.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== json-parse-better-errors@^1.0.1: @@ -5981,7 +5961,7 @@ json-schema-traverse@^0.4.1: json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-stable-stringify-without-jsonify@^1.0.1: @@ -5991,7 +5971,7 @@ json-stable-stringify-without-jsonify@^1.0.1: json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^1.0.2: @@ -6034,7 +6014,7 @@ jsonparse@^1.2.0: jsonwebtoken@9.0.3: version "9.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#6cd57ab01e9b0ac07cb847d53d3c9b6ee31f7ae2" + resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz#6cd57ab01e9b0ac07cb847d53d3c9b6ee31f7ae2" integrity sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g== dependencies: jws "^4.0.1" @@ -6060,7 +6040,7 @@ jsonwebtoken@9.0.3: jszip@3.10.1, jszip@^3.10.1: version "3.10.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== dependencies: lie "~3.3.0" @@ -6085,7 +6065,7 @@ just-extend@^6.2.0: jwa@^2.0.1: version "2.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== dependencies: buffer-equal-constant-time "^1.0.1" @@ -6094,7 +6074,7 @@ jwa@^2.0.1: jws@^4.0.1: version "4.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/jws/-/jws-4.0.1.tgz#07edc1be8fac20e677b283ece261498bd38f0690" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.1.tgz#07edc1be8fac20e677b283ece261498bd38f0690" integrity sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA== dependencies: jwa "^2.0.1" @@ -6102,7 +6082,7 @@ jws@^4.0.1: keyv@^4.0.0, keyv@^4.5.3: version "4.5.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -6122,7 +6102,7 @@ levn@^0.4.1: lie@~3.3.0: version "3.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== dependencies: immediate "~3.0.5" @@ -6196,12 +6176,12 @@ lodash.get@^4.4.2: lodash.includes@^4.3.0: version "4.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" + resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f" integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w== lodash.isboolean@^3.0.3: version "3.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== lodash.isfunction@^3.0.9: @@ -6211,22 +6191,22 @@ lodash.isfunction@^3.0.9: lodash.isinteger@^4.0.4: version "4.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" integrity sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA== lodash.isnumber@^3.0.3: version "3.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" integrity sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw== lodash.isplainobject@^4.0.6: version "4.0.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== lodash.isstring@^4.0.1: version "4.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" integrity sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw== lodash.kebabcase@^4.1.1: @@ -6246,7 +6226,7 @@ lodash.mergewith@^4.6.2: lodash.once@^4.0.0: version "4.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg== lodash.snakecase@^4.1.1: @@ -6303,14 +6283,14 @@ loupe@^2.3.6: lower-case@^2.0.2: version "2.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: tslib "^2.0.3" lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lowercase-keys@^3.0.0: @@ -6344,7 +6324,7 @@ lru-cache@^6.0.0: lru-cache@^7.14.1: version "7.18.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== lunr@^2.3.9: @@ -6400,7 +6380,7 @@ marked@^13.0.0: math-intrinsics@^1.1.0: version "1.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== mdast-util-to-hast@^13.0.0: @@ -6430,7 +6410,7 @@ mdurl@^2.0.0: memfs@4.38.1: version "4.38.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/memfs/-/memfs-4.38.1.tgz#43cc07ee74dc321dbd0cba778db6cd94a4648895" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-4.38.1.tgz#43cc07ee74dc321dbd0cba778db6cd94a4648895" integrity sha512-exfrOkkU3m0EpbQ0iQJP93HUbkprnIBU7IUnobSNAzHkBUzsklLwENGLEm8ZwJmMuLoFEfv1pYQ54wSpkay4kQ== dependencies: "@jsonjoy.com/json-pack" "^1.11.0" @@ -6514,19 +6494,19 @@ micromatch@^4.0.2, micromatch@^4.0.8: mime-db@1.52.0: version "1.52.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@2.6.0: version "2.6.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mime@^4.0.0: @@ -6541,12 +6521,12 @@ mimic-fn@^2.1.0: mimic-response@^1.0.0: version "1.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== mimic-response@^3.1.0: version "3.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== mimic-response@^4.0.0: @@ -6589,7 +6569,7 @@ minimatch@^5.0.1, minimatch@^5.1.6: minimatch@^9.0.4, minimatch@^9.0.5, minimatch@^9.0.9: version "9.0.9" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.9.tgz#9b0cb9fcb78087f6fd7eababe2511c4d3d60574e" integrity sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg== dependencies: brace-expansion "^2.0.2" @@ -6605,7 +6585,7 @@ minimist-options@4.1.0: minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: @@ -6646,12 +6626,12 @@ mri@^1.2.0: ms@^2.1.1, ms@^2.1.3: version "2.1.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== multistream@^3.1.0: version "3.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/multistream/-/multistream-3.1.0.tgz#49c382bc0bb355e34d15ba3a9fc1cf0f66b9fded" + resolved "https://registry.yarnpkg.com/multistream/-/multistream-3.1.0.tgz#49c382bc0bb355e34d15ba3a9fc1cf0f66b9fded" integrity sha512-zBgD3kn8izQAN/TaL1PCMv15vYpf+Vcrsfub06njuYVYlzUldzpopTlrEZ53pZVEbfn3Shtv7vRFoOv6LOV87Q== dependencies: inherits "^2.0.1" @@ -6684,7 +6664,7 @@ neo-async@^2.6.2: netmask@^2.0.2: version "2.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/netmask/-/netmask-2.1.1.tgz#80043d265b53aa521b3bd01e8fcdf353f9e1e81e" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.1.1.tgz#80043d265b53aa521b3bd01e8fcdf353f9e1e81e" integrity sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA== nise@^4.1.0: @@ -6711,7 +6691,7 @@ nise@^5.1.9: no-case@^3.0.4: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: lower-case "^2.0.2" @@ -6719,7 +6699,7 @@ no-case@^3.0.4: nock@^13.5.6: version "13.5.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/nock/-/nock-13.5.6.tgz#5e693ec2300bbf603b61dae6df0225673e6c4997" + resolved "https://registry.yarnpkg.com/nock/-/nock-13.5.6.tgz#5e693ec2300bbf603b61dae6df0225673e6c4997" integrity sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ== dependencies: debug "^4.1.0" @@ -6738,7 +6718,7 @@ node-exports-info@^1.6.0: node-fetch@^2.6.1, node-fetch@^2.6.9: version "2.7.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -6791,7 +6771,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: normalize-url@^6.0.1: version "6.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== normalize-url@^8.0.0: @@ -6942,12 +6922,12 @@ oclif@^4.22.87: on-exit-leak-free@^2.1.0: version "2.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" @@ -6991,7 +6971,7 @@ own-keys@^1.0.1: p-cancelable@^2.0.0: version "2.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== p-cancelable@^3.0.0: @@ -7041,7 +7021,7 @@ p-try@^2.0.0: pac-proxy-agent@^7.1.0: version "7.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz#9cfaf33ff25da36f6147a20844230ec92c06e5df" integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA== dependencies: "@tootallnate/quickjs-emscripten" "^0.23.0" @@ -7055,7 +7035,7 @@ pac-proxy-agent@^7.1.0: pac-resolver@^7.0.1: version "7.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.1.tgz#54675558ea368b64d210fd9c92a640b5f3b8abb6" integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg== dependencies: degenerator "^5.0.0" @@ -7078,12 +7058,12 @@ package-json-from-dist@^1.0.0: pako@~1.0.2: version "1.0.11" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== param-case@^3.0.4: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: dot-case "^3.0.4" @@ -7116,7 +7096,7 @@ parse-json@^5.0.0, parse-json@^5.2.0: pascal-case@^3.1.2: version "3.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: no-case "^3.0.4" @@ -7129,7 +7109,7 @@ patch-console@^2.0.0: path-case@^3.0.4: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== dependencies: dot-case "^3.0.4" @@ -7142,7 +7122,7 @@ path-exists@^4.0.0: path-expression-matcher@^1.1.3, path-expression-matcher@^1.5.0: version "1.5.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a" + resolved "https://registry.yarnpkg.com/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz#3b98545dc88ffebb593e2d8458d0929da9275f4a" integrity sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ== path-is-absolute@^1.0.0: @@ -7225,7 +7205,7 @@ picomatch@^4.0.3, picomatch@^4.0.4: pino-abstract-transport@^1.2.0: version "1.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz#97f9f2631931e242da531b5c66d3079c12c9d1b5" integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== dependencies: readable-stream "^4.0.0" @@ -7233,14 +7213,14 @@ pino-abstract-transport@^1.2.0: pino-abstract-transport@^2.0.0: version "2.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== dependencies: split2 "^4.0.0" pino-pretty@^11.3.0: version "11.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-pretty/-/pino-pretty-11.3.0.tgz#390b3be044cf3d2e9192c7d19d44f6b690468f2e" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-11.3.0.tgz#390b3be044cf3d2e9192c7d19d44f6b690468f2e" integrity sha512-oXwn7ICywaZPHmu3epHGU2oJX4nPmKvHvB/bwrJHlGcbEWaVcotkpyVHMKLKmiVryWYByNp0jpgAcXpFJDXJzA== dependencies: colorette "^2.0.7" @@ -7260,12 +7240,12 @@ pino-pretty@^11.3.0: pino-std-serializers@^7.0.0: version "7.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz#a7b0cd65225f29e92540e7853bd73b07479893fc" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz#a7b0cd65225f29e92540e7853bd73b07479893fc" integrity sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw== pino@^9.7.0: version "9.14.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pino/-/pino-9.14.0.tgz#673d9711c2d1e64d18670c1ec05ef7ba14562556" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.14.0.tgz#673d9711c2d1e64d18670c1ec05ef7ba14562556" integrity sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w== dependencies: "@pinojs/redact" "^0.4.0" @@ -7322,7 +7302,7 @@ pretty-quick@^3.3.1: process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== process-on-spawn@^1.0.0: @@ -7334,12 +7314,12 @@ process-on-spawn@^1.0.0: process-warning@^5.0.0: version "5.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== process@^0.11.10: version "0.11.10" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== prop-types@^15.8.1: @@ -7353,12 +7333,12 @@ prop-types@^15.8.1: propagate@^2.0.0: version "2.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" + resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== proper-lockfile@^4.1.2: version "4.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" integrity sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA== dependencies: graceful-fs "^4.2.4" @@ -7377,7 +7357,7 @@ proto-list@~1.2.1: proxy-agent@^6.5.0: version "6.5.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.5.0.tgz#9e49acba8e4ee234aacb539f89ed9c23d02f232d" integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A== dependencies: agent-base "^7.1.2" @@ -7391,12 +7371,12 @@ proxy-agent@^6.5.0: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pump@^3.0.0: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.4.tgz#1f313430527fa8b905622ebd22fe1444e757ab3c" integrity sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA== dependencies: end-of-stream "^1.1.0" @@ -7419,7 +7399,7 @@ queue-microtask@^1.2.2: quick-format-unescaped@^4.0.3: version "4.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== quick-lru@^4.0.1: @@ -7429,7 +7409,7 @@ quick-lru@^4.0.1: quick-lru@^5.1.1: version "5.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== randombytes@^2.1.0: @@ -7480,7 +7460,7 @@ read-pkg@^5.2.0: readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.4.0: version "3.6.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -7489,7 +7469,7 @@ readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.4.0: readable-stream@^4.0.0: version "4.7.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== dependencies: abort-controller "^3.0.0" @@ -7500,7 +7480,7 @@ readable-stream@^4.0.0: readable-stream@~2.3.6: version "2.3.8" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -7520,7 +7500,7 @@ readdirp@~3.6.0: real-require@^0.2.0: version "0.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== rechoir@^0.6.2: @@ -7617,7 +7597,7 @@ require-directory@^2.1.1: require-from-string@^2.0.2: version "2.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== require-main-filename@^2.0.0: @@ -7627,7 +7607,7 @@ require-main-filename@^2.0.0: resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: version "1.2.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== resolve-from@5.0.0, resolve-from@^5.0.0: @@ -7671,7 +7651,7 @@ resolve@^2.0.0-next.5, resolve@^2.0.0-next.6: responselike@^2.0.0: version "2.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== dependencies: lowercase-keys "^2.0.0" @@ -7698,7 +7678,7 @@ retry@0.13.1: retry@^0.12.0: version "0.12.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: @@ -7745,12 +7725,12 @@ safe-array-concat@^1.1.3: safe-buffer@*, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-push-apply@^1.0.0: @@ -7772,7 +7752,7 @@ safe-regex-test@^1.1.0: safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.4.3: version "2.5.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== "safer-buffer@>= 2.1.2 < 3.0.0": @@ -7782,7 +7762,7 @@ safe-stable-stringify@^2.3.1, safe-stable-stringify@^2.4.3: sax@>=0.6.0: version "1.6.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.6.0.tgz#da59637629307b97e7c4cb28e080a7bc38560d5b" integrity sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA== scheduler@^0.23.0, scheduler@^0.23.2: @@ -7794,7 +7774,7 @@ scheduler@^0.23.0, scheduler@^0.23.2: secure-json-parse@^2.4.0: version "2.7.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== "semver@2 || 3 || 4 || 5": @@ -7816,12 +7796,12 @@ semver@^6.0.0, semver@^6.3.1: semver@^7.3.4, semver@^7.3.5, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0, semver@^7.7.3, semver@^7.7.4: version "7.7.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.4.tgz#28464e36060e991fa7a11d0279d2d3f3b57a7e8a" integrity sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA== sentence-case@^3.0.4: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== dependencies: no-case "^3.0.4" @@ -7830,7 +7810,7 @@ sentence-case@^3.0.4: sequin@*: version "0.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sequin/-/sequin-0.1.1.tgz#5c2d389d66a383734eaafbc45edeb2c1cb1be701" + resolved "https://registry.yarnpkg.com/sequin/-/sequin-0.1.1.tgz#5c2d389d66a383734eaafbc45edeb2c1cb1be701" integrity sha512-hJWMZRwP75ocoBM+1/YaCsvS0j5MTPeBHJkS2/wruehl9xwtX30HlDF1Gt6UZ8HHHY8SJa2/IL+jo+JJCd59rA== serialize-javascript@^6.0.2: @@ -7883,7 +7863,7 @@ set-proto@^1.0.0: setimmediate@^1.0.5: version "1.0.5" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== shebang-command@^2.0.0: @@ -8031,12 +8011,12 @@ slice-ansi@^7.1.0: smart-buffer@^4.2.0: version "4.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== snake-case@^3.0.4: version "3.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== dependencies: dot-case "^3.0.4" @@ -8044,7 +8024,7 @@ snake-case@^3.0.4: socks-proxy-agent@^8.0.5: version "8.0.5" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz#b9cdb4e7e998509d7659d689ce7697ac21645bee" integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw== dependencies: agent-base "^7.1.2" @@ -8052,16 +8032,16 @@ socks-proxy-agent@^8.0.5: socks "^2.8.3" socks@^2.8.3: - version "2.8.8" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/socks/-/socks-2.8.8.tgz#23bef6d02748eac847ad75610deb6c472554c67a" - integrity sha512-NlGELfPrgX2f1TAAcz0WawlLn+0r3FyhhCRpFFK2CemXenPYvzMWWZINv3eDNo9ucdwme7oCHRY0Jnbs4aIkog== + version "2.8.7" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.7.tgz#e2fb1d9a603add75050a2067db8c381a0b5669ea" + integrity sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A== dependencies: - ip-address "^10.1.1" + ip-address "^10.0.1" smart-buffer "^4.2.0" sonic-boom@^4.0.1: version "4.2.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/sonic-boom/-/sonic-boom-4.2.1.tgz#28598250df4899c0ac572d7e2f0460690ba6a030" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.1.tgz#28598250df4899c0ac572d7e2f0460690ba6a030" integrity sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q== dependencies: atomic-sleep "^1.0.0" @@ -8100,7 +8080,7 @@ source-map-support@^0.5.21: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== space-separated-tokens@^2.0.0: @@ -8163,7 +8143,7 @@ split2@^3.0.0, split2@^3.2.2: split2@^4.0.0: version "4.2.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== sprintf-js@~1.0.2: @@ -8288,14 +8268,14 @@ string.prototype.trimstart@^1.0.8: string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" @@ -8353,12 +8333,12 @@ strip-indent@^3.0.0: strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== strnum@^2.2.3: version "2.2.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/strnum/-/strnum-2.2.3.tgz#0119fce02749a11bb126a4d686ac5dbdf6e57586" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.2.3.tgz#0119fce02749a11bb126a4d686ac5dbdf6e57586" integrity sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg== supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0: @@ -8417,12 +8397,12 @@ text-table@^0.2.0: thingies@^2.5.0: version "2.6.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" + resolved "https://registry.yarnpkg.com/thingies/-/thingies-2.6.0.tgz#e09b98b9e6f6caf8a759eca8481fea1de974d2b1" integrity sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg== thread-stream@^3.0.0: version "3.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== dependencies: real-require "^0.2.0" @@ -8452,17 +8432,17 @@ tinyglobby@^0.2.14, tinyglobby@^0.2.9: fdir "^6.5.0" picomatch "^4.0.4" -tldts-core@^7.0.29: - version "7.0.29" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tldts-core/-/tldts-core-7.0.29.tgz#c3806f5af57b0351ed9415899be2a8dafa3f56dc" - integrity sha512-W99NuU7b1DcG3uJ3v9k9VztCH3WialNbBkBft5wCs8V8mexu0XQqaZEYb9l9RNNzK8+3EJ9PKWB0/RUtTQ/o+Q== +tldts-core@^7.0.28: + version "7.0.28" + resolved "https://registry.yarnpkg.com/tldts-core/-/tldts-core-7.0.28.tgz#28c256edae2ed177b2a8338a51caf81d41580ecf" + integrity sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ== tldts@^7.0.5: - version "7.0.29" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tldts/-/tldts-7.0.29.tgz#5a246d4ffcdf8b34cd9cc2dea424162a653f69d1" - integrity sha512-JIXCerhudr/N6OWLwLF1HVsTTUo7ry6qHa5eWZEkiMuxsIiAACL55tGLfqfHfoH7QaMQUW8fngD7u7TxWexYQg== + version "7.0.28" + resolved "https://registry.yarnpkg.com/tldts/-/tldts-7.0.28.tgz#5a5bb26ef3f70008d88c6e53ff58cd59ed8d4c68" + integrity sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw== dependencies: - tldts-core "^7.0.29" + tldts-core "^7.0.28" to-regex-range@^5.0.1: version "5.0.1" @@ -8473,19 +8453,19 @@ to-regex-range@^5.0.1: tough-cookie@*: version "6.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tough-cookie/-/tough-cookie-6.0.1.tgz#a495f833836609ed983c19bc65639cfbceb54c76" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-6.0.1.tgz#a495f833836609ed983c19bc65639cfbceb54c76" integrity sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw== dependencies: tldts "^7.0.5" tr46@~0.0.3: version "0.0.3" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== tree-dump@^1.0.3, tree-dump@^1.1.0: version "1.1.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" + resolved "https://registry.yarnpkg.com/tree-dump/-/tree-dump-1.1.0.tgz#ab29129169dc46004414f5a9d4a3c6e89f13e8a4" integrity sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA== trim-lines@^3.0.0: @@ -8537,7 +8517,7 @@ ts-node@^10.8.1, ts-node@^10.9.2: ts-retry-promise@^0.8.1: version "0.8.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/ts-retry-promise/-/ts-retry-promise-0.8.1.tgz#ba90eb07cb03677fcbf78fe38e94c9183927e154" + resolved "https://registry.yarnpkg.com/ts-retry-promise/-/ts-retry-promise-0.8.1.tgz#ba90eb07cb03677fcbf78fe38e94c9183927e154" integrity sha512-+AHPUmAhr5bSRRK5CurE9kNH8gZlEHnCgusZ0zy2bjfatUBDX0h6vGQjiT0YrGwSDwRZmU+bapeX6mj55FOPvg== tsconfig-paths@^3.15.0: @@ -8552,12 +8532,12 @@ tsconfig-paths@^3.15.0: tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.2: version "2.8.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tunnel-agent@*, tunnel-agent@^0.6.0: version "0.6.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" @@ -8724,7 +8704,7 @@ undici-types@~6.21.0: undici-types@~7.19.0: version "7.19.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.19.2.tgz#1b67fc26d0f157a0cba3a58a5b5c1e2276b8ba2a" integrity sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg== unicorn-magic@^0.3.0: @@ -8790,14 +8770,14 @@ update-browserslist-db@^1.2.3: upper-case-first@^2.0.2: version "2.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== dependencies: tslib "^2.0.3" upper-case@^2.0.2: version "2.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== dependencies: tslib "^2.0.3" @@ -8811,7 +8791,7 @@ uri-js@^4.2.2: util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^8.3.2: @@ -8860,12 +8840,12 @@ vfile@^6.0.0: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== websocket-driver@>=0.5.1: version "0.7.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -8874,12 +8854,12 @@ websocket-driver@>=0.5.1: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -9037,7 +9017,7 @@ wrap-ansi@^9.0.0, wrap-ansi@^9.0.2: wrappy@1: version "1.0.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.0: @@ -9057,7 +9037,7 @@ ws@^8.15.0: xml2js@^0.6.2: version "0.6.2" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== dependencies: sax ">=0.6.0" @@ -9065,12 +9045,12 @@ xml2js@^0.6.2: xmlbuilder@~11.0.0: version "11.0.1" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== xmlcreate@^2.0.4: version "2.0.4" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" + resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== y18n@^4.0.0: @@ -9191,7 +9171,7 @@ yoga-wasm-web@~0.3.3: zod@^4.1.12: version "4.3.6" - resolved "https://nexus-proxy.repo.local.sfdc.net/nexus/content/groups/npm-all/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" + resolved "https://registry.yarnpkg.com/zod/-/zod-4.3.6.tgz#89c56e0aa7d2b05107d894412227087885ab112a" integrity sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg== zwitch@^2.0.4: From 6716566383d860d3e92816fc12011c6150728a82 Mon Sep 17 00:00:00 2001 From: franciscoperezsammartino <83368092+franciscoperezsammartino@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:48:33 -0300 Subject: [PATCH 13/20] Apply suggestion from @jshackell-sfdc Co-authored-by: Juliet Shackell <63259011+jshackell-sfdc@users.noreply.github.com> --- messages/agent.preview.end.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index 8edad25e..ccb18266 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -8,7 +8,7 @@ You must have previously started a programmatic agent preview session with the " The original "agent preview start" command outputs a session ID which you then use with the --session-id flag of this command to end the session. You don't have to specify the --session-id flag if an agent has only one active preview session. You must also use either the --authoring-bundle or --api-name flag to specify the API name of the authoring bundle or the published agent, respecitvely. To find either API name, navigate to your package directory in your DX project. The API name of an authoring bundle is the same as its directory name under the "aiAuthoringBundles" metadata directory. Similarly, the published agent's API name is the same as its directory name under the "Bots" metadata directory. -Use the --all flag to end all active preview sessions at once. You can combine --all with --api-name or --authoring-bundle to end only sessions for a specific agent, or use --all alone to end every session across all agents in the project. +Use the --all flag to end all active preview sessions at once. You can combine --all with --api-name or --authoring-bundle to end only sessions for a specific agent, or use --all on its own to end every session across all agents in the project. # flags.session-id.summary From 10fe754db73f105803d1967c65ab61c39bdd6a3e Mon Sep 17 00:00:00 2001 From: franciscoperezsammartino <83368092+franciscoperezsammartino@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:48:40 -0300 Subject: [PATCH 14/20] Apply suggestion from @jshackell-sfdc Co-authored-by: Juliet Shackell <63259011+jshackell-sfdc@users.noreply.github.com> --- messages/agent.preview.end.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index ccb18266..f988c54c 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -28,7 +28,7 @@ End all active preview sessions. If combined with --api-name or --authoring-bund # flags.no-prompt.summary -Don't prompt for confirmation before ending sessions. Only has an effect when used with --all. +Don't prompt for confirmation before ending sessions. Has an effect only when used with --all. # error.noSession From b9a6a13b2dab32ee7c6ca980bc4752a0e9c852f6 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Tue, 28 Apr 2026 15:51:27 -0300 Subject: [PATCH 15/20] refactor: use Interfaces.InferredFlags for private method flag types Replaces manual inline object types with Pick so the method signatures stay in sync with the flag definitions automatically. Co-Authored-By: Claude Sonnet 4.6 --- src/commands/agent/preview/end.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index 77ee8a09..b3075b36 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -19,6 +19,7 @@ import { Flags, SfCommand, toHelpSection, prompts } from '@salesforce/sf-plugins import { Messages, SfError, Lifecycle, EnvironmentVariable } from '@salesforce/core'; import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; import type { Connection } from '@salesforce/core'; +import type { Interfaces } from '@oclif/core'; import { getCachedSessionIds, listCachedSessions, @@ -165,7 +166,7 @@ export default class AgentPreviewEnd extends SfCommand { } private async initAgent( - flags: { 'api-name'?: string; 'authoring-bundle'?: string }, + flags: Pick, conn: Connection | undefined ): Promise { const agentIdentifier = flags['authoring-bundle'] ?? flags['api-name']!; @@ -188,7 +189,7 @@ export default class AgentPreviewEnd extends SfCommand { } private async endAll( - flags: { 'api-name'?: string; 'authoring-bundle'?: string; 'no-prompt'?: boolean }, + flags: Pick, conn: Connection | undefined ): Promise<{ ended: EndedSession[] }> { let sessionsToEnd: SessionTask[]; @@ -279,3 +280,5 @@ export default class AgentPreviewEnd extends SfCommand { return { ended }; } } + +type CommandFlags = Interfaces.InferredFlags; From 15b796d4fc2299d4f971e0fa49b14ef24447cc32 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Wed, 29 Apr 2026 12:19:05 -0300 Subject: [PATCH 16/20] refactor: require --api-name or --authoring-bundle when using --all --all alone was only doing client-side cleanup for ProductionAgent sessions, which was inconsistent. Now --all must be combined with an agent identifier so every session is properly ended server-side. Also simplifies endAll: SessionTask reduced to {sessionId}, tracesPath resolved via agent.getHistoryDir() inside the loop, prompt updated to name the specific agent rather than a generic count. Co-Authored-By: Claude Sonnet 4.6 --- messages/agent.preview.end.md | 24 ++++++--- src/commands/agent/preview/end.ts | 71 ++++++++----------------- test/commands/agent/preview/end.test.ts | 49 +++++++---------- 3 files changed, 57 insertions(+), 87 deletions(-) diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index f988c54c..3991fa58 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -6,9 +6,9 @@ End an existing programmatic agent preview session and get trace location. You must have previously started a programmatic agent preview session with the "agent preview start" command to then use this command to end it. This command also displays the local directory where the session trace files are stored. -The original "agent preview start" command outputs a session ID which you then use with the --session-id flag of this command to end the session. You don't have to specify the --session-id flag if an agent has only one active preview session. You must also use either the --authoring-bundle or --api-name flag to specify the API name of the authoring bundle or the published agent, respecitvely. To find either API name, navigate to your package directory in your DX project. The API name of an authoring bundle is the same as its directory name under the "aiAuthoringBundles" metadata directory. Similarly, the published agent's API name is the same as its directory name under the "Bots" metadata directory. +The original "agent preview start" command outputs a session ID which you then use with the --session-id flag of this command to end the session. You don't have to specify the --session-id flag if an agent has only one active preview session. You must also use either the --authoring-bundle or --api-name flag to specify the API name of the authoring bundle or the published agent, respectively. To find either API name, navigate to your package directory in your DX project. The API name of an authoring bundle is the same as its directory name under the "aiAuthoringBundles" metadata directory. Similarly, the published agent's API name is the same as its directory name under the "Bots" metadata directory. -Use the --all flag to end all active preview sessions at once. You can combine --all with --api-name or --authoring-bundle to end only sessions for a specific agent, or use --all on its own to end every session across all agents in the project. +Use the --all flag together with either --api-name or --authoring-bundle to end all active preview sessions for a specific agent at once. # flags.session-id.summary @@ -24,7 +24,7 @@ API name of the authoring bundle metadata component that contains the agent's Ag # flags.all.summary -End all active preview sessions. If combined with --api-name or --authoring-bundle, only sessions for that agent are ended. +End all active preview sessions for the specified agent. Must be combined with --api-name or --authoring-bundle. # flags.no-prompt.summary @@ -46,6 +46,18 @@ Agent '%s' not found. Check that the API name is correct and that the agent exis Preview session '%s' is invalid or has expired. +# error.allRequiresAgentIdentifier + +The --all flag requires either --api-name or --authoring-bundle to identify which agent's sessions to end. + +# error.allRequiresAgentIdentifier.actions.apiName + +Use --api-name --target-org to end all sessions for a published agent. + +# error.allRequiresAgentIdentifier.actions.authoringBundle + +Use --authoring-bundle to end all sessions for a local authoring-bundle agent. + # error.endFailed Failed to end preview session: %s @@ -64,7 +76,7 @@ Ended %s preview session(s). # prompt.confirmAll -About to end %s preview session(s) across %s agent(s). Continue? +About to end %s preview session(s) for agent '%s'. Continue? # examples @@ -80,10 +92,6 @@ About to end %s preview session(s) across %s agent(s). Continue? <%= config.bin %> <%= command.id %> --authoring-bundle My_Local_Agent -- End all active preview sessions across all agents in the project (prompts for confirmation): - - <%= config.bin %> <%= command.id %> --all - - End all active preview sessions for a specific agent without prompting: <%= config.bin %> <%= command.id %> --all --authoring-bundle My_Local_Agent --no-prompt diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index b3075b36..a3a97f58 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -14,18 +14,12 @@ * limitations under the License. */ -import { join } from 'node:path'; import { Flags, SfCommand, toHelpSection, prompts } from '@salesforce/sf-plugins-core'; import { Messages, SfError, Lifecycle, EnvironmentVariable } from '@salesforce/core'; import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; import type { Connection } from '@salesforce/core'; import type { Interfaces } from '@oclif/core'; -import { - getCachedSessionIds, - listCachedSessions, - removeCache, - validatePreviewSession, -} from '../../../previewSessionStore.js'; +import { getCachedSessionIds, removeCache, validatePreviewSession } from '../../../previewSessionStore.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.end'); @@ -45,7 +39,7 @@ export type EndedSession = { export type AgentPreviewEndResult = { ended: EndedSession[] } | EndedSession; -type SessionTask = EndedSession & { agentId: string }; +type SessionTask = { sessionId: string }; export default class AgentPreviewEnd extends SfCommand { public static readonly summary = messages.getMessage('summary'); @@ -102,6 +96,12 @@ export default class AgentPreviewEnd extends SfCommand { const conn = flags['target-org']?.getConnection(flags['api-version']); if (flags['all']) { + if (!flags['api-name'] && !flags['authoring-bundle']) { + throw new SfError(messages.getMessage('error.allRequiresAgentIdentifier'), 'AllRequiresAgentIdentifier', [ + messages.getMessage('error.allRequiresAgentIdentifier.actions.apiName'), + messages.getMessage('error.allRequiresAgentIdentifier.actions.authoringBundle'), + ]); + } return this.endAll(flags, conn); } @@ -192,29 +192,10 @@ export default class AgentPreviewEnd extends SfCommand { flags: Pick, conn: Connection | undefined ): Promise<{ ended: EndedSession[] }> { - let sessionsToEnd: SessionTask[]; - let agent: ScriptAgent | ProductionAgent | undefined; - - const projectPath = this.project!.getPath(); - if (flags['api-name'] !== undefined || flags['authoring-bundle'] !== undefined) { - agent = await this.initAgent(flags, conn); - const agentId = agent.getAgentIdForStorage(); - const sessionIds = await getCachedSessionIds(this.project!, agent); - sessionsToEnd = sessionIds.map((sessionId) => ({ - agentId, - sessionId, - tracesPath: join(projectPath, '.sfdx', 'agents', agentId, 'sessions', sessionId), - })); - } else { - const allSessions = await listCachedSessions(this.project!); - sessionsToEnd = allSessions.flatMap(({ agentId, sessions }) => - sessions.map(({ sessionId }) => ({ - agentId, - sessionId, - tracesPath: join(projectPath, '.sfdx', 'agents', agentId, 'sessions', sessionId), - })) - ); - } + const agent = await this.initAgent(flags, conn); + const agentId = agent.getAgentIdForStorage(); + const sessionIds = await getCachedSessionIds(this.project!, agent); + const sessionsToEnd: SessionTask[] = sessionIds.map((sessionId) => ({ sessionId })); if (sessionsToEnd.length === 0) { this.log(messages.getMessage('output.noSessionsFound')); @@ -222,9 +203,8 @@ export default class AgentPreviewEnd extends SfCommand { } if (!flags['no-prompt']) { - const agentCount = new Set(sessionsToEnd.map((s) => s.agentId)).size; const confirmed = await prompts.confirm({ - message: messages.getMessage('prompt.confirmAll', [sessionsToEnd.length, agentCount]), + message: messages.getMessage('prompt.confirmAll', [sessionsToEnd.length, agentId]), }); if (!confirmed) { return { ended: [] }; @@ -237,21 +217,16 @@ export default class AgentPreviewEnd extends SfCommand { const failed: Array<{ task: SessionTask; error: string }> = []; for (const task of sessionsToEnd) { - const { sessionId, tracesPath } = task; + const { sessionId } = task; try { - if (agent !== undefined) { - // For --api-name / --authoring-bundle: ScriptAgent flushes traces to disk, - // ProductionAgent issues the server-side request. - agent.setSessionId(sessionId); - // eslint-disable-next-line no-await-in-loop - await callPreviewEnd(agent); - // eslint-disable-next-line no-await-in-loop - await removeCache(agent); - } else { - // No agent object — client-side cleanup only using the known path. - // eslint-disable-next-line no-await-in-loop - await removeCache({ getHistoryDir: () => Promise.resolve(tracesPath) }); - } + // ScriptAgent flushes traces to disk; ProductionAgent issues the server-side request. + agent.setSessionId(sessionId); + // eslint-disable-next-line no-await-in-loop + const tracesPath = await agent.getHistoryDir(); + // eslint-disable-next-line no-await-in-loop + await callPreviewEnd(agent); + // eslint-disable-next-line no-await-in-loop + await removeCache(agent); ended.push({ sessionId, tracesPath }); } catch (error) { failed.push({ task, error: SfError.wrap(error).message }); @@ -259,7 +234,7 @@ export default class AgentPreviewEnd extends SfCommand { } if (failed.length > 0) { - const failedList = failed.map((f) => `${f.task.agentId}/${f.task.sessionId}: ${f.error}`).join(', '); + const failedList = failed.map((f) => `${f.task.sessionId}: ${f.error}`).join(', '); const endedIds = ended.map((e) => e.sessionId).join(', '); const msg = `Failed to end ${failed.length} session(s): [${failedList}]. Successfully ended ${ ended.length diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index db5ee6a2..5c4ac0d3 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -33,7 +33,6 @@ describe('agent preview end', () => { let AgentPreviewEnd: any; let initStub: sinon.SinonStub; let getCachedSessionIdsStub: sinon.SinonStub; - let listCachedSessionsStub: sinon.SinonStub; let removeCacheStub: sinon.SinonStub; let validatePreviewSessionStub: sinon.SinonStub; let confirmStub: sinon.SinonStub; @@ -42,7 +41,6 @@ describe('agent preview end', () => { beforeEach(async () => { agentPreviewEndStub = $$.SANDBOX.stub().resolves(); getCachedSessionIdsStub = $$.SANDBOX.stub().resolves([SESSION_ID]); - listCachedSessionsStub = $$.SANDBOX.stub().resolves([]); removeCacheStub = $$.SANDBOX.stub().resolves(); validatePreviewSessionStub = $$.SANDBOX.stub().resolves(); confirmStub = $$.SANDBOX.stub().resolves(true); @@ -67,7 +65,6 @@ describe('agent preview end', () => { }, '../../../../src/previewSessionStore.js': { getCachedSessionIds: getCachedSessionIdsStub, - listCachedSessions: listCachedSessionsStub, removeCache: removeCacheStub, validatePreviewSession: validatePreviewSessionStub, }, @@ -172,24 +169,16 @@ describe('agent preview end', () => { }); describe('--all flag: ends all sessions across all agents', () => { - it('uses listCachedSessions when no agent identifier is given', async () => { - listCachedSessionsStub.resolves([ - { agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }, { sessionId: 'session-2' }] }, - { agentId: 'agent_b', sessions: [{ sessionId: 'session-3' }] }, - ]); - - const result = await AgentPreviewEnd.run(['--all', '--no-prompt']); - - expect(listCachedSessionsStub.calledOnce).to.be.true; - expect(initStub.called).to.be.false; - expect(removeCacheStub.callCount).to.equal(3); - expect(result).to.deep.equal({ - ended: [ - { sessionId: 'session-1', tracesPath: `${MOCK_PROJECT_DIR}/.sfdx/agents/agent_a/sessions/session-1` }, - { sessionId: 'session-2', tracesPath: `${MOCK_PROJECT_DIR}/.sfdx/agents/agent_a/sessions/session-2` }, - { sessionId: 'session-3', tracesPath: `${MOCK_PROJECT_DIR}/.sfdx/agents/agent_b/sessions/session-3` }, - ], - }); + it('throws when --all is used without --api-name or --authoring-bundle', async () => { + try { + await AgentPreviewEnd.run(['--all', '--no-prompt']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + const err = error as any; + expect(err.message).to.include('--all flag requires either --api-name or --authoring-bundle'); + expect(err.name).to.equal('AllRequiresAgentIdentifier'); + expect(err.actions).to.be.an('array').with.length(2); + } }); it('filters to the specified agent when combined with --authoring-bundle', async () => { @@ -198,7 +187,6 @@ describe('agent preview end', () => { const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); expect(initStub.calledOnce).to.be.true; - expect(listCachedSessionsStub.called).to.be.false; expect(removeCacheStub.callCount).to.equal(2); expect((result as { ended: unknown[] }).ended).to.have.length(2); }); @@ -216,7 +204,6 @@ describe('agent preview end', () => { ]); expect(initStub.calledOnce).to.be.true; - expect(listCachedSessionsStub.called).to.be.false; expect(removeCacheStub.callCount).to.equal(2); expect((result as { ended: unknown[] }).ended).to.have.length(2); }); @@ -231,9 +218,9 @@ describe('agent preview end', () => { }); it('logs a message and returns an empty list when no sessions are found', async () => { - listCachedSessionsStub.resolves([]); + getCachedSessionIdsStub.resolves([]); - const result = await AgentPreviewEnd.run(['--all', '--no-prompt']); + const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); expect(result).to.deep.equal({ ended: [] }); expect(removeCacheStub.called).to.be.false; @@ -271,29 +258,29 @@ describe('agent preview end', () => { describe('--all flag: confirmation prompt', () => { it('prompts for confirmation before ending sessions', async () => { - listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); + getCachedSessionIdsStub.resolves([SESSION_ID]); confirmStub.resolves(true); - await AgentPreviewEnd.run(['--all']); + await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent']); expect(confirmStub.calledOnce).to.be.true; expect(removeCacheStub.calledOnce).to.be.true; }); it('returns an empty ended list when user declines the confirmation prompt', async () => { - listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); + getCachedSessionIdsStub.resolves([SESSION_ID]); confirmStub.resolves(false); - const result = await AgentPreviewEnd.run(['--all']); + const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent']); expect(removeCacheStub.called).to.be.false; expect(result).to.deep.equal({ ended: [] }); }); it('skips the confirmation prompt when --no-prompt is provided', async () => { - listCachedSessionsStub.resolves([{ agentId: 'agent_a', sessions: [{ sessionId: 'session-1' }] }]); + getCachedSessionIdsStub.resolves([SESSION_ID]); - await AgentPreviewEnd.run(['--all', '--no-prompt']); + await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); expect(confirmStub.called).to.be.false; expect(removeCacheStub.calledOnce).to.be.true; From 9553acaa8f160465619f06ee97a784044796af69 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Wed, 29 Apr 2026 12:35:17 -0300 Subject: [PATCH 17/20] refactor: enforce --all agent identifier requirement at flag definition level Moves the --all + agent identifier constraint from a runtime guard to oclif's atLeastOne flag metadata. Removing 'all' from all three atLeastOne arrays means oclif itself rejects --all alone with a single clean error message, rather than a custom SfError with duplicated validation logic in run(). Co-Authored-By: Claude Sonnet 4.6 --- messages/agent.preview.end.md | 12 ------------ src/commands/agent/preview/end.ts | 12 +++--------- test/commands/agent/preview/end.test.ts | 7 ++++--- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index 3991fa58..7704b925 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -46,18 +46,6 @@ Agent '%s' not found. Check that the API name is correct and that the agent exis Preview session '%s' is invalid or has expired. -# error.allRequiresAgentIdentifier - -The --all flag requires either --api-name or --authoring-bundle to identify which agent's sessions to end. - -# error.allRequiresAgentIdentifier.actions.apiName - -Use --api-name --target-org to end all sessions for a published agent. - -# error.allRequiresAgentIdentifier.actions.authoringBundle - -Use --authoring-bundle to end all sessions for a local authoring-bundle agent. - # error.endFailed Failed to end preview session: %s diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index a3a97f58..ed89f9be 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -71,18 +71,18 @@ export default class AgentPreviewEnd extends SfCommand { summary: messages.getMessage('flags.api-name.summary'), char: 'n', exclusive: ['authoring-bundle'], - atLeastOne: ['api-name', 'authoring-bundle', 'all'], + atLeastOne: ['api-name', 'authoring-bundle'], dependsOn: ['target-org'], }), 'authoring-bundle': Flags.string({ summary: messages.getMessage('flags.authoring-bundle.summary'), exclusive: ['api-name'], - atLeastOne: ['api-name', 'authoring-bundle', 'all'], + atLeastOne: ['api-name', 'authoring-bundle'], }), all: Flags.boolean({ summary: messages.getMessage('flags.all.summary'), exclusive: ['session-id'], - atLeastOne: ['api-name', 'authoring-bundle', 'all'], + atLeastOne: ['api-name', 'authoring-bundle'], }), 'no-prompt': Flags.boolean({ summary: messages.getMessage('flags.no-prompt.summary'), @@ -96,12 +96,6 @@ export default class AgentPreviewEnd extends SfCommand { const conn = flags['target-org']?.getConnection(flags['api-version']); if (flags['all']) { - if (!flags['api-name'] && !flags['authoring-bundle']) { - throw new SfError(messages.getMessage('error.allRequiresAgentIdentifier'), 'AllRequiresAgentIdentifier', [ - messages.getMessage('error.allRequiresAgentIdentifier.actions.apiName'), - messages.getMessage('error.allRequiresAgentIdentifier.actions.authoringBundle'), - ]); - } return this.endAll(flags, conn); } diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index 5c4ac0d3..9d7b2a8f 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -175,9 +175,10 @@ describe('agent preview end', () => { expect.fail('Expected an error to be thrown'); } catch (error: unknown) { const err = error as any; - expect(err.message).to.include('--all flag requires either --api-name or --authoring-bundle'); - expect(err.name).to.equal('AllRequiresAgentIdentifier'); - expect(err.actions).to.be.an('array').with.length(2); + expect(err.message).to.match( + /at least one of the following must be provided.*--api-name.*--authoring-bundle/is + ); + expect(err.message).to.not.match(/--all/); } }); From 95a25a9391f95d6ce49f4307bc7ea5b10e400fe2 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Wed, 29 Apr 2026 12:45:13 -0300 Subject: [PATCH 18/20] refactor: use exactlyOne instead of exclusive+atLeastOne for agent identifier flags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Matches the pattern already used in start.ts. exactlyOne is cleaner and expresses the intent in a single declaration — exactly one of --api-name or --authoring-bundle must be provided. Co-Authored-By: Claude Sonnet 4.6 --- src/commands/agent/preview/end.ts | 7 ++----- test/commands/agent/preview/end.test.ts | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index ed89f9be..318341a0 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -70,19 +70,16 @@ export default class AgentPreviewEnd extends SfCommand { 'api-name': Flags.string({ summary: messages.getMessage('flags.api-name.summary'), char: 'n', - exclusive: ['authoring-bundle'], - atLeastOne: ['api-name', 'authoring-bundle'], + exactlyOne: ['api-name', 'authoring-bundle'], dependsOn: ['target-org'], }), 'authoring-bundle': Flags.string({ summary: messages.getMessage('flags.authoring-bundle.summary'), - exclusive: ['api-name'], - atLeastOne: ['api-name', 'authoring-bundle'], + exactlyOne: ['api-name', 'authoring-bundle'], }), all: Flags.boolean({ summary: messages.getMessage('flags.all.summary'), exclusive: ['session-id'], - atLeastOne: ['api-name', 'authoring-bundle'], }), 'no-prompt': Flags.boolean({ summary: messages.getMessage('flags.no-prompt.summary'), diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index 9d7b2a8f..42041c1b 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -154,7 +154,18 @@ describe('agent preview end', () => { await AgentPreviewEnd.run([]); expect.fail('Expected an error to be thrown'); } catch (error: unknown) { - expect((error as Error).message).to.match(/api-name|authoring-bundle|all/i); + expect((error as Error).message).to.match( + /exactly one of the following must be provided.*--api-name.*--authoring-bundle/is + ); + } + }); + + it('throws when both --api-name and --authoring-bundle are provided at the same time', async () => { + try { + await AgentPreviewEnd.run(['--api-name', 'My_Published_Agent', '--authoring-bundle', 'My_Local_Agent']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.match(/--api-name cannot also be provided when using --authoring-bundle/i); } }); @@ -175,10 +186,7 @@ describe('agent preview end', () => { expect.fail('Expected an error to be thrown'); } catch (error: unknown) { const err = error as any; - expect(err.message).to.match( - /at least one of the following must be provided.*--api-name.*--authoring-bundle/is - ); - expect(err.message).to.not.match(/--all/); + expect(err.message).to.match(/exactly one of the following must be provided.*--api-name.*--authoring-bundle/is); } }); From 6b5d6b74ec47c0d3714e3da000bdbd23131466f0 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Thu, 30 Apr 2026 19:09:21 -0300 Subject: [PATCH 19/20] feat: allow --all alone to end sessions across all cached agents When --all is used without --api-name or --authoring-bundle, reads all active sessions from the local cache via listCachedSessions, determines agent type from the cached sessionType, and ends each session properly (server-side for ProductionAgent, local for ScriptAgent). --target-org is required with --all since it may be needed for server-side calls. Co-Authored-By: Claude Sonnet 4.6 --- README.md | 17 +- messages/agent.preview.end.md | 18 +- src/commands/agent/preview/end.ts | 172 ++++++++++++++++-- test/commands/agent/preview/end.test.ts | 231 ++++++++++++++++++++++-- 4 files changed, 401 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index a02c36b4..8e4e7e0b 100644 --- a/README.md +++ b/README.md @@ -626,13 +626,16 @@ End an existing programmatic agent preview session and get trace location. ``` USAGE - $ sf agent preview end -o [--json] [--flags-dir ] [--api-version ] [--session-id ] [-n - ] [--authoring-bundle ] + $ sf agent preview end [--json] [--flags-dir ] [--api-version ] [--session-id ] [-n ] + [--authoring-bundle ] [--all] [-p] [-o ] FLAGS -n, --api-name= API name of the activated published agent you want to preview. - -o, --target-org= (required) Username or alias of the target org. Not required if the `target-org` - configuration variable is already set. + -o, --target-org= Username or alias of the target org. Required with --api-name. Not required if the + `target-org` configuration variable is already set. + -p, --no-prompt Skip confirmation when using --all (no effect otherwise). + --all End every cached preview session for the agent given by --api-name or + --authoring-bundle. --api-version= Override the api version used for api requests made by this command --authoring-bundle= API name of the authoring bundle metadata component that contains the agent's Agent Script file. @@ -652,7 +655,7 @@ DESCRIPTION The original "agent preview start" command outputs a session ID which you then use with the --session-id flag of this command to end the session. You don't have to specify the --session-id flag if an agent has only one active preview session. You must also use either the --authoring-bundle or --api-name flag to specify the API name of the authoring - bundle or the published agent, respecitvely. To find either API name, navigate to your package directory in your DX + bundle or the published agent, respectively. To find either API name, navigate to your package directory in your DX project. The API name of an authoring bundle is the same as its directory name under the "aiAuthoringBundles" metadata directory. Similarly, the published agent's API name is the same as its directory name under the "Bots" metadata directory. @@ -671,6 +674,10 @@ EXAMPLES one active session. $ sf agent preview end --authoring-bundle My_Local_Agent + + End every cached preview session for that authoring bundle without a confirmation prompt: + + $ sf agent preview end --all --authoring-bundle My_Local_Agent --no-prompt ``` _See code: [src/commands/agent/preview/end.ts](https://github.com/salesforcecli/plugin-agent/blob/1.34.0/src/commands/agent/preview/end.ts)_ diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index 7704b925..5b6edf7c 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -8,7 +8,7 @@ You must have previously started a programmatic agent preview session with the " The original "agent preview start" command outputs a session ID which you then use with the --session-id flag of this command to end the session. You don't have to specify the --session-id flag if an agent has only one active preview session. You must also use either the --authoring-bundle or --api-name flag to specify the API name of the authoring bundle or the published agent, respectively. To find either API name, navigate to your package directory in your DX project. The API name of an authoring bundle is the same as its directory name under the "aiAuthoringBundles" metadata directory. Similarly, the published agent's API name is the same as its directory name under the "Bots" metadata directory. -Use the --all flag together with either --api-name or --authoring-bundle to end all active preview sessions for a specific agent at once. +Use the --all flag together with either --api-name or --authoring-bundle to end all active preview sessions for a specific agent at once. Alternatively, use --all with only --target-org to end all active preview sessions for every agent found in the local session cache. # flags.session-id.summary @@ -24,7 +24,7 @@ API name of the authoring bundle metadata component that contains the agent's Ag # flags.all.summary -End all active preview sessions for the specified agent. Must be combined with --api-name or --authoring-bundle. +End all active preview sessions. Combine with --api-name or --authoring-bundle to limit to a specific agent, or use with only --target-org to end sessions for all agents found in the local session cache. Requires --target-org. # flags.no-prompt.summary @@ -62,10 +62,18 @@ No active preview sessions found. Ended %s preview session(s). +# output.skippingSessionMissingDisplayName + +Skipping session '%s' for agent '%s': no agent name found in cache. + # prompt.confirmAll About to end %s preview session(s) for agent '%s'. Continue? +# prompt.confirmAllAgents + +About to end %s preview session(s) across all agents. Continue? + # examples - End a preview session of a published agent by specifying its session ID and API name; use the default org: @@ -82,4 +90,8 @@ About to end %s preview session(s) for agent '%s'. Continue? - End all active preview sessions for a specific agent without prompting: - <%= config.bin %> <%= command.id %> --all --authoring-bundle My_Local_Agent --no-prompt + <%= config.bin %> <%= command.id %> --all --authoring-bundle My_Local_Agent --target-org --no-prompt + +- End all active preview sessions across every agent in the local session cache for an org: + + <%= config.bin %> <%= command.id %> --all --target-org diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index 318341a0..f5365cd1 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -19,7 +19,13 @@ import { Messages, SfError, Lifecycle, EnvironmentVariable } from '@salesforce/c import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; import type { Connection } from '@salesforce/core'; import type { Interfaces } from '@oclif/core'; -import { getCachedSessionIds, removeCache, validatePreviewSession } from '../../../previewSessionStore.js'; +import { + getCachedSessionIds, + listCachedSessions, + removeCache, + validatePreviewSession, + type CachedPreviewSessionEntry, +} from '../../../previewSessionStore.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-agent', 'agent.preview.end'); @@ -54,8 +60,11 @@ export default class AgentPreviewEnd extends SfCommand { public static readonly errorCodes = toHelpSection('ERROR CODES', { 'Succeeded (0)': 'Preview session ended successfully and traces saved.', + 'ExactlyOneRequired (2)': + 'Neither --api-name nor --authoring-bundle was provided (required when --all is not set).', 'NotFound (2)': 'Agent not found, or no preview session exists for this agent.', 'PreviewEndFailed (4)': 'Failed to end the preview session.', + 'PreviewEndPartialFailure (4)': 'With --all, one or more sessions failed to end while others succeeded.', 'SessionAmbiguous (5)': 'Multiple preview sessions found; specify --session-id to choose one.', }); @@ -70,16 +79,17 @@ export default class AgentPreviewEnd extends SfCommand { 'api-name': Flags.string({ summary: messages.getMessage('flags.api-name.summary'), char: 'n', - exactlyOne: ['api-name', 'authoring-bundle'], + exclusive: ['authoring-bundle'], dependsOn: ['target-org'], }), 'authoring-bundle': Flags.string({ summary: messages.getMessage('flags.authoring-bundle.summary'), - exactlyOne: ['api-name', 'authoring-bundle'], + exclusive: ['api-name'], }), all: Flags.boolean({ summary: messages.getMessage('flags.all.summary'), exclusive: ['session-id'], + dependsOn: ['target-org'], }), 'no-prompt': Flags.boolean({ summary: messages.getMessage('flags.no-prompt.summary'), @@ -93,9 +103,20 @@ export default class AgentPreviewEnd extends SfCommand { const conn = flags['target-org']?.getConnection(flags['api-version']); if (flags['all']) { + // --all requires --target-org (enforced via dependsOn), so conn is always defined here. return this.endAll(flags, conn); } + // Without --all, exactly one of --api-name or --authoring-bundle is required. + if (!flags['api-name'] && !flags['authoring-bundle']) { + throw new SfError( + 'Exactly one of the following must be provided: --api-name, --authoring-bundle', + 'ExactlyOneRequired', + [], + 2 + ); + } + const agent = await this.initAgent(flags, conn); let sessionId = flags['session-id']; @@ -182,6 +203,24 @@ export default class AgentPreviewEnd extends SfCommand { private async endAll( flags: Pick, conn: Connection | undefined + ): Promise<{ ended: EndedSession[] }> { + // conn is always defined because --all dependsOn --target-org; cast to Connection. + const connection = conn as Connection; + const hasAgentIdentifier = flags['api-name'] !== undefined || flags['authoring-bundle'] !== undefined; + + if (hasAgentIdentifier) { + return this.endAllForAgent(flags, connection); + } + return this.endAllAgents(connection, flags['no-prompt']); + } + + /** + * Path 1: --all + --api-name or --authoring-bundle + * Ends all sessions for a single specified agent. This is the original behaviour. + */ + private async endAllForAgent( + flags: Pick, + conn: Connection ): Promise<{ ended: EndedSession[] }> { const agent = await this.initAgent(flags, conn); const agentId = agent.getAgentIdForStorage(); @@ -202,28 +241,93 @@ export default class AgentPreviewEnd extends SfCommand { } } - // Process sessions serially so that agent.setSessionId() / agent.preview.end() calls on the - // shared agent object do not race with each other. + const { ended, failed } = await endSessionsForAgent(agent, sessionsToEnd); + return this.finishEndAll(ended, failed); + } + + /** + * Path 2: --all alone (no agent identifier). + * Reads all agents from the local cache via listCachedSessions and ends every session. + * Missing displayName: warns and skips the entry (no sessionId context for failed list). + * Missing sessionType: defaults to ScriptAgent (safest — local-only cleanup). + */ + private async endAllAgents(conn: Connection, noPrompt: boolean | undefined): Promise<{ ended: EndedSession[] }> { + const entries: CachedPreviewSessionEntry[] = await listCachedSessions(this.project!); + + // Only count sessions for entries that have a displayName; entries without one will be skipped. + const totalSessions = entries.reduce((sum, e) => (e.displayName ? sum + e.sessions.length : sum), 0); + + if (totalSessions === 0) { + this.log(messages.getMessage('output.noSessionsFound')); + return { ended: [] }; + } + + if (!noPrompt) { + const confirmed = await prompts.confirm({ + message: messages.getMessage('prompt.confirmAllAgents', [totalSessions]), + }); + if (!confirmed) { + return { ended: [] }; + } + } + const ended: EndedSession[] = []; const failed: Array<{ task: SessionTask; error: string }> = []; - for (const task of sessionsToEnd) { - const { sessionId } = task; + for (const entry of entries) { + const { agentId, displayName, sessions } = entry; + + if (!displayName) { + // Cannot init an agent without a name. Log a warning per session and skip — we have no + // sessionId context to surface in the failed list, so we skip rather than fail. + for (const s of sessions) { + this.warn(messages.getMessage('output.skippingSessionMissingDisplayName', [s.sessionId, agentId])); + } + continue; + } + + let agent: ScriptAgent | ProductionAgent; try { - // ScriptAgent flushes traces to disk; ProductionAgent issues the server-side request. - agent.setSessionId(sessionId); - // eslint-disable-next-line no-await-in-loop - const tracesPath = await agent.getHistoryDir(); - // eslint-disable-next-line no-await-in-loop - await callPreviewEnd(agent); - // eslint-disable-next-line no-await-in-loop - await removeCache(agent); - ended.push({ sessionId, tracesPath }); + // Determine agent type from any session's sessionType (all sessions for an agent share the same type). + // Default to ScriptAgent when sessionType is missing — local-only cleanup is safest. + const sessionType = sessions[0]?.sessionType ?? 'simulated'; + const isProduction = sessionType === 'published'; + if (isProduction) { + // eslint-disable-next-line no-await-in-loop + agent = await Agent.init({ connection: conn, project: this.project!, apiNameOrId: displayName }); + } else { + // eslint-disable-next-line no-await-in-loop + agent = await Agent.init({ connection: conn, project: this.project!, aabName: displayName }); + } } catch (error) { - failed.push({ task, error: SfError.wrap(error).message }); + // If we can't init the agent, mark all its sessions as failed. + const errMsg = SfError.wrap(error).message; + for (const s of sessions) { + failed.push({ task: { sessionId: s.sessionId }, error: errMsg }); + } + continue; } + + // eslint-disable-next-line no-await-in-loop + const { ended: agentEnded, failed: agentFailed } = await endSessionsForAgent( + agent, + sessions.map((s) => ({ sessionId: s.sessionId })) + ); + ended.push(...agentEnded); + failed.push(...agentFailed); } + return this.finishEndAll(ended, failed); + } + + /** + * Called by endAllForAgent when we have a single agent and already aggregated ended/failed. + * Throws a partial-failure error if needed; logs success otherwise. + */ + private async finishEndAll( + ended: EndedSession[], + failed: Array<{ task: SessionTask; error: string }> + ): Promise<{ ended: EndedSession[] }> { if (failed.length > 0) { const failedList = failed.map((f) => `${f.task.sessionId}: ${f.error}`).join(', '); const endedIds = ended.map((e) => e.sessionId).join(', '); @@ -248,3 +352,37 @@ export default class AgentPreviewEnd extends SfCommand { } type CommandFlags = Interfaces.InferredFlags; + +/** + * Ends a list of sessions on the given agent object serially. + * Returns { ended, failed } so callers can aggregate results. + * Does NOT throw on partial failure — callers decide what to do. + */ +async function endSessionsForAgent( + agent: ScriptAgent | ProductionAgent, + sessionsToEnd: SessionTask[] +): Promise<{ ended: EndedSession[]; failed: Array<{ task: SessionTask; error: string }> }> { + const ended: EndedSession[] = []; + const failed: Array<{ task: SessionTask; error: string }> = []; + + for (const task of sessionsToEnd) { + const { sessionId } = task; + try { + agent.setSessionId(sessionId); + // eslint-disable-next-line no-await-in-loop + await validatePreviewSession(agent); + // eslint-disable-next-line no-await-in-loop + const tracesPath = await agent.getHistoryDir(); + // ScriptAgent flushes traces to disk; ProductionAgent issues the server-side end request. + // eslint-disable-next-line no-await-in-loop + await callPreviewEnd(agent); + // eslint-disable-next-line no-await-in-loop + await removeCache(agent); + ended.push({ sessionId, tracesPath }); + } catch (error) { + failed.push({ task, error: SfError.wrap(error).message }); + } + } + + return { ended, failed }; +} diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index 42041c1b..dcf33626 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -33,6 +33,7 @@ describe('agent preview end', () => { let AgentPreviewEnd: any; let initStub: sinon.SinonStub; let getCachedSessionIdsStub: sinon.SinonStub; + let listCachedSessionsStub: sinon.SinonStub; let removeCacheStub: sinon.SinonStub; let validatePreviewSessionStub: sinon.SinonStub; let confirmStub: sinon.SinonStub; @@ -41,6 +42,7 @@ describe('agent preview end', () => { beforeEach(async () => { agentPreviewEndStub = $$.SANDBOX.stub().resolves(); getCachedSessionIdsStub = $$.SANDBOX.stub().resolves([SESSION_ID]); + listCachedSessionsStub = $$.SANDBOX.stub().resolves([]); removeCacheStub = $$.SANDBOX.stub().resolves(); validatePreviewSessionStub = $$.SANDBOX.stub().resolves(); confirmStub = $$.SANDBOX.stub().resolves(true); @@ -65,6 +67,7 @@ describe('agent preview end', () => { }, '../../../../src/previewSessionStore.js': { getCachedSessionIds: getCachedSessionIdsStub, + listCachedSessions: listCachedSessionsStub, removeCache: removeCacheStub, validatePreviewSession: validatePreviewSessionStub, }, @@ -165,7 +168,7 @@ describe('agent preview end', () => { await AgentPreviewEnd.run(['--api-name', 'My_Published_Agent', '--authoring-bundle', 'My_Local_Agent']); expect.fail('Expected an error to be thrown'); } catch (error: unknown) { - expect((error as Error).message).to.match(/--api-name cannot also be provided when using --authoring-bundle/i); + expect((error as Error).message).to.match(/--api-name.*cannot also be provided when using --authoring-bundle/i); } }); @@ -179,23 +182,30 @@ describe('agent preview end', () => { }); }); - describe('--all flag: ends all sessions across all agents', () => { - it('throws when --all is used without --api-name or --authoring-bundle', async () => { + describe('--all flag: ends all cached sessions for the specified agent', () => { + it('throws when --all is used without --target-org', async () => { try { - await AgentPreviewEnd.run(['--all', '--no-prompt']); + await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent']); expect.fail('Expected an error to be thrown'); } catch (error: unknown) { - const err = error as any; - expect(err.message).to.match(/exactly one of the following must be provided.*--api-name.*--authoring-bundle/is); + expect((error as Error).message).to.include('--target-org'); } }); it('filters to the specified agent when combined with --authoring-bundle', async () => { getCachedSessionIdsStub.resolves(['session-1', 'session-2']); - const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); + const result = await AgentPreviewEnd.run([ + '--all', + '--authoring-bundle', + 'My_Local_Agent', + '--target-org', + 'test@org.com', + '--no-prompt', + ]); expect(initStub.calledOnce).to.be.true; + expect(validatePreviewSessionStub.callCount).to.equal(2); expect(removeCacheStub.callCount).to.equal(2); expect((result as { ended: unknown[] }).ended).to.have.length(2); }); @@ -213,6 +223,7 @@ describe('agent preview end', () => { ]); expect(initStub.calledOnce).to.be.true; + expect(validatePreviewSessionStub.callCount).to.equal(2); expect(removeCacheStub.callCount).to.equal(2); expect((result as { ended: unknown[] }).ended).to.have.length(2); }); @@ -229,7 +240,14 @@ describe('agent preview end', () => { it('logs a message and returns an empty list when no sessions are found', async () => { getCachedSessionIdsStub.resolves([]); - const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); + const result = await AgentPreviewEnd.run([ + '--all', + '--authoring-bundle', + 'My_Local_Agent', + '--target-org', + 'test@org.com', + '--no-prompt', + ]); expect(result).to.deep.equal({ ended: [] }); expect(removeCacheStub.called).to.be.false; @@ -248,7 +266,14 @@ describe('agent preview end', () => { .resolves(); try { - await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); + await AgentPreviewEnd.run([ + '--all', + '--authoring-bundle', + 'My_Local_Agent', + '--target-org', + 'test@org.com', + '--no-prompt', + ]); expect.fail('Expected an error to be thrown'); } catch (error: unknown) { const err = error as any; @@ -263,6 +288,31 @@ describe('agent preview end', () => { expect(err.name).to.equal('PreviewEndPartialFailure'); } }); + + it('records partial results when validatePreviewSession fails for one session', async () => { + getCachedSessionIdsStub.resolves(['session-1', 'session-2']); + validatePreviewSessionStub.onFirstCall().resolves().onSecondCall().rejects(new Error('stale session')); + + try { + await AgentPreviewEnd.run([ + '--all', + '--authoring-bundle', + 'My_Local_Agent', + '--target-org', + 'test@org.com', + '--no-prompt', + ]); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + const err = error as any; + expect(err.message).to.include('session-2'); + expect(err.message).to.include('stale session'); + expect(err.message).to.include('Successfully ended 1 session(s)'); + expect(removeCacheStub.callCount).to.equal(1); + expect(agentPreviewEndStub.callCount).to.equal(1); + expect(err.name).to.equal('PreviewEndPartialFailure'); + } + }); }); describe('--all flag: confirmation prompt', () => { @@ -270,7 +320,7 @@ describe('agent preview end', () => { getCachedSessionIdsStub.resolves([SESSION_ID]); confirmStub.resolves(true); - await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent']); + await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--target-org', 'test@org.com']); expect(confirmStub.calledOnce).to.be.true; expect(removeCacheStub.calledOnce).to.be.true; @@ -280,7 +330,13 @@ describe('agent preview end', () => { getCachedSessionIdsStub.resolves([SESSION_ID]); confirmStub.resolves(false); - const result = await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent']); + const result = await AgentPreviewEnd.run([ + '--all', + '--authoring-bundle', + 'My_Local_Agent', + '--target-org', + 'test@org.com', + ]); expect(removeCacheStub.called).to.be.false; expect(result).to.deep.equal({ ended: [] }); @@ -289,10 +345,161 @@ describe('agent preview end', () => { it('skips the confirmation prompt when --no-prompt is provided', async () => { getCachedSessionIdsStub.resolves([SESSION_ID]); - await AgentPreviewEnd.run(['--all', '--authoring-bundle', 'My_Local_Agent', '--no-prompt']); + await AgentPreviewEnd.run([ + '--all', + '--authoring-bundle', + 'My_Local_Agent', + '--target-org', + 'test@org.com', + '--no-prompt', + ]); expect(confirmStub.called).to.be.false; expect(removeCacheStub.calledOnce).to.be.true; }); }); + + describe('--all flag: all-agents path (no agent identifier)', () => { + it('ends sessions for all agents from listCachedSessions when only --target-org is provided', async () => { + listCachedSessionsStub.resolves([ + { + agentId: 'agent-1-id', + displayName: 'My_Script_Agent', + sessions: [ + { sessionId: 'sess-1', sessionType: 'simulated' }, + { sessionId: 'sess-2', sessionType: 'live' }, + ], + }, + { + agentId: 'agent-2-id', + displayName: 'My_Published_Agent', + sessions: [{ sessionId: 'sess-3', sessionType: 'published' }], + }, + ]); + + const result = await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); + + expect(listCachedSessionsStub.calledOnce).to.be.true; + expect(initStub.callCount).to.equal(2); + expect(validatePreviewSessionStub.callCount).to.equal(3); + expect(removeCacheStub.callCount).to.equal(3); + expect((result as { ended: unknown[] }).ended).to.have.length(3); + }); + + it('returns empty ended list when listCachedSessions returns no sessions', async () => { + listCachedSessionsStub.resolves([]); + + const result = await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); + + expect(result).to.deep.equal({ ended: [] }); + expect(initStub.called).to.be.false; + }); + + it('throws when --all alone is used without --target-org', async () => { + try { + await AgentPreviewEnd.run(['--all']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + expect((error as Error).message).to.include('--target-org'); + } + }); + + it('skips agents with missing displayName and logs a warning', async () => { + listCachedSessionsStub.resolves([ + { + agentId: 'agent-no-name', + displayName: undefined, + sessions: [{ sessionId: 'orphan-sess-1', sessionType: 'simulated' }], + }, + { + agentId: 'agent-with-name', + displayName: 'My_Script_Agent', + sessions: [{ sessionId: 'known-sess-1', sessionType: 'simulated' }], + }, + ]); + + const warnStub = $$.SANDBOX.stub(AgentPreviewEnd.prototype, 'warn'); + + const result = await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); + + // Only the named agent's session should have been ended + expect((result as { ended: unknown[] }).ended).to.have.length(1); + expect(initStub.callCount).to.equal(1); + expect(removeCacheStub.callCount).to.equal(1); + // A warning should have been emitted for the session with the missing displayName + expect(warnStub.calledOnce).to.be.true; + }); + + it('uses aabName init path for simulated/live sessions and apiNameOrId for published', async () => { + listCachedSessionsStub.resolves([ + { + agentId: 'script-agent-id', + displayName: 'My_Script_Agent', + sessions: [{ sessionId: 'sess-sim', sessionType: 'simulated' }], + }, + { + agentId: 'prod-agent-id', + displayName: 'My_Published_Agent', + sessions: [{ sessionId: 'sess-pub', sessionType: 'published' }], + }, + ]); + + await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); + + expect(initStub.callCount).to.equal(2); + // First call should use aabName for simulated agent + expect(initStub.firstCall.args[0]).to.have.property('aabName', 'My_Script_Agent'); + // Second call should use apiNameOrId for published agent + expect(initStub.secondCall.args[0]).to.have.property('apiNameOrId', 'My_Published_Agent'); + }); + + it('defaults to aabName (ScriptAgent) when sessionType is undefined', async () => { + listCachedSessionsStub.resolves([ + { + agentId: 'agent-no-type', + displayName: 'My_Unknown_Agent', + sessions: [{ sessionId: 'sess-no-type', sessionType: undefined }], + }, + ]); + + await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); + + expect(initStub.calledOnce).to.be.true; + // sessionType undefined → defaults to 'simulated' → should use aabName path + expect(initStub.firstCall.args[0]).to.have.property('aabName', 'My_Unknown_Agent'); + expect(initStub.firstCall.args[0]).to.not.have.property('apiNameOrId'); + }); + + it('throws PreviewEndPartialFailure when one agent succeeds and another throws (no agent identifier)', async () => { + // Two agents, one session each. The second agent's callPreviewEnd call throws. + // agent.preview.end is agentPreviewEndStub (shared across mock instances via MockScriptAgent). + agentPreviewEndStub.onFirstCall().resolves().onSecondCall().rejects(new Error('agent B exploded')); + + listCachedSessionsStub.resolves([ + { + agentId: 'agent-a-id', + displayName: 'Agent_A', + sessions: [{ sessionId: 'sess-a-1', sessionType: 'simulated' }], + }, + { + agentId: 'agent-b-id', + displayName: 'Agent_B', + sessions: [{ sessionId: 'sess-b-1', sessionType: 'simulated' }], + }, + ]); + + try { + await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); + expect.fail('Expected an error to be thrown'); + } catch (error: unknown) { + const err = error as any; + expect(err.name).to.equal('PreviewEndPartialFailure'); + expect(err.message).to.include('Failed to end 1 session(s)'); + expect(err.message).to.include('sess-b-1'); + expect(err.message).to.include('agent B exploded'); + expect(err.message).to.include('Successfully ended 1 session(s)'); + expect(err.message).to.include('sess-a-1'); + } + }); + }); }); From 1b1c52d774c84cc4c176ddc8f6922767cbe5e6e4 Mon Sep 17 00:00:00 2001 From: Francisco Sammartino Date: Mon, 4 May 2026 16:51:43 -0300 Subject: [PATCH 20/20] fix: address PR review feedback and improve --all end-all-agents path - Remove all explicit Lifecycle.emitTelemetry() calls (CLI framework handles it) - Change PreviewEndPartialFailure exit code from 4 to 6 - Use sessionType as discriminator for agent type (published vs local) - Re-set sessionId after ProductionAgent.endSession() clears it before removeCache - Clean local cache on server error for --all paths to prevent stale buildup - Show per-agent breakdown with local/published label in confirmation prompt - Use displayName in prompt breakdown, falling back to agentId Co-Authored-By: Claude Sonnet 4.6 --- messages/agent.preview.end.md | 8 +-- src/commands/agent/preview/end.ts | 84 ++++++++++++------------- test/commands/agent/preview/end.test.ts | 70 ++++++--------------- test/nuts/z3.agent.preview.nut.ts | 2 +- 4 files changed, 61 insertions(+), 103 deletions(-) diff --git a/messages/agent.preview.end.md b/messages/agent.preview.end.md index 5b6edf7c..6628229d 100644 --- a/messages/agent.preview.end.md +++ b/messages/agent.preview.end.md @@ -8,7 +8,7 @@ You must have previously started a programmatic agent preview session with the " The original "agent preview start" command outputs a session ID which you then use with the --session-id flag of this command to end the session. You don't have to specify the --session-id flag if an agent has only one active preview session. You must also use either the --authoring-bundle or --api-name flag to specify the API name of the authoring bundle or the published agent, respectively. To find either API name, navigate to your package directory in your DX project. The API name of an authoring bundle is the same as its directory name under the "aiAuthoringBundles" metadata directory. Similarly, the published agent's API name is the same as its directory name under the "Bots" metadata directory. -Use the --all flag together with either --api-name or --authoring-bundle to end all active preview sessions for a specific agent at once. Alternatively, use --all with only --target-org to end all active preview sessions for every agent found in the local session cache. +Use the --all flag to end all active preview sessions at once. You can combine --all with --api-name or --authoring-bundle to end only sessions for a specific agent, or use --all on its own to end every session across all agents in the project. # flags.session-id.summary @@ -62,17 +62,13 @@ No active preview sessions found. Ended %s preview session(s). -# output.skippingSessionMissingDisplayName - -Skipping session '%s' for agent '%s': no agent name found in cache. - # prompt.confirmAll About to end %s preview session(s) for agent '%s'. Continue? # prompt.confirmAllAgents -About to end %s preview session(s) across all agents. Continue? +About to end %s preview session(s) across %s agent(s). Continue? # examples diff --git a/src/commands/agent/preview/end.ts b/src/commands/agent/preview/end.ts index f5365cd1..f645b59e 100644 --- a/src/commands/agent/preview/end.ts +++ b/src/commands/agent/preview/end.ts @@ -15,7 +15,7 @@ */ import { Flags, SfCommand, toHelpSection, prompts } from '@salesforce/sf-plugins-core'; -import { Messages, SfError, Lifecycle, EnvironmentVariable } from '@salesforce/core'; +import { Messages, SfError, EnvironmentVariable } from '@salesforce/core'; import { Agent, ProductionAgent, ScriptAgent } from '@salesforce/agents'; import type { Connection } from '@salesforce/core'; import type { Interfaces } from '@oclif/core'; @@ -64,7 +64,7 @@ export default class AgentPreviewEnd extends SfCommand { 'Neither --api-name nor --authoring-bundle was provided (required when --all is not set).', 'NotFound (2)': 'Agent not found, or no preview session exists for this agent.', 'PreviewEndFailed (4)': 'Failed to end the preview session.', - 'PreviewEndPartialFailure (4)': 'With --all, one or more sessions failed to end while others succeeded.', + 'PreviewEndPartialFailure (6)': 'With --all, one or more sessions failed to end while others succeeded.', 'SessionAmbiguous (5)': 'Multiple preview sessions found; specify --session-id to choose one.', }); @@ -123,11 +123,9 @@ export default class AgentPreviewEnd extends SfCommand { if (sessionId === undefined) { const cached = await getCachedSessionIds(this.project!, agent); if (cached.length === 0) { - await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_no_session' }); throw new SfError(messages.getMessage('error.noSession'), 'PreviewSessionNotFound', [], 2); } if (cached.length > 1) { - await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_multiple_sessions' }); throw new SfError( messages.getMessage('error.multipleSessions', [cached.join(', ')]), 'PreviewSessionAmbiguous', @@ -144,7 +142,6 @@ export default class AgentPreviewEnd extends SfCommand { await validatePreviewSession(agent); } catch (error) { const wrapped = SfError.wrap(error); - await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_session_invalid' }); throw new SfError( messages.getMessage('error.sessionInvalid', [sessionId]), 'PreviewSessionInvalid', @@ -161,7 +158,6 @@ export default class AgentPreviewEnd extends SfCommand { await callPreviewEnd(agent); } catch (error) { const wrapped = SfError.wrap(error); - await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_failed' }); throw new SfError( messages.getMessage('error.endFailed', [wrapped.message]), 'PreviewEndFailed', @@ -171,7 +167,6 @@ export default class AgentPreviewEnd extends SfCommand { ); } - await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_success' }); const result: EndedSession = { sessionId, tracesPath }; this.log(messages.getMessage('output.tracesPath', [tracesPath])); return result; @@ -195,7 +190,6 @@ export default class AgentPreviewEnd extends SfCommand { : await Agent.init({ connection: conn as Connection, project: this.project!, apiNameOrId: flags['api-name']! }); } catch (error) { const wrapped = SfError.wrap(error); - await Lifecycle.getInstance().emitTelemetry({ eventName: 'agent_preview_end_agent_not_found' }); throw new SfError(messages.getMessage('error.agentNotFound', [agentIdentifier]), 'AgentNotFound', [], 2, wrapped); } } @@ -241,21 +235,20 @@ export default class AgentPreviewEnd extends SfCommand { } } - const { ended, failed } = await endSessionsForAgent(agent, sessionsToEnd); + const { ended, failed } = await endSessionsForAgent(agent, sessionsToEnd, true); return this.finishEndAll(ended, failed); } /** * Path 2: --all alone (no agent identifier). * Reads all agents from the local cache via listCachedSessions and ends every session. - * Missing displayName: warns and skips the entry (no sessionId context for failed list). - * Missing sessionType: defaults to ScriptAgent (safest — local-only cleanup). + * sessionType 'published' → ProductionAgent (server-side DELETE). 'simulated'/'live' → ScriptAgent (local only). + * session-meta.json is always present for entries returned by listCachedSessions, so sessionType is always defined. */ private async endAllAgents(conn: Connection, noPrompt: boolean | undefined): Promise<{ ended: EndedSession[] }> { const entries: CachedPreviewSessionEntry[] = await listCachedSessions(this.project!); - // Only count sessions for entries that have a displayName; entries without one will be skipped. - const totalSessions = entries.reduce((sum, e) => (e.displayName ? sum + e.sessions.length : sum), 0); + const totalSessions = entries.reduce((sum, e) => sum + e.sessions.length, 0); if (totalSessions === 0) { this.log(messages.getMessage('output.noSessionsFound')); @@ -263,8 +256,18 @@ export default class AgentPreviewEnd extends SfCommand { } if (!noPrompt) { + const agentBreakdown = entries + .map((e) => { + const label = e.displayName ?? e.agentId; + const type = e.sessions[0]?.sessionType === 'published' ? 'published' : 'local'; + return ` - ${label} (${type}): ${e.sessions.length} session(s)`; + }) + .join('\n'); const confirmed = await prompts.confirm({ - message: messages.getMessage('prompt.confirmAllAgents', [totalSessions]), + message: `${messages.getMessage('prompt.confirmAllAgents', [ + totalSessions, + entries.length, + ])}\n${agentBreakdown}`, }); if (!confirmed) { return { ended: [] }; @@ -275,29 +278,17 @@ export default class AgentPreviewEnd extends SfCommand { const failed: Array<{ task: SessionTask; error: string }> = []; for (const entry of entries) { - const { agentId, displayName, sessions } = entry; - - if (!displayName) { - // Cannot init an agent without a name. Log a warning per session and skip — we have no - // sessionId context to surface in the failed list, so we skip rather than fail. - for (const s of sessions) { - this.warn(messages.getMessage('output.skippingSessionMissingDisplayName', [s.sessionId, agentId])); - } - continue; - } + const { agentId, sessions } = entry; let agent: ScriptAgent | ProductionAgent; try { - // Determine agent type from any session's sessionType (all sessions for an agent share the same type). - // Default to ScriptAgent when sessionType is missing — local-only cleanup is safest. - const sessionType = sessions[0]?.sessionType ?? 'simulated'; - const isProduction = sessionType === 'published'; + const isProduction = sessions[0]?.sessionType === 'published'; if (isProduction) { // eslint-disable-next-line no-await-in-loop - agent = await Agent.init({ connection: conn, project: this.project!, apiNameOrId: displayName }); + agent = await Agent.init({ connection: conn, project: this.project!, apiNameOrId: agentId }); } else { // eslint-disable-next-line no-await-in-loop - agent = await Agent.init({ connection: conn, project: this.project!, aabName: displayName }); + agent = await Agent.init({ connection: conn, project: this.project!, aabName: agentId }); } } catch (error) { // If we can't init the agent, mark all its sessions as failed. @@ -311,7 +302,8 @@ export default class AgentPreviewEnd extends SfCommand { // eslint-disable-next-line no-await-in-loop const { ended: agentEnded, failed: agentFailed } = await endSessionsForAgent( agent, - sessions.map((s) => ({ sessionId: s.sessionId })) + sessions.map((s) => ({ sessionId: s.sessionId })), + true ); ended.push(...agentEnded); failed.push(...agentFailed); @@ -324,28 +316,19 @@ export default class AgentPreviewEnd extends SfCommand { * Called by endAllForAgent when we have a single agent and already aggregated ended/failed. * Throws a partial-failure error if needed; logs success otherwise. */ - private async finishEndAll( + private finishEndAll( ended: EndedSession[], failed: Array<{ task: SessionTask; error: string }> - ): Promise<{ ended: EndedSession[] }> { + ): { ended: EndedSession[] } { if (failed.length > 0) { const failedList = failed.map((f) => `${f.task.sessionId}: ${f.error}`).join(', '); const endedIds = ended.map((e) => e.sessionId).join(', '); const msg = `Failed to end ${failed.length} session(s): [${failedList}]. Successfully ended ${ ended.length } session(s)${ended.length > 0 ? `: [${endedIds}]` : ''}.`; - await Lifecycle.getInstance().emitTelemetry({ - eventName: 'agent_preview_end_all_partial_failure', - failedCount: failed.length, - succeededCount: ended.length, - }); - throw new SfError(msg, 'PreviewEndPartialFailure', [], 4); + throw new SfError(msg, 'PreviewEndPartialFailure', [], 6); } - await Lifecycle.getInstance().emitTelemetry({ - eventName: 'agent_preview_end_all_success', - sessionCount: ended.length, - }); this.log(messages.getMessage('output.endedAll', [ended.length])); return { ended }; } @@ -357,10 +340,13 @@ type CommandFlags = Interfaces.InferredFlags; * Ends a list of sessions on the given agent object serially. * Returns { ended, failed } so callers can aggregate results. * Does NOT throw on partial failure — callers decide what to do. + * When cleanOnServerError is true, a server-side failure still removes the local cache entry + * so stale sessions don't accumulate (used by --all paths). */ async function endSessionsForAgent( agent: ScriptAgent | ProductionAgent, - sessionsToEnd: SessionTask[] + sessionsToEnd: SessionTask[], + cleanOnServerError = false ): Promise<{ ended: EndedSession[]; failed: Array<{ task: SessionTask; error: string }> }> { const ended: EndedSession[] = []; const failed: Array<{ task: SessionTask; error: string }> = []; @@ -376,10 +362,20 @@ async function endSessionsForAgent( // ScriptAgent flushes traces to disk; ProductionAgent issues the server-side end request. // eslint-disable-next-line no-await-in-loop await callPreviewEnd(agent); + // ProductionAgent.endSession() clears this.sessionId after the server call; re-set it so + // removeCache can call getHistoryDir() without throwing "No sessionId set on agent". + agent.setSessionId(sessionId); // eslint-disable-next-line no-await-in-loop await removeCache(agent); ended.push({ sessionId, tracesPath }); } catch (error) { + if (cleanOnServerError) { + // Server doesn't know about this session (e.g. already expired). Remove local cache so + // it doesn't show up in future listings. + agent.setSessionId(sessionId); + // eslint-disable-next-line no-await-in-loop + await removeCache(agent).catch(() => {}); + } failed.push({ task, error: SfError.wrap(error).message }); } } diff --git a/test/commands/agent/preview/end.test.ts b/test/commands/agent/preview/end.test.ts index dcf33626..bf3feba7 100644 --- a/test/commands/agent/preview/end.test.ts +++ b/test/commands/agent/preview/end.test.ts @@ -283,8 +283,8 @@ describe('agent preview end', () => { expect(err.message).to.include('network timeout'); // Also mentions the ones that succeeded expect(err.message).to.include('Successfully ended 2 session(s)'); - // Only 2 successful removes happened (session-1 and session-3) - expect(removeCacheStub.callCount).to.equal(2); + // 3 removes: session-1 (success), session-2 (catch cleanup), session-3 (success) + expect(removeCacheStub.callCount).to.equal(3); expect(err.name).to.equal('PreviewEndPartialFailure'); } }); @@ -308,7 +308,8 @@ describe('agent preview end', () => { expect(err.message).to.include('session-2'); expect(err.message).to.include('stale session'); expect(err.message).to.include('Successfully ended 1 session(s)'); - expect(removeCacheStub.callCount).to.equal(1); + // 2 removes: session-1 (success) + session-2 (catch cleanup) + expect(removeCacheStub.callCount).to.equal(2); expect(agentPreviewEndStub.callCount).to.equal(1); expect(err.name).to.equal('PreviewEndPartialFailure'); } @@ -363,16 +364,14 @@ describe('agent preview end', () => { it('ends sessions for all agents from listCachedSessions when only --target-org is provided', async () => { listCachedSessionsStub.resolves([ { - agentId: 'agent-1-id', - displayName: 'My_Script_Agent', + agentId: 'My_Script_Agent', sessions: [ { sessionId: 'sess-1', sessionType: 'simulated' }, { sessionId: 'sess-2', sessionType: 'live' }, ], }, { - agentId: 'agent-2-id', - displayName: 'My_Published_Agent', + agentId: '0Xxg8000000NBNlCAO', sessions: [{ sessionId: 'sess-3', sessionType: 'published' }], }, ]); @@ -404,42 +403,30 @@ describe('agent preview end', () => { } }); - it('skips agents with missing displayName and logs a warning', async () => { + it('uses aabName (ScriptAgent) for live sessionType', async () => { listCachedSessionsStub.resolves([ { - agentId: 'agent-no-name', - displayName: undefined, - sessions: [{ sessionId: 'orphan-sess-1', sessionType: 'simulated' }], - }, - { - agentId: 'agent-with-name', - displayName: 'My_Script_Agent', - sessions: [{ sessionId: 'known-sess-1', sessionType: 'simulated' }], + agentId: 'Local_Info_Agent', + sessions: [{ sessionId: 'aab-sess-1', sessionType: 'live' }], }, ]); - const warnStub = $$.SANDBOX.stub(AgentPreviewEnd.prototype, 'warn'); - const result = await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); - // Only the named agent's session should have been ended expect((result as { ended: unknown[] }).ended).to.have.length(1); - expect(initStub.callCount).to.equal(1); - expect(removeCacheStub.callCount).to.equal(1); - // A warning should have been emitted for the session with the missing displayName - expect(warnStub.calledOnce).to.be.true; + expect(initStub.calledOnce).to.be.true; + expect(initStub.firstCall.args[0]).to.have.property('aabName', 'Local_Info_Agent'); + expect(removeCacheStub.calledOnce).to.be.true; }); - it('uses aabName init path for simulated/live sessions and apiNameOrId for published', async () => { + it('uses aabName for simulated/live sessions and apiNameOrId for published', async () => { listCachedSessionsStub.resolves([ { - agentId: 'script-agent-id', - displayName: 'My_Script_Agent', + agentId: 'My_Script_Agent', sessions: [{ sessionId: 'sess-sim', sessionType: 'simulated' }], }, { - agentId: 'prod-agent-id', - displayName: 'My_Published_Agent', + agentId: 'Weather_Agent', sessions: [{ sessionId: 'sess-pub', sessionType: 'published' }], }, ]); @@ -447,27 +434,8 @@ describe('agent preview end', () => { await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); expect(initStub.callCount).to.equal(2); - // First call should use aabName for simulated agent expect(initStub.firstCall.args[0]).to.have.property('aabName', 'My_Script_Agent'); - // Second call should use apiNameOrId for published agent - expect(initStub.secondCall.args[0]).to.have.property('apiNameOrId', 'My_Published_Agent'); - }); - - it('defaults to aabName (ScriptAgent) when sessionType is undefined', async () => { - listCachedSessionsStub.resolves([ - { - agentId: 'agent-no-type', - displayName: 'My_Unknown_Agent', - sessions: [{ sessionId: 'sess-no-type', sessionType: undefined }], - }, - ]); - - await AgentPreviewEnd.run(['--all', '--target-org', 'test@org.com', '--no-prompt']); - - expect(initStub.calledOnce).to.be.true; - // sessionType undefined → defaults to 'simulated' → should use aabName path - expect(initStub.firstCall.args[0]).to.have.property('aabName', 'My_Unknown_Agent'); - expect(initStub.firstCall.args[0]).to.not.have.property('apiNameOrId'); + expect(initStub.secondCall.args[0]).to.have.property('apiNameOrId', 'Weather_Agent'); }); it('throws PreviewEndPartialFailure when one agent succeeds and another throws (no agent identifier)', async () => { @@ -477,13 +445,11 @@ describe('agent preview end', () => { listCachedSessionsStub.resolves([ { - agentId: 'agent-a-id', - displayName: 'Agent_A', + agentId: 'Agent_A', sessions: [{ sessionId: 'sess-a-1', sessionType: 'simulated' }], }, { - agentId: 'agent-b-id', - displayName: 'Agent_B', + agentId: 'Agent_B', sessions: [{ sessionId: 'sess-b-1', sessionType: 'simulated' }], }, ]); diff --git a/test/nuts/z3.agent.preview.nut.ts b/test/nuts/z3.agent.preview.nut.ts index 3aba0890..a54955ee 100644 --- a/test/nuts/z3.agent.preview.nut.ts +++ b/test/nuts/z3.agent.preview.nut.ts @@ -154,7 +154,7 @@ describe('agent preview', function () { `agent preview end --session-id ${sessionId} --api-name ${ publishedAgent!.DeveloperName } --target-org ${targetOrg} --json` - ).jsonOutput?.result as import('../../src/commands/agent/preview/end.js').EndedSession | undefined; + ).jsonOutput?.result as { sessionId?: string; tracesPath?: string } | undefined; expect(endResult?.sessionId).to.equal(sessionId); expect(endResult?.tracesPath).to.be.a('string'); });