From eaf38f922a015bf9a1aecbcbe018379f66bc5c6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Tue, 30 Jun 2026 11:05:33 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20extract=20remote/=20folder=20?= =?UTF-8?q?=E2=80=94=20Phase=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move the remote/proxy/upload subsystem out of the src/ root cluster into a dedicated src/remote/ intent folder, per plans/perfect-shape.md §5.5: daemon-proxy · daemon-artifacts · upload-client(-artifact) · remote-config · remote-config-core · remote-config-schema · remote-connection-state - 8 files moved (git renames); imports repointed via a resolve-based codemod (path.relative recomputation — correctly distinguishes the root remote-config from the unrelated src/utils/remote-config.ts) - rslib entry keeps key 'remote-config' so dist output stays dist/src/remote-config.js; public 'agent-device/remote-config' byte-identical - update .fallowrc.json entrypoint + fallow-baselines/health.json keys + vitest.config.ts coverage include + the integration test import paths Behaviorless path codemod. typecheck/lint/build/fallow/tests all green. Stacked on #950 (contracts→kernel). --- .fallowrc.json | 2 +- fallow-baselines/health.json | 8 ++++---- rslib.config.ts | 2 +- src/__tests__/cli-agent-cdp-session.test.ts | 5 ++++- src/__tests__/cli-config.test.ts | 2 +- src/__tests__/cli-react-devtools-session.test.ts | 5 ++++- src/__tests__/cloud-connect-auth.test.ts | 2 +- src/__tests__/cloud-connect-profile.test.ts | 2 +- src/__tests__/daemon-proxy.test.ts | 2 +- src/__tests__/remote-config-public.test.ts | 2 +- src/__tests__/remote-connection.test.ts | 2 +- src/__tests__/upload-client.test.ts | 2 +- src/cli.ts | 2 +- src/cli/cloud-connection-profile.ts | 2 +- src/cli/commands/connection-runtime.ts | 4 ++-- src/cli/commands/connection.ts | 4 ++-- src/cli/commands/proxy.ts | 2 +- src/cli/generated-remote-config.ts | 7 +++++-- src/cli/proxy-connection-profile.ts | 2 +- src/client-types.ts | 2 +- src/daemon-client-rpc.ts | 2 +- src/daemon-client.ts | 4 ++-- src/{ => remote}/daemon-artifacts.ts | 10 +++++----- src/{ => remote}/daemon-proxy.ts | 10 +++++----- src/{ => remote}/remote-config-core.ts | 6 +++--- src/{ => remote}/remote-config-schema.ts | 8 ++++---- src/{ => remote}/remote-config.ts | 0 src/{ => remote}/remote-connection-state.ts | 10 +++++----- src/{ => remote}/upload-client-artifact.ts | 4 ++-- src/{ => remote}/upload-client.ts | 8 ++++---- src/utils/__tests__/cli-option-schema.test.ts | 5 ++++- src/utils/cli-flags.ts | 2 +- src/utils/remote-config.ts | 7 +++++-- .../provider-scenarios/remote-daemon-client.test.ts | 4 ++-- vitest.config.ts | 2 +- 35 files changed, 79 insertions(+), 64 deletions(-) rename src/{ => remote}/daemon-artifacts.ts (98%) rename src/{ => remote}/daemon-proxy.ts (97%) rename src/{ => remote}/remote-config-core.ts (95%) rename src/{ => remote}/remote-config-schema.ts (95%) rename src/{ => remote}/remote-config.ts (100%) rename src/{ => remote}/remote-connection-state.ts (97%) rename src/{ => remote}/upload-client-artifact.ts (97%) rename src/{ => remote}/upload-client.ts (97%) diff --git a/.fallowrc.json b/.fallowrc.json index 8f4b9da7c..4148921ff 100644 --- a/.fallowrc.json +++ b/.fallowrc.json @@ -6,7 +6,7 @@ "src/io.ts", "src/artifacts.ts", "src/metro/metro.ts", - "src/remote-config.ts", + "src/remote/remote-config.ts", "src/install-source.ts", "src/android-adb.ts", "src/android-snapshot-helper.ts", diff --git a/fallow-baselines/health.json b/fallow-baselines/health.json index fa1f5e50b..c445243f0 100644 --- a/fallow-baselines/health.json +++ b/fallow-baselines/health.json @@ -151,7 +151,7 @@ "count": 1 } }, - "src/daemon-artifacts.ts": { + "src/remote/daemon-artifacts.ts": { "crap_moderate": { "count": 2 } @@ -506,7 +506,7 @@ "count": 1 } }, - "src/remote-config-core.ts": { + "src/remote/remote-config-core.ts": { "complexity_high": { "count": 1 }, @@ -514,12 +514,12 @@ "count": 1 } }, - "src/remote-connection-state.ts": { + "src/remote/remote-connection-state.ts": { "crap_high": { "count": 1 } }, - "src/upload-client.ts": { + "src/remote/upload-client.ts": { "crap_moderate": { "count": 1 } diff --git a/rslib.config.ts b/rslib.config.ts index e8daba84a..bbb746d9e 100644 --- a/rslib.config.ts +++ b/rslib.config.ts @@ -27,7 +27,7 @@ export default defineConfig({ artifacts: 'src/artifacts.ts', batch: 'src/batch.ts', metro: 'src/metro/metro.ts', - 'remote-config': 'src/remote-config.ts', + 'remote-config': 'src/remote/remote-config.ts', 'install-source': 'src/install-source.ts', 'android-adb': 'src/android-adb.ts', 'android-snapshot-helper': 'src/android-snapshot-helper.ts', diff --git a/src/__tests__/cli-agent-cdp-session.test.ts b/src/__tests__/cli-agent-cdp-session.test.ts index 114afb5c7..2b6b106e5 100644 --- a/src/__tests__/cli-agent-cdp-session.test.ts +++ b/src/__tests__/cli-agent-cdp-session.test.ts @@ -15,7 +15,10 @@ vi.mock('../cli/commands/agent-cdp.ts', async (importOriginal) => { import { runCli } from '../cli.ts'; import { runAgentCdpCommand } from '../cli/commands/agent-cdp.ts'; import { installIsolatedCliTestEnv } from './cli-test-env.ts'; -import { hashRemoteConfigFile, writeRemoteConnectionState } from '../remote-connection-state.ts'; +import { + hashRemoteConfigFile, + writeRemoteConnectionState, +} from '../remote/remote-connection-state.ts'; import type { DaemonResponse } from '../daemon-client.ts'; afterEach(() => { diff --git a/src/__tests__/cli-config.test.ts b/src/__tests__/cli-config.test.ts index de931f890..c6c4f2e44 100644 --- a/src/__tests__/cli-config.test.ts +++ b/src/__tests__/cli-config.test.ts @@ -7,7 +7,7 @@ import { hashRemoteConfigFile, readActiveConnectionState, readRemoteConnectionState, -} from '../remote-connection-state.ts'; +} from '../remote/remote-connection-state.ts'; import { runCliCapture, type CapturedDaemonRequest } from './cli-capture.ts'; function makeTempWorkspace(): { root: string; home: string; project: string } { diff --git a/src/__tests__/cli-react-devtools-session.test.ts b/src/__tests__/cli-react-devtools-session.test.ts index 1aefbc32a..3ffc814cd 100644 --- a/src/__tests__/cli-react-devtools-session.test.ts +++ b/src/__tests__/cli-react-devtools-session.test.ts @@ -11,7 +11,10 @@ vi.mock('../cli/commands/react-devtools.ts', () => ({ import { runCli } from '../cli.ts'; import { runReactDevtoolsCommand } from '../cli/commands/react-devtools.ts'; import { installIsolatedCliTestEnv } from './cli-test-env.ts'; -import { hashRemoteConfigFile, writeRemoteConnectionState } from '../remote-connection-state.ts'; +import { + hashRemoteConfigFile, + writeRemoteConnectionState, +} from '../remote/remote-connection-state.ts'; import type { DaemonResponse } from '../daemon-client.ts'; afterEach(() => { diff --git a/src/__tests__/cloud-connect-auth.test.ts b/src/__tests__/cloud-connect-auth.test.ts index c2fd239a0..cd74b75c9 100644 --- a/src/__tests__/cloud-connect-auth.test.ts +++ b/src/__tests__/cloud-connect-auth.test.ts @@ -5,7 +5,7 @@ import os from 'node:os'; import path from 'node:path'; import { connectCommand } from '../cli/commands/connection.ts'; import { resolveCloudAccessForConnect } from '../cli/auth-session.ts'; -import { readActiveConnectionState } from '../remote-connection-state.ts'; +import { readActiveConnectionState } from '../remote/remote-connection-state.ts'; import type { AgentDeviceClient } from '../client.ts'; afterEach(() => { diff --git a/src/__tests__/cloud-connect-profile.test.ts b/src/__tests__/cloud-connect-profile.test.ts index 92bb8fbbc..25e9f7039 100644 --- a/src/__tests__/cloud-connect-profile.test.ts +++ b/src/__tests__/cloud-connect-profile.test.ts @@ -9,7 +9,7 @@ import { hashRemoteConfigFile, readActiveConnectionState, type RemoteConnectionState, -} from '../remote-connection-state.ts'; +} from '../remote/remote-connection-state.ts'; import type { AgentDeviceClient } from '../client.ts'; vi.mock('../cli/auth-session.ts', () => ({ diff --git a/src/__tests__/daemon-proxy.test.ts b/src/__tests__/daemon-proxy.test.ts index 7063cd303..64b050f5b 100644 --- a/src/__tests__/daemon-proxy.test.ts +++ b/src/__tests__/daemon-proxy.test.ts @@ -2,7 +2,7 @@ import { test } from 'vitest'; import assert from 'node:assert/strict'; import crypto from 'node:crypto'; import http from 'node:http'; -import { createDaemonProxyServer } from '../daemon-proxy.ts'; +import { createDaemonProxyServer } from '../remote/daemon-proxy.ts'; import { DAEMON_RPC_PROTOCOL_VERSION } from '../daemon/http-health.ts'; import { closeLoopbackServer, diff --git a/src/__tests__/remote-config-public.test.ts b/src/__tests__/remote-config-public.test.ts index 93ba3c9c7..3c066190b 100644 --- a/src/__tests__/remote-config-public.test.ts +++ b/src/__tests__/remote-config-public.test.ts @@ -3,7 +3,7 @@ import assert from 'node:assert/strict'; import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; -import { resolveRemoteConfigProfile, resolveRemoteConfigPath } from '../remote-config.ts'; +import { resolveRemoteConfigProfile, resolveRemoteConfigPath } from '../remote/remote-config.ts'; test('public remote-config helpers resolve file paths and merged profiles', () => { const root = fs.mkdtempSync(path.join(os.tmpdir(), 'agent-device-remote-config-public-')); diff --git a/src/__tests__/remote-connection.test.ts b/src/__tests__/remote-connection.test.ts index 34554d866..0a989fb7d 100644 --- a/src/__tests__/remote-connection.test.ts +++ b/src/__tests__/remote-connection.test.ts @@ -30,7 +30,7 @@ import { readActiveConnectionState, readRemoteConnectionState, writeRemoteConnectionState, -} from '../remote-connection-state.ts'; +} from '../remote/remote-connection-state.ts'; import type { AgentDeviceClient } from '../client.ts'; afterEach(() => { diff --git a/src/__tests__/upload-client.test.ts b/src/__tests__/upload-client.test.ts index c73875765..4ff150424 100644 --- a/src/__tests__/upload-client.test.ts +++ b/src/__tests__/upload-client.test.ts @@ -6,7 +6,7 @@ import http, { type IncomingMessage, type ServerResponse } from 'node:http'; import os from 'node:os'; import path from 'node:path'; import { once } from 'node:events'; -import { uploadArtifact } from '../upload-client.ts'; +import { uploadArtifact } from '../remote/upload-client.ts'; import type { UploadProgressEvent } from '../upload-progress.ts'; import { runCmdSync, withCommandExecutorOverride } from '../utils/exec.ts'; diff --git a/src/cli.ts b/src/cli.ts index 44f1a0092..b08da9ee2 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -31,7 +31,7 @@ import { maybeRunUpgradeNotifier } from './utils/update-check.ts'; import { resolveRemoteConnectionDefaults, type RemoteConnectionRequestMetadata, -} from './remote-connection-state.ts'; +} from './remote/remote-connection-state.ts'; import { resolveRemoteAuthForCli } from './cli/auth-session.ts'; import type { CliFlags, FlagKey } from './utils/cli-flags.ts'; import type { SessionRuntimeHints } from './kernel/contracts.ts'; diff --git a/src/cli/cloud-connection-profile.ts b/src/cli/cloud-connection-profile.ts index 5e075d63f..48b5e919b 100644 --- a/src/cli/cloud-connection-profile.ts +++ b/src/cli/cloud-connection-profile.ts @@ -1,5 +1,5 @@ import crypto from 'node:crypto'; -import type { RemoteConfigProfile } from '../remote-config-schema.ts'; +import type { RemoteConfigProfile } from '../remote/remote-config-schema.ts'; import { AppError } from '../kernel/errors.ts'; import type { CliFlags } from '../utils/cli-flags.ts'; import type { EnvMap } from '../utils/env-map.ts'; diff --git a/src/cli/commands/connection-runtime.ts b/src/cli/commands/connection-runtime.ts index 4e3fc5994..4f547b0f8 100644 --- a/src/cli/commands/connection-runtime.ts +++ b/src/cli/commands/connection-runtime.ts @@ -1,7 +1,7 @@ import { resolveDaemonPaths } from '../../daemon/config.ts'; import { stopReactDevtoolsCompanion } from '../../client-react-devtools-companion.ts'; import { stopMetroTunnel } from '../../metro/metro.ts'; -import { resolveRemoteConfigProfile } from '../../remote-config.ts'; +import { resolveRemoteConfigProfile } from '../../remote/remote-config.ts'; import { resolveDevice, type DeviceInfo } from '../../kernel/device.ts'; import { shouldAgentCdpUseRemoteBridgeUrl } from './agent-cdp.ts'; import type { MetroBridgeScope } from '../../client-companion-tunnel-contract.ts'; @@ -13,7 +13,7 @@ import { writeRemoteConnectionState, type RemoteConnectionState, type RemoteConnectionRequestMetadata, -} from '../../remote-connection-state.ts'; +} from '../../remote/remote-connection-state.ts'; import { profileToCliFlags } from '../../utils/remote-config.ts'; import type { BatchStep } from '../../client-types.ts'; import { AppError } from '../../kernel/errors.ts'; diff --git a/src/cli/commands/connection.ts b/src/cli/commands/connection.ts index b336bd3d8..9e0a8e71a 100644 --- a/src/cli/commands/connection.ts +++ b/src/cli/commands/connection.ts @@ -1,6 +1,6 @@ import crypto from 'node:crypto'; import { resolveDaemonPaths } from '../../daemon/config.ts'; -import { resolveRemoteConfigProfile } from '../../remote-config.ts'; +import { resolveRemoteConfigProfile } from '../../remote/remote-config.ts'; import { buildRemoteConnectionDaemonState, fingerprint, @@ -11,7 +11,7 @@ import { writeRemoteConnectionState, type RemoteConnectionState, type RemoteConnectionRequestMetadata, -} from '../../remote-connection-state.ts'; +} from '../../remote/remote-connection-state.ts'; import { AppError } from '../../kernel/errors.ts'; import { resolveCloudConnectProfile } from '../cloud-connection-profile.ts'; import { resolveProxyConnectProfile } from '../proxy-connection-profile.ts'; diff --git a/src/cli/commands/proxy.ts b/src/cli/commands/proxy.ts index d5f1d66c0..fdb9eaa8b 100644 --- a/src/cli/commands/proxy.ts +++ b/src/cli/commands/proxy.ts @@ -1,5 +1,5 @@ import { randomBytes } from 'node:crypto'; -import { createDaemonProxyServer } from '../../daemon-proxy.ts'; +import { createDaemonProxyServer } from '../../remote/daemon-proxy.ts'; import { buildDaemonHttpBaseUrl } from '../../daemon/http-contract.ts'; import { ensureDaemon, resolveClientSettings } from '../../daemon-client-lifecycle.ts'; import { AppError } from '../../kernel/errors.ts'; diff --git a/src/cli/generated-remote-config.ts b/src/cli/generated-remote-config.ts index 24bcd20e0..eaea04343 100644 --- a/src/cli/generated-remote-config.ts +++ b/src/cli/generated-remote-config.ts @@ -1,8 +1,11 @@ import crypto from 'node:crypto'; import fs from 'node:fs'; import path from 'node:path'; -import { resolveRemoteConfigProfile } from '../remote-config.ts'; -import type { RemoteConfigProfile, ResolvedRemoteConfigProfile } from '../remote-config-schema.ts'; +import { resolveRemoteConfigProfile } from '../remote/remote-config.ts'; +import type { + RemoteConfigProfile, + ResolvedRemoteConfigProfile, +} from '../remote/remote-config-schema.ts'; import { AppError, asAppError } from '../kernel/errors.ts'; import type { EnvMap } from '../utils/env-map.ts'; import type { CliFlags } from '../utils/cli-flags.ts'; diff --git a/src/cli/proxy-connection-profile.ts b/src/cli/proxy-connection-profile.ts index 3e2068283..7355f65df 100644 --- a/src/cli/proxy-connection-profile.ts +++ b/src/cli/proxy-connection-profile.ts @@ -1,5 +1,5 @@ import crypto from 'node:crypto'; -import type { RemoteConfigProfile } from '../remote-config-schema.ts'; +import type { RemoteConfigProfile } from '../remote/remote-config-schema.ts'; import { AppError } from '../kernel/errors.ts'; import type { CliFlags } from '../utils/cli-flags.ts'; import type { EnvMap } from '../utils/env-map.ts'; diff --git a/src/client-types.ts b/src/client-types.ts index 5fbca8fa0..57d793fb8 100644 --- a/src/client-types.ts +++ b/src/client-types.ts @@ -44,7 +44,7 @@ export type { TargetShutdownResult } from './target-shutdown-contract.ts'; import type { PerfAction, PerfArea, PerfKind, PerfSubject } from './contracts/perf.ts'; import type { AlertAction } from './alert-contract.ts'; import type { DebugSymbolsOptions, DebugSymbolsResult } from './contracts/debug-symbols.ts'; -import type { RemoteConnectionProfileFields } from './remote-config-schema.ts'; +import type { RemoteConnectionProfileFields } from './remote/remote-config-schema.ts'; import type { CommandResult } from './core/command-descriptor/command-result.ts'; export type { FindLocator } from './utils/finders.ts'; diff --git a/src/daemon-client-rpc.ts b/src/daemon-client-rpc.ts index eb789f3a8..0c628f65a 100644 --- a/src/daemon-client-rpc.ts +++ b/src/daemon-client-rpc.ts @@ -1,7 +1,7 @@ import { AppError, toAppErrorCode } from './kernel/errors.ts'; import { createRequestId } from './utils/diagnostics.ts'; import type { DaemonRequest, DaemonResponse } from './daemon/types.ts'; -import { materializeRemoteArtifacts } from './daemon-artifacts.ts'; +import { materializeRemoteArtifacts } from './remote/daemon-artifacts.ts'; import type { DaemonInfo } from './daemon-client-metadata.ts'; import { leaseScopeFromRequest, diff --git a/src/daemon-client.ts b/src/daemon-client.ts index 2f369cbb3..742365222 100644 --- a/src/daemon-client.ts +++ b/src/daemon-client.ts @@ -4,7 +4,7 @@ import type { } from './daemon/types.ts'; import { createRequestId, emitDiagnostic, withDiagnosticTimer } from './utils/diagnostics.ts'; import { INTERNAL_COMMANDS, PUBLIC_COMMANDS } from './command-catalog.ts'; -import { prepareRemoteRequestArtifacts } from './daemon-artifacts.ts'; +import { prepareRemoteRequestArtifacts } from './remote/daemon-artifacts.ts'; import { cleanupDaemonAfterRequest, ensureDaemon, @@ -13,7 +13,7 @@ import { import { sendRequest } from './daemon-client-transport.ts'; export { computeDaemonCodeSignature } from './daemon/code-signature.ts'; -export { downloadRemoteArtifact } from './daemon-artifacts.ts'; +export { downloadRemoteArtifact } from './remote/daemon-artifacts.ts'; export { cleanupFailedDaemonStartupMetadata, resolveDaemonStartupHint, diff --git a/src/daemon-artifacts.ts b/src/remote/daemon-artifacts.ts similarity index 98% rename from src/daemon-artifacts.ts rename to src/remote/daemon-artifacts.ts index c51e6af81..37cc8c410 100644 --- a/src/daemon-artifacts.ts +++ b/src/remote/daemon-artifacts.ts @@ -3,15 +3,15 @@ import http from 'node:http'; import https from 'node:https'; import path from 'node:path'; import { pipeline } from 'node:stream/promises'; -import { AppError } from './kernel/errors.ts'; -import type { DaemonArtifact, DaemonRequest, DaemonResponse } from './daemon/types.ts'; -import { buildDaemonHttpAuthHeaders } from './daemon/http-contract.ts'; +import { AppError } from '../kernel/errors.ts'; +import type { DaemonArtifact, DaemonRequest, DaemonResponse } from '../daemon/types.ts'; +import { buildDaemonHttpAuthHeaders } from '../daemon/http-contract.ts'; import { appendRecordingExtensionWhenMissing, recordingExtensionForPlatform, -} from './recording/output-path.ts'; +} from '../recording/output-path.ts'; import { uploadArtifact } from './upload-client.ts'; -import { createStderrUploadProgressReporter, type UploadProgressSink } from './upload-progress.ts'; +import { createStderrUploadProgressReporter, type UploadProgressSink } from '../upload-progress.ts'; // Mirrors the current daemon RPC timeout, but artifact download timeouts may diverge. const REMOTE_ARTIFACT_DOWNLOAD_TIMEOUT_MS = 90_000; diff --git a/src/daemon-proxy.ts b/src/remote/daemon-proxy.ts similarity index 97% rename from src/daemon-proxy.ts rename to src/remote/daemon-proxy.ts index 7d3bf9174..21a65b578 100644 --- a/src/daemon-proxy.ts +++ b/src/remote/daemon-proxy.ts @@ -2,15 +2,15 @@ import http, { type IncomingMessage, type ServerResponse } from 'node:http'; import { Readable } from 'node:stream'; import { pipeline } from 'node:stream/promises'; import { randomUUID } from 'node:crypto'; -import { AppError, normalizeError } from './kernel/errors.ts'; -import { readNodeHttpRequestBody } from './utils/node-http.ts'; -import { timingSafeStringEqual } from './utils/timing-safe-equal.ts'; +import { AppError, normalizeError } from '../kernel/errors.ts'; +import { readNodeHttpRequestBody } from '../utils/node-http.ts'; +import { timingSafeStringEqual } from '../utils/timing-safe-equal.ts'; import { DAEMON_HTTP_BASE_PATH, buildDaemonHttpAuthHeaders, buildDaemonHttpUrl, -} from './daemon/http-contract.ts'; -import { buildDaemonHealthPayload } from './daemon/http-health.ts'; +} from '../daemon/http-contract.ts'; +import { buildDaemonHealthPayload } from '../daemon/http-health.ts'; export type DaemonProxyOptions = { upstreamBaseUrl: string; diff --git a/src/remote-config-core.ts b/src/remote/remote-config-core.ts similarity index 95% rename from src/remote-config-core.ts rename to src/remote/remote-config-core.ts index 9a4d4bf72..fc8ce4570 100644 --- a/src/remote-config-core.ts +++ b/src/remote/remote-config-core.ts @@ -8,9 +8,9 @@ import { type RemoteConfigProfileOptions, type ResolvedRemoteConfigProfile, } from './remote-config-schema.ts'; -import { AppError } from './kernel/errors.ts'; -import { resolveUserPath } from './utils/path-resolution.ts'; -import { parseSourceValue } from './utils/source-value.ts'; +import { AppError } from '../kernel/errors.ts'; +import { resolveUserPath } from '../utils/path-resolution.ts'; +import { parseSourceValue } from '../utils/source-value.ts'; function readRemoteConfigFile(options: RemoteConfigProfileOptions): ResolvedRemoteConfigProfile { const env = options.env ?? process.env; diff --git a/src/remote-config-schema.ts b/src/remote/remote-config-schema.ts similarity index 95% rename from src/remote-config-schema.ts rename to src/remote/remote-config-schema.ts index b0362d6e9..325559dc7 100644 --- a/src/remote-config-schema.ts +++ b/src/remote/remote-config-schema.ts @@ -1,12 +1,12 @@ -import { buildPrimaryEnvVarName } from './utils/source-value.ts'; +import { buildPrimaryEnvVarName } from '../utils/source-value.ts'; import type { DaemonServerMode, DaemonTransportPreference, LeaseBackend, SessionIsolationMode, -} from './kernel/contracts.ts'; -import { PLATFORM_SELECTORS, type DeviceTarget, type PlatformSelector } from './kernel/device.ts'; -import type { MetroPrepareKind } from './metro/client-metro.ts'; +} from '../kernel/contracts.ts'; +import { PLATFORM_SELECTORS, type DeviceTarget, type PlatformSelector } from '../kernel/device.ts'; +import type { MetroPrepareKind } from '../metro/client-metro.ts'; export type RemoteConfigMetroOptions = { metroProjectRoot?: string; diff --git a/src/remote-config.ts b/src/remote/remote-config.ts similarity index 100% rename from src/remote-config.ts rename to src/remote/remote-config.ts diff --git a/src/remote-connection-state.ts b/src/remote/remote-connection-state.ts similarity index 97% rename from src/remote-connection-state.ts rename to src/remote/remote-connection-state.ts index 01239dd64..3be32d273 100644 --- a/src/remote-connection-state.ts +++ b/src/remote/remote-connection-state.ts @@ -2,15 +2,15 @@ import crypto from 'node:crypto'; import fs from 'node:fs'; import path from 'node:path'; import { resolveRemoteConfigPath, resolveRemoteConfigProfile } from './remote-config-core.ts'; -import { AppError } from './kernel/errors.ts'; -import { emitDiagnostic } from './utils/diagnostics.ts'; -import type { CliFlags } from './utils/cli-flags.ts'; -import type { LeaseBackend, SessionRuntimeHints } from './kernel/contracts.ts'; +import { AppError } from '../kernel/errors.ts'; +import { emitDiagnostic } from '../utils/diagnostics.ts'; +import type { CliFlags } from '../utils/cli-flags.ts'; +import type { LeaseBackend, SessionRuntimeHints } from '../kernel/contracts.ts'; import { leaseScopeFromOptions, leaseScopeToCommandFlags, leaseScopeToConnectionMetadata, -} from './core/lease-scope.ts'; +} from '../core/lease-scope.ts'; export type RemoteConnectionState = { version: 1; diff --git a/src/upload-client-artifact.ts b/src/remote/upload-client-artifact.ts similarity index 97% rename from src/upload-client-artifact.ts rename to src/remote/upload-client-artifact.ts index 474012984..c6a13c8d0 100644 --- a/src/upload-client-artifact.ts +++ b/src/remote/upload-client-artifact.ts @@ -4,8 +4,8 @@ import os from 'node:os'; import path from 'node:path'; import { Writable } from 'node:stream'; import { pipeline } from 'node:stream/promises'; -import { AppError } from './kernel/errors.ts'; -import { runCmd } from './utils/exec.ts'; +import { AppError } from '../kernel/errors.ts'; +import { runCmd } from '../utils/exec.ts'; const ARTIFACT_HASH_ALGORITHM = 'sha256'; const DEFAULT_CONTENT_TYPE = 'application/octet-stream'; diff --git a/src/upload-client.ts b/src/remote/upload-client.ts similarity index 97% rename from src/upload-client.ts rename to src/remote/upload-client.ts index 7402b519d..929293ae0 100644 --- a/src/upload-client.ts +++ b/src/remote/upload-client.ts @@ -1,9 +1,9 @@ import { randomUUID } from 'node:crypto'; -import { AppError } from './kernel/errors.ts'; -import { buildDaemonHttpAuthHeaders } from './daemon/http-contract.ts'; +import { AppError } from '../kernel/errors.ts'; +import { buildDaemonHttpAuthHeaders } from '../daemon/http-contract.ts'; import { prepareUploadArtifact, type PreparedUploadArtifact } from './upload-client-artifact.ts'; -import { isRetryableUploadStreamError, streamFileToHttpRequest } from './upload-stream.ts'; -import type { UploadProgressSink } from './upload-progress.ts'; +import { isRetryableUploadStreamError, streamFileToHttpRequest } from '../upload-stream.ts'; +import type { UploadProgressSink } from '../upload-progress.ts'; const UPLOAD_PREFLIGHT_TIMEOUT_MS = 30 * 1000; const ARTIFACT_HASH_ALGORITHM = 'sha256'; diff --git a/src/utils/__tests__/cli-option-schema.test.ts b/src/utils/__tests__/cli-option-schema.test.ts index 58d9fa5c5..7ffd24d25 100644 --- a/src/utils/__tests__/cli-option-schema.test.ts +++ b/src/utils/__tests__/cli-option-schema.test.ts @@ -8,7 +8,10 @@ import { resolveSourceValueDefinition, } from '../cli-option-schema.ts'; import { AppError } from '../../kernel/errors.ts'; -import { REMOTE_CONFIG_FIELD_SPECS, getRemoteConfigEnvNames } from '../../remote-config-schema.ts'; +import { + REMOTE_CONFIG_FIELD_SPECS, + getRemoteConfigEnvNames, +} from '../../remote/remote-config-schema.ts'; test('option schema exposes config/env metadata for global options', () => { const spec = getOptionSpec('platform'); diff --git a/src/utils/cli-flags.ts b/src/utils/cli-flags.ts index c8b7b1c27..c6cfa2981 100644 --- a/src/utils/cli-flags.ts +++ b/src/utils/cli-flags.ts @@ -15,7 +15,7 @@ import { type SessionRuntimeHints, type SessionIsolationMode, } from '../kernel/contracts.ts'; -import type { RemoteConfigMetroOptions } from '../remote-config-schema.ts'; +import type { RemoteConfigMetroOptions } from '../remote/remote-config-schema.ts'; import { SCREENSHOT_SPECIFIC_FLAG_DEFINITIONS, type ScreenshotRequestFlags, diff --git a/src/utils/remote-config.ts b/src/utils/remote-config.ts index 66375a1bf..433d7c5cd 100644 --- a/src/utils/remote-config.ts +++ b/src/utils/remote-config.ts @@ -1,6 +1,9 @@ import type { CliFlags } from './cli-flags.ts'; -import { REMOTE_CONFIG_FIELD_SPECS, type RemoteConfigProfile } from '../remote-config-schema.ts'; -import { resolveRemoteConfigProfile } from '../remote-config-core.ts'; +import { + REMOTE_CONFIG_FIELD_SPECS, + type RemoteConfigProfile, +} from '../remote/remote-config-schema.ts'; +import { resolveRemoteConfigProfile } from '../remote/remote-config-core.ts'; // Remote config can supply defaults for any supported CLI flag that exists in the profile schema. // Command validation later strips unsupported defaults for the active command. diff --git a/test/integration/provider-scenarios/remote-daemon-client.test.ts b/test/integration/provider-scenarios/remote-daemon-client.test.ts index 7417290b1..b01bec140 100644 --- a/test/integration/provider-scenarios/remote-daemon-client.test.ts +++ b/test/integration/provider-scenarios/remote-daemon-client.test.ts @@ -5,8 +5,8 @@ import os from 'node:os'; import path from 'node:path'; import { test } from 'vitest'; import { createAgentDeviceClient } from '../../../src/client.ts'; -import { prepareRemoteRequestArtifacts } from '../../../src/daemon-artifacts.ts'; -import { createDaemonProxyServer } from '../../../src/daemon-proxy.ts'; +import { prepareRemoteRequestArtifacts } from '../../../src/remote/daemon-artifacts.ts'; +import { createDaemonProxyServer } from '../../../src/remote/daemon-proxy.ts'; import { normalizeAgentDeviceError } from '../../../src/kernel/errors.ts'; import { closeLoopbackServer, diff --git a/vitest.config.ts b/vitest.config.ts index 20ebedafb..798c375d6 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -37,7 +37,7 @@ export default defineConfig({ 'src/core/interactor-types.ts', 'src/index.ts', 'src/install-source.ts', - 'src/remote-config.ts', + 'src/remote/remote-config.ts', 'src/selectors.ts', ], },