agent-transport-system 0.4.3 → 0.4.4

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.
package/dist/ats-dev.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import "./lock-CLqqzR_x.js";
4
- import { v as DEV_LOCAL_GATEWAY_BASE_URL } from "./runtime-config-CPtfyCpL.js";
3
+ import "./lock-DNHgZaBJ.js";
4
+ import { v as DEV_LOCAL_GATEWAY_BASE_URL } from "./runtime-config-JF1fXrHX.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,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { $ as collectCanonicalMentionTextFragments, $n as writeCurrentDeviceBootstrapObservationResponseSchema, $t as patchSpaceContractBodySchema, A as SPACE_DISPATCH_TRACE_PROMPT_PREVIEW_MAX_CHARS, An as spaceConversationBindingImportResponseSchema, At as getPrepareReadinessQuerySchema, B as atsSpaceEgressActionSchema, Bn as startSessionResponseSchema, Bt as getSpaceWakeProgressResponseSchema, C as DISPATCH_ACTIVITY_DISPATCHING_PURPOSE, Cn as sanitizeSignalTextPreview, Ct as finalClaimRouteParamsSchema, D as MAX_PROFILE_WORKING_DIRECTORY_LENGTH, Dn as signalEnvelopeSchema, Dt as gatewayErrorCodeSchema, E as LEGACY_RUNTIME_DISPATCH_POLICY, En as setOwnedDeviceDisplayNameBodySchema, Et as formatCanonicalMentionLiteral, F as SPACE_UPDATES_MAX_LIMIT, Fn as spaceMembersSnapshotSchema, Ft as getSpaceDispatchLookupResponseSchema, G as atsdTaskResultPayloadSchema, Gn as structuredGuidePayloadFromInputSchema, Gt as normalizeBuiltinControllerAgentId, H as atsdControlPlaneResponseSchema, Hn as startSessionSpaceChoiceResponseSchema, Ht as isExplicitBuiltinControllerRef, I as agentProfileBindingRouteParamsSchema, In as spaceMetaSchema, It as getSpaceDispatchResultResponseSchema, J as canonicalizeBuiltinControllerRef, Jn as submitRuntimeRegistrationBodySchema, Jt as normalizeMessageEnvelope, K as buildControllerRoutingKeyForKind, Kn as submitRuntimeCapabilityReportsBodySchema, Kt as normalizeBuiltinControllerProviderId, L as atsProfileIdSchema, Ln as startDeviceProjectionSchema, Lt as getSpaceMessageAddressingRelationSupportForTargetKind, M as SPACE_MEMBER_REMOVE_NOTICE_PURPOSE, Mn as spaceConversationBindingUpsertResponseSchema, Mt as getSpaceContractResponseSchema, N as SPACE_MENTION_REJECT_NOTICE_PURPOSE, Nn as spaceCreatorSchema, Nt as getSpaceConversationRemoteStatusResponseSchema, O as MAX_SIGNAL_REPLY_TO_PREVIEW_LENGTH, On as spaceConversationBindingConflictResponseSchema, Ot as gatewayErrorEnvelopeSchema, P as SPACE_PASSWORD_MIN_LENGTH, Pn as spaceDispatchTraceResponseSchema, Pt as getSpaceConversationStatusResponseSchema, Q as claimExecutionDiagnosticsResponseSchema, Qn as writeCurrentDeviceBootstrapObservationBodySchema, Qt as patchProfileSpaceHistoryStatusResponseSchema, R as atsRequestContextSchema, Rn as startProfileReadinessSummarySchema, Rt as getSpaceStatusResponseSchema, S as DAEMON_HUB_SCHEMA_VERSION, St as entryBriefSchema, T as DISPATCH_ACTIVITY_RETRYING_PURPOSE, Tn as setCurrentDeviceTargetBodySchema, Tt as forgetCurrentComputerResponseSchema, U as atsdTaskResultEnvelopeWriteSchema, Un as startSessionWithTokenResponseSchema, Ut as leaveSpaceResponseSchema, V as atsdControlPlaneRequestSchema, Vn as startSessionSpaceChoiceBodySchema, Vt as incomingServerMessageSchema, W as atsdTaskResultOpenClawGatewayVisibilityStatusSchema, Wn as startStateResponseSchema, Wt as listProfileSpaceHistoryResponseSchema, X as catchupResponseSchema, Xn as upsertProfileSpaceHistoryResponseSchema, Xt as ownedDevicesResponseSchema, Y as canonicalizeControllerRefForKind, Yn as submitRuntimeRegistrationResponseSchema, Yt as normalizeOptionalWorkingDirectory, Z as claimExecutionDiagnosticsQuerySchema, Zn as upsertSpaceDeletionTombstoneResponseSchema, Zt as parseOptionalClientMessageId, _ as AGENT_REPLY_PREVIEW_END_PURPOSE, _n as resolveSingleSpaceMentionLabels, _t as daemonServiceContractSchema, a as runWithHeldLock, an as postSpaceMembersResponseSchema, ar as writeStartObservedDeviceMetadataResponseSchema, at as currentDeviceTargetResponseSchema, b as ATSD_TASK_RESULT_SCHEMA_VERSION, bn as resolveStartHandoffResponseSchema, bt as ensureAgentProfilePrimaryBindingBodySchema, c as LEGACY_ATS_RUNTIME_SESSION_ENV_KEY, cn as profileWorkspaceModeSchema, cr as createDaemonRouteObservationSummary, ct as daemonHubDispatchPreviewEndRequestSchema, d as resolveRuntimeSession, dn as removeSpaceMembersResponseSchema, dt as daemonHubHeartbeatResponseSchema, en as patchSpaceContractResponseSchema, er as writeCurrentDeviceObservedMetadataBodySchema, et as continuitySchema, f as resolveRuntimeSessionId, fn as reserveFinalClaimBodySchema, ft as daemonHubRegisterSessionRequestSchema, g as AGENT_REPLYING_PURPOSE, gn as resolveMessageEnvelopeTargetField, gt as daemonRuntimeLeaseSchema, h as AGENT_REPLYING_END_PURPOSE, hn as resolveBuiltinUpstreamConversationRefKind, ht as daemonRouteObservationResponseSchema, i as releaseLock, in as postSpaceMembersBodySchema, ir as writeStartObservedDeviceMetadataBodySchema, it as createStartSessionBodySchema, j as SPACE_MEMBER_JOIN_NOTICE_PURPOSE, jn as spaceConversationBindingResponseSchema, jt as getPrepareReadinessResponseSchema, k as MESSAGE_MENTION_TYPE_VALUES, kn as spaceConversationBindingDeleteResponseSchema, kt as getAgentProfilePrimaryBindingResponseSchema, l as listRuntimeSessionStates, ln as providerDispatchRuntimeContextSchema, lt as daemonHubDispatchPreviewRequestSchema, m as resolveBuiltinAgentControllerBrand, mn as resolveBuiltinProviderConversationCapability, mt as daemonHubSubmitTaskResultRequestSchema, n as isAtsLockError, nn as postNormalMessageBodySchema, nr as writeStartObservationBodySchema, nt as createSpaceBodySchema, o as tryCleanupStaleLock, on as prepareSessionResponseSchema, or as writeStartSessionProgressBodySchema, ot as daemonHubDeliverDispatchRequestSchema, p as writeRuntimeSessionState, pn as reserveFinalClaimResponseSchema, pt as daemonHubRegisterSessionResponseSchema, q as buildUpstreamConversationRef, qn as submitRuntimeCapabilityReportsResponseSchema, qt as normalizeListSignalsReadQuerySemantics, r as readLockMeta, rn as postNormalMessageResponseSchema, rr as writeStartObservationResponseSchema, rt as createSpaceResponseSchema, s as ATS_RUNTIME_SESSION_ENV_KEY, sn as prepareSessionStreamServerFrameSchema, sr as writeStartSessionProgressResponseSchema, st as daemonHubDispatchLifecycleRequestSchema, t as acquireLock, tn as patchStartSessionBodySchema, tr as writeCurrentDeviceObservedMetadataResponseSchema, tt as conversationExecutionStateSchema, u as readRuntimeSessionState, un as querySpaceDeletionTombstonesResponseSchema, ut as daemonHubHeartbeatRequestSchema, v as AGENT_REPLY_PREVIEW_PURPOSE, vn as resolveSpaceMentionLabels, vt as daemonStreamFrameSchema, w as DISPATCH_ACTIVITY_FAILED_PURPOSE, wn as serverErrorFrameSchema, wt as forgetComputerResponseSchema, x as CONVERSATION_CONTINUITY_WARNING_PURPOSE, xt as ensureAgentProfilePrimaryBindingResponseSchema, y as ATSD_CONTROL_PLANE_SCHEMA_VERSION, yn as resolveStartHandoffBodySchema, yt as dispatchBriefSchema, z as atsRuntimeProfileIdSchema, zn as startSessionProgressSchema, zt as getSpaceUpdatesResponseSchema } from "./lock-CLqqzR_x.js";
3
+ import { $ as catchupResponseSchema, $n as submitRuntimeCapabilityReportsResponseSchema, $t as normalizeListSignalsReadQuerySemantics, A as MAX_SIGNAL_REPLY_TO_PREVIEW_LENGTH, An as serverErrorFrameSchema, At as gatewayErrorCodeSchema, B as atsProfileIdSchema, Bn as spaceDispatchTraceResponseSchema, Bt as getSpaceConversationStatusResponseSchema, C as CONVERSATION_CONTINUITY_WARNING_PURPOSE, Cn as resolveSingleSpaceMentionLabels, Ct as ensureAgentProfilePrimaryBindingBodySchema, D as DISPATCH_ACTIVITY_RETRYING_PURPOSE, Dt as forgetComputerResponseSchema, E as DISPATCH_ACTIVITY_FAILED_PURPOSE, En as resolveStartHandoffResponseSchema, Et as finalClaimRouteParamsSchema, F as SPACE_MENTION_REJECT_NOTICE_PURPOSE, Fn as spaceConversationBindingDeleteResponseSchema, Ft as getAgentProfilePrimaryBindingResponseSchema, G as atsdControlPlaneResponseSchema, Gn as startSessionProgressSchema, Gt as getSpaceUpdatesResponseSchema, H as atsRuntimeProfileIdSchema, Hn as spaceMetaSchema, Ht as getSpaceDispatchResultResponseSchema, I as SPACE_PASSWORD_MIN_LENGTH, In as spaceConversationBindingImportResponseSchema, It as getPrepareReadinessQuerySchema, J as atsdTaskResultPayloadSchema, Jn as startSessionSpaceChoiceResponseSchema, Jt as isExplicitBuiltinControllerRef, K as atsdTaskResultEnvelopeWriteSchema, Kn as startSessionResponseSchema, Kt as getSpaceWakeProgressResponseSchema, L as SPACE_UPDATES_MAX_LIMIT, Ln as spaceConversationBindingResponseSchema, Lt as getPrepareReadinessResponseSchema, M as SPACE_DISPATCH_TRACE_PROMPT_PREVIEW_MAX_CHARS, Mn as setOwnedDeviceDisplayNameBodySchema, Mt as getAgentExecutionReadinessBatchBodySchema, N as SPACE_MEMBER_JOIN_NOTICE_PURPOSE, Nn as signalEnvelopeSchema, Nt as getAgentExecutionReadinessBatchResponseSchema, O as LEGACY_RUNTIME_DISPATCH_POLICY, Ot as forgetCurrentComputerResponseSchema, P as SPACE_MEMBER_REMOVE_NOTICE_PURPOSE, Pn as spaceConversationBindingConflictResponseSchema, Pt as getAgentExecutionReadinessResponseSchema, Q as canonicalizeControllerRefForKind, Qn as submitRuntimeCapabilityReportsBodySchema, Qt as normalizeBuiltinControllerProviderId, R as agentExecutionReadinessRouteParamsSchema, Rn as spaceConversationBindingUpsertResponseSchema, Rt as getSpaceContractResponseSchema, S as ATSD_TASK_RESULT_SCHEMA_VERSION, Sn as resolveMessageEnvelopeTargetField, St as dispatchBriefSchema, T as DISPATCH_ACTIVITY_DISPATCHING_PURPOSE, Tn as resolveStartHandoffBodySchema, Tt as entryBriefSchema, U as atsSpaceEgressActionSchema, Un as startDeviceProjectionSchema, Ut as getSpaceMessageAddressingRelationSupportForTargetKind, V as atsRequestContextSchema, Vn as spaceMembersSnapshotSchema, Vt as getSpaceDispatchLookupResponseSchema, W as atsdControlPlaneRequestSchema, Wn as startProfileReadinessSummarySchema, Wt as getSpaceStatusResponseSchema, X as buildUpstreamConversationRef, Xn as startStateResponseSchema, Xt as listProfileSpaceHistoryResponseSchema, Y as buildControllerRoutingKeyForKind, Yn as startSessionWithTokenResponseSchema, Yt as leaveSpaceResponseSchema, Z as canonicalizeBuiltinControllerRef, Zn as structuredGuidePayloadFromInputSchema, Zt as normalizeBuiltinControllerAgentId, _ as AGENT_REPLYING_END_PURPOSE, _n as removeSpaceMembersResponseSchema, _t as daemonHubSubmitTaskResultRequestSchema, a as runWithHeldLock, an as patchSpaceContractBodySchema, ar as writeCurrentDeviceBootstrapObservationResponseSchema, at as createSpaceBodySchema, b as AGENT_REPLY_PREVIEW_PURPOSE, bn as resolveBuiltinProviderConversationCapability, bt as daemonServiceContractSchema, c as LEGACY_ATS_RUNTIME_SESSION_ENV_KEY, cn as postNormalMessageBodySchema, cr as writeStartObservationBodySchema, ct as currentDeviceTargetResponseSchema, d as resolveRuntimeSession, dn as postSpaceMembersResponseSchema, dr as writeStartObservedDeviceMetadataResponseSchema, dt as daemonHubDispatchPreviewEndRequestSchema, en as normalizeMessageEnvelope, er as submitRuntimeRegistrationBodySchema, et as claimExecutionDiagnosticsQuerySchema, f as resolveRuntimeSessionId, fn as prepareSessionResponseSchema, fr as writeStartSessionProgressBodySchema, ft as daemonHubDispatchPreviewRequestSchema, g as resolveMappedPublicAgentFailureReason, gn as querySpaceDeletionTombstonesResponseSchema, gt as daemonHubRegisterSessionResponseSchema, h as resolveBuiltinAgentControllerBrand, hn as providerDispatchRuntimeContextSchema, ht as daemonHubRegisterSessionRequestSchema, i as releaseLock, in as patchProfileSpaceHistoryStatusResponseSchema, ir as writeCurrentDeviceBootstrapObservationBodySchema, it as conversationExecutionStateSchema, j as MESSAGE_MENTION_TYPE_VALUES, jn as setCurrentDeviceTargetBodySchema, jt as gatewayErrorEnvelopeSchema, k as MAX_PROFILE_WORKING_DIRECTORY_LENGTH, kn as sanitizeSignalTextPreview, kt as formatCanonicalMentionLiteral, l as listRuntimeSessionStates, ln as postNormalMessageResponseSchema, lr as writeStartObservationResponseSchema, lt as daemonHubDeliverDispatchRequestSchema, m as CODEX_UPGRADE_REQUIRED_REASON, mn as profileWorkspaceModeSchema, mr as createDaemonRouteObservationSummary, mt as daemonHubHeartbeatResponseSchema, n as isAtsLockError, nn as ownedDevicesResponseSchema, nr as upsertProfileSpaceHistoryResponseSchema, nt as collectCanonicalMentionTextFragments, o as tryCleanupStaleLock, on as patchSpaceContractResponseSchema, or as writeCurrentDeviceObservedMetadataBodySchema, ot as createSpaceResponseSchema, p as writeRuntimeSessionState, pn as prepareSessionStreamServerFrameSchema, pr as writeStartSessionProgressResponseSchema, pt as daemonHubHeartbeatRequestSchema, q as atsdTaskResultOpenClawGatewayVisibilityStatusSchema, qn as startSessionSpaceChoiceBodySchema, qt as incomingServerMessageSchema, r as readLockMeta, rn as parseOptionalClientMessageId, rr as upsertSpaceDeletionTombstoneResponseSchema, rt as continuitySchema, s as ATS_RUNTIME_SESSION_ENV_KEY, sn as patchStartSessionBodySchema, sr as writeCurrentDeviceObservedMetadataResponseSchema, st as createStartSessionBodySchema, t as acquireLock, tn as normalizeOptionalWorkingDirectory, tr as submitRuntimeRegistrationResponseSchema, tt as claimExecutionDiagnosticsResponseSchema, u as readRuntimeSessionState, un as postSpaceMembersBodySchema, ur as writeStartObservedDeviceMetadataBodySchema, ut as daemonHubDispatchLifecycleRequestSchema, v as AGENT_REPLYING_PURPOSE, vn as reserveFinalClaimBodySchema, vt as daemonRouteObservationResponseSchema, w as DAEMON_HUB_SCHEMA_VERSION, wn as resolveSpaceMentionLabels, wt as ensureAgentProfilePrimaryBindingResponseSchema, x as ATSD_CONTROL_PLANE_SCHEMA_VERSION, xn as resolveBuiltinUpstreamConversationRefKind, xt as daemonStreamFrameSchema, y as AGENT_REPLY_PREVIEW_END_PURPOSE, yn as reserveFinalClaimResponseSchema, yt as daemonRuntimeLeaseSchema, z as agentProfileBindingRouteParamsSchema, zn as spaceCreatorSchema, zt as getSpaceConversationRemoteStatusResponseSchema } from "./lock-DNHgZaBJ.js";
4
4
  import { A as runtimeLogsDir, C as normalizeAtsProfileId, D as resolveAtsEnvPreset, E as resolveAtsCliEntryNameFromArgv, M as skillsDir, N as spacesDir, O as resolveAtsRootDir, P as systemDir, S as normalizeAccountKey, T as profileViewPath, a as accountProfileWorkspacePath, c as atsRootDir, d as deviceOpenClawProfileBootstrapPath, f as deviceOpenClawProfileDir, i as accountProfileViewPath, k as runtimeDir, 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-DyLxjg9Z.js";
5
- import { A as toSpaceCursorUrl, B as toSpaceSignalsUrl, C as resolveDefaultGatewayBaseUrl, D as toDaemonRouteObservationUrl, E as toClaimExecutionDiagnosticsUrl, F as toSpaceMembersUrl, H as toSpaceWsUrl, I as toSpaceMetaUrl, L as toSpacePasswordUrl, M as toSpaceDispatchLookupUrl, N as toSpaceDispatchTraceUrl, O as toSpaceContractUrl, P as toSpaceLeaveUrl, R as toSpaceRemoveMembersUrl, S as resolveBaseUrlOrNull, T as normalizeBaseUrl, V as toSpaceUpdatesUrl, _ as updateConfiguredStartV1OnboardingState, a as getConfiguredDeviceRuntimeState, b as normalizeGatewayBaseUrlOrNull, c as getConfiguredStartV1OnboardingState, d as resolveRuntimeSkillsCustomTargetId, f as setConfiguredBaseUrl, g as updateConfiguredSkillsConfig, h as updateConfiguredOnboardingConfig, i as getConfiguredDaemonDispatchLimits, j as toSpaceDeleteUrl, k as toSpaceCreateUrl, l as getConfiguredViewCustomization, m as updateConfiguredDeviceRuntimeState, n as alignRuntimeConfigStorage, o as getConfiguredOnboardingDisclaimerAcceptedAt, p as setConfiguredSkillsConfig, r as createDefaultRuntimeAgentControllerSettings, s as getConfiguredSkillsConfig, t as DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE, u as getRuntimeConfigReadHealth, w as resolveExplicitGatewayUrlOrThrow, x as resolveBaseUrl, y as normalizeGatewayBaseUrl, z as toSpaceResultUrl } from "./runtime-config-CPtfyCpL.js";
5
+ import { A as toSpaceCursorUrl, B as toSpaceSignalsUrl, C as resolveDefaultGatewayBaseUrl, D as toDaemonRouteObservationUrl, E as toClaimExecutionDiagnosticsUrl, F as toSpaceMembersUrl, H as toSpaceWsUrl, I as toSpaceMetaUrl, L as toSpacePasswordUrl, M as toSpaceDispatchLookupUrl, N as toSpaceDispatchTraceUrl, O as toSpaceContractUrl, P as toSpaceLeaveUrl, R as toSpaceRemoveMembersUrl, S as resolveBaseUrlOrNull, T as normalizeBaseUrl, V as toSpaceUpdatesUrl, _ as updateConfiguredStartV1OnboardingState, a as getConfiguredDeviceRuntimeState, b as normalizeGatewayBaseUrlOrNull, c as getConfiguredStartV1OnboardingState, d as resolveRuntimeSkillsCustomTargetId, f as setConfiguredBaseUrl, g as updateConfiguredSkillsConfig, h as updateConfiguredOnboardingConfig, i as getConfiguredDaemonDispatchLimits, j as toSpaceDeleteUrl, k as toSpaceCreateUrl, l as getConfiguredViewCustomization, m as updateConfiguredDeviceRuntimeState, n as alignRuntimeConfigStorage, o as getConfiguredOnboardingDisclaimerAcceptedAt, p as setConfiguredSkillsConfig, r as createDefaultRuntimeAgentControllerSettings, s as getConfiguredSkillsConfig, t as DEFAULT_RUNTIME_AGENT_TRANSPORT_MODE, u as getRuntimeConfigReadHealth, w as resolveExplicitGatewayUrlOrThrow, x as resolveBaseUrl, y as normalizeGatewayBaseUrl, z as toSpaceResultUrl } from "./runtime-config-JF1fXrHX.js";
6
6
  import { createRequire } from "node:module";
7
7
  import { Command, Option } from "commander";
8
8
  import { accessSync, appendFileSync, chmodSync, constants, existsSync, mkdirSync, readFileSync, realpathSync, statSync, writeFileSync } from "node:fs";
@@ -27,12 +27,12 @@ import wrapAnsi from "wrap-ansi";
27
27
  import { Box, Container, Editor, Key, ProcessTerminal, TUI, Text, getEditorKeybindings, matchesKey } from "@mariozechner/pi-tui";
28
28
 
29
29
  //#region package.json
30
- var version = "0.4.3";
30
+ var version = "0.4.4";
31
31
  var package_default = {
32
32
  $schema: "https://www.schemastore.org/package.json",
33
33
  name: "agent-transport-system",
34
34
  version,
35
- atsReleaseDate: "2026-05-09",
35
+ atsReleaseDate: "2026-05-11",
36
36
  description: "Agent Transport System CLI - https://ats.sh",
37
37
  license: "MIT",
38
38
  type: "module",
@@ -4013,7 +4013,7 @@ async function setDaemonServiceRuntimeState(state, pathInput = {}) {
4013
4013
  await writeDaemonServiceRuntimeState(state, pathInput);
4014
4014
  }
4015
4015
  async function clearDaemonServiceRuntimeState(pathInput = {}) {
4016
- const { clearDaemonRuntimeLease } = await import("./daemon-runtime-lease-Bs_rD8WX.js");
4016
+ const { clearDaemonRuntimeLease } = await import("./daemon-runtime-lease-BCpF6ncF.js");
4017
4017
  await Promise.all([rm(daemonServiceRuntimeStatePath(pathInput), { force: true }), clearDaemonRuntimeLease(pathInput)]);
4018
4018
  }
4019
4019
  async function withDaemonServiceRunLock(callback, meta = {
@@ -24246,6 +24246,17 @@ function resolveWakeAvailability(input) {
24246
24246
  reasonText: null
24247
24247
  };
24248
24248
  if (!input.agentMember) throw new Error("Agent Space Message Addressing target is missing.");
24249
+ const readiness = input.agentMember.agentExecutionReadiness ?? null;
24250
+ if (readiness) {
24251
+ const ready = readiness.displayState === "ready";
24252
+ return {
24253
+ daemonRouteObservation: input.agentMember.daemonRouteObservation,
24254
+ status: ready ? "ready" : "blocked",
24255
+ wakeState: ready ? "wakeable" : "offline",
24256
+ reasonCodes: [...readiness.reasonCodes],
24257
+ reasonText: formatAgentExecutionReadinessReason(readiness)
24258
+ };
24259
+ }
24249
24260
  return {
24250
24261
  daemonRouteObservation: input.agentMember.daemonRouteObservation,
24251
24262
  status: input.agentMember.wakeability.status,
@@ -24254,6 +24265,14 @@ function resolveWakeAvailability(input) {
24254
24265
  reasonText: normalizeOptionalText$5$1(input.agentMember.wakeability.reasonText)
24255
24266
  };
24256
24267
  }
24268
+ function formatAgentExecutionReadinessReason(readiness) {
24269
+ if (readiness.displayState === "ready") return "This agent can reply in this space.";
24270
+ if (readiness.facts.claim.executionBlocked) return "ATS cannot safely send work to this agent yet.";
24271
+ if (!readiness.facts.binding.routable) return "This agent is not connected to a local agent yet.";
24272
+ if (!readiness.facts.runtime.ready) return "ATS needs current local agent readiness from this computer.";
24273
+ if (!readiness.facts.route.online) return "ATS cannot see this agent's local connection right now.";
24274
+ return "This agent is not ready to reply yet.";
24275
+ }
24257
24276
  function buildActiveSpaceMemberInputs(snapshot) {
24258
24277
  return [...snapshot.agents.map((member) => ({
24259
24278
  expectedProfileKind: "agent",
@@ -24369,6 +24388,52 @@ function normalizeOptionalText$5$1(value) {
24369
24388
  const normalized = String(value ?? "").trim();
24370
24389
  return normalized.length > 0 ? normalized : null;
24371
24390
  }
24391
+ function formatBlockedWakeAvailabilityLabel(wakeAvailability) {
24392
+ const reason = resolveBlockedWakeAvailabilityReason(wakeAvailability);
24393
+ return reason ? `Unavailable now: ${reason}` : "Unavailable now";
24394
+ }
24395
+ function formatBlockedWakeSubmissionMessage(input) {
24396
+ const reason = resolveBlockedWakeAvailabilityReason(input.wakeAvailability, { preferReasonText: true });
24397
+ if (!reason) return `"${input.profileName}" cannot reply yet. Review this computer from Members or Agents, then try again.`;
24398
+ return `"${input.profileName}" cannot reply yet: ${formatSentence(reason)}`;
24399
+ }
24400
+ function resolveBlockedWakeAvailabilityReason(wakeAvailability, options = {}) {
24401
+ if (wakeAvailability.status !== "blocked") return null;
24402
+ const reasonText = normalizeReasonText(wakeAvailability.reasonText);
24403
+ if (options.preferReasonText && reasonText) return reasonText;
24404
+ switch (wakeAvailability.reasonCodes[0]) {
24405
+ case "profile.unbound": return "Not connected to a local agent on this device yet";
24406
+ case "agent_profile_binding.missing":
24407
+ case "claim_eligibility.binding_missing": return "This agent is not connected to a local agent yet";
24408
+ case "claim_eligibility.binding_runtime_mismatch":
24409
+ case "claim_eligibility.runtime_id_mismatch": return "This agent is connected to an older computer setup";
24410
+ case "claim_eligibility.binding_capability_mismatch": return "This agent is connected to a different local agent setup";
24411
+ case "claim_eligibility.binding_owner_mismatch":
24412
+ case "claim_eligibility.owner_mismatch": return "This agent is connected to a different ATS account";
24413
+ case "controller.binding.disabled": return "Turned off on this device";
24414
+ case "controller.registry.disabled": return "Turned off in ATS on this device";
24415
+ case "controller.launch.choice_required": return "Needs an install choice on this device";
24416
+ case "controller.launch.needs_repair": return "Needs repair on this device";
24417
+ case "workspace.missing": return "Missing its local workspace on this device";
24418
+ case "workspace.invalid": return "Local workspace is broken on this device";
24419
+ case "service.not_installed": return "ATS Service is not installed on this device";
24420
+ case "service.not_running": return "ATS Service is not running on this device";
24421
+ case "projection.missing": return "ATS is still setting up this device";
24422
+ case "route.offline": return "Offline from this device right now";
24423
+ case "route.not_registered": return "Still setting up replies on this device";
24424
+ default: return reasonText;
24425
+ }
24426
+ }
24427
+ function formatSentence(value) {
24428
+ const normalized = normalizeReasonText(value);
24429
+ if (!normalized) return "Review this computer from Members or Agents, then try again.";
24430
+ return `${normalized}.`;
24431
+ }
24432
+ function normalizeReasonText(value) {
24433
+ const normalized = String(value ?? "").trim();
24434
+ if (!normalized) return null;
24435
+ return normalized.endsWith(".") ? normalized.slice(0, Math.max(0, normalized.length - 1)) : normalized;
24436
+ }
24372
24437
  const CANONICAL_MENTION_TYPES = new Set(MESSAGE_MENTION_TYPE_VALUES);
24373
24438
  const DUPLICATE_TARGET_ISSUE_PATTERN = /^(activationTargets|referenceTargets|ccTargets) must not contain duplicate profileId$/u;
24374
24439
  const DISTINCT_TARGET_ISSUE_PATTERN = /^(activationTargets|referenceTargets|ccTargets) must not reuse profileId from (activationTargets|referenceTargets|ccTargets)$/u;
@@ -24420,7 +24485,10 @@ function prepareSpaceComposerSubmission(input) {
24420
24485
  mentionText: fragment.text,
24421
24486
  relation: parsedLiteral.type
24422
24487
  }));
24423
- if (parsedLiteral.type === "wake" && target.wakeAvailability.status === "blocked") throw createSubmissionError("addressing.wake_blocked", buildBlockedWakeCanonicalMentionMessage({ profileName: target.profileName }));
24488
+ if (parsedLiteral.type === "wake" && target.wakeAvailability.status === "blocked") throw createSubmissionError("addressing.wake_blocked", formatBlockedWakeSubmissionMessage({
24489
+ profileName: target.profileName,
24490
+ wakeAvailability: target.wakeAvailability
24491
+ }));
24424
24492
  envelopeInput[resolveMessageEnvelopeTargetField(parsedLiteral.type)].push(target.profileId);
24425
24493
  profileIdsInTextOrder.push(target.profileId);
24426
24494
  canonicalMentionsInTextOrder.push({
@@ -24541,9 +24609,6 @@ function describeRelationSupport(relation) {
24541
24609
  if (relation === "wake") return "agent targets";
24542
24610
  return "active targets";
24543
24611
  }
24544
- function buildBlockedWakeCanonicalMentionMessage(input) {
24545
- return `"${input.profileName}" is not ready for Wake yet. Finish local agent setup first.`;
24546
- }
24547
24612
  function formatCanonicalMentionEnvelopeError(error) {
24548
24613
  const issues = extractEnvelopeIssueMessages(error);
24549
24614
  for (const issueMessage of issues) {
@@ -24730,10 +24795,6 @@ function listSpaceMentionRelationChoices(input) {
24730
24795
  }
24731
24796
  return choices;
24732
24797
  }
24733
- function formatBlockedWakeAvailabilityLabel(wakeAvailability) {
24734
- const reason = resolveBlockedWakeAvailabilityReason(wakeAvailability);
24735
- return reason ? `Unavailable now: ${reason}` : "Unavailable now";
24736
- }
24737
24798
  function normalizeRecentMentionProfileIds(input) {
24738
24799
  const maxRecentProfileIds = resolveMaxRecentProfileIds(input.maxRecentProfileIds);
24739
24800
  const allowedProfileIds = toAllowedProfileIdSet(input.allowedProfileIds);
@@ -24852,29 +24913,6 @@ function normalizeSearchTerm(value) {
24852
24913
  function areCaseInsensitiveMatches$1(left, right) {
24853
24914
  return left.localeCompare(right, "en", { sensitivity: "accent" }) === 0;
24854
24915
  }
24855
- function resolveBlockedWakeAvailabilityReason(wakeAvailability) {
24856
- if (wakeAvailability.status !== "blocked") return null;
24857
- switch (wakeAvailability.reasonCodes[0]) {
24858
- case "profile.unbound": return "Not connected to a local agent on this device yet";
24859
- case "controller.binding.disabled": return "Turned off on this device";
24860
- case "controller.registry.disabled": return "Turned off in ATS on this device";
24861
- case "controller.launch.choice_required": return "Needs an install choice on this device";
24862
- case "controller.launch.needs_repair": return "Needs repair on this device";
24863
- case "workspace.missing": return "Missing its local workspace on this device";
24864
- case "workspace.invalid": return "Local workspace is broken on this device";
24865
- case "service.not_installed": return "ATS Service is not installed on this device";
24866
- case "service.not_running": return "ATS Service is not running on this device";
24867
- case "projection.missing": return "ATS is still setting up this device";
24868
- case "route.offline": return "Offline from this device right now";
24869
- case "route.not_registered": return "Still setting up replies on this device";
24870
- default: return normalizeReasonText(wakeAvailability.reasonText);
24871
- }
24872
- }
24873
- function normalizeReasonText(value) {
24874
- const normalized = String(value ?? "").trim();
24875
- if (!normalized) return null;
24876
- return normalized.endsWith(".") ? normalized.slice(0, Math.max(0, normalized.length - 1)) : normalized;
24877
- }
24878
24916
  function resolveRecentMentionProfileIdsFromCanonicalMentions(canonicalMentionsInTextOrder) {
24879
24917
  if (!(canonicalMentionsInTextOrder && canonicalMentionsInTextOrder.length > 0)) return [];
24880
24918
  return canonicalMentionsInTextOrder.toReversed().map((mention) => mention.profileId);
@@ -24902,6 +24940,28 @@ function spaceTextHasOneShotMentionAttempts(text) {
24902
24940
  return spaceTextHasCanonicalMentionAttempts(text);
24903
24941
  }
24904
24942
  function buildSpaceMemberAgentPresencePresentation(member) {
24943
+ const readiness = member.agentExecutionReadiness ?? null;
24944
+ if (readiness) {
24945
+ if (readiness.displayState === "ready") return member.liveNow ? {
24946
+ detailLabel: "Live agent",
24947
+ shortLabel: "live now",
24948
+ status: "live"
24949
+ } : {
24950
+ detailLabel: "Wakeable agent",
24951
+ shortLabel: "wakeable",
24952
+ status: "wakeable"
24953
+ };
24954
+ if (hasUnavailableRoute(readiness.facts.route.reasonCodes)) return {
24955
+ detailLabel: "Daemon route unavailable",
24956
+ shortLabel: "daemon route unavailable",
24957
+ status: "unavailable"
24958
+ };
24959
+ return {
24960
+ detailLabel: "Offline agent",
24961
+ shortLabel: "offline",
24962
+ status: "offline"
24963
+ };
24964
+ }
24905
24965
  if (member.liveNow) return {
24906
24966
  detailLabel: "Live agent",
24907
24967
  shortLabel: "live now",
@@ -24923,6 +24983,9 @@ function buildSpaceMemberAgentPresencePresentation(member) {
24923
24983
  status: "offline"
24924
24984
  };
24925
24985
  }
24986
+ function hasUnavailableRoute(reasonCodes) {
24987
+ return reasonCodes.some((reasonCode) => reasonCode === "route.unavailable" || reasonCode === "agent_execution.route_unavailable");
24988
+ }
24926
24989
  function createSpaceMemberIdentityIndex(input) {
24927
24990
  const byProfileId = /* @__PURE__ */ new Map();
24928
24991
  for (const signal of input.signals ?? []) registerSignalIdentity(byProfileId, signal);
@@ -26817,24 +26880,36 @@ function resolveAgentExecutionStatus(input) {
26817
26880
  });
26818
26881
  const runtime = resolveRuntimeFact(input.runtimeReadiness);
26819
26882
  const claim = resolveClaimFact(input.claimDiagnostics);
26883
+ const route = resolveRouteFact(input.route);
26820
26884
  const reasonCodes = uniqueReasonCodes$2([
26821
26885
  ...binding.reasonCodes,
26822
26886
  ...runtime.reasonCodes,
26823
- ...claim.reasonCodes
26887
+ ...claim.reasonCodes,
26888
+ ...route.reasonCodes
26824
26889
  ]);
26890
+ const displayState = resolveDisplayState({
26891
+ bindingBlocked: binding.source === "blocked",
26892
+ bindingRoutable: binding.routable,
26893
+ claimBlocked: claim.executionBlocked,
26894
+ routeOnline: route.online,
26895
+ runtimeReady: runtime.ready
26896
+ });
26825
26897
  return {
26826
26898
  agentProfileId: input.agentProfileId,
26827
- displayState: resolveDisplayState({
26828
- bindingBlocked: binding.source === "blocked",
26829
- bindingRoutable: binding.routable,
26830
- claimBlocked: claim.executionBlocked,
26831
- runtimeReady: runtime.ready
26832
- }),
26899
+ displayState,
26833
26900
  facts: {
26834
26901
  binding,
26835
26902
  claim,
26903
+ route,
26836
26904
  runtime
26837
26905
  },
26906
+ primaryAction: resolvePrimaryAction({
26907
+ binding,
26908
+ claim,
26909
+ displayState,
26910
+ route,
26911
+ runtime
26912
+ }),
26838
26913
  reasonCodes
26839
26914
  };
26840
26915
  }
@@ -26901,11 +26976,42 @@ function resolveClaimFact(claimDiagnostics) {
26901
26976
  source: "claim_diagnostics"
26902
26977
  };
26903
26978
  }
26979
+ function resolveRouteFact(route) {
26980
+ if (!route) return {
26981
+ deviceId: null,
26982
+ observedAt: null,
26983
+ online: false,
26984
+ reasonCodes: ["agent_execution.route_missing"],
26985
+ source: "missing"
26986
+ };
26987
+ if (route.status === "online") return {
26988
+ deviceId: route.deviceId?.trim() || null,
26989
+ observedAt: route.observedAt?.trim() || null,
26990
+ online: true,
26991
+ reasonCodes: route.reasonCodes ?? [],
26992
+ source: "daemon_route"
26993
+ };
26994
+ return {
26995
+ deviceId: route.deviceId?.trim() || null,
26996
+ observedAt: route.observedAt?.trim() || null,
26997
+ online: false,
26998
+ reasonCodes: route.reasonCodes,
26999
+ source: "daemon_route"
27000
+ };
27001
+ }
26904
27002
  function resolveDisplayState(input) {
26905
27003
  if (input.claimBlocked || input.bindingBlocked) return "blocked";
26906
- if (input.bindingRoutable && input.runtimeReady) return "ready";
27004
+ if (input.bindingRoutable && input.runtimeReady && input.routeOnline) return "ready";
26907
27005
  return "not_ready";
26908
27006
  }
27007
+ function resolvePrimaryAction(input) {
27008
+ if (input.displayState === "ready") return "none";
27009
+ if (input.claim.executionBlocked) return "check_status";
27010
+ if (!input.binding.routable) return input.binding.source === "unavailable" ? "check_status" : "reconnect_binding";
27011
+ if (!input.runtime.ready) return "run_prepare";
27012
+ if (!input.route.online) return "check_status";
27013
+ return "check_status";
27014
+ }
26909
27015
  function uniqueReasonCodes$2(reasonCodes) {
26910
27016
  return [...new Set(reasonCodes.filter((reasonCode) => reasonCode.trim()))];
26911
27017
  }
@@ -26923,6 +27029,10 @@ function createAgentExecutionStatusDisplayRows(projection) {
26923
27029
  label: "Runtime Evidence",
26924
27030
  value: formatRuntimeEvidence(projection)
26925
27031
  },
27032
+ {
27033
+ label: "Route Evidence",
27034
+ value: formatRouteEvidence(projection)
27035
+ },
26926
27036
  {
26927
27037
  label: "Claim Evidence",
26928
27038
  value: formatClaimEvidence(projection)
@@ -26931,7 +27041,7 @@ function createAgentExecutionStatusDisplayRows(projection) {
26931
27041
  }
26932
27042
  function formatAgentExecutionStatus(projection) {
26933
27043
  switch (projection.displayState) {
26934
- case "ready": return "Ready · Binding truth and Runtime readiness are ready.";
27044
+ case "ready": return "Ready · Binding truth, Runtime readiness, and route are ready.";
26935
27045
  case "blocked": return `Blocked · ${formatBlockingReason(projection)}`;
26936
27046
  case "not_ready": return `Not ready · ${formatNotReadyReason(projection)}`;
26937
27047
  case "unknown": return "Unknown";
@@ -26956,6 +27066,11 @@ function formatRuntimeEvidence(projection) {
26956
27066
  if (projection.facts.runtime.reasonCodes.includes("prepare_readiness.read_failed")) return `Prepare readiness · unavailable · ${formatPrimaryReason(projection.facts.runtime.reasonCodes)}`;
26957
27067
  return `Prepare readiness · not ready · ${formatPrimaryReason(projection.facts.runtime.reasonCodes)}`;
26958
27068
  }
27069
+ function formatRouteEvidence(projection) {
27070
+ if (projection.facts.route.online) return "Daemon route · online";
27071
+ if (projection.facts.route.source === "missing") return "Missing";
27072
+ return `Daemon route · not online · ${formatPrimaryReason(projection.facts.route.reasonCodes)}`;
27073
+ }
26959
27074
  function formatClaimEvidence(projection) {
26960
27075
  if (projection.facts.claim.source === "not_checked") return "Not checked";
26961
27076
  if (projection.facts.claim.executionBlocked) return `Blocked · ${formatPrimaryReason(projection.facts.claim.reasonCodes)}`;
@@ -26969,10 +27084,14 @@ function formatPrimaryReason(reasonCodes) {
26969
27084
  function formatNotReadyReason(projection) {
26970
27085
  if (!projection.facts.binding.routable) return formatPrimaryReason(projection.facts.binding.reasonCodes);
26971
27086
  if (!projection.facts.runtime.ready) return formatPrimaryReason(projection.facts.runtime.reasonCodes);
27087
+ if (!projection.facts.route.online) return formatPrimaryReason(projection.facts.route.reasonCodes);
26972
27088
  return formatPrimaryReason(projection.reasonCodes);
26973
27089
  }
26974
27090
  const REASON_TEXT = {
26975
27091
  "agent_execution.binding_agent_profile_mismatch": "Binding belongs to a different agent profile.",
27092
+ "agent_execution.route_missing": "Daemon route is missing.",
27093
+ "agent_execution.route_offline": "Daemon route is offline.",
27094
+ "agent_execution.route_unavailable": "Daemon route is unavailable.",
26976
27095
  "agent_profile_binding.missing": "Binding is missing.",
26977
27096
  "agent_profile_binding.read_unavailable": "Binding evidence is unavailable.",
26978
27097
  "claim_execution_diagnostics.lease_missing": "claim lease evidence is missing.",
@@ -27180,6 +27299,14 @@ function buildLegacyDefaultMentionAliasSeed(input) {
27180
27299
  function buildAgentProfilePrimaryBindingRoute(agentProfileId) {
27181
27300
  return `/v1/agent-profiles/${encodeURIComponent(agentProfileId)}/primary-binding`;
27182
27301
  }
27302
+ function buildAgentExecutionReadinessRoute(agentProfileId) {
27303
+ return `/v1/agent-profiles/${encodeURIComponent(agentProfileId)}/execution-readiness`;
27304
+ }
27305
+ function buildAgentExecutionReadinessBatchRoute() {
27306
+ return "/v1/agent-profiles/execution-readiness/batch";
27307
+ }
27308
+ const getAgentExecutionReadinessInputSchema = agentExecutionReadinessRouteParamsSchema.extend({ requestContext: atsRequestContextSchema.optional() });
27309
+ const getAgentExecutionReadinessBatchInputSchema = getAgentExecutionReadinessBatchBodySchema.extend({ requestContext: atsRequestContextSchema.optional() });
27183
27310
  const ensureAgentProfilePrimaryBindingInputSchema = agentProfileBindingRouteParamsSchema.merge(ensureAgentProfilePrimaryBindingBodySchema).extend({ requestContext: atsRequestContextSchema.optional() });
27184
27311
  function requireValidBindingCommandBody(input) {
27185
27312
  const parsed = ensureAgentProfilePrimaryBindingInputSchema.safeParse(input);
@@ -27187,8 +27314,42 @@ function requireValidBindingCommandBody(input) {
27187
27314
  const { agentProfileId: _agentProfileId, requestContext: _requestContext, ...body } = parsed.data;
27188
27315
  return body;
27189
27316
  }
27317
+ function requireValidExecutionReadinessInput(input) {
27318
+ const parsed = getAgentExecutionReadinessInputSchema.safeParse(input);
27319
+ if (!parsed.success) throw new Error(parsed.error.issues[0]?.message ?? "Invalid Agent Execution Readiness request.");
27320
+ return parsed.data;
27321
+ }
27322
+ function requireValidExecutionReadinessBatchInput(input) {
27323
+ const parsed = getAgentExecutionReadinessBatchInputSchema.safeParse(input);
27324
+ if (!parsed.success) throw new Error(parsed.error.issues[0]?.message ?? "Invalid Agent Execution Readiness batch request.");
27325
+ return parsed.data;
27326
+ }
27190
27327
  const createAgentProfileBindingApi = (client) => {
27191
27328
  return {
27329
+ getExecutionReadiness: async (input) => {
27330
+ const request = requireValidExecutionReadinessInput(input);
27331
+ return await client.requestJson({
27332
+ invalidMessage: "Invalid Agent Execution Readiness response.",
27333
+ method: "GET",
27334
+ operation: "agent_execution_readiness.read",
27335
+ requestContext: request.requestContext,
27336
+ schema: getAgentExecutionReadinessResponseSchema,
27337
+ url: buildAgentExecutionReadinessRoute(request.agentProfileId)
27338
+ });
27339
+ },
27340
+ getExecutionReadinessBatch: async (input) => {
27341
+ const request = requireValidExecutionReadinessBatchInput(input);
27342
+ return await client.requestJson({
27343
+ body: JSON.stringify({ agentProfileIds: request.agentProfileIds }),
27344
+ headers: { "content-type": "application/json" },
27345
+ invalidMessage: "Invalid Agent Execution Readiness batch response.",
27346
+ method: "POST",
27347
+ operation: "agent_execution_readiness.batch_read",
27348
+ requestContext: request.requestContext,
27349
+ schema: getAgentExecutionReadinessBatchResponseSchema,
27350
+ url: buildAgentExecutionReadinessBatchRoute()
27351
+ });
27352
+ },
27192
27353
  getPrimaryBinding: async (input) => await client.requestJson({
27193
27354
  invalidMessage: "Invalid Agent Profile Binding response.",
27194
27355
  method: "GET",
@@ -32365,24 +32526,12 @@ const LIVE_RESUME_PROBE_PROMPT = "ATS resume probe. Reply with one short confirm
32365
32526
 
32366
32527
  //#endregion
32367
32528
  //#region ../../packages/space-mesh/dist/index.js
32368
- const CODEX_UPGRADE_REQUIRED_REASON = "Codex on this device is too old for the current model. Upgrade Codex on this device, then try again.";
32369
32529
  function resolvePublicAgentFailureReason(input) {
32370
32530
  const errorCode = normalizeOptionalText$2$1(input.errorCode)?.toLowerCase();
32371
32531
  const detailedReason = resolveDetailedPublicAgentFailureReason(input.errorMessage);
32372
32532
  if (detailedReason) return detailedReason;
32373
32533
  if (!errorCode) return normalizeOptionalText$2$1(input.defaultReason);
32374
- if (errorCode.includes("claim_eligibility.binding_missing") || errorCode.includes("dispatch.claim_eligibility.binding.missing")) return "This agent needs setup before it can reply.";
32375
- if (errorCode.includes("controller.launch.choice_required") || errorCode.includes("launch choice")) return "ATS found more than one working install for this agent on this device. Choose which one ATS should use here, then try again.";
32376
- if (errorCode.includes("profile.workspace.missing")) return "This agent is missing its local workspace on this device. Run `ats doctor --repair`, then `ats agents prepare --profile <agent-profile-id>`, and try again.";
32377
- if (errorCode.includes("profile.workspace.invalid")) return "This agent's local workspace is broken on this device. Run `ats doctor --repair`, then `ats agents prepare --profile <agent-profile-id>`, and try again.";
32378
- if (errorCode.includes("auth") || errorCode.includes("credential") || errorCode.includes("login")) return "Authentication failed.";
32379
- if (errorCode.includes("model.unsupported") || errorCode.includes("unsupported_model")) return "The current model is not available for this agent's account.";
32380
- if (errorCode.includes("controller.client.upgrade_required")) return CODEX_UPGRADE_REQUIRED_REASON;
32381
- if (errorCode.includes("rate") || errorCode.includes("quota")) return "The agent hit a rate limit.";
32382
- if (errorCode.includes("permission") || errorCode.includes("forbidden") || errorCode.includes("unauthorized")) return "The agent does not have permission to reply here.";
32383
- if (errorCode.includes("controller.launch.needs_repair")) return "ATS could not start this agent on this device. Repair it on this device, then try again.";
32384
- if (errorCode.includes("timeout") || errorCode.includes("network") || errorCode.includes("unavailable") || errorCode.includes("provider") || errorCode.includes("upstream")) return "The agent could not complete this reply right now.";
32385
- return normalizeOptionalText$2$1(input.defaultReason);
32534
+ return resolveMappedPublicAgentFailureReason(input.errorCode) ?? normalizeOptionalText$2$1(input.defaultReason);
32386
32535
  }
32387
32536
  function resolveDetailedPublicAgentFailureReason(errorMessage) {
32388
32537
  const normalizedMessage = normalizeProviderFailureMessage(errorMessage);
@@ -61490,6 +61639,7 @@ function buildServiceTraceAgentExecutionStatus(input) {
61490
61639
  agentProfileId: input.agentProfileId,
61491
61640
  binding: normalizeBindingProjection(input.binding),
61492
61641
  claimDiagnostics: normalizeClaimDiagnostics(input.claimDiagnostics),
61642
+ route: input.route ?? null,
61493
61643
  runtimeReadiness: normalizePrepareReadiness(input.prepareReadiness)
61494
61644
  });
61495
61645
  }