@happier-dev/stack 0.2.12 → 0.2.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/node_modules/@happier-dev/agents/dist/acp.d.ts +14 -1
- package/node_modules/@happier-dev/agents/dist/acp.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/acp.js +88 -0
- package/node_modules/@happier-dev/agents/dist/acp.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/auth.d.ts +1 -1
- package/node_modules/@happier-dev/agents/dist/auth.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/auth.js +33 -0
- package/node_modules/@happier-dev/agents/dist/auth.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/index.d.ts +7 -7
- package/node_modules/@happier-dev/agents/dist/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/index.js +7 -7
- package/node_modules/@happier-dev/agents/dist/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/localCli.d.ts +8 -2
- package/node_modules/@happier-dev/agents/dist/localCli.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/localCli.js +38 -8
- package/node_modules/@happier-dev/agents/dist/localCli.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/localControl.d.ts +5 -0
- package/node_modules/@happier-dev/agents/dist/localControl.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/localControl.js +21 -0
- package/node_modules/@happier-dev/agents/dist/localControl.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/manifest.d.ts +213 -12
- package/node_modules/@happier-dev/agents/dist/manifest.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/manifest.js +135 -14
- package/node_modules/@happier-dev/agents/dist/manifest.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/models.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/models.js +64 -4
- package/node_modules/@happier-dev/agents/dist/models.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.d.ts +15 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.js +7 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.d.ts +3 -32
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.js +2 -21
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.d.ts +25 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.js +13 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.d.ts +3 -4
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.js +2 -2
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.d.ts +2 -2
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.js +6 -2
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/effort.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/effort.js +4 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/effort.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.d.ts +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.js +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/index.d.ts +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/index.js +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/internalEventTypes.d.ts +3 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/internalEventTypes.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/internalEventTypes.js +27 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/internalEventTypes.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.d.ts +33 -0
- package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.js +121 -6
- package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/existingSessionAutomationPolicy.d.ts +16 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/existingSessionAutomationPolicy.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/existingSessionAutomationPolicy.js +34 -7
- package/node_modules/@happier-dev/agents/dist/sessionControls/existingSessionAutomationPolicy.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/providerSessionBackends.d.ts +5 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/providerSessionBackends.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/providerSessionBackends.js +9 -17
- package/node_modules/@happier-dev/agents/dist/sessionControls/providerSessionBackends.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.d.ts +10 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.js +30 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionModes.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionModes.js +10 -1
- package/node_modules/@happier-dev/agents/dist/sessionModes.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/types.d.ts +7 -5
- package/node_modules/@happier-dev/agents/dist/types.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/types.js +4 -4
- package/node_modules/@happier-dev/agents/dist/types.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.js +17 -21
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliOptionalComponentArtifactPayload.d.ts +9 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliOptionalComponentArtifactPayload.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliOptionalComponentArtifactPayload.js +45 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliOptionalComponentArtifactPayload.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.js +18 -5
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.d.ts +2 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.js +7 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.d.ts +2 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.js +348 -13
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.js +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.d.ts +3 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.js +19 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/targets.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/targets.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/targets.js +14 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/targets.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/acquisitionProgress.d.ts +14 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/acquisitionProgress.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/acquisitionProgress.js +34 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/acquisitionProgress.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.d.ts +27 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.js +29 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.d.ts +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.js +6 -14
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/ensureHappierCliPathExposure.d.ts +125 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/ensureHappierCliPathExposure.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/ensureHappierCliPathExposure.js +494 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/ensureHappierCliPathExposure.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.js +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliChoice.d.ts +27 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliChoice.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliChoice.js +36 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliChoice.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliOrigin.d.ts +31 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliOrigin.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliOrigin.js +81 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/happierCliOrigin.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.d.ts +14 -8
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.js +8 -5
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.d.ts +54 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.js +92 -24
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.d.ts +25 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.js +79 -45
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/restoreInstalledPayloadState.d.ts +50 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/restoreInstalledPayloadState.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/restoreInstalledPayloadState.js +136 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/restoreInstalledPayloadState.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runManagedCliUpdate.d.ts +117 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runManagedCliUpdate.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runManagedCliUpdate.js +272 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runManagedCliUpdate.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.js +19 -13
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.d.ts +0 -4
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.js +0 -20
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/withFirstPartyPayloadMutationLock.d.ts +36 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/withFirstPartyPayloadMutationLock.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/withFirstPartyPayloadMutationLock.js +155 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/withFirstPartyPayloadMutationLock.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.js +20 -16
- package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/output/index.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/output/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/output/index.js +1 -0
- package/node_modules/@happier-dev/cli-common/dist/output/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/output/planet.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/output/planet.js +19 -52
- package/node_modules/@happier-dev/cli-common/dist/output/planet.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/index.d.ts +2 -1
- package/node_modules/@happier-dev/cli-common/dist/process/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/index.js +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.d.ts +39 -0
- package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.js +95 -28
- package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.d.ts +6 -1
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.js +7 -2
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/index.d.ts +6 -4
- package/node_modules/@happier-dev/cli-common/dist/providers/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/index.js +4 -3
- package/node_modules/@happier-dev/cli-common/dist/providers/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/install.d.ts +27 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/install.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/install.js +164 -56
- package/node_modules/@happier-dev/cli-common/dist/providers/install.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/installCommandTimeout.d.ts +7 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/installCommandTimeout.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/installCommandTimeout.js +17 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/installCommandTimeout.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.d.ts +10 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.js +47 -10
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.d.ts +8 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.js +71 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/update.d.ts +54 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/update.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/update.js +184 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/update.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/service/launchd.d.ts +7 -0
- package/node_modules/@happier-dev/cli-common/dist/service/launchd.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/launchd.js +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/launchd.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/manager.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/manager.js +20 -1
- package/node_modules/@happier-dev/cli-common/dist/service/manager.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/windows.d.ts +7 -0
- package/node_modules/@happier-dev/cli-common/dist/service/windows.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/windows.js +9 -31
- package/node_modules/@happier-dev/cli-common/dist/service/windows.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.js +8 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/update/index.d.ts +70 -1
- package/node_modules/@happier-dev/cli-common/dist/update/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/update/index.js +102 -5
- package/node_modules/@happier-dev/cli-common/dist/update/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.js +24 -2
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/nodePtySpawnHelperPermissions.cjs +48 -0
- package/node_modules/@happier-dev/cli-common/nodePtySpawnHelperPermissions.d.cts +2 -0
- package/node_modules/@happier-dev/cli-common/numericPlanetFrame.d.mts +12 -0
- package/node_modules/@happier-dev/cli-common/numericPlanetFrame.mjs +36 -0
- package/node_modules/@happier-dev/cli-common/package.json +11 -0
- package/node_modules/@happier-dev/connection-supervisor/dist/createManagedConnectionSupervisor.d.ts.map +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/createManagedConnectionSupervisor.js +16 -6
- package/node_modules/@happier-dev/connection-supervisor/dist/createManagedConnectionSupervisor.js.map +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/createManagedEndpointSupervisor.d.ts.map +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/createManagedEndpointSupervisor.js +7 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/createManagedEndpointSupervisor.js.map +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/index.d.ts +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionTypes.d.ts +5 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionTypes.d.ts.map +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/managedEndpointSupervisorTypes.d.ts +3 -2
- package/node_modules/@happier-dev/connection-supervisor/dist/managedEndpointSupervisorTypes.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.js +4 -9
- package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.d.ts +7 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.js +27 -17
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.d.ts +6 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.js +11 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.d.ts +5 -2
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.js +25 -3
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/index.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/index.js +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/bugReports/export.d.ts +19 -0
- package/node_modules/@happier-dev/protocol/dist/bugReports/export.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/bugReports/export.js +17 -0
- package/node_modules/@happier-dev/protocol/dist/bugReports/export.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/bugReports/submit.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/bugReports/submit.js +6 -5
- package/node_modules/@happier-dev/protocol/dist/bugReports/submit.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/bugReports.d.ts +1 -0
- package/node_modules/@happier-dev/protocol/dist/bugReports.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/bugReports.js +1 -0
- package/node_modules/@happier-dev/protocol/dist/bugReports.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceQuotaLimitSelection.d.ts +11 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceQuotaLimitSelection.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceQuotaLimitSelection.js +20 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceQuotaLimitSelection.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.d.ts +127 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.js +45 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.d.ts +5 -4
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.js +8 -2
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/quotaObservationTime.d.ts +21 -0
- package/node_modules/@happier-dev/protocol/dist/connect/quotaObservationTime.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/quotaObservationTime.js +39 -0
- package/node_modules/@happier-dev/protocol/dist/connect/quotaObservationTime.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/daemonExecutionRuns.d.ts +12 -0
- package/node_modules/@happier-dev/protocol/dist/daemonExecutionRuns.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/daemonExecutionRuns.js +2 -1
- package/node_modules/@happier-dev/protocol/dist/daemonExecutionRuns.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.d.ts +9 -0
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.d.ts +129 -0
- package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.js +48 -0
- package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.d.ts +197 -0
- package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.js +74 -2
- package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/encryption/clientEncryptionRequirement.d.ts +12 -0
- package/node_modules/@happier-dev/protocol/dist/encryption/clientEncryptionRequirement.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/encryption/clientEncryptionRequirement.js +15 -0
- package/node_modules/@happier-dev/protocol/dist/encryption/clientEncryptionRequirement.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunObservationTimeout.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunObservationTimeout.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunObservationTimeout.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunObservationTimeout.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunRequestedConfiguration.d.ts +16 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunRequestedConfiguration.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunRequestedConfiguration.js +26 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunRequestedConfiguration.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.d.ts +6 -2
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.js +5 -2
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/executionRuns.d.ts +16 -2
- package/node_modules/@happier-dev/protocol/dist/executionRuns.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/executionRuns.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/executionRuns.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/catalog.d.ts +12 -0
- package/node_modules/@happier-dev/protocol/dist/features/catalog.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/catalog.js +12 -0
- package/node_modules/@happier-dev/protocol/dist/features/catalog.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/decision.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/features/decision.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.d.ts +6 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/featuresResponseSchema.d.ts +6 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/featuresResponseSchema.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/index.d.ts +18 -11
- package/node_modules/@happier-dev/protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/index.js +18 -11
- package/node_modules/@happier-dev/protocol/dist/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/installables.d.ts +36 -2
- package/node_modules/@happier-dev/protocol/dist/installables.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/installables.js +29 -1
- package/node_modules/@happier-dev/protocol/dist/installables.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/machines/cliUpdateFacts.d.ts +92 -0
- package/node_modules/@happier-dev/protocol/dist/machines/cliUpdateFacts.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/cliUpdateFacts.js +70 -0
- package/node_modules/@happier-dev/protocol/dist/machines/cliUpdateFacts.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/index.d.ts +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/machines/index.js +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/mcpServers/daemonRpcV1.d.ts +42 -0
- package/node_modules/@happier-dev/protocol/dist/mcpServers/daemonRpcV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/mcpServers/previewV1.d.ts +14 -0
- package/node_modules/@happier-dev/protocol/dist/mcpServers/previewV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.js +2 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.d.ts +8 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.js +18 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agy/installables.d.ts +7 -0
- package/node_modules/@happier-dev/protocol/dist/providers/agy/installables.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/agy/installables.js +6 -0
- package/node_modules/@happier-dev/protocol/dist/providers/agy/installables.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/push/expoPushDelivery.d.ts +1 -0
- package/node_modules/@happier-dev/protocol/dist/push/expoPushDelivery.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/push/expoPushDelivery.js +1 -1
- package/node_modules/@happier-dev/protocol/dist/push/expoPushDelivery.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/rpc.d.ts +5 -0
- package/node_modules/@happier-dev/protocol/dist/rpc.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/rpc.js +5 -0
- package/node_modules/@happier-dev/protocol/dist/rpc.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.d.ts +40 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.js +17 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.d.ts +26 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.d.ts +27 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.d.ts +3 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.d.ts +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.js +7 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.js +13 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.d.ts +3 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.js +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.d.ts +4 -1
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.js +6 -1
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/socketRpc.d.ts +11 -0
- package/node_modules/@happier-dev/protocol/dist/socketRpc.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/socketRpc.js +9 -0
- package/node_modules/@happier-dev/protocol/dist/socketRpc.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/spawnSession.d.ts +13 -0
- package/node_modules/@happier-dev/protocol/dist/spawnSession.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/spawnSession.js +5 -0
- package/node_modules/@happier-dev/protocol/dist/spawnSession.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/executionRunCompletionV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/executionRunCompletionV1.js +12 -1
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/executionRunCompletionV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/systemTasks/acquisitionProgress.d.ts +36 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/acquisitionProgress.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/acquisitionProgress.js +23 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/acquisitionProgress.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/index.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/systemTasks/index.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/systemTasks/setupThisComputerTaskContract.d.ts +180 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/setupThisComputerTaskContract.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/setupThisComputerTaskContract.js +234 -0
- package/node_modules/@happier-dev/protocol/dist/systemTasks/setupThisComputerTaskContract.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/updates.d.ts +12 -0
- package/node_modules/@happier-dev/protocol/dist/updates.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/updates.js +11 -2
- package/node_modules/@happier-dev/protocol/dist/updates.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.d.ts.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.js +5 -0
- package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/github.d.ts +1 -0
- package/node_modules/@happier-dev/release-runtime/dist/github.d.ts.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/github.js +7 -5
- package/node_modules/@happier-dev/release-runtime/dist/github.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/http.d.ts +11 -12
- package/node_modules/@happier-dev/release-runtime/dist/http.d.ts.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/http.js +32 -4
- package/node_modules/@happier-dev/release-runtime/dist/http.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/index.d.ts +1 -0
- package/node_modules/@happier-dev/release-runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/index.js +1 -0
- package/node_modules/@happier-dev/release-runtime/dist/index.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/verifiedDownload.d.ts +10 -0
- package/node_modules/@happier-dev/release-runtime/dist/verifiedDownload.d.ts.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/verifiedDownload.js +21 -11
- package/node_modules/@happier-dev/release-runtime/dist/verifiedDownload.js.map +1 -1
- package/package.json +1 -1
- package/scripts/auth.mjs +1 -1
- package/scripts/auth_login_print_includes_configure_links.test.mjs +9 -0
- package/scripts/build.mjs +8 -1
- package/scripts/daemon.mjs +14 -1
- package/scripts/daemon_start_verification.integration.test.mjs +103 -26
- package/scripts/ghops.test.mjs +3 -9
- package/scripts/happier_main.mjs +11 -0
- package/scripts/provision/macos-lima-hstack-repeat-validation.test.mjs +10 -17
- package/scripts/self_host_launchd.real.integration.test.mjs +3 -5
- package/scripts/self_host_runtime.mjs +9 -10
- package/scripts/self_host_runtime.test.mjs +2 -2
- package/scripts/stack/stack_environment.sanitization.test.mjs +5 -0
- package/scripts/stack_happy_cmd.integration.test.mjs +74 -44
- package/scripts/testkit/core/lima_guest_harness.mjs +32 -0
- package/scripts/testkit/core/lima_guest_harness.test.mjs +61 -0
- package/scripts/testkit/core/stub_happier_cli_server_set.mjs +51 -0
- package/scripts/testkit/stack_happier_cli_command_testkit.mjs +20 -2
- package/scripts/utils/dev_targets/mutagen_project.mjs +6 -0
- package/scripts/utils/dev_targets/mutagen_project.test.mjs +4 -0
- package/scripts/utils/dev_targets/remote_commands.mjs +3 -1
- package/scripts/utils/dev_targets/supervisor.mjs +29 -7
- package/scripts/utils/dev_targets/supervisor.test.mjs +19 -1
- package/scripts/utils/env/scrub_env.mjs +1 -0
- package/scripts/utils/expo/command.mjs +28 -4
- package/scripts/utils/expo/expo.mjs +29 -1
- package/scripts/utils/expo/expo_shared_tmpdir.test.mjs +56 -1
- package/scripts/utils/server/apply_runtime_server_sqlite_env.test.mjs +2 -2
- package/scripts/utils/server/resolve_stack_server_port.test.mjs +6 -3
- package/scripts/utils/stack/server_profile_reconciliation.mjs +68 -16
- package/scripts/utils/stack/server_profile_reconciliation.test.mjs +41 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.d.ts +0 -17
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.js +0 -90
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/rollbackVersionedPayload.d.ts +0 -13
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/rollbackVersionedPayload.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/rollbackVersionedPayload.js +0 -65
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/rollbackVersionedPayload.js.map +0 -1
|
@@ -6,20 +6,18 @@ import { fileURLToPath } from 'node:url';
|
|
|
6
6
|
import { runNodeCapture } from './testkit/stack_script_command_testkit.mjs';
|
|
7
7
|
import { createStackHappierCliCommandFixture } from './testkit/stack_happier_cli_command_testkit.mjs';
|
|
8
8
|
import { createRuntimeSnapshotFixture } from './testkit/runtime_snapshot_testkit.mjs';
|
|
9
|
+
import { buildStubHappierServerSetSource } from './testkit/core/stub_happier_cli_server_set.mjs';
|
|
9
10
|
import { buildStackStableScopeId } from './utils/auth/stable_scope_id.mjs';
|
|
10
11
|
|
|
11
12
|
const scriptsDir = dirname(fileURLToPath(import.meta.url));
|
|
12
13
|
const rootDir = dirname(scriptsDir);
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
const SERVER_SET_CALL_LOG_FILE_NAME = '.hstack-test-server-set-calls.ndjson';
|
|
16
|
+
|
|
17
|
+
function buildStubHappyCliScript({ message, ignoreServerSet = false }) {
|
|
15
18
|
return [
|
|
16
|
-
`import { appendFileSync } from 'node:fs';`,
|
|
17
|
-
`import { join } from 'node:path';`,
|
|
18
19
|
`const args = process.argv.slice(2);`,
|
|
19
|
-
|
|
20
|
-
` appendFileSync(join(process.env.HAPPIER_HOME_DIR, '.hstack-test-server-set-calls.ndjson'), JSON.stringify(args) + '\\n');`,
|
|
21
|
-
` process.exit(0);`,
|
|
22
|
-
`}`,
|
|
20
|
+
buildStubHappierServerSetSource({ ignoreServerSet, callLogFileName: SERVER_SET_CALL_LOG_FILE_NAME }),
|
|
23
21
|
`console.log(JSON.stringify({`,
|
|
24
22
|
` message: ${JSON.stringify(message)},`,
|
|
25
23
|
` args,`,
|
|
@@ -42,7 +40,7 @@ async function createHappyStackFixture(
|
|
|
42
40
|
{
|
|
43
41
|
prefix,
|
|
44
42
|
stackName = 'exp-test',
|
|
45
|
-
serverPort
|
|
43
|
+
serverPort,
|
|
46
44
|
stubType = 'success',
|
|
47
45
|
message = 'hello',
|
|
48
46
|
errorMessage = 'stub failure',
|
|
@@ -59,17 +57,23 @@ async function createHappyStackFixture(
|
|
|
59
57
|
distIndexScript:
|
|
60
58
|
stubType === 'failing'
|
|
61
59
|
? buildFailingStubHappyCliScript({ errorMessage })
|
|
62
|
-
: buildStubHappyCliScript({
|
|
60
|
+
: buildStubHappyCliScript({
|
|
61
|
+
message,
|
|
62
|
+
ignoreServerSet: stubType === 'legacy-ignore-server-set',
|
|
63
|
+
}),
|
|
63
64
|
});
|
|
64
65
|
if (!includePinnedServerPortInEnvFile) {
|
|
65
66
|
await fixture.writeStackEnv({ port: '' });
|
|
66
67
|
}
|
|
67
68
|
|
|
68
|
-
|
|
69
|
+
const resolvedStackCliSettings = typeof stackCliSettings === 'function'
|
|
70
|
+
? stackCliSettings({ serverPort: fixture.serverPort })
|
|
71
|
+
: stackCliSettings;
|
|
72
|
+
if (resolvedStackCliSettings) {
|
|
69
73
|
await mkdir(join(fixture.storageDir, stackName, 'cli'), { recursive: true });
|
|
70
74
|
await writeFile(
|
|
71
75
|
join(fixture.storageDir, stackName, 'cli', 'settings.json'),
|
|
72
|
-
JSON.stringify(
|
|
76
|
+
JSON.stringify(resolvedStackCliSettings, null, 2) + '\n',
|
|
73
77
|
'utf-8',
|
|
74
78
|
);
|
|
75
79
|
}
|
|
@@ -83,7 +87,7 @@ async function createHappyStackFixture(
|
|
|
83
87
|
stackName,
|
|
84
88
|
ephemeral: true,
|
|
85
89
|
ownerPid: runtimeOwnerPid,
|
|
86
|
-
ports: { server: serverPort },
|
|
90
|
+
ports: { server: fixture.serverPort },
|
|
87
91
|
processes: { serverPid: runtimeServerPid },
|
|
88
92
|
},
|
|
89
93
|
null,
|
|
@@ -95,6 +99,7 @@ async function createHappyStackFixture(
|
|
|
95
99
|
|
|
96
100
|
return {
|
|
97
101
|
stackName: fixture.stackName,
|
|
102
|
+
serverPort: fixture.serverPort,
|
|
98
103
|
storageDir: fixture.storageDir,
|
|
99
104
|
baseEnv: fixture.baseEnv,
|
|
100
105
|
};
|
|
@@ -104,7 +109,6 @@ test('hstack stack happier <name> runs CLI under that stack env', async (t) => {
|
|
|
104
109
|
const fixture = await createHappyStackFixture(t, {
|
|
105
110
|
prefix: 'happier-stack-stack-happy-',
|
|
106
111
|
message: 'hello',
|
|
107
|
-
serverPort: 3999,
|
|
108
112
|
});
|
|
109
113
|
|
|
110
114
|
const res = await runNodeCapture([join(rootDir, 'bin', 'hstack.mjs'), 'stack', 'happier', fixture.stackName], {
|
|
@@ -118,14 +122,13 @@ test('hstack stack happier <name> runs CLI under that stack env', async (t) => {
|
|
|
118
122
|
assert.equal(out.stack, fixture.stackName);
|
|
119
123
|
assert.ok(String(out.envFile).endsWith(`/${fixture.stackName}/env`), `expected envFile to end with /${fixture.stackName}/env, got: ${out.envFile}`);
|
|
120
124
|
assert.equal(out.homeDir, join(fixture.storageDir, fixture.stackName, 'cli'));
|
|
121
|
-
assert.equal(out.serverUrl,
|
|
125
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
122
126
|
});
|
|
123
127
|
|
|
124
128
|
test('hstack stack happier <name> overrides pre-set HAPPIER_* env vars with stack-scoped values', async (t) => {
|
|
125
129
|
const fixture = await createHappyStackFixture(t, {
|
|
126
130
|
prefix: 'happier-stack-stack-happy-override-',
|
|
127
131
|
message: 'override',
|
|
128
|
-
serverPort: 4123,
|
|
129
132
|
});
|
|
130
133
|
|
|
131
134
|
const res = await runNodeCapture([join(rootDir, 'bin', 'hstack.mjs'), 'stack', 'happier', fixture.stackName], {
|
|
@@ -143,14 +146,13 @@ test('hstack stack happier <name> overrides pre-set HAPPIER_* env vars with stac
|
|
|
143
146
|
assert.equal(out.message, 'override');
|
|
144
147
|
assert.equal(out.stack, fixture.stackName);
|
|
145
148
|
assert.equal(out.homeDir, join(fixture.storageDir, fixture.stackName, 'cli'));
|
|
146
|
-
assert.equal(out.serverUrl,
|
|
149
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
147
150
|
});
|
|
148
151
|
|
|
149
152
|
test('hstack stack happier <name> ignores stale cloud settings defaults and keeps stack-local server urls', async (t) => {
|
|
150
153
|
const fixture = await createHappyStackFixture(t, {
|
|
151
154
|
prefix: 'happier-stack-stack-happy-ignore-settings-',
|
|
152
155
|
message: 'ignore-settings-defaults',
|
|
153
|
-
serverPort: 44123,
|
|
154
156
|
stackCliSettings: {
|
|
155
157
|
schemaVersion: 6,
|
|
156
158
|
onboardingCompleted: false,
|
|
@@ -179,15 +181,14 @@ test('hstack stack happier <name> ignores stale cloud settings defaults and keep
|
|
|
179
181
|
assert.equal(out.message, 'ignore-settings-defaults');
|
|
180
182
|
assert.equal(out.stack, fixture.stackName);
|
|
181
183
|
assert.equal(out.homeDir, join(fixture.storageDir, fixture.stackName, 'cli'));
|
|
182
|
-
assert.equal(out.serverUrl,
|
|
183
|
-
assert.equal(out.webappUrl,
|
|
184
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
185
|
+
assert.equal(out.webappUrl, `http://localhost:${fixture.serverPort}`);
|
|
184
186
|
});
|
|
185
187
|
|
|
186
188
|
test('hstack stack happier <name> delegates stack profile reconciliation to the selected CLI runtime', async (t) => {
|
|
187
189
|
const fixture = await createHappyStackFixture(t, {
|
|
188
190
|
prefix: 'happier-stack-stack-happy-seed-settings-',
|
|
189
191
|
message: 'seed-settings',
|
|
190
|
-
serverPort: 45123,
|
|
191
192
|
stackCliSettings: {
|
|
192
193
|
schemaVersion: 6,
|
|
193
194
|
onboardingCompleted: false,
|
|
@@ -207,7 +208,7 @@ test('hstack stack happier <name> delegates stack profile reconciliation to the
|
|
|
207
208
|
});
|
|
208
209
|
|
|
209
210
|
const settingsPath = join(fixture.storageDir, fixture.stackName, 'cli', 'settings.json');
|
|
210
|
-
const serverSetCallsPath = join(fixture.storageDir, fixture.stackName, 'cli',
|
|
211
|
+
const serverSetCallsPath = join(fixture.storageDir, fixture.stackName, 'cli', SERVER_SET_CALL_LOG_FILE_NAME);
|
|
211
212
|
|
|
212
213
|
const res = await runNodeCapture([join(rootDir, 'bin', 'hstack.mjs'), 'stack', 'happier', fixture.stackName], {
|
|
213
214
|
cwd: rootDir,
|
|
@@ -226,24 +227,60 @@ test('hstack stack happier <name> delegates stack profile reconciliation to the
|
|
|
226
227
|
'--server-id',
|
|
227
228
|
out.activeServerId,
|
|
228
229
|
'--server-url',
|
|
229
|
-
|
|
230
|
+
`http://127.0.0.1:${fixture.serverPort}`,
|
|
230
231
|
'--local-server-url',
|
|
231
|
-
|
|
232
|
+
`http://127.0.0.1:${fixture.serverPort}`,
|
|
232
233
|
'--webapp-url',
|
|
233
|
-
|
|
234
|
+
`http://localhost:${fixture.serverPort}`,
|
|
234
235
|
'--migrate-matching-profile-state',
|
|
235
236
|
'--json',
|
|
236
237
|
]]);
|
|
237
238
|
|
|
238
239
|
const settings = JSON.parse(await readFile(settingsPath, 'utf-8'));
|
|
239
|
-
assert.equal(settings.activeServerId,
|
|
240
|
+
assert.equal(settings.activeServerId, out.activeServerId, 'the selected CLI must own the reconciled active profile');
|
|
241
|
+
assert.equal(settings.servers[out.activeServerId].serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
242
|
+
// The CLI collapses a local URL equal to the relay URL; only the relay URL is persisted.
|
|
243
|
+
assert.equal(settings.servers[out.activeServerId].localServerUrl, undefined);
|
|
244
|
+
assert.equal(settings.servers[out.activeServerId].webappUrl, `http://localhost:${fixture.serverPort}`);
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
test('hstack stack happier <name> rejects a CLI that exits successfully without reconciling the stack profile', async (t) => {
|
|
248
|
+
const fixture = await createHappyStackFixture(t, {
|
|
249
|
+
prefix: 'happier-stack-stack-happy-legacy-server-set-',
|
|
250
|
+
message: 'must-not-run',
|
|
251
|
+
stubType: 'legacy-ignore-server-set',
|
|
252
|
+
stackCliSettings: {
|
|
253
|
+
schemaVersion: 6,
|
|
254
|
+
onboardingCompleted: false,
|
|
255
|
+
activeServerId: 'cloud',
|
|
256
|
+
servers: {
|
|
257
|
+
cloud: {
|
|
258
|
+
id: 'cloud',
|
|
259
|
+
name: 'Happier Cloud',
|
|
260
|
+
serverUrl: 'https://api.happier.dev',
|
|
261
|
+
webappUrl: 'https://app.happier.dev',
|
|
262
|
+
createdAt: 0,
|
|
263
|
+
updatedAt: 0,
|
|
264
|
+
lastUsedAt: 0,
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
const res = await runNodeCapture([join(rootDir, 'bin', 'hstack.mjs'), 'stack', 'happier', fixture.stackName], {
|
|
271
|
+
cwd: rootDir,
|
|
272
|
+
env: fixture.baseEnv,
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
assert.notEqual(res.code, 0, `expected reconciliation verification to fail\nstdout:\n${res.stdout}\nstderr:\n${res.stderr}`);
|
|
276
|
+
assert.match(res.stderr, /did not apply the requested stack relay profile/i);
|
|
277
|
+
assert.doesNotMatch(res.stdout, /must-not-run/);
|
|
240
278
|
});
|
|
241
279
|
|
|
242
280
|
test('hstack stack happier <name> uses stack.runtime.json ports when env file does not pin HAPPIER_STACK_SERVER_PORT', async (t) => {
|
|
243
281
|
const fixture = await createHappyStackFixture(t, {
|
|
244
282
|
prefix: 'happier-stack-stack-happy-runtime-ports-',
|
|
245
283
|
message: 'runtime-ports',
|
|
246
|
-
serverPort: 4777,
|
|
247
284
|
includePinnedServerPortInEnvFile: false,
|
|
248
285
|
// Simulate a stale owner pid but a still-running server process.
|
|
249
286
|
runtimeOwnerPid: 999999,
|
|
@@ -259,7 +296,7 @@ test('hstack stack happier <name> uses stack.runtime.json ports when env file do
|
|
|
259
296
|
const out = JSON.parse(res.stdout.trim());
|
|
260
297
|
assert.equal(out.message, 'runtime-ports');
|
|
261
298
|
assert.equal(out.stack, fixture.stackName);
|
|
262
|
-
assert.equal(out.serverUrl,
|
|
299
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
263
300
|
});
|
|
264
301
|
|
|
265
302
|
test('hstack stack happier <name> forwards wrapper runtime flags to happier.mjs', async (t) => {
|
|
@@ -290,7 +327,6 @@ test('hstack happier (HAPPIER_STACK_STACK set) uses stack.runtime.json ports whe
|
|
|
290
327
|
const fixture = await createHappyStackFixture(t, {
|
|
291
328
|
prefix: 'happier-stack-happy-runtime-ports-',
|
|
292
329
|
message: 'runtime-ports-env',
|
|
293
|
-
serverPort: 4888,
|
|
294
330
|
includePinnedServerPortInEnvFile: false,
|
|
295
331
|
// Simulate a stale owner pid but a still-running server process.
|
|
296
332
|
runtimeOwnerPid: 999999,
|
|
@@ -315,16 +351,15 @@ test('hstack happier (HAPPIER_STACK_STACK set) uses stack.runtime.json ports whe
|
|
|
315
351
|
const out = JSON.parse(res.stdout.trim());
|
|
316
352
|
assert.equal(out.message, 'runtime-ports-env');
|
|
317
353
|
assert.equal(out.stack, fixture.stackName);
|
|
318
|
-
assert.equal(out.serverUrl,
|
|
319
|
-
assert.equal(out.webappUrl,
|
|
354
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
355
|
+
assert.equal(out.webappUrl, `http://localhost:${fixture.serverPort}`);
|
|
320
356
|
});
|
|
321
357
|
|
|
322
358
|
test('hstack happier keeps the stable scope when another settings profile matches the stack URL', async (t) => {
|
|
323
359
|
const fixture = await createHappyStackFixture(t, {
|
|
324
360
|
prefix: 'happier-stack-explicit-stack-scope-',
|
|
325
361
|
message: 'explicit-stack-scope',
|
|
326
|
-
|
|
327
|
-
stackCliSettings: {
|
|
362
|
+
stackCliSettings: ({ serverPort }) => ({
|
|
328
363
|
schemaVersion: 6,
|
|
329
364
|
onboardingCompleted: true,
|
|
330
365
|
activeServerId: 'stack-local',
|
|
@@ -332,14 +367,14 @@ test('hstack happier keeps the stable scope when another settings profile matche
|
|
|
332
367
|
'stack-local': {
|
|
333
368
|
id: 'stack-local',
|
|
334
369
|
name: 'Stack Local',
|
|
335
|
-
serverUrl:
|
|
336
|
-
webappUrl:
|
|
370
|
+
serverUrl: `http://127.0.0.1:${serverPort}`,
|
|
371
|
+
webappUrl: `http://localhost:${serverPort}`,
|
|
337
372
|
createdAt: 0,
|
|
338
373
|
updatedAt: 0,
|
|
339
374
|
lastUsedAt: 0,
|
|
340
375
|
},
|
|
341
376
|
},
|
|
342
|
-
},
|
|
377
|
+
}),
|
|
343
378
|
});
|
|
344
379
|
|
|
345
380
|
const env = {
|
|
@@ -360,8 +395,8 @@ test('hstack happier keeps the stable scope when another settings profile matche
|
|
|
360
395
|
assert.equal(out.stack, fixture.stackName);
|
|
361
396
|
assert.ok(String(out.envFile).endsWith(`/${fixture.stackName}/env`), `expected envFile to end with /${fixture.stackName}/env, got: ${out.envFile}`);
|
|
362
397
|
assert.equal(out.homeDir, join(fixture.storageDir, fixture.stackName, 'cli'));
|
|
363
|
-
assert.equal(out.serverUrl,
|
|
364
|
-
assert.equal(out.webappUrl,
|
|
398
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
399
|
+
assert.equal(out.webappUrl, `http://localhost:${fixture.serverPort}`);
|
|
365
400
|
assert.equal(
|
|
366
401
|
out.activeServerId,
|
|
367
402
|
buildStackStableScopeId({ stackName: fixture.stackName, cliIdentity: 'default' }),
|
|
@@ -372,7 +407,6 @@ test('hstack stack happier <name> --identity=<name> uses identity-scoped HAPPIER
|
|
|
372
407
|
const fixture = await createHappyStackFixture(t, {
|
|
373
408
|
prefix: 'happier-stack-stack-happy-identity-',
|
|
374
409
|
message: 'identity',
|
|
375
|
-
serverPort: 3999,
|
|
376
410
|
});
|
|
377
411
|
const identity = 'account-a';
|
|
378
412
|
|
|
@@ -386,14 +420,13 @@ test('hstack stack happier <name> --identity=<name> uses identity-scoped HAPPIER
|
|
|
386
420
|
assert.equal(out.message, 'identity');
|
|
387
421
|
assert.equal(out.stack, fixture.stackName);
|
|
388
422
|
assert.equal(out.homeDir, join(fixture.storageDir, fixture.stackName, 'cli-identities', identity));
|
|
389
|
-
assert.equal(out.serverUrl,
|
|
423
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
390
424
|
});
|
|
391
425
|
|
|
392
426
|
test('hstack <stack> happier ... shorthand runs CLI under that stack env', async (t) => {
|
|
393
427
|
const fixture = await createHappyStackFixture(t, {
|
|
394
428
|
prefix: 'happy-stacks-stack-happy-',
|
|
395
429
|
message: 'shorthand',
|
|
396
|
-
serverPort: 4101,
|
|
397
430
|
});
|
|
398
431
|
|
|
399
432
|
const res = await runNodeCapture([join(rootDir, 'bin', 'hstack.mjs'), fixture.stackName, 'happier'], { cwd: rootDir, env: fixture.baseEnv });
|
|
@@ -402,7 +435,7 @@ test('hstack <stack> happier ... shorthand runs CLI under that stack env', async
|
|
|
402
435
|
const out = JSON.parse(res.stdout.trim());
|
|
403
436
|
assert.equal(out.message, 'shorthand');
|
|
404
437
|
assert.equal(out.stack, fixture.stackName);
|
|
405
|
-
assert.equal(out.serverUrl,
|
|
438
|
+
assert.equal(out.serverUrl, `http://127.0.0.1:${fixture.serverPort}`);
|
|
406
439
|
});
|
|
407
440
|
|
|
408
441
|
test('hstack stack happier <name> does not print wrapper stack traces on CLI failure', async (t) => {
|
|
@@ -410,7 +443,6 @@ test('hstack stack happier <name> does not print wrapper stack traces on CLI fai
|
|
|
410
443
|
prefix: 'happy-stacks-stack-happy-fail-',
|
|
411
444
|
stubType: 'failing',
|
|
412
445
|
errorMessage: 'stub failure',
|
|
413
|
-
serverPort: 3999,
|
|
414
446
|
});
|
|
415
447
|
|
|
416
448
|
const res = await runNodeCapture([join(rootDir, 'bin', 'hstack.mjs'), 'stack', 'happier', fixture.stackName, 'attach', 'abc'], {
|
|
@@ -428,7 +460,6 @@ test('hstack stack <name> happier ... stack-name-first shorthand works', async (
|
|
|
428
460
|
const fixture = await createHappyStackFixture(t, {
|
|
429
461
|
prefix: 'happier-stack-stack-happy-name-first-',
|
|
430
462
|
message: 'name-first',
|
|
431
|
-
serverPort: 3999,
|
|
432
463
|
});
|
|
433
464
|
|
|
434
465
|
const res = await runNodeCapture([join(rootDir, 'bin', 'hstack.mjs'), 'stack', fixture.stackName, 'happier'], {
|
|
@@ -446,7 +477,6 @@ test('hstack stack bug-report <name> forwards bug-report command under stack env
|
|
|
446
477
|
const fixture = await createHappyStackFixture(t, {
|
|
447
478
|
prefix: 'happier-stack-stack-bug-report-',
|
|
448
479
|
message: 'bug-report-alias',
|
|
449
|
-
serverPort: 4099,
|
|
450
480
|
});
|
|
451
481
|
|
|
452
482
|
const res = await runNodeCapture(
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { filterEnvForSpawn } from './env_scope.mjs';
|
|
2
|
+
|
|
3
|
+
export function createLimaTestEnv(parentEnv = process.env) {
|
|
4
|
+
// These shell fixtures run on the host, not in a VM. Inheriting stack or
|
|
5
|
+
// provider settings can give a fixture access to the developer's live daemon.
|
|
6
|
+
return {
|
|
7
|
+
...filterEnvForSpawn(parentEnv, { keepKeys: ['TMPDIR', 'TMP', 'TEMP', 'LANG', 'LC_ALL'] }),
|
|
8
|
+
PATH: '/usr/bin:/bin:/usr/sbin:/sbin',
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// A real Lima guest has its own login files and PATH. Our process-boundary fake
|
|
13
|
+
// must not source the host's /etc/profile, which can restore the real Happier CLI
|
|
14
|
+
// ahead of fixture executables (including when the caller prefixes bash with env).
|
|
15
|
+
export const limaGuestExec = `
|
|
16
|
+
if [[ "\${1:-}" == "env" ]]; then
|
|
17
|
+
shift
|
|
18
|
+
while [[ "\${1:-}" == *=* ]]; do export "$1"; shift; done
|
|
19
|
+
fi
|
|
20
|
+
unset BASH_ENV ENV
|
|
21
|
+
if [[ "\${1:-}" != "bash" || ( "\${2:-}" != "-lc" && "\${2:-}" != "-c" && "\${2:-}" != "-s" ) ]]; then
|
|
22
|
+
echo "unsupported fake Lima guest command: $*" >&2
|
|
23
|
+
exit 2
|
|
24
|
+
fi
|
|
25
|
+
shift
|
|
26
|
+
if [[ "$1" == "-lc" ]]; then shift; set -- -c "$@"; fi
|
|
27
|
+
# Guest daemon process matching belongs to the VM's process namespace. These
|
|
28
|
+
# fixtures have no real guest processes and must never match host daemons.
|
|
29
|
+
pkill() { return 0; }
|
|
30
|
+
export -f pkill
|
|
31
|
+
exec /bin/bash --noprofile --norc "$@"
|
|
32
|
+
`;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import { spawnSync } from 'node:child_process';
|
|
4
|
+
import { mkdtemp, writeFile, access } from 'node:fs/promises';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
|
|
8
|
+
import { createLimaTestEnv, limaGuestExec } from './lima_guest_harness.mjs';
|
|
9
|
+
|
|
10
|
+
test('Lima fixtures exclude ambient stack, provider, shell, and executable selection', () => {
|
|
11
|
+
const env = createLimaTestEnv({
|
|
12
|
+
PATH: '/real/user/bin',
|
|
13
|
+
HOME: '/real/user',
|
|
14
|
+
HAPPIER_HOME_DIR: '/real/stack/cli',
|
|
15
|
+
HAPPIER_ACTIVE_SERVER_ID: 'live-server',
|
|
16
|
+
HAPPIER_QA_STACK_NAME: 'live-stack',
|
|
17
|
+
WSREPL_QA_VM_HAPPIER_MODE: 'autoupdate',
|
|
18
|
+
CLAUDE_CONFIG_DIR: '/real/claude',
|
|
19
|
+
CODEX_HOME: '/real/codex',
|
|
20
|
+
BASH_ENV: '/real/shell-startup',
|
|
21
|
+
NODE_OPTIONS: '--import=/real/preload.mjs',
|
|
22
|
+
TMPDIR: '/tmp/fixture-parent',
|
|
23
|
+
LANG: 'en_US.UTF-8',
|
|
24
|
+
});
|
|
25
|
+
assert.equal(env.HAPPIER_HOME_DIR, undefined);
|
|
26
|
+
assert.equal(env.HAPPIER_ACTIVE_SERVER_ID, undefined);
|
|
27
|
+
assert.equal(env.HAPPIER_QA_STACK_NAME, undefined);
|
|
28
|
+
assert.equal(env.HOME, undefined);
|
|
29
|
+
assert.equal(env.CLAUDE_CONFIG_DIR, undefined);
|
|
30
|
+
assert.equal(env.CODEX_HOME, undefined);
|
|
31
|
+
assert.equal(env.BASH_ENV, undefined);
|
|
32
|
+
assert.equal(env.NODE_OPTIONS, undefined);
|
|
33
|
+
assert.equal(env.WSREPL_QA_VM_HAPPIER_MODE, undefined);
|
|
34
|
+
assert.ok(!env.PATH.includes('/real/user/bin'));
|
|
35
|
+
assert.equal(env.TMPDIR, '/tmp/fixture-parent');
|
|
36
|
+
assert.equal(env.LANG, 'en_US.UTF-8');
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
test('fake Lima executes guest scripts without a host login shell, preserving explicit guest environment and argv', () => {
|
|
40
|
+
for (const prefix of [[], ['env', 'LIMA_INSTANCE=fixture-vm']]) {
|
|
41
|
+
const result = spawnSync('/bin/bash', ['--noprofile', '--norc', '-c', limaGuestExec, 'fake-lima',
|
|
42
|
+
...prefix, 'bash', '-lc',
|
|
43
|
+
'if shopt -q login_shell; then exit 42; fi; printf "%s\\n" "${LIMA_INSTANCE:-}" "$1"',
|
|
44
|
+
'guest', 'argument with spaces',
|
|
45
|
+
], { env: { PATH: '/usr/bin:/bin', HOME: '/tmp' }, encoding: 'utf8' });
|
|
46
|
+
assert.equal(result.status, 0, result.stderr);
|
|
47
|
+
assert.equal(result.stdout, `${prefix.length ? 'fixture-vm' : ''}\nargument with spaces\n`);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test('fake guest daemon cleanup cannot invoke host process matching', async () => {
|
|
52
|
+
const root = await mkdtemp(join(tmpdir(), 'lima-guest-process-boundary-'));
|
|
53
|
+
const marker = join(root, 'host-pkill-invoked');
|
|
54
|
+
await writeFile(join(root, 'pkill'), '#!/bin/bash\nprintf called > "$HOST_KILL_MARKER"\n', { mode: 0o755 });
|
|
55
|
+
const result = spawnSync('/bin/bash', ['-c', limaGuestExec, 'fake-lima', 'bash', '-lc',
|
|
56
|
+
'pkill -f "package-dist/index.mjs daemon start-sync"; printf done',
|
|
57
|
+
], { env: { PATH: `${root}:/usr/bin:/bin`, HOME: root, HOST_KILL_MARKER: marker }, encoding: 'utf8' });
|
|
58
|
+
assert.equal(result.status, 0, result.stderr);
|
|
59
|
+
assert.equal(result.stdout, 'done');
|
|
60
|
+
await assert.rejects(access(marker), { code: 'ENOENT' });
|
|
61
|
+
});
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source fragment that gives a stub Happier CLI script a `server set` implementation.
|
|
3
|
+
*
|
|
4
|
+
* The fragment expects `args` (the CLI argv slice) to be in scope and runs inside an ESM script,
|
|
5
|
+
* so it may use top-level `await`. It persists the profile the way the real CLI profile writer does
|
|
6
|
+
* (`apps/cli/src/server/serverProfiles.ts`): the active profile switches to the requested id,
|
|
7
|
+
* unrelated profile fields survive, the settings schema is stamped to the supported version, and a
|
|
8
|
+
* `localServerUrl` equal to `serverUrl` is not written because the CLI collapses that split.
|
|
9
|
+
* Keep it aligned with that writer; stack reconciliation checks read the persisted shape.
|
|
10
|
+
*
|
|
11
|
+
* - `ignoreServerSet`: exit successfully without touching settings, like a legacy CLI that does not
|
|
12
|
+
* understand the stack profile flags.
|
|
13
|
+
* - `callLogFileName`: when set, append each `server set` argv as one JSON line to this file inside
|
|
14
|
+
* the CLI home before handling the command.
|
|
15
|
+
*/
|
|
16
|
+
export function buildStubHappierServerSetSource({ ignoreServerSet = false, callLogFileName = null } = {}) {
|
|
17
|
+
return `
|
|
18
|
+
if (args[0] === 'server' && args[1] === 'set') {
|
|
19
|
+
const { appendFileSync, readFileSync, writeFileSync } = await import('node:fs');
|
|
20
|
+
const { join } = await import('node:path');
|
|
21
|
+
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
22
|
+
if (!home) process.exit(2);
|
|
23
|
+
${callLogFileName ? `appendFileSync(join(home, ${JSON.stringify(callLogFileName)}), JSON.stringify(args) + '\\n');` : ''}
|
|
24
|
+
${ignoreServerSet ? 'process.exit(0);' : ''}
|
|
25
|
+
const value = (name) => {
|
|
26
|
+
const index = args.indexOf(name);
|
|
27
|
+
return index >= 0 ? String(args[index + 1] || '') : '';
|
|
28
|
+
};
|
|
29
|
+
const serverId = value('--server-id');
|
|
30
|
+
const serverUrl = value('--server-url');
|
|
31
|
+
const localServerUrl = value('--local-server-url');
|
|
32
|
+
const settingsPath = join(home, 'settings.json');
|
|
33
|
+
const settings = JSON.parse(readFileSync(settingsPath, 'utf-8'));
|
|
34
|
+
const { localServerUrl: previousLocalServerUrl, ...current } = settings.servers?.[serverId] ?? {};
|
|
35
|
+
settings.schemaVersion = Math.max(Number(settings.schemaVersion || 0), 6);
|
|
36
|
+
settings.activeServerId = serverId;
|
|
37
|
+
settings.servers = {
|
|
38
|
+
...(settings.servers ?? {}),
|
|
39
|
+
[serverId]: {
|
|
40
|
+
...current,
|
|
41
|
+
id: serverId,
|
|
42
|
+
serverUrl,
|
|
43
|
+
...(localServerUrl && localServerUrl !== serverUrl ? { localServerUrl } : {}),
|
|
44
|
+
webappUrl: value('--webapp-url'),
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n', 'utf-8');
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
}
|
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { createServer } from 'node:net';
|
|
2
3
|
import { join } from 'node:path';
|
|
3
4
|
|
|
4
5
|
import { ensureMinimalMonorepoLayout } from './core/minimal_monorepo_layout.mjs';
|
|
5
6
|
import { writeStubHappierCliFiles } from './core/stub_happier_cli_files.mjs';
|
|
6
7
|
import { createTempFixture } from './core/temp_fixture.mjs';
|
|
7
8
|
|
|
9
|
+
async function allocateAvailableLocalhostPort() {
|
|
10
|
+
const server = createServer();
|
|
11
|
+
await new Promise((resolve, reject) => {
|
|
12
|
+
server.once('error', reject);
|
|
13
|
+
server.listen(0, '127.0.0.1', resolve);
|
|
14
|
+
});
|
|
15
|
+
const address = server.address();
|
|
16
|
+
if (!address || typeof address === 'string') {
|
|
17
|
+
await new Promise((resolve) => server.close(resolve));
|
|
18
|
+
throw new Error('expected an allocated localhost TCP port');
|
|
19
|
+
}
|
|
20
|
+
await new Promise((resolve, reject) => server.close((error) => error ? reject(error) : resolve()));
|
|
21
|
+
return address.port;
|
|
22
|
+
}
|
|
23
|
+
|
|
8
24
|
export async function createStackHappierCliCommandFixture(
|
|
9
25
|
t,
|
|
10
26
|
{
|
|
11
27
|
prefix,
|
|
12
28
|
stackName = 'exp-test',
|
|
13
|
-
serverPort
|
|
29
|
+
serverPort,
|
|
14
30
|
distIndexScript,
|
|
15
31
|
binHappierScript = "import '../dist/index.mjs';\n",
|
|
16
32
|
} = {},
|
|
17
33
|
) {
|
|
34
|
+
const resolvedServerPort = serverPort ?? await allocateAvailableLocalhostPort();
|
|
18
35
|
const fixture = await createTempFixture(t, { prefix });
|
|
19
36
|
const tmp = fixture.root;
|
|
20
37
|
const storageDir = join(tmp, 'storage');
|
|
@@ -36,7 +53,7 @@ export async function createStackHappierCliCommandFixture(
|
|
|
36
53
|
async function writeStackEnv({
|
|
37
54
|
name = stackName,
|
|
38
55
|
cliHomeDir = stackCliHome,
|
|
39
|
-
port =
|
|
56
|
+
port = resolvedServerPort,
|
|
40
57
|
repoDir = monoRoot,
|
|
41
58
|
} = {}) {
|
|
42
59
|
const envPath = join(storageDir, name, 'env');
|
|
@@ -64,6 +81,7 @@ export async function createStackHappierCliCommandFixture(
|
|
|
64
81
|
workspaceDir,
|
|
65
82
|
monoRoot,
|
|
66
83
|
stackName,
|
|
84
|
+
serverPort: resolvedServerPort,
|
|
67
85
|
stackCliHome,
|
|
68
86
|
envPath,
|
|
69
87
|
writeStackEnv,
|
|
@@ -40,6 +40,12 @@ const DEFAULT_IGNORES = [
|
|
|
40
40
|
// Expo prebuild generates this entire Git-ignored tree for the target's
|
|
41
41
|
// native identity and toolchain. Replication would undo its Info.plist.
|
|
42
42
|
'apps/ui/ios',
|
|
43
|
+
// Desktop preparation owns these generated sidecars and their JS runtime companions.
|
|
44
|
+
// Replicating a local build would replace the target-native executable after Cargo builds it.
|
|
45
|
+
'apps/ui/src-tauri/binaries',
|
|
46
|
+
'apps/ui/src-tauri/systemTasks',
|
|
47
|
+
'apps/ui/src-tauri/ssh',
|
|
48
|
+
'apps/ui/src-tauri/integrations',
|
|
43
49
|
'apps/ui/android/app/build',
|
|
44
50
|
'apps/ui/android/build',
|
|
45
51
|
'apps/ui/android/.gradle',
|
|
@@ -77,6 +77,10 @@ test('renderMutagenProject creates one-way source replicas while retaining targe
|
|
|
77
77
|
'.dist.hstack-*',
|
|
78
78
|
'.cxx',
|
|
79
79
|
'apps/ui/ios',
|
|
80
|
+
'apps/ui/src-tauri/binaries',
|
|
81
|
+
'apps/ui/src-tauri/systemTasks',
|
|
82
|
+
'apps/ui/src-tauri/ssh',
|
|
83
|
+
'apps/ui/src-tauri/integrations',
|
|
80
84
|
'apps/ui/android/app/build',
|
|
81
85
|
'apps/ui/android/build',
|
|
82
86
|
'apps/ui/android/.gradle',
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { resolveEffectiveDbProvider } from '../server/effective_db_provider.mjs';
|
|
2
2
|
|
|
3
|
+
export const DEFAULT_REMOTE_STACK_STARTUP_TIMEOUT_MS = 30 * 60_000;
|
|
4
|
+
|
|
3
5
|
function posixQuote(value) {
|
|
4
6
|
return `'${String(value).replace(/'/g, `'\"'\"'`)}'`;
|
|
5
7
|
}
|
|
@@ -299,7 +301,7 @@ function resolveRemoteStackInvocation(target, {
|
|
|
299
301
|
]),
|
|
300
302
|
...(stablePublicExpoPort == null ? [] : [`HAPPIER_STACK_EXPO_PUBLIC_PORT=${stablePublicExpoPort}`]),
|
|
301
303
|
...(expoPublicUrl && !resolveExpoPublicUrlOnTarget ? [`EXPO_PACKAGER_PROXY_URL=${expoPublicUrl}`] : []),
|
|
302
|
-
|
|
304
|
+
`HAPPIER_CLI_PKGROLL_TIMEOUT_MS=${DEFAULT_REMOTE_STACK_STARTUP_TIMEOUT_MS}`,
|
|
303
305
|
...(normalizedServices.daemon && deferDaemonStartUntilCredentials
|
|
304
306
|
? ['HAPPIER_STACK_DAEMON_WAIT_FOR_AUTH=1']
|
|
305
307
|
: []),
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
resolveMutagenSessionName,
|
|
13
13
|
} from './mutagen_project.mjs';
|
|
14
14
|
import {
|
|
15
|
+
DEFAULT_REMOTE_STACK_STARTUP_TIMEOUT_MS,
|
|
15
16
|
buildRemoteBootstrapCommand,
|
|
16
17
|
buildRemoteStackCommand,
|
|
17
18
|
buildRemoteStackStopCommand,
|
|
@@ -22,6 +23,13 @@ import {
|
|
|
22
23
|
buildSshWorkerArgs,
|
|
23
24
|
} from './remote_commands.mjs';
|
|
24
25
|
|
|
26
|
+
export function resolveRemoteServerReadyTimeoutMs(env = process.env) {
|
|
27
|
+
const configured = Number.parseInt(String(env.HAPPIER_STACK_SERVER_READY_TIMEOUT_MS ?? ''), 10);
|
|
28
|
+
return Number.isFinite(configured) && configured >= 1_000
|
|
29
|
+
? configured
|
|
30
|
+
: DEFAULT_REMOTE_STACK_STARTUP_TIMEOUT_MS;
|
|
31
|
+
}
|
|
32
|
+
|
|
25
33
|
export function resolveDefaultRemoteServerPort({
|
|
26
34
|
localServerPort,
|
|
27
35
|
targetIndex,
|
|
@@ -65,8 +73,7 @@ async function defaultWaitForProcess(child) {
|
|
|
65
73
|
}
|
|
66
74
|
|
|
67
75
|
async function defaultWaitForServerReady({ url, env = process.env, signal } = {}) {
|
|
68
|
-
const
|
|
69
|
-
const timeoutMs = Number.isFinite(configured) && configured >= 1_000 ? configured : 120_000;
|
|
76
|
+
const timeoutMs = resolveRemoteServerReadyTimeoutMs(env);
|
|
70
77
|
const deadline = Date.now() + timeoutMs;
|
|
71
78
|
while (!signal?.aborted && Date.now() < deadline) {
|
|
72
79
|
if ((await fetchHappierHealth(url)).ok) return;
|
|
@@ -137,12 +144,12 @@ async function prepareOpenSsh({ targets, mutagenDir, env }) {
|
|
|
137
144
|
for (const executable of ['ssh', 'scp']) {
|
|
138
145
|
await writeFile(
|
|
139
146
|
join(opensshDir, executable),
|
|
140
|
-
`#!/bin/sh\nexec /usr/bin/${executable} -F ${shellQuote(configPath)} -o ControlMaster=no "$@"\n`,
|
|
147
|
+
`#!/bin/sh\nexec /usr/bin/${executable} -F ${shellQuote(configPath)} -o ControlMaster=no -o ControlPath=none "$@"\n`,
|
|
141
148
|
{ mode: 0o700 },
|
|
142
149
|
);
|
|
143
150
|
}
|
|
144
151
|
return {
|
|
145
|
-
sshArgs: ['-F', configPath, '-o', 'ControlMaster=no'],
|
|
152
|
+
sshArgs: ['-F', configPath, '-o', 'ControlMaster=no', '-o', 'ControlPath=none'],
|
|
146
153
|
mutagenEnv: { ...env, MUTAGEN_SSH_PATH: opensshDir },
|
|
147
154
|
};
|
|
148
155
|
}
|
|
@@ -542,8 +549,11 @@ export async function startStackDevTargets(
|
|
|
542
549
|
tunnelsByTarget.set(target.name, tunnel);
|
|
543
550
|
}
|
|
544
551
|
if (!services.server) {
|
|
545
|
-
|
|
546
|
-
|
|
552
|
+
const readinessDeadline = Date.now() + resolveRemoteServerReadyTimeoutMs(env);
|
|
553
|
+
let readinessAttempt = 0;
|
|
554
|
+
let readinessResult;
|
|
555
|
+
do {
|
|
556
|
+
readinessResult = await runProcess({
|
|
547
557
|
label: `remote:${target.name}`,
|
|
548
558
|
command: 'ssh',
|
|
549
559
|
args: [
|
|
@@ -554,7 +564,19 @@ export async function startStackDevTargets(
|
|
|
554
564
|
buildRemoteForwardProbeCommand(target, { remoteServerPort }),
|
|
555
565
|
],
|
|
556
566
|
env: infraEnv,
|
|
557
|
-
})
|
|
567
|
+
});
|
|
568
|
+
if (readinessResult?.code === 0 || tunnel.exitCode != null || Date.now() >= readinessDeadline) {
|
|
569
|
+
break;
|
|
570
|
+
}
|
|
571
|
+
readinessAttempt += 1;
|
|
572
|
+
const retryOutcome = await Promise.race([
|
|
573
|
+
waitForRetry({ attempt: readinessAttempt, delayMs: 5_000, target }).then(() => 'retry'),
|
|
574
|
+
closeRequested.then(() => 'close'),
|
|
575
|
+
]);
|
|
576
|
+
if (retryOutcome === 'close' || closed) return null;
|
|
577
|
+
} while (!closed);
|
|
578
|
+
requireSuccessful(
|
|
579
|
+
readinessResult,
|
|
558
580
|
`${target.name} reverse tunnel readiness`,
|
|
559
581
|
);
|
|
560
582
|
}
|