openmeld 0.3.216 → 0.3.218

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.
Files changed (130) hide show
  1. package/LICENSE +21 -0
  2. package/dist/{add-me-membership-CxgkT6ht.js → add-me-membership-CY6oMdtz.js} +2 -2
  3. package/dist/{add-me-membership-CxgkT6ht.js.map → add-me-membership-CY6oMdtz.js.map} +1 -1
  4. package/dist/{agents-B_qjzGkQ.js → agents-CzSR8rmW.js} +10 -10
  5. package/dist/{agents-B_qjzGkQ.js.map → agents-CzSR8rmW.js.map} +1 -1
  6. package/dist/{api-client-foundation-XILCNkrF.js → api-client-foundation-BOBrz3Lx.js} +3 -3
  7. package/dist/{api-client-foundation-XILCNkrF.js.map → api-client-foundation-BOBrz3Lx.js.map} +1 -1
  8. package/dist/{api-client-foundation-DdtV7aF-.js → api-client-foundation-D1M0bkwm.js} +1 -1
  9. package/dist/{auth-session-B9Whm1hq.js → auth-session-BAq7KkIa.js} +22 -6
  10. package/dist/auth-session-BAq7KkIa.js.map +1 -0
  11. package/dist/auth-session-D-HTJNKZ.js +4 -0
  12. package/dist/{base-url-CiSsUvmr.js → base-url-CMBApK1J.js} +1 -1
  13. package/dist/{base-url-jdL78gyl.js → base-url-D7uE_xTo.js} +2 -2
  14. package/dist/{base-url-jdL78gyl.js.map → base-url-D7uE_xTo.js.map} +1 -1
  15. package/dist/{channel-CKmbucdt.js → channel-DAZr7cKE.js} +4 -4
  16. package/dist/{channel-CKmbucdt.js.map → channel-DAZr7cKE.js.map} +1 -1
  17. package/dist/{cli-space-api-DlDztj9O.js → cli-space-api-Ccr8COpr.js} +6 -6
  18. package/dist/{cli-space-api-DlDztj9O.js.map → cli-space-api-Ccr8COpr.js.map} +1 -1
  19. package/dist/{command-Cbp4ZeZs.js → command-tsXWNPpM.js} +28 -23
  20. package/dist/command-tsXWNPpM.js.map +1 -0
  21. package/dist/{computer-connection-CVE1MAqF.js → computer-connection-BK9TsQjc.js} +2 -2
  22. package/dist/{computer-connection-CVE1MAqF.js.map → computer-connection-BK9TsQjc.js.map} +1 -1
  23. package/dist/{computer-connection-review-CfFmjZLP.js → computer-connection-review-jPtrO484.js} +5 -5
  24. package/dist/{computer-connection-review-CfFmjZLP.js.map → computer-connection-review-jPtrO484.js.map} +1 -1
  25. package/dist/{computer-disconnect-B5nMRe9T.js → computer-disconnect-DzvN_Cbv.js} +7 -7
  26. package/dist/{computer-disconnect-B5nMRe9T.js.map → computer-disconnect-DzvN_Cbv.js.map} +1 -1
  27. package/dist/{computer-setup-continuation-Bd3BIgdU.js → computer-setup-continuation-bJzZPnNU.js} +3 -3
  28. package/dist/{computer-setup-continuation-Bd3BIgdU.js.map → computer-setup-continuation-bJzZPnNU.js.map} +1 -1
  29. package/dist/{context-Cz5nJnDe.js → context-DN_LvdgC.js} +5 -5
  30. package/dist/{context-Cz5nJnDe.js.map → context-DN_LvdgC.js.map} +1 -1
  31. package/dist/{control-plane-DKPz7DMv.js → control-plane-BDS63N7Y.js} +2 -2
  32. package/dist/{control-plane-DKPz7DMv.js.map → control-plane-BDS63N7Y.js.map} +1 -1
  33. package/dist/{controller-contract-pe3_Re-c.js → controller-contract-DAOCaefz.js} +9 -1
  34. package/dist/controller-contract-DAOCaefz.js.map +1 -0
  35. package/dist/{daemon-device-id-KgO7zcEr.js → daemon-device-id-bP58j3NL.js} +8 -8
  36. package/dist/{daemon-device-id-KgO7zcEr.js.map → daemon-device-id-bP58j3NL.js.map} +1 -1
  37. package/dist/{daemon-frame-transport-DUDAgNbO.js → daemon-frame-transport-DFfxVRi2.js} +36 -9
  38. package/dist/daemon-frame-transport-DFfxVRi2.js.map +1 -0
  39. package/dist/{daemon-lifecycle-journal-Bj-fw052.js → daemon-lifecycle-journal-57QR_a3_.js} +9 -9
  40. package/dist/{daemon-lifecycle-journal-Bj-fw052.js.map → daemon-lifecycle-journal-57QR_a3_.js.map} +1 -1
  41. package/dist/{daemon-service-manager-Cq3ANgn8.js → daemon-service-manager-ReGjcyjq.js} +1 -1
  42. package/dist/{daemon-service-manager-CZY8Bin4.js → daemon-service-manager-rNRRVrj1.js} +3 -3
  43. package/dist/{daemon-service-manager-CZY8Bin4.js.map → daemon-service-manager-rNRRVrj1.js.map} +1 -1
  44. package/dist/{daemon-service-runtime-yD-w1dQw.js → daemon-service-runtime-686fUcq9.js} +6 -6
  45. package/dist/{daemon-service-runtime-yD-w1dQw.js.map → daemon-service-runtime-686fUcq9.js.map} +1 -1
  46. package/dist/{daemon-service-update-coordinator-BATuKmZA.js → daemon-service-update-coordinator-DaoVYK6k.js} +21 -17
  47. package/dist/daemon-service-update-coordinator-DaoVYK6k.js.map +1 -0
  48. package/dist/{dist-o3UL1EGQ.js → dist-BLuEEVHh.js} +2 -2
  49. package/dist/dist-BLuEEVHh.js.map +1 -0
  50. package/dist/{dist-DZYJ8yLA.js → dist-C1fbc-VK.js} +1 -1
  51. package/dist/{dist-Ddy96dwl.js → dist-CBWePGgY.js} +3 -3
  52. package/dist/{dist-Ddy96dwl.js.map → dist-CBWePGgY.js.map} +1 -1
  53. package/dist/{dist-CkGG099H.js → dist-CiLvbjZA.js} +7863 -7778
  54. package/dist/dist-CiLvbjZA.js.map +1 -0
  55. package/dist/{elapsed-time-DGQ63StD.js → elapsed-time-DslUBczL.js} +6 -6
  56. package/dist/{elapsed-time-DGQ63StD.js.map → elapsed-time-DslUBczL.js.map} +1 -1
  57. package/dist/{entry-Dhify7h7.js → entry-B3x5OX3x.js} +8 -8
  58. package/dist/{entry-Dhify7h7.js.map → entry-B3x5OX3x.js.map} +1 -1
  59. package/dist/{installation-inventory-BJe8fC9k.js → installation-inventory-BZJmaCVr.js} +4 -4
  60. package/dist/{installation-inventory-BJe8fC9k.js.map → installation-inventory-BZJmaCVr.js.map} +1 -1
  61. package/dist/{installer-CWgaNzfE.js → installer-BRcaSYgu.js} +2 -2
  62. package/dist/{installer-CWgaNzfE.js.map → installer-BRcaSYgu.js.map} +1 -1
  63. package/dist/native/openmeld-keychain.node +0 -0
  64. package/dist/{open-code-permission-Doem1R2N.js → open-code-permission-DHFJYc_o.js} +5 -1
  65. package/dist/open-code-permission-DHFJYc_o.js.map +1 -0
  66. package/dist/{openmeld-koCpjXo7.js → openmeld-Bbffsx9Y.js} +251 -52
  67. package/dist/openmeld-Bbffsx9Y.js.map +1 -0
  68. package/dist/openmeld-dev.js +1 -1
  69. package/dist/{openmeld-environment-target-Dn2rJCa7.js → openmeld-environment-target-B6HqY0_a.js} +2 -2
  70. package/dist/{openmeld-environment-target-Dn2rJCa7.js.map → openmeld-environment-target-B6HqY0_a.js.map} +1 -1
  71. package/dist/{openmeld-maintenance-worker-DdsIYpG-.js → openmeld-maintenance-worker-CDd4d01O.js} +11 -11
  72. package/dist/{openmeld-maintenance-worker-DdsIYpG-.js.map → openmeld-maintenance-worker-CDd4d01O.js.map} +1 -1
  73. package/dist/{openmeld-tools-update-join-Clgm1ix5.js → openmeld-tools-update-join-htb9JVUN.js} +4 -4
  74. package/dist/{openmeld-tools-update-join-Clgm1ix5.js.map → openmeld-tools-update-join-htb9JVUN.js.map} +1 -1
  75. package/dist/{openmeld-tools-update-process-frame-0X-t0Kjv.js → openmeld-tools-update-process-frame-B-XB4dmO.js} +2 -2
  76. package/dist/{openmeld-tools-update-process-frame-0X-t0Kjv.js.map → openmeld-tools-update-process-frame-B-XB4dmO.js.map} +1 -1
  77. package/dist/{openmeld-tools-update-process-frame-DX1Dc8VI.js → openmeld-tools-update-process-frame-j-RXwFsK.js} +1 -1
  78. package/dist/openmeld.js +5 -5
  79. package/dist/{prepare-provider-runtime-CeGzeQbD.js → prepare-provider-runtime-3eIWxGgM.js} +1156 -127
  80. package/dist/prepare-provider-runtime-3eIWxGgM.js.map +1 -0
  81. package/dist/{prepare-session-executor-CsxnDFgS.js → prepare-session-executor-DO2p7uLE.js} +22 -22
  82. package/dist/{prepare-session-executor-CsxnDFgS.js.map → prepare-session-executor-DO2p7uLE.js.map} +1 -1
  83. package/dist/{process-channel-BTxB9zK-.js → process-channel-48ZNmEF6.js} +2 -2
  84. package/dist/{process-channel-BTxB9zK-.js.map → process-channel-48ZNmEF6.js.map} +1 -1
  85. package/dist/{runtime-CesmzZ2L.js → runtime-C49hR7fG.js} +145 -24
  86. package/dist/runtime-C49hR7fG.js.map +1 -0
  87. package/dist/{runtime-agent-controller-reporting-submission-B6cDV_zW.js → runtime-agent-controller-reporting-submission-BJuVnZqs.js} +59 -9
  88. package/dist/runtime-agent-controller-reporting-submission-BJuVnZqs.js.map +1 -0
  89. package/dist/{runtime-reporting-health-state-Cjavvccq.js → runtime-reporting-health-state-4Y-fo13l.js} +9 -36
  90. package/dist/runtime-reporting-health-state-4Y-fo13l.js.map +1 -0
  91. package/dist/{runtime-transport-CVtBXzIp.js → runtime-transport-KEwcSZ89.js} +125 -11
  92. package/dist/runtime-transport-KEwcSZ89.js.map +1 -0
  93. package/dist/{service-Cgat7nEE.js → service-BlcIfxYE.js} +49 -28
  94. package/dist/service-BlcIfxYE.js.map +1 -0
  95. package/dist/{service-account-authorization-Ct0OZwbr.js → service-account-authorization-A5Ly0UFD.js} +3 -3
  96. package/dist/{service-account-authorization-Ct0OZwbr.js.map → service-account-authorization-A5Ly0UFD.js.map} +1 -1
  97. package/dist/{service-account-control-DefN0EOY.js → service-account-control-DCz_pwrV.js} +10 -10
  98. package/dist/{service-account-control-DefN0EOY.js.map → service-account-control-DCz_pwrV.js.map} +1 -1
  99. package/dist/{service-control-capabilities-m7mmxVOi.js → service-control-capabilities-BPL-T8xI.js} +1 -1
  100. package/dist/{service-control-capabilities-BsCCHsUg.js → service-control-capabilities-plI5rUzP.js} +4 -4
  101. package/dist/{service-control-capabilities-BsCCHsUg.js.map → service-control-capabilities-plI5rUzP.js.map} +1 -1
  102. package/dist/{state-C2ztY4iq.js → state-Dj3YS3aV.js} +2 -2
  103. package/dist/{state-C2ztY4iq.js.map → state-Dj3YS3aV.js.map} +1 -1
  104. package/dist/{upgrade-O_blyOta.js → upgrade-CRKSer_1.js} +15 -8
  105. package/dist/upgrade-CRKSer_1.js.map +1 -0
  106. package/dist/upgrade-DdetA0-U.js +4 -0
  107. package/dist/{windows-user-task-CSJpDs-S.js → windows-user-task-D4uMvea3.js} +84 -3
  108. package/dist/windows-user-task-D4uMvea3.js.map +1 -0
  109. package/dist/{windows-user-task-CWDzkJCq.js → windows-user-task-hNE24Gqr.js} +1 -1
  110. package/package.json +41 -42
  111. package/skills/openmeld-cli/playbooks/agent-onboarding.md +15 -0
  112. package/dist/auth-session-B9Whm1hq.js.map +0 -1
  113. package/dist/auth-session-DXKHtGTr.js +0 -4
  114. package/dist/command-Cbp4ZeZs.js.map +0 -1
  115. package/dist/controller-contract-pe3_Re-c.js.map +0 -1
  116. package/dist/daemon-frame-transport-DUDAgNbO.js.map +0 -1
  117. package/dist/daemon-service-update-coordinator-BATuKmZA.js.map +0 -1
  118. package/dist/dist-CkGG099H.js.map +0 -1
  119. package/dist/dist-o3UL1EGQ.js.map +0 -1
  120. package/dist/open-code-permission-Doem1R2N.js.map +0 -1
  121. package/dist/openmeld-koCpjXo7.js.map +0 -1
  122. package/dist/prepare-provider-runtime-CeGzeQbD.js.map +0 -1
  123. package/dist/runtime-CesmzZ2L.js.map +0 -1
  124. package/dist/runtime-agent-controller-reporting-submission-B6cDV_zW.js.map +0 -1
  125. package/dist/runtime-reporting-health-state-Cjavvccq.js.map +0 -1
  126. package/dist/runtime-transport-CVtBXzIp.js.map +0 -1
  127. package/dist/service-Cgat7nEE.js.map +0 -1
  128. package/dist/upgrade-O_blyOta.js.map +0 -1
  129. package/dist/upgrade-axb9z2uy.js +0 -4
  130. package/dist/windows-user-task-CSJpDs-S.js.map +0 -1
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  import { J as normalizeOpenMeldProfileId, L as deviceOpenClawProfileBootstrapPath, P as accountProfileWorkspacePath, R as deviceOpenClawProfileDir, W as isPublishedOpenMeldHome, a as isOpenMeldOrphanedLockError, ct as resolveOpenMeldEnvPreset, d as runWithHeldLock, i as isOpenMeldLockError, j as accountProfileLocalMetaPath, lt as resolveOpenMeldRootDir, t as acquireLock, z as deviceOpenClawProfileWorkspaceDir } from "./lock-Bsl_ElWy.js";
4
- import { Kt as createLocalRuntimeExpectedRoutesApi, Mr as modelCatalogSchema, Mt as createAgentProfileBindingApi, t as OpenMeldApiClientHttpError } from "./dist-CkGG099H.js";
5
- import { _ as canonicalizeAgentControllerRef, b as normalizeKnownBuiltinAgentControllerId, d as resolveBuiltinAgentControllerConversationKind, f as HOSTED_CENTER_AGENT_CONTROLLER_REF, g as buildAgentControllerRoutingKey, l as buildAgentControllerConversationRef, m as HOSTED_REMOTE_AGENT_CONTROLLER_REF, p as HOSTED_CENTER_AGENT_CONTROLLER_REF_ID, s as runtimeTransportModeSchema, v as canonicalizeBuiltinAgentControllerRef, x as parseAgentControllerRef$1 } from "./controller-contract-pe3_Re-c.js";
6
- import { H as OPENMELD_ORIGINAL_ERROR_MAX_LENGTH, Hn as normalizeMessageEnvelope, J as openMeldDaemonTaskResultOpenClawGatewayVisibilityStatusSchema, K as openMeldDaemonProviderAccessEvidenceSchema, U as isOriginalErrorSafeForMessageDetails, or as agentInteractionResolutionSchema, q as openMeldDaemonTaskResultEnvelopeWriteSchema, t as CURRENT_DAEMON_EXECUTION_CONTRACT_EPOCH, ui as resolveCommandAgentWorkActivity, zn as formatCanonicalMentionLiteral } from "./runtime-transport-CVtBXzIp.js";
7
- import { d as getAuthSessionState, q as OPENCLAW_CLI_TIMEOUT_MS$1 } from "./auth-session-B9Whm1hq.js";
8
- import { C as conversationExecutionStateSchema, D as normalizeOptionalWorkingDirectory, P as profileWorkspaceModeSchema, T as MAX_PROFILE_WORKING_DIRECTORY_LENGTH, o as openMeldDaemonControlPlaneRequestSchema, s as openMeldDaemonControlPlaneResponseSchema, x as providerDispatchRuntimeContextSchema } from "./control-plane-DKPz7DMv.js";
4
+ import { Kt as createLocalRuntimeExpectedRoutesApi, Mt as createAgentProfileBindingApi, mi as modelCatalogSchema, t as OpenMeldApiClientHttpError } from "./dist-CiLvbjZA.js";
5
+ import { _ as canonicalizeAgentControllerRef, b as normalizeKnownBuiltinAgentControllerId, d as resolveBuiltinAgentControllerConversationKind, f as HOSTED_CENTER_AGENT_CONTROLLER_REF, g as buildAgentControllerRoutingKey, l as buildAgentControllerConversationRef, m as HOSTED_REMOTE_AGENT_CONTROLLER_REF, p as HOSTED_CENTER_AGENT_CONTROLLER_REF_ID, s as runtimeTransportModeSchema, v as canonicalizeBuiltinAgentControllerRef, x as parseAgentControllerRef$1 } from "./controller-contract-DAOCaefz.js";
6
+ import { Bn as formatCanonicalMentionLiteral, H as OPENMELD_ORIGINAL_ERROR_MAX_LENGTH, J as openMeldDaemonTaskResultOpenClawGatewayVisibilityStatusSchema, K as openMeldDaemonProviderAccessEvidenceSchema, U as isOriginalErrorSafeForMessageDetails, Un as normalizeMessageEnvelope, di as resolveCommandAgentWorkActivity, q as openMeldDaemonTaskResultEnvelopeWriteSchema, sr as agentInteractionResolutionSchema, t as CURRENT_DAEMON_EXECUTION_CONTRACT_EPOCH } from "./runtime-transport-KEwcSZ89.js";
7
+ import { d as getAuthSessionState, q as OPENCLAW_CLI_TIMEOUT_MS$1 } from "./auth-session-BAq7KkIa.js";
8
+ import { C as conversationExecutionStateSchema, D as normalizeOptionalWorkingDirectory, P as profileWorkspaceModeSchema, T as MAX_PROFILE_WORKING_DIRECTORY_LENGTH, o as openMeldDaemonControlPlaneRequestSchema, s as openMeldDaemonControlPlaneResponseSchema, x as providerDispatchRuntimeContextSchema } from "./control-plane-BDS63N7Y.js";
9
9
  import { r as daemonServiceLaneSchema } from "./service-contract-CRyDcIIf.js";
10
- import { n as agentControllerPermissionModeSchema, r as agentControllerCollaborationModeSchema } from "./open-code-permission-Doem1R2N.js";
11
- import { U as listOpenMeldProfiles, X as touchDaemonCatalogSyncSignal, _ as toErrorMessage$19, ct as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_NAME, d as normalizeText$11, g as parseTransportMode$1, h as parseStreamingMode$1, m as parseRuntimeTransportMode, p as parseContextIdMappingSpec, s as emitRunLine, st as resolveCurrentOpenMeldAccountContext, u as normalizeOptionalText$49, ut as daemonRouteCatalogCacheSchema } from "./daemon-device-id-KgO7zcEr.js";
12
- import { C as updateConfiguredDeviceRuntimeState, T as updateConfiguredSkillsConfig, a as resolveBaseUrl, d as createDefaultRuntimeAgentControllerSettings, g as getConfiguredSkillsConfig, p as getConfiguredDeviceRuntimeState, v as getRuntimeConfigReadHealth, y as resolveRuntimeSkillsCustomTargetId } from "./base-url-jdL78gyl.js";
10
+ import { n as agentControllerPermissionModeSchema, r as agentControllerCollaborationModeSchema } from "./open-code-permission-DHFJYc_o.js";
11
+ import { U as listOpenMeldProfiles, X as touchDaemonCatalogSyncSignal, _ as toErrorMessage$20, ct as DAEMON_ROUTE_CATALOG_CACHE_SCHEMA_NAME, d as normalizeText$11, g as parseTransportMode$1, h as parseStreamingMode$1, m as parseRuntimeTransportMode, p as parseContextIdMappingSpec, s as emitRunLine, st as resolveCurrentOpenMeldAccountContext, u as normalizeOptionalText$52, ut as daemonRouteCatalogCacheSchema } from "./daemon-device-id-bP58j3NL.js";
12
+ import { C as updateConfiguredDeviceRuntimeState, T as updateConfiguredSkillsConfig, a as resolveBaseUrl, d as createDefaultRuntimeAgentControllerSettings, g as getConfiguredSkillsConfig, p as getConfiguredDeviceRuntimeState, v as getRuntimeConfigReadHealth, y as resolveRuntimeSkillsCustomTargetId } from "./base-url-D7uE_xTo.js";
13
13
  import { a as powerShellEncodedArguments, l as normalizeCommandEnvironment, o as readWindowsProcessStartFileTime, r as isProcessIdentityAlive, s as resolveWindowsPowerShellPath, t as CURRENT_PROCESS_START_IDENTITY } from "./process-identity-CNus0e6E.js";
14
14
  import { n as writeDaemonLocalStateFile, t as readDaemonLocalStateFile } from "./daemon-local-state-file-jOXuXrky.js";
15
15
  import { m as daemonRuntimeDataPath } from "./daemon-state-B44aq2nm.js";
16
16
  import { i as readDaemonServiceContract } from "./daemon-service-contract-BpOBMGX0.js";
17
- import { C as requestLocalSyncRouteCatalog } from "./daemon-lifecycle-journal-Bj-fw052.js";
18
- import { d as buildOpenMeldRequestContextFromProfile, t as createCliApiClientFoundation } from "./api-client-foundation-XILCNkrF.js";
17
+ import { C as requestLocalSyncRouteCatalog } from "./daemon-lifecycle-journal-57QR_a3_.js";
18
+ import { d as buildOpenMeldRequestContextFromProfile, t as createCliApiClientFoundation } from "./api-client-foundation-BOBrz3Lx.js";
19
19
  import { createRequire } from "node:module";
20
20
  import { createHash, randomUUID } from "node:crypto";
21
21
  import { homedir, loadavg, tmpdir } from "node:os";
@@ -37,10 +37,21 @@ const BUILTIN_AGENT_CONTROLLER_DISPLAY_ORDER = [
37
37
  "claude-code",
38
38
  "grok-build",
39
39
  "opencode",
40
+ "antigravity",
40
41
  "openclaw",
41
42
  "cursor"
42
43
  ];
43
44
  const BUILTIN_AGENT_CONTROLLER_BRANDS = {
45
+ antigravity: {
46
+ accentHex: "#4f7df3",
47
+ accentRgb: [
48
+ 79,
49
+ 125,
50
+ 243
51
+ ],
52
+ controllerId: "antigravity",
53
+ selectionMixPercent: 32
54
+ },
44
55
  "claude-code": {
45
56
  accentHex: "#d97757",
46
57
  accentRgb: [
@@ -653,13 +664,49 @@ const GROK_BUILD_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS = [
653
664
  value: "grok-build:bypassPermissions"
654
665
  }
655
666
  ];
667
+ const ANTIGRAVITY_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS = [
668
+ {
669
+ description: "Use Antigravity's configured tool permissions. Actions that need approval are blocked during unattended runs.",
670
+ label: "Default",
671
+ requiresExplicitConfirmation: false,
672
+ technicalDetail: "agy (no OpenMeld permission overrides)",
673
+ tone: "neutral",
674
+ value: "antigravity:default"
675
+ },
676
+ {
677
+ description: "Automatically accept file edits. Shell commands still follow Antigravity's configured tool permissions.",
678
+ label: "Accept edits",
679
+ requiresExplicitConfirmation: false,
680
+ technicalDetail: "agy --mode accept-edits",
681
+ tone: "neutral",
682
+ value: "antigravity:acceptEdits"
683
+ },
684
+ {
685
+ description: "Ask Antigravity to investigate and propose a plan before making changes. This is not a read-only sandbox.",
686
+ label: "Plan",
687
+ requiresExplicitConfirmation: false,
688
+ technicalDetail: "agy --mode plan",
689
+ tone: "neutral",
690
+ value: "antigravity:plan"
691
+ },
692
+ {
693
+ description: "Automatically approve all tool requests, including file changes and shell commands.",
694
+ label: "Bypass permissions",
695
+ requiresExplicitConfirmation: true,
696
+ technicalDetail: "agy --dangerously-skip-permissions",
697
+ tone: "warning",
698
+ value: "antigravity:bypassPermissions"
699
+ }
700
+ ];
656
701
  const AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS_BY_CONTROLLER_ID = {
702
+ antigravity: ANTIGRAVITY_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
657
703
  "claude-code": CLAUDE_CODE_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
658
704
  codex: CODEX_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
659
705
  cursor: CURSOR_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
660
706
  "grok-build": GROK_BUILD_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS
661
707
  };
662
708
  const AGENT_CONTROLLER_PERMISSION_MODE_FIELD_LABEL_BY_CONTROLLER_ID = {
709
+ antigravity: "Antigravity permissions mode",
663
710
  "claude-code": "Claude Code permissions mode",
664
711
  codex: "Codex permissions mode",
665
712
  cursor: "Cursor permissions mode",
@@ -700,6 +747,7 @@ function listAgentControllerPermissionModeOptions(input) {
700
747
  if (controllerOptions) return controllerOptions.map((option) => ({ ...option }));
701
748
  if (input) return [];
702
749
  return [
750
+ ...ANTIGRAVITY_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
703
751
  ...CLAUDE_CODE_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
704
752
  ...CODEX_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
705
753
  ...CURSOR_AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS,
@@ -719,6 +767,7 @@ function isAgentControllerPermissionModeControllerId(value) {
719
767
  return Object.hasOwn(AGENT_CONTROLLER_PERMISSION_MODE_OPTIONS_BY_CONTROLLER_ID, value);
720
768
  }
721
769
  const AGENT_CONTROLLER_USAGE_LIMIT_SUPPORT_MATRIX = {
770
+ antigravity: "native",
722
771
  "claude-code": "passive",
723
772
  codex: "native",
724
773
  cursor: "unsupported",
@@ -1953,20 +2002,50 @@ var registry_default$1 = {
1953
2002
  "id": "antigravity",
1954
2003
  "displayName": "Antigravity",
1955
2004
  "category": "builtin",
1956
- "skillsDir": ".agent/skills",
1957
- "globalSkillsDir": "${HOME}/.gemini/antigravity/skills",
2005
+ "skillsDir": ".agents/skills",
2006
+ "globalSkillsDir": ["${HOME}/.gemini/antigravity-cli/skills", "${HOME}/.gemini/antigravity/skills"],
1958
2007
  "detection": {
1959
2008
  "mode": "any",
1960
- "checks": [{
1961
- "kind": "pathExists",
1962
- "value": "${HOME}/.gemini/antigravity"
1963
- }]
2009
+ "checks": [
2010
+ {
2011
+ "kind": "commandExists",
2012
+ "value": "agy"
2013
+ },
2014
+ {
2015
+ "kind": "pathExists",
2016
+ "value": "${HOME}/.gemini/antigravity-cli"
2017
+ },
2018
+ {
2019
+ "kind": "pathExists",
2020
+ "value": "${HOME}/.gemini/antigravity"
2021
+ }
2022
+ ]
1964
2023
  },
1965
2024
  "service": { "skillsInstallable": true },
1966
2025
  "runtime": {
1967
- "supported": false,
1968
- "adapters": []
1969
- }
2026
+ "supported": true,
2027
+ "adapters": [{
2028
+ "adapterId": "antigravity",
2029
+ "controllerRefMatcher": {
2030
+ "kind": "contains",
2031
+ "values": ["antigravity"]
2032
+ },
2033
+ "transportModes": ["local-cli"],
2034
+ "capabilityDeclaration": {
2035
+ "executionContextVersion": 2,
2036
+ "streamingCapability": "preview_capable",
2037
+ "imageInputCapability": "unsupported",
2038
+ "runtimeWorkingDirectoryMode": "spawn_cwd",
2039
+ "preparationRequirement": "none",
2040
+ "continuationCapability": "standard",
2041
+ "workspaceResumeBehavior": "validate_only"
2042
+ }
2043
+ }]
2044
+ },
2045
+ "lifecycle": { "status": "active" },
2046
+ "transportModes": ["local-cli"],
2047
+ "defaultTransportMode": "local-cli",
2048
+ "defaultStreamingMode": "stream"
1970
2049
  },
1971
2050
  {
1972
2051
  "id": "augment",
@@ -2931,7 +3010,7 @@ function resolveConversationPolicyFromModelSelection(input) {
2931
3010
  conversationPolicy: {}
2932
3011
  };
2933
3012
  if (!selection) {
2934
- if (parsedRef.kind === "builtin" && parsedRef.id === "codex" && normalizeOptionalText$48(input.agentControllerConversationId)) return {
3013
+ if (parsedRef.kind === "builtin" && parsedRef.id === "codex" && normalizeOptionalText$51(input.agentControllerConversationId)) return {
2935
3014
  status: "accepted",
2936
3015
  conversationPolicy: {}
2937
3016
  };
@@ -2955,7 +3034,7 @@ function resolveConversationPolicyFromModelSelection(input) {
2955
3034
  }
2956
3035
  };
2957
3036
  }
2958
- function normalizeOptionalText$48(value) {
3037
+ function normalizeOptionalText$51(value) {
2959
3038
  const normalized = String(value ?? "").trim();
2960
3039
  return normalized.length > 0 ? normalized : null;
2961
3040
  }
@@ -3982,8 +4061,8 @@ var CliDriverError = class extends Error {
3982
4061
  async function runCliDriver(input) {
3983
4062
  const args = [...input.args];
3984
4063
  const timeoutMs = normalizeTimeoutMs(input.timeoutMs);
3985
- const binary = normalizeRequiredText(input.bin, "bin");
3986
- const cwd = normalizeRequiredText(input.cwd, "cwd");
4064
+ const binary = normalizeRequiredText$1(input.bin, "bin");
4065
+ const cwd = normalizeRequiredText$1(input.cwd, "cwd");
3987
4066
  return await new Promise((resolve, reject) => {
3988
4067
  const runtimeProcess = spawnAgentControllerProcess({
3989
4068
  args,
@@ -4218,7 +4297,7 @@ const resolveCliDriverCloseFailure = (input) => {
4218
4297
  stdoutText: input.stdoutText
4219
4298
  });
4220
4299
  };
4221
- const normalizeRequiredText = (value, field) => {
4300
+ const normalizeRequiredText$1 = (value, field) => {
4222
4301
  const normalized = value.trim();
4223
4302
  if (!normalized) throw new CliDriverError({
4224
4303
  code: "input.invalid",
@@ -4274,8 +4353,8 @@ const MACOS_TEMP_FOLDER_RE = /^\/var\/folders\/[^/]+\/[^/]+\/t(?:\/|$)/u;
4274
4353
  const WRAPPER_PATH_SEGMENT_RE = /(?:^|[-_.])(?:shim|shims|wrapper|wrappers)(?:$|[-_.])/u;
4275
4354
  const MAX_LAUNCH_SCRIPT_INSPECTION_BYTES = 64 * 1024;
4276
4355
  const DEFAULT_LOGIN_SHELL_LOOKUP_TIMEOUT_MS = 1500;
4277
- const HOME_DIR = normalizeOptionalText$47(homedir());
4278
- const TEMP_DIR = normalizeOptionalText$47(tmpdir());
4356
+ const HOME_DIR = normalizeOptionalText$50(homedir());
4357
+ const TEMP_DIR = normalizeOptionalText$50(tmpdir());
4279
4358
  const loginShellExecutablePathsCache = /* @__PURE__ */ new Map();
4280
4359
  function buildExecutableLaunchContract(input) {
4281
4360
  return {
@@ -4323,7 +4402,7 @@ async function verifyLaunchContractFiles(input) {
4323
4402
  };
4324
4403
  } catch (error) {
4325
4404
  return {
4326
- errorMessage: toErrorMessage$18(error),
4405
+ errorMessage: toErrorMessage$19(error),
4327
4406
  failureKind: "completed_negative",
4328
4407
  ok: false
4329
4408
  };
@@ -4352,7 +4431,7 @@ async function verifyCliLaunchContract(input) {
4352
4431
  return fileCheck;
4353
4432
  } catch (error) {
4354
4433
  return {
4355
- errorMessage: `${input.displayName} can't start on this device: ${toErrorMessage$18(error)}`,
4434
+ errorMessage: `${input.displayName} can't start on this device: ${toErrorMessage$19(error)}`,
4356
4435
  failureKind: classifyLaunchContractVerificationFailure(error),
4357
4436
  ok: false
4358
4437
  };
@@ -4468,7 +4547,7 @@ async function inspectInstalledNodeScriptLaunchCandidate(input) {
4468
4547
  };
4469
4548
  } catch (error) {
4470
4549
  return {
4471
- errorMessage: `${input.displayName} is installed, but OpenMeld could not inspect its launch files: ${toErrorMessage$18(error)}`,
4550
+ errorMessage: `${input.displayName} is installed, but OpenMeld could not inspect its launch files: ${toErrorMessage$19(error)}`,
4472
4551
  ok: false
4473
4552
  };
4474
4553
  }
@@ -4477,7 +4556,7 @@ function resolveInstalledCommandPath(input) {
4477
4556
  return resolveInstalledCommandPaths(input)[0] ?? null;
4478
4557
  }
4479
4558
  function resolveInstalledCommandPaths(input) {
4480
- const configuredCommand = normalizeOptionalText$47(input.configuredCommand);
4559
+ const configuredCommand = normalizeOptionalText$50(input.configuredCommand);
4481
4560
  if (configuredCommand) {
4482
4561
  if (isAbsolute(configuredCommand)) return [configuredCommand];
4483
4562
  if (configuredCommand.includes("/") || configuredCommand.includes("\\")) return [];
@@ -4486,9 +4565,9 @@ function resolveInstalledCommandPaths(input) {
4486
4565
  return resolveExecutablePathsOnPath(input.commandName);
4487
4566
  }
4488
4567
  async function resolveInstalledCommandPathsForLaunch(input) {
4489
- const preferredCommandPath = normalizeOptionalText$47(input.preferredCommandPath);
4568
+ const preferredCommandPath = normalizeOptionalText$50(input.preferredCommandPath);
4490
4569
  const preferredCommandPaths = preferredCommandPath && isAbsolute(preferredCommandPath) ? [preferredCommandPath] : [];
4491
- const configuredCommand = normalizeOptionalText$47(input.configuredCommand);
4570
+ const configuredCommand = normalizeOptionalText$50(input.configuredCommand);
4492
4571
  if (configuredCommand) {
4493
4572
  if (isAbsolute(configuredCommand)) return mergeUniquePaths(preferredCommandPaths, [configuredCommand]);
4494
4573
  if (configuredCommand.includes("/") || configuredCommand.includes("\\")) return preferredCommandPaths;
@@ -4506,7 +4585,7 @@ function resolveExecutableOnPath(commandName) {
4506
4585
  return resolveExecutablePathsOnPath(commandName)[0] ?? null;
4507
4586
  }
4508
4587
  function resolveExecutablePathsOnPath(commandName) {
4509
- const normalizedCommandName = normalizeOptionalText$47(commandName);
4588
+ const normalizedCommandName = normalizeOptionalText$50(commandName);
4510
4589
  if (!normalizedCommandName) return [];
4511
4590
  const resolvedPaths = [];
4512
4591
  for (const directory of resolvePathDirectories()) for (const candidateName of resolveCommandFileNameCandidates(normalizedCommandName)) {
@@ -4528,7 +4607,7 @@ async function resolveExecutablePathsFromSearchSurface(input) {
4528
4607
  }
4529
4608
  function resolvePathDirectories() {
4530
4609
  const directories = [];
4531
- const pathValue = normalizeOptionalText$47(process.env.PATH);
4610
+ const pathValue = normalizeOptionalText$50(process.env.PATH);
4532
4611
  for (const pathEntry of pathValue?.split(delimiter) ?? []) addUniqueDirectory(directories, pathEntry);
4533
4612
  return directories;
4534
4613
  }
@@ -4539,7 +4618,7 @@ function resolveExecutablePathsFromKnownInstallDirectories(commandName) {
4539
4618
  });
4540
4619
  }
4541
4620
  function resolveExecutablePathsFromDirectories(input) {
4542
- const normalizedCommandName = normalizeOptionalText$47(input.commandName);
4621
+ const normalizedCommandName = normalizeOptionalText$50(input.commandName);
4543
4622
  if (!normalizedCommandName) return [];
4544
4623
  const resolvedPaths = [];
4545
4624
  for (const directory of input.directories) for (const candidateName of resolveCommandFileNameCandidates(normalizedCommandName)) {
@@ -4552,12 +4631,12 @@ function resolveKnownInstallDirectories() {
4552
4631
  const directories = [];
4553
4632
  if (process.platform === "win32") return directories;
4554
4633
  const home = resolveHomeDirectory();
4555
- const nvmDir = normalizeOptionalText$47(process.env.NVM_DIR) ?? join(home, ".nvm");
4556
- const pnpmHome = normalizeOptionalText$47(process.env.PNPM_HOME) ?? (process.platform === "darwin" ? join(home, "Library", "pnpm") : join(home, ".local", "share", "pnpm"));
4557
- const bunHome = normalizeOptionalText$47(process.env.BUN_INSTALL) ?? join(home, ".bun");
4558
- const voltaHome = normalizeOptionalText$47(process.env.VOLTA_HOME) ?? join(home, ".volta");
4559
- const asdfHome = normalizeOptionalText$47(process.env.ASDF_DIR) ?? join(home, ".asdf");
4560
- const fnmHome = normalizeOptionalText$47(process.env.FNM_DIR) ?? join(home, ".fnm");
4634
+ const nvmDir = normalizeOptionalText$50(process.env.NVM_DIR) ?? join(home, ".nvm");
4635
+ const pnpmHome = normalizeOptionalText$50(process.env.PNPM_HOME) ?? (process.platform === "darwin" ? join(home, "Library", "pnpm") : join(home, ".local", "share", "pnpm"));
4636
+ const bunHome = normalizeOptionalText$50(process.env.BUN_INSTALL) ?? join(home, ".bun");
4637
+ const voltaHome = normalizeOptionalText$50(process.env.VOLTA_HOME) ?? join(home, ".volta");
4638
+ const asdfHome = normalizeOptionalText$50(process.env.ASDF_DIR) ?? join(home, ".asdf");
4639
+ const fnmHome = normalizeOptionalText$50(process.env.FNM_DIR) ?? join(home, ".fnm");
4561
4640
  addUniqueDirectory(directories, join(home, ".local", "bin"));
4562
4641
  addUniqueDirectory(directories, "/usr/local/bin");
4563
4642
  addUniqueDirectory(directories, "/opt/homebrew/bin");
@@ -4572,18 +4651,18 @@ function resolveKnownInstallDirectories() {
4572
4651
  addUniqueDirectory(directories, join(home, ".local", "share", "fnm", "aliases", "default", "bin"));
4573
4652
  addUniqueDirectory(directories, join(home, ".local", "share", "fnm", "current", "bin"));
4574
4653
  for (const nvmBinDir of resolveNvmDefaultBinDirectories(nvmDir)) addUniqueDirectory(directories, nvmBinDir);
4575
- const npmConfigPrefix = normalizeOptionalText$47(process.env.NPM_CONFIG_PREFIX);
4654
+ const npmConfigPrefix = normalizeOptionalText$50(process.env.NPM_CONFIG_PREFIX);
4576
4655
  if (npmConfigPrefix) addUniqueDirectory(directories, join(npmConfigPrefix, "bin"));
4577
4656
  return directories;
4578
4657
  }
4579
4658
  function addUniqueDirectory(directories, value) {
4580
- const directory = normalizeOptionalText$47(value);
4659
+ const directory = normalizeOptionalText$50(value);
4581
4660
  if (directory && !directories.includes(directory)) directories.push(directory);
4582
4661
  }
4583
4662
  async function resolveExecutablePathsFromLoginShell(commandName) {
4584
- const normalizedCommandName = normalizeOptionalText$47(commandName);
4663
+ const normalizedCommandName = normalizeOptionalText$50(commandName);
4585
4664
  if (!(normalizedCommandName && process.platform !== "win32")) return [];
4586
- const shell = normalizeOptionalText$47(process.env.SHELL);
4665
+ const shell = normalizeOptionalText$50(process.env.SHELL);
4587
4666
  if (!(shell && isAbsolute(shell) && pathLooksExecutable(shell))) return [];
4588
4667
  const cacheKey = [
4589
4668
  shell,
@@ -4636,7 +4715,7 @@ async function runLoginShellExecutableLookup(input) {
4636
4715
  finish([]);
4637
4716
  return;
4638
4717
  }
4639
- finish(stdout.split(LOGIN_SHELL_OUTPUT_LINE_SPLIT_RE).map((line) => normalizeOptionalText$47(line)).filter((line) => Boolean(line && isAbsolute(line) && pathLooksExecutable(line))));
4718
+ finish(stdout.split(LOGIN_SHELL_OUTPUT_LINE_SPLIT_RE).map((line) => normalizeOptionalText$50(line)).filter((line) => Boolean(line && isAbsolute(line) && pathLooksExecutable(line))));
4640
4719
  });
4641
4720
  });
4642
4721
  }
@@ -4649,7 +4728,7 @@ function resolveNvmDefaultVersion(nvmDir) {
4649
4728
  let value = readNvmAlias(nvmDir, "default");
4650
4729
  const seenAliases = /* @__PURE__ */ new Set();
4651
4730
  for (let depth = 0; depth < 4; depth += 1) {
4652
- const normalizedValue = normalizeOptionalText$47(value);
4731
+ const normalizedValue = normalizeOptionalText$50(value);
4653
4732
  if (!normalizedValue) return null;
4654
4733
  if (isNvmVersionValue(normalizedValue)) return normalizedValue.startsWith("v") ? normalizedValue : `v${normalizedValue}`;
4655
4734
  if (seenAliases.has(normalizedValue)) return null;
@@ -4660,7 +4739,7 @@ function resolveNvmDefaultVersion(nvmDir) {
4660
4739
  }
4661
4740
  function readNvmAlias(nvmDir, alias) {
4662
4741
  try {
4663
- return normalizeOptionalText$47(readFileSync(join(nvmDir, "alias", alias), "utf8"));
4742
+ return normalizeOptionalText$50(readFileSync(join(nvmDir, "alias", alias), "utf8"));
4664
4743
  } catch {
4665
4744
  return null;
4666
4745
  }
@@ -4669,10 +4748,10 @@ function isNvmVersionValue(value) {
4669
4748
  return NVM_VERSION_VALUE_RE.test(value);
4670
4749
  }
4671
4750
  function resolveHomeDirectory() {
4672
- return normalizeOptionalText$47(process.env.HOME) ?? homedir();
4751
+ return normalizeOptionalText$50(process.env.HOME) ?? homedir();
4673
4752
  }
4674
4753
  function resolveLoginShellLookupTimeoutMs() {
4675
- const raw = normalizeOptionalText$47(process.env.OPENMELD_EXECUTABLE_LOGIN_SHELL_TIMEOUT_MS);
4754
+ const raw = normalizeOptionalText$50(process.env.OPENMELD_EXECUTABLE_LOGIN_SHELL_TIMEOUT_MS);
4676
4755
  if (!raw) return DEFAULT_LOGIN_SHELL_LOOKUP_TIMEOUT_MS;
4677
4756
  const parsed = Number.parseInt(raw, 10);
4678
4757
  return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_LOGIN_SHELL_LOOKUP_TIMEOUT_MS;
@@ -4687,7 +4766,7 @@ function quotePosixShellToken$1(value) {
4687
4766
  return `'${value.replaceAll("'", "'\\''")}'`;
4688
4767
  }
4689
4768
  function resolveSiblingCommandPath(input) {
4690
- const normalizedCommandName = normalizeOptionalText$47(input.commandName);
4769
+ const normalizedCommandName = normalizeOptionalText$50(input.commandName);
4691
4770
  if (!normalizedCommandName) return null;
4692
4771
  const siblingDirectory = dirname(input.anchorPath);
4693
4772
  for (const candidateName of resolveCommandFileNameCandidates(normalizedCommandName)) {
@@ -4697,7 +4776,7 @@ function resolveSiblingCommandPath(input) {
4697
4776
  return null;
4698
4777
  }
4699
4778
  async function resolvePinnedNodePath(input) {
4700
- const firstLine = normalizeOptionalText$47(input.firstLine);
4779
+ const firstLine = normalizeOptionalText$50(input.firstLine);
4701
4780
  if (!firstLine) return null;
4702
4781
  if (firstLine === ENV_NODE_SHEBANG) {
4703
4782
  const nodeSiblings = [join(dirname(input.commandPath), "node"), join(dirname(input.scriptPath), "node")].filter((candidate, index, candidates) => {
@@ -4707,7 +4786,7 @@ async function resolvePinnedNodePath(input) {
4707
4786
  return null;
4708
4787
  }
4709
4788
  if (!firstLine.startsWith("#!")) return null;
4710
- const interpreter = normalizeOptionalText$47(firstLine.slice(2));
4789
+ const interpreter = normalizeOptionalText$50(firstLine.slice(2));
4711
4790
  if (!(interpreter && isAbsolute(interpreter))) return null;
4712
4791
  const normalizedInterpreter = interpreter.split(SHEBANG_ARGS_SPLIT_RE, 1)[0] ?? interpreter;
4713
4792
  try {
@@ -4755,11 +4834,11 @@ function resolveRunnablePathAccessMode() {
4755
4834
  return process.platform === "win32" ? constants.F_OK : constants.X_OK;
4756
4835
  }
4757
4836
  function resolveWindowsPathExtensions(value) {
4758
- const normalized = normalizeOptionalText$47(value);
4837
+ const normalized = normalizeOptionalText$50(value);
4759
4838
  if (!normalized) return [...WINDOWS_PATHEXT];
4760
4839
  return normalized.split(";").map((entry) => entry.trim().toLowerCase()).filter((entry, index, values) => entry && values.indexOf(entry) === index).map((entry) => entry.startsWith(".") ? entry : `.${entry}`);
4761
4840
  }
4762
- function normalizeOptionalText$47(value) {
4841
+ function normalizeOptionalText$50(value) {
4763
4842
  const normalized = String(value ?? "").trim();
4764
4843
  return normalized.length > 0 ? normalized : null;
4765
4844
  }
@@ -4853,7 +4932,7 @@ function shortenPathForDisplay(path) {
4853
4932
  return `~${path.slice(HOME_DIR.length)}`;
4854
4933
  }
4855
4934
  function resolveNodeVersionFromPath(path) {
4856
- return normalizeOptionalText$47(path.match(NODE_VERSION_PATH_RE)?.[1]);
4935
+ return normalizeOptionalText$50(path.match(NODE_VERSION_PATH_RE)?.[1]);
4857
4936
  }
4858
4937
  async function readLaunchScriptInspection(path) {
4859
4938
  const file = await open(path, "r");
@@ -4868,7 +4947,7 @@ async function readLaunchScriptInspection(path) {
4868
4947
  const firstLine = contents.split(FIRST_LINE_SPLIT_RE, 1)[0] ?? "";
4869
4948
  return {
4870
4949
  contents,
4871
- firstLine: normalizeOptionalText$47(firstLine)
4950
+ firstLine: normalizeOptionalText$50(firstLine)
4872
4951
  };
4873
4952
  }
4874
4953
  function isTransientPathWrapper(input) {
@@ -4885,7 +4964,7 @@ function hasWrapperPathSegment(path) {
4885
4964
  return normalizePathForDetection(path).split("/").filter((segment) => segment.length > 0).slice(-4).some((segment) => WRAPPER_PATH_SEGMENT_RE.test(segment));
4886
4965
  }
4887
4966
  function shellScriptLooksLikeWrapper(input) {
4888
- const firstLine = normalizeOptionalText$47(input.firstLine)?.toLowerCase() ?? "";
4967
+ const firstLine = normalizeOptionalText$50(input.firstLine)?.toLowerCase() ?? "";
4889
4968
  if (!(firstLine.includes("bash") || firstLine.includes("/sh") || firstLine.includes("zsh"))) return false;
4890
4969
  const contents = input.contents.toLowerCase();
4891
4970
  return contents.includes("wrapper_shim") || contents.includes("shim_root") || contents.includes("\nexec ") && (contents.includes("wrapper") || contents.includes("shim"));
@@ -4896,7 +4975,7 @@ function normalizePathForDetection(path) {
4896
4975
  function pathIsEqualOrDescendant(path, parentPath) {
4897
4976
  return path === parentPath || path.startsWith(`${parentPath}/`);
4898
4977
  }
4899
- function toErrorMessage$18(error) {
4978
+ function toErrorMessage$19(error) {
4900
4979
  return error instanceof Error ? error.message : String(error);
4901
4980
  }
4902
4981
  //#endregion
@@ -5174,7 +5253,7 @@ var AcpProcessSession = class {
5174
5253
  cause: error,
5175
5254
  code: "protocol.invalid",
5176
5255
  errorType: "adapter",
5177
- message: `protocol.invalid: ${this.#processLabel} ACP emitted non-JSON-RPC output (${toErrorMessage$17(error)})`
5256
+ message: `protocol.invalid: ${this.#processLabel} ACP emitted non-JSON-RPC output (${toErrorMessage$18(error)})`
5178
5257
  }));
5179
5258
  return;
5180
5259
  }
@@ -5254,7 +5333,7 @@ var AcpProcessSession = class {
5254
5333
  let code = "protocol.request_failed";
5255
5334
  if (error.code === -32601) code = "protocol.method_not_found";
5256
5335
  else if (error.code === -32602) code = "protocol.invalid_params";
5257
- const message = normalizeOptionalText$46(error.message) ?? "ACP request failed";
5336
+ const message = normalizeOptionalText$49(error.message) ?? "ACP request failed";
5258
5337
  return this.#error({
5259
5338
  code,
5260
5339
  errorType: "adapter",
@@ -5332,11 +5411,11 @@ var AcpProcessSession = class {
5332
5411
  return this.#createError(input);
5333
5412
  }
5334
5413
  };
5335
- function normalizeOptionalText$46(value) {
5414
+ function normalizeOptionalText$49(value) {
5336
5415
  const normalized = String(value ?? "").trim();
5337
5416
  return normalized.length > 0 ? normalized : null;
5338
5417
  }
5339
- function toErrorMessage$17(error) {
5418
+ function toErrorMessage$18(error) {
5340
5419
  return error instanceof Error ? error.message : String(error);
5341
5420
  }
5342
5421
  //#endregion
@@ -5452,7 +5531,7 @@ function resolveFileWorkActivity(input, operation) {
5452
5531
  };
5453
5532
  }
5454
5533
  function readCommand(value) {
5455
- const command = toRecord$14(value)?.command;
5534
+ const command = toRecord$16(value)?.command;
5456
5535
  if (typeof command === "string" && command.trim().length > 0) return command;
5457
5536
  if (Array.isArray(command)) {
5458
5537
  const joined = command.filter((part) => typeof part === "string").join(" ").trim();
@@ -5461,14 +5540,14 @@ function readCommand(value) {
5461
5540
  return null;
5462
5541
  }
5463
5542
  function readFilePath$1(value) {
5464
- const record = toRecord$14(value);
5543
+ const record = toRecord$16(value);
5465
5544
  for (const candidate of [
5466
5545
  record?.file_path,
5467
5546
  record?.filePath,
5468
5547
  record?.path
5469
5548
  ]) if (typeof candidate === "string" && candidate.trim().length > 0) return candidate.trim();
5470
5549
  if (Array.isArray(record?.changes)) for (const change of record.changes) {
5471
- const path = toRecord$14(change)?.path;
5550
+ const path = toRecord$16(change)?.path;
5472
5551
  if (typeof path === "string" && path.trim().length > 0) return path.trim();
5473
5552
  }
5474
5553
  return null;
@@ -5476,7 +5555,7 @@ function readFilePath$1(value) {
5476
5555
  function normalizeProviderToolName(value) {
5477
5556
  return typeof value === "string" ? value.trim().toLowerCase() : "";
5478
5557
  }
5479
- function toRecord$14(value) {
5558
+ function toRecord$16(value) {
5480
5559
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
5481
5560
  }
5482
5561
  //#endregion
@@ -5520,22 +5599,22 @@ function createAcpToolActivityTracker() {
5520
5599
  } };
5521
5600
  }
5522
5601
  function extractAcpToolActivityObservation(value) {
5523
- const message = toRecord$13(value);
5602
+ const message = toRecord$15(value);
5524
5603
  if (message?.method !== "session/update") return null;
5525
- const params = toRecord$13(message.params);
5526
- const update = toRecord$13(params?.update);
5527
- const updateType = normalizeOptionalText$45(update?.sessionUpdate);
5604
+ const params = toRecord$15(message.params);
5605
+ const update = toRecord$15(params?.update);
5606
+ const updateType = normalizeOptionalText$48(update?.sessionUpdate);
5528
5607
  if (!(update && (updateType === "tool_call" || updateType === "tool_call_update"))) return null;
5529
- const toolCallId = normalizeOptionalText$45(update.toolCallId ?? update.tool_call_id);
5608
+ const toolCallId = normalizeOptionalText$48(update.toolCallId ?? update.tool_call_id);
5530
5609
  if (!toolCallId) return null;
5531
- const sessionId = normalizeOptionalText$45(params?.sessionId);
5610
+ const sessionId = normalizeOptionalText$48(params?.sessionId);
5532
5611
  return {
5533
5612
  ...Object.hasOwn(update, "rawInput") ? { providerInput: update.rawInput } : {},
5534
- providerKind: normalizeOptionalText$45(update.kind),
5613
+ providerKind: normalizeOptionalText$48(update.kind),
5535
5614
  ...Object.hasOwn(update, "locations") ? { providerLocations: update.locations } : {},
5536
- providerTitle: normalizeOptionalText$45(update.title ?? update.name),
5615
+ providerTitle: normalizeOptionalText$48(update.title ?? update.name),
5537
5616
  scopedToolCallId: sessionId ? `${sessionId}\0${toolCallId}` : toolCallId,
5538
- status: normalizeOptionalText$45(update.status)?.toLowerCase() ?? null,
5617
+ status: normalizeOptionalText$48(update.status)?.toLowerCase() ?? null,
5539
5618
  toolCallId
5540
5619
  };
5541
5620
  }
@@ -5563,7 +5642,7 @@ function resolveAcpToolWorkActivity(input) {
5563
5642
  return resolveAdapterToolWorkActivity(input.providerToolName, input.providerInput);
5564
5643
  }
5565
5644
  function resolveAcpFileEvidenceInput(input) {
5566
- const providerInput = toRecord$13(input.providerInput);
5645
+ const providerInput = toRecord$15(input.providerInput);
5567
5646
  if (providerInput && readFilePath(providerInput)) return providerInput;
5568
5647
  const locationPath = readLocationPath(input.providerLocations);
5569
5648
  if (!locationPath) return null;
@@ -5578,11 +5657,11 @@ function readFilePath(value) {
5578
5657
  value.filePath,
5579
5658
  value.path
5580
5659
  ]) {
5581
- const path = normalizeOptionalText$45(candidate);
5660
+ const path = normalizeOptionalText$48(candidate);
5582
5661
  if (path) return path;
5583
5662
  }
5584
5663
  if (Array.isArray(value.changes)) for (const change of value.changes) {
5585
- const path = normalizeOptionalText$45(toRecord$13(change)?.path);
5664
+ const path = normalizeOptionalText$48(toRecord$15(change)?.path);
5586
5665
  if (path) return path;
5587
5666
  }
5588
5667
  return null;
@@ -5590,15 +5669,15 @@ function readFilePath(value) {
5590
5669
  function readLocationPath(value) {
5591
5670
  if (!Array.isArray(value)) return null;
5592
5671
  for (const location of value) {
5593
- const path = normalizeOptionalText$45(toRecord$13(location)?.path);
5672
+ const path = normalizeOptionalText$48(toRecord$15(location)?.path);
5594
5673
  if (path) return path;
5595
5674
  }
5596
5675
  return null;
5597
5676
  }
5598
5677
  function mergeProviderPatch(current, patch) {
5599
5678
  if (patch === void 0 || patch === null) return current;
5600
- const currentRecord = toRecord$13(current);
5601
- const patchRecord = toRecord$13(patch);
5679
+ const currentRecord = toRecord$15(current);
5680
+ const patchRecord = toRecord$15(patch);
5602
5681
  if (currentRecord && patchRecord) return {
5603
5682
  ...currentRecord,
5604
5683
  ...patchRecord
@@ -5611,11 +5690,11 @@ function resolveToolActivityState$1(current, status) {
5611
5690
  if (status === "completed") return "output-available";
5612
5691
  return "input-available";
5613
5692
  }
5614
- function normalizeOptionalText$45(value) {
5693
+ function normalizeOptionalText$48(value) {
5615
5694
  const normalized = typeof value === "string" ? value.trim() : "";
5616
5695
  return normalized.length > 0 ? normalized : null;
5617
5696
  }
5618
- function toRecord$13(value) {
5697
+ function toRecord$15(value) {
5619
5698
  return value && typeof value === "object" && !Array.isArray(value) ? value : null;
5620
5699
  }
5621
5700
  //#endregion
@@ -5698,10 +5777,10 @@ const OPENMELD_CLI_COMMANDS = /* @__PURE__ */ new Set([
5698
5777
  "openmeld-canary"
5699
5778
  ]);
5700
5779
  function resolveDispatchSpaceActionMcpServer(env) {
5701
- if (!normalizeOptionalText$44(env?.[SPACE_ACTION_CONTEXT_PATH_ENV])) return null;
5702
- const command = normalizeOptionalText$44(env?.[USER_FACING_CLI_COMMAND_ENV]);
5780
+ if (!normalizeOptionalText$47(env?.[SPACE_ACTION_CONTEXT_PATH_ENV])) return null;
5781
+ const command = normalizeOptionalText$47(env?.[USER_FACING_CLI_COMMAND_ENV]);
5703
5782
  if (!(command && OPENMELD_CLI_COMMANDS.has(command))) throw new Error("OpenMeld cannot start the dispatch Space Action tool because the active CLI command is invalid.");
5704
- const commandPath = normalizeOptionalText$44(env?.[SPACE_ACTION_TOOL_COMMAND_PATH_ENV]);
5783
+ const commandPath = normalizeOptionalText$47(env?.[SPACE_ACTION_TOOL_COMMAND_PATH_ENV]);
5705
5784
  if (!(commandPath && isAbsolute(commandPath) && basename(commandPath) === command)) throw new Error("OpenMeld cannot start the dispatch Space Action tool because its dispatch-owned CLI path is invalid.");
5706
5785
  return {
5707
5786
  args: [
@@ -5712,7 +5791,7 @@ function resolveDispatchSpaceActionMcpServer(env) {
5712
5791
  command,
5713
5792
  commandPath,
5714
5793
  env: Object.fromEntries(FORWARDED_ENV_NAMES.flatMap((name) => {
5715
- const value = normalizeOptionalText$44(env?.[name]);
5794
+ const value = normalizeOptionalText$47(env?.[name]);
5716
5795
  return value ? [[name, value]] : [];
5717
5796
  })),
5718
5797
  id: OPENMELD_SPACE_ACTION_MCP_SERVER_ID,
@@ -5735,7 +5814,7 @@ function buildAcpDispatchSpaceActionMcpServers(env) {
5735
5814
  name: config.id
5736
5815
  }];
5737
5816
  }
5738
- function normalizeOptionalText$44(value) {
5817
+ function normalizeOptionalText$47(value) {
5739
5818
  const normalized = String(value ?? "").trim();
5740
5819
  return normalized.length > 0 ? normalized : null;
5741
5820
  }
@@ -5781,9 +5860,9 @@ const buildProviderExitError = (input) => {
5781
5860
  };
5782
5861
  };
5783
5862
  const hasVisibleText = (value) => {
5784
- return normalizeOptionalText$43(value) !== null;
5863
+ return normalizeOptionalText$46(value) !== null;
5785
5864
  };
5786
- const normalizeOptionalText$43 = (value) => {
5865
+ const normalizeOptionalText$46 = (value) => {
5787
5866
  if (typeof value !== "string") return null;
5788
5867
  const normalized = value.trim();
5789
5868
  return normalized.length > 0 ? normalized : null;
@@ -5820,6 +5899,11 @@ function readRuntimePermissionDenialDetails(value) {
5820
5899
  const normalizedMessage = normalizeRuntimePermissionMessage(value);
5821
5900
  if (!normalizedMessage) return null;
5822
5901
  const lowered = normalizedMessage.toLowerCase();
5902
+ if (isAntigravityPermissionDenial(lowered)) return {
5903
+ normalizedMessage,
5904
+ permissionKind: readAntigravityPermissionKind(lowered),
5905
+ source: "antigravity"
5906
+ };
5823
5907
  if (isOpenCodePermissionDenial(lowered)) return {
5824
5908
  normalizedMessage,
5825
5909
  permissionKind: readOpenCodePermissionKind(normalizedMessage),
@@ -5842,6 +5926,14 @@ function readRuntimePermissionDenialDetails(value) {
5842
5926
  };
5843
5927
  return null;
5844
5928
  }
5929
+ function isAntigravityPermissionDenial(value) {
5930
+ return value.includes("permission check failed") || value.includes("user denied permission to run command") || value.includes("tool required the") && value.includes("permission") && value.includes("auto-denied");
5931
+ }
5932
+ function readAntigravityPermissionKind(value) {
5933
+ if (value.includes("command")) return "command";
5934
+ if (value.includes("mcp")) return "mcp";
5935
+ return "tool_use";
5936
+ }
5845
5937
  function normalizeRuntimePermissionMessage(value) {
5846
5938
  const normalized = String(value ?? "").replace(ANSI_ESCAPE_RE, "").trim();
5847
5939
  return normalized.length > 0 ? normalized : null;
@@ -5963,13 +6055,13 @@ var AdapterRepairConversationError = class extends Error {
5963
6055
  };
5964
6056
  const resolveRequiredRepairConversationId = (input) => {
5965
6057
  if (input.policy !== "require_canonical" || input.request.executionMode !== "repair") return null;
5966
- const canonicalConversationId = normalizeOptionalText$42(input.invokeRequest.agentControllerConversationId);
6058
+ const canonicalConversationId = normalizeOptionalText$45(input.invokeRequest.agentControllerConversationId);
5967
6059
  if (!canonicalConversationId) throw new AdapterRepairConversationMissingError();
5968
6060
  return canonicalConversationId;
5969
6061
  };
5970
6062
  const requireCanonicalRepairConversation = (input) => {
5971
6063
  if (!input.canonicalConversationId) return input.contextDelta;
5972
- const observedConversationId = normalizeOptionalText$42(input.contextDelta?.agentControllerConversationId);
6064
+ const observedConversationId = normalizeOptionalText$45(input.contextDelta?.agentControllerConversationId);
5973
6065
  if (input.contextDelta?.refreshed === true || observedConversationId !== input.canonicalConversationId) throw new AdapterRepairConversationError();
5974
6066
  return input.contextDelta;
5975
6067
  };
@@ -6354,13 +6446,13 @@ const buildDefaultInvokeRequest = (input) => {
6354
6446
  agentControllerConversationId: input.request.agentControllerConversationId,
6355
6447
  bridgeSpec: input.bridgeSpec,
6356
6448
  agentControllerConversation: input.request.agentControllerConversation
6357
- }) : normalizeOptionalText$42(input.request.agentControllerConversationId);
6449
+ }) : normalizeOptionalText$45(input.request.agentControllerConversationId);
6358
6450
  return {
6359
6451
  ...input.request,
6360
6452
  agentControllerConversationId
6361
6453
  };
6362
6454
  };
6363
- const normalizeOptionalText$42 = (value) => {
6455
+ const normalizeOptionalText$45 = (value) => {
6364
6456
  if (typeof value !== "string") return null;
6365
6457
  const normalized = value.trim();
6366
6458
  return normalized.length > 0 ? normalized : null;
@@ -7616,7 +7708,7 @@ const removeConversationExecutionState = (input) => {
7616
7708
  return nextState;
7617
7709
  };
7618
7710
  const seedLegacyAgentContext = (input) => {
7619
- const normalizedLegacyAgentControllerConversationId = normalizeOptionalText$41(input.legacyAgentControllerConversationId);
7711
+ const normalizedLegacyAgentControllerConversationId = normalizeOptionalText$44(input.legacyAgentControllerConversationId);
7620
7712
  if (!normalizedLegacyAgentControllerConversationId) return input.state;
7621
7713
  if (input.state.agentContextByLookupKey[input.agentContextLookupKey]) return input.state;
7622
7714
  return upsertAgentContext({
@@ -7636,7 +7728,7 @@ const seedLegacyAgentContext = (input) => {
7636
7728
  });
7637
7729
  };
7638
7730
  const commitResolvedAgentContext = (input) => {
7639
- const normalizedAgentControllerConversationId = normalizeOptionalText$41(input.agentControllerConversationId);
7731
+ const normalizedAgentControllerConversationId = normalizeOptionalText$44(input.agentControllerConversationId);
7640
7732
  if (!normalizedAgentControllerConversationId) return input.state;
7641
7733
  const existing = input.state.agentContextByLookupKey[input.agentContextLookupKey] ?? null;
7642
7734
  return upsertAgentContext({
@@ -7674,7 +7766,7 @@ const appendAgentContextRotationRecord = (input) => {
7674
7766
  nextState.updatedAtMs = Date.now();
7675
7767
  return nextState;
7676
7768
  };
7677
- function normalizeOptionalText$41(value) {
7769
+ function normalizeOptionalText$44(value) {
7678
7770
  if (typeof value !== "string") return null;
7679
7771
  const normalized = value.trim();
7680
7772
  return normalized.length > 0 ? normalized : null;
@@ -8157,6 +8249,10 @@ const shouldCommitAgentContextLifecycle = (input) => {
8157
8249
  if ("routeFailure" in input.dispatchResult) return input.dispatchResult.routeFailure === void 0;
8158
8250
  return true;
8159
8251
  };
8252
+ const shouldRetainResolvedLedgerContext = (input) => {
8253
+ if (isRepairExecutionMode(input.executionMode)) return false;
8254
+ return input.agentContextOverride === void 0 || input.agentContextOverride.agentControllerConversationId === (input.agentContextResolution?.resolvedAgentControllerConversationId ?? null);
8255
+ };
8160
8256
  const resolveCommittedAgentContextResolution = (input) => {
8161
8257
  if (!input.agentContextResolution) return null;
8162
8258
  if (!shouldCommitAgentContextLifecycle({
@@ -8466,18 +8562,23 @@ const runRuntimeTask = async (input) => {
8466
8562
  } } : {},
8467
8563
  task: input.task
8468
8564
  });
8469
- const committedAgentContextResolution = isRepairExecutionMode(input.task.executionMode) ? null : resolveCommittedAgentContextResolution({
8565
+ const retainResolvedLedgerContext = shouldRetainResolvedLedgerContext({
8566
+ executionMode: input.task.executionMode,
8567
+ agentContextOverride: input.agentContextOverride,
8568
+ agentContextResolution
8569
+ });
8570
+ const committedAgentContextResolution = retainResolvedLedgerContext ? resolveCommittedAgentContextResolution({
8470
8571
  deduped,
8471
8572
  dispatchResult,
8472
8573
  agentContextResolution
8473
- });
8474
- const postDispatchAgentContext = isRepairExecutionMode(input.task.executionMode) ? null : resolvePostDispatchAgentContextInput({
8574
+ }) : null;
8575
+ const postDispatchAgentContext = retainResolvedLedgerContext ? resolvePostDispatchAgentContextInput({
8475
8576
  committedAgentContextResolution,
8476
8577
  dispatchResult,
8477
8578
  nowMs,
8478
8579
  route: input.route,
8479
8580
  task: input.task
8480
- });
8581
+ }) : null;
8481
8582
  const runtimeTaskOutcome = resolveRuntimeTaskOutcomeResult({
8482
8583
  agentId: input.task.agentId,
8483
8584
  attemptId: input.task.attemptId,
@@ -8573,6 +8674,761 @@ function emitStructuredReconcileEvidence(eventName, payload) {
8573
8674
  });
8574
8675
  }
8575
8676
  //#endregion
8677
+ //#region ../../runtime/adapters/antigravity/dist/config/antigravity-runtime-config.js
8678
+ const DEFAULT_ANTIGRAVITY_COMMAND = "agy";
8679
+ async function resolveInstalledAntigravityLaunchCandidates(input) {
8680
+ const configuredCommand = normalizeOptionalText$43(process.env.OPENMELD_DAEMON_RUNTIME_ANTIGRAVITY_BIN);
8681
+ const installed = await resolveInstalledNodeScriptLaunchCandidates({
8682
+ additionalCommandDirectories: [join(resolveHome$1(), ".local", "bin")],
8683
+ commandName: DEFAULT_ANTIGRAVITY_COMMAND,
8684
+ configuredCommand,
8685
+ displayName: "Antigravity CLI",
8686
+ preferredLaunchContract: input?.preferredLaunchContract
8687
+ });
8688
+ if (!installed.ok) return installed;
8689
+ const candidates = await resolveLaunchCandidatesAfterVerification({
8690
+ candidates: installed.candidates,
8691
+ verify: async (candidate) => await verifyAntigravityLaunchContract({
8692
+ launchContract: candidate.launchContract,
8693
+ timeoutMs: input?.timeoutMs
8694
+ })
8695
+ });
8696
+ if (candidates.length === 0) return {
8697
+ errorMessage: "Antigravity CLI is installed, but OpenMeld can't start it on this device.",
8698
+ ok: false,
8699
+ reason: "not_launchable"
8700
+ };
8701
+ return {
8702
+ candidates,
8703
+ ok: true
8704
+ };
8705
+ }
8706
+ async function verifyAntigravityLaunchContract(input) {
8707
+ return await verifyCliLaunchContract({
8708
+ cwd: input.cwd ?? process.cwd(),
8709
+ displayName: "Antigravity CLI",
8710
+ env: {},
8711
+ launchContract: input.launchContract,
8712
+ probeArgs: ["--version"],
8713
+ timeoutMs: input.timeoutMs ?? 15e3
8714
+ });
8715
+ }
8716
+ function resolveHome$1() {
8717
+ return normalizeOptionalText$43(process.env.HOME) ?? homedir();
8718
+ }
8719
+ function normalizeOptionalText$43(value) {
8720
+ const normalized = String(value ?? "").trim();
8721
+ return normalized.length > 0 ? normalized : null;
8722
+ }
8723
+ //#endregion
8724
+ //#region ../../runtime/adapters/antigravity/dist/output/antigravity-output-parser.js
8725
+ function parseAntigravityOutputLine(line) {
8726
+ let value;
8727
+ try {
8728
+ value = JSON.parse(line);
8729
+ } catch {
8730
+ return null;
8731
+ }
8732
+ const record = toRecord$14(value);
8733
+ if (record?.event === "init") {
8734
+ const init = toRecord$14(record.init);
8735
+ const conversationId = readText(record.conversation_id);
8736
+ if (!(init && conversationId)) return null;
8737
+ return {
8738
+ event: "init",
8739
+ conversationId
8740
+ };
8741
+ }
8742
+ if (record?.event === "step_update") {
8743
+ const step = toRecord$14(record.step_update);
8744
+ const conversationId = readText(step?.conversation_id);
8745
+ const state = step?.state;
8746
+ const stepIndex = step?.step_index;
8747
+ const stepType = readText(step?.step_type);
8748
+ if (!conversationId || state !== "ACTIVE" && state !== "DONE" && state !== "ERROR" || typeof stepIndex !== "number" || !Number.isInteger(stepIndex) || !stepType) return null;
8749
+ const toolInfo = toRecord$14(step?.tool_info);
8750
+ const toolError = toRecord$14(toolInfo?.error);
8751
+ return {
8752
+ conversationId,
8753
+ event: "step_update",
8754
+ state,
8755
+ stepIndex,
8756
+ stepType,
8757
+ textDelta: readTextDelta(step?.text_delta),
8758
+ toolError: readText(toolError?.message),
8759
+ toolInput: toolInfo?.parameters,
8760
+ toolName: readText(step?.tool_name) ?? readText(toolInfo?.name)
8761
+ };
8762
+ }
8763
+ if (record?.event === "result") {
8764
+ const result = toRecord$14(record.result);
8765
+ const conversationId = readText(result?.conversation_id) ?? "";
8766
+ const status = readText(result?.status);
8767
+ if (!(result && status)) return null;
8768
+ return {
8769
+ conversationId,
8770
+ error: readText(result.error),
8771
+ event: "result",
8772
+ response: typeof result.response === "string" ? result.response : "",
8773
+ status,
8774
+ structuredOutput: result.structured_output,
8775
+ usage: parseTokenUsage(result.usage)
8776
+ };
8777
+ }
8778
+ return null;
8779
+ }
8780
+ function parseTokenUsage(value) {
8781
+ const usage = toRecord$14(value);
8782
+ if (!usage) return null;
8783
+ const inputTokens = readNonNegativeNumber(usage.input_tokens);
8784
+ const outputTokens = readNonNegativeNumber(usage.output_tokens);
8785
+ const thinkingTokens = readNonNegativeNumber(usage.thinking_tokens);
8786
+ const cacheReadTokens = readNonNegativeNumber(usage.cache_read_tokens);
8787
+ const totalTokens = readNonNegativeNumber(usage.total_tokens);
8788
+ if (inputTokens === null || outputTokens === null || thinkingTokens === null || cacheReadTokens === null || totalTokens === null) return null;
8789
+ return {
8790
+ cacheReadTokens,
8791
+ inputTokens,
8792
+ outputTokens,
8793
+ thinkingTokens,
8794
+ totalTokens
8795
+ };
8796
+ }
8797
+ function readNonNegativeNumber(value) {
8798
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
8799
+ }
8800
+ function readText(value) {
8801
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
8802
+ }
8803
+ function readTextDelta(value) {
8804
+ return typeof value === "string" && value.length > 0 ? value : null;
8805
+ }
8806
+ function toRecord$14(value) {
8807
+ return value && typeof value === "object" && !Array.isArray(value) ? value : null;
8808
+ }
8809
+ //#endregion
8810
+ //#region ../../runtime/adapters/antigravity/dist/transport/antigravity-cli-transport.js
8811
+ const AUTH_FAILURE_PATTERN = /auth(?:entication)? required|not signed in|sign in/iu;
8812
+ const CONTEXT_FAILURE_PATTERN = /conversation[^\n]*(?:not found|missing|unknown|does not exist)/iu;
8813
+ var AntigravityCliTransportError = class extends Error {
8814
+ code;
8815
+ errorType;
8816
+ originalError;
8817
+ telemetry;
8818
+ constructor(input) {
8819
+ super(input.message);
8820
+ this.name = "AntigravityCliTransportError";
8821
+ this.code = input.code;
8822
+ this.errorType = input.errorType;
8823
+ this.originalError = input.originalError;
8824
+ this.telemetry = input.telemetry;
8825
+ }
8826
+ };
8827
+ async function invokeAntigravityCliTransport(input) {
8828
+ const prompt = normalizeOptionalText$42(input.prompt);
8829
+ if (!prompt) throw new AntigravityCliTransportError({
8830
+ code: "schema.invalid",
8831
+ errorType: "config",
8832
+ message: "schema.invalid: prompt is required"
8833
+ });
8834
+ const invocation = buildCliLaunchInvocation({
8835
+ args: buildAntigravityArgs({
8836
+ agentControllerPermissionMode: input.agentControllerPermissionMode,
8837
+ conversationPolicy: input.conversationPolicy,
8838
+ jsonSchema: input.jsonSchema,
8839
+ prompt,
8840
+ sessionId: normalizeOptionalText$42(input.sessionId)
8841
+ }),
8842
+ launchContract: input.launchContract
8843
+ });
8844
+ const invokedAtMs = Date.now();
8845
+ let firstOutputAtMs = null;
8846
+ let conversationId = normalizeOptionalText$42(input.sessionId);
8847
+ const terminal = { result: null };
8848
+ let malformedOutput = false;
8849
+ const providerErrorMessages = [];
8850
+ let previewText = "";
8851
+ let previewChain = Promise.resolve();
8852
+ const driverResult = await runCliDriver({
8853
+ allowNonZeroExit: true,
8854
+ args: invocation.args,
8855
+ bin: invocation.bin,
8856
+ cwd: input.workdir,
8857
+ env: input.env,
8858
+ onLifecycleEvent: input.onRuntimeEvent,
8859
+ onProcessControlEvent: input.onProcessControlEvent,
8860
+ onStderrLine: (lineEvent) => {
8861
+ const message = normalizeOptionalText$42(lineEvent.line);
8862
+ if (message) providerErrorMessages.push(message);
8863
+ },
8864
+ onStdoutLine: (lineEvent) => {
8865
+ const event = parseAntigravityOutputLine(lineEvent.line);
8866
+ if (!event) {
8867
+ malformedOutput = true;
8868
+ return;
8869
+ }
8870
+ conversationId = event.conversationId || conversationId;
8871
+ if (event.event === "step_update") {
8872
+ if (event.toolError) providerErrorMessages.push(event.toolError);
8873
+ if (event.stepType === "agent_response" && event.textDelta && !input.jsonSchema) {
8874
+ firstOutputAtMs ??= Date.now();
8875
+ previewText += event.textDelta;
8876
+ if (input.onPreview) {
8877
+ const previewSnapshot = previewText;
8878
+ previewChain = previewChain.then(() => Promise.resolve(input.onPreview?.({ text: previewSnapshot })).then(() => void 0));
8879
+ }
8880
+ }
8881
+ emitToolActivity(event, input.onRuntimeEvent);
8882
+ }
8883
+ if (event.event === "result") terminal.result = event;
8884
+ },
8885
+ timeoutMs: input.timeoutMs
8886
+ });
8887
+ await previewChain;
8888
+ const telemetry = buildTelemetry({
8889
+ driverResult,
8890
+ firstOutputAtMs,
8891
+ invokedAtMs,
8892
+ resumedContext: input.sessionId !== null
8893
+ });
8894
+ if (malformedOutput) throw new AntigravityCliTransportError({
8895
+ code: "runtime.output.invalid",
8896
+ errorType: "adapter",
8897
+ message: "runtime.output.invalid: Antigravity CLI returned an invalid event stream",
8898
+ telemetry
8899
+ });
8900
+ const terminalResult = terminal.result;
8901
+ if (!terminalResult) throw classifyAntigravityFailure({
8902
+ exitCode: driverResult.exitCode,
8903
+ signal: driverResult.signal,
8904
+ stderr: driverResult.stderrText,
8905
+ telemetry
8906
+ });
8907
+ if (terminalResult.status !== "SUCCESS" || driverResult.exitCode !== 0 || driverResult.signal !== null) throw classifyAntigravityFailure({
8908
+ exitCode: driverResult.exitCode,
8909
+ providerError: terminalResult.error,
8910
+ signal: driverResult.signal,
8911
+ stderr: driverResult.stderrText,
8912
+ telemetry
8913
+ });
8914
+ const output = normalizeOptionalText$42(terminalResult.response);
8915
+ const resolvedSessionId = normalizeOptionalText$42(terminalResult.conversationId) ?? conversationId;
8916
+ if (!(output && resolvedSessionId)) {
8917
+ const permissionFailure = classifyAntigravityPermissionFailure(providerErrorMessages);
8918
+ if (permissionFailure) throw new AntigravityCliTransportError({
8919
+ ...permissionFailure,
8920
+ telemetry
8921
+ });
8922
+ throw new AntigravityCliTransportError({
8923
+ code: output ? "context.missing" : "runtime.output.empty",
8924
+ errorType: "adapter",
8925
+ message: output ? "context.missing: Antigravity CLI completed without a conversation ID" : "runtime.output.empty: Antigravity CLI completed without agent output",
8926
+ telemetry
8927
+ });
8928
+ }
8929
+ return {
8930
+ output,
8931
+ sessionId: resolvedSessionId,
8932
+ structuredOutput: terminalResult.structuredOutput,
8933
+ telemetry
8934
+ };
8935
+ }
8936
+ function classifyAntigravityPermissionFailure(messages) {
8937
+ for (const message of messages) {
8938
+ const classification = classifyRuntimePermissionDenialMessage({
8939
+ message,
8940
+ source: "antigravity"
8941
+ });
8942
+ if (classification) return {
8943
+ code: classification.code,
8944
+ errorType: classification.errorType,
8945
+ message: classification.message,
8946
+ originalError: classification.details.normalizedMessage
8947
+ };
8948
+ }
8949
+ return null;
8950
+ }
8951
+ function buildAntigravityArgs(input) {
8952
+ const args = [
8953
+ "--print",
8954
+ input.prompt,
8955
+ "--output-format",
8956
+ "stream-json",
8957
+ "--print-timeout",
8958
+ "0"
8959
+ ];
8960
+ const jsonSchema = normalizeOptionalText$42(input.jsonSchema);
8961
+ if (jsonSchema) args.push("--json-schema", jsonSchema);
8962
+ if (input.sessionId) args.push("--conversation", input.sessionId);
8963
+ const model = normalizeOptionalText$42(input.conversationPolicy?.model);
8964
+ if (model) args.push("--model", model);
8965
+ const effort = normalizeOptionalText$42(input.conversationPolicy?.reasoningLevel);
8966
+ if (effort) {
8967
+ if (!ANTIGRAVITY_EFFORTS.has(effort)) throw new AntigravityCliTransportError({
8968
+ code: "model.reasoning_level.unsupported",
8969
+ errorType: "config",
8970
+ message: `model.reasoning_level.unsupported: Antigravity CLI does not support reasoning level '${effort}'`
8971
+ });
8972
+ args.push("--effort", effort);
8973
+ }
8974
+ const permissionMode = input.agentControllerPermissionMode;
8975
+ if (permissionMode === "antigravity:acceptEdits") args.push("--mode", "accept-edits");
8976
+ else if (permissionMode === "antigravity:plan") args.push("--mode", "plan");
8977
+ else if (permissionMode === "antigravity:bypassPermissions") args.push("--dangerously-skip-permissions");
8978
+ else if (permissionMode && permissionMode !== "antigravity:default") throw new AntigravityCliTransportError({
8979
+ code: "permission.mode.unsupported",
8980
+ errorType: "config",
8981
+ message: `permission.mode.unsupported: Antigravity cannot apply '${permissionMode}'`
8982
+ });
8983
+ else if (input.conversationPolicy?.collaborationMode === "plan") args.push("--mode", "plan");
8984
+ return args;
8985
+ }
8986
+ const ANTIGRAVITY_EFFORTS = /* @__PURE__ */ new Set([
8987
+ "low",
8988
+ "medium",
8989
+ "high"
8990
+ ]);
8991
+ function emitToolActivity(event, callback) {
8992
+ if (!(callback && event.stepType === "tool" && event.toolName)) return;
8993
+ const work = resolveAdapterToolWorkActivity(event.toolName, event.toolInput);
8994
+ let state;
8995
+ if (event.state === "ACTIVE") state = "input-available";
8996
+ else if (event.toolError) state = "output-error";
8997
+ else state = "output-available";
8998
+ callback({
8999
+ phase: "tool_activity",
9000
+ state,
9001
+ toolCallId: `antigravity-step-${String(event.stepIndex)}`,
9002
+ toolName: resolveAdapterToolActivityName(event.toolName),
9003
+ tsMs: Date.now(),
9004
+ ...work ? { work } : {}
9005
+ });
9006
+ }
9007
+ function buildTelemetry(input) {
9008
+ const lifecycle = input.driverResult.lifecycle;
9009
+ return {
9010
+ completedAtMs: Date.now(),
9011
+ ...lifecycle.exitCode === null ? {} : { exitCode: lifecycle.exitCode },
9012
+ ...lifecycle.exitObservedAtMs === null ? {} : { exitObservedAtMs: lifecycle.exitObservedAtMs },
9013
+ ...lifecycle.exitSignal === null ? {} : { exitSignal: lifecycle.exitSignal },
9014
+ ...input.firstOutputAtMs === null ? {} : { firstOutputAtMs: input.firstOutputAtMs },
9015
+ ...lifecycle.firstStderrAtMs === null ? {} : { firstStderrAtMs: lifecycle.firstStderrAtMs },
9016
+ ...lifecycle.firstStdoutAtMs === null ? {} : { firstStdoutAtMs: lifecycle.firstStdoutAtMs },
9017
+ invokedAtMs: input.invokedAtMs,
9018
+ ...lifecycle.processId === null ? {} : { processId: lifecycle.processId },
9019
+ ...lifecycle.processSpawnedAtMs === null ? {} : { processSpawnedAtMs: lifecycle.processSpawnedAtMs },
9020
+ resumedContext: input.resumedContext,
9021
+ ...lifecycle.stdinClosedAtMs === null ? {} : { stdinClosedAtMs: lifecycle.stdinClosedAtMs },
9022
+ streamingMode: "stream"
9023
+ };
9024
+ }
9025
+ function classifyAntigravityFailure(input) {
9026
+ const providerMessage = normalizeOptionalText$42(input.providerError) ?? normalizeOptionalText$42(input.stderr) ?? (input.signal ? `Antigravity CLI was interrupted by ${input.signal}.` : `Antigravity CLI exited with code ${String(input.exitCode)}.`);
9027
+ const authFailure = AUTH_FAILURE_PATTERN.test(providerMessage);
9028
+ const contextFailure = CONTEXT_FAILURE_PATTERN.test(providerMessage);
9029
+ let code = "provider_exit_error";
9030
+ if (authFailure) code = "auth.required";
9031
+ else if (contextFailure) code = "context_not_found";
9032
+ else if (input.signal) code = "runtime.interrupted";
9033
+ return new AntigravityCliTransportError({
9034
+ code,
9035
+ errorType: authFailure ? "auth" : "adapter",
9036
+ message: `${code}: ${providerMessage}`,
9037
+ telemetry: input.telemetry
9038
+ });
9039
+ }
9040
+ function normalizeOptionalText$42(value) {
9041
+ const normalized = String(value ?? "").trim();
9042
+ return normalized.length > 0 ? normalized : null;
9043
+ }
9044
+ //#endregion
9045
+ //#region ../../runtime/adapters/antigravity/dist/transport/antigravity-space-action.js
9046
+ const FINAL_STATUSES = /* @__PURE__ */ new Set([
9047
+ "done",
9048
+ "blocked",
9049
+ "needs_input",
9050
+ "handoff"
9051
+ ]);
9052
+ const ANTIGRAVITY_SPACE_ACTION_JSON_SCHEMA = JSON.stringify({
9053
+ additionalProperties: false,
9054
+ properties: {
9055
+ action: {
9056
+ enum: [
9057
+ "reply",
9058
+ "status",
9059
+ "silent"
9060
+ ],
9061
+ type: "string"
9062
+ },
9063
+ mentionTargets: {
9064
+ items: { type: "string" },
9065
+ type: "array"
9066
+ },
9067
+ referenceTargets: {
9068
+ items: { type: "string" },
9069
+ type: "array"
9070
+ },
9071
+ status: {
9072
+ enum: [
9073
+ "none",
9074
+ "done",
9075
+ "blocked",
9076
+ "needs_input",
9077
+ "handoff"
9078
+ ],
9079
+ type: "string"
9080
+ },
9081
+ text: {
9082
+ minLength: 1,
9083
+ type: "string"
9084
+ },
9085
+ wakeTargets: {
9086
+ items: { type: "string" },
9087
+ type: "array"
9088
+ }
9089
+ },
9090
+ required: [
9091
+ "action",
9092
+ "text",
9093
+ "status",
9094
+ "wakeTargets",
9095
+ "referenceTargets",
9096
+ "mentionTargets"
9097
+ ],
9098
+ type: "object"
9099
+ });
9100
+ async function withAntigravityDispatchSpaceAction(input) {
9101
+ const actionServer = resolveDispatchSpaceActionMcpServer(input.env);
9102
+ if (!actionServer) return await input.run({
9103
+ prompt: input.prompt,
9104
+ jsonSchema: null
9105
+ });
9106
+ const result = await input.run({
9107
+ prompt: `${input.prompt}\n\n${buildSpaceActionInstructions(input.workdir)}`,
9108
+ jsonSchema: ANTIGRAVITY_SPACE_ACTION_JSON_SCHEMA
9109
+ });
9110
+ await recordStructuredSpaceAction({
9111
+ action: parseStructuredSpaceAction(result.structuredOutput),
9112
+ actionServer
9113
+ });
9114
+ return result;
9115
+ }
9116
+ function buildSpaceActionInstructions(workdir) {
9117
+ return [
9118
+ "OpenMeld Antigravity invocation contract:",
9119
+ `The working folder for this invocation is ${JSON.stringify(workdir)}. Resolve relative task paths there.`,
9120
+ "For this OpenMeld Wake, do not run a Space Action CLI command and do not inspect its environment variables.",
9121
+ "The structured outcome below is the complete reply/publication contract. Reading the OpenMeld CLI Skill is not required to reply; consult it only for additional OpenMeld operations requested by the user.",
9122
+ "If the request can be answered without tools, return the structured outcome immediately; do not inspect the workspace or run a command just to orient yourself.",
9123
+ "Complete the user's work under the normal Antigravity permission policy.",
9124
+ "At the end, return exactly one structured outcome using the required JSON schema: reply for a public message, status for a short final status, or silent when no public reply is appropriate.",
9125
+ "Put the public reply, status text, or silence reason in text.",
9126
+ "Use status=none unless action=status. Include only validated profile IDs from the provided target reference lists; otherwise leave all target arrays empty.",
9127
+ "OpenMeld will validate and record this outcome for the current dispatch."
9128
+ ].join(" ");
9129
+ }
9130
+ function parseStructuredSpaceAction(value) {
9131
+ const record = toRecord$13(value);
9132
+ const action = record?.action;
9133
+ const status = record?.status;
9134
+ const text = normalizeRequiredText(record?.text);
9135
+ const wakeTargets = parseTargetIds(record?.wakeTargets);
9136
+ const referenceTargets = parseTargetIds(record?.referenceTargets);
9137
+ const mentionTargets = parseTargetIds(record?.mentionTargets);
9138
+ if (action !== "reply" && action !== "status" && action !== "silent" || status !== "none" && !FINAL_STATUSES.has(String(status)) || !text || wakeTargets === null || referenceTargets === null || mentionTargets === null) throw createSpaceActionError("Antigravity returned an invalid structured Space outcome.");
9139
+ if (action === "status" && !FINAL_STATUSES.has(String(status)) || action !== "status" && status !== "none" || action !== "reply" && (wakeTargets.length > 0 || referenceTargets.length > 0 || mentionTargets.length > 0)) throw createSpaceActionError("Antigravity returned an inconsistent structured Space outcome.");
9140
+ return {
9141
+ action,
9142
+ mentionTargets,
9143
+ referenceTargets,
9144
+ status,
9145
+ text,
9146
+ wakeTargets
9147
+ };
9148
+ }
9149
+ async function recordStructuredSpaceAction(input) {
9150
+ const baseArgs = input.actionServer.args.slice(0, -1);
9151
+ let args;
9152
+ let stdin = "";
9153
+ if (input.action.action === "reply") {
9154
+ args = [
9155
+ ...baseArgs,
9156
+ "reply",
9157
+ "--message-file",
9158
+ "-"
9159
+ ];
9160
+ stdin = input.action.text;
9161
+ appendTargetArgs(args, "--wake", input.action.wakeTargets);
9162
+ appendTargetArgs(args, "--reference", input.action.referenceTargets);
9163
+ appendTargetArgs(args, "--mention", input.action.mentionTargets);
9164
+ } else if (input.action.action === "status") args = [
9165
+ ...baseArgs,
9166
+ "status",
9167
+ input.action.status,
9168
+ input.action.text
9169
+ ];
9170
+ else args = [
9171
+ ...baseArgs,
9172
+ "silent",
9173
+ "--reason",
9174
+ input.action.text
9175
+ ];
9176
+ await runActionWriter({
9177
+ args,
9178
+ commandPath: input.actionServer.commandPath,
9179
+ env: input.actionServer.env,
9180
+ stdin
9181
+ });
9182
+ }
9183
+ function appendTargetArgs(args, option, values) {
9184
+ for (const value of values) args.push(option, value);
9185
+ }
9186
+ async function runActionWriter(input) {
9187
+ await new Promise((resolve, reject) => {
9188
+ const child = spawn(input.commandPath, [...input.args], {
9189
+ env: {
9190
+ ...process.env,
9191
+ ...input.env
9192
+ },
9193
+ stdio: [
9194
+ "pipe",
9195
+ "pipe",
9196
+ "pipe"
9197
+ ]
9198
+ });
9199
+ let stderr = "";
9200
+ child.stderr.setEncoding("utf8");
9201
+ child.stderr.on("data", (chunk) => {
9202
+ stderr += chunk;
9203
+ });
9204
+ child.once("error", (error) => {
9205
+ reject(createSpaceActionError(error.message));
9206
+ });
9207
+ child.once("close", (code, signal) => {
9208
+ if (code === 0 && signal === null) {
9209
+ resolve();
9210
+ return;
9211
+ }
9212
+ reject(createSpaceActionError(normalizeRequiredText(stderr) ?? `The Space outcome writer exited with code ${String(code)}.`));
9213
+ });
9214
+ child.stdin.end(input.stdin);
9215
+ });
9216
+ }
9217
+ function createSpaceActionError(message) {
9218
+ return Object.assign(new Error(message), {
9219
+ code: "space.action.record_failed",
9220
+ errorType: "adapter"
9221
+ });
9222
+ }
9223
+ function parseTargetIds(value) {
9224
+ if (!Array.isArray(value)) return null;
9225
+ const values = value.map(normalizeRequiredText);
9226
+ if (values.some((item) => item === null)) return null;
9227
+ return values;
9228
+ }
9229
+ function normalizeRequiredText(value) {
9230
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
9231
+ }
9232
+ function toRecord$13(value) {
9233
+ return value && typeof value === "object" && !Array.isArray(value) ? value : null;
9234
+ }
9235
+ //#endregion
9236
+ //#region ../../runtime/adapters/antigravity/dist/usage/antigravity-usage-limits.js
9237
+ const LINE_BREAK_PATTERN = /\r?\n/u;
9238
+ const USAGE_LINE_PATTERN = /^([^\t]+)\tWeekly Limit Remaining\t(\d{1,3})%\t([^\t]+)$/u;
9239
+ function parseAntigravityUsageLimits(input) {
9240
+ const limits = input.output.split(LINE_BREAK_PATTERN).map((line) => parseUsageLine(line, input.observedAt)).filter((limit) => limit !== null);
9241
+ return limits.length > 0 ? limits : createUnavailableProviderUsageLimits(input.observedAt);
9242
+ }
9243
+ function parseUsageLine(line, observedAt) {
9244
+ const match = line.trim().match(USAGE_LINE_PATTERN);
9245
+ if (!match) return null;
9246
+ const [, rawLabel, rawRemainingPercent, rawResetsAt] = match;
9247
+ const remainingPercent = Number(rawRemainingPercent);
9248
+ const resetTime = Date.parse(rawResetsAt ?? "");
9249
+ if (!(rawLabel && Number.isFinite(remainingPercent)) || remainingPercent < 0 || remainingPercent > 100 || !Number.isFinite(resetTime)) return null;
9250
+ const label = rawLabel.trim();
9251
+ const providerId = label.toLowerCase().startsWith("gemini") ? "antigravity-gemini" : "antigravity-other";
9252
+ const usedPercent = 100 - remainingPercent;
9253
+ return {
9254
+ key: `${providerId}:weekly`,
9255
+ label: "Weekly usage",
9256
+ observedAt,
9257
+ provider: {
9258
+ displayName: label,
9259
+ id: providerId
9260
+ },
9261
+ resetsAt: new Date(resetTime).toISOString(),
9262
+ status: remainingPercent === 0 ? "exhausted" : "available",
9263
+ usedPercent
9264
+ };
9265
+ }
9266
+ //#endregion
9267
+ //#region ../../runtime/adapters/antigravity/dist/index.js
9268
+ const ANTIGRAVITY_CONVERSATION_BRIDGE_SPEC = resolveBuiltinAdapterConversationBridgeSpec("antigravity");
9269
+ function createAntigravityAdapter(options = {}) {
9270
+ const activeTasks = /* @__PURE__ */ new Map();
9271
+ const invoke = createDefaultAntigravityInvoke({
9272
+ activeTasks,
9273
+ options
9274
+ });
9275
+ const processInterruptSender = options.registerRuntimeProcess ? createProcessInterruptSender(activeTasks) : void 0;
9276
+ const controlShell = createSharedControlShell({
9277
+ gracefulTimeoutMs: options.gracefulTimeoutMs,
9278
+ sendCancel: options.sendCancel,
9279
+ sendInterrupt: options.sendInterrupt ?? processInterruptSender,
9280
+ waitForMs: options.waitForMs
9281
+ });
9282
+ const dispatch = createSharedDispatchShell({
9283
+ adapterId: "antigravity",
9284
+ bridgeSpec: ANTIGRAVITY_CONVERSATION_BRIDGE_SPEC,
9285
+ invoke: options.invoke,
9286
+ invokeByMode: options.invokeByMode,
9287
+ repairConversationPolicy: "require_canonical",
9288
+ resolveDefaultInvoke: () => invoke,
9289
+ runtimeOptions: options
9290
+ });
9291
+ return {
9292
+ adapterId: "antigravity",
9293
+ cancel: controlShell.cancel,
9294
+ dispatch,
9295
+ interrupt: controlShell.interrupt,
9296
+ verifyComputerFileAccessBoundary: () => Promise.resolve({
9297
+ reasonCode: "computer.file_access.controller_unsupported",
9298
+ supported: false
9299
+ })
9300
+ };
9301
+ }
9302
+ function createDefaultAntigravityInvoke(input) {
9303
+ return async (request) => {
9304
+ const task = {
9305
+ cancellationRequested: false,
9306
+ process: null
9307
+ };
9308
+ input.activeTasks.set(request.taskId, task);
9309
+ try {
9310
+ const launchContract = await resolveDispatchLaunchContract({
9311
+ antigravityBin: input.options.antigravityBin,
9312
+ inputLaunchContract: request.launchContract,
9313
+ optionLaunchContract: input.options.launchContract
9314
+ });
9315
+ if (task.cancellationRequested) throw new AntigravityCliTransportError({
9316
+ code: "runtime.cancelled_before_start",
9317
+ errorType: "adapter",
9318
+ message: "runtime.cancelled_before_start: Antigravity dispatch was canceled before launch"
9319
+ });
9320
+ const result = await invokeWithSingleContextHeal({
9321
+ contextId: normalizeOptionalText$41(request.agentControllerConversationId),
9322
+ contextLossPolicy: request.executionMode === "repair" ? "fail" : "rebuild",
9323
+ createRebuildFailedError: (error) => new AntigravityCliTransportError({
9324
+ code: "context.rebuild_failed",
9325
+ errorType: "adapter",
9326
+ message: `context.rebuild_failed: ${toErrorMessage$17(error)}`
9327
+ }),
9328
+ invokeOnce: async (sessionId) => {
9329
+ const transportResult = await withAntigravityDispatchSpaceAction({
9330
+ env: request.env,
9331
+ prompt: request.prompt,
9332
+ workdir: request.runtimeContext.providerRuntimeWorkingDirectory,
9333
+ run: async ({ prompt, jsonSchema }) => await invokeAntigravityCliTransport({
9334
+ agentControllerPermissionMode: request.agentControllerPermissionMode,
9335
+ conversationPolicy: request.conversationPolicy,
9336
+ env: request.env,
9337
+ jsonSchema,
9338
+ launchContract,
9339
+ onPreview: request.onPreview,
9340
+ onProcessControlEvent: (event) => {
9341
+ task.process = event.phase === "process_spawned" ? event : null;
9342
+ if (event.phase === "process_spawned" && task.cancellationRequested) signalProcess(event, "SIGINT");
9343
+ input.options.registerRuntimeProcess?.({
9344
+ ...event,
9345
+ taskId: request.taskId
9346
+ });
9347
+ },
9348
+ onRuntimeEvent: request.onRuntimeEvent,
9349
+ prompt,
9350
+ sessionId,
9351
+ timeoutMs: request.timeoutMs ?? null,
9352
+ workdir: request.runtimeContext.providerRuntimeWorkingDirectory
9353
+ })
9354
+ });
9355
+ return {
9356
+ contextId: transportResult.sessionId,
9357
+ output: transportResult.output,
9358
+ telemetry: transportResult.telemetry
9359
+ };
9360
+ },
9361
+ isContextLostError: (error) => error instanceof AntigravityCliTransportError && error.code === "context_not_found"
9362
+ });
9363
+ const agentControllerConversation = ANTIGRAVITY_CONVERSATION_BRIDGE_SPEC && result.contextId ? bridgeAgentControllerConversationRef({
9364
+ bridgeSpec: ANTIGRAVITY_CONVERSATION_BRIDGE_SPEC,
9365
+ agentControllerConversationId: result.contextId
9366
+ }) : null;
9367
+ return {
9368
+ contextDelta: {
9369
+ agentControllerConversationId: result.contextId,
9370
+ refreshed: result.contextHealed,
9371
+ ...agentControllerConversation ? { agentControllerConversation } : {}
9372
+ },
9373
+ output: result.output,
9374
+ telemetry: result.telemetry
9375
+ };
9376
+ } finally {
9377
+ if (input.activeTasks.get(request.taskId) === task) input.activeTasks.delete(request.taskId);
9378
+ }
9379
+ };
9380
+ }
9381
+ async function resolveDispatchLaunchContract(input) {
9382
+ const commandPath = normalizeOptionalText$41(input.antigravityBin);
9383
+ const launchContract = input.inputLaunchContract ?? input.optionLaunchContract ?? (commandPath ? buildExecutableLaunchContract({ commandPath }) : null);
9384
+ if (!launchContract) throw Object.assign(/* @__PURE__ */ new Error("Antigravity CLI launch contract is required for dispatch."), {
9385
+ code: "controller.launch.needs_repair",
9386
+ errorType: "config"
9387
+ });
9388
+ const verification = await verifyAntigravityLaunchContract({ launchContract });
9389
+ if (!verification.ok) throw Object.assign(new Error(verification.errorMessage), {
9390
+ code: "controller.launch.needs_repair",
9391
+ errorType: "config"
9392
+ });
9393
+ return launchContract;
9394
+ }
9395
+ function createProcessInterruptSender(activeTasks) {
9396
+ return (signal) => {
9397
+ const task = activeTasks.get(signal.taskId);
9398
+ if (!task) return Promise.reject(Object.assign(/* @__PURE__ */ new Error("Antigravity task is not running."), { code: "task.not_running" }));
9399
+ task.cancellationRequested = true;
9400
+ if (!task.process) return Promise.resolve();
9401
+ return signalProcess(task.process, signal.mode === "force" ? "SIGKILL" : "SIGINT") ? Promise.resolve() : Promise.reject(/* @__PURE__ */ new Error("Antigravity process signal was not sent."));
9402
+ };
9403
+ }
9404
+ function signalProcess(processEvent, signal) {
9405
+ return signalAgentControllerProcessTree({
9406
+ processId: processEvent.processId,
9407
+ signal,
9408
+ signalTarget: processEvent.signalTarget
9409
+ });
9410
+ }
9411
+ function normalizeOptionalText$41(value) {
9412
+ const normalized = String(value ?? "").trim();
9413
+ return normalized.length > 0 ? normalized : null;
9414
+ }
9415
+ function toErrorMessage$17(error) {
9416
+ return error instanceof Error ? error.message : String(error);
9417
+ }
9418
+ //#endregion
9419
+ //#region ../../runtime/local-service/src/adapters/installers/install-antigravity.ts
9420
+ const installAntigravityAdapter = {
9421
+ adapterId: "antigravity",
9422
+ install(input) {
9423
+ const antigravityAdapter = createAntigravityAdapter({ ...input.registerRuntimeProcess ? { registerRuntimeProcess: input.registerRuntimeProcess } : {} });
9424
+ return {
9425
+ adapter: antigravityAdapter,
9426
+ adapterId: antigravityAdapter.adapterId,
9427
+ transportModes: ["local-cli"]
9428
+ };
9429
+ }
9430
+ };
9431
+ //#endregion
8576
9432
  //#region ../../runtime/adapters/claude-code/dist/config/claude-runtime-config.js
8577
9433
  const DEFAULT_CLAUDE_CODE_COMMAND = "claude";
8578
9434
  async function resolveInstalledClaudeCodeLaunchCandidates(input) {
@@ -11470,6 +12326,7 @@ foreach ($path in $paths) {
11470
12326
  //#region ../../runtime/adapters/codex/dist/transport/codex-app-server-transport.js
11471
12327
  const CODEX_APP_SERVER_VERSION_PATTERN = /\/([^\s]+)/u;
11472
12328
  const EXECUTION_CONTEXT_ERROR_PATTERN = /^(execution_context\.[a-z_]+|context\.mcp_isolation_unverified)(?::|$)/u;
12329
+ const REQUIRED_MCP_INITIALIZATION_FAILURE_PATTERN = /required MCP servers? failed to initialize/iu;
11473
12330
  const APP_SERVER_PROCESS_KILL_GRACE_MS = 1e3;
11474
12331
  const DEFAULT_APP_SERVER_STARTUP_TIMEOUT_MS = 15e3;
11475
12332
  var CodexAppServerTransportError = class extends Error {
@@ -13226,6 +14083,11 @@ function buildServerRequestDeclineResponse(method) {
13226
14083
  function toJsonRpcTransportError$1(error) {
13227
14084
  const message = normalizeOptionalText$31(error.message) ?? "codex app-server error";
13228
14085
  const originalError = createProviderOriginalError(message) ?? void 0;
14086
+ const mcpInitializationFailure = classifyCodexRequiredMcpInitializationFailure({
14087
+ message,
14088
+ ...typeof error.code === "number" ? { rpcErrorCode: error.code } : {}
14089
+ });
14090
+ if (mcpInitializationFailure) return mcpInitializationFailure;
13229
14091
  const permissionDenial = classifyRuntimePermissionDenialMessage({
13230
14092
  message,
13231
14093
  source: "codex"
@@ -13265,6 +14127,16 @@ function toJsonRpcTransportError$1(error) {
13265
14127
  ...typeof error.code === "number" ? { rpcErrorCode: error.code } : {}
13266
14128
  });
13267
14129
  }
14130
+ function classifyCodexRequiredMcpInitializationFailure(input) {
14131
+ if (!REQUIRED_MCP_INITIALIZATION_FAILURE_PATTERN.test(input.message)) return null;
14132
+ return new CodexAppServerTransportError({
14133
+ code: "execution_context.mcp_server_initialization_failed",
14134
+ errorType: "config",
14135
+ message: "execution_context.mcp_server_initialization_failed: required tools could not start",
14136
+ originalError: createProviderOriginalError(input.message) ?? void 0,
14137
+ ...typeof input.rpcErrorCode === "number" ? { rpcErrorCode: input.rpcErrorCode } : {}
14138
+ });
14139
+ }
13268
14140
  function toCodexAppServerTransportError(error, timeoutMs) {
13269
14141
  if (error instanceof CodexAppServerTransportError) return error;
13270
14142
  const contextError = error instanceof Error ? EXECUTION_CONTEXT_ERROR_PATTERN.exec(error.message)?.[1] : void 0;
@@ -21066,6 +21938,7 @@ const installOpenCodeAdapter = {
21066
21938
  //#region ../../runtime/local-service/src/adapters/installers/list-installers.ts
21067
21939
  function listLocalAdapterInstallers() {
21068
21940
  return [
21941
+ installAntigravityAdapter,
21069
21942
  installClaudeCodeAdapter,
21070
21943
  installCodexAdapter,
21071
21944
  installCursorAdapter,
@@ -22334,7 +23207,7 @@ async function syncDaemonRouteCatalogState(input) {
22334
23207
  return {
22335
23208
  status: "failed",
22336
23209
  reason: "load_failed",
22337
- errorMessage: toErrorMessage$19(error)
23210
+ errorMessage: toErrorMessage$20(error)
22338
23211
  };
22339
23212
  }
22340
23213
  const nextFingerprint = buildRouteCatalogFingerprint(nextCatalog);
@@ -22347,7 +23220,7 @@ async function syncDaemonRouteCatalogState(input) {
22347
23220
  return {
22348
23221
  status: "failed",
22349
23222
  reason: "register_failed",
22350
- errorMessage: toErrorMessage$19(error)
23223
+ errorMessage: toErrorMessage$20(error)
22351
23224
  };
22352
23225
  }
22353
23226
  applyAcceptedLeases({
@@ -22388,7 +23261,7 @@ async function syncDaemonRouteCatalogState(input) {
22388
23261
  return {
22389
23262
  status: "failed",
22390
23263
  reason: "register_failed",
22391
- errorMessage: toErrorMessage$19(error)
23264
+ errorMessage: toErrorMessage$20(error)
22392
23265
  };
22393
23266
  }
22394
23267
  const diff = buildRouteCatalogDiff({
@@ -23029,20 +23902,50 @@ var registry_default = {
23029
23902
  "id": "antigravity",
23030
23903
  "displayName": "Antigravity",
23031
23904
  "category": "builtin",
23032
- "skillsDir": ".agent/skills",
23033
- "globalSkillsDir": "${HOME}/.gemini/antigravity/skills",
23905
+ "skillsDir": ".agents/skills",
23906
+ "globalSkillsDir": ["${HOME}/.gemini/antigravity-cli/skills", "${HOME}/.gemini/antigravity/skills"],
23034
23907
  "detection": {
23035
23908
  "mode": "any",
23036
- "checks": [{
23037
- "kind": "pathExists",
23038
- "value": "${HOME}/.gemini/antigravity"
23039
- }]
23909
+ "checks": [
23910
+ {
23911
+ "kind": "commandExists",
23912
+ "value": "agy"
23913
+ },
23914
+ {
23915
+ "kind": "pathExists",
23916
+ "value": "${HOME}/.gemini/antigravity-cli"
23917
+ },
23918
+ {
23919
+ "kind": "pathExists",
23920
+ "value": "${HOME}/.gemini/antigravity"
23921
+ }
23922
+ ]
23040
23923
  },
23041
23924
  "service": { "skillsInstallable": true },
23042
23925
  "runtime": {
23043
- "supported": false,
23044
- "adapters": []
23045
- }
23926
+ "supported": true,
23927
+ "adapters": [{
23928
+ "adapterId": "antigravity",
23929
+ "controllerRefMatcher": {
23930
+ "kind": "contains",
23931
+ "values": ["antigravity"]
23932
+ },
23933
+ "transportModes": ["local-cli"],
23934
+ "capabilityDeclaration": {
23935
+ "executionContextVersion": 2,
23936
+ "streamingCapability": "preview_capable",
23937
+ "imageInputCapability": "unsupported",
23938
+ "runtimeWorkingDirectoryMode": "spawn_cwd",
23939
+ "preparationRequirement": "none",
23940
+ "continuationCapability": "standard",
23941
+ "workspaceResumeBehavior": "validate_only"
23942
+ }
23943
+ }]
23944
+ },
23945
+ "lifecycle": { "status": "active" },
23946
+ "transportModes": ["local-cli"],
23947
+ "defaultTransportMode": "local-cli",
23948
+ "defaultStreamingMode": "stream"
23046
23949
  },
23047
23950
  {
23048
23951
  "id": "augment",
@@ -23947,8 +24850,111 @@ var registry_default = {
23947
24850
  //#region src/model-catalog/offline-catalog.json
23948
24851
  var offline_catalog_default = {
23949
24852
  schemaVersion: 1,
23950
- updatedAt: "2026-09-01T00:00:00.000Z",
24853
+ updatedAt: "2026-09-21T00:00:00.000Z",
23951
24854
  agentControllers: {
24855
+ "antigravity": {
24856
+ "defaultModelId": "gemini-3.8-flash-high",
24857
+ "models": [
24858
+ {
24859
+ "id": "gemini-3.8-flash-high",
24860
+ "displayName": "Gemini 3.8 Flash (High)",
24861
+ "unavailable": false,
24862
+ "supportedReasoningLevels": [],
24863
+ "minCliVersion": "1.2.7"
24864
+ },
24865
+ {
24866
+ "id": "gemini-3.8-flash-medium",
24867
+ "displayName": "Gemini 3.8 Flash (Medium)",
24868
+ "unavailable": false,
24869
+ "supportedReasoningLevels": [],
24870
+ "minCliVersion": "1.2.7"
24871
+ },
24872
+ {
24873
+ "id": "gemini-3.8-flash-low",
24874
+ "displayName": "Gemini 3.8 Flash (Low)",
24875
+ "unavailable": false,
24876
+ "supportedReasoningLevels": [],
24877
+ "minCliVersion": "1.2.7"
24878
+ },
24879
+ {
24880
+ "id": "gemini-3.7-flash-high",
24881
+ "displayName": "Gemini 3.7 Flash (High)",
24882
+ "unavailable": false,
24883
+ "supportedReasoningLevels": [],
24884
+ "minCliVersion": "1.2.7"
24885
+ },
24886
+ {
24887
+ "id": "gemini-3.7-flash-medium",
24888
+ "displayName": "Gemini 3.7 Flash (Medium)",
24889
+ "unavailable": false,
24890
+ "supportedReasoningLevels": [],
24891
+ "minCliVersion": "1.2.7"
24892
+ },
24893
+ {
24894
+ "id": "gemini-3.7-flash-low",
24895
+ "displayName": "Gemini 3.7 Flash (Low)",
24896
+ "unavailable": false,
24897
+ "supportedReasoningLevels": [],
24898
+ "minCliVersion": "1.2.7"
24899
+ },
24900
+ {
24901
+ "id": "gemini-3.6-flash-high",
24902
+ "displayName": "Gemini 3.6 Flash (High)",
24903
+ "unavailable": false,
24904
+ "supportedReasoningLevels": [],
24905
+ "minCliVersion": "1.2.7"
24906
+ },
24907
+ {
24908
+ "id": "gemini-3.6-flash-medium",
24909
+ "displayName": "Gemini 3.6 Flash (Medium)",
24910
+ "unavailable": false,
24911
+ "supportedReasoningLevels": [],
24912
+ "minCliVersion": "1.2.7"
24913
+ },
24914
+ {
24915
+ "id": "gemini-3.6-flash-low",
24916
+ "displayName": "Gemini 3.6 Flash (Low)",
24917
+ "unavailable": false,
24918
+ "supportedReasoningLevels": [],
24919
+ "minCliVersion": "1.2.7"
24920
+ },
24921
+ {
24922
+ "id": "gemini-3.1-pro-high",
24923
+ "displayName": "Gemini 3.1 Pro (High)",
24924
+ "unavailable": false,
24925
+ "supportedReasoningLevels": [],
24926
+ "minCliVersion": "1.2.7"
24927
+ },
24928
+ {
24929
+ "id": "gemini-3.1-pro-low",
24930
+ "displayName": "Gemini 3.1 Pro (Low)",
24931
+ "unavailable": false,
24932
+ "supportedReasoningLevels": [],
24933
+ "minCliVersion": "1.2.7"
24934
+ },
24935
+ {
24936
+ "id": "claude-sonnet-4-6",
24937
+ "displayName": "Claude Sonnet 4.6 (Thinking)",
24938
+ "unavailable": false,
24939
+ "supportedReasoningLevels": [],
24940
+ "minCliVersion": "1.2.7"
24941
+ },
24942
+ {
24943
+ "id": "claude-opus-4-6-thinking",
24944
+ "displayName": "Claude Opus 4.6 (Thinking)",
24945
+ "unavailable": false,
24946
+ "supportedReasoningLevels": [],
24947
+ "minCliVersion": "1.2.7"
24948
+ },
24949
+ {
24950
+ "id": "gpt-oss-120b-medium",
24951
+ "displayName": "GPT-OSS 120B (Medium)",
24952
+ "unavailable": false,
24953
+ "supportedReasoningLevels": [],
24954
+ "minCliVersion": "1.2.7"
24955
+ }
24956
+ ]
24957
+ },
23952
24958
  "codex": {
23953
24959
  "defaultModelId": "gpt-5.6-sol",
23954
24960
  "models": [
@@ -26081,6 +27087,29 @@ const EMPTY_AGENT_CONTROLLER_INTERFACE_CAPABILITIES = {
26081
27087
  structuredUserInput: false
26082
27088
  };
26083
27089
  const BUILTIN_AGENT_CONTROLLER_DEFINITIONS = [
27090
+ {
27091
+ adapterId: "antigravity",
27092
+ agentId: "antigravity",
27093
+ capabilities: {
27094
+ approvals: false,
27095
+ cancel: true,
27096
+ interrupt: true,
27097
+ modelSelection: true,
27098
+ nativeEventStream: true,
27099
+ permissionModes: true,
27100
+ structuredUserInput: false
27101
+ },
27102
+ conversationOccupancy: {
27103
+ contractVersion: 1,
27104
+ mode: "unsupported"
27105
+ },
27106
+ installResolver: {
27107
+ resolveInstalledLaunchCandidates: resolveInstalledAntigravityLaunchCandidates,
27108
+ verifyLaunchContract: verifyAntigravityLaunchContract
27109
+ },
27110
+ nativeInterface: "local-cli",
27111
+ usageLimitSupport: resolveAgentControllerUsageLimitSupport("builtin:antigravity")
27112
+ },
26084
27113
  {
26085
27114
  adapterId: "claude-code",
26086
27115
  agentId: "claude-code",
@@ -28123,9 +29152,9 @@ function createModelCatalogReadSession(input) {
28123
29152
  async function readModelCatalogOnce(baseUrl) {
28124
29153
  try {
28125
29154
  const [apiClient, baseUrlModule, clientFoundationModule] = await Promise.all([
28126
- import("./dist-DZYJ8yLA.js"),
28127
- import("./base-url-CiSsUvmr.js"),
28128
- import("./api-client-foundation-DdtV7aF-.js")
29155
+ import("./dist-C1fbc-VK.js"),
29156
+ import("./base-url-CMBApK1J.js"),
29157
+ import("./api-client-foundation-D1M0bkwm.js")
28129
29158
  ]);
28130
29159
  if (typeof apiClient.createConfigApi !== "function") throw new Error("config api client is unavailable");
28131
29160
  const resolvedBaseUrl = baseUrl ?? await baseUrlModule.resolveBaseUrl();
@@ -28419,9 +29448,9 @@ function resolveBoundProfileLocalRouteCandidate(input) {
28419
29448
  const agentControllerCollaborationMode = resolveNativeAgentControllerCollaborationModeForController(binding.agentControllerCollaborationMode, { agentControllerRef: agentControllerRef.ref });
28420
29449
  return {
28421
29450
  agentControllerRef: agentControllerRef.ref,
28422
- agentControllerConversationId: normalizeOptionalText$49(executionTarget.agentControllerConversationId),
29451
+ agentControllerConversationId: normalizeOptionalText$52(executionTarget.agentControllerConversationId),
28423
29452
  openMeldServiceRuntimeId: executionTarget.openMeldServiceRuntimeId.value,
28424
- bindingId: normalizeOptionalText$49(binding.bindingId),
29453
+ bindingId: normalizeOptionalText$52(binding.bindingId),
28425
29454
  ...agentControllerCollaborationMode ? { agentControllerCollaborationMode } : {},
28426
29455
  ...agentControllerPermissionMode ? { agentControllerPermissionMode } : {},
28427
29456
  ...binding.modelSelection ? { modelSelection: binding.modelSelection } : {},
@@ -28764,7 +29793,7 @@ async function repairLocalReplyStateOrThrow(input) {
28764
29793
  mode: "repair"
28765
29794
  });
28766
29795
  } catch (error) {
28767
- const errorMessage = toErrorMessage$19(error);
29796
+ const errorMessage = toErrorMessage$20(error);
28768
29797
  emitRunLine({
28769
29798
  presenter: input.presenter,
28770
29799
  code: "daemon.run.projection_sync_failed",
@@ -28781,7 +29810,7 @@ async function repairLocalReplyStateOrThrow(input) {
28781
29810
  try {
28782
29811
  await syncProfileWorkspaceState({ mode: "repair" });
28783
29812
  } catch (error) {
28784
- const errorMessage = toErrorMessage$19(error);
29813
+ const errorMessage = toErrorMessage$20(error);
28785
29814
  emitRunLine({
28786
29815
  presenter: input.presenter,
28787
29816
  code: "daemon.run.profile_workspace_sync_failed",
@@ -29882,7 +30911,7 @@ const DEFAULT_OPENCLAW_RUNTIME_PREPARATION_DEPS = {
29882
30911
  fetchGatewayHealth: fetchOpenClawGatewayHealth
29883
30912
  };
29884
30913
  async function prepareOpenClawRuntime(input, deps = DEFAULT_OPENCLAW_RUNTIME_PREPARATION_DEPS) {
29885
- const profileName = normalizeOptionalText$49(input.profileName);
30914
+ const profileName = normalizeOptionalText$52(input.profileName);
29886
30915
  if (!profileName) throw new DaemonServiceRunError({
29887
30916
  code: "controller.bootstrap.failed",
29888
30917
  message: "controller.bootstrap.failed: OpenClaw bootstrap requires an OpenMeld profile name"
@@ -29945,12 +30974,12 @@ function buildOpenClawGatewayVisibilityFailure(error) {
29945
30974
  }
29946
30975
  function extractErrorCode(error) {
29947
30976
  if (!(error && typeof error === "object" && "code" in error)) return;
29948
- return normalizeOptionalText$49(error.code) ?? void 0;
30977
+ return normalizeOptionalText$52(error.code) ?? void 0;
29949
30978
  }
29950
30979
  function resolveOpenClawGatewayVisibilityDiagnostics(error) {
29951
30980
  if (!(error instanceof Error)) return;
29952
30981
  const diagnostics = error.diagnostics;
29953
- if (!diagnostics || typeof diagnostics !== "object" || !normalizeOptionalText$49(diagnostics.agentId)) return;
30982
+ if (!diagnostics || typeof diagnostics !== "object" || !normalizeOptionalText$52(diagnostics.agentId)) return;
29954
30983
  const parsedGatewayVisibility = openMeldDaemonTaskResultOpenClawGatewayVisibilityStatusSchema.safeParse(diagnostics.gatewayVisibility);
29955
30984
  if (!parsedGatewayVisibility.success) return;
29956
30985
  return {
@@ -29977,6 +31006,6 @@ async function prepareProviderRuntime(input, options = {}) {
29977
31006
  return await preparer(input);
29978
31007
  }
29979
31008
  //#endregion
29980
- export { canManageRegistryAgentSkillTargets as $, buildAgentControllerRef as $n, mergeOpenClawGatewayVisibility as $t, createExpectedRoutesReadSession as A, buildRuntimeWorkspaceFingerprint as An, resolveBuiltinAgentControllerBrand as Ar, ensureOpenMeldManagedProfileWorkspace as At, reconcileNewRunnableBuiltinAgentsForSetup as B, withLedgerStateTransaction as Bn, createMutableRouteCatalogState as Bt, createModelCatalogReadSession as C, verifyCodexAppServerThread as Cn, MIN_HEARTBEAT_INTERVAL_MS as Cr, resolveLocalProjectConnectionForPath as Ct, NO_LOCAL_AGENTS_NEED_OPENMELD_SERVICE_REASON as D, emitReconcileStartedEvidence as Dn, resolveAdaptiveHeartbeatIntervalMs as Dr, resolveRegistryOriginLaunchCommand as Dt, resolveProfileWorkspaceRuntime as E, emitReconcileCompletedEvidence as En, pruneStaleLeases as Er, listBuiltinAgentsRegistryEntries as Et, listAgentRegistrations as F, removeConversationExecutionState as Fn, resolveConfiguredProfileWorkspacePathForAccount as Ft, updateAgentRegistrations as G, createUnsupportedProviderUsageLimits as Gn, syncRuntimeEventToInflightTaskControlRegistry as Gt, resolveAgentTargetState as H, assertLegacyAgentContextAssociation as Hn, summarizeSkippedDaemonProfiles as Ht, listAgentTargetStates as I, resolveConversationExecutionStateByLookupKey as In, setCustomProfileWorkspace as It, normalizeAgentIds as J, materializeCliLaunchCommand as Jn, isDaemonReconcileInProgressError as Jt, notifyDaemonRouteCatalogChanged as K, resolveDispatchSpaceActionMcpServer as Kn, SPACE_ACTION_CONTEXT_GUIDANCE_LINES as Kt, manageAgentRegistrationInstallation as L, seedLegacyAgentContext as Ln, setOpenMeldManagedProfileWorkspace as Lt, addAgentCustomTarget as M, appendLedgerHistoryEntry as Mn, readProfileWorkspaceConfig as Mt, createRegistrationFromCatalogTarget as N, commitResolvedAgentContext as Nn, readProfileWorkspaceConfigForAccount as Nt, syncDeviceRuntimeStateProjection as O, DaemonServiceRunError as On, resolveCatalogSyncIntervalMs as Or, resolveRegistryRuntimeAdapterCapabilitySnapshot as Ot, listAgentCustomTargets as P, loadLedgerState as Pn, resolveConfiguredProfileWorkspacePath as Pt, resolveLocalRegistryAgentIdFromAgentControllerRef as Q, areAgentControllerInterfaceAccountsSame as Qn, createPendingAgentInteractionRegistry as Qt, readAgentRuntimeConfigHealth as R, settleInflightTask as Rn, validateCustomProfileWorkspacePath as Rt, syncProfileWorkspaceState as S, resolveCodexAppServerCompletedTurn as Sn, MAX_HEARTBEAT_INTERVAL_MS as Sr, canonicalizeLocalProjectPath as St, resolveEffectiveProfileWorkingFolderRuntime as T, emitDriftDetectedEvidence as Tn, applyIntervalJitterMs as Tr, withAgentActivityLocalStateLock as Tt, setAgentRegistrationEnabled as U, buildAgentContextLookupKey as Un, syncDaemonRouteCatalogState as Ut, removeAgentCustomTarget as V, buildAuthenticatedControlPlaneResponse as Vn, createRouteCatalogFromMutableState as Vt, updateAgentCustomTarget as W, createUnavailableProviderUsageLimits as Wn, normalizeDispatchThreadAction as Wt, sortAgentRegistrations as X, createProviderOriginalError as Xn, buildDispatchReplyContextSummary as Xt, parseAgentEnabledOption as Y, listAgentControllerSupervisedProcessIds as Yn, createSerialAgentInteractionCallback as Yt, repairBuiltinControllerInstall as Z, DEFAULT_TASK_LIFECYCLE_HEARTBEAT_INTERVAL_MS as Zn, normalizeDispatchPostMessageAction as Zt, loadDaemonRouteCatalog as _, resolveInstalledGrokBuildLaunchCandidates as _n, resolveEvidenceSyncHealth as _r, removeProjectConnection as _t, buildOpenClawSpaceSessionKey as a, resolveDispatchContinuityObservation as an, getAgentControllerPermissionModeDisplayMetadata as ar, isHomebrewCommandPath as at, resolveLocalController as b, resolveInstalledCodexLaunchCandidates as bn, resolveRouteRegistrationReconcileDecision as br, setDefaultProjectConnection as bt, findOpenClawAgentById as c, resolveLatestScopedConversationExecutionState as cn, listAgentControllerPermissionModeOptions as cr, ProjectBindingOperationError as ct, resolveOpenClawAuthStatus as d, createLocalAdapterEntries as dn, projectPeopleComputersToLegacyLocalRuntimes as dr, isProjectBound as dt, createLocalTaskInterruptSender as en, buildInformationProtectionPromptPlan as er, detectInstalledSkillsAgents as et, resolveOpenClawProviderRuntimeWorkingDirectory as f, parseOpenCodeGoUsageResponse as fn, renderInformationProtectionPrompt as fr, listProjectBindings as ft, writeDaemonRouteCatalogCache as g, probeGrokBuildAcpInterface as gn, resolveAgentProfileEditCapabilities as gr, removeMissingProjectConnections as gt, readDaemonRouteCatalogCache as h, GrokBuildAcpTransportError as hn, resolveAgentExecutionStatus as hr, removeAgentActivityBindingsWhileDeliveryLocked as ht, listOpenClawGatewayAgents as i, resolveDispatchQueueLogMeta as in, createAuthorityOpenMeldServiceRuntimeId as ir, isBunGlobalCommandPath as it, resolveAgentProfilePrimaryAgentControllerReport as j, buildTaskResultEnvelope as jn, normalizeCustomProfileWorkspacePath as jt, createPrimaryBindingReadSession as k, runRuntimeTask as kn, compareAgentControllerRefsForDisplay as kr, resolveRegistryRuntimeAdapterContractByAgentControllerRef as kt, findOpenClawAgentsByWorkspace as l, resolveCatalogSyncSkippedProfilesLogState as ln, parseAgentControllerRef as lr, ProjectBindingStoreUpdateRequiredError as lt, resolveOpenClawLocalBootstrapPaths as m, resolveInstalledOpenCodeLaunchCandidates as mn, resolveAgentControllerPermissionModeForController as mr, migrateProjectBindingStore as mt, fetchOpenClawGatewayHealth as n, createLocalExecutionSlots as nn, createAgentControllerInterfaceDisplayRows as nr, EMPTY_AGENT_CONTROLLER_INTERFACE_CAPABILITIES as nt, normalizeOpenClawSpaceIdPrefix as o, resolveCompatibleAgentContextMatch as on, getAgentControllerPermissionModeFieldLabel as or, isNpmGlobalCommandPath as ot, readOpenClawLocalBootstrapState as p, forkOpenCodeServerSession as pn, renderWorkingLanguagePrompt as pr, listProjectConnectionsWithStatus as pt, normalizeAgentId as q, buildCliLaunchInvocation as qn, SPACE_ACTION_TARGET_GUIDANCE_LINES as qt, listOpenClawAgents as r, createInflightTaskControlRegistry as rn, createAgentExecutionStatusDisplayRows as rr, resolveBuiltinAgentControllerDefinition as rt, slugifyOpenClawNamePart as s, resolveCompatibleConversationExecutionState as sn, isAgentExecutionReadyOrConnecting as sr, isPnpmGlobalCommandPath as st, prepareProviderRuntime as t, buildLocalServiceDiagnosticsPayload as tn, buildWorkingLanguagePromptPlan as tr, resolveSkillsAgentRegistry as tt, matchesExpectedWorkspace as u, createLocalAdapterContainer as un, peopleComputerContainsDevice as ur, bindProject as ut, buildRuntimeRouteTargets as v, projectCodexUsageLimits as vn, resolveNativeAgentControllerPermissionModeForController as vr, resolveProjectBindingForPath as vt, resolveCurrentEffectiveProfileWorkingFolderRuntime as w, resolveInstalledClaudeCodeLaunchCandidates as wn, applyAcceptedLeases as wr, withAgentActivityDeliveryLock as wt, resolveLocalRuntimeControllerSupport as x, forkCodexAppServerThread as xn, ADAPTIVE_HEARTBEAT_JITTER_RATIO as xr, unbindProject as xt, readLocalEnabledControllers as y, resolveCodexTimeoutMs as yn, resolveSelectableCandidates as yr, runIfAgentActivityBindingGenerationIsCurrent as yt, reconcileNewRunnableBuiltinAgentRegistrations as z, upsertConversationExecutionState as zn, describeProfileWorkspacePathValidationFailure as zt };
31009
+ export { canManageRegistryAgentSkillTargets as $, areAgentControllerInterfaceAccountsSame as $n, mergeOpenClawGatewayVisibility as $t, createExpectedRoutesReadSession as A, runRuntimeTask as An, compareAgentControllerRefsForDisplay as Ar, ensureOpenMeldManagedProfileWorkspace as At, reconcileNewRunnableBuiltinAgentsForSetup as B, upsertConversationExecutionState as Bn, createMutableRouteCatalogState as Bt, createModelCatalogReadSession as C, verifyCodexAppServerThread as Cn, MAX_HEARTBEAT_INTERVAL_MS as Cr, resolveLocalProjectConnectionForPath as Ct, NO_LOCAL_AGENTS_NEED_OPENMELD_SERVICE_REASON as D, emitReconcileCompletedEvidence as Dn, pruneStaleLeases as Dr, resolveRegistryOriginLaunchCommand as Dt, resolveProfileWorkspaceRuntime as E, emitDriftDetectedEvidence as En, applyIntervalJitterMs as Er, listBuiltinAgentsRegistryEntries as Et, listAgentRegistrations as F, loadLedgerState as Fn, resolveConfiguredProfileWorkspacePathForAccount as Ft, updateAgentRegistrations as G, createUnavailableProviderUsageLimits as Gn, syncRuntimeEventToInflightTaskControlRegistry as Gt, resolveAgentTargetState as H, buildAuthenticatedControlPlaneResponse as Hn, summarizeSkippedDaemonProfiles as Ht, listAgentTargetStates as I, removeConversationExecutionState as In, setCustomProfileWorkspace as It, normalizeAgentIds as J, buildCliLaunchInvocation as Jn, isDaemonReconcileInProgressError as Jt, notifyDaemonRouteCatalogChanged as K, createUnsupportedProviderUsageLimits as Kn, SPACE_ACTION_CONTEXT_GUIDANCE_LINES as Kt, manageAgentRegistrationInstallation as L, resolveConversationExecutionStateByLookupKey as Ln, setOpenMeldManagedProfileWorkspace as Lt, addAgentCustomTarget as M, buildTaskResultEnvelope as Mn, readProfileWorkspaceConfig as Mt, createRegistrationFromCatalogTarget as N, appendLedgerHistoryEntry as Nn, readProfileWorkspaceConfigForAccount as Nt, syncDeviceRuntimeStateProjection as O, emitReconcileStartedEvidence as On, resolveAdaptiveHeartbeatIntervalMs as Or, resolveRegistryRuntimeAdapterCapabilitySnapshot as Ot, listAgentCustomTargets as P, commitResolvedAgentContext as Pn, resolveConfiguredProfileWorkspacePath as Pt, resolveLocalRegistryAgentIdFromAgentControllerRef as Q, DEFAULT_TASK_LIFECYCLE_HEARTBEAT_INTERVAL_MS as Qn, createPendingAgentInteractionRegistry as Qt, readAgentRuntimeConfigHealth as R, seedLegacyAgentContext as Rn, validateCustomProfileWorkspacePath as Rt, syncProfileWorkspaceState as S, resolveCodexAppServerCompletedTurn as Sn, ADAPTIVE_HEARTBEAT_JITTER_RATIO as Sr, canonicalizeLocalProjectPath as St, resolveEffectiveProfileWorkingFolderRuntime as T, parseAntigravityUsageLimits as Tn, applyAcceptedLeases as Tr, withAgentActivityLocalStateLock as Tt, setAgentRegistrationEnabled as U, assertLegacyAgentContextAssociation as Un, syncDaemonRouteCatalogState as Ut, removeAgentCustomTarget as V, withLedgerStateTransaction as Vn, createRouteCatalogFromMutableState as Vt, updateAgentCustomTarget as W, buildAgentContextLookupKey as Wn, normalizeDispatchThreadAction as Wt, sortAgentRegistrations as X, listAgentControllerSupervisedProcessIds as Xn, buildDispatchReplyContextSummary as Xt, parseAgentEnabledOption as Y, materializeCliLaunchCommand as Yn, createSerialAgentInteractionCallback as Yt, repairBuiltinControllerInstall as Z, createProviderOriginalError as Zn, normalizeDispatchPostMessageAction as Zt, loadDaemonRouteCatalog as _, resolveInstalledGrokBuildLaunchCandidates as _n, resolveAgentProfileEditCapabilities as _r, removeProjectConnection as _t, buildOpenClawSpaceSessionKey as a, resolveDispatchContinuityObservation as an, createAuthorityOpenMeldServiceRuntimeId as ar, isHomebrewCommandPath as at, resolveLocalController as b, resolveInstalledCodexLaunchCandidates as bn, resolveSelectableCandidates as br, setDefaultProjectConnection as bt, findOpenClawAgentById as c, resolveLatestScopedConversationExecutionState as cn, isAgentExecutionReadyOrConnecting as cr, ProjectBindingOperationError as ct, resolveOpenClawAuthStatus as d, createLocalAdapterEntries as dn, peopleComputerContainsDevice as dr, isProjectBound as dt, createLocalTaskInterruptSender as en, buildAgentControllerRef as er, detectInstalledSkillsAgents as et, resolveOpenClawProviderRuntimeWorkingDirectory as f, parseOpenCodeGoUsageResponse as fn, projectPeopleComputersToLegacyLocalRuntimes as fr, listProjectBindings as ft, writeDaemonRouteCatalogCache as g, probeGrokBuildAcpInterface as gn, resolveAgentExecutionStatus as gr, removeMissingProjectConnections as gt, readDaemonRouteCatalogCache as h, GrokBuildAcpTransportError as hn, resolveAgentControllerPermissionModeForController as hr, removeAgentActivityBindingsWhileDeliveryLocked as ht, listOpenClawGatewayAgents as i, resolveDispatchQueueLogMeta as in, createAgentExecutionStatusDisplayRows as ir, isBunGlobalCommandPath as it, resolveAgentProfilePrimaryAgentControllerReport as j, buildRuntimeWorkspaceFingerprint as jn, resolveBuiltinAgentControllerBrand as jr, normalizeCustomProfileWorkspacePath as jt, createPrimaryBindingReadSession as k, DaemonServiceRunError as kn, resolveCatalogSyncIntervalMs as kr, resolveRegistryRuntimeAdapterContractByAgentControllerRef as kt, findOpenClawAgentsByWorkspace as l, resolveCatalogSyncSkippedProfilesLogState as ln, listAgentControllerPermissionModeOptions as lr, ProjectBindingStoreUpdateRequiredError as lt, resolveOpenClawLocalBootstrapPaths as m, resolveInstalledOpenCodeLaunchCandidates as mn, renderWorkingLanguagePrompt as mr, migrateProjectBindingStore as mt, fetchOpenClawGatewayHealth as n, createLocalExecutionSlots as nn, buildWorkingLanguagePromptPlan as nr, EMPTY_AGENT_CONTROLLER_INTERFACE_CAPABILITIES as nt, normalizeOpenClawSpaceIdPrefix as o, resolveCompatibleAgentContextMatch as on, getAgentControllerPermissionModeDisplayMetadata as or, isNpmGlobalCommandPath as ot, readOpenClawLocalBootstrapState as p, forkOpenCodeServerSession as pn, renderInformationProtectionPrompt as pr, listProjectConnectionsWithStatus as pt, normalizeAgentId as q, resolveDispatchSpaceActionMcpServer as qn, SPACE_ACTION_TARGET_GUIDANCE_LINES as qt, listOpenClawAgents as r, createInflightTaskControlRegistry as rn, createAgentControllerInterfaceDisplayRows as rr, resolveBuiltinAgentControllerDefinition as rt, slugifyOpenClawNamePart as s, resolveCompatibleConversationExecutionState as sn, getAgentControllerPermissionModeFieldLabel as sr, isPnpmGlobalCommandPath as st, prepareProviderRuntime as t, buildLocalServiceDiagnosticsPayload as tn, buildInformationProtectionPromptPlan as tr, resolveSkillsAgentRegistry as tt, matchesExpectedWorkspace as u, createLocalAdapterContainer as un, parseAgentControllerRef as ur, bindProject as ut, buildRuntimeRouteTargets as v, projectCodexUsageLimits as vn, resolveEvidenceSyncHealth as vr, resolveProjectBindingForPath as vt, resolveCurrentEffectiveProfileWorkingFolderRuntime as w, resolveInstalledClaudeCodeLaunchCandidates as wn, MIN_HEARTBEAT_INTERVAL_MS as wr, withAgentActivityDeliveryLock as wt, resolveLocalRuntimeControllerSupport as x, forkCodexAppServerThread as xn, resolveRouteRegistrationReconcileDecision as xr, unbindProject as xt, readLocalEnabledControllers as y, resolveCodexTimeoutMs as yn, resolveNativeAgentControllerPermissionModeForController as yr, runIfAgentActivityBindingGenerationIsCurrent as yt, reconcileNewRunnableBuiltinAgentRegistrations as z, settleInflightTask as zn, describeProfileWorkspacePathValidationFailure as zt };
29981
31010
 
29982
- //# sourceMappingURL=prepare-provider-runtime-CeGzeQbD.js.map
31011
+ //# sourceMappingURL=prepare-provider-runtime-3eIWxGgM.js.map