agent-transport-system 0.7.93 → 0.7.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import "./base-url-w57WAIkS.js";
4
- import "./dist-BtP8ZhAB.js";
3
+ import "./base-url-CU-_7EqM.js";
4
+ import "./dist-B6FL1Iut.js";
5
5
  import { t as runSpaceAddMembers } from "./ats.js";
6
6
 
7
7
  //#region src/space/add-me-membership.ts
@@ -11,4 +11,4 @@ async function runSpaceAddMeMembership(input) {
11
11
 
12
12
  //#endregion
13
13
  export { runSpaceAddMeMembership };
14
- //# sourceMappingURL=add-me-membership-Bl4f1QYu.js.map
14
+ //# sourceMappingURL=add-me-membership-BkIv1Jyp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-me-membership-Bl4f1QYu.js","names":[],"sources":["../src/space/add-me-membership.ts"],"sourcesContent":["import { runSpaceAddMembers } from \"./command\";\nimport type { SpaceCommandNavigationStatus } from \"./navigation-status\";\n\nexport type SpaceAddMeMembershipInput = Parameters<\n typeof runSpaceAddMembers\n>[0];\nexport type SpaceAddMeMembershipRunner = (\n input: SpaceAddMeMembershipInput\n) => Promise<SpaceCommandNavigationStatus>;\n\nexport async function runSpaceAddMeMembership(\n input: SpaceAddMeMembershipInput\n): Promise<SpaceCommandNavigationStatus> {\n return await runSpaceAddMembers(input);\n}\n"],"mappings":";;;;;;;AAUA,eAAsB,wBACpB,OACuC;AACvC,QAAO,MAAM,mBAAmB,MAAM"}
1
+ {"version":3,"file":"add-me-membership-BkIv1Jyp.js","names":[],"sources":["../src/space/add-me-membership.ts"],"sourcesContent":["import { runSpaceAddMembers } from \"./command\";\nimport type { SpaceCommandNavigationStatus } from \"./navigation-status\";\n\nexport type SpaceAddMeMembershipInput = Parameters<\n typeof runSpaceAddMembers\n>[0];\nexport type SpaceAddMeMembershipRunner = (\n input: SpaceAddMeMembershipInput\n) => Promise<SpaceCommandNavigationStatus>;\n\nexport async function runSpaceAddMeMembership(\n input: SpaceAddMeMembershipInput\n): Promise<SpaceCommandNavigationStatus> {\n return await runSpaceAddMembers(input);\n}\n"],"mappings":";;;;;;;AAUA,eAAsB,wBACpB,OACuC;AACvC,QAAO,MAAM,mBAAmB,MAAM"}
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import "./dist-BtP8ZhAB.js";
3
+ import "./dist-B6FL1Iut.js";
4
4
  import { o as createCliApiClientFoundation } from "./ats.js";
5
5
 
6
6
  export { createCliApiClientFoundation };
package/dist/ats-dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { t as DEV_LOCAL_GATEWAY_BASE_URL } from "./base-url-w57WAIkS.js";
4
- import "./dist-BtP8ZhAB.js";
3
+ import { t as DEV_LOCAL_GATEWAY_BASE_URL } from "./base-url-CU-_7EqM.js";
4
+ import "./dist-B6FL1Iut.js";
5
5
 
6
6
  //#region src/ats-dev.ts
7
7
  const LOCAL_GATEWAY_URL = DEV_LOCAL_GATEWAY_BASE_URL;
package/dist/ats.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { C as updateConfiguredSkillsConfig, S as updateConfiguredOnboardingConfig, _ as getRuntimeConfigReadHealth, a as resolveBaseUrl, b as setConfiguredSkillsConfig, c as resolveExplicitGatewayUrlOrThrow, d as createDefaultRuntimeAgentControllerSettings, f as getConfiguredDaemonDispatchLimits, g as getConfiguredViewCustomization, h as getConfiguredSkillsConfig, i as normalizeGatewayBaseUrlOrNull, l as DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE, m as getConfiguredOnboardingDisclaimerAcceptedAt, o as resolveBaseUrlOrNull, p as getConfiguredDeviceRuntimeState, r as normalizeGatewayBaseUrl, s as resolveDefaultGatewayBaseUrl, u as alignRuntimeConfigStorage, v as resolveRuntimeSkillsCustomTargetId, w as updateConfiguredStartV1OnboardingState, x as updateConfiguredDeviceRuntimeState, y as setConfiguredBaseUrl } from "./base-url-w57WAIkS.js";
4
- import { $ as getSpaceThreadResponseSchema, $n as daemonStreamFrameSchema, $t as spaceMembersSnapshotSchema, A as dispatchBriefSchema, An as MAX_VISITED_PROFILE_IDS, Ar as runtimeTransportDispatchRuntimeEvidenceRequestSchema, At as prepareSessionResponseSchema, B as getAgentExecutionReadinessBatchResponseSchema, Bn as atsdControlPlaneRequestSchema, Br as runtimeTransportSubmitTaskResultRequestSchema, Bt as setCurrentLocalAgentEnabledResponseSchema, C as createSpaceThreadResponseSchema, Cn as DISPATCH_ACTIVITY_FAILED_PURPOSE, Ct as patchSpaceContractResponseSchema, D as daemonRouteObservationResponseSchema, Dn as MAX_PROFILE_ID_LENGTH, Dr as runtimeTransportDispatchLifecycleRequestSchema, Dt as postSpaceMembersResponseSchema, E as daemonRouteCatalogCacheSchema, En as LOCAL_COMPONENTS_SCHEMA_VERSION, Er as runtimeTransportDeliveryExecutionIdentitySchema, Et as postSpaceMembersBodySchema, F as forgetCurrentComputerResponseSchema, Fn as SPACE_MENTION_REJECT_NOTICE_PURPOSE, Fr as runtimeTransportLocalAgentControlRefreshCatalogFramePayloadSchema, Ft as refreshCurrentLocalAgentCatalogResponseSchema, G as getModelCatalogResponseSchema, Gn as buildAgentControllerConversationRef, Gt as signalEnvelopeSchema, H as getAgentProfilePrimaryBindingResponseSchema, Hn as atsdTaskResultEnvelopeWriteSchema, Ht as setSpaceAccessModeBodySchema, I as gatewayErrorCodeSchema, In as SPACE_PASSWORD_MIN_LENGTH, Ir as runtimeTransportLocalAgentControlSetEnabledFramePayloadSchema, It as removeSpaceMembersResponseSchema, J as getSpaceContractResponseSchema, Jn as canonicalizeBuiltinAgentControllerRef, Jt as spaceCreatorSchema, K as getPrepareReadinessQuerySchema, Kn as buildAgentControllerRoutingKey, Kt as spaceAccessModeStateSchema, L as gatewayErrorEnvelopeSchema, Ln as SPACE_UPDATES_MAX_LIMIT, Lr as runtimeTransportRegisterSessionRequestSchema, Lt as resolveSpaceDispatchTraceRootCause, M as ensureAgentProfilePrimaryBindingResponseSchema, Mn as RUNTIME_TRANSPORT_SCHEMA_VERSION, Mr as runtimeTransportHeartbeatResponseSchema, Mt as prepareSetupBootstrapWriteSchema, N as entryBriefSchema, Nn as SPACE_MEMBER_JOIN_NOTICE_PURPOSE, Nr as runtimeTransportLocalAgentControlCancelFramePayloadSchema, Nt as projectObservabilityWakeCorrelation, O as daemonRuntimeLeaseSchema, On as MAX_PROFILE_WORKING_DIRECTORY_LENGTH, Or as runtimeTransportDispatchPreviewEndRequestSchema, Ot as postSpaceThreadSignalBodySchema, P as forgetComputerResponseSchema, Pn as SPACE_MEMBER_REMOVE_NOTICE_PURPOSE, Pr as runtimeTransportLocalAgentControlInterruptFramePayloadSchema, Pt as projectSpaceDispatchTraceFinalVisibleOutcome, Q as getSpaceStatusResponseSchema, Qn as daemonServiceLaneSchema, Qt as spaceMemberDirectorySchema, R as getActiveSpaceWakeProgressResponseSchema, Rn as atsRuntimeProfileIdSchema, Rr as runtimeTransportRegisterSessionResponseSchema, Rt as serverErrorFrameSchema, S as createSpaceThreadBodySchema, Sn as DISPATCH_ACTIVITY_DISPATCHING_PURPOSE, St as patchSpaceContractBodySchema, T as currentLocalRuntimeReplyReadinessResponseSchema, Tn as LEGACY_RUNTIME_DISPATCH_POLICY, Tr as runtimeTransportDeliverDispatchRequestSchema, Tt as postNormalMessageResponseSchema, U as getLocalRuntimeExpectedRoutesQuerySchema, Un as atsdTaskResultOpenClawGatewayVisibilityStatusSchema, Ut as setupPlanAgentViewEventSchema, V as getAgentExecutionReadinessResponseSchema, Vn as atsdControlPlaneResponseSchema, Vr as sanitizeSignalTextPreview, Vt as setLocalRuntimeDisplayNameBodySchema, W as getLocalRuntimeExpectedRoutesResponseSchema, Wn as atsdTaskResultPayloadSchema, Wt as setupPlanAgentViewPayloadSchema, X as getSpaceDispatchResultResponseSchema, Xn as conversationExecutionStateSchema, Xt as spaceIdentityDirectorySchema, Y as getSpaceDispatchLookupResponseSchema, Yn as collectCanonicalMentionTextFragments, Yt as spaceDispatchTraceResponseSchema, Z as getSpaceMessageDetailsResponseSchema, Zn as daemonServiceContractSchema, Zt as spaceMemberDirectoryEntrySchema, _ as continuitySchema, _n as AGENT_REPLY_PREVIEW_PURPOSE, _r as providerDispatchRuntimeContextSchema, _t as notifyAgentProfileRouteCatalogChangedBodySchema, a as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_VERSION, an as submitRuntimeProviderConversationProofsBodySchema, ar as getSpaceMessageAddressingRelationSupportForTargetKind, at as listProfileSpaceHistoryResponseSchema, b as createSpaceDiagnosticReportResponseSchema, bn as CONVERSATION_CONTINUITY_WARNING_PURPOSE, br as resolveSingleSpaceMentionLabels, bt as observabilityWakeTraceSelectorSchema, c as SETUP_PLAN_AGENT_VIEW_SCHEMA_VERSION, cn as submitRuntimeRegistrationResponseSchema, cr as normalizeKnownBuiltinAgentControllerId, ct as listSpaceThreadsResponseSchema, d as agentControllerPermissionModeSchema, dn as upsertProfileSpaceHistoryResponseSchema, dr as normalizeSpacePasswordText, dt as localRuntimeEnrollmentResponseSchema, en as spaceMetaSchema, er as formatCanonicalMentionLiteral, et as getSpaceUpdatesResponseSchema, f as agentExecutionReadinessRouteParamsSchema, fn as writeCurrentDeviceObservedMetadataBodySchema, fr as parseAgentControllerRef$1, ft as localRuntimesQuerySchema, g as cliJsonOutputEnvelopeSchema, gn as AGENT_REPLY_PREVIEW_END_PURPOSE, gr as profileWorkspaceModeSchema, gt as normalizeSpaceCursorPatch, h as catchupResponseSchema, hn as AGENT_REPLYING_PURPOSE, hr as postSpaceWakeStopResponseSchema, ht as normalizeListSignalsReadQuerySemantics, i as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_NAME, in as submitRuntimeAgentControllerReportsResponseSchema, ir as formatLocalSetupActionLabel, it as leaveSpaceResponseSchema, j as ensureAgentProfilePrimaryBindingBodySchema, jn as MESSAGE_MENTION_TYPE_VALUES, jr as runtimeTransportHeartbeatRequestSchema, jt as prepareSessionStreamServerFrameSchema, k as deleteSpaceResponseSchema, kn as MAX_SIGNAL_REPLY_TO_PREVIEW_LENGTH, kr as runtimeTransportDispatchPreviewRequestSchema, kt as postSpaceThreadSignalResponseSchema, l as SPACE_DISPATCH_TRACE_PROMPT_PREVIEW_MAX_CHARS, ln as updateAgentProfilePrimaryBindingAgentControllerPermissionModeBodySchema, lr as normalizeMessageEnvelope, lt as localAgentCatalogSchema, m as atsRequestContextSchema, mn as AGENT_REPLYING_END_PURPOSE, mr as postSpaceWakeStopBodySchema, mt as modelCatalogSchema, n as resolveBuiltinAgentControllerBrand, nn as structuredGuidePayloadFromInputSchema, nr as formatLocalComponentsSummaryLabel, nt as getSpaceWakeTraceWaterfallResponseSchema, o as PREPARE_SESSION_STREAM_PROTOCOL_VERSION, on as submitRuntimeProviderConversationProofsResponseSchema, or as installedLocalComponentsSnapshotSchema, ot as listSpaceThreadEventsResponseSchema, p as agentProfileBindingRouteParamsSchema, pn as writeCurrentDeviceObservedMetadataResponseSchema, pr as parseOptionalClientMessageId, pt as localRuntimesResponseSchema, q as getPrepareReadinessResponseSchema, qn as canonicalizeAgentControllerRef, qt as spaceBootstrapResponseSchema, r as resolveMappedPublicAgentFailureReason, rn as submitRuntimeAgentControllerReportsBodySchema, rr as formatLocalSetupActionDescription, rt as incomingServerMessageSchema, s as SETUP_PLAN_AGENT_VIEW_CODE, sn as submitRuntimeRegistrationBodySchema, sr as normalizeBuiltinAgentControllerId, st as listSpaceThreadSignalsResponseSchema, t as CODEX_UPGRADE_REQUIRED_REASON, tn as spaceViewerMembershipResponseSchema, tr as formatLocalComponentsSummaryDescription, tt as getSpaceWakeProgressResponseSchema, u as accountSpaceIndexResponseSchema, un as updateAgentProfilePrimaryBindingModelSelectionBodySchema, ur as normalizeOptionalWorkingDirectory, ut as localRuntimeEnrollmentBodySchema, v as createSpaceBodySchema, vn as ATSD_CONTROL_PLANE_SCHEMA_VERSION, vr as resolveBuiltinAgentControllerConversationKind, vt as notifyAgentProfileRouteCatalogChangedResponseSchema, w as currentDeviceTargetResponseSchema, wn as DISPATCH_ACTIVITY_RETRYING_PURPOSE, wr as runtimeCoordinatorExecutionTokenEnvelopeSchema, wt as postNormalMessageBodySchema, x as createSpaceResponseSchema, xn as CURRENT_DAEMON_EXECUTION_CONTRACT_EPOCH, xr as resolveSpaceMentionLabels, xt as patchProfileSpaceHistoryStatusResponseSchema, y as createSpaceDiagnosticReportBodySchema, yn as ATSD_TASK_RESULT_SCHEMA_VERSION, yr as resolveMessageEnvelopeTargetField, yt as notifyAgentProfilesRouteCatalogChangedBodySchema, z as getAgentExecutionReadinessBatchBodySchema, zn as atsSpaceEgressActionSchema, zr as runtimeTransportRouteCatalogChangedFramePayloadSchema, zt as setCurrentLocalAgentEnabledBodySchema } from "./dist-BtP8ZhAB.js";
3
+ import { C as updateConfiguredSkillsConfig, S as updateConfiguredOnboardingConfig, _ as getRuntimeConfigReadHealth, a as resolveBaseUrl, b as setConfiguredSkillsConfig, c as resolveExplicitGatewayUrlOrThrow, d as createDefaultRuntimeAgentControllerSettings, f as getConfiguredDaemonDispatchLimits, g as getConfiguredViewCustomization, h as getConfiguredSkillsConfig, i as normalizeGatewayBaseUrlOrNull, l as DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE, m as getConfiguredOnboardingDisclaimerAcceptedAt, o as resolveBaseUrlOrNull, p as getConfiguredDeviceRuntimeState, r as normalizeGatewayBaseUrl, s as resolveDefaultGatewayBaseUrl, u as alignRuntimeConfigStorage, v as resolveRuntimeSkillsCustomTargetId, w as updateConfiguredStartV1OnboardingState, x as updateConfiguredDeviceRuntimeState, y as setConfiguredBaseUrl } from "./base-url-CU-_7EqM.js";
4
+ import { $ as getSpaceThreadResponseSchema, $n as daemonStreamFrameSchema, $t as spaceMembersSnapshotSchema, A as dispatchBriefSchema, An as MAX_VISITED_PROFILE_IDS, Ar as runtimeTransportDispatchRuntimeEvidenceRequestSchema, At as prepareSessionResponseSchema, B as getAgentExecutionReadinessBatchResponseSchema, Bn as atsdControlPlaneRequestSchema, Br as runtimeTransportSubmitTaskResultRequestSchema, Bt as setCurrentLocalAgentEnabledResponseSchema, C as createSpaceThreadResponseSchema, Cn as DISPATCH_ACTIVITY_FAILED_PURPOSE, Ct as patchSpaceContractResponseSchema, D as daemonRouteObservationResponseSchema, Dn as MAX_PROFILE_ID_LENGTH, Dr as runtimeTransportDispatchLifecycleRequestSchema, Dt as postSpaceMembersResponseSchema, E as daemonRouteCatalogCacheSchema, En as LOCAL_COMPONENTS_SCHEMA_VERSION, Er as runtimeTransportDeliveryExecutionIdentitySchema, Et as postSpaceMembersBodySchema, F as forgetCurrentComputerResponseSchema, Fn as SPACE_MENTION_REJECT_NOTICE_PURPOSE, Fr as runtimeTransportLocalAgentControlRefreshCatalogFramePayloadSchema, Ft as refreshCurrentLocalAgentCatalogResponseSchema, G as getModelCatalogResponseSchema, Gn as buildAgentControllerConversationRef, Gt as signalEnvelopeSchema, H as getAgentProfilePrimaryBindingResponseSchema, Hn as atsdTaskResultEnvelopeWriteSchema, Ht as setSpaceAccessModeBodySchema, I as gatewayErrorCodeSchema, In as SPACE_PASSWORD_MIN_LENGTH, Ir as runtimeTransportLocalAgentControlSetEnabledFramePayloadSchema, It as removeSpaceMembersResponseSchema, J as getSpaceContractResponseSchema, Jn as canonicalizeBuiltinAgentControllerRef, Jt as spaceCreatorSchema, K as getPrepareReadinessQuerySchema, Kn as buildAgentControllerRoutingKey, Kt as spaceAccessModeStateSchema, L as gatewayErrorEnvelopeSchema, Ln as SPACE_UPDATES_MAX_LIMIT, Lr as runtimeTransportRegisterSessionRequestSchema, Lt as resolveSpaceDispatchTraceRootCause, M as ensureAgentProfilePrimaryBindingResponseSchema, Mn as RUNTIME_TRANSPORT_SCHEMA_VERSION, Mr as runtimeTransportHeartbeatResponseSchema, Mt as prepareSetupBootstrapWriteSchema, N as entryBriefSchema, Nn as SPACE_MEMBER_JOIN_NOTICE_PURPOSE, Nr as runtimeTransportLocalAgentControlCancelFramePayloadSchema, Nt as projectObservabilityWakeCorrelation, O as daemonRuntimeLeaseSchema, On as MAX_PROFILE_WORKING_DIRECTORY_LENGTH, Or as runtimeTransportDispatchPreviewEndRequestSchema, Ot as postSpaceThreadSignalBodySchema, P as forgetComputerResponseSchema, Pn as SPACE_MEMBER_REMOVE_NOTICE_PURPOSE, Pr as runtimeTransportLocalAgentControlInterruptFramePayloadSchema, Pt as projectSpaceDispatchTraceFinalVisibleOutcome, Q as getSpaceStatusResponseSchema, Qn as daemonServiceLaneSchema, Qt as spaceMemberDirectorySchema, R as getActiveSpaceWakeProgressResponseSchema, Rn as atsRuntimeProfileIdSchema, Rr as runtimeTransportRegisterSessionResponseSchema, Rt as serverErrorFrameSchema, S as createSpaceThreadBodySchema, Sn as DISPATCH_ACTIVITY_DISPATCHING_PURPOSE, St as patchSpaceContractBodySchema, T as currentLocalRuntimeReplyReadinessResponseSchema, Tn as LEGACY_RUNTIME_DISPATCH_POLICY, Tr as runtimeTransportDeliverDispatchRequestSchema, Tt as postNormalMessageResponseSchema, U as getLocalRuntimeExpectedRoutesQuerySchema, Un as atsdTaskResultOpenClawGatewayVisibilityStatusSchema, Ut as setupPlanAgentViewEventSchema, V as getAgentExecutionReadinessResponseSchema, Vn as atsdControlPlaneResponseSchema, Vr as sanitizeSignalTextPreview, Vt as setLocalRuntimeDisplayNameBodySchema, W as getLocalRuntimeExpectedRoutesResponseSchema, Wn as atsdTaskResultPayloadSchema, Wt as setupPlanAgentViewPayloadSchema, X as getSpaceDispatchResultResponseSchema, Xn as conversationExecutionStateSchema, Xt as spaceIdentityDirectorySchema, Y as getSpaceDispatchLookupResponseSchema, Yn as collectCanonicalMentionTextFragments, Yt as spaceDispatchTraceResponseSchema, Z as getSpaceMessageDetailsResponseSchema, Zn as daemonServiceContractSchema, Zt as spaceMemberDirectoryEntrySchema, _ as continuitySchema, _n as AGENT_REPLY_PREVIEW_PURPOSE, _r as providerDispatchRuntimeContextSchema, _t as notifyAgentProfileRouteCatalogChangedBodySchema, a as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_VERSION, an as submitRuntimeProviderConversationProofsBodySchema, ar as getSpaceMessageAddressingRelationSupportForTargetKind, at as listProfileSpaceHistoryResponseSchema, b as createSpaceDiagnosticReportResponseSchema, bn as CONVERSATION_CONTINUITY_WARNING_PURPOSE, br as resolveSingleSpaceMentionLabels, bt as observabilityWakeTraceSelectorSchema, c as SETUP_PLAN_AGENT_VIEW_SCHEMA_VERSION, cn as submitRuntimeRegistrationResponseSchema, cr as normalizeKnownBuiltinAgentControllerId, ct as listSpaceThreadsResponseSchema, d as agentControllerPermissionModeSchema, dn as upsertProfileSpaceHistoryResponseSchema, dr as normalizeSpacePasswordText, dt as localRuntimeEnrollmentResponseSchema, en as spaceMetaSchema, er as formatCanonicalMentionLiteral, et as getSpaceUpdatesResponseSchema, f as agentExecutionReadinessRouteParamsSchema, fn as writeCurrentDeviceObservedMetadataBodySchema, fr as parseAgentControllerRef$1, ft as localRuntimesQuerySchema, g as cliJsonOutputEnvelopeSchema, gn as AGENT_REPLY_PREVIEW_END_PURPOSE, gr as profileWorkspaceModeSchema, gt as normalizeSpaceCursorPatch, h as catchupResponseSchema, hn as AGENT_REPLYING_PURPOSE, hr as postSpaceWakeStopResponseSchema, ht as normalizeListSignalsReadQuerySemantics, i as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_NAME, in as submitRuntimeAgentControllerReportsResponseSchema, ir as formatLocalSetupActionLabel, it as leaveSpaceResponseSchema, j as ensureAgentProfilePrimaryBindingBodySchema, jn as MESSAGE_MENTION_TYPE_VALUES, jr as runtimeTransportHeartbeatRequestSchema, jt as prepareSessionStreamServerFrameSchema, k as deleteSpaceResponseSchema, kn as MAX_SIGNAL_REPLY_TO_PREVIEW_LENGTH, kr as runtimeTransportDispatchPreviewRequestSchema, kt as postSpaceThreadSignalResponseSchema, l as SPACE_DISPATCH_TRACE_PROMPT_PREVIEW_MAX_CHARS, ln as updateAgentProfilePrimaryBindingAgentControllerPermissionModeBodySchema, lr as normalizeMessageEnvelope, lt as localAgentCatalogSchema, m as atsRequestContextSchema, mn as AGENT_REPLYING_END_PURPOSE, mr as postSpaceWakeStopBodySchema, mt as modelCatalogSchema, n as resolveBuiltinAgentControllerBrand, nn as structuredGuidePayloadFromInputSchema, nr as formatLocalComponentsSummaryLabel, nt as getSpaceWakeTraceWaterfallResponseSchema, o as PREPARE_SESSION_STREAM_PROTOCOL_VERSION, on as submitRuntimeProviderConversationProofsResponseSchema, or as installedLocalComponentsSnapshotSchema, ot as listSpaceThreadEventsResponseSchema, p as agentProfileBindingRouteParamsSchema, pn as writeCurrentDeviceObservedMetadataResponseSchema, pr as parseOptionalClientMessageId, pt as localRuntimesResponseSchema, q as getPrepareReadinessResponseSchema, qn as canonicalizeAgentControllerRef, qt as spaceBootstrapResponseSchema, r as resolveMappedPublicAgentFailureReason, rn as submitRuntimeAgentControllerReportsBodySchema, rr as formatLocalSetupActionDescription, rt as incomingServerMessageSchema, s as SETUP_PLAN_AGENT_VIEW_CODE, sn as submitRuntimeRegistrationBodySchema, sr as normalizeBuiltinAgentControllerId, st as listSpaceThreadSignalsResponseSchema, t as CODEX_UPGRADE_REQUIRED_REASON, tn as spaceViewerMembershipResponseSchema, tr as formatLocalComponentsSummaryDescription, tt as getSpaceWakeProgressResponseSchema, u as accountSpaceIndexResponseSchema, un as updateAgentProfilePrimaryBindingModelSelectionBodySchema, ur as normalizeOptionalWorkingDirectory, ut as localRuntimeEnrollmentBodySchema, v as createSpaceBodySchema, vn as ATSD_CONTROL_PLANE_SCHEMA_VERSION, vr as resolveBuiltinAgentControllerConversationKind, vt as notifyAgentProfileRouteCatalogChangedResponseSchema, w as currentDeviceTargetResponseSchema, wn as DISPATCH_ACTIVITY_RETRYING_PURPOSE, wr as runtimeCoordinatorExecutionTokenEnvelopeSchema, wt as postNormalMessageBodySchema, x as createSpaceResponseSchema, xn as CURRENT_DAEMON_EXECUTION_CONTRACT_EPOCH, xr as resolveSpaceMentionLabels, xt as patchProfileSpaceHistoryStatusResponseSchema, y as createSpaceDiagnosticReportBodySchema, yn as ATSD_TASK_RESULT_SCHEMA_VERSION, yr as resolveMessageEnvelopeTargetField, yt as notifyAgentProfilesRouteCatalogChangedBodySchema, z as getAgentExecutionReadinessBatchBodySchema, zn as atsSpaceEgressActionSchema, zr as runtimeTransportRouteCatalogChangedFramePayloadSchema, zt as setCurrentLocalAgentEnabledBodySchema } from "./dist-B6FL1Iut.js";
5
5
  import { A as runtimeDir, C as normalizeAtsProfileId, D as resolveAtsEnvPreset, E as resolveAtsCliEntryNameFromArgv, F as systemDir, N as skillsDir, O as resolveAtsRootDir, P as spacesDir, S as normalizeAccountKey, T as profileViewPath, a as accountProfileWorkspacePath, c as atsRootDir, d as deviceOpenClawProfileBootstrapPath, f as deviceOpenClawProfileDir, i as accountProfileViewPath, j as runtimeLogsDir, k as resolveDefaultAtsHomeDirname, n as accountProfileLocalMetaPath, o as accountsDir, p as deviceOpenClawProfileWorkspaceDir, r as accountProfileSpaceCacheDir, s as atsBackupsDir, t as ATS_HOME_ENV_KEY, w as profileDir, y as legacyAccountProfileSpacesDir } from "./paths-DP4LBid2.js";
6
6
  import { a as runWithHeldLock, c as LEGACY_ATS_CLI_CONTEXT_ENV_KEY, d as resolveCliContext, f as resolveCliContextId, i as releaseLock, l as listCliContextStates, n as isAtsLockError, o as tryCleanupStaleLock, p as writeCliContextState, r as readLockMeta, s as ATS_CLI_CONTEXT_ENV_KEY, t as acquireLock, u as readCliContextState } from "./lock-CBIWEyt0.js";
7
7
  import { _ as toSpaceWsUrl, a as toSpaceCursorUrl, c as toSpaceDispatchTraceUrl, d as toSpaceMetaUrl, f as toSpacePasswordUrl, g as toSpaceUpdatesUrl, h as toSpaceSignalsUrl, i as toSpaceCreateUrl, l as toSpaceLeaveUrl, m as toSpaceResultUrl, n as toDaemonRouteObservationUrl, o as toSpaceDeleteUrl, p as toSpaceRemoveMembersUrl, r as toSpaceContractUrl, s as toSpaceDispatchLookupUrl, t as normalizeBaseUrl, u as toSpaceMembersUrl } from "./urls-B8ZoQgpS.js";
@@ -31,7 +31,7 @@ import { Box, Container, Editor, Key, ProcessTerminal, TUI, Text, getEditorKeybi
31
31
  import { ReadStream, WriteStream } from "node:tty";
32
32
 
33
33
  //#region package.json
34
- var version = "0.7.93";
34
+ var version = "0.7.94";
35
35
  var package_default = {
36
36
  $schema: "https://www.schemastore.org/package.json",
37
37
  name: "agent-transport-system",
@@ -105,7 +105,7 @@ var package_default = {
105
105
  "unplugin-lightningcss": "^0.4.0",
106
106
  "vitest": "~3.2.0"
107
107
  },
108
- ats: { "minRequiredCliVersion": "0.7.91" }
108
+ ats: { "minRequiredCliVersion": "0.7.94" }
109
109
  };
110
110
 
111
111
  //#endregion
@@ -3985,7 +3985,7 @@ function resolveAtsAccountContext(input) {
3985
3985
  };
3986
3986
  }
3987
3987
  async function resolveCurrentAtsAccountContext() {
3988
- const { getAuthSessionMetadata } = await import("./auth-session-DYcdvJJf.js");
3988
+ const { getAuthSessionMetadata } = await import("./auth-session-cvQNDYWn.js");
3989
3989
  return resolveAtsAccountContext({ session: await getAuthSessionMetadata().catch(() => null) });
3990
3990
  }
3991
3991
  function resolveHostKey(baseUrl) {
@@ -4436,7 +4436,7 @@ async function setDaemonServiceRuntimeState(state, pathInput = {}) {
4436
4436
  await writeDaemonServiceRuntimeState(state, pathInput);
4437
4437
  }
4438
4438
  async function clearDaemonServiceRuntimeState(pathInput = {}) {
4439
- const { clearDaemonRuntimeLease } = await import("./daemon-runtime-lease-Zrt2oDfY.js");
4439
+ const { clearDaemonRuntimeLease } = await import("./daemon-runtime-lease-CrxzM3MU.js");
4440
4440
  await Promise.all([rm(daemonServiceRuntimeStatePath(pathInput), { force: true }), clearDaemonRuntimeLease(pathInput)]);
4441
4441
  }
4442
4442
  async function withDaemonServiceRunLock(callback, meta = {
@@ -30740,9 +30740,9 @@ function createModelCatalogReadSession(input) {
30740
30740
  async function readModelCatalogOnce(baseUrl) {
30741
30741
  try {
30742
30742
  const [apiClient, baseUrlModule, clientFoundationModule] = await Promise.all([
30743
- import("./dist-CncWM721.js"),
30744
- import("./base-url-w57WAIkS.js").then((n) => n.n),
30745
- import("./api-client-foundation-DB1RQaFq.js")
30743
+ import("./dist-B_Jt5y-0.js"),
30744
+ import("./base-url-CU-_7EqM.js").then((n) => n.n),
30745
+ import("./api-client-foundation-DVTrCdZD.js")
30746
30746
  ]);
30747
30747
  if (typeof apiClient.createConfigApi !== "function") throw new Error("config api client is unavailable");
30748
30748
  const resolvedBaseUrl = baseUrl ?? await baseUrlModule.resolveBaseUrl();
@@ -103197,7 +103197,7 @@ function normalizeOptionalString(value) {
103197
103197
  return normalized.length > 0 ? normalized : null;
103198
103198
  }
103199
103199
  async function runDefaultSpaceAddMeMembership(input) {
103200
- const { runSpaceAddMeMembership } = await import("./add-me-membership-Bl4f1QYu.js");
103200
+ const { runSpaceAddMeMembership } = await import("./add-me-membership-BkIv1Jyp.js");
103201
103201
  return await runSpaceAddMeMembership(input);
103202
103202
  }
103203
103203
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import "./dist-BtP8ZhAB.js";
3
+ import "./dist-B6FL1Iut.js";
4
4
  import { F as getAuthSessionMetadata, I as getAuthSessionState, L as getCurrentAuthOwnerUserId, N as clearAuthSession, P as getAuthSession, R as setAuthSession } from "./ats.js";
5
5
 
6
6
  export { getAuthSessionMetadata };
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { Cr as runtimeAgentControllerSettingsSchema, Sr as runtimeAgentControllerLaunchContractSchema } from "./dist-BtP8ZhAB.js";
3
+ import { Cr as runtimeAgentControllerSettingsSchema, Sr as runtimeAgentControllerLaunchContractSchema } from "./dist-B6FL1Iut.js";
4
4
  import { D as resolveAtsEnvPreset, _ as deviceSkillsInstallsPath, b as legacyRuntimeConfigPath, g as deviceSkillsDir, h as deviceSkillsCustomTargetsPath, l as deviceAgentRuntimePath, m as devicePreferencesPath, u as deviceDir, v as deviceSkillsStorePath } from "./paths-DP4LBid2.js";
5
5
  import { a as runWithHeldLock, n as isAtsLockError, t as acquireLock } from "./lock-CBIWEyt0.js";
6
6
  import { t as normalizeBaseUrl } from "./urls-B8ZoQgpS.js";
@@ -904,4 +904,4 @@ function toErrorMessage(error) {
904
904
 
905
905
  //#endregion
906
906
  export { updateConfiguredSkillsConfig as C, updateConfiguredOnboardingConfig as S, getRuntimeConfigReadHealth as _, resolveBaseUrl as a, setConfiguredSkillsConfig as b, resolveExplicitGatewayUrlOrThrow as c, createDefaultRuntimeAgentControllerSettings as d, getConfiguredDaemonDispatchLimits as f, getConfiguredViewCustomization as g, getConfiguredSkillsConfig as h, normalizeGatewayBaseUrlOrNull as i, DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE as l, getConfiguredOnboardingDisclaimerAcceptedAt as m, base_url_exports as n, resolveBaseUrlOrNull as o, getConfiguredDeviceRuntimeState as p, normalizeGatewayBaseUrl as r, resolveDefaultGatewayBaseUrl as s, DEV_LOCAL_GATEWAY_BASE_URL as t, alignRuntimeConfigStorage as u, resolveRuntimeSkillsCustomTargetId as v, updateConfiguredStartV1OnboardingState as w, updateConfiguredDeviceRuntimeState as x, setConfiguredBaseUrl as y };
907
- //# sourceMappingURL=base-url-w57WAIkS.js.map
907
+ //# sourceMappingURL=base-url-CU-_7EqM.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-url-w57WAIkS.js","names":[],"sources":["../src/config/runtime-config.ts","../src/config/base-url.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { mkdir, readFile, rename, rm, writeFile } from \"node:fs/promises\";\nimport { dirname, normalize, posix, win32 } from \"node:path\";\nimport {\n runtimeAgentControllerLaunchContractSchema,\n runtimeAgentControllerSettingsSchema,\n} from \"@agent-transport-system/schemas\";\nimport type { RuntimeAgentControllerLaunchContract } from \"@agent-transport-system/schemas/types\";\nimport { normalizeGatewayBaseUrl } from \"./base-url\";\nimport {\n type AtsLock,\n acquireLock,\n isAtsLockError,\n runWithHeldLock,\n} from \"./lock\";\nimport {\n deviceAgentRuntimePath,\n deviceDir,\n devicePreferencesPath,\n deviceSkillsCustomTargetsPath,\n deviceSkillsDir,\n deviceSkillsInstallsPath,\n deviceSkillsStorePath,\n legacyRuntimeConfigPath,\n resolveAtsEnvPreset,\n} from \"./paths\";\n\nexport type RuntimeViewCustomization = {\n messages?: {\n human?: Record<string, string>;\n agent?: Record<string, string>;\n };\n render?: {\n human?: {\n dataMode?: \"payload\" | \"envelope\";\n };\n agent?: {\n envelopeMode?: \"verbose\" | \"compact\";\n };\n };\n};\n\nexport type RuntimeSkillsAgentConfig = {\n skillsDir?: string;\n globalSkillsDir?: string;\n};\n\nexport type RuntimeSkillsCustomTarget = {\n id?: string;\n name: string;\n dir: string;\n};\n\nexport type RuntimeSkillsInstallRecord = {\n targetId: string;\n targetDir: string;\n mode: \"symlink\" | \"copy\";\n status: \"installed\" | \"skipped\" | \"failed\";\n skillIds: string[];\n reason?: string;\n updatedAt: string;\n};\n\nexport type RuntimeSkillsConfig = {\n storeDir?: string;\n agents?: Record<string, RuntimeSkillsAgentConfig>;\n customTargets?: RuntimeSkillsCustomTarget[];\n installs?: RuntimeSkillsInstallRecord[];\n};\n\nexport type RuntimeDaemonDispatchConfig = {\n globalConcurrency?: number;\n queueMax?: number;\n};\n\nexport type RuntimeDaemonConfig = {\n dispatch?: RuntimeDaemonDispatchConfig;\n};\n\nexport type RuntimeDaemonDispatchLimits = {\n globalConcurrency: number;\n queueMax: number;\n};\n\nexport type RuntimeAgentTransportMode = \"local-cli\" | \"codex-app-server\";\nexport type RuntimeAgentStreamingMode = \"final\" | \"stream\";\n\nexport type RuntimeAgentControllerConversationIdMappingSpec = {\n sourceField: string;\n mappingVersion: number;\n};\n\nexport type RuntimeAgentControllerSettings = {\n transportMode: RuntimeAgentTransportMode;\n streamingMode: RuntimeAgentStreamingMode;\n timeoutMs: number | null;\n retry: number;\n contextIdMappingSpec: RuntimeAgentControllerConversationIdMappingSpec;\n};\n\nexport const DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE: RuntimeAgentTransportMode =\n \"local-cli\";\nexport const DEFAULT_RUNTIME_AGENT_STREAMING_MODE: RuntimeAgentStreamingMode =\n \"final\";\n// Normal Agent execution has no fixed wall-clock timeout. Long-running tasks\n// should end by explicit result, failure, cancellation, or stale progress\n// evidence policy, not by a hard-coded elapsed-time cutoff.\nexport const DEFAULT_LOCAL_ADAPTER_TIMEOUT_MS = null as number | null;\nexport const DEFAULT_RUNTIME_AGENT_RETRY = 0;\nexport const DEFAULT_RUNTIME_AGENT_CONTEXT_MAPPING_VERSION = 1;\nexport const DEFAULT_RUNTIME_AGENT_CONTEXT_SOURCE_FIELD = \"ATS_CLI_CONTEXT_ID\";\nexport const DEFAULT_RUNTIME_DAEMON_GLOBAL_CONCURRENCY = 10;\nexport const DEFAULT_RUNTIME_DAEMON_QUEUE_MAX = 50;\n\nexport type RuntimeAgentControllerState = {\n agentId: string;\n displayName: string;\n enabled: boolean;\n launchContract?: RuntimeAgentControllerLaunchContract;\n transportMode?: RuntimeAgentTransportMode;\n streamingMode?: RuntimeAgentStreamingMode;\n timeoutMs?: number | null;\n retry?: number;\n contextIdMappingSpec?: RuntimeAgentControllerConversationIdMappingSpec;\n registeredAt: string;\n updatedAt: string;\n};\n\nexport type RuntimeDeviceRuntimeState = {\n controllers?: RuntimeAgentControllerState[];\n};\n\nexport type RuntimeStartV1OnboardingState = {\n disclaimerAcceptedVersion?: string;\n lastCompletedAt?: string;\n localAgentsSetupCompletedAt?: string;\n};\n\nexport type RuntimeOnboardingConfig = {\n disclaimerAcceptedAt?: string;\n startV1?: RuntimeStartV1OnboardingState;\n};\n\nexport type RuntimeConfigFallbackReason = \"invalid_json\" | \"invalid_version\";\n\nexport type RuntimeConfigReadHealth = {\n parseFallback: boolean;\n reason?: RuntimeConfigFallbackReason;\n};\n\ntype RuntimeConfigV1 = {\n v: 1;\n baseUrl?: string;\n viewCustomization?: RuntimeViewCustomization;\n skills?: RuntimeSkillsConfig;\n daemon?: RuntimeDaemonConfig;\n deviceRuntimeState?: RuntimeDeviceRuntimeState;\n onboarding?: RuntimeOnboardingConfig;\n updatedAt: string;\n};\n\ntype DevicePreferencesV1 = {\n v: 1;\n baseUrl?: string;\n viewCustomization?: RuntimeViewCustomization;\n daemon?: RuntimeDaemonConfig;\n onboarding?: RuntimeOnboardingConfig;\n updatedAt: string;\n};\n\ntype DeviceAgentRuntimeV1 = {\n v: 1;\n deviceRuntimeState?: RuntimeDeviceRuntimeState;\n updatedAt: string;\n};\n\ntype DeviceSkillsStoreV1 = {\n v: 1;\n storeDir?: string;\n agents?: Record<string, RuntimeSkillsAgentConfig>;\n updatedAt: string;\n};\n\ntype DeviceSkillsCustomTargetsV1 = {\n v: 1;\n customTargets: RuntimeSkillsCustomTarget[];\n updatedAt: string;\n};\n\ntype DeviceSkillsInstallsV1 = {\n v: 1;\n installs: RuntimeSkillsInstallRecord[];\n updatedAt: string;\n};\n\ntype RuntimeMessageCustomization = RuntimeViewCustomization[\"messages\"];\ntype RuntimeRenderCustomization = RuntimeViewCustomization[\"render\"];\ntype RuntimeHumanRender = NonNullable<RuntimeRenderCustomization>[\"human\"];\ntype RuntimeAgentRender = NonNullable<RuntimeRenderCustomization>[\"agent\"];\ntype RuntimeConfigOverrides = {\n baseUrl?: string | null;\n viewCustomization?: RuntimeViewCustomization | null;\n skills?: RuntimeSkillsConfig | null;\n daemon?: RuntimeDaemonConfig | null;\n deviceRuntimeState?: RuntimeDeviceRuntimeState | null;\n onboarding?: RuntimeOnboardingConfig | null;\n};\nconst CUSTOM_TARGET_ID_PREFIX = \"custom-\";\nconst CUSTOM_TARGET_ID_LENGTH = 12;\nconst RUNTIME_CONFIG_LOCK_PROFILE = \"__system__\";\nconst RUNTIME_CONFIG_LOCK_KEY = \"runtime-config\";\nconst RUNTIME_CONFIG_LOCK_MAX_ATTEMPTS = 40;\nconst RUNTIME_CONFIG_LOCK_RETRY_DELAY_MS = 25;\nconst WINDOWS_DRIVE_ONLY_RE = /^[a-zA-Z]:$/;\nconst WINDOWS_DRIVE_PREFIX_RE = /^[a-zA-Z]:[\\\\/]/;\nconst WINDOWS_UNC_RE = /^[/\\\\]{2}[^/\\\\]+[/\\\\]+[^/\\\\]+/;\nconst WINDOWS_DRIVE_ANY_RE = /^[a-zA-Z]:/;\nconst TRAILING_PATH_SEPARATORS_RE = /[\\\\/]+$/;\n\nexport function resolveRuntimeSkillsCustomTargetId(input: {\n dir: string;\n id?: string;\n}): string {\n const existingId =\n typeof input.id === \"string\" && input.id.trim().length > 0\n ? input.id.trim()\n : \"\";\n if (existingId) {\n return existingId;\n }\n const normalizedDir = normalizeCustomTargetDir(input.dir);\n const digest = createHash(\"sha256\").update(normalizedDir).digest(\"hex\");\n return `${CUSTOM_TARGET_ID_PREFIX}${digest.slice(0, CUSTOM_TARGET_ID_LENGTH)}`;\n}\n\nexport function resolveDefaultAgentContextSourceField(\n _agentId: string\n): string {\n return DEFAULT_RUNTIME_AGENT_CONTEXT_SOURCE_FIELD;\n}\n\nexport function createDefaultRuntimeAgentControllerSettings(\n agentId: string\n): RuntimeAgentControllerSettings {\n return {\n transportMode: DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE,\n streamingMode: resolveDefaultRuntimeAgentStreamingMode(),\n timeoutMs: DEFAULT_LOCAL_ADAPTER_TIMEOUT_MS,\n retry: DEFAULT_RUNTIME_AGENT_RETRY,\n contextIdMappingSpec: {\n sourceField: resolveDefaultAgentContextSourceField(agentId),\n mappingVersion: DEFAULT_RUNTIME_AGENT_CONTEXT_MAPPING_VERSION,\n },\n };\n}\n\nconst resolveDefaultRuntimeAgentStreamingMode =\n (): RuntimeAgentStreamingMode => {\n const preset = resolveAtsEnvPreset();\n if (preset === \"dev-local\" || preset === \"canary\") {\n return \"stream\";\n }\n return DEFAULT_RUNTIME_AGENT_STREAMING_MODE;\n };\n\nexport async function getConfiguredBaseUrl(): Promise<string | null> {\n const config = await readRuntimeConfig();\n if (!config?.baseUrl) {\n return null;\n }\n return normalizeGatewayBaseUrl(config.baseUrl);\n}\n\nexport async function getConfiguredViewCustomization(): Promise<RuntimeViewCustomization | null> {\n const config = await readRuntimeConfig();\n return config?.viewCustomization ?? null;\n}\n\nexport async function getConfiguredSkillsConfig(): Promise<RuntimeSkillsConfig | null> {\n const config = await readRuntimeConfig();\n return config?.skills ?? null;\n}\n\nexport async function getConfiguredDeviceRuntimeState(): Promise<RuntimeDeviceRuntimeState | null> {\n const config = await readRuntimeConfig();\n return config?.deviceRuntimeState ?? null;\n}\n\nexport async function getConfiguredDaemonDispatchLimits(): Promise<RuntimeDaemonDispatchLimits> {\n const config = await readRuntimeConfig();\n return resolveRuntimeDaemonDispatchLimits(config?.daemon?.dispatch);\n}\n\nexport async function getConfiguredOnboardingConfig(): Promise<RuntimeOnboardingConfig | null> {\n const config = await readRuntimeConfig();\n return config?.onboarding ?? null;\n}\n\nexport async function getConfiguredOnboardingDisclaimerAcceptedAt(): Promise<\n string | null\n> {\n const onboarding = await getConfiguredOnboardingConfig();\n return onboarding?.disclaimerAcceptedAt ?? null;\n}\n\nexport async function getConfiguredStartV1OnboardingState(): Promise<RuntimeStartV1OnboardingState | null> {\n const onboarding = await getConfiguredOnboardingConfig();\n return onboarding?.startV1 ?? null;\n}\n\nexport async function getRuntimeConfigReadHealth(): Promise<RuntimeConfigReadHealth> {\n const result = await readRuntimeConfigDetailed();\n return result.health;\n}\n\nexport async function alignRuntimeConfigStorage(): Promise<{\n migratedLegacyConfig: boolean;\n removedLegacyConfig: boolean;\n}> {\n return await withRuntimeConfigLock(async () => {\n const split = await readSplitRuntimeConfigDetailed();\n const legacy = await readLegacyRuntimeConfigDetailed();\n const hasLegacyConfig = await pathExists(legacyRuntimeConfigPath());\n\n if (legacy.config && (!split.hasFiles || split.health.parseFallback)) {\n await writeRuntimeConfig(legacy.config);\n return {\n migratedLegacyConfig: true,\n removedLegacyConfig: hasLegacyConfig,\n };\n }\n\n if (hasLegacyConfig && split.hasFiles) {\n await rm(legacyRuntimeConfigPath(), { force: true });\n return {\n migratedLegacyConfig: false,\n removedLegacyConfig: true,\n };\n }\n\n return {\n migratedLegacyConfig: false,\n removedLegacyConfig: false,\n };\n });\n}\n\nexport async function setConfiguredBaseUrl(baseUrl: string): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const normalized = normalizeGatewayBaseUrl(baseUrl);\n const previous = await readRuntimeConfig();\n const next = buildNextConfig(previous, { baseUrl: normalized });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function setConfiguredSkillsConfig(\n skills: RuntimeSkillsConfig\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const next = buildNextConfig(previous, { skills });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredSkillsConfig(\n updater: (current: RuntimeSkillsConfig | null) => RuntimeSkillsConfig | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousSkills = previous?.skills ?? null;\n const nextSkills = updater(previousSkills);\n\n const previousComparable = JSON.stringify(previousSkills);\n const nextComparable = JSON.stringify(nextSkills);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const next = buildNextConfig(previous, { skills: nextSkills });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function setConfiguredDeviceRuntimeState(\n deviceRuntimeState: RuntimeDeviceRuntimeState\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const next = buildNextConfig(previous, { deviceRuntimeState });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredDeviceRuntimeState(\n updater: (\n current: RuntimeDeviceRuntimeState | null\n ) => RuntimeDeviceRuntimeState | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousDeviceRuntimeState = previous?.deviceRuntimeState ?? null;\n const nextDeviceRuntimeState = updater(previousDeviceRuntimeState);\n\n const previousComparable = JSON.stringify(previousDeviceRuntimeState);\n const nextComparable = JSON.stringify(nextDeviceRuntimeState);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const next = buildNextConfig(previous, {\n deviceRuntimeState: nextDeviceRuntimeState,\n });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredStartV1OnboardingState(\n updater: (\n current: RuntimeStartV1OnboardingState | null\n ) => RuntimeStartV1OnboardingState | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousOnboarding = previous?.onboarding ?? null;\n const previousStartV1 = previousOnboarding?.startV1 ?? null;\n const nextStartV1 = updater(previousStartV1);\n\n const previousComparable = JSON.stringify(previousStartV1);\n const nextComparable = JSON.stringify(nextStartV1);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const nextOnboarding =\n nextStartV1 || previousOnboarding?.disclaimerAcceptedAt\n ? {\n ...(previousOnboarding?.disclaimerAcceptedAt\n ? {\n disclaimerAcceptedAt: previousOnboarding.disclaimerAcceptedAt,\n }\n : {}),\n ...(nextStartV1 ? { startV1: nextStartV1 } : {}),\n }\n : null;\n const next = buildNextConfig(previous, {\n onboarding: nextOnboarding,\n });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredOnboardingConfig(\n updater: (\n current: RuntimeOnboardingConfig | null\n ) => RuntimeOnboardingConfig | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousOnboarding = previous?.onboarding ?? null;\n const nextOnboarding = updater(previousOnboarding);\n\n const previousComparable = JSON.stringify(previousOnboarding);\n const nextComparable = JSON.stringify(nextOnboarding);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const next = buildNextConfig(previous, {\n onboarding: nextOnboarding,\n });\n\n await writeRuntimeConfig(next);\n });\n}\n\nfunction buildNextConfig(\n previous: RuntimeConfigV1 | null,\n overrides: RuntimeConfigOverrides\n): RuntimeConfigV1 {\n const baseUrl = resolveBaseUrlOverride(previous?.baseUrl, overrides);\n const viewCustomization = resolveConfigOverride(\n \"viewCustomization\",\n previous?.viewCustomization,\n overrides\n );\n const skills = resolveConfigOverride(\"skills\", previous?.skills, overrides);\n const daemon = resolveConfigOverride(\"daemon\", previous?.daemon, overrides);\n const deviceRuntimeState = resolveConfigOverride(\n \"deviceRuntimeState\",\n previous?.deviceRuntimeState,\n overrides\n );\n const onboarding = resolveConfigOverride(\n \"onboarding\",\n previous?.onboarding,\n overrides\n );\n\n return {\n v: 1,\n ...(baseUrl ? { baseUrl } : {}),\n ...(viewCustomization ? { viewCustomization } : {}),\n ...(skills ? { skills } : {}),\n ...(daemon ? { daemon } : {}),\n ...(deviceRuntimeState ? { deviceRuntimeState } : {}),\n ...(onboarding ? { onboarding } : {}),\n updatedAt: new Date().toISOString(),\n };\n}\n\nfunction resolveBaseUrlOverride(\n previous: string | undefined,\n overrides: RuntimeConfigOverrides\n): string | undefined {\n if (!(\"baseUrl\" in overrides)) {\n return previous;\n }\n if (typeof overrides.baseUrl !== \"string\" || overrides.baseUrl.length === 0) {\n return undefined;\n }\n return overrides.baseUrl;\n}\n\nfunction resolveConfigOverride<T>(\n key:\n | \"viewCustomization\"\n | \"skills\"\n | \"daemon\"\n | \"deviceRuntimeState\"\n | \"onboarding\",\n previous: T | undefined,\n overrides: RuntimeConfigOverrides\n): T | undefined {\n if (!(key in overrides)) {\n return previous;\n }\n const value = overrides[key] as T | null | undefined;\n return value ?? undefined;\n}\n\nasync function acquireRuntimeConfigLock(): Promise<AtsLock> {\n for (\n let attempt = 0;\n attempt < RUNTIME_CONFIG_LOCK_MAX_ATTEMPTS;\n attempt += 1\n ) {\n try {\n return await acquireLock({\n atsProfileId: RUNTIME_CONFIG_LOCK_PROFILE,\n key: RUNTIME_CONFIG_LOCK_KEY,\n });\n } catch (error) {\n if (\n !isAtsLockError(error) ||\n attempt === RUNTIME_CONFIG_LOCK_MAX_ATTEMPTS - 1\n ) {\n throw error;\n }\n await delay(RUNTIME_CONFIG_LOCK_RETRY_DELAY_MS);\n }\n }\n\n throw new Error(\"runtime config lock retries exhausted\");\n}\n\nasync function withRuntimeConfigLock<T>(run: () => Promise<T>): Promise<T> {\n const lock = await acquireRuntimeConfigLock();\n return await runWithHeldLock({\n lock,\n run,\n releaseContext: {\n component: \"runtime_config\",\n lockKey: RUNTIME_CONFIG_LOCK_KEY,\n atsProfileId: RUNTIME_CONFIG_LOCK_PROFILE,\n },\n });\n}\n\nasync function readRuntimeConfig(): Promise<RuntimeConfigV1 | null> {\n const result = await readRuntimeConfigDetailed();\n return result.config;\n}\n\nasync function readRuntimeConfigDetailed(): Promise<{\n config: RuntimeConfigV1 | null;\n health: RuntimeConfigReadHealth;\n}> {\n const split = await readSplitRuntimeConfigDetailed();\n if (split.hasFiles) {\n return {\n config: split.config,\n health: split.health,\n };\n }\n return await readLegacyRuntimeConfigDetailed();\n}\n\nfunction parseConfiguredBaseUrl(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n try {\n return normalizeGatewayBaseUrl(value);\n } catch {\n return undefined;\n }\n}\n\nfunction parseRuntimeViewCustomization(\n value: unknown\n): RuntimeViewCustomization | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n messages?: unknown;\n render?: unknown;\n };\n\n const messages = parseMessageCustomization(obj.messages);\n const render = parseRenderCustomization(obj.render);\n\n if (!(messages || render)) {\n return undefined;\n }\n\n return {\n ...(messages ? { messages } : {}),\n ...(render ? { render } : {}),\n };\n}\n\nfunction parseRuntimeSkillsConfig(\n value: unknown\n): RuntimeSkillsConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n storeDir?: unknown;\n agents?: unknown;\n customTargets?: unknown;\n installs?: unknown;\n };\n\n const storeDir =\n typeof obj.storeDir === \"string\" && obj.storeDir.trim().length > 0\n ? obj.storeDir.trim()\n : undefined;\n const agents = parseRuntimeSkillsAgents(obj.agents);\n const installs = parseRuntimeSkillsInstallRecords(obj.installs);\n const customTargets = parseRuntimeSkillsCustomTargets(\n obj.customTargets,\n buildLegacyCustomTargetIdByDir(installs)\n );\n\n if (!(storeDir || agents || customTargets || installs)) {\n return undefined;\n }\n\n return {\n ...(storeDir ? { storeDir } : {}),\n ...(agents ? { agents } : {}),\n ...(customTargets ? { customTargets } : {}),\n ...(installs ? { installs } : {}),\n };\n}\n\nfunction parseRuntimeDaemonConfig(\n value: unknown\n): RuntimeDaemonConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n dispatch?: unknown;\n };\n const dispatch = parseRuntimeDaemonDispatchConfig(obj.dispatch);\n if (!dispatch) {\n return undefined;\n }\n return { dispatch };\n}\n\nfunction parseRuntimeDaemonDispatchConfig(\n value: unknown\n): RuntimeDaemonDispatchConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n globalConcurrency?: unknown;\n queueMax?: unknown;\n };\n const globalConcurrency = parsePositiveInteger(obj.globalConcurrency);\n const queueMax = parsePositiveInteger(obj.queueMax);\n if (globalConcurrency === undefined && queueMax === undefined) {\n return undefined;\n }\n return {\n ...(globalConcurrency === undefined ? {} : { globalConcurrency }),\n ...(queueMax === undefined ? {} : { queueMax }),\n };\n}\n\nfunction parseRuntimeDeviceRuntimeState(\n value: unknown\n): RuntimeDeviceRuntimeState | undefined {\n const fromDeviceRuntimeState = parseRuntimeDeviceRuntimeStateObject(value);\n return fromDeviceRuntimeState;\n}\n\nfunction parseRuntimeDeviceRuntimeStateObject(\n value: unknown\n): RuntimeDeviceRuntimeState | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n controllers?: unknown;\n };\n const controllers = parseRuntimeAgentControllerStates(obj.controllers);\n if (!controllers) {\n return undefined;\n }\n\n return {\n controllers,\n };\n}\n\nfunction parseRuntimeOnboardingConfig(\n value: unknown\n): RuntimeOnboardingConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n disclaimerAcceptedAt?: unknown;\n startV1?: unknown;\n };\n const disclaimerAcceptedAt = toTrimmedStringOrUndefined(\n obj.disclaimerAcceptedAt\n );\n const startV1 = parseRuntimeStartV1OnboardingState(obj.startV1);\n if (!(disclaimerAcceptedAt || startV1)) {\n return undefined;\n }\n return {\n ...(disclaimerAcceptedAt ? { disclaimerAcceptedAt } : {}),\n ...(startV1 ? { startV1 } : {}),\n };\n}\n\nfunction parseRuntimeStartV1OnboardingState(\n value: unknown\n): RuntimeStartV1OnboardingState | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n disclaimerAcceptedVersion?: unknown;\n lastCompletedAt?: unknown;\n localAgentsSetupCompletedAt?: unknown;\n };\n const disclaimerAcceptedVersion = toTrimmedStringOrUndefined(\n obj.disclaimerAcceptedVersion\n );\n const lastCompletedAt = toTrimmedStringOrUndefined(obj.lastCompletedAt);\n const localAgentsSetupCompletedAt = toTrimmedStringOrUndefined(\n obj.localAgentsSetupCompletedAt\n );\n if (\n !(\n disclaimerAcceptedVersion ||\n lastCompletedAt ||\n localAgentsSetupCompletedAt\n )\n ) {\n return undefined;\n }\n return {\n ...(disclaimerAcceptedVersion ? { disclaimerAcceptedVersion } : {}),\n ...(lastCompletedAt ? { lastCompletedAt } : {}),\n ...(localAgentsSetupCompletedAt ? { localAgentsSetupCompletedAt } : {}),\n };\n}\n\nasync function writeRuntimeConfig(next: RuntimeConfigV1): Promise<void> {\n await mkdir(deviceDir(), { recursive: true });\n await mkdir(deviceSkillsDir(), { recursive: true });\n\n const updatedAt = new Date().toISOString();\n await writeJsonFileOrRemove(\n devicePreferencesPath(),\n buildDevicePreferencesState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceAgentRuntimePath(),\n buildDeviceAgentRuntimeState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceSkillsStorePath(),\n buildDeviceSkillsStoreState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceSkillsCustomTargetsPath(),\n buildDeviceSkillsCustomTargetsState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceSkillsInstallsPath(),\n buildDeviceSkillsInstallsState(next, updatedAt)\n );\n await rm(legacyRuntimeConfigPath(), { force: true }).catch(() => undefined);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nfunction parseMessageCustomization(\n value: unknown\n): RuntimeMessageCustomization | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n human?: unknown;\n agent?: unknown;\n };\n\n const human = toStringMap(obj.human);\n const agent = toStringMap(obj.agent);\n\n if (!(human || agent)) {\n return undefined;\n }\n\n return {\n ...(human ? { human } : {}),\n ...(agent ? { agent } : {}),\n };\n}\n\nfunction parseRenderCustomization(\n value: unknown\n): RuntimeRenderCustomization | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n human?: unknown;\n agent?: unknown;\n };\n\n const humanRaw = obj.human as { dataMode?: unknown } | undefined;\n const agentRaw = obj.agent as { envelopeMode?: unknown } | undefined;\n\n const human: RuntimeHumanRender | undefined =\n humanRaw?.dataMode === \"payload\" || humanRaw?.dataMode === \"envelope\"\n ? { dataMode: humanRaw.dataMode }\n : undefined;\n\n const agent: RuntimeAgentRender | undefined =\n agentRaw?.envelopeMode === \"verbose\" || agentRaw?.envelopeMode === \"compact\"\n ? { envelopeMode: agentRaw.envelopeMode }\n : undefined;\n\n if (!(human || agent)) {\n return undefined;\n }\n\n return {\n ...(human ? { human } : {}),\n ...(agent ? { agent } : {}),\n };\n}\n\nfunction parseRuntimeSkillsAgents(\n value: unknown\n): Record<string, RuntimeSkillsAgentConfig> | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const entries = Object.entries(value).flatMap(([agentName, agentValue]) => {\n if (!agentValue || typeof agentValue !== \"object\") {\n return [];\n }\n const agentObj = agentValue as {\n skillsDir?: unknown;\n globalSkillsDir?: unknown;\n };\n const skillsDir =\n typeof agentObj.skillsDir === \"string\" &&\n agentObj.skillsDir.trim().length > 0\n ? agentObj.skillsDir.trim()\n : undefined;\n const globalSkillsDir =\n typeof agentObj.globalSkillsDir === \"string\" &&\n agentObj.globalSkillsDir.trim().length > 0\n ? agentObj.globalSkillsDir.trim()\n : undefined;\n if (!(skillsDir || globalSkillsDir)) {\n return [];\n }\n return [\n [\n agentName,\n {\n ...(skillsDir ? { skillsDir } : {}),\n ...(globalSkillsDir ? { globalSkillsDir } : {}),\n },\n ] as [string, RuntimeSkillsAgentConfig],\n ];\n });\n\n if (entries.length === 0) {\n return undefined;\n }\n\n return Object.fromEntries(entries);\n}\n\nfunction parseRuntimeSkillsCustomTargets(\n value: unknown,\n legacyCustomTargetIdByDir?: Map<string, string>\n): RuntimeSkillsCustomTarget[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const targets = value.flatMap((item) => {\n if (!item || typeof item !== \"object\") {\n return [];\n }\n const obj = item as { id?: unknown; name?: unknown; dir?: unknown };\n const name =\n typeof obj.name === \"string\" && obj.name.trim().length > 0\n ? obj.name.trim()\n : \"\";\n const dir =\n typeof obj.dir === \"string\" && obj.dir.trim().length > 0\n ? normalizeCustomTargetDir(obj.dir)\n : \"\";\n if (!(name && dir)) {\n return [];\n }\n const explicitId = toTrimmedStringOrUndefined(obj.id);\n const fallbackLegacyId = legacyCustomTargetIdByDir?.get(dir);\n const id = resolveRuntimeSkillsCustomTargetId({\n dir,\n ...(explicitId ? { id: explicitId } : {}),\n ...(!explicitId && fallbackLegacyId ? { id: fallbackLegacyId } : {}),\n });\n return [{ id, name, dir }];\n });\n\n if (targets.length === 0) {\n return undefined;\n }\n\n return targets;\n}\n\nfunction parseRuntimeSkillsInstallRecords(\n value: unknown\n): RuntimeSkillsInstallRecord[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const records = value\n .map((item) => parseRuntimeSkillsInstallRecord(item))\n .filter((record): record is RuntimeSkillsInstallRecord => record !== null);\n\n if (records.length === 0) {\n return undefined;\n }\n\n return records;\n}\n\nfunction buildLegacyCustomTargetIdByDir(\n installs: RuntimeSkillsInstallRecord[] | undefined\n): Map<string, string> {\n const byDir = new Map<string, string>();\n for (const install of installs ?? []) {\n if (!install.targetId.startsWith(CUSTOM_TARGET_ID_PREFIX)) {\n continue;\n }\n const normalizedTargetDir = normalizeCustomTargetDir(install.targetDir);\n if (!normalizedTargetDir) {\n continue;\n }\n byDir.set(normalizedTargetDir, install.targetId);\n }\n return byDir;\n}\n\nfunction parseRuntimeSkillsInstallRecord(\n value: unknown\n): RuntimeSkillsInstallRecord | null {\n if (!value || typeof value !== \"object\") {\n return null;\n }\n\n const obj = value as {\n targetId?: unknown;\n targetDir?: unknown;\n mode?: unknown;\n status?: unknown;\n skillIds?: unknown;\n reason?: unknown;\n updatedAt?: unknown;\n };\n const targetId = toTrimmedStringOrEmpty(obj.targetId);\n const rawTargetDir = toTrimmedStringOrEmpty(obj.targetDir);\n const targetDir = rawTargetDir;\n const mode = parseSkillsInstallMode(obj.mode);\n const status = parseSkillsInstallStatus(obj.status);\n const skillIds = Array.isArray(obj.skillIds)\n ? obj.skillIds\n .map((skill) => (typeof skill === \"string\" ? skill.trim() : \"\"))\n .filter((skill): skill is string => skill.length > 0)\n : [];\n const updatedAt = toTrimmedStringOrEmpty(obj.updatedAt);\n const reason = toTrimmedStringOrUndefined(obj.reason);\n\n if (!(targetId && targetDir && mode && status && updatedAt)) {\n return null;\n }\n\n return {\n targetId,\n targetDir,\n mode,\n status,\n skillIds,\n ...(reason ? { reason } : {}),\n updatedAt,\n };\n}\n\nfunction parseRuntimeAgentControllerStates(\n value: unknown\n): RuntimeAgentControllerState[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const parsed = value\n .map((entry) => parseRuntimeAgentControllerState(entry))\n .filter((entry): entry is RuntimeAgentControllerState => entry !== null);\n\n if (parsed.length === 0) {\n return undefined;\n }\n\n const deduped = new Map<string, RuntimeAgentControllerState>();\n for (const entry of parsed) {\n deduped.set(entry.agentId, entry);\n }\n\n return [...deduped.values()].sort((a, b) =>\n a.agentId.localeCompare(b.agentId)\n );\n}\n\nfunction parseRuntimeAgentControllerState(\n value: unknown\n): RuntimeAgentControllerState | null {\n if (!value || typeof value !== \"object\") {\n return null;\n }\n\n const obj = value as {\n agentId?: unknown;\n displayName?: unknown;\n enabled?: unknown;\n launchContract?: unknown;\n transportMode?: unknown;\n streamingMode?: unknown;\n timeoutMs?: unknown;\n retry?: unknown;\n contextIdMappingSpec?: unknown;\n registeredAt?: unknown;\n updatedAt?: unknown;\n };\n const agentId = toTrimmedStringOrEmpty(obj.agentId);\n const displayName = toTrimmedStringOrEmpty(obj.displayName);\n const enabled = typeof obj.enabled === \"boolean\" ? obj.enabled : null;\n const launchContract = parseRuntimeAgentControllerLaunchContract(\n obj.launchContract\n );\n const defaults = createDefaultRuntimeAgentControllerSettings(agentId);\n const controllerSettings = parseRuntimeAgentControllerSettings(\n {\n transportMode: obj.transportMode,\n streamingMode: obj.streamingMode,\n timeoutMs: obj.timeoutMs,\n retry: obj.retry,\n contextIdMappingSpec: obj.contextIdMappingSpec,\n },\n defaults\n );\n const registeredAt = toTrimmedStringOrEmpty(obj.registeredAt);\n const updatedAt = toTrimmedStringOrEmpty(obj.updatedAt);\n\n if (\n !(\n agentId &&\n displayName &&\n enabled !== null &&\n controllerSettings &&\n registeredAt &&\n updatedAt\n )\n ) {\n return null;\n }\n\n return {\n agentId,\n displayName,\n enabled,\n ...(launchContract ? { launchContract } : {}),\n transportMode: controllerSettings.transportMode,\n streamingMode: controllerSettings.streamingMode,\n timeoutMs: controllerSettings.timeoutMs,\n retry: controllerSettings.retry,\n contextIdMappingSpec: controllerSettings.contextIdMappingSpec,\n registeredAt,\n updatedAt,\n };\n}\n\nfunction parseRuntimeAgentControllerLaunchContract(\n value: unknown\n): RuntimeAgentControllerLaunchContract | undefined {\n if (!(value && typeof value === \"object\")) {\n return undefined;\n }\n const parsed = runtimeAgentControllerLaunchContractSchema.safeParse(value);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction parseRuntimeAgentControllerSettings(\n raw: {\n transportMode: unknown;\n streamingMode: unknown;\n timeoutMs: unknown;\n retry: unknown;\n contextIdMappingSpec: unknown;\n },\n defaults: RuntimeAgentControllerSettings\n): RuntimeAgentControllerSettings | null {\n const normalizedStreamingMode = normalizeRuntimeStreamingMode(\n raw.streamingMode\n );\n const parsed = runtimeAgentControllerSettingsSchema.safeParse({\n transport_mode: raw.transportMode ?? defaults.transportMode,\n streaming_mode: normalizedStreamingMode ?? defaults.streamingMode,\n timeout_ms:\n raw.timeoutMs === undefined ? defaults.timeoutMs : raw.timeoutMs,\n retry: raw.retry ?? defaults.retry,\n context_id_mapping_spec:\n raw.contextIdMappingSpec ?? defaults.contextIdMappingSpec,\n });\n if (!parsed.success) {\n return null;\n }\n\n return {\n transportMode: parsed.data.transport_mode,\n streamingMode: parsed.data.streaming_mode,\n timeoutMs: normalizeRuntimeAgentTimeoutMs({\n defaults,\n timeoutMs: parsed.data.timeout_ms,\n }),\n retry: parsed.data.retry,\n contextIdMappingSpec:\n normalizeRuntimeAgentControllerConversationIdMappingSpec({\n contextIdMappingSpec: parsed.data.context_id_mapping_spec,\n defaults,\n }),\n };\n}\n\nfunction normalizeRuntimeAgentTimeoutMs(input: {\n defaults: RuntimeAgentControllerSettings;\n timeoutMs: number | null;\n}): number | null {\n // 120s was an old persisted default. Normal Agent execution must not inherit\n // it as a fixed wall-clock cutoff.\n if (input.timeoutMs === 120_000) {\n return input.defaults.timeoutMs;\n }\n return input.timeoutMs;\n}\n\nfunction normalizeRuntimeAgentControllerConversationIdMappingSpec(input: {\n contextIdMappingSpec: RuntimeAgentControllerConversationIdMappingSpec;\n defaults: RuntimeAgentControllerSettings;\n}): RuntimeAgentControllerConversationIdMappingSpec {\n if (\n input.contextIdMappingSpec.sourceField !==\n DEFAULT_RUNTIME_AGENT_CONTEXT_SOURCE_FIELD\n ) {\n return input.defaults.contextIdMappingSpec;\n }\n return input.contextIdMappingSpec;\n}\n\nfunction resolveRuntimeDaemonDispatchLimits(\n config?: RuntimeDaemonDispatchConfig\n): RuntimeDaemonDispatchLimits {\n return {\n globalConcurrency:\n parsePositiveInteger(config?.globalConcurrency) ??\n DEFAULT_RUNTIME_DAEMON_GLOBAL_CONCURRENCY,\n queueMax:\n parsePositiveInteger(config?.queueMax) ??\n DEFAULT_RUNTIME_DAEMON_QUEUE_MAX,\n };\n}\n\nfunction normalizeRuntimeStreamingMode(\n value: unknown\n): RuntimeAgentStreamingMode | null {\n if (value === \"final\" || value === \"stream\") {\n return value;\n }\n return null;\n}\n\nfunction parseSkillsInstallMode(\n value: unknown\n): RuntimeSkillsInstallRecord[\"mode\"] | null {\n if (value === \"symlink\" || value === \"copy\") {\n return value;\n }\n return null;\n}\n\nfunction parseSkillsInstallStatus(\n value: unknown\n): RuntimeSkillsInstallRecord[\"status\"] | null {\n if (value === \"installed\" || value === \"skipped\" || value === \"failed\") {\n return value;\n }\n return null;\n}\n\nfunction parsePositiveInteger(value: unknown): number | undefined {\n if (!Number.isInteger(value)) {\n return undefined;\n }\n const numericValue = Number(value);\n if (numericValue <= 0) {\n return undefined;\n }\n return numericValue;\n}\n\nfunction toTrimmedStringOrEmpty(value: unknown): string {\n if (typeof value !== \"string\") {\n return \"\";\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : \"\";\n}\n\nfunction toTrimmedStringOrUndefined(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction normalizeCustomTargetDir(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) {\n return \"\";\n }\n if (WINDOWS_DRIVE_ONLY_RE.test(trimmed)) {\n return `${trimmed[0]?.toUpperCase() ?? \"\"}:`;\n }\n const windowsLike =\n WINDOWS_DRIVE_PREFIX_RE.test(trimmed) || WINDOWS_UNC_RE.test(trimmed);\n const normalizedPath = windowsLike\n ? (() => {\n const normalizedWindowsPath = win32.normalize(trimmed);\n if (WINDOWS_DRIVE_ANY_RE.test(normalizedWindowsPath)) {\n return `${normalizedWindowsPath[0]?.toUpperCase() ?? \"\"}${normalizedWindowsPath.slice(1)}`;\n }\n return normalizedWindowsPath;\n })()\n : normalize(trimmed);\n const isPosixRoot = normalizedPath === posix.parse(normalizedPath).root;\n const isWindowsRoot = normalizedPath === win32.parse(normalizedPath).root;\n if (isPosixRoot || isWindowsRoot) {\n return normalizedPath;\n }\n return normalizedPath.replace(TRAILING_PATH_SEPARATORS_RE, \"\");\n}\n\nfunction toStringMap(value: unknown): Record<string, string> | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const entries = Object.entries(value).filter(\n (entry): entry is [string, string] => typeof entry[1] === \"string\"\n );\n if (entries.length === 0) {\n return undefined;\n }\n\n return Object.fromEntries(entries);\n}\n\nfunction isFileNotFoundError(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: string }).code === \"ENOENT\"\n );\n}\n\nasync function readSplitRuntimeConfigDetailed(): Promise<{\n config: RuntimeConfigV1 | null;\n hasFiles: boolean;\n health: RuntimeConfigReadHealth;\n}> {\n const [\n preferencesFile,\n agentRuntimeFile,\n skillsStoreFile,\n customTargetsFile,\n installsFile,\n ] = await Promise.all([\n readOptionalJsonFile(devicePreferencesPath()),\n readOptionalJsonFile(deviceAgentRuntimePath()),\n readOptionalJsonFile(deviceSkillsStorePath()),\n readOptionalJsonFile(deviceSkillsCustomTargetsPath()),\n readOptionalJsonFile(deviceSkillsInstallsPath()),\n ]);\n\n const files = [\n preferencesFile,\n agentRuntimeFile,\n skillsStoreFile,\n customTargetsFile,\n installsFile,\n ];\n const hasFiles = files.some((file) => file.found);\n if (!hasFiles) {\n return {\n config: null,\n hasFiles: false,\n health: {\n parseFallback: false,\n },\n };\n }\n\n const invalidFile = files.find((file) => file.error);\n const preferences = parseDevicePreferencesConfig(preferencesFile.value);\n const agentRuntime = parseDeviceAgentRuntimeConfig(agentRuntimeFile.value);\n const skillsStore = parseDeviceSkillsStoreConfig(skillsStoreFile.value);\n const customTargets = parseDeviceSkillsCustomTargetsConfig(\n customTargetsFile.value\n );\n const installs = parseDeviceSkillsInstallsConfig(installsFile.value);\n\n const skills = mergeRuntimeSkillsConfig({\n store: skillsStore,\n customTargets,\n installs,\n });\n const config = buildRuntimeConfigFromParts({\n baseUrl: preferences.baseUrl,\n viewCustomization: preferences.viewCustomization,\n daemon: preferences.daemon,\n onboarding: preferences.onboarding,\n deviceRuntimeState: agentRuntime,\n skills,\n });\n\n return {\n config,\n hasFiles: true,\n health: invalidFile\n ? {\n parseFallback: true,\n reason: invalidFile.error ?? \"invalid_json\",\n }\n : {\n parseFallback: false,\n },\n };\n}\n\nasync function readLegacyRuntimeConfigDetailed(): Promise<{\n config: RuntimeConfigV1 | null;\n health: RuntimeConfigReadHealth;\n}> {\n let raw: string;\n try {\n raw = await readFile(legacyRuntimeConfigPath(), \"utf8\");\n } catch (error) {\n if (isFileNotFoundError(error)) {\n return {\n config: null,\n health: {\n parseFallback: false,\n },\n };\n }\n throw error;\n }\n\n if (raw.trim().length === 0) {\n return {\n config: null,\n health: {\n parseFallback: false,\n },\n };\n }\n\n let parsed: Partial<RuntimeConfigV1> & {\n agents?: unknown;\n daemon?: unknown;\n onboarding?: unknown;\n };\n try {\n parsed = JSON.parse(raw) as Partial<RuntimeConfigV1> & {\n agents?: unknown;\n daemon?: unknown;\n onboarding?: unknown;\n };\n } catch {\n return {\n config: null,\n health: {\n parseFallback: true,\n reason: \"invalid_json\",\n },\n };\n }\n\n if (parsed.v !== 1) {\n return {\n config: null,\n health: {\n parseFallback: true,\n reason: \"invalid_version\",\n },\n };\n }\n\n if (parsed.agents !== undefined) {\n throw new Error(\n \"runtime.config.legacy_agents_unsupported: key 'agents.registrations' is no longer supported. Use 'deviceRuntimeState.controllers' or run 'ats reset --yes'.\"\n );\n }\n\n return {\n config: buildRuntimeConfigFromParts({\n baseUrl: parseConfiguredBaseUrl(parsed.baseUrl),\n viewCustomization: parseRuntimeViewCustomization(\n parsed.viewCustomization\n ),\n skills: parseRuntimeSkillsConfig(parsed.skills),\n daemon: parseRuntimeDaemonConfig(parsed.daemon),\n deviceRuntimeState: parseRuntimeDeviceRuntimeState(\n parsed.deviceRuntimeState\n ),\n onboarding: parseRuntimeOnboardingConfig(parsed.onboarding),\n updatedAt:\n typeof parsed.updatedAt === \"string\"\n ? parsed.updatedAt\n : new Date().toISOString(),\n }),\n health: {\n parseFallback: false,\n },\n };\n}\n\nfunction buildRuntimeConfigFromParts(input: {\n baseUrl?: string;\n viewCustomization?: RuntimeViewCustomization;\n skills?: RuntimeSkillsConfig;\n daemon?: RuntimeDaemonConfig;\n deviceRuntimeState?: RuntimeDeviceRuntimeState;\n onboarding?: RuntimeOnboardingConfig;\n updatedAt?: string;\n}): RuntimeConfigV1 | null {\n const updatedAt = input.updatedAt ?? new Date().toISOString();\n if (\n !(\n input.baseUrl ||\n input.viewCustomization ||\n input.skills ||\n input.daemon ||\n input.deviceRuntimeState ||\n input.onboarding\n )\n ) {\n return null;\n }\n\n return {\n v: 1,\n ...(input.baseUrl ? { baseUrl: input.baseUrl } : {}),\n ...(input.viewCustomization\n ? { viewCustomization: input.viewCustomization }\n : {}),\n ...(input.skills ? { skills: input.skills } : {}),\n ...(input.daemon ? { daemon: input.daemon } : {}),\n ...(input.deviceRuntimeState\n ? { deviceRuntimeState: input.deviceRuntimeState }\n : {}),\n ...(input.onboarding ? { onboarding: input.onboarding } : {}),\n updatedAt,\n };\n}\n\nfunction parseDevicePreferencesConfig(\n value: unknown\n): Pick<\n RuntimeConfigV1,\n \"baseUrl\" | \"viewCustomization\" | \"daemon\" | \"onboarding\"\n> {\n if (!value || typeof value !== \"object\") {\n return {};\n }\n const parsed = value as Partial<DevicePreferencesV1>;\n if (parsed.v !== 1) {\n return {};\n }\n return {\n ...(parseConfiguredBaseUrl(parsed.baseUrl)\n ? { baseUrl: parseConfiguredBaseUrl(parsed.baseUrl) }\n : {}),\n ...(parseRuntimeViewCustomization(parsed.viewCustomization)\n ? {\n viewCustomization: parseRuntimeViewCustomization(\n parsed.viewCustomization\n ),\n }\n : {}),\n ...(parseRuntimeDaemonConfig(parsed.daemon)\n ? { daemon: parseRuntimeDaemonConfig(parsed.daemon) }\n : {}),\n ...(parseRuntimeOnboardingConfig(parsed.onboarding)\n ? { onboarding: parseRuntimeOnboardingConfig(parsed.onboarding) }\n : {}),\n };\n}\n\nfunction parseDeviceAgentRuntimeConfig(\n value: unknown\n): RuntimeDeviceRuntimeState | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceAgentRuntimeV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n return parseRuntimeDeviceRuntimeState(parsed.deviceRuntimeState);\n}\n\nfunction parseDeviceSkillsStoreConfig(\n value: unknown\n): Pick<RuntimeSkillsConfig, \"storeDir\" | \"agents\"> | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceSkillsStoreV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n const storeDir =\n typeof parsed.storeDir === \"string\" && parsed.storeDir.trim().length > 0\n ? parsed.storeDir.trim()\n : undefined;\n const agents = parseRuntimeSkillsAgents(parsed.agents);\n if (!(storeDir || agents)) {\n return undefined;\n }\n return {\n ...(storeDir ? { storeDir } : {}),\n ...(agents ? { agents } : {}),\n };\n}\n\nfunction parseDeviceSkillsCustomTargetsConfig(\n value: unknown\n): RuntimeSkillsCustomTarget[] | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceSkillsCustomTargetsV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n return parseRuntimeSkillsCustomTargets(parsed.customTargets, undefined);\n}\n\nfunction parseDeviceSkillsInstallsConfig(\n value: unknown\n): RuntimeSkillsInstallRecord[] | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceSkillsInstallsV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n return parseRuntimeSkillsInstallRecords(parsed.installs);\n}\n\nfunction mergeRuntimeSkillsConfig(input: {\n store?: Pick<RuntimeSkillsConfig, \"storeDir\" | \"agents\">;\n customTargets?: RuntimeSkillsCustomTarget[];\n installs?: RuntimeSkillsInstallRecord[];\n}): RuntimeSkillsConfig | undefined {\n if (!(input.store || input.customTargets || input.installs)) {\n return undefined;\n }\n return {\n ...(input.store?.storeDir ? { storeDir: input.store.storeDir } : {}),\n ...(input.store?.agents ? { agents: input.store.agents } : {}),\n ...(input.customTargets ? { customTargets: input.customTargets } : {}),\n ...(input.installs ? { installs: input.installs } : {}),\n };\n}\n\nfunction buildDevicePreferencesState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DevicePreferencesV1 | null {\n if (\n !(next.baseUrl || next.viewCustomization || next.daemon || next.onboarding)\n ) {\n return null;\n }\n return {\n v: 1,\n ...(next.baseUrl ? { baseUrl: next.baseUrl } : {}),\n ...(next.viewCustomization\n ? { viewCustomization: next.viewCustomization }\n : {}),\n ...(next.daemon ? { daemon: next.daemon } : {}),\n ...(next.onboarding ? { onboarding: next.onboarding } : {}),\n updatedAt,\n };\n}\n\nfunction buildDeviceAgentRuntimeState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceAgentRuntimeV1 | null {\n if (!next.deviceRuntimeState) {\n return null;\n }\n return {\n v: 1,\n deviceRuntimeState: next.deviceRuntimeState,\n updatedAt,\n };\n}\n\nfunction buildDeviceSkillsStoreState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceSkillsStoreV1 | null {\n if (!(next.skills?.storeDir || next.skills?.agents)) {\n return null;\n }\n return {\n v: 1,\n ...(next.skills?.storeDir ? { storeDir: next.skills.storeDir } : {}),\n ...(next.skills?.agents ? { agents: next.skills.agents } : {}),\n updatedAt,\n };\n}\n\nfunction buildDeviceSkillsCustomTargetsState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceSkillsCustomTargetsV1 | null {\n if (!(next.skills?.customTargets && next.skills.customTargets.length > 0)) {\n return null;\n }\n return {\n v: 1,\n customTargets: next.skills.customTargets,\n updatedAt,\n };\n}\n\nfunction buildDeviceSkillsInstallsState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceSkillsInstallsV1 | null {\n if (!(next.skills?.installs && next.skills.installs.length > 0)) {\n return null;\n }\n return {\n v: 1,\n installs: next.skills.installs,\n updatedAt,\n };\n}\n\nasync function writeJsonFileOrRemove(\n path: string,\n payload: object | null\n): Promise<void> {\n if (!payload) {\n await rm(path, { force: true }).catch(() => undefined);\n return;\n }\n\n await mkdir(dirname(path), { recursive: true });\n const tempPath = `${path}.tmp-${process.pid}-${Date.now()}`;\n await writeFile(tempPath, `${JSON.stringify(payload, null, 2)}\\n`, \"utf8\");\n try {\n await rename(tempPath, path);\n } catch (error) {\n await rm(tempPath, { force: true }).catch(() => undefined);\n throw error;\n }\n}\n\nasync function readOptionalJsonFile(path: string): Promise<{\n found: boolean;\n value: unknown;\n error?: RuntimeConfigFallbackReason;\n}> {\n const raw = await readFile(path, \"utf8\").catch((error) => {\n if (isFileNotFoundError(error)) {\n return null;\n }\n throw error;\n });\n if (raw === null) {\n return {\n found: false,\n value: null,\n };\n }\n if (raw.trim().length === 0) {\n return {\n found: true,\n value: null,\n };\n }\n try {\n return {\n found: true,\n value: JSON.parse(raw),\n };\n } catch {\n return {\n found: true,\n value: null,\n error: \"invalid_json\",\n };\n }\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n return await readFile(path, \"utf8\")\n .then(() => true)\n .catch((error) => {\n if (isFileNotFoundError(error)) {\n return false;\n }\n throw error;\n });\n}\n","import { normalizeBaseUrl } from \"../protocol/urls\";\nimport { resolveAtsEnvPreset } from \"./paths\";\nimport { getConfiguredBaseUrl } from \"./runtime-config\";\n\nexport const DEFAULT_GATEWAY_BASE_URL = \"https://gateway.ats.sh\";\nexport const DEV_LOCAL_GATEWAY_BASE_URL = \"http://localhost:8080\";\nconst AUTH_HOST_LABEL = \"auth\";\nconst AUTH_HOST_PREFIX = \"auth-\";\nconst LOCAL_AUTH_PORT = \"8788\";\n\nexport async function resolveBaseUrl(\n cliValue?: string,\n input: { env?: NodeJS.ProcessEnv } = {}\n): Promise<string> {\n const env = input.env ?? process.env;\n const fromCli = String(cliValue ?? \"\").trim();\n if (fromCli) {\n return normalizeGatewayBaseUrl(fromCli);\n }\n\n // False-positive guard: ATS_BASE_URL fallback is intentionally removed.\n // We only support ATS_GATEWAY_URL to avoid ambiguous env precedence.\n const fromEnv = String(env.ATS_GATEWAY_URL ?? \"\").trim();\n if (fromEnv) {\n return normalizeGatewayBaseUrl(fromEnv);\n }\n\n const fromConfig = await getConfiguredBaseUrl();\n if (fromConfig) {\n return normalizeGatewayBaseUrl(fromConfig);\n }\n\n return normalizeGatewayBaseUrl(resolveDefaultGatewayBaseUrl({ env }));\n}\n\nexport async function resolveBaseUrlOrNull(\n cliValue?: string\n): Promise<string | null> {\n try {\n return await resolveBaseUrl(cliValue);\n } catch {\n return null;\n }\n}\n\nexport async function resolveExplicitGatewayUrlOrThrow(\n cliValue?: string\n): Promise<string | undefined> {\n const explicitGatewayUrl = normalizeOptionalString(cliValue);\n if (!explicitGatewayUrl) {\n return undefined;\n }\n\n try {\n return await Promise.resolve().then(() =>\n normalizeGatewayBaseUrl(explicitGatewayUrl)\n );\n } catch (error) {\n throw new Error(\n `Invalid explicit gateway URL \"${explicitGatewayUrl}\": ${toErrorMessage(error)}`\n );\n }\n}\n\nexport function normalizeGatewayBaseUrl(gatewayUrl: string): string {\n const normalizedGatewayUrl = normalizeBaseUrl(gatewayUrl);\n const parsedGatewayUrl = new URL(normalizedGatewayUrl);\n if (isAuthWorkerUrl(parsedGatewayUrl)) {\n throw new Error(\n \"gateway URL must point to the ATS gateway, not the ATS auth worker\"\n );\n }\n return normalizedGatewayUrl;\n}\n\nexport function normalizeGatewayBaseUrlOrNull(\n gatewayUrl?: string | null\n): string | null {\n const normalizedGatewayUrl = normalizeOptionalString(gatewayUrl);\n if (!normalizedGatewayUrl) {\n return null;\n }\n try {\n return normalizeGatewayBaseUrl(normalizedGatewayUrl);\n } catch {\n return null;\n }\n}\n\nfunction normalizeOptionalString(value: unknown): string | null {\n const normalized = String(value ?? \"\").trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function resolveDefaultGatewayBaseUrl(\n input: { env?: NodeJS.ProcessEnv } = {}\n): string {\n const preset = resolveAtsEnvPreset(input);\n if (preset === \"dev-local\" || preset === \"canary\") {\n return DEV_LOCAL_GATEWAY_BASE_URL;\n }\n return DEFAULT_GATEWAY_BASE_URL;\n}\n\nfunction isAuthWorkerUrl(url: URL): boolean {\n if (isLoopbackHostname(url.hostname)) {\n return resolveUrlPort(url) === LOCAL_AUTH_PORT;\n }\n\n const [firstLabel = \"\"] = url.hostname.toLowerCase().split(\".\");\n return (\n firstLabel === AUTH_HOST_LABEL || firstLabel.startsWith(AUTH_HOST_PREFIX)\n );\n}\n\nfunction isLoopbackHostname(hostname: string): boolean {\n const normalizedHostname = hostname.toLowerCase();\n return (\n normalizedHostname === \"localhost\" ||\n normalizedHostname === \"127.0.0.1\" ||\n normalizedHostname === \"::1\"\n );\n}\n\nfunction resolveUrlPort(url: URL): string {\n if (url.port) {\n return url.port;\n }\n if (url.protocol === \"http:\" || url.protocol === \"ws:\") {\n return \"80\";\n }\n if (url.protocol === \"https:\" || url.protocol === \"wss:\") {\n return \"443\";\n }\n return \"\";\n}\n\nfunction toErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base-url-CU-_7EqM.js","names":[],"sources":["../src/config/runtime-config.ts","../src/config/base-url.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { mkdir, readFile, rename, rm, writeFile } from \"node:fs/promises\";\nimport { dirname, normalize, posix, win32 } from \"node:path\";\nimport {\n runtimeAgentControllerLaunchContractSchema,\n runtimeAgentControllerSettingsSchema,\n} from \"@agent-transport-system/schemas\";\nimport type { RuntimeAgentControllerLaunchContract } from \"@agent-transport-system/schemas/types\";\nimport { normalizeGatewayBaseUrl } from \"./base-url\";\nimport {\n type AtsLock,\n acquireLock,\n isAtsLockError,\n runWithHeldLock,\n} from \"./lock\";\nimport {\n deviceAgentRuntimePath,\n deviceDir,\n devicePreferencesPath,\n deviceSkillsCustomTargetsPath,\n deviceSkillsDir,\n deviceSkillsInstallsPath,\n deviceSkillsStorePath,\n legacyRuntimeConfigPath,\n resolveAtsEnvPreset,\n} from \"./paths\";\n\nexport type RuntimeViewCustomization = {\n messages?: {\n human?: Record<string, string>;\n agent?: Record<string, string>;\n };\n render?: {\n human?: {\n dataMode?: \"payload\" | \"envelope\";\n };\n agent?: {\n envelopeMode?: \"verbose\" | \"compact\";\n };\n };\n};\n\nexport type RuntimeSkillsAgentConfig = {\n skillsDir?: string;\n globalSkillsDir?: string;\n};\n\nexport type RuntimeSkillsCustomTarget = {\n id?: string;\n name: string;\n dir: string;\n};\n\nexport type RuntimeSkillsInstallRecord = {\n targetId: string;\n targetDir: string;\n mode: \"symlink\" | \"copy\";\n status: \"installed\" | \"skipped\" | \"failed\";\n skillIds: string[];\n reason?: string;\n updatedAt: string;\n};\n\nexport type RuntimeSkillsConfig = {\n storeDir?: string;\n agents?: Record<string, RuntimeSkillsAgentConfig>;\n customTargets?: RuntimeSkillsCustomTarget[];\n installs?: RuntimeSkillsInstallRecord[];\n};\n\nexport type RuntimeDaemonDispatchConfig = {\n globalConcurrency?: number;\n queueMax?: number;\n};\n\nexport type RuntimeDaemonConfig = {\n dispatch?: RuntimeDaemonDispatchConfig;\n};\n\nexport type RuntimeDaemonDispatchLimits = {\n globalConcurrency: number;\n queueMax: number;\n};\n\nexport type RuntimeAgentTransportMode = \"local-cli\" | \"codex-app-server\";\nexport type RuntimeAgentStreamingMode = \"final\" | \"stream\";\n\nexport type RuntimeAgentControllerConversationIdMappingSpec = {\n sourceField: string;\n mappingVersion: number;\n};\n\nexport type RuntimeAgentControllerSettings = {\n transportMode: RuntimeAgentTransportMode;\n streamingMode: RuntimeAgentStreamingMode;\n timeoutMs: number | null;\n retry: number;\n contextIdMappingSpec: RuntimeAgentControllerConversationIdMappingSpec;\n};\n\nexport const DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE: RuntimeAgentTransportMode =\n \"local-cli\";\nexport const DEFAULT_RUNTIME_AGENT_STREAMING_MODE: RuntimeAgentStreamingMode =\n \"final\";\n// Normal Agent execution has no fixed wall-clock timeout. Long-running tasks\n// should end by explicit result, failure, cancellation, or stale progress\n// evidence policy, not by a hard-coded elapsed-time cutoff.\nexport const DEFAULT_LOCAL_ADAPTER_TIMEOUT_MS = null as number | null;\nexport const DEFAULT_RUNTIME_AGENT_RETRY = 0;\nexport const DEFAULT_RUNTIME_AGENT_CONTEXT_MAPPING_VERSION = 1;\nexport const DEFAULT_RUNTIME_AGENT_CONTEXT_SOURCE_FIELD = \"ATS_CLI_CONTEXT_ID\";\nexport const DEFAULT_RUNTIME_DAEMON_GLOBAL_CONCURRENCY = 10;\nexport const DEFAULT_RUNTIME_DAEMON_QUEUE_MAX = 50;\n\nexport type RuntimeAgentControllerState = {\n agentId: string;\n displayName: string;\n enabled: boolean;\n launchContract?: RuntimeAgentControllerLaunchContract;\n transportMode?: RuntimeAgentTransportMode;\n streamingMode?: RuntimeAgentStreamingMode;\n timeoutMs?: number | null;\n retry?: number;\n contextIdMappingSpec?: RuntimeAgentControllerConversationIdMappingSpec;\n registeredAt: string;\n updatedAt: string;\n};\n\nexport type RuntimeDeviceRuntimeState = {\n controllers?: RuntimeAgentControllerState[];\n};\n\nexport type RuntimeStartV1OnboardingState = {\n disclaimerAcceptedVersion?: string;\n lastCompletedAt?: string;\n localAgentsSetupCompletedAt?: string;\n};\n\nexport type RuntimeOnboardingConfig = {\n disclaimerAcceptedAt?: string;\n startV1?: RuntimeStartV1OnboardingState;\n};\n\nexport type RuntimeConfigFallbackReason = \"invalid_json\" | \"invalid_version\";\n\nexport type RuntimeConfigReadHealth = {\n parseFallback: boolean;\n reason?: RuntimeConfigFallbackReason;\n};\n\ntype RuntimeConfigV1 = {\n v: 1;\n baseUrl?: string;\n viewCustomization?: RuntimeViewCustomization;\n skills?: RuntimeSkillsConfig;\n daemon?: RuntimeDaemonConfig;\n deviceRuntimeState?: RuntimeDeviceRuntimeState;\n onboarding?: RuntimeOnboardingConfig;\n updatedAt: string;\n};\n\ntype DevicePreferencesV1 = {\n v: 1;\n baseUrl?: string;\n viewCustomization?: RuntimeViewCustomization;\n daemon?: RuntimeDaemonConfig;\n onboarding?: RuntimeOnboardingConfig;\n updatedAt: string;\n};\n\ntype DeviceAgentRuntimeV1 = {\n v: 1;\n deviceRuntimeState?: RuntimeDeviceRuntimeState;\n updatedAt: string;\n};\n\ntype DeviceSkillsStoreV1 = {\n v: 1;\n storeDir?: string;\n agents?: Record<string, RuntimeSkillsAgentConfig>;\n updatedAt: string;\n};\n\ntype DeviceSkillsCustomTargetsV1 = {\n v: 1;\n customTargets: RuntimeSkillsCustomTarget[];\n updatedAt: string;\n};\n\ntype DeviceSkillsInstallsV1 = {\n v: 1;\n installs: RuntimeSkillsInstallRecord[];\n updatedAt: string;\n};\n\ntype RuntimeMessageCustomization = RuntimeViewCustomization[\"messages\"];\ntype RuntimeRenderCustomization = RuntimeViewCustomization[\"render\"];\ntype RuntimeHumanRender = NonNullable<RuntimeRenderCustomization>[\"human\"];\ntype RuntimeAgentRender = NonNullable<RuntimeRenderCustomization>[\"agent\"];\ntype RuntimeConfigOverrides = {\n baseUrl?: string | null;\n viewCustomization?: RuntimeViewCustomization | null;\n skills?: RuntimeSkillsConfig | null;\n daemon?: RuntimeDaemonConfig | null;\n deviceRuntimeState?: RuntimeDeviceRuntimeState | null;\n onboarding?: RuntimeOnboardingConfig | null;\n};\nconst CUSTOM_TARGET_ID_PREFIX = \"custom-\";\nconst CUSTOM_TARGET_ID_LENGTH = 12;\nconst RUNTIME_CONFIG_LOCK_PROFILE = \"__system__\";\nconst RUNTIME_CONFIG_LOCK_KEY = \"runtime-config\";\nconst RUNTIME_CONFIG_LOCK_MAX_ATTEMPTS = 40;\nconst RUNTIME_CONFIG_LOCK_RETRY_DELAY_MS = 25;\nconst WINDOWS_DRIVE_ONLY_RE = /^[a-zA-Z]:$/;\nconst WINDOWS_DRIVE_PREFIX_RE = /^[a-zA-Z]:[\\\\/]/;\nconst WINDOWS_UNC_RE = /^[/\\\\]{2}[^/\\\\]+[/\\\\]+[^/\\\\]+/;\nconst WINDOWS_DRIVE_ANY_RE = /^[a-zA-Z]:/;\nconst TRAILING_PATH_SEPARATORS_RE = /[\\\\/]+$/;\n\nexport function resolveRuntimeSkillsCustomTargetId(input: {\n dir: string;\n id?: string;\n}): string {\n const existingId =\n typeof input.id === \"string\" && input.id.trim().length > 0\n ? input.id.trim()\n : \"\";\n if (existingId) {\n return existingId;\n }\n const normalizedDir = normalizeCustomTargetDir(input.dir);\n const digest = createHash(\"sha256\").update(normalizedDir).digest(\"hex\");\n return `${CUSTOM_TARGET_ID_PREFIX}${digest.slice(0, CUSTOM_TARGET_ID_LENGTH)}`;\n}\n\nexport function resolveDefaultAgentContextSourceField(\n _agentId: string\n): string {\n return DEFAULT_RUNTIME_AGENT_CONTEXT_SOURCE_FIELD;\n}\n\nexport function createDefaultRuntimeAgentControllerSettings(\n agentId: string\n): RuntimeAgentControllerSettings {\n return {\n transportMode: DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE,\n streamingMode: resolveDefaultRuntimeAgentStreamingMode(),\n timeoutMs: DEFAULT_LOCAL_ADAPTER_TIMEOUT_MS,\n retry: DEFAULT_RUNTIME_AGENT_RETRY,\n contextIdMappingSpec: {\n sourceField: resolveDefaultAgentContextSourceField(agentId),\n mappingVersion: DEFAULT_RUNTIME_AGENT_CONTEXT_MAPPING_VERSION,\n },\n };\n}\n\nconst resolveDefaultRuntimeAgentStreamingMode =\n (): RuntimeAgentStreamingMode => {\n const preset = resolveAtsEnvPreset();\n if (preset === \"dev-local\" || preset === \"canary\") {\n return \"stream\";\n }\n return DEFAULT_RUNTIME_AGENT_STREAMING_MODE;\n };\n\nexport async function getConfiguredBaseUrl(): Promise<string | null> {\n const config = await readRuntimeConfig();\n if (!config?.baseUrl) {\n return null;\n }\n return normalizeGatewayBaseUrl(config.baseUrl);\n}\n\nexport async function getConfiguredViewCustomization(): Promise<RuntimeViewCustomization | null> {\n const config = await readRuntimeConfig();\n return config?.viewCustomization ?? null;\n}\n\nexport async function getConfiguredSkillsConfig(): Promise<RuntimeSkillsConfig | null> {\n const config = await readRuntimeConfig();\n return config?.skills ?? null;\n}\n\nexport async function getConfiguredDeviceRuntimeState(): Promise<RuntimeDeviceRuntimeState | null> {\n const config = await readRuntimeConfig();\n return config?.deviceRuntimeState ?? null;\n}\n\nexport async function getConfiguredDaemonDispatchLimits(): Promise<RuntimeDaemonDispatchLimits> {\n const config = await readRuntimeConfig();\n return resolveRuntimeDaemonDispatchLimits(config?.daemon?.dispatch);\n}\n\nexport async function getConfiguredOnboardingConfig(): Promise<RuntimeOnboardingConfig | null> {\n const config = await readRuntimeConfig();\n return config?.onboarding ?? null;\n}\n\nexport async function getConfiguredOnboardingDisclaimerAcceptedAt(): Promise<\n string | null\n> {\n const onboarding = await getConfiguredOnboardingConfig();\n return onboarding?.disclaimerAcceptedAt ?? null;\n}\n\nexport async function getConfiguredStartV1OnboardingState(): Promise<RuntimeStartV1OnboardingState | null> {\n const onboarding = await getConfiguredOnboardingConfig();\n return onboarding?.startV1 ?? null;\n}\n\nexport async function getRuntimeConfigReadHealth(): Promise<RuntimeConfigReadHealth> {\n const result = await readRuntimeConfigDetailed();\n return result.health;\n}\n\nexport async function alignRuntimeConfigStorage(): Promise<{\n migratedLegacyConfig: boolean;\n removedLegacyConfig: boolean;\n}> {\n return await withRuntimeConfigLock(async () => {\n const split = await readSplitRuntimeConfigDetailed();\n const legacy = await readLegacyRuntimeConfigDetailed();\n const hasLegacyConfig = await pathExists(legacyRuntimeConfigPath());\n\n if (legacy.config && (!split.hasFiles || split.health.parseFallback)) {\n await writeRuntimeConfig(legacy.config);\n return {\n migratedLegacyConfig: true,\n removedLegacyConfig: hasLegacyConfig,\n };\n }\n\n if (hasLegacyConfig && split.hasFiles) {\n await rm(legacyRuntimeConfigPath(), { force: true });\n return {\n migratedLegacyConfig: false,\n removedLegacyConfig: true,\n };\n }\n\n return {\n migratedLegacyConfig: false,\n removedLegacyConfig: false,\n };\n });\n}\n\nexport async function setConfiguredBaseUrl(baseUrl: string): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const normalized = normalizeGatewayBaseUrl(baseUrl);\n const previous = await readRuntimeConfig();\n const next = buildNextConfig(previous, { baseUrl: normalized });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function setConfiguredSkillsConfig(\n skills: RuntimeSkillsConfig\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const next = buildNextConfig(previous, { skills });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredSkillsConfig(\n updater: (current: RuntimeSkillsConfig | null) => RuntimeSkillsConfig | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousSkills = previous?.skills ?? null;\n const nextSkills = updater(previousSkills);\n\n const previousComparable = JSON.stringify(previousSkills);\n const nextComparable = JSON.stringify(nextSkills);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const next = buildNextConfig(previous, { skills: nextSkills });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function setConfiguredDeviceRuntimeState(\n deviceRuntimeState: RuntimeDeviceRuntimeState\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const next = buildNextConfig(previous, { deviceRuntimeState });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredDeviceRuntimeState(\n updater: (\n current: RuntimeDeviceRuntimeState | null\n ) => RuntimeDeviceRuntimeState | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousDeviceRuntimeState = previous?.deviceRuntimeState ?? null;\n const nextDeviceRuntimeState = updater(previousDeviceRuntimeState);\n\n const previousComparable = JSON.stringify(previousDeviceRuntimeState);\n const nextComparable = JSON.stringify(nextDeviceRuntimeState);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const next = buildNextConfig(previous, {\n deviceRuntimeState: nextDeviceRuntimeState,\n });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredStartV1OnboardingState(\n updater: (\n current: RuntimeStartV1OnboardingState | null\n ) => RuntimeStartV1OnboardingState | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousOnboarding = previous?.onboarding ?? null;\n const previousStartV1 = previousOnboarding?.startV1 ?? null;\n const nextStartV1 = updater(previousStartV1);\n\n const previousComparable = JSON.stringify(previousStartV1);\n const nextComparable = JSON.stringify(nextStartV1);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const nextOnboarding =\n nextStartV1 || previousOnboarding?.disclaimerAcceptedAt\n ? {\n ...(previousOnboarding?.disclaimerAcceptedAt\n ? {\n disclaimerAcceptedAt: previousOnboarding.disclaimerAcceptedAt,\n }\n : {}),\n ...(nextStartV1 ? { startV1: nextStartV1 } : {}),\n }\n : null;\n const next = buildNextConfig(previous, {\n onboarding: nextOnboarding,\n });\n\n await writeRuntimeConfig(next);\n });\n}\n\nexport async function updateConfiguredOnboardingConfig(\n updater: (\n current: RuntimeOnboardingConfig | null\n ) => RuntimeOnboardingConfig | null\n): Promise<void> {\n await withRuntimeConfigLock(async () => {\n const previous = await readRuntimeConfig();\n const previousOnboarding = previous?.onboarding ?? null;\n const nextOnboarding = updater(previousOnboarding);\n\n const previousComparable = JSON.stringify(previousOnboarding);\n const nextComparable = JSON.stringify(nextOnboarding);\n if (previousComparable === nextComparable) {\n return;\n }\n\n const next = buildNextConfig(previous, {\n onboarding: nextOnboarding,\n });\n\n await writeRuntimeConfig(next);\n });\n}\n\nfunction buildNextConfig(\n previous: RuntimeConfigV1 | null,\n overrides: RuntimeConfigOverrides\n): RuntimeConfigV1 {\n const baseUrl = resolveBaseUrlOverride(previous?.baseUrl, overrides);\n const viewCustomization = resolveConfigOverride(\n \"viewCustomization\",\n previous?.viewCustomization,\n overrides\n );\n const skills = resolveConfigOverride(\"skills\", previous?.skills, overrides);\n const daemon = resolveConfigOverride(\"daemon\", previous?.daemon, overrides);\n const deviceRuntimeState = resolveConfigOverride(\n \"deviceRuntimeState\",\n previous?.deviceRuntimeState,\n overrides\n );\n const onboarding = resolveConfigOverride(\n \"onboarding\",\n previous?.onboarding,\n overrides\n );\n\n return {\n v: 1,\n ...(baseUrl ? { baseUrl } : {}),\n ...(viewCustomization ? { viewCustomization } : {}),\n ...(skills ? { skills } : {}),\n ...(daemon ? { daemon } : {}),\n ...(deviceRuntimeState ? { deviceRuntimeState } : {}),\n ...(onboarding ? { onboarding } : {}),\n updatedAt: new Date().toISOString(),\n };\n}\n\nfunction resolveBaseUrlOverride(\n previous: string | undefined,\n overrides: RuntimeConfigOverrides\n): string | undefined {\n if (!(\"baseUrl\" in overrides)) {\n return previous;\n }\n if (typeof overrides.baseUrl !== \"string\" || overrides.baseUrl.length === 0) {\n return undefined;\n }\n return overrides.baseUrl;\n}\n\nfunction resolveConfigOverride<T>(\n key:\n | \"viewCustomization\"\n | \"skills\"\n | \"daemon\"\n | \"deviceRuntimeState\"\n | \"onboarding\",\n previous: T | undefined,\n overrides: RuntimeConfigOverrides\n): T | undefined {\n if (!(key in overrides)) {\n return previous;\n }\n const value = overrides[key] as T | null | undefined;\n return value ?? undefined;\n}\n\nasync function acquireRuntimeConfigLock(): Promise<AtsLock> {\n for (\n let attempt = 0;\n attempt < RUNTIME_CONFIG_LOCK_MAX_ATTEMPTS;\n attempt += 1\n ) {\n try {\n return await acquireLock({\n atsProfileId: RUNTIME_CONFIG_LOCK_PROFILE,\n key: RUNTIME_CONFIG_LOCK_KEY,\n });\n } catch (error) {\n if (\n !isAtsLockError(error) ||\n attempt === RUNTIME_CONFIG_LOCK_MAX_ATTEMPTS - 1\n ) {\n throw error;\n }\n await delay(RUNTIME_CONFIG_LOCK_RETRY_DELAY_MS);\n }\n }\n\n throw new Error(\"runtime config lock retries exhausted\");\n}\n\nasync function withRuntimeConfigLock<T>(run: () => Promise<T>): Promise<T> {\n const lock = await acquireRuntimeConfigLock();\n return await runWithHeldLock({\n lock,\n run,\n releaseContext: {\n component: \"runtime_config\",\n lockKey: RUNTIME_CONFIG_LOCK_KEY,\n atsProfileId: RUNTIME_CONFIG_LOCK_PROFILE,\n },\n });\n}\n\nasync function readRuntimeConfig(): Promise<RuntimeConfigV1 | null> {\n const result = await readRuntimeConfigDetailed();\n return result.config;\n}\n\nasync function readRuntimeConfigDetailed(): Promise<{\n config: RuntimeConfigV1 | null;\n health: RuntimeConfigReadHealth;\n}> {\n const split = await readSplitRuntimeConfigDetailed();\n if (split.hasFiles) {\n return {\n config: split.config,\n health: split.health,\n };\n }\n return await readLegacyRuntimeConfigDetailed();\n}\n\nfunction parseConfiguredBaseUrl(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n try {\n return normalizeGatewayBaseUrl(value);\n } catch {\n return undefined;\n }\n}\n\nfunction parseRuntimeViewCustomization(\n value: unknown\n): RuntimeViewCustomization | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n messages?: unknown;\n render?: unknown;\n };\n\n const messages = parseMessageCustomization(obj.messages);\n const render = parseRenderCustomization(obj.render);\n\n if (!(messages || render)) {\n return undefined;\n }\n\n return {\n ...(messages ? { messages } : {}),\n ...(render ? { render } : {}),\n };\n}\n\nfunction parseRuntimeSkillsConfig(\n value: unknown\n): RuntimeSkillsConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n storeDir?: unknown;\n agents?: unknown;\n customTargets?: unknown;\n installs?: unknown;\n };\n\n const storeDir =\n typeof obj.storeDir === \"string\" && obj.storeDir.trim().length > 0\n ? obj.storeDir.trim()\n : undefined;\n const agents = parseRuntimeSkillsAgents(obj.agents);\n const installs = parseRuntimeSkillsInstallRecords(obj.installs);\n const customTargets = parseRuntimeSkillsCustomTargets(\n obj.customTargets,\n buildLegacyCustomTargetIdByDir(installs)\n );\n\n if (!(storeDir || agents || customTargets || installs)) {\n return undefined;\n }\n\n return {\n ...(storeDir ? { storeDir } : {}),\n ...(agents ? { agents } : {}),\n ...(customTargets ? { customTargets } : {}),\n ...(installs ? { installs } : {}),\n };\n}\n\nfunction parseRuntimeDaemonConfig(\n value: unknown\n): RuntimeDaemonConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n dispatch?: unknown;\n };\n const dispatch = parseRuntimeDaemonDispatchConfig(obj.dispatch);\n if (!dispatch) {\n return undefined;\n }\n return { dispatch };\n}\n\nfunction parseRuntimeDaemonDispatchConfig(\n value: unknown\n): RuntimeDaemonDispatchConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n globalConcurrency?: unknown;\n queueMax?: unknown;\n };\n const globalConcurrency = parsePositiveInteger(obj.globalConcurrency);\n const queueMax = parsePositiveInteger(obj.queueMax);\n if (globalConcurrency === undefined && queueMax === undefined) {\n return undefined;\n }\n return {\n ...(globalConcurrency === undefined ? {} : { globalConcurrency }),\n ...(queueMax === undefined ? {} : { queueMax }),\n };\n}\n\nfunction parseRuntimeDeviceRuntimeState(\n value: unknown\n): RuntimeDeviceRuntimeState | undefined {\n const fromDeviceRuntimeState = parseRuntimeDeviceRuntimeStateObject(value);\n return fromDeviceRuntimeState;\n}\n\nfunction parseRuntimeDeviceRuntimeStateObject(\n value: unknown\n): RuntimeDeviceRuntimeState | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n controllers?: unknown;\n };\n const controllers = parseRuntimeAgentControllerStates(obj.controllers);\n if (!controllers) {\n return undefined;\n }\n\n return {\n controllers,\n };\n}\n\nfunction parseRuntimeOnboardingConfig(\n value: unknown\n): RuntimeOnboardingConfig | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n disclaimerAcceptedAt?: unknown;\n startV1?: unknown;\n };\n const disclaimerAcceptedAt = toTrimmedStringOrUndefined(\n obj.disclaimerAcceptedAt\n );\n const startV1 = parseRuntimeStartV1OnboardingState(obj.startV1);\n if (!(disclaimerAcceptedAt || startV1)) {\n return undefined;\n }\n return {\n ...(disclaimerAcceptedAt ? { disclaimerAcceptedAt } : {}),\n ...(startV1 ? { startV1 } : {}),\n };\n}\n\nfunction parseRuntimeStartV1OnboardingState(\n value: unknown\n): RuntimeStartV1OnboardingState | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const obj = value as {\n disclaimerAcceptedVersion?: unknown;\n lastCompletedAt?: unknown;\n localAgentsSetupCompletedAt?: unknown;\n };\n const disclaimerAcceptedVersion = toTrimmedStringOrUndefined(\n obj.disclaimerAcceptedVersion\n );\n const lastCompletedAt = toTrimmedStringOrUndefined(obj.lastCompletedAt);\n const localAgentsSetupCompletedAt = toTrimmedStringOrUndefined(\n obj.localAgentsSetupCompletedAt\n );\n if (\n !(\n disclaimerAcceptedVersion ||\n lastCompletedAt ||\n localAgentsSetupCompletedAt\n )\n ) {\n return undefined;\n }\n return {\n ...(disclaimerAcceptedVersion ? { disclaimerAcceptedVersion } : {}),\n ...(lastCompletedAt ? { lastCompletedAt } : {}),\n ...(localAgentsSetupCompletedAt ? { localAgentsSetupCompletedAt } : {}),\n };\n}\n\nasync function writeRuntimeConfig(next: RuntimeConfigV1): Promise<void> {\n await mkdir(deviceDir(), { recursive: true });\n await mkdir(deviceSkillsDir(), { recursive: true });\n\n const updatedAt = new Date().toISOString();\n await writeJsonFileOrRemove(\n devicePreferencesPath(),\n buildDevicePreferencesState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceAgentRuntimePath(),\n buildDeviceAgentRuntimeState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceSkillsStorePath(),\n buildDeviceSkillsStoreState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceSkillsCustomTargetsPath(),\n buildDeviceSkillsCustomTargetsState(next, updatedAt)\n );\n await writeJsonFileOrRemove(\n deviceSkillsInstallsPath(),\n buildDeviceSkillsInstallsState(next, updatedAt)\n );\n await rm(legacyRuntimeConfigPath(), { force: true }).catch(() => undefined);\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\nfunction parseMessageCustomization(\n value: unknown\n): RuntimeMessageCustomization | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n human?: unknown;\n agent?: unknown;\n };\n\n const human = toStringMap(obj.human);\n const agent = toStringMap(obj.agent);\n\n if (!(human || agent)) {\n return undefined;\n }\n\n return {\n ...(human ? { human } : {}),\n ...(agent ? { agent } : {}),\n };\n}\n\nfunction parseRenderCustomization(\n value: unknown\n): RuntimeRenderCustomization | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const obj = value as {\n human?: unknown;\n agent?: unknown;\n };\n\n const humanRaw = obj.human as { dataMode?: unknown } | undefined;\n const agentRaw = obj.agent as { envelopeMode?: unknown } | undefined;\n\n const human: RuntimeHumanRender | undefined =\n humanRaw?.dataMode === \"payload\" || humanRaw?.dataMode === \"envelope\"\n ? { dataMode: humanRaw.dataMode }\n : undefined;\n\n const agent: RuntimeAgentRender | undefined =\n agentRaw?.envelopeMode === \"verbose\" || agentRaw?.envelopeMode === \"compact\"\n ? { envelopeMode: agentRaw.envelopeMode }\n : undefined;\n\n if (!(human || agent)) {\n return undefined;\n }\n\n return {\n ...(human ? { human } : {}),\n ...(agent ? { agent } : {}),\n };\n}\n\nfunction parseRuntimeSkillsAgents(\n value: unknown\n): Record<string, RuntimeSkillsAgentConfig> | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const entries = Object.entries(value).flatMap(([agentName, agentValue]) => {\n if (!agentValue || typeof agentValue !== \"object\") {\n return [];\n }\n const agentObj = agentValue as {\n skillsDir?: unknown;\n globalSkillsDir?: unknown;\n };\n const skillsDir =\n typeof agentObj.skillsDir === \"string\" &&\n agentObj.skillsDir.trim().length > 0\n ? agentObj.skillsDir.trim()\n : undefined;\n const globalSkillsDir =\n typeof agentObj.globalSkillsDir === \"string\" &&\n agentObj.globalSkillsDir.trim().length > 0\n ? agentObj.globalSkillsDir.trim()\n : undefined;\n if (!(skillsDir || globalSkillsDir)) {\n return [];\n }\n return [\n [\n agentName,\n {\n ...(skillsDir ? { skillsDir } : {}),\n ...(globalSkillsDir ? { globalSkillsDir } : {}),\n },\n ] as [string, RuntimeSkillsAgentConfig],\n ];\n });\n\n if (entries.length === 0) {\n return undefined;\n }\n\n return Object.fromEntries(entries);\n}\n\nfunction parseRuntimeSkillsCustomTargets(\n value: unknown,\n legacyCustomTargetIdByDir?: Map<string, string>\n): RuntimeSkillsCustomTarget[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const targets = value.flatMap((item) => {\n if (!item || typeof item !== \"object\") {\n return [];\n }\n const obj = item as { id?: unknown; name?: unknown; dir?: unknown };\n const name =\n typeof obj.name === \"string\" && obj.name.trim().length > 0\n ? obj.name.trim()\n : \"\";\n const dir =\n typeof obj.dir === \"string\" && obj.dir.trim().length > 0\n ? normalizeCustomTargetDir(obj.dir)\n : \"\";\n if (!(name && dir)) {\n return [];\n }\n const explicitId = toTrimmedStringOrUndefined(obj.id);\n const fallbackLegacyId = legacyCustomTargetIdByDir?.get(dir);\n const id = resolveRuntimeSkillsCustomTargetId({\n dir,\n ...(explicitId ? { id: explicitId } : {}),\n ...(!explicitId && fallbackLegacyId ? { id: fallbackLegacyId } : {}),\n });\n return [{ id, name, dir }];\n });\n\n if (targets.length === 0) {\n return undefined;\n }\n\n return targets;\n}\n\nfunction parseRuntimeSkillsInstallRecords(\n value: unknown\n): RuntimeSkillsInstallRecord[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const records = value\n .map((item) => parseRuntimeSkillsInstallRecord(item))\n .filter((record): record is RuntimeSkillsInstallRecord => record !== null);\n\n if (records.length === 0) {\n return undefined;\n }\n\n return records;\n}\n\nfunction buildLegacyCustomTargetIdByDir(\n installs: RuntimeSkillsInstallRecord[] | undefined\n): Map<string, string> {\n const byDir = new Map<string, string>();\n for (const install of installs ?? []) {\n if (!install.targetId.startsWith(CUSTOM_TARGET_ID_PREFIX)) {\n continue;\n }\n const normalizedTargetDir = normalizeCustomTargetDir(install.targetDir);\n if (!normalizedTargetDir) {\n continue;\n }\n byDir.set(normalizedTargetDir, install.targetId);\n }\n return byDir;\n}\n\nfunction parseRuntimeSkillsInstallRecord(\n value: unknown\n): RuntimeSkillsInstallRecord | null {\n if (!value || typeof value !== \"object\") {\n return null;\n }\n\n const obj = value as {\n targetId?: unknown;\n targetDir?: unknown;\n mode?: unknown;\n status?: unknown;\n skillIds?: unknown;\n reason?: unknown;\n updatedAt?: unknown;\n };\n const targetId = toTrimmedStringOrEmpty(obj.targetId);\n const rawTargetDir = toTrimmedStringOrEmpty(obj.targetDir);\n const targetDir = rawTargetDir;\n const mode = parseSkillsInstallMode(obj.mode);\n const status = parseSkillsInstallStatus(obj.status);\n const skillIds = Array.isArray(obj.skillIds)\n ? obj.skillIds\n .map((skill) => (typeof skill === \"string\" ? skill.trim() : \"\"))\n .filter((skill): skill is string => skill.length > 0)\n : [];\n const updatedAt = toTrimmedStringOrEmpty(obj.updatedAt);\n const reason = toTrimmedStringOrUndefined(obj.reason);\n\n if (!(targetId && targetDir && mode && status && updatedAt)) {\n return null;\n }\n\n return {\n targetId,\n targetDir,\n mode,\n status,\n skillIds,\n ...(reason ? { reason } : {}),\n updatedAt,\n };\n}\n\nfunction parseRuntimeAgentControllerStates(\n value: unknown\n): RuntimeAgentControllerState[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n\n const parsed = value\n .map((entry) => parseRuntimeAgentControllerState(entry))\n .filter((entry): entry is RuntimeAgentControllerState => entry !== null);\n\n if (parsed.length === 0) {\n return undefined;\n }\n\n const deduped = new Map<string, RuntimeAgentControllerState>();\n for (const entry of parsed) {\n deduped.set(entry.agentId, entry);\n }\n\n return [...deduped.values()].sort((a, b) =>\n a.agentId.localeCompare(b.agentId)\n );\n}\n\nfunction parseRuntimeAgentControllerState(\n value: unknown\n): RuntimeAgentControllerState | null {\n if (!value || typeof value !== \"object\") {\n return null;\n }\n\n const obj = value as {\n agentId?: unknown;\n displayName?: unknown;\n enabled?: unknown;\n launchContract?: unknown;\n transportMode?: unknown;\n streamingMode?: unknown;\n timeoutMs?: unknown;\n retry?: unknown;\n contextIdMappingSpec?: unknown;\n registeredAt?: unknown;\n updatedAt?: unknown;\n };\n const agentId = toTrimmedStringOrEmpty(obj.agentId);\n const displayName = toTrimmedStringOrEmpty(obj.displayName);\n const enabled = typeof obj.enabled === \"boolean\" ? obj.enabled : null;\n const launchContract = parseRuntimeAgentControllerLaunchContract(\n obj.launchContract\n );\n const defaults = createDefaultRuntimeAgentControllerSettings(agentId);\n const controllerSettings = parseRuntimeAgentControllerSettings(\n {\n transportMode: obj.transportMode,\n streamingMode: obj.streamingMode,\n timeoutMs: obj.timeoutMs,\n retry: obj.retry,\n contextIdMappingSpec: obj.contextIdMappingSpec,\n },\n defaults\n );\n const registeredAt = toTrimmedStringOrEmpty(obj.registeredAt);\n const updatedAt = toTrimmedStringOrEmpty(obj.updatedAt);\n\n if (\n !(\n agentId &&\n displayName &&\n enabled !== null &&\n controllerSettings &&\n registeredAt &&\n updatedAt\n )\n ) {\n return null;\n }\n\n return {\n agentId,\n displayName,\n enabled,\n ...(launchContract ? { launchContract } : {}),\n transportMode: controllerSettings.transportMode,\n streamingMode: controllerSettings.streamingMode,\n timeoutMs: controllerSettings.timeoutMs,\n retry: controllerSettings.retry,\n contextIdMappingSpec: controllerSettings.contextIdMappingSpec,\n registeredAt,\n updatedAt,\n };\n}\n\nfunction parseRuntimeAgentControllerLaunchContract(\n value: unknown\n): RuntimeAgentControllerLaunchContract | undefined {\n if (!(value && typeof value === \"object\")) {\n return undefined;\n }\n const parsed = runtimeAgentControllerLaunchContractSchema.safeParse(value);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction parseRuntimeAgentControllerSettings(\n raw: {\n transportMode: unknown;\n streamingMode: unknown;\n timeoutMs: unknown;\n retry: unknown;\n contextIdMappingSpec: unknown;\n },\n defaults: RuntimeAgentControllerSettings\n): RuntimeAgentControllerSettings | null {\n const normalizedStreamingMode = normalizeRuntimeStreamingMode(\n raw.streamingMode\n );\n const parsed = runtimeAgentControllerSettingsSchema.safeParse({\n transport_mode: raw.transportMode ?? defaults.transportMode,\n streaming_mode: normalizedStreamingMode ?? defaults.streamingMode,\n timeout_ms:\n raw.timeoutMs === undefined ? defaults.timeoutMs : raw.timeoutMs,\n retry: raw.retry ?? defaults.retry,\n context_id_mapping_spec:\n raw.contextIdMappingSpec ?? defaults.contextIdMappingSpec,\n });\n if (!parsed.success) {\n return null;\n }\n\n return {\n transportMode: parsed.data.transport_mode,\n streamingMode: parsed.data.streaming_mode,\n timeoutMs: normalizeRuntimeAgentTimeoutMs({\n defaults,\n timeoutMs: parsed.data.timeout_ms,\n }),\n retry: parsed.data.retry,\n contextIdMappingSpec:\n normalizeRuntimeAgentControllerConversationIdMappingSpec({\n contextIdMappingSpec: parsed.data.context_id_mapping_spec,\n defaults,\n }),\n };\n}\n\nfunction normalizeRuntimeAgentTimeoutMs(input: {\n defaults: RuntimeAgentControllerSettings;\n timeoutMs: number | null;\n}): number | null {\n // 120s was an old persisted default. Normal Agent execution must not inherit\n // it as a fixed wall-clock cutoff.\n if (input.timeoutMs === 120_000) {\n return input.defaults.timeoutMs;\n }\n return input.timeoutMs;\n}\n\nfunction normalizeRuntimeAgentControllerConversationIdMappingSpec(input: {\n contextIdMappingSpec: RuntimeAgentControllerConversationIdMappingSpec;\n defaults: RuntimeAgentControllerSettings;\n}): RuntimeAgentControllerConversationIdMappingSpec {\n if (\n input.contextIdMappingSpec.sourceField !==\n DEFAULT_RUNTIME_AGENT_CONTEXT_SOURCE_FIELD\n ) {\n return input.defaults.contextIdMappingSpec;\n }\n return input.contextIdMappingSpec;\n}\n\nfunction resolveRuntimeDaemonDispatchLimits(\n config?: RuntimeDaemonDispatchConfig\n): RuntimeDaemonDispatchLimits {\n return {\n globalConcurrency:\n parsePositiveInteger(config?.globalConcurrency) ??\n DEFAULT_RUNTIME_DAEMON_GLOBAL_CONCURRENCY,\n queueMax:\n parsePositiveInteger(config?.queueMax) ??\n DEFAULT_RUNTIME_DAEMON_QUEUE_MAX,\n };\n}\n\nfunction normalizeRuntimeStreamingMode(\n value: unknown\n): RuntimeAgentStreamingMode | null {\n if (value === \"final\" || value === \"stream\") {\n return value;\n }\n return null;\n}\n\nfunction parseSkillsInstallMode(\n value: unknown\n): RuntimeSkillsInstallRecord[\"mode\"] | null {\n if (value === \"symlink\" || value === \"copy\") {\n return value;\n }\n return null;\n}\n\nfunction parseSkillsInstallStatus(\n value: unknown\n): RuntimeSkillsInstallRecord[\"status\"] | null {\n if (value === \"installed\" || value === \"skipped\" || value === \"failed\") {\n return value;\n }\n return null;\n}\n\nfunction parsePositiveInteger(value: unknown): number | undefined {\n if (!Number.isInteger(value)) {\n return undefined;\n }\n const numericValue = Number(value);\n if (numericValue <= 0) {\n return undefined;\n }\n return numericValue;\n}\n\nfunction toTrimmedStringOrEmpty(value: unknown): string {\n if (typeof value !== \"string\") {\n return \"\";\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : \"\";\n}\n\nfunction toTrimmedStringOrUndefined(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction normalizeCustomTargetDir(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) {\n return \"\";\n }\n if (WINDOWS_DRIVE_ONLY_RE.test(trimmed)) {\n return `${trimmed[0]?.toUpperCase() ?? \"\"}:`;\n }\n const windowsLike =\n WINDOWS_DRIVE_PREFIX_RE.test(trimmed) || WINDOWS_UNC_RE.test(trimmed);\n const normalizedPath = windowsLike\n ? (() => {\n const normalizedWindowsPath = win32.normalize(trimmed);\n if (WINDOWS_DRIVE_ANY_RE.test(normalizedWindowsPath)) {\n return `${normalizedWindowsPath[0]?.toUpperCase() ?? \"\"}${normalizedWindowsPath.slice(1)}`;\n }\n return normalizedWindowsPath;\n })()\n : normalize(trimmed);\n const isPosixRoot = normalizedPath === posix.parse(normalizedPath).root;\n const isWindowsRoot = normalizedPath === win32.parse(normalizedPath).root;\n if (isPosixRoot || isWindowsRoot) {\n return normalizedPath;\n }\n return normalizedPath.replace(TRAILING_PATH_SEPARATORS_RE, \"\");\n}\n\nfunction toStringMap(value: unknown): Record<string, string> | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n\n const entries = Object.entries(value).filter(\n (entry): entry is [string, string] => typeof entry[1] === \"string\"\n );\n if (entries.length === 0) {\n return undefined;\n }\n\n return Object.fromEntries(entries);\n}\n\nfunction isFileNotFoundError(error: unknown): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: string }).code === \"ENOENT\"\n );\n}\n\nasync function readSplitRuntimeConfigDetailed(): Promise<{\n config: RuntimeConfigV1 | null;\n hasFiles: boolean;\n health: RuntimeConfigReadHealth;\n}> {\n const [\n preferencesFile,\n agentRuntimeFile,\n skillsStoreFile,\n customTargetsFile,\n installsFile,\n ] = await Promise.all([\n readOptionalJsonFile(devicePreferencesPath()),\n readOptionalJsonFile(deviceAgentRuntimePath()),\n readOptionalJsonFile(deviceSkillsStorePath()),\n readOptionalJsonFile(deviceSkillsCustomTargetsPath()),\n readOptionalJsonFile(deviceSkillsInstallsPath()),\n ]);\n\n const files = [\n preferencesFile,\n agentRuntimeFile,\n skillsStoreFile,\n customTargetsFile,\n installsFile,\n ];\n const hasFiles = files.some((file) => file.found);\n if (!hasFiles) {\n return {\n config: null,\n hasFiles: false,\n health: {\n parseFallback: false,\n },\n };\n }\n\n const invalidFile = files.find((file) => file.error);\n const preferences = parseDevicePreferencesConfig(preferencesFile.value);\n const agentRuntime = parseDeviceAgentRuntimeConfig(agentRuntimeFile.value);\n const skillsStore = parseDeviceSkillsStoreConfig(skillsStoreFile.value);\n const customTargets = parseDeviceSkillsCustomTargetsConfig(\n customTargetsFile.value\n );\n const installs = parseDeviceSkillsInstallsConfig(installsFile.value);\n\n const skills = mergeRuntimeSkillsConfig({\n store: skillsStore,\n customTargets,\n installs,\n });\n const config = buildRuntimeConfigFromParts({\n baseUrl: preferences.baseUrl,\n viewCustomization: preferences.viewCustomization,\n daemon: preferences.daemon,\n onboarding: preferences.onboarding,\n deviceRuntimeState: agentRuntime,\n skills,\n });\n\n return {\n config,\n hasFiles: true,\n health: invalidFile\n ? {\n parseFallback: true,\n reason: invalidFile.error ?? \"invalid_json\",\n }\n : {\n parseFallback: false,\n },\n };\n}\n\nasync function readLegacyRuntimeConfigDetailed(): Promise<{\n config: RuntimeConfigV1 | null;\n health: RuntimeConfigReadHealth;\n}> {\n let raw: string;\n try {\n raw = await readFile(legacyRuntimeConfigPath(), \"utf8\");\n } catch (error) {\n if (isFileNotFoundError(error)) {\n return {\n config: null,\n health: {\n parseFallback: false,\n },\n };\n }\n throw error;\n }\n\n if (raw.trim().length === 0) {\n return {\n config: null,\n health: {\n parseFallback: false,\n },\n };\n }\n\n let parsed: Partial<RuntimeConfigV1> & {\n agents?: unknown;\n daemon?: unknown;\n onboarding?: unknown;\n };\n try {\n parsed = JSON.parse(raw) as Partial<RuntimeConfigV1> & {\n agents?: unknown;\n daemon?: unknown;\n onboarding?: unknown;\n };\n } catch {\n return {\n config: null,\n health: {\n parseFallback: true,\n reason: \"invalid_json\",\n },\n };\n }\n\n if (parsed.v !== 1) {\n return {\n config: null,\n health: {\n parseFallback: true,\n reason: \"invalid_version\",\n },\n };\n }\n\n if (parsed.agents !== undefined) {\n throw new Error(\n \"runtime.config.legacy_agents_unsupported: key 'agents.registrations' is no longer supported. Use 'deviceRuntimeState.controllers' or run 'ats reset --yes'.\"\n );\n }\n\n return {\n config: buildRuntimeConfigFromParts({\n baseUrl: parseConfiguredBaseUrl(parsed.baseUrl),\n viewCustomization: parseRuntimeViewCustomization(\n parsed.viewCustomization\n ),\n skills: parseRuntimeSkillsConfig(parsed.skills),\n daemon: parseRuntimeDaemonConfig(parsed.daemon),\n deviceRuntimeState: parseRuntimeDeviceRuntimeState(\n parsed.deviceRuntimeState\n ),\n onboarding: parseRuntimeOnboardingConfig(parsed.onboarding),\n updatedAt:\n typeof parsed.updatedAt === \"string\"\n ? parsed.updatedAt\n : new Date().toISOString(),\n }),\n health: {\n parseFallback: false,\n },\n };\n}\n\nfunction buildRuntimeConfigFromParts(input: {\n baseUrl?: string;\n viewCustomization?: RuntimeViewCustomization;\n skills?: RuntimeSkillsConfig;\n daemon?: RuntimeDaemonConfig;\n deviceRuntimeState?: RuntimeDeviceRuntimeState;\n onboarding?: RuntimeOnboardingConfig;\n updatedAt?: string;\n}): RuntimeConfigV1 | null {\n const updatedAt = input.updatedAt ?? new Date().toISOString();\n if (\n !(\n input.baseUrl ||\n input.viewCustomization ||\n input.skills ||\n input.daemon ||\n input.deviceRuntimeState ||\n input.onboarding\n )\n ) {\n return null;\n }\n\n return {\n v: 1,\n ...(input.baseUrl ? { baseUrl: input.baseUrl } : {}),\n ...(input.viewCustomization\n ? { viewCustomization: input.viewCustomization }\n : {}),\n ...(input.skills ? { skills: input.skills } : {}),\n ...(input.daemon ? { daemon: input.daemon } : {}),\n ...(input.deviceRuntimeState\n ? { deviceRuntimeState: input.deviceRuntimeState }\n : {}),\n ...(input.onboarding ? { onboarding: input.onboarding } : {}),\n updatedAt,\n };\n}\n\nfunction parseDevicePreferencesConfig(\n value: unknown\n): Pick<\n RuntimeConfigV1,\n \"baseUrl\" | \"viewCustomization\" | \"daemon\" | \"onboarding\"\n> {\n if (!value || typeof value !== \"object\") {\n return {};\n }\n const parsed = value as Partial<DevicePreferencesV1>;\n if (parsed.v !== 1) {\n return {};\n }\n return {\n ...(parseConfiguredBaseUrl(parsed.baseUrl)\n ? { baseUrl: parseConfiguredBaseUrl(parsed.baseUrl) }\n : {}),\n ...(parseRuntimeViewCustomization(parsed.viewCustomization)\n ? {\n viewCustomization: parseRuntimeViewCustomization(\n parsed.viewCustomization\n ),\n }\n : {}),\n ...(parseRuntimeDaemonConfig(parsed.daemon)\n ? { daemon: parseRuntimeDaemonConfig(parsed.daemon) }\n : {}),\n ...(parseRuntimeOnboardingConfig(parsed.onboarding)\n ? { onboarding: parseRuntimeOnboardingConfig(parsed.onboarding) }\n : {}),\n };\n}\n\nfunction parseDeviceAgentRuntimeConfig(\n value: unknown\n): RuntimeDeviceRuntimeState | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceAgentRuntimeV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n return parseRuntimeDeviceRuntimeState(parsed.deviceRuntimeState);\n}\n\nfunction parseDeviceSkillsStoreConfig(\n value: unknown\n): Pick<RuntimeSkillsConfig, \"storeDir\" | \"agents\"> | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceSkillsStoreV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n const storeDir =\n typeof parsed.storeDir === \"string\" && parsed.storeDir.trim().length > 0\n ? parsed.storeDir.trim()\n : undefined;\n const agents = parseRuntimeSkillsAgents(parsed.agents);\n if (!(storeDir || agents)) {\n return undefined;\n }\n return {\n ...(storeDir ? { storeDir } : {}),\n ...(agents ? { agents } : {}),\n };\n}\n\nfunction parseDeviceSkillsCustomTargetsConfig(\n value: unknown\n): RuntimeSkillsCustomTarget[] | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceSkillsCustomTargetsV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n return parseRuntimeSkillsCustomTargets(parsed.customTargets, undefined);\n}\n\nfunction parseDeviceSkillsInstallsConfig(\n value: unknown\n): RuntimeSkillsInstallRecord[] | undefined {\n if (!value || typeof value !== \"object\") {\n return undefined;\n }\n const parsed = value as Partial<DeviceSkillsInstallsV1>;\n if (parsed.v !== 1) {\n return undefined;\n }\n return parseRuntimeSkillsInstallRecords(parsed.installs);\n}\n\nfunction mergeRuntimeSkillsConfig(input: {\n store?: Pick<RuntimeSkillsConfig, \"storeDir\" | \"agents\">;\n customTargets?: RuntimeSkillsCustomTarget[];\n installs?: RuntimeSkillsInstallRecord[];\n}): RuntimeSkillsConfig | undefined {\n if (!(input.store || input.customTargets || input.installs)) {\n return undefined;\n }\n return {\n ...(input.store?.storeDir ? { storeDir: input.store.storeDir } : {}),\n ...(input.store?.agents ? { agents: input.store.agents } : {}),\n ...(input.customTargets ? { customTargets: input.customTargets } : {}),\n ...(input.installs ? { installs: input.installs } : {}),\n };\n}\n\nfunction buildDevicePreferencesState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DevicePreferencesV1 | null {\n if (\n !(next.baseUrl || next.viewCustomization || next.daemon || next.onboarding)\n ) {\n return null;\n }\n return {\n v: 1,\n ...(next.baseUrl ? { baseUrl: next.baseUrl } : {}),\n ...(next.viewCustomization\n ? { viewCustomization: next.viewCustomization }\n : {}),\n ...(next.daemon ? { daemon: next.daemon } : {}),\n ...(next.onboarding ? { onboarding: next.onboarding } : {}),\n updatedAt,\n };\n}\n\nfunction buildDeviceAgentRuntimeState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceAgentRuntimeV1 | null {\n if (!next.deviceRuntimeState) {\n return null;\n }\n return {\n v: 1,\n deviceRuntimeState: next.deviceRuntimeState,\n updatedAt,\n };\n}\n\nfunction buildDeviceSkillsStoreState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceSkillsStoreV1 | null {\n if (!(next.skills?.storeDir || next.skills?.agents)) {\n return null;\n }\n return {\n v: 1,\n ...(next.skills?.storeDir ? { storeDir: next.skills.storeDir } : {}),\n ...(next.skills?.agents ? { agents: next.skills.agents } : {}),\n updatedAt,\n };\n}\n\nfunction buildDeviceSkillsCustomTargetsState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceSkillsCustomTargetsV1 | null {\n if (!(next.skills?.customTargets && next.skills.customTargets.length > 0)) {\n return null;\n }\n return {\n v: 1,\n customTargets: next.skills.customTargets,\n updatedAt,\n };\n}\n\nfunction buildDeviceSkillsInstallsState(\n next: RuntimeConfigV1,\n updatedAt: string\n): DeviceSkillsInstallsV1 | null {\n if (!(next.skills?.installs && next.skills.installs.length > 0)) {\n return null;\n }\n return {\n v: 1,\n installs: next.skills.installs,\n updatedAt,\n };\n}\n\nasync function writeJsonFileOrRemove(\n path: string,\n payload: object | null\n): Promise<void> {\n if (!payload) {\n await rm(path, { force: true }).catch(() => undefined);\n return;\n }\n\n await mkdir(dirname(path), { recursive: true });\n const tempPath = `${path}.tmp-${process.pid}-${Date.now()}`;\n await writeFile(tempPath, `${JSON.stringify(payload, null, 2)}\\n`, \"utf8\");\n try {\n await rename(tempPath, path);\n } catch (error) {\n await rm(tempPath, { force: true }).catch(() => undefined);\n throw error;\n }\n}\n\nasync function readOptionalJsonFile(path: string): Promise<{\n found: boolean;\n value: unknown;\n error?: RuntimeConfigFallbackReason;\n}> {\n const raw = await readFile(path, \"utf8\").catch((error) => {\n if (isFileNotFoundError(error)) {\n return null;\n }\n throw error;\n });\n if (raw === null) {\n return {\n found: false,\n value: null,\n };\n }\n if (raw.trim().length === 0) {\n return {\n found: true,\n value: null,\n };\n }\n try {\n return {\n found: true,\n value: JSON.parse(raw),\n };\n } catch {\n return {\n found: true,\n value: null,\n error: \"invalid_json\",\n };\n }\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n return await readFile(path, \"utf8\")\n .then(() => true)\n .catch((error) => {\n if (isFileNotFoundError(error)) {\n return false;\n }\n throw error;\n });\n}\n","import { normalizeBaseUrl } from \"../protocol/urls\";\nimport { resolveAtsEnvPreset } from \"./paths\";\nimport { getConfiguredBaseUrl } from \"./runtime-config\";\n\nexport const DEFAULT_GATEWAY_BASE_URL = \"https://gateway.ats.sh\";\nexport const DEV_LOCAL_GATEWAY_BASE_URL = \"http://localhost:8080\";\nconst AUTH_HOST_LABEL = \"auth\";\nconst AUTH_HOST_PREFIX = \"auth-\";\nconst LOCAL_AUTH_PORT = \"8788\";\n\nexport async function resolveBaseUrl(\n cliValue?: string,\n input: { env?: NodeJS.ProcessEnv } = {}\n): Promise<string> {\n const env = input.env ?? process.env;\n const fromCli = String(cliValue ?? \"\").trim();\n if (fromCli) {\n return normalizeGatewayBaseUrl(fromCli);\n }\n\n // False-positive guard: ATS_BASE_URL fallback is intentionally removed.\n // We only support ATS_GATEWAY_URL to avoid ambiguous env precedence.\n const fromEnv = String(env.ATS_GATEWAY_URL ?? \"\").trim();\n if (fromEnv) {\n return normalizeGatewayBaseUrl(fromEnv);\n }\n\n const fromConfig = await getConfiguredBaseUrl();\n if (fromConfig) {\n return normalizeGatewayBaseUrl(fromConfig);\n }\n\n return normalizeGatewayBaseUrl(resolveDefaultGatewayBaseUrl({ env }));\n}\n\nexport async function resolveBaseUrlOrNull(\n cliValue?: string\n): Promise<string | null> {\n try {\n return await resolveBaseUrl(cliValue);\n } catch {\n return null;\n }\n}\n\nexport async function resolveExplicitGatewayUrlOrThrow(\n cliValue?: string\n): Promise<string | undefined> {\n const explicitGatewayUrl = normalizeOptionalString(cliValue);\n if (!explicitGatewayUrl) {\n return undefined;\n }\n\n try {\n return await Promise.resolve().then(() =>\n normalizeGatewayBaseUrl(explicitGatewayUrl)\n );\n } catch (error) {\n throw new Error(\n `Invalid explicit gateway URL \"${explicitGatewayUrl}\": ${toErrorMessage(error)}`\n );\n }\n}\n\nexport function normalizeGatewayBaseUrl(gatewayUrl: string): string {\n const normalizedGatewayUrl = normalizeBaseUrl(gatewayUrl);\n const parsedGatewayUrl = new URL(normalizedGatewayUrl);\n if (isAuthWorkerUrl(parsedGatewayUrl)) {\n throw new Error(\n \"gateway URL must point to the ATS gateway, not the ATS auth worker\"\n );\n }\n return normalizedGatewayUrl;\n}\n\nexport function normalizeGatewayBaseUrlOrNull(\n gatewayUrl?: string | null\n): string | null {\n const normalizedGatewayUrl = normalizeOptionalString(gatewayUrl);\n if (!normalizedGatewayUrl) {\n return null;\n }\n try {\n return normalizeGatewayBaseUrl(normalizedGatewayUrl);\n } catch {\n return null;\n }\n}\n\nfunction normalizeOptionalString(value: unknown): string | null {\n const normalized = String(value ?? \"\").trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nexport function resolveDefaultGatewayBaseUrl(\n input: { env?: NodeJS.ProcessEnv } = {}\n): string {\n const preset = resolveAtsEnvPreset(input);\n if (preset === \"dev-local\" || preset === \"canary\") {\n return DEV_LOCAL_GATEWAY_BASE_URL;\n }\n return DEFAULT_GATEWAY_BASE_URL;\n}\n\nfunction isAuthWorkerUrl(url: URL): boolean {\n if (isLoopbackHostname(url.hostname)) {\n return resolveUrlPort(url) === LOCAL_AUTH_PORT;\n }\n\n const [firstLabel = \"\"] = url.hostname.toLowerCase().split(\".\");\n return (\n firstLabel === AUTH_HOST_LABEL || firstLabel.startsWith(AUTH_HOST_PREFIX)\n );\n}\n\nfunction isLoopbackHostname(hostname: string): boolean {\n const normalizedHostname = hostname.toLowerCase();\n return (\n normalizedHostname === \"localhost\" ||\n normalizedHostname === \"127.0.0.1\" ||\n normalizedHostname === \"::1\"\n );\n}\n\nfunction resolveUrlPort(url: URL): string {\n if (url.port) {\n return url.port;\n }\n if (url.protocol === \"http:\" || url.protocol === \"ws:\") {\n return \"80\";\n }\n if (url.protocol === \"https:\" || url.protocol === \"wss:\") {\n return \"443\";\n }\n return \"\";\n}\n\nfunction toErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import "./dist-BtP8ZhAB.js";
3
+ import "./dist-B6FL1Iut.js";
4
4
  import { a as writeDaemonRuntimeLease, i as readDaemonRuntimeLease, n as clearDaemonRuntimeLease, r as daemonRuntimeLeasePath } from "./ats.js";
5
5
 
6
6
  export { clearDaemonRuntimeLease };
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { z } from "zod/v4";
4
4
 
5
- //#region ../../packages/schemas/dist/runtime-transport-B20mfyz_.js
5
+ //#region ../../packages/schemas/dist/runtime-transport-CNKi47Ck.js
6
6
  const agentControllerConversationExternalImportCapabilitySchema = z.enum(["unsupported", "by_ref_id"]);
7
7
  const agentControllerConversationResumeCapabilitySchema = z.enum(["unsupported", "by_ref_id"]);
8
8
  const agentControllerConversationDiscoverCapabilitySchema = z.literal("unsupported");
@@ -2814,6 +2814,7 @@ const runtimeTransportHeartbeatRequestSchema = z.strictObject({
2814
2814
  daemonSessionId: z.string().min(1),
2815
2815
  serviceVersion: z.string().trim().min(1).optional(),
2816
2816
  leases: z.array(runtimeTransportLeaseSchema).max(512),
2817
+ capabilities: runtimeTransportCapabilitiesSchema.optional(),
2817
2818
  runtimeContract: daemonRuntimeContractSchema.optional(),
2818
2819
  sentAtMs: z.number().int().nonnegative()
2819
2820
  });
@@ -3628,7 +3629,7 @@ const daemonStreamErrorFrameSchema = z.strictObject({
3628
3629
  });
3629
3630
 
3630
3631
  //#endregion
3631
- //#region ../../packages/schemas/dist/entry-brief-D1IAqDrG.js
3632
+ //#region ../../packages/schemas/dist/entry-brief-C8ZmsTIc.js
3632
3633
  const AGENT_EXECUTION_READINESS_IMPACT_FRESH_TTL_MS = 1800 * 1e3;
3633
3634
  const AGENT_EXECUTION_READINESS_IMPACT_REASON_CODES = [
3634
3635
  "controller.launch.choice_required",
@@ -10504,4 +10505,4 @@ function resolvePublicAgentFailureBody(body, targetName) {
10504
10505
 
10505
10506
  //#endregion
10506
10507
  export { getSpaceThreadResponseSchema as $, daemonStreamFrameSchema as $n, spaceMembersSnapshotSchema as $t, dispatchBriefSchema as A, MAX_VISITED_PROFILE_IDS as An, runtimeTransportDispatchRuntimeEvidenceRequestSchema as Ar, prepareSessionResponseSchema as At, getAgentExecutionReadinessBatchResponseSchema as B, atsdControlPlaneRequestSchema as Bn, runtimeTransportSubmitTaskResultRequestSchema as Br, setCurrentLocalAgentEnabledResponseSchema as Bt, createSpaceThreadResponseSchema as C, DISPATCH_ACTIVITY_FAILED_PURPOSE as Cn, runtimeAgentControllerSettingsSchema as Cr, patchSpaceContractResponseSchema as Ct, daemonRouteObservationResponseSchema as D, MAX_PROFILE_ID_LENGTH as Dn, runtimeTransportDispatchLifecycleRequestSchema as Dr, postSpaceMembersResponseSchema as Dt, daemonRouteCatalogCacheSchema as E, LOCAL_COMPONENTS_SCHEMA_VERSION as En, runtimeTransportDeliveryExecutionIdentitySchema as Er, postSpaceMembersBodySchema as Et, forgetCurrentComputerResponseSchema as F, SPACE_MENTION_REJECT_NOTICE_PURPOSE as Fn, runtimeTransportLocalAgentControlRefreshCatalogFramePayloadSchema as Fr, refreshCurrentLocalAgentCatalogResponseSchema as Ft, getModelCatalogResponseSchema as G, buildAgentControllerConversationRef as Gn, signalEnvelopeSchema as Gt, getAgentProfilePrimaryBindingResponseSchema as H, atsdTaskResultEnvelopeWriteSchema as Hn, setSpaceAccessModeBodySchema as Ht, gatewayErrorCodeSchema as I, SPACE_PASSWORD_MIN_LENGTH as In, runtimeTransportLocalAgentControlSetEnabledFramePayloadSchema as Ir, removeSpaceMembersResponseSchema as It, getSpaceContractResponseSchema as J, canonicalizeBuiltinAgentControllerRef as Jn, spaceCreatorSchema as Jt, getPrepareReadinessQuerySchema as K, buildAgentControllerRoutingKey as Kn, spaceAccessModeStateSchema as Kt, gatewayErrorEnvelopeSchema as L, SPACE_UPDATES_MAX_LIMIT as Ln, runtimeTransportRegisterSessionRequestSchema as Lr, resolveSpaceDispatchTraceRootCause as Lt, ensureAgentProfilePrimaryBindingResponseSchema as M, RUNTIME_TRANSPORT_SCHEMA_VERSION as Mn, runtimeTransportHeartbeatResponseSchema as Mr, prepareSetupBootstrapWriteSchema as Mt, entryBriefSchema as N, SPACE_MEMBER_JOIN_NOTICE_PURPOSE as Nn, runtimeTransportLocalAgentControlCancelFramePayloadSchema as Nr, projectObservabilityWakeCorrelation as Nt, daemonRuntimeLeaseSchema as O, MAX_PROFILE_WORKING_DIRECTORY_LENGTH as On, runtimeTransportDispatchPreviewEndRequestSchema as Or, postSpaceThreadSignalBodySchema as Ot, forgetComputerResponseSchema as P, SPACE_MEMBER_REMOVE_NOTICE_PURPOSE as Pn, runtimeTransportLocalAgentControlInterruptFramePayloadSchema as Pr, projectSpaceDispatchTraceFinalVisibleOutcome as Pt, getSpaceStatusResponseSchema as Q, daemonServiceLaneSchema as Qn, spaceMemberDirectorySchema as Qt, getActiveSpaceWakeProgressResponseSchema as R, atsRuntimeProfileIdSchema as Rn, runtimeTransportRegisterSessionResponseSchema as Rr, serverErrorFrameSchema as Rt, createSpaceThreadBodySchema as S, DISPATCH_ACTIVITY_DISPATCHING_PURPOSE as Sn, runtimeAgentControllerLaunchContractSchema as Sr, patchSpaceContractBodySchema as St, currentLocalRuntimeReplyReadinessResponseSchema as T, LEGACY_RUNTIME_DISPATCH_POLICY as Tn, runtimeTransportDeliverDispatchRequestSchema as Tr, postNormalMessageResponseSchema as Tt, getLocalRuntimeExpectedRoutesQuerySchema as U, atsdTaskResultOpenClawGatewayVisibilityStatusSchema as Un, setupPlanAgentViewEventSchema as Ut, getAgentExecutionReadinessResponseSchema as V, atsdControlPlaneResponseSchema as Vn, sanitizeSignalTextPreview as Vr, setLocalRuntimeDisplayNameBodySchema as Vt, getLocalRuntimeExpectedRoutesResponseSchema as W, atsdTaskResultPayloadSchema as Wn, setupPlanAgentViewPayloadSchema as Wt, getSpaceDispatchResultResponseSchema as X, conversationExecutionStateSchema as Xn, spaceIdentityDirectorySchema as Xt, getSpaceDispatchLookupResponseSchema as Y, collectCanonicalMentionTextFragments as Yn, spaceDispatchTraceResponseSchema as Yt, getSpaceMessageDetailsResponseSchema as Z, daemonServiceContractSchema as Zn, spaceMemberDirectoryEntrySchema as Zt, continuitySchema as _, AGENT_REPLY_PREVIEW_PURPOSE as _n, providerDispatchRuntimeContextSchema as _r, notifyAgentProfileRouteCatalogChangedBodySchema as _t, DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_VERSION as a, submitRuntimeProviderConversationProofsBodySchema as an, getSpaceMessageAddressingRelationSupportForTargetKind as ar, listProfileSpaceHistoryResponseSchema as at, createSpaceDiagnosticReportResponseSchema as b, CONVERSATION_CONTINUITY_WARNING_PURPOSE as bn, resolveSingleSpaceMentionLabels as br, observabilityWakeTraceSelectorSchema as bt, SETUP_PLAN_AGENT_VIEW_SCHEMA_VERSION as c, submitRuntimeRegistrationResponseSchema as cn, normalizeKnownBuiltinAgentControllerId as cr, listSpaceThreadsResponseSchema as ct, agentControllerPermissionModeSchema as d, upsertProfileSpaceHistoryResponseSchema as dn, normalizeSpacePasswordText as dr, localRuntimeEnrollmentResponseSchema as dt, spaceMetaSchema as en, formatCanonicalMentionLiteral as er, getSpaceUpdatesResponseSchema as et, agentExecutionReadinessRouteParamsSchema as f, writeCurrentDeviceObservedMetadataBodySchema as fn, parseAgentControllerRef as fr, localRuntimesQuerySchema as ft, cliJsonOutputEnvelopeSchema as g, AGENT_REPLY_PREVIEW_END_PURPOSE as gn, profileWorkspaceModeSchema as gr, normalizeSpaceCursorPatch as gt, catchupResponseSchema as h, AGENT_REPLYING_PURPOSE as hn, postSpaceWakeStopResponseSchema as hr, normalizeListSignalsReadQuerySemantics as ht, DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_NAME as i, submitRuntimeAgentControllerReportsResponseSchema as in, formatLocalSetupActionLabel as ir, leaveSpaceResponseSchema as it, ensureAgentProfilePrimaryBindingBodySchema as j, MESSAGE_MENTION_TYPE_VALUES as jn, runtimeTransportHeartbeatRequestSchema as jr, prepareSessionStreamServerFrameSchema as jt, deleteSpaceResponseSchema as k, MAX_SIGNAL_REPLY_TO_PREVIEW_LENGTH as kn, runtimeTransportDispatchPreviewRequestSchema as kr, postSpaceThreadSignalResponseSchema as kt, SPACE_DISPATCH_TRACE_PROMPT_PREVIEW_MAX_CHARS as l, updateAgentProfilePrimaryBindingAgentControllerPermissionModeBodySchema as ln, normalizeMessageEnvelope as lr, localAgentCatalogSchema as lt, atsRequestContextSchema as m, AGENT_REPLYING_END_PURPOSE as mn, postSpaceWakeStopBodySchema as mr, modelCatalogSchema as mt, resolveBuiltinAgentControllerBrand as n, structuredGuidePayloadFromInputSchema as nn, formatLocalComponentsSummaryLabel as nr, getSpaceWakeTraceWaterfallResponseSchema as nt, PREPARE_SESSION_STREAM_PROTOCOL_VERSION as o, submitRuntimeProviderConversationProofsResponseSchema as on, installedLocalComponentsSnapshotSchema as or, listSpaceThreadEventsResponseSchema as ot, agentProfileBindingRouteParamsSchema as p, writeCurrentDeviceObservedMetadataResponseSchema as pn, parseOptionalClientMessageId as pr, localRuntimesResponseSchema as pt, getPrepareReadinessResponseSchema as q, canonicalizeAgentControllerRef as qn, spaceBootstrapResponseSchema as qt, resolveMappedPublicAgentFailureReason as r, submitRuntimeAgentControllerReportsBodySchema as rn, formatLocalSetupActionDescription as rr, incomingServerMessageSchema as rt, SETUP_PLAN_AGENT_VIEW_CODE as s, submitRuntimeRegistrationBodySchema as sn, normalizeBuiltinAgentControllerId as sr, listSpaceThreadSignalsResponseSchema as st, CODEX_UPGRADE_REQUIRED_REASON as t, spaceViewerMembershipResponseSchema as tn, formatLocalComponentsSummaryDescription as tr, getSpaceWakeProgressResponseSchema as tt, accountSpaceIndexResponseSchema as u, updateAgentProfilePrimaryBindingModelSelectionBodySchema as un, normalizeOptionalWorkingDirectory as ur, localRuntimeEnrollmentBodySchema as ut, createSpaceBodySchema as v, ATSD_CONTROL_PLANE_SCHEMA_VERSION as vn, resolveBuiltinAgentControllerConversationKind as vr, notifyAgentProfileRouteCatalogChangedResponseSchema as vt, currentDeviceTargetResponseSchema as w, DISPATCH_ACTIVITY_RETRYING_PURPOSE as wn, runtimeCoordinatorExecutionTokenEnvelopeSchema as wr, postNormalMessageBodySchema as wt, createSpaceResponseSchema as x, CURRENT_DAEMON_EXECUTION_CONTRACT_EPOCH as xn, resolveSpaceMentionLabels as xr, patchProfileSpaceHistoryStatusResponseSchema as xt, createSpaceDiagnosticReportBodySchema as y, ATSD_TASK_RESULT_SCHEMA_VERSION as yn, resolveMessageEnvelopeTargetField as yr, notifyAgentProfilesRouteCatalogChangedBodySchema as yt, getAgentExecutionReadinessBatchBodySchema as z, atsSpaceEgressActionSchema as zn, runtimeTransportRouteCatalogChangedFramePayloadSchema as zr, setCurrentLocalAgentEnabledBodySchema as zt };
10507
- //# sourceMappingURL=dist-BtP8ZhAB.js.map
10508
+ //# sourceMappingURL=dist-B6FL1Iut.js.map