@happier-dev/stack 0.2.1-preview.1775586714.26562 → 0.2.11
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 +4 -4
- package/bin/happier.mjs +8 -1
- package/bin/hstack.mjs +51 -36
- package/bin/localBundledWorkspacePreflight.mjs +48 -0
- package/docs/server-flavors.md +10 -13
- package/node_modules/@happier-dev/agents/dist/advancedModes.d.ts +1 -1
- package/node_modules/@happier-dev/agents/dist/advancedModes.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/advancedModes.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/auth.d.ts +2 -2
- package/node_modules/@happier-dev/agents/dist/auth.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/auth.js +25 -5
- package/node_modules/@happier-dev/agents/dist/auth.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.d.ts +16 -0
- package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.js +56 -0
- package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.d.ts +114 -0
- package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.js +318 -0
- package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/index.d.ts +29 -14
- package/node_modules/@happier-dev/agents/dist/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/index.js +25 -11
- package/node_modules/@happier-dev/agents/dist/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/localCli.d.ts +2 -1
- package/node_modules/@happier-dev/agents/dist/localCli.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/localCli.js +68 -43
- package/node_modules/@happier-dev/agents/dist/localCli.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/manifest.d.ts +419 -162
- package/node_modules/@happier-dev/agents/dist/manifest.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/manifest.js +221 -6
- package/node_modules/@happier-dev/agents/dist/manifest.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/mediaCapabilities.d.ts +5 -0
- package/node_modules/@happier-dev/agents/dist/mediaCapabilities.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/mediaCapabilities.js +11 -0
- package/node_modules/@happier-dev/agents/dist/mediaCapabilities.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/models.d.ts +25 -0
- package/node_modules/@happier-dev/agents/dist/models.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/models.js +99 -68
- package/node_modules/@happier-dev/agents/dist/models.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.d.ts +20 -0
- package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.js +35 -0
- package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.d.ts +2 -0
- package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.js +12 -0
- package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/permissions/index.d.ts +5 -0
- package/node_modules/@happier-dev/agents/dist/permissions/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/permissions/index.js +23 -59
- package/node_modules/@happier-dev/agents/dist/permissions/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/permissions/privilege.d.ts +33 -0
- package/node_modules/@happier-dev/agents/dist/permissions/privilege.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/permissions/privilege.js +95 -0
- package/node_modules/@happier-dev/agents/dist/permissions/privilege.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.d.ts +171 -80
- 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 +62 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/codex.d.ts +10 -10
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/codex.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.d.ts +65 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.js +81 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.d.ts +36 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.js +33 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.d.ts +16 -16
- package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.d.ts +4 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.js +3 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/registry.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providerSettings/registry.js +4 -0
- package/node_modules/@happier-dev/agents/dist/providerSettings/registry.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.d.ts +49 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.js +102 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/effort.d.ts +9 -2
- 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 +52 -20
- 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 +13 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.js +13 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/index.d.ts +7 -2
- 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 +7 -2
- package/node_modules/@happier-dev/agents/dist/providers/claude/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.d.ts +9 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.js +13 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.d.ts +14 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.js +37 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.d.ts +5 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.js +18 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.d.ts +7 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.js +8 -0
- package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/codex/index.d.ts +3 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/index.js +3 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/index.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.d.ts +12 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.js +17 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.d.ts +3 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.js +26 -0
- package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/index.d.ts +2 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/index.js +2 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/index.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.d.ts +7 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.js +11 -0
- package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/index.d.ts +2 -0
- package/node_modules/@happier-dev/agents/dist/providers/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/index.js +2 -0
- package/node_modules/@happier-dev/agents/dist/providers/index.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/pi/thinking.d.ts +3 -3
- package/node_modules/@happier-dev/agents/dist/providers/pi/thinking.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.d.ts +24 -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 -15
- package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.d.ts +3 -0
- package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.js +9 -0
- package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.d.ts +26 -0
- package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.js +52 -10
- package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.d.ts +16 -0
- package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.js +120 -0
- package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.d.ts +82 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.js +16 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.d.ts +66 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.js +2 -0
- package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtimeInput.d.ts +5 -0
- package/node_modules/@happier-dev/agents/dist/runtimeInput.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtimeInput.js +16 -0
- package/node_modules/@happier-dev/agents/dist/runtimeInput.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/runtimeKinds.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/runtimeKinds.js +2 -0
- package/node_modules/@happier-dev/agents/dist/runtimeKinds.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.d.ts +20 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.js +13 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.d.ts +6 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.js +12 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.d.ts +79 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.js +180 -10
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.d.ts +9 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.js +16 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/publish.d.ts +10 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/publish.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/publish.js +66 -10
- package/node_modules/@happier-dev/agents/dist/sessionControls/publish.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.d.ts +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.js +7 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.d.ts +14 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.js +43 -0
- package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionModes.d.ts +3 -0
- package/node_modules/@happier-dev/agents/dist/sessionModes.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessionModes.js +14 -0
- package/node_modules/@happier-dev/agents/dist/sessionModes.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.d.ts +262 -4
- package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.js +1619 -45
- package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.js.map +1 -1
- package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.d.ts +66 -0
- package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.d.ts.map +1 -0
- package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.js +194 -0
- package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.js.map +1 -0
- package/node_modules/@happier-dev/agents/dist/types.d.ts +62 -4
- package/node_modules/@happier-dev/agents/dist/types.d.ts.map +1 -1
- package/node_modules/@happier-dev/agents/dist/types.js +2 -2
- package/node_modules/@happier-dev/agents/dist/types.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/cliDistBuildManifest.cjs +708 -0
- package/node_modules/@happier-dev/cli-common/cliDistBuildManifest.d.cts +94 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.d.ts +4 -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 +161 -71
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.d.ts +6 -1
- 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 +71 -3
- 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 +7 -3
- 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 +83 -9
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.d.ts +10 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.js +13 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.d.ts +9 -6
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.js +63 -9
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.js +45 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.d.ts +2 -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 +2 -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 +8 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.js +16 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.d.ts +4 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.js +33 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.d.ts +11 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.js +222 -12
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.d.ts +6 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.js +48 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.d.ts +3 -0
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.js +7 -97
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.d.ts +31 -31
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.d.ts +9 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.js +216 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.d.ts +20 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.js +46 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.js.map +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 +16 -28
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.d.ts +10 -1
- 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 +7 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installLayout.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installLayout.js +7 -7
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installLayout.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.d.ts +1 -0
- 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 +156 -0
- 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 +1 -0
- 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 +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.js +13 -3
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.js +38 -4
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.js +64 -23
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.d.ts +15 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.js +829 -76
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.d.ts +14 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.js +29 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.d.ts +32 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.js +21 -4
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.d.ts +34 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.js +49 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.d.ts +29 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.js +177 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.d.ts +39 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.js +112 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runtimeKinds.d.ts +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runtimeKinds.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.d.ts +53 -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 +285 -36
- 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 +32 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.js +93 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.js +23 -10
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledPayloadPointer.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledPayloadPointer.js +66 -6
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledPayloadPointer.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.d.ts +10 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.js +61 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.d.ts +12 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.js +24 -0
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.d.ts +35 -0
- package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.js +222 -0
- package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/links/index.d.ts +6 -0
- package/node_modules/@happier-dev/cli-common/dist/links/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/links/index.js +30 -15
- package/node_modules/@happier-dev/cli-common/dist/links/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/output/index.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/output/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/output/index.js +2 -0
- package/node_modules/@happier-dev/cli-common/dist/output/index.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/output/progress.d.ts +28 -0
- package/node_modules/@happier-dev/cli-common/dist/output/progress.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/output/progress.js +126 -0
- package/node_modules/@happier-dev/cli-common/dist/output/progress.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.js +2 -0
- package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/path/pathShape.d.ts +5 -0
- package/node_modules/@happier-dev/cli-common/dist/path/pathShape.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/path/pathShape.js +31 -0
- package/node_modules/@happier-dev/cli-common/dist/path/pathShape.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/process/commandExists.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/commandExists.js +12 -6
- package/node_modules/@happier-dev/cli-common/dist/process/commandExists.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/process/index.d.ts +1 -0
- 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 -0
- 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 +9 -0
- package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.js +64 -0
- package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.js.map +1 -0
- 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 +35 -7
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/downloadGitHubReleaseAsset.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/downloadGitHubReleaseAsset.js +42 -20
- package/node_modules/@happier-dev/cli-common/dist/providers/downloadGitHubReleaseAsset.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.d.ts +12 -0
- package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.js +86 -16
- package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/install.d.ts +3 -0
- 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 +551 -78
- package/node_modules/@happier-dev/cli-common/dist/providers/install.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.js +4 -3
- package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.js.map +1 -1
- 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 +34 -3
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/nodeRelease.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.js +37 -12
- package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.d.ts +3 -3
- 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 +109 -38
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.js +10 -5
- package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.d.ts +8 -0
- package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.js +40 -0
- package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.d.ts +3 -2
- package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.js +1442 -365
- package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.d.ts +8 -0
- package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.js +33 -0
- package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/service/launchd.d.ts +1 -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 +4 -0
- 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 +30 -0
- 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 +197 -24
- package/node_modules/@happier-dev/cli-common/dist/service/manager.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/path.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/systemd.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/service/systemd.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/systemd.js +7 -1
- package/node_modules/@happier-dev/cli-common/dist/service/systemd.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/service/windows.d.ts +49 -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 +167 -0
- package/node_modules/@happier-dev/cli-common/dist/service/windows.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.d.ts +7 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.js +41 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.d.ts +5 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.js +51 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.js +1 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.d.ts +1 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.js +104 -61
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.d.ts +2 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.d.ts.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.js +13 -0
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.js.map +1 -0
- package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.js +20 -2
- package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/index.d.ts +2 -2
- package/node_modules/@happier-dev/cli-common/dist/tailscale/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/index.js +2 -2
- package/node_modules/@happier-dev/cli-common/dist/tailscale/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/installStrategy.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.d.ts +15 -0
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.js +50 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.d.ts +29 -0
- package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.js +42 -0
- package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.d.ts +2 -2
- package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.d.ts.map +1 -1
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.d.ts +16 -1
- 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 +113 -24
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.js.map +1 -1
- package/node_modules/@happier-dev/cli-common/expandHomeDirPath.cjs +41 -0
- package/node_modules/@happier-dev/cli-common/expandHomeDirPath.d.cts +10 -0
- package/node_modules/@happier-dev/cli-common/jsonOwnerBuildLockState.cjs +54 -0
- package/node_modules/@happier-dev/cli-common/package.json +57 -0
- package/node_modules/@happier-dev/cli-common/processInstance.d.mts +10 -0
- package/node_modules/@happier-dev/cli-common/processInstance.mjs +67 -0
- package/node_modules/@happier-dev/cli-common/runtimeImportProbePolicy.d.mts +1 -0
- package/node_modules/@happier-dev/cli-common/runtimeImportProbePolicy.mjs +5 -0
- package/node_modules/@happier-dev/cli-common/workspaceBundleLock.d.mts +39 -0
- package/node_modules/@happier-dev/cli-common/workspaceBundleLock.mjs +380 -0
- package/node_modules/@happier-dev/cli-common/workspaceLockLease.d.mts +21 -0
- package/node_modules/@happier-dev/cli-common/workspaceLockLease.mjs +57 -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 +47 -9
- 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 +33 -0
- 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/managedConnectionEvents.js +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionEvents.js.map +1 -1
- package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionTypes.d.ts +8 -0
- 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 -0
- package/node_modules/@happier-dev/connection-supervisor/dist/managedEndpointSupervisorTypes.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.d.ts +419 -213
- package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.js +21 -3
- package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/encryptionMode.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/account/profile.d.ts +102 -4
- package/node_modules/@happier-dev/protocol/dist/account/profile.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/profile.js +19 -2
- package/node_modules/@happier-dev/protocol/dist/account/profile.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.d.ts +249 -41
- 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 +180 -18
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsApiV2.d.ts +3 -576
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsApiV2.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.d.ts +1 -192
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.js +2 -2
- package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.d.ts +79 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.js +80 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/account/settings/index.d.ts +3 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/index.js +3 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.d.ts +35 -14
- package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.js +21 -2
- package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/acpCatalog/settingsV1.d.ts +29 -29
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.d.ts +26 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.js +24 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.d.ts +15 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.js +17 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.d.ts +269 -17
- package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.js +1200 -130
- package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionIds.d.ts +64 -44
- package/node_modules/@happier-dev/protocol/dist/actions/actionIds.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionIds.js +21 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionIds.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionInputVoiceGuidance.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionInputVoiceGuidance.js +13 -4
- package/node_modules/@happier-dev/protocol/dist/actions/actionInputVoiceGuidance.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.d.ts +28 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.js +77 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.d.ts +73 -35
- package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.js +24 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.d.ts +487 -65
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.js +1373 -135
- package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.d.ts +24 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.js +139 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.d.ts +14 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.js +46 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/actionUiPlacements.d.ts +5 -5
- package/node_modules/@happier-dev/protocol/dist/actions/actionUiPlacements.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.d.ts +11 -0
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.js +12 -0
- package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/index.d.ts +8 -3
- package/node_modules/@happier-dev/protocol/dist/actions/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/index.js +7 -2
- package/node_modules/@happier-dev/protocol/dist/actions/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.d.ts +11 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.js +9 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.d.ts +299 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.js +180 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/index.d.ts +3 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/index.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/actions/operations/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.d.ts +37 -0
- package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.js +121 -0
- package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/sessionModeIds.js +5 -5
- package/node_modules/@happier-dev/protocol/dist/actions/sessionModeIds.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.d.ts +37 -0
- package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.js +80 -0
- package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.d.ts +94 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.js +125 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.d.ts +40 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.js +94 -0
- package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.d.ts +10 -2
- package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.d.ts +105 -53
- package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.js +64 -0
- package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/auth/errors.d.ts +15 -14
- package/node_modules/@happier-dev/protocol/dist/auth/errors.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/auth/errors.js +1 -0
- package/node_modules/@happier-dev/protocol/dist/auth/errors.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.d.ts +52 -0
- package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.js +13 -0
- package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/bugReports/redaction.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/bugReports/redaction.js +406 -10
- package/node_modules/@happier-dev/protocol/dist/bugReports/redaction.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/changes.d.ts +11 -29
- package/node_modules/@happier-dev/protocol/dist/changes.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/changes.js +6 -1
- package/node_modules/@happier-dev/protocol/dist/changes.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/checklists.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/checklists.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.d.ts +18 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.js +45 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.d.ts +36 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.js +19 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.d.ts +35 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.js +41 -0
- package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/common/asyncTtlCache.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/common/probedResourceCache.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.d.ts +382 -0
- package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.js +264 -0
- package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.d.ts +12 -0
- package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.js +25 -1
- package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.d.ts +7 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.js +40 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.d.ts +74 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.js +75 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.d.ts +0 -5
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.js +0 -8
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.d.ts +19 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.js +19 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.d.ts +25 -15
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.js +10 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.d.ts +43 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.js +53 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.d.ts +1331 -27
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.js +534 -13
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.d.ts +184 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.js +142 -0
- package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.d.ts +61 -0
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.js +148 -0
- package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.d.ts +2 -1
- package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.js +19 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/crypto/base64.d.ts +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/base64.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/crypto/base64.js +34 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/base64.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.d.ts +3 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.js +21 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.d.ts +93 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.js +99 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.d.ts +6 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.js +8 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.d.ts +17 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.js +34 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.d.ts +18 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.js +85 -0
- package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.d.ts +52 -0
- package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.js +34 -0
- package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/daemonExecutionRuns.d.ts +12 -12
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.d.ts +47 -26
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.js +26 -14
- package/node_modules/@happier-dev/protocol/dist/daemonTerminal.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.d.ts +352 -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 +159 -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 +209 -28
- package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.js +94 -0
- package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.d.ts +35 -0
- package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.js +157 -0
- package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/index.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/index.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.d.ts +1016 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.js +152 -0
- package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/e2e/providerScenarios.d.ts +7 -7
- package/node_modules/@happier-dev/protocol/dist/e2e/providerSpec.d.ts +4 -4
- package/node_modules/@happier-dev/protocol/dist/ephemeralTasks.d.ts +4 -4
- package/node_modules/@happier-dev/protocol/dist/executionRunListRequest.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.d.ts +37 -12
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.js +33 -3
- package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/executionRuns.d.ts +85 -27
- package/node_modules/@happier-dev/protocol/dist/executionRuns.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/executionRuns.js +24 -0
- package/node_modules/@happier-dev/protocol/dist/executionRuns.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/catalog.d.ts +288 -168
- package/node_modules/@happier-dev/protocol/dist/features/catalog.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/catalog.js +128 -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 +91 -71
- package/node_modules/@happier-dev/protocol/dist/features/decision.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.js +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/authCapabilities.d.ts +5 -5
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.d.ts +70 -5
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.js +10 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.d.ts +19 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.js +18 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/encryptionCapabilities.d.ts +4 -4
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.d.ts +84 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.js +56 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverCapabilities.d.ts +6 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverCapabilities.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.d.ts +9 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.js +18 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.d.ts +6 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.js +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.d.ts +50 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.js +35 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.d.ts +16 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.js +16 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.d.ts +36 -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 +40 -2
- 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 +106 -5
- package/node_modules/@happier-dev/protocol/dist/features/payload/featuresResponseSchema.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features.d.ts +5 -0
- package/node_modules/@happier-dev/protocol/dist/features.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/features.js +5 -0
- package/node_modules/@happier-dev/protocol/dist/features.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/index.d.ts +111 -36
- package/node_modules/@happier-dev/protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/index.js +109 -35
- package/node_modules/@happier-dev/protocol/dist/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/installables.d.ts +43 -5
- package/node_modules/@happier-dev/protocol/dist/installables.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/installables.js +29 -2
- package/node_modules/@happier-dev/protocol/dist/installables.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.js +3 -1
- package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/machineFileBrowser.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.js +45 -0
- package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.d.ts +3 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.d.ts +17 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.js +18 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.js +73 -0
- package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.d.ts +96 -0
- package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.js +107 -0
- package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.js +9 -2
- package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.d.ts +57 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.js +88 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.d.ts +42 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.js +145 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.d.ts +14 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.js +21 -0
- package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/index.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/machines/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/index.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/machines/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.d.ts +21 -0
- package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.js +23 -0
- package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/mcpServers/daemonRpcV1.d.ts +30 -24
- 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 +38 -36
- package/node_modules/@happier-dev/protocol/dist/mcpServers/previewV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.d.ts +25 -2
- package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.js +30 -0
- package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/mcpServers/settingsV1.d.ts +3 -3
- package/node_modules/@happier-dev/protocol/dist/memory/memorySearch.d.ts +8 -8
- package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.d.ts +58 -12
- package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.js +46 -5
- package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.d.ts +101 -2
- package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.js +53 -0
- package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/mentionRefV1.d.ts +107 -0
- package/node_modules/@happier-dev/protocol/dist/mentionRefV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/mentionRefV1.js +191 -0
- package/node_modules/@happier-dev/protocol/dist/mentionRefV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.d.ts +258 -0
- package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.js +131 -0
- package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.d.ts +52 -0
- package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.js +45 -0
- package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.d.ts +13 -0
- package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.js +51 -0
- package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/constants.d.ts +85 -0
- package/node_modules/@happier-dev/protocol/dist/pets/constants.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/constants.js +59 -0
- package/node_modules/@happier-dev/protocol/dist/pets/constants.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.d.ts +610 -0
- package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.js +265 -0
- package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/index.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/pets/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/index.js +8 -0
- package/node_modules/@happier-dev/protocol/dist/pets/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/manifest.d.ts +20 -0
- package/node_modules/@happier-dev/protocol/dist/pets/manifest.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/manifest.js +17 -0
- package/node_modules/@happier-dev/protocol/dist/pets/manifest.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/source.d.ts +79 -0
- package/node_modules/@happier-dev/protocol/dist/pets/source.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/pets/source.js +62 -0
- package/node_modules/@happier-dev/protocol/dist/pets/source.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.d.ts +22 -8
- package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.js +5 -0
- package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptAssetsV1.d.ts +41 -41
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptBundleSchemas.d.ts +3 -3
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptDocV2.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptExternalLinksV1.d.ts +8 -8
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.d.ts +3 -0
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.js +1 -1
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptPlacementV1.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptRegistriesV1.d.ts +18 -18
- package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptStacksV1.d.ts +18 -18
- package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.js +7 -2
- package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/changeTitleInstructionV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.d.ts +54 -0
- package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.js +67 -0
- package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.js +15 -15
- package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.js +28 -4
- package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.d.ts +3 -2
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.js +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/claude/builtInBackendProfiles.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/claude/builtInBackendProfiles.js +60 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/builtInBackendProfiles.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/claude/index.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/index.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/memoryDefaults.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.d.ts +6 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.js +17 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.d.ts +100 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.js +301 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.d.ts +37 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.js +60 -0
- package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.js +11 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.d.ts +35 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.js +74 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.d.ts +12 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.js +21 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.d.ts +15 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.js +48 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.d.ts +65 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.js +43 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/backendMode.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/codex/backendMode.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/codex/builtInBackendProfiles.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/codex/builtInBackendProfiles.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/builtInBackendProfiles.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/codex/index.d.ts +7 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/index.js +7 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/codex/installables.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/providers/codex/installables.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/gemini/builtInBackendProfiles.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/gemini/builtInBackendProfiles.js +4 -2
- package/node_modules/@happier-dev/protocol/dist/providers/gemini/builtInBackendProfiles.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/providers/github/installables.d.ts +5 -0
- package/node_modules/@happier-dev/protocol/dist/providers/github/installables.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/github/installables.js +5 -0
- package/node_modules/@happier-dev/protocol/dist/providers/github/installables.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/kiro/acpCatalog.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.d.ts +11 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.js +26 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.d.ts +17 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.js +58 -0
- package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/push/pushNotificationActions.d.ts +8 -8
- package/node_modules/@happier-dev/protocol/dist/push/pushNotificationActions.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.d.ts +48 -0
- package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.js +60 -0
- package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.d.ts +43 -0
- package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.js +17 -0
- package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/reviews/ReviewFinding.d.ts +10 -10
- package/node_modules/@happier-dev/protocol/dist/reviews/ReviewQuestion.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.d.ts +10 -1
- package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.js +3 -1
- package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/rpc.d.ts +231 -126
- package/node_modules/@happier-dev/protocol/dist/rpc.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/rpc.js +168 -0
- package/node_modules/@happier-dev/protocol/dist/rpc.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/rpcErrors.d.ts +16 -0
- package/node_modules/@happier-dev/protocol/dist/rpcErrors.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/rpcErrors.js +44 -0
- package/node_modules/@happier-dev/protocol/dist/rpcErrors.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scm.d.ts +555 -173
- package/node_modules/@happier-dev/protocol/dist/scm.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scm.js +232 -45
- package/node_modules/@happier-dev/protocol/dist/scm.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scmBranches.d.ts +112 -37
- package/node_modules/@happier-dev/protocol/dist/scmBranches.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scmBranches.js +15 -1
- package/node_modules/@happier-dev/protocol/dist/scmBranches.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scmCapabilities.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scmCapabilities.js +38 -0
- package/node_modules/@happier-dev/protocol/dist/scmCapabilities.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.d.ts +43 -0
- package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.js +42 -0
- package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmPullRequests.d.ts +594 -0
- package/node_modules/@happier-dev/protocol/dist/scmPullRequests.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmPullRequests.js +192 -0
- package/node_modules/@happier-dev/protocol/dist/scmPullRequests.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.d.ts +878 -0
- package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.js +109 -0
- package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmRequestBase.d.ts +26 -0
- package/node_modules/@happier-dev/protocol/dist/scmRequestBase.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmRequestBase.js +11 -0
- package/node_modules/@happier-dev/protocol/dist/scmRequestBase.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmStash.d.ts +60 -45
- package/node_modules/@happier-dev/protocol/dist/scmStash.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.d.ts +52 -0
- package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.js +85 -0
- package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/scmWorktrees.d.ts +49 -37
- package/node_modules/@happier-dev/protocol/dist/scmWorktrees.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sentFrom.d.ts +10 -10
- package/node_modules/@happier-dev/protocol/dist/sentFrom.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/serverControl/contract.d.ts +22 -18
- package/node_modules/@happier-dev/protocol/dist/serverControl/contract.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/serverUrls/index.d.ts +1 -0
- package/node_modules/@happier-dev/protocol/dist/serverUrls/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/serverUrls/index.js +1 -0
- package/node_modules/@happier-dev/protocol/dist/serverUrls/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.d.ts +36 -0
- package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.js +65 -0
- package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.d.ts +21 -1
- package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.js +26 -0
- package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/session/attachMetadataIdentityPolicy.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/session/attachMetadataIdentityPolicy.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.d.ts +74 -0
- package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.js +66 -0
- package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.d.ts +14 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.js +29 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.d.ts +34 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.js +54 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.js +30 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.js +33 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.d.ts +5 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.js +5 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.d.ts +71 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.js +119 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.d.ts +81 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.js +143 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.d.ts +41 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.js +77 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.d.ts +115 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.js +113 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.d.ts +32 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.js +31 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.d.ts +100 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.js +129 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.d.ts +25 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.js +46 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.js +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.d.ts +33 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.js +38 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.d.ts +409 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.js +457 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.d.ts +110 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.js +184 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.d.ts +155 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.js +54 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.d.ts +808 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.js +577 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.d.ts +12 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.js +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/contextKinds.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/contextKinds.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.d.ts +537 -330
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.js +111 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldDefinition.d.ts +6 -4
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldDefinition.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldDefinition.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.d.ts +757 -440
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.js +5 -1
- package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionChanges/reconcileWithScmSnapshot.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionChanges/reconcileWithScmSnapshot.js +90 -3
- package/node_modules/@happier-dev/protocol/dist/sessionChanges/reconcileWithScmSnapshot.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionChanges/schemas.d.ts +76 -76
- package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.d.ts +8 -8
- package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.js +3 -2
- package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.d.ts +2723 -359
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.js +190 -10
- package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.js +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.d.ts +401 -91
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.js +66 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffStatus.d.ts +32 -31
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffStatus.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.d.ts +10 -5
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.js +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.d.ts +30 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.js +42 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.d.ts +49 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.js +35 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.d.ts +48 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.js +49 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.d.ts +236 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.js +318 -0
- package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.d.ts +258 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.js +27 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.d.ts +63 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.js +52 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.d.ts +3 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionFork.d.ts +36 -15
- package/node_modules/@happier-dev/protocol/dist/sessionFork.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionFork.js +42 -12
- package/node_modules/@happier-dev/protocol/dist/sessionFork.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.d.ts +25 -0
- package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.js +27 -0
- package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.d.ts +304 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.js +117 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.d.ts +104 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.js +72 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.d.ts +30 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.js +33 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.d.ts +44 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.js +115 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.d.ts +7 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.js +12 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.js +7 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.d.ts +17 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.js +11 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.d.ts +7 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.js +6 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.d.ts +20 -14
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.js +24 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.d.ts +18 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.js +51 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.d.ts +81 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.js +62 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.d.ts +1103 -22
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.js +621 -17
- package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.d.ts +14 -3
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.js +22 -3
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.d.ts +19 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.js +56 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/metadataOverridesV1.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.d.ts +17 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.js +60 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.d.ts +25 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.js +21 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.d.ts +25 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.js +37 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.d.ts +31 -5
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.js +64 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.d.ts +159 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.js +75 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.d.ts +37 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.js +48 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.d.ts +57 -14
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.js +47 -4
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsRemoteSessionLaunchMode.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsRemoteSessionLaunchMode.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.d.ts +5 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.js +16 -0
- package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.d.ts +21 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.js +27 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.js +29 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.d.ts +30 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.js +33 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.js +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.d.ts +325 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.js +184 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.d.ts +61 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.js +29 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.js +12 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.d.ts +208 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.js +46 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.d.ts +20 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.js +21 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.d.ts +23 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.js +25 -0
- package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.d.ts +352 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.js +207 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.d.ts +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.js +2 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.d.ts +11 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.js +14 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.d.ts +4 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.js +4 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.d.ts +49 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.js +125 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.d.ts +113 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.js +79 -0
- package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.d.ts +47 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.js +44 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionStop.d.ts +45 -0
- package/node_modules/@happier-dev/protocol/dist/sessionStop.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionStop.js +27 -0
- package/node_modules/@happier-dev/protocol/dist/sessionStop.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.d.ts +36 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.js +40 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.d.ts +303 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.js +28 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.d.ts +12 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.js +12 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.d.ts +9 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.js +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.d.ts +69 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.js +28 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.d.ts +28 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.js +20 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.d.ts +150 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.js +69 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.js +3 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.d.ts +10 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.js +9 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.js +9 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.d.ts +114 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.js +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.d.ts +174 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.js +68 -0
- package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.d.ts +67 -3
- package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.js +290 -2
- package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.js +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.d.ts +9 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.js +16 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.d.ts +8 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.js +25 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.d.ts +18 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.js +87 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.d.ts +21 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.js +91 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.d.ts +1574 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.js +397 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.d.ts +165 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.js +124 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.d.ts +33 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.js +73 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.d.ts +6 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.js +6 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.d.ts +44 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.js +123 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.d.ts +101 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.js +49 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.d.ts +17 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.js +29 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.d.ts +20 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.js +101 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.d.ts +159 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.js +125 -0
- package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.d.ts +280 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.js +125 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.d.ts +336 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.js +138 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.d.ts +224 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.js +96 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.d.ts +188 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.js +24 -0
- package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/social/friends.d.ts +16 -16
- package/node_modules/@happier-dev/protocol/dist/socketRpc.d.ts +36 -8
- package/node_modules/@happier-dev/protocol/dist/socketRpc.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/socketRpc.js +13 -0
- package/node_modules/@happier-dev/protocol/dist/socketRpc.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/spawnSession.d.ts +91 -14
- package/node_modules/@happier-dev/protocol/dist/spawnSession.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/spawnSession.js +233 -0
- package/node_modules/@happier-dev/protocol/dist/spawnSession.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.d.ts +66 -0
- package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.js +131 -0
- package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewFindingsV1.d.ts +8 -8
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewFindingsV2.d.ts +7 -7
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewFollowUpV1.d.ts +6 -6
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewPublishRequestV1.d.ts +5 -5
- package/node_modules/@happier-dev/protocol/dist/structuredMessages/voiceAgentTurnV1.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/systemTasks/spec.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/systemTasks/tailscaleSecureAccessTaskContract.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/systemTasks/tailscaleSecureAccessTaskContract.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.d.ts +7 -0
- package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.js +32 -0
- package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/tools/happierToolsShellBridge.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/happierToolsShellBridge.js +95 -39
- package/node_modules/@happier-dev/protocol/dist/tools/happierToolsShellBridge.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.d.ts +99 -0
- package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.js +246 -0
- package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/tools/v2/aliases.d.ts +11 -11
- package/node_modules/@happier-dev/protocol/dist/tools/v2/aliases.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/index.d.ts +2 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/index.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/index.js +2 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/index.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/meta.d.ts +5 -5
- package/node_modules/@happier-dev/protocol/dist/tools/v2/names.d.ts +45 -39
- package/node_modules/@happier-dev/protocol/dist/tools/v2/names.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/names.js +9 -0
- package/node_modules/@happier-dev/protocol/dist/tools/v2/names.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.d.ts +9 -0
- package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.js +343 -0
- package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.d.ts +284 -100
- package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.js +62 -0
- package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/subAgentFamilies.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/dist/tools/v2/subAgentFamilies.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/updates.d.ts +813 -24
- package/node_modules/@happier-dev/protocol/dist/updates.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/updates.js +148 -1
- package/node_modules/@happier-dev/protocol/dist/updates.js.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/voiceActions.d.ts +2 -2
- package/node_modules/@happier-dev/protocol/dist/voiceActions.d.ts.map +1 -1
- package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.d.ts +310 -0
- package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.js +108 -0
- package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.d.ts +39 -0
- package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.d.ts.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.js +33 -0
- package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.js.map +1 -0
- package/node_modules/@happier-dev/protocol/dist/workspaces/manifestSchema.d.ts +1 -1
- package/node_modules/@happier-dev/protocol/package.json +8 -0
- package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.d.ts +38 -0
- package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.js +1123 -0
- package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/dist/assets.d.ts.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/github.d.ts +2 -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 +17 -15
- package/node_modules/@happier-dev/release-runtime/dist/github.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/index.d.ts +1 -1
- 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 -1
- package/node_modules/@happier-dev/release-runtime/dist/index.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/releaseRings.d.ts +3 -2
- package/node_modules/@happier-dev/release-runtime/dist/releaseRings.d.ts.map +1 -1
- package/node_modules/@happier-dev/release-runtime/dist/releaseRings.js +5 -0
- package/node_modules/@happier-dev/release-runtime/dist/releaseRings.js.map +1 -1
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/LICENSE.md +55 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/README.md +1233 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.js +82 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.js +88 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.d.ts +53 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.js +348 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.d.ts +20 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.js +64 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.min.js +4 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.d.ts +7 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.js +153 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.js +52 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.js +187 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.d.ts +604 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.js +66 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.js +544 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.js +655 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.js +182 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.js +7 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.js +136 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.js +227 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.d.ts +16 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.js +70 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.js +932 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.js +33 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.js +31 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.js +14 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.js +698 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.js +76 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.js +14 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.js +49 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.js +26 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.d.ts +53 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.js +311 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.d.ts +20 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.js +20 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.min.js +4 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.min.js.map +7 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.js +94 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.d.ts +7 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.js +113 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.d.ts +49 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.js +48 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.js +179 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.js +25 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.d.ts +604 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.js +54 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.d.ts +105 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.js +502 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.d.ts +92 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.js +651 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.js +166 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.d.ts +26 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.js +178 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.js +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.js +132 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.js +221 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.js +15 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.d.ts +16 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.js +65 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.d.ts +101 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.js +891 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.js +30 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.js +27 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.js +9 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.js +656 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/README.md +71 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/LICENSE +15 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/README.md +825 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/commonjs/index.d.ts +549 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/commonjs/index.js +1028 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/esm/index.d.ts +549 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/esm/index.js +1018 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/package.json +82 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/package.json +72 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/LICENSE.md +63 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/README.md +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.js +93 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.js +85 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/package.json +69 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/LICENSE +15 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/README.md +825 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.d.ts +549 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.js +1028 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.d.ts +549 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.js +1018 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/package.json +82 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/LICENSE +26 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/README.md +64 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.js +123 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.js +416 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.js +117 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.d.ts +99 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.js +363 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/LICENSE +15 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/README.md +825 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.d.ts +549 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.js +1028 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.d.ts +549 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.js +1018 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/package.json +82 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/package.json +80 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/LICENSE.md +63 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/README.md +205 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.js +384 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.d.ts +39 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.js +379 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.js.map +1 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/package.json +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/package.json +68 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/tar/package.json +298 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/README.md +72 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/dist/package/xz-decompress.js +273 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/dist/package/xz-decompress.min.js +6 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/package.json +55 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/types.d.ts +3 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/LICENSE +21 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/README.md +658 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/index.js +796 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/LICENSE +19 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/README.md +47 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/index.js +111 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/package.json +39 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/.npmignore +2 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/.travis.yml +7 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/CHANGELOG.md +49 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/LICENSE +21 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/README.md +199 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/index.js +296 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/LICENSE +23 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/README.md +41 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/index.js +55 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/package.json +18 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/test.js +137 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/package.json +36 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/test/test.js +350 -0
- package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/package.json +40 -0
- package/node_modules/@happier-dev/release-runtime/package.json +8 -3
- package/node_modules/@happier-dev/release-runtime/releaseRings.cjs +204 -0
- package/package.json +5 -3
- package/scripts/auth.mjs +219 -230
- package/scripts/auth_copy_from_runCapture.integration.test.mjs +39 -20
- package/scripts/auth_login_force_cleans_server_scoped_credentials.integration.test.mjs +41 -8
- package/scripts/auth_login_guided_server_no_expo.test.mjs +543 -25
- package/scripts/auth_login_print_includes_configure_links.test.mjs +23 -4
- package/scripts/auth_login_respects_pinned_stack_port.test.mjs +68 -17
- package/scripts/build/build_server_artifact.mjs +1 -0
- package/scripts/build/collect_build_source_metadata.mjs +6 -5
- package/scripts/build/collect_build_source_metadata.test.mjs +21 -0
- package/scripts/build/runtime_build_lock.mjs +3 -1
- package/scripts/build/runtime_build_lock.test.mjs +18 -0
- package/scripts/build.mjs +8 -0
- package/scripts/bundleWorkspaceDeps.mjs +427 -16
- package/scripts/bundleWorkspaceDeps.test.mjs +419 -11
- package/scripts/claude_hooks.test.mjs +50 -0
- package/scripts/daemon.getDaemonEnv.test.mjs +106 -2
- package/scripts/daemon.mjs +1195 -292
- package/scripts/daemon.status_scope.test.mjs +2 -1
- package/scripts/daemon_dist_guard.test.mjs +2800 -97
- package/scripts/daemon_invalid_auth_reseed_stack_name.integration.test.mjs +64 -2
- package/scripts/daemon_server_scope_commands.test.mjs +158 -49
- package/scripts/daemon_server_scoped_state.test.mjs +59 -12
- package/scripts/daemon_start_verification.integration.test.mjs +856 -65
- package/scripts/daemon_stop_expected_pid.test.mjs +336 -12
- package/scripts/dev.mjs +590 -93
- package/scripts/dev_cli_build_ownership.test.mjs +191 -0
- package/scripts/dev_external_server_flags.test.mjs +142 -2
- package/scripts/dev_preserve_daemon_shutdown.integration.test.mjs +238 -0
- package/scripts/dev_reload_composition.integration.test.mjs +392 -0
- package/scripts/dev_target_placement.test.mjs +97 -0
- package/scripts/dev_targets.mjs +159 -0
- package/scripts/dev_targets_cmd.test.mjs +81 -0
- package/scripts/direct_start_cleanup_dry_run.test.mjs +66 -0
- package/scripts/doctor_runtime_snapshot.test.mjs +3 -2
- package/scripts/eas.mjs +3 -2
- package/scripts/eas_platform_parsing.test.mjs +9 -0
- package/scripts/ghops.test.mjs +477 -6
- package/scripts/happier.mjs +1 -429
- package/scripts/happier_defaults_from_settings.test.mjs +56 -83
- package/scripts/happier_main.mjs +433 -0
- package/scripts/happier_runtime_snapshot.test.mjs +186 -14
- package/scripts/happier_server_url_scope.test.mjs +3 -1
- package/scripts/happier_tsx_fallback.test.mjs +5 -4
- package/scripts/happier_wrapper_bootstrap.test.mjs +208 -0
- package/scripts/hstack_wrapper_bundled_workspace_sync.test.mjs +351 -0
- package/scripts/init_shim_invoked_cwd.test.mjs +10 -2
- package/scripts/lifecycle_authority_inventory.test.mjs +40 -0
- package/scripts/lint.mjs +3 -2
- package/scripts/localBundledWorkspacePreflight.test.mjs +330 -0
- package/scripts/migrate.mjs +30 -5
- package/scripts/migrate_effective_db_provider.test.mjs +68 -0
- package/scripts/mobile.mjs +59 -13
- package/scripts/mobile_dev_client.mjs +12 -7
- package/scripts/mobile_dev_client_android_falls_back_to_pipeline_in_test_stub.test.mjs +30 -1
- package/scripts/mobile_dev_client_android_reuse_existing_apk_in_test_stub.test.mjs +62 -1
- package/scripts/mobile_dev_client_android_reuse_falls_back_to_cached_apk_in_test_stub.test.mjs +1 -1
- package/scripts/mobile_dev_client_help_smoke.test.mjs +2 -0
- package/scripts/mobile_memory_profiling_prebuild_patches_podfile_autolinking.test.mjs +94 -0
- package/scripts/mobile_profiling_runtime_uses_simulator_selection.test.mjs +116 -0
- package/scripts/mobile_run_android_passes_port.test.mjs +120 -2
- package/scripts/orchestrated_stack_auth_flow.test.mjs +40 -4
- package/scripts/orchestrated_stack_auth_flow_webapp_url.test.mjs +76 -4
- package/scripts/pack.mjs +53 -8
- package/scripts/pack.test.mjs +113 -2
- package/scripts/pglite_lock.integration.test.mjs +46 -2
- package/scripts/profile_mobile_scenario.mjs +235 -0
- package/scripts/profile_processes.mjs +138 -0
- package/scripts/profiling/ios_xctrace_memory_diagnostics.mjs +91 -0
- package/scripts/profiling/ios_xctrace_memory_diagnostics.test.mjs +72 -0
- package/scripts/profiling/mobile_profile_scenarios.mjs +830 -0
- package/scripts/profiling/mobile_profile_scenarios.test.mjs +379 -0
- package/scripts/profiling/process_profiler.mjs +424 -0
- package/scripts/profiling/process_profiler.test.mjs +214 -0
- package/scripts/provider_projection_owners.test.mjs +29 -0
- package/scripts/provision/linux-ubuntu-provision.sh +33 -0
- package/scripts/provision/linux-ubuntu-provision.test.mjs +19 -1
- package/scripts/release_binary_smoke.integration.test.mjs +24 -12
- package/scripts/remote_cmd.mjs +56 -13
- package/scripts/remote_cmd.test.mjs +84 -1
- package/scripts/repo_local.mjs +82 -130
- package/scripts/repo_local_effective_db_provider.test.mjs +161 -0
- package/scripts/repo_local_wrapper.test.mjs +75 -1
- package/scripts/review_pr.mjs +8 -17
- package/scripts/review_pr.warm_base_deps.test.mjs +8 -1
- package/scripts/review_pr.workspace_cache.test.mjs +16 -0
- package/scripts/root_package_repo_local_scripts.test.mjs +1 -0
- package/scripts/run.mjs +281 -80
- package/scripts/run_effective_db_provider.test.mjs +79 -0
- package/scripts/run_script_with_stack_env.restart_port_reuse.test.mjs +80 -0
- package/scripts/run_source_server_workspace_deps.test.mjs +18 -0
- package/scripts/run_startup_topology_side_effects.test.mjs +196 -0
- package/scripts/runtime/launch/inspectActiveRuntimeSnapshot.mjs +40 -13
- package/scripts/runtime/launch/resolveActiveRuntimeSnapshot.test.mjs +119 -0
- package/scripts/runtime/launch/resolveCliRuntimeLaunchSpec.mjs +51 -0
- package/scripts/runtime/launch/resolveLaunchSpecs.test.mjs +153 -9
- package/scripts/runtime/launch/resolveServerRuntimeLaunchSpec.mjs +61 -4
- package/scripts/runtime/launch/resolveStackRuntimeLaunchContext.mjs +2 -2
- package/scripts/runtime/launch/runServerRuntimeMigration.mjs +116 -0
- package/scripts/runtime/launch/runServerRuntimeMigration.test.mjs +211 -0
- package/scripts/runtime/launch/runtimeProvenanceConsumerInventory.test.mjs +36 -0
- package/scripts/runtime/shared/runtime_mode.mjs +10 -1
- package/scripts/runtime/shared/runtime_mode.test.mjs +22 -0
- package/scripts/self_host/install_companion_cli.mjs +3 -17
- package/scripts/self_host_runtime.mjs +462 -479
- package/scripts/self_host_runtime.test.mjs +662 -36
- package/scripts/self_host_schtasks.real.integration.test.mjs +2 -1
- package/scripts/self_host_service_e2e_harness.mjs +7 -1
- package/scripts/self_host_systemd.real.integration.test.mjs +31 -5
- package/scripts/self_host_systemd_harness.test.mjs +33 -0
- package/scripts/server_flavor.mjs +39 -17
- package/scripts/server_flavor_provider.test.mjs +126 -0
- package/scripts/service.mjs +76 -85
- package/scripts/service.post_start_diagnostics_scope.test.mjs +97 -0
- package/scripts/service_cleanup_ownership.test.mjs +41 -0
- package/scripts/setup.mjs +26 -1
- package/scripts/setup_dev_child_env.test.mjs +23 -2
- package/scripts/sqlite_snapshot.mjs +86 -0
- package/scripts/sqlite_snapshot.test.mjs +1032 -0
- package/scripts/stack/help_text.mjs +5 -3
- package/scripts/stack/run_script_with_stack_env.mjs +396 -189
- package/scripts/stack/run_script_with_stack_env.test.mjs +368 -0
- package/scripts/stack/stack_daemon_command.mjs +74 -48
- package/scripts/stack/stack_daemon_runtime_provenance.test.mjs +40 -0
- package/scripts/stack/stack_environment.mjs +57 -19
- package/scripts/stack/stack_environment.sanitization.test.mjs +64 -0
- package/scripts/stack/stack_happier_passthrough_command.mjs +21 -1
- package/scripts/stack/stack_info_snapshot.mjs +317 -68
- package/scripts/stack/stack_install_command.mjs +295 -0
- package/scripts/stack/stack_mobile_install_command.mjs +19 -5
- package/scripts/stack/stack_mobile_install_command.test.mjs +44 -0
- package/scripts/stack/stack_stop_command.mjs +12 -4
- package/scripts/stack/stack_stop_command.test.mjs +16 -0
- package/scripts/stack.mjs +244 -94
- package/scripts/stack_archive_cmd.integration.test.mjs +29 -1
- package/scripts/stack_audit_fix_light_env.test.mjs +10 -7
- package/scripts/stack_audit_mysql_provider.test.mjs +194 -0
- package/scripts/stack_background_pinned_stack_json.test.mjs +59 -1
- package/scripts/stack_copy_auth_server_scoped.test.mjs +30 -15
- package/scripts/stack_daemon_cmd.integration.test.mjs +112 -5
- package/scripts/stack_guided_login_inner_invocation.test.mjs +17 -7
- package/scripts/stack_happy_cmd.integration.test.mjs +70 -15
- package/scripts/stack_info_snapshot_running_status.test.mjs +789 -25
- package/scripts/stack_install_command.test.mjs +125 -0
- package/scripts/stack_new_name_normalize_cmd.test.mjs +31 -0
- package/scripts/stack_new_port_policy.test.mjs +128 -0
- package/scripts/stack_owner_death_watchdog.integration.test.mjs +227 -4
- package/scripts/stack_package_scripts.test.mjs +3 -1
- package/scripts/stack_runtime_start.integration.test.mjs +435 -12
- package/scripts/stack_runtime_start_listener_proof.integration.test.mjs +119 -0
- package/scripts/stack_server_flavors_defaults.test.mjs +126 -0
- package/scripts/stack_stop_sweeps_legacy_infra_without_kind.integration.test.mjs +2 -0
- package/scripts/stackless_startup_topology.test.mjs +111 -0
- package/scripts/start_proxy_runtime_state.test.mjs +686 -0
- package/scripts/start_runtime_mode_json.test.mjs +6 -3
- package/scripts/stopStackWithEnv_daemonControlToken.integration.test.mjs +123 -6
- package/scripts/stopStackWithEnv_daemonPidSet.integration.test.mjs +1008 -0
- package/scripts/stopStackWithEnv_home_relative_env_file.integration.test.mjs +94 -0
- package/scripts/stopStackWithEnv_kills_ephemeral_runtime_pids_without_env_markers.integration.test.mjs +346 -8
- package/scripts/stopStackWithEnv_sweeps_repo_local_stack_by_stackName_when_runtime_missing.integration.test.mjs +280 -15
- package/scripts/tauri_dev.mjs +46 -5
- package/scripts/tauri_dev.test.mjs +111 -30
- package/scripts/test_ci.mjs +14 -1
- package/scripts/test_cmd.mjs +4 -3
- package/scripts/test_integration.mjs +13 -2
- package/scripts/testkit/core/env_scope.mjs +5 -1
- package/scripts/testkit/core/expo_command_shims.mjs +29 -0
- package/scripts/testkit/core/minimal_monorepo_layout.mjs +2 -0
- package/scripts/testkit/core/owner_death_watchdog_fixture.mjs +36 -0
- package/scripts/testkit/core/owner_death_watchdog_fixture.test.mjs +43 -0
- package/scripts/testkit/core/runtime_snapshot_layout.mjs +11 -0
- package/scripts/testkit/core/spawn_daemon_like_process.mjs +193 -0
- package/scripts/testkit/core/spawn_daemon_like_process.test.mjs +85 -0
- package/scripts/testkit/core/spawn_test_process.mjs +30 -0
- package/scripts/testkit/core/spawn_test_process.test.mjs +38 -1
- package/scripts/testkit/core/stub_happier_cli_files.mjs +13 -0
- package/scripts/testkit/core/workspace_package_build_owner.mjs +29 -0
- package/scripts/testkit/runtime_snapshot_start_testkit.mjs +128 -31
- package/scripts/testkit/runtime_snapshot_testkit.mjs +3 -0
- package/scripts/testkit/stack_happier_cli_command_testkit.mjs +4 -0
- package/scripts/tools.mjs +20 -1
- package/scripts/tools_profile_processes_help.test.mjs +131 -0
- package/scripts/tui.mjs +245 -280
- package/scripts/tui_restart_delegation.test.mjs +257 -0
- package/scripts/tui_stopStackForTuiExit_no_autosweep.integration.test.mjs +57 -1
- package/scripts/typecheck.mjs +3 -2
- package/scripts/ui_gateway.mjs +2 -2
- package/scripts/ui_gateway.test.mjs +119 -0
- package/scripts/utils/auth/clearStackForceLoginCredentialPaths.mjs +11 -1
- package/scripts/utils/auth/credentials_paths.mjs +110 -36
- package/scripts/utils/auth/credentials_paths.test.mjs +283 -26
- package/scripts/utils/auth/daemon_gate.test.mjs +3 -2
- package/scripts/utils/auth/ensure_active_access_key_valid.mjs +31 -8
- package/scripts/utils/auth/ensure_active_access_key_valid.test.mjs +115 -1
- package/scripts/utils/auth/orchestrated_stack_auth_flow.mjs +34 -3
- package/scripts/utils/auth/stable_scope_id.mjs +11 -0
- package/scripts/utils/auth/stable_scope_id.test.mjs +16 -0
- package/scripts/utils/auth/stack_guided_login.mjs +32 -15
- package/scripts/utils/cli/args.mjs +33 -7
- package/scripts/utils/cli/args.test.mjs +51 -0
- package/scripts/utils/cli/cli.mjs +3 -4
- package/scripts/utils/cli/cliDistIntegrity.mjs +130 -53
- package/scripts/utils/cli/cliDistIntegrity.test.mjs +157 -0
- package/scripts/utils/cli/cli_registry.mjs +107 -11
- package/scripts/utils/cli/prereqs.test.mjs +2 -2
- package/scripts/utils/dev/daemon.mjs +395 -151
- package/scripts/utils/dev/daemonLifecycleReconciler.mjs +98 -0
- package/scripts/utils/dev/daemonLifecycleReconciler.test.mjs +187 -0
- package/scripts/utils/dev/daemon_watch_resilience.test.mjs +817 -166
- package/scripts/utils/dev/devProxy.mjs +310 -0
- package/scripts/utils/dev/devProxy.test.mjs +406 -0
- package/scripts/utils/dev/devProxyLifecycle.mjs +27 -0
- package/scripts/utils/dev/devProxyLifecycle.test.mjs +32 -0
- package/scripts/utils/dev/devProxyRuntime.mjs +96 -0
- package/scripts/utils/dev/devReloadComposition.mjs +50 -0
- package/scripts/utils/dev/devReloadCoordinator.mjs +557 -0
- package/scripts/utils/dev/devReloadCoordinator.test.mjs +1685 -0
- package/scripts/utils/dev/devReloadTargets.mjs +11 -0
- package/scripts/utils/dev/devRuntimeInputPolicy.mjs +31 -0
- package/scripts/utils/dev/devStartupTopology.mjs +131 -0
- package/scripts/utils/dev/devStartupTopology.test.mjs +181 -0
- package/scripts/utils/dev/expo_dev.buildEnv.test.mjs +21 -0
- package/scripts/utils/dev/expo_dev.ensure_workspace_built.test.mjs +169 -3
- package/scripts/utils/dev/expo_dev.mjs +735 -259
- package/scripts/utils/dev/expo_dev.tailscale.test.mjs +415 -0
- package/scripts/utils/dev/expo_dev.test.mjs +72 -1
- package/scripts/utils/dev/expo_dev_crash_supervision.test.mjs +341 -0
- package/scripts/utils/dev/expo_dev_restart_port_reservation.test.mjs +521 -64
- package/scripts/utils/dev/expo_dev_runtime_metadata.test.mjs +142 -4
- package/scripts/utils/dev/expo_dev_supervision.mjs +116 -0
- package/scripts/utils/dev/expo_dev_tailscale.mjs +153 -0
- package/scripts/utils/dev/expo_dev_verbose_logs.test.mjs +24 -3
- package/scripts/utils/dev/reloadPollInterval.mjs +18 -0
- package/scripts/utils/dev/resolveDevServerConnection.mjs +5 -2
- package/scripts/utils/dev/resolveDevServerConnection.test.mjs +20 -3
- package/scripts/utils/dev/server.mjs +2251 -81
- package/scripts/utils/dev/server_watch.exclusive.test.mjs +1986 -0
- package/scripts/utils/dev/server_watch.test.mjs +1254 -0
- package/scripts/utils/dev/tauri_dev.mjs +2 -1
- package/scripts/utils/dev/tauri_dev.test.mjs +23 -18
- package/scripts/utils/dev/watchSignature.mjs +95 -0
- package/scripts/utils/dev_targets/config.mjs +266 -0
- package/scripts/utils/dev_targets/config.test.mjs +224 -0
- package/scripts/utils/dev_targets/doctor.mjs +61 -0
- package/scripts/utils/dev_targets/doctor.test.mjs +67 -0
- package/scripts/utils/dev_targets/mutagen_project.mjs +125 -0
- package/scripts/utils/dev_targets/mutagen_project.test.mjs +121 -0
- package/scripts/utils/dev_targets/remote_commands.mjs +478 -0
- package/scripts/utils/dev_targets/remote_commands.test.mjs +389 -0
- package/scripts/utils/dev_targets/remote_dependency_bootstrap.mjs +103 -0
- package/scripts/utils/dev_targets/remote_dependency_bootstrap.test.mjs +38 -0
- package/scripts/utils/dev_targets/service_placement.mjs +45 -0
- package/scripts/utils/dev_targets/service_placement.test.mjs +61 -0
- package/scripts/utils/dev_targets/supervisor.mjs +863 -0
- package/scripts/utils/dev_targets/supervisor.test.mjs +1382 -0
- package/scripts/utils/env/env_file.mjs +88 -16
- package/scripts/utils/env/env_file.test.mjs +46 -1
- package/scripts/utils/env/env_local.mjs +6 -6
- package/scripts/utils/env/scrub_env.mjs +2 -0
- package/scripts/utils/env/scrub_env.test.mjs +4 -0
- package/scripts/utils/execution_host_adapter.mjs +87 -0
- package/scripts/utils/execution_host_adapter.test.mjs +69 -0
- package/scripts/utils/expo/command.mjs +6 -0
- package/scripts/utils/expo/command_export_max_workers.test.mjs +2 -0
- package/scripts/utils/expo/command_heap_limit_env.test.mjs +87 -25
- package/scripts/utils/expo/command_workspace_deps_built.test.mjs +75 -29
- package/scripts/utils/expo/expo.mjs +340 -14
- package/scripts/utils/expo/expo_state_running.test.mjs +104 -2
- package/scripts/utils/expo/expo_wait_for_metro.test.mjs +187 -0
- package/scripts/utils/expo/metro_ports.mjs +160 -1
- package/scripts/utils/expo/metro_ports.test.mjs +198 -1
- package/scripts/utils/fs/atomic_dir_swap.mjs +44 -31
- package/scripts/utils/fs/atomic_dir_swap.test.mjs +69 -0
- package/scripts/utils/fs/atomic_rename.mjs +33 -0
- package/scripts/utils/fs/json.mjs +5 -4
- package/scripts/utils/fs/json.test.mjs +33 -0
- package/scripts/utils/fs/tail.mjs +4 -0
- package/scripts/utils/fs/tail.test.mjs +32 -0
- package/scripts/utils/mobile/android_generated_build_state.mjs +87 -0
- package/scripts/utils/mobile/config.mjs +14 -0
- package/scripts/utils/mobile/dev_client_install_invocation.android.test.mjs +21 -0
- package/scripts/utils/mobile/dev_client_install_invocation.mjs +39 -2
- package/scripts/utils/mobile/dev_client_install_invocation.test.mjs +34 -0
- package/scripts/utils/mobile/identifiers.mjs +29 -8
- package/scripts/utils/mobile/identifiers.test.mjs +17 -1
- package/scripts/utils/mobile/ios_podfile_autolinking.mjs +74 -0
- package/scripts/utils/mobile/ios_podfile_autolinking.test.mjs +79 -0
- package/scripts/utils/mobile/ios_podfile_properties.mjs +50 -0
- package/scripts/utils/mobile/ios_podfile_properties.test.mjs +88 -0
- package/scripts/utils/mobile/ios_profiling_runtime.mjs +171 -0
- package/scripts/utils/mobile/ios_profiling_runtime.test.mjs +145 -0
- package/scripts/utils/mobile/ios_xcodeproj_patch.mjs +6 -1
- package/scripts/utils/mobile/ios_xcodeproj_patch.test.mjs +41 -0
- package/scripts/utils/mobile/profiling_runtime_mode.mjs +35 -0
- package/scripts/utils/mobile/profiling_runtime_mode.test.mjs +28 -0
- package/scripts/utils/net/ports.mjs +419 -40
- package/scripts/utils/net/ports.test.mjs +639 -1
- package/scripts/utils/net/tcp_forward.mjs +117 -9
- package/scripts/utils/net/tcp_forward.test.mjs +255 -0
- package/scripts/utils/pglite_lock.mjs +84 -3
- package/scripts/utils/proc/cliDistBuildLock.mjs +62 -81
- package/scripts/utils/proc/cliDistBuildLock.test.mjs +400 -0
- package/scripts/utils/proc/cli_runtime_inputs.mjs +109 -0
- package/scripts/utils/proc/command_dependency_admission.test.mjs +54 -0
- package/scripts/utils/proc/dependency_refresh.mjs +263 -0
- package/scripts/utils/proc/dependency_refresh.test.mjs +125 -0
- package/scripts/utils/proc/ensureWorkspacePackagesBuilt.test.mjs +569 -18
- package/scripts/utils/proc/exit_cleanup.mjs +2 -2
- package/scripts/utils/proc/jsonOwnerFileLock.mjs +194 -0
- package/scripts/utils/proc/jsonOwnerFileLock.test.mjs +428 -0
- package/scripts/utils/proc/ownership.mjs +411 -52
- package/scripts/utils/proc/ownership_killProcessGroupOwnedByStack.test.mjs +348 -1
- package/scripts/utils/proc/ownership_listPidsWithEnvNeedles.test.mjs +196 -1
- package/scripts/utils/proc/pids.mjs +11 -6
- package/scripts/utils/proc/pids.test.mjs +29 -0
- package/scripts/utils/proc/pm.mjs +406 -368
- package/scripts/utils/proc/pm_stack_cache_env.test.mjs +1295 -121
- package/scripts/utils/proc/proc.mjs +342 -89
- package/scripts/utils/proc/proc.test.mjs +362 -3
- package/scripts/utils/proc/pruneLogsByCount.mjs +49 -0
- package/scripts/utils/proc/pruneLogsByCount.test.mjs +132 -0
- package/scripts/utils/proc/terminate.mjs +203 -20
- package/scripts/utils/proc/terminate.test.mjs +207 -1
- package/scripts/utils/proc/watch.mjs +139 -19
- package/scripts/utils/proc/watch.test.mjs +230 -0
- package/scripts/utils/proc/workspace_dependencies.mjs +21 -0
- package/scripts/utils/proc/workspace_package_manifests.mjs +108 -0
- package/scripts/utils/remote/install_remote_first_party_component.mjs +112 -43
- package/scripts/utils/remote/install_remote_first_party_component.test.mjs +46 -35
- package/scripts/utils/review/augment_runner_integration.test.mjs +10 -3
- package/scripts/utils/server/apply_runtime_server_sqlite_env.mjs +36 -0
- package/scripts/utils/server/apply_runtime_server_sqlite_env.test.mjs +46 -0
- package/scripts/utils/server/apply_server_preset_env_defaults.mjs +32 -0
- package/scripts/utils/server/apply_server_preset_env_defaults.test.mjs +95 -0
- package/scripts/utils/server/effective_db_provider.mjs +138 -0
- package/scripts/utils/server/effective_db_provider.test.mjs +249 -0
- package/scripts/utils/server/flavor_scripts.mjs +12 -78
- package/scripts/utils/server/flavor_scripts.test.mjs +39 -47
- package/scripts/utils/server/infra/happy_server_infra.mjs +92 -39
- package/scripts/utils/server/infra/happy_server_infra_provider.test.mjs +290 -0
- package/scripts/utils/server/listener_ownership.mjs +488 -0
- package/scripts/utils/server/listener_ownership.test.mjs +473 -0
- package/scripts/utils/server/logging_env.mjs +20 -0
- package/scripts/utils/server/logging_env.test.mjs +29 -0
- package/scripts/utils/server/mobile_api_url.mjs +17 -3
- package/scripts/utils/server/mobile_api_url.test.mjs +21 -1
- package/scripts/utils/server/prisma_client_import.mjs +18 -0
- package/scripts/utils/server/prisma_import.mjs +0 -15
- package/scripts/utils/server/prisma_import.test.mjs +0 -37
- package/scripts/utils/server/resolve_stack_server_port.mjs +131 -43
- package/scripts/utils/server/resolve_stack_server_port.test.mjs +696 -5
- package/scripts/utils/server/server.mjs +146 -39
- package/scripts/utils/server/server.test.mjs +252 -4
- package/scripts/utils/server/server_migrations.mjs +17 -0
- package/scripts/utils/server/shutdown_grace.mjs +14 -0
- package/scripts/utils/server/shutdown_grace.test.mjs +29 -0
- package/scripts/utils/server/source_server_workspace_deps.mjs +27 -0
- package/scripts/utils/server/source_server_workspace_deps.test.mjs +71 -0
- package/scripts/utils/server/validate.mjs +4 -43
- package/scripts/utils/server/validate.test.mjs +4 -4
- package/scripts/utils/service/archive_service_lifecycle.mjs +59 -0
- package/scripts/utils/service/archive_service_lifecycle.test.mjs +88 -0
- package/scripts/utils/service/daemon_autostart.mjs +1 -1
- package/scripts/utils/service/daemon_autostart.test.mjs +34 -0
- package/scripts/utils/service/service_manager.mjs +26 -1
- package/scripts/utils/service/service_manager.plan.test.mjs +187 -1
- package/scripts/utils/sqlite/sqlite_snapshot.mjs +820 -0
- package/scripts/utils/stack/daemonControlClient.mjs +426 -0
- package/scripts/utils/stack/daemonControlClient.test.mjs +567 -0
- package/scripts/utils/stack/daemon_lifecycle_lock.mjs +49 -0
- package/scripts/utils/stack/daemon_lifecycle_lock.test.mjs +220 -0
- package/scripts/utils/stack/dirs.mjs +6 -2
- package/scripts/utils/stack/owner_death_watchdog.mjs +6 -1
- package/scripts/utils/stack/owner_death_watchdog_runner.mjs +130 -2
- package/scripts/utils/stack/repo_stack_identity.mjs +113 -0
- package/scripts/utils/stack/repo_stack_identity.test.mjs +23 -0
- package/scripts/utils/stack/restart_args.mjs +22 -0
- package/scripts/utils/stack/runtime_daemon_state.mjs +474 -23
- package/scripts/utils/stack/runtime_daemon_state.test.mjs +838 -0
- package/scripts/utils/stack/runtime_owner_incarnation.mjs +9 -0
- package/scripts/utils/stack/runtime_state.mjs +896 -37
- package/scripts/utils/stack/runtime_state.test.mjs +1152 -2
- package/scripts/utils/stack/server_profile_reconciliation.mjs +92 -0
- package/scripts/utils/stack/startup.mjs +75 -81
- package/scripts/utils/stack/startup_runtime_probe.test.mjs +115 -0
- package/scripts/utils/stack/startup_server_light_dirs.test.mjs +10 -3
- package/scripts/utils/stack/startup_server_light_generate.test.mjs +115 -4
- package/scripts/utils/stack/startup_server_light_legacy.test.mjs +17 -15
- package/scripts/utils/stack/startup_server_light_testkit.mjs +8 -1
- package/scripts/utils/stack/stop.mjs +641 -144
- package/scripts/utils/stack/stop_lock_timeout.test.mjs +13 -0
- package/scripts/utils/tauri/desktop_install.mjs +81 -0
- package/scripts/utils/tauri/desktop_install.test.mjs +43 -0
- package/scripts/utils/tauri/dev_runtime.mjs +10 -1
- package/scripts/utils/tauri/dev_runtime.test.mjs +2 -1
- package/scripts/utils/tauri/stack_overrides.mjs +28 -4
- package/scripts/utils/tauri/stack_overrides.test.mjs +26 -0
- package/scripts/utils/test/test_env.mjs +44 -0
- package/scripts/utils/test/test_env.test.mjs +99 -0
- package/scripts/utils/tui/actions.mjs +4 -13
- package/scripts/utils/tui/actions.test.mjs +5 -16
- package/scripts/utils/tui/args.mjs +8 -2
- package/scripts/utils/tui/args.test.mjs +14 -1
- package/scripts/utils/tui/cleanup.mjs +16 -1
- package/scripts/utils/tui/daemon_pane_reconcile.mjs +27 -1
- package/scripts/utils/tui/daemon_pane_reconcile.test.mjs +18 -0
- package/scripts/utils/tui/dev_target_panes.mjs +22 -0
- package/scripts/utils/tui/dev_target_panes.test.mjs +26 -0
- package/scripts/utils/tui/rescue_priority.mjs +37 -0
- package/scripts/utils/tui/rescue_priority.test.mjs +24 -0
- package/scripts/utils/tui/restart_operation.mjs +151 -0
- package/scripts/utils/tui/stack_scope_env.mjs +8 -3
- package/scripts/utils/tui/stack_scope_env.test.mjs +7 -2
- package/scripts/utils/tui/stdin_handoff.mjs +13 -40
- package/scripts/utils/tui/stdin_handoff.test.mjs +36 -1
- package/scripts/utils/tui/tauri_mode.mjs +178 -6
- package/scripts/utils/tui/tauri_mode.test.mjs +222 -4
- package/scripts/utils/workspaces/workspaceBundleLock.mjs +39 -0
- package/scripts/utils/worktrees/yarn_install_guard.mjs +7 -49
- package/scripts/utils/worktrees/yarn_install_guard.test.mjs +139 -4
- package/scripts/worktrees.mjs +16 -16
- package/node_modules/@happier-dev/agents/dist/.tsbuildinfo +0 -1
- package/node_modules/@happier-dev/cli-common/dist/.tsbuildinfo +0 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.js +0 -51
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.js +0 -76
- package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.js +0 -151
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.js +0 -184
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.js +0 -96
- package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.js +0 -64
- package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.d.ts +0 -9
- package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.js +0 -72
- package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.js +0 -178
- package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.js +0 -176
- package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.js +0 -138
- package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.js +0 -44
- package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.js +0 -20
- package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.js +0 -25
- package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.js +0 -177
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.js +0 -173
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.js +0 -98
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.js +0 -549
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.js +0 -37
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.js +0 -243
- package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.js +0 -204
- package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.js +0 -58
- package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.js +0 -29
- package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.js.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.d.ts +0 -2
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.d.ts.map +0 -1
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.js +0 -94
- package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.js.map +0 -1
- package/node_modules/@happier-dev/protocol/dist/.tsbuildinfo +0 -1
- package/node_modules/@happier-dev/release-runtime/dist/.tsbuildinfo +0 -1
- package/node_modules/@happier-dev/release-runtime/dist/_cjs/releaseRings.js +0 -134
- package/node_modules/@happier-dev/release-runtime/dist/extractPlan.d.ts +0 -14
- package/node_modules/@happier-dev/release-runtime/dist/extractPlan.d.ts.map +0 -1
- package/node_modules/@happier-dev/release-runtime/dist/extractPlan.js +0 -48
- package/node_modules/@happier-dev/release-runtime/dist/extractPlan.js.map +0 -1
- package/node_modules/@happier-dev/release-runtime/dist/releaseRings.cjs +0 -134
- package/scripts/daemon_cleanup_lsof_unavailable.test.mjs +0 -112
- package/scripts/ghops.mjs +0 -83
- package/scripts/stack_guided_login_does_not_preopen_browser.test.mjs +0 -17
- package/scripts/utils/auth/guided_stack_web_login.mjs +0 -56
- package/scripts/utils/auth/login_ux.mjs +0 -113
- package/scripts/utils/cli/smoke_help.mjs +0 -44
- package/scripts/utils/dev_auth_key.mjs +0 -7
- package/scripts/utils/server/apply_runtime_server_light_sqlite_env.mjs +0 -25
- package/scripts/utils/server/apply_server_light_env_defaults.mjs +0 -15
- package/scripts/utils/server/apply_server_light_env_defaults.test.mjs +0 -25
- package/scripts/utils/stack_context.mjs +0 -1
- package/scripts/utils/stack_runtime_state.mjs +0 -1
- package/scripts/utils/tui/daemon_autostart.mjs +0 -36
- package/scripts/utils/tui/daemon_autostart.test.mjs +0 -173
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
import test from 'node:test';
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
|
-
import { chmod, mkdtemp, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { chmod, mkdtemp, mkdir, readFile, readdir, rename, rm, symlink, writeFile } from 'node:fs/promises';
|
|
4
4
|
import net from 'node:net';
|
|
5
5
|
import { tmpdir } from 'node:os';
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { execFileSync } from 'node:child_process';
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
|
+
import { execFileSync, spawn, spawnSync } from 'node:child_process';
|
|
8
|
+
import { fileURLToPath } from 'node:url';
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
applyDaemonDistClosureRuntimeEnv,
|
|
12
|
+
assertFinalSourceDaemonDistAdmission,
|
|
13
|
+
checkDaemonState,
|
|
14
|
+
checkDaemonStatePingAware,
|
|
15
|
+
createDaemonStartAttemptLogPath,
|
|
16
|
+
ensureHappierCliDistExists,
|
|
17
|
+
getDaemonEnv,
|
|
18
|
+
resolveDaemonDistRestartReason,
|
|
19
|
+
resolveGuardedLocalCliDistEntrypoint,
|
|
20
|
+
startLocalDaemonWithAuth,
|
|
21
|
+
stopLocalDaemon,
|
|
22
|
+
} from './daemon.mjs';
|
|
23
|
+
import { resolveStackDaemonStatePaths } from './utils/auth/credentials_paths.mjs';
|
|
24
|
+
import { recordStackRuntimeStart } from './utils/stack/runtime_state.mjs';
|
|
10
25
|
import { writeStubHappierCliFiles } from './testkit/core/stub_happier_cli_files.mjs';
|
|
26
|
+
import { writeWorkspacePackageBuildOwnerStub } from './testkit/core/workspace_package_build_owner.mjs';
|
|
11
27
|
|
|
12
28
|
function runGit(args, cwd) {
|
|
13
29
|
execFileSync('git', args, { cwd, stdio: 'ignore' });
|
|
@@ -16,12 +32,721 @@ function runGit(args, cwd) {
|
|
|
16
32
|
function buildDaemonDistGuardEnv(overrides = {}) {
|
|
17
33
|
return {
|
|
18
34
|
...process.env,
|
|
35
|
+
HAPPIER_STACK_REPO_DIR: '',
|
|
36
|
+
HAPPIER_STACK_CLI_ROOT_DIR: '',
|
|
37
|
+
HAPPIER_CLI_SUBPROCESS_DIST_ENTRYPOINT: '',
|
|
38
|
+
HAPPIER_CLI_SUBPROCESS_STACK_RUNTIME_STATE_PATH: '',
|
|
39
|
+
HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: '',
|
|
19
40
|
HAPPIER_STACK_AUTO_AUTH_SEED: '0',
|
|
20
41
|
HAPPIER_STACK_MIGRATE_CREDENTIALS: '0',
|
|
42
|
+
HAPPIER_STACK_LOG_TEE_DIR: '',
|
|
21
43
|
...overrides,
|
|
22
44
|
};
|
|
23
45
|
}
|
|
24
46
|
|
|
47
|
+
test('watch startup admits a validated prior CLI publication without waiting for freshness build', async (t) => {
|
|
48
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-last-green-cli-startup-'));
|
|
49
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
50
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
51
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
52
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
53
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
54
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
55
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
56
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
57
|
+
const probes = [];
|
|
58
|
+
|
|
59
|
+
const result = await ensureHappierCliDistExists(
|
|
60
|
+
{
|
|
61
|
+
cliBin,
|
|
62
|
+
admitPriorDistImmediately: true,
|
|
63
|
+
env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir },
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
ensureCliBuiltImpl: async () => {
|
|
67
|
+
throw new Error('freshness build must run in the background reload owner');
|
|
68
|
+
},
|
|
69
|
+
probeCliDistRuntimeImportImpl: async (entrypoint) => {
|
|
70
|
+
probes.push(entrypoint);
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
assert.deepEqual(probes, [distEntrypoint]);
|
|
76
|
+
assert.equal(result.ok, true);
|
|
77
|
+
assert.equal(result.current, true);
|
|
78
|
+
assert.equal(result.built, false);
|
|
79
|
+
assert.equal(result.reason, 'admitted-prior-dist-for-watch-startup');
|
|
80
|
+
assert.equal(result.fallbackFingerprint, 'abcdef1234567890');
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test('watch startup retries a transient atomic CLI publication gap before waiting on the shared build lock', async (t) => {
|
|
84
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-last-green-cli-publication-gap-'));
|
|
85
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
86
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
87
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
88
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
89
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
90
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
91
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
92
|
+
let buildCalls = 0;
|
|
93
|
+
let sleepCalls = 0;
|
|
94
|
+
|
|
95
|
+
const result = await ensureHappierCliDistExists(
|
|
96
|
+
{
|
|
97
|
+
cliBin,
|
|
98
|
+
admitPriorDistImmediately: true,
|
|
99
|
+
env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir },
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
ensureCliBuiltImpl: async () => {
|
|
103
|
+
buildCalls += 1;
|
|
104
|
+
throw new Error('startup must not wait on the shared build lock');
|
|
105
|
+
},
|
|
106
|
+
sleepImpl: async () => {
|
|
107
|
+
sleepCalls += 1;
|
|
108
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
109
|
+
},
|
|
110
|
+
probeCliDistRuntimeImportImpl: async () => {},
|
|
111
|
+
},
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
assert.equal(result.reason, 'admitted-prior-dist-for-watch-startup');
|
|
115
|
+
assert.equal(buildCalls, 0);
|
|
116
|
+
assert.equal(sleepCalls, 1);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
test('source admission forces one last-chance build when builds are disabled and dist is invalid', async (t) => {
|
|
120
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-disabled-cli-bootstrap-'));
|
|
121
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
122
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
123
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
124
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
125
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
126
|
+
const calls = [];
|
|
127
|
+
|
|
128
|
+
const result = await ensureHappierCliDistExists(
|
|
129
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir, HAPPIER_STACK_CLI_BUILD: '0' } },
|
|
130
|
+
{
|
|
131
|
+
ensureCliBuiltImpl: async (_cliDir, options) => {
|
|
132
|
+
calls.push(options.buildCli);
|
|
133
|
+
if (options.buildCli) {
|
|
134
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
135
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
136
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
137
|
+
return { built: true, current: true, reason: 'changed' };
|
|
138
|
+
}
|
|
139
|
+
return { built: false, current: false, reason: 'disabled' };
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
assert.deepEqual(calls, [false, true]);
|
|
145
|
+
assert.equal(result.ok, true);
|
|
146
|
+
assert.equal(result.current, true);
|
|
147
|
+
assert.equal(result.built, true);
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
test('source admission does not force a disabled build when prior dist is valid', async (t) => {
|
|
151
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-disabled-cli-valid-'));
|
|
152
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
153
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
154
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
155
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
156
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
157
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
158
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
159
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
160
|
+
const calls = [];
|
|
161
|
+
const probes = [];
|
|
162
|
+
|
|
163
|
+
const result = await ensureHappierCliDistExists(
|
|
164
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir, HAPPIER_STACK_CLI_BUILD: '0' } },
|
|
165
|
+
{
|
|
166
|
+
ensureCliBuiltImpl: async (_cliDir, options) => {
|
|
167
|
+
calls.push(options.buildCli);
|
|
168
|
+
return { built: false, current: false, reason: 'disabled' };
|
|
169
|
+
},
|
|
170
|
+
probeCliDistRuntimeImportImpl: async (entrypoint) => {
|
|
171
|
+
probes.push(entrypoint);
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
assert.deepEqual(calls, [false]);
|
|
177
|
+
assert.deepEqual(probes, [distEntrypoint]);
|
|
178
|
+
assert.equal(result.ok, true);
|
|
179
|
+
assert.equal(result.current, false);
|
|
180
|
+
assert.equal(result.built, false);
|
|
181
|
+
assert.equal(result.degraded, true);
|
|
182
|
+
assert.equal(result.fallbackFingerprint, 'abcdef1234567890');
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
test('source admission exposes an unchanged runnable prior dist as degraded when the current build fails', async (t) => {
|
|
186
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-cli-build-failed-fallback-'));
|
|
187
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
188
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
189
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
190
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
191
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
192
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
193
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
194
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
195
|
+
const probes = [];
|
|
196
|
+
|
|
197
|
+
const result = await ensureHappierCliDistExists(
|
|
198
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir } },
|
|
199
|
+
{
|
|
200
|
+
ensureCliBuiltImpl: async () => {
|
|
201
|
+
throw new Error('yarn failed (code=47)');
|
|
202
|
+
},
|
|
203
|
+
probeCliDistRuntimeImportImpl: async (entrypoint, options) => {
|
|
204
|
+
probes.push({ entrypoint, timeoutMs: options.timeoutMs });
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
);
|
|
208
|
+
|
|
209
|
+
assert.deepEqual(probes, [{ entrypoint: distEntrypoint, timeoutMs: 120_000 }]);
|
|
210
|
+
assert.equal(result.ok, true);
|
|
211
|
+
assert.equal(result.current, false);
|
|
212
|
+
assert.equal(result.degraded, true);
|
|
213
|
+
assert.equal(result.fallbackFingerprint, 'abcdef1234567890');
|
|
214
|
+
assert.match(result.reason, /build_failed:yarn failed \(code=47\)/);
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
test('source admission uses a successful current build without entering degraded fallback', async (t) => {
|
|
218
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-cli-current-build-'));
|
|
219
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
220
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
221
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
222
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
223
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
224
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
225
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
226
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
227
|
+
|
|
228
|
+
const result = await ensureHappierCliDistExists(
|
|
229
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir } },
|
|
230
|
+
{
|
|
231
|
+
ensureCliBuiltImpl: async () => ({ built: true, current: true, reason: 'changed' }),
|
|
232
|
+
probeCliDistRuntimeImportImpl: async () => {
|
|
233
|
+
throw new Error('current build must not enter prior-dist probing');
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
assert.equal(result.ok, true);
|
|
239
|
+
assert.equal(result.current, true);
|
|
240
|
+
assert.notEqual(result.degraded, true);
|
|
241
|
+
assert.equal(result.reason, 'changed');
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
test('source admission exposes a successful but superseded build as degraded without rebuilding or reproving it', async (t) => {
|
|
245
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-cli-superseded-build-'));
|
|
246
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
247
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
248
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
249
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
250
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
251
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
252
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
253
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
254
|
+
|
|
255
|
+
const result = await ensureHappierCliDistExists(
|
|
256
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir } },
|
|
257
|
+
{
|
|
258
|
+
ensureCliBuiltImpl: async () => ({
|
|
259
|
+
built: true,
|
|
260
|
+
current: false,
|
|
261
|
+
reason: 'inputs_changed_during_build',
|
|
262
|
+
}),
|
|
263
|
+
probeCliDistRuntimeImportImpl: async () => {
|
|
264
|
+
throw new Error('the successful build owner already proved the published artifact');
|
|
265
|
+
},
|
|
266
|
+
},
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
assert.equal(result.ok, true);
|
|
270
|
+
assert.equal(result.current, false);
|
|
271
|
+
assert.equal(result.built, true);
|
|
272
|
+
assert.equal(result.degraded, true);
|
|
273
|
+
assert.equal(result.fallbackFingerprint, 'abcdef1234567890');
|
|
274
|
+
assert.equal(result.reason, 'inputs_changed_during_build');
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
test('source admission never promotes a different dist identity from a failed rebuild', async (t) => {
|
|
278
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-cli-build-failed-mutated-'));
|
|
279
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
280
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
281
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
282
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
283
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
284
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
285
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
286
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'aaaaaaaaaaaaaaaa');
|
|
287
|
+
let probes = 0;
|
|
288
|
+
|
|
289
|
+
const result = await ensureHappierCliDistExists(
|
|
290
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir } },
|
|
291
|
+
{
|
|
292
|
+
ensureCliBuiltImpl: async () => {
|
|
293
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'bbbbbbbbbbbbbbbb');
|
|
294
|
+
throw new Error('build failed after publication attempt');
|
|
295
|
+
},
|
|
296
|
+
probeCliDistRuntimeImportImpl: async () => {
|
|
297
|
+
probes += 1;
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
assert.equal(probes, 0);
|
|
303
|
+
assert.notEqual(result.degraded, true);
|
|
304
|
+
assert.equal(result.current, false);
|
|
305
|
+
assert.equal(result.fallbackRejectedReason, 'dist_identity_changed_during_failed_build');
|
|
306
|
+
assert.match(result.reason, /build_failed/);
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
test('source admission rejects a manifest-valid prior dist when its runtime import probe fails', async (t) => {
|
|
310
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-cli-build-failed-probe-'));
|
|
311
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
312
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
313
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
314
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
315
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
316
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
317
|
+
await writeFile(distEntrypoint, "import './missing-chunk.mjs';\n", 'utf-8');
|
|
318
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
319
|
+
|
|
320
|
+
const result = await ensureHappierCliDistExists(
|
|
321
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir } },
|
|
322
|
+
{
|
|
323
|
+
ensureCliBuiltImpl: async () => {
|
|
324
|
+
throw new Error('yarn failed (code=47)');
|
|
325
|
+
},
|
|
326
|
+
probeCliDistRuntimeImportImpl: async () => {
|
|
327
|
+
throw new Error('runtime import failed');
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
);
|
|
331
|
+
|
|
332
|
+
assert.notEqual(result.degraded, true);
|
|
333
|
+
assert.match(result.fallbackRejectedReason, /^runtime_probe_failed:runtime import failed/);
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
test('source admission fails closed when the disabled-build recovery cannot produce valid dist', async (t) => {
|
|
337
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-disabled-cli-failed-bootstrap-'));
|
|
338
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
339
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
340
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
341
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
342
|
+
const calls = [];
|
|
343
|
+
|
|
344
|
+
const result = await ensureHappierCliDistExists(
|
|
345
|
+
{ cliBin, env: { ...process.env, HAPPIER_STACK_REPO_DIR: repoDir, HAPPIER_STACK_CLI_BUILD: '0' } },
|
|
346
|
+
{ ensureCliBuiltImpl: async (_cliDir, options) => {
|
|
347
|
+
calls.push(options.buildCli);
|
|
348
|
+
if (options.buildCli) throw new Error('forced build failed');
|
|
349
|
+
return { built: false, current: false, reason: 'disabled' };
|
|
350
|
+
} },
|
|
351
|
+
);
|
|
352
|
+
|
|
353
|
+
assert.deepEqual(calls, [false, true]);
|
|
354
|
+
assert.equal(result.ok, false);
|
|
355
|
+
assert.equal(result.current, false);
|
|
356
|
+
assert.equal(result.fallbackRejectedReason, 'no_usable_prior_dist');
|
|
357
|
+
assert.match(result.reason, /forced build failed/);
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
test('source daemon admission reuses an exact watcher-admitted dist without a second always build', async (t) => {
|
|
361
|
+
const repoDir = await mkdtemp(join(tmpdir(), 'hstack-watcher-admitted-cli-build-'));
|
|
362
|
+
t.after(async () => rm(repoDir, { recursive: true, force: true }));
|
|
363
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
364
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
365
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
366
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
367
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
368
|
+
await writeFile(distEntrypoint, 'export {};\n', 'utf-8');
|
|
369
|
+
await writeDistBuildManifestForTest(distEntrypoint, 'abcdef1234567890');
|
|
370
|
+
let buildCalls = 0;
|
|
371
|
+
|
|
372
|
+
const result = await ensureHappierCliDistExists(
|
|
373
|
+
{
|
|
374
|
+
cliBin,
|
|
375
|
+
admittedDistClosureFingerprint: 'abcdef1234567890',
|
|
376
|
+
env: {
|
|
377
|
+
...process.env,
|
|
378
|
+
HAPPIER_STACK_REPO_DIR: repoDir,
|
|
379
|
+
HAPPIER_STACK_CLI_BUILD_MODE: 'always',
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
ensureCliBuiltImpl: async () => {
|
|
384
|
+
buildCalls += 1;
|
|
385
|
+
return { built: true, current: true, reason: 'always' };
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
);
|
|
389
|
+
|
|
390
|
+
assert.equal(buildCalls, 0, 'the watcher build is the sole full-build admission for this generation');
|
|
391
|
+
assert.equal(result.ok, true);
|
|
392
|
+
assert.equal(result.current, true);
|
|
393
|
+
assert.equal(result.built, false);
|
|
394
|
+
assert.equal(result.reason, 'admitted-dist-closure');
|
|
395
|
+
|
|
396
|
+
const mismatch = await ensureHappierCliDistExists(
|
|
397
|
+
{
|
|
398
|
+
cliBin,
|
|
399
|
+
admittedDistClosureFingerprint: '1111111111111111',
|
|
400
|
+
env: {
|
|
401
|
+
...process.env,
|
|
402
|
+
HAPPIER_STACK_REPO_DIR: repoDir,
|
|
403
|
+
HAPPIER_STACK_CLI_BUILD_MODE: 'always',
|
|
404
|
+
},
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
ensureCliBuiltImpl: async () => {
|
|
408
|
+
buildCalls += 1;
|
|
409
|
+
return { built: true, current: true, reason: 'always' };
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
);
|
|
413
|
+
assert.equal(buildCalls, 0, 'a mismatched watcher proof must fail closed instead of admitting a second build');
|
|
414
|
+
assert.equal(mismatch.ok, true);
|
|
415
|
+
assert.equal(mismatch.current, false);
|
|
416
|
+
assert.match(mismatch.reason, /admitted_dist_mismatch/);
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
test('source daemon final launch rejects an admitted fingerprint replaced under the lifecycle lock', async (t) => {
|
|
420
|
+
const fixtureRoot = await mkdtemp(join(tmpdir(), 'hstack-source-final-admission-race-'));
|
|
421
|
+
t.after(async () => rm(fixtureRoot, { recursive: true, force: true }));
|
|
422
|
+
const daemonModuleUrl = new URL('./daemon.mjs', import.meta.url).href;
|
|
423
|
+
const cliDistBuildLockModuleUrl = new URL('./utils/proc/cliDistBuildLock.mjs', import.meta.url).href;
|
|
424
|
+
const script = `
|
|
425
|
+
import assert from 'node:assert/strict';
|
|
426
|
+
import fs from 'node:fs';
|
|
427
|
+
import { syncBuiltinESMExports } from 'node:module';
|
|
428
|
+
import { dirname, join } from 'node:path';
|
|
429
|
+
|
|
430
|
+
const { resolveCliDistBuildLockPath, withCliDistBuildLock } = await import(${JSON.stringify(cliDistBuildLockModuleUrl)});
|
|
431
|
+
|
|
432
|
+
const root = ${JSON.stringify(fixtureRoot)};
|
|
433
|
+
const repoDir = join(root, 'repo');
|
|
434
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
435
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
436
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
437
|
+
const manifestPath = join(cliDir, 'dist', '.build-manifest.json');
|
|
438
|
+
const cliHomeDir = join(root, 'home');
|
|
439
|
+
const spawnMarker = join(root, 'spawned.txt');
|
|
440
|
+
const admittedFingerprint = 'aaaaaaaaaaaaaaaa';
|
|
441
|
+
const replacementFingerprint = 'bbbbbbbbbbbbbbbb';
|
|
442
|
+
const manifest = (fingerprint) => JSON.stringify({ fingerprint, fileCount: 1 }) + '\\n';
|
|
443
|
+
|
|
444
|
+
fs.mkdirSync(dirname(cliBin), { recursive: true });
|
|
445
|
+
fs.mkdirSync(dirname(distEntrypoint), { recursive: true });
|
|
446
|
+
fs.writeFileSync(cliBin, '#!/usr/bin/env node\\n', 'utf-8');
|
|
447
|
+
fs.writeFileSync(
|
|
448
|
+
distEntrypoint,
|
|
449
|
+
'import { appendFileSync } from "node:fs"; appendFileSync(process.env.SPAWN_MARKER, process.argv.join(" ") + "\\\\n");',
|
|
450
|
+
'utf-8',
|
|
451
|
+
);
|
|
452
|
+
fs.writeFileSync(manifestPath, manifest(admittedFingerprint), 'utf-8');
|
|
453
|
+
|
|
454
|
+
const originalReadFileSync = fs.readFileSync;
|
|
455
|
+
let manifestReads = 0;
|
|
456
|
+
let replacedUnderLifecycleLock = false;
|
|
457
|
+
fs.readFileSync = function patchedReadFileSync(path, ...args) {
|
|
458
|
+
const result = originalReadFileSync.call(this, path, ...args);
|
|
459
|
+
if (String(path) === manifestPath) {
|
|
460
|
+
manifestReads += 1;
|
|
461
|
+
if (manifestReads === 3) {
|
|
462
|
+
const lockFiles = fs.existsSync(join(cliHomeDir, 'locks'))
|
|
463
|
+
? fs.readdirSync(join(cliHomeDir, 'locks')).filter((name) => name.startsWith('daemon-lifecycle-'))
|
|
464
|
+
: [];
|
|
465
|
+
assert.equal(lockFiles.length, 1, 'preliminary admission must be inside the existing lifecycle lock');
|
|
466
|
+
fs.writeFileSync(manifestPath, manifest(replacementFingerprint), 'utf-8');
|
|
467
|
+
replacedUnderLifecycleLock = true;
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
return result;
|
|
471
|
+
};
|
|
472
|
+
syncBuiltinESMExports();
|
|
473
|
+
|
|
474
|
+
const { startLocalDaemonWithAuth } = await import(${JSON.stringify(daemonModuleUrl)});
|
|
475
|
+
let failure = null;
|
|
476
|
+
try {
|
|
477
|
+
await startLocalDaemonWithAuth({
|
|
478
|
+
cliBin,
|
|
479
|
+
cliHomeDir,
|
|
480
|
+
internalServerUrl: 'http://127.0.0.1:43123',
|
|
481
|
+
publicServerUrl: 'http://localhost:43123',
|
|
482
|
+
isShuttingDown: () => false,
|
|
483
|
+
env: {
|
|
484
|
+
...process.env,
|
|
485
|
+
HAPPIER_STACK_REPO_DIR: repoDir,
|
|
486
|
+
HAPPIER_STACK_STACK: 'dev',
|
|
487
|
+
HAPPIER_STACK_AUTO_AUTH_SEED: '0',
|
|
488
|
+
HAPPIER_STACK_MIGRATE_CREDENTIALS: '0',
|
|
489
|
+
HAPPIER_STACK_CREDENTIAL_VALIDATE_TIMEOUT_MS: '1',
|
|
490
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_TIMEOUT_MS: '100',
|
|
491
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_POLL_MS: '10',
|
|
492
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_STABLE_MS: '0',
|
|
493
|
+
SPAWN_MARKER: spawnMarker,
|
|
494
|
+
},
|
|
495
|
+
stackName: 'dev',
|
|
496
|
+
admittedDistClosureFingerprint: admittedFingerprint,
|
|
497
|
+
});
|
|
498
|
+
} catch (error) {
|
|
499
|
+
failure = error;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
assert.equal(replacedUnderLifecycleLock, true);
|
|
503
|
+
assert.equal(failure?.code, 'ECLIDISTSTALECOLDSTART');
|
|
504
|
+
assert.equal(fs.existsSync(spawnMarker), false, 'no daemon stop/start command may spawn after final admission fails');
|
|
505
|
+
const remainingLifecycleLocks = fs.existsSync(join(cliHomeDir, 'locks'))
|
|
506
|
+
? fs.readdirSync(join(cliHomeDir, 'locks')).filter((name) => name.startsWith('daemon-lifecycle-'))
|
|
507
|
+
: [];
|
|
508
|
+
assert.deepEqual(remainingLifecycleLocks, [], 'typed admission failure must release the existing lifecycle lock');
|
|
509
|
+
`;
|
|
510
|
+
|
|
511
|
+
const result = spawnSync(process.execPath, ['--input-type=module', '--eval', script], {
|
|
512
|
+
encoding: 'utf-8',
|
|
513
|
+
timeout: 15_000,
|
|
514
|
+
});
|
|
515
|
+
assert.equal(result.status, 0, result.stderr || result.stdout);
|
|
516
|
+
});
|
|
517
|
+
|
|
518
|
+
test('source daemon final admission uses a validated fallback when the explicit fingerprint is whitespace', () => {
|
|
519
|
+
const fallbackFingerprint = '1111111111111111';
|
|
520
|
+
|
|
521
|
+
assert.equal(
|
|
522
|
+
assertFinalSourceDaemonDistAdmission({
|
|
523
|
+
admittedDistClosureFingerprint: ' ',
|
|
524
|
+
fallbackFingerprint,
|
|
525
|
+
finalFingerprint: fallbackFingerprint,
|
|
526
|
+
}),
|
|
527
|
+
fallbackFingerprint,
|
|
528
|
+
);
|
|
529
|
+
|
|
530
|
+
let spawned = false;
|
|
531
|
+
assert.throws(
|
|
532
|
+
() => {
|
|
533
|
+
assertFinalSourceDaemonDistAdmission({
|
|
534
|
+
admittedDistClosureFingerprint: ' ',
|
|
535
|
+
fallbackFingerprint,
|
|
536
|
+
finalFingerprint: '2222222222222222',
|
|
537
|
+
});
|
|
538
|
+
spawned = true;
|
|
539
|
+
},
|
|
540
|
+
(error) => error?.code === 'ECLIDISTSTALECOLDSTART',
|
|
541
|
+
);
|
|
542
|
+
assert.equal(spawned, false, 'a changed final manifest must be rejected before daemon spawn');
|
|
543
|
+
});
|
|
544
|
+
|
|
545
|
+
test('source daemon lifecycle commands run after the CLI publication lock is released', async (t) => {
|
|
546
|
+
const fixtureRoot = await mkdtemp(join(tmpdir(), 'hstack-source-lifecycle-outside-build-lock-'));
|
|
547
|
+
t.after(async () => rm(fixtureRoot, { recursive: true, force: true }));
|
|
548
|
+
const repoDir = join(fixtureRoot, 'repo');
|
|
549
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
550
|
+
const cliBin = join(cliDir, 'bin', 'happier.mjs');
|
|
551
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
552
|
+
const lockPath = join(repoDir, '.project', 'tmp', 'cli-dist-build.lock');
|
|
553
|
+
const eventsPath = join(fixtureRoot, 'events.jsonl');
|
|
554
|
+
const cliHomeDir = join(fixtureRoot, 'home');
|
|
555
|
+
const fingerprint = 'aaaaaaaaaaaaaaaa';
|
|
556
|
+
|
|
557
|
+
await mkdir(dirname(cliBin), { recursive: true });
|
|
558
|
+
await mkdir(dirname(distEntrypoint), { recursive: true });
|
|
559
|
+
await mkdir(join(repoDir, 'apps', 'ui'), { recursive: true });
|
|
560
|
+
await mkdir(join(repoDir, 'apps', 'server'), { recursive: true });
|
|
561
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
562
|
+
await writeFile(join(cliDir, 'package.json'), '{"name":"@happier-dev/cli"}\n', 'utf-8');
|
|
563
|
+
await writeFile(join(repoDir, 'apps', 'ui', 'package.json'), '{"name":"@happier-dev/ui"}\n', 'utf-8');
|
|
564
|
+
await writeFile(join(repoDir, 'apps', 'server', 'package.json'), '{"name":"@happier-dev/server"}\n', 'utf-8');
|
|
565
|
+
await writeFile(cliBin, '#!/usr/bin/env node\n', 'utf-8');
|
|
566
|
+
await writeFile(
|
|
567
|
+
distEntrypoint,
|
|
568
|
+
[
|
|
569
|
+
"import { appendFileSync, existsSync } from 'node:fs';",
|
|
570
|
+
'appendFileSync(process.env.EVENTS_PATH, JSON.stringify({',
|
|
571
|
+
' args: process.argv.slice(2),',
|
|
572
|
+
' publicationLockHeld: existsSync(process.env.PUBLICATION_LOCK_PATH),',
|
|
573
|
+
" publicationLockLease: process.env.HAPPIER_WORKSPACE_DIST_BUILD_LOCK_HELD || null,",
|
|
574
|
+
"}) + '\\n');",
|
|
575
|
+
"if (process.argv[2] === 'start') process.exit(1);",
|
|
576
|
+
'process.exit(0);',
|
|
577
|
+
].join('\n') + '\n',
|
|
578
|
+
'utf-8',
|
|
579
|
+
);
|
|
580
|
+
await writeDistBuildManifestForTest(distEntrypoint, fingerprint);
|
|
581
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
582
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
583
|
+
|
|
584
|
+
await assert.rejects(
|
|
585
|
+
() => startLocalDaemonWithAuth({
|
|
586
|
+
cliBin,
|
|
587
|
+
cliHomeDir,
|
|
588
|
+
internalServerUrl: 'http://127.0.0.1:43123',
|
|
589
|
+
publicServerUrl: 'http://localhost:43123',
|
|
590
|
+
isShuttingDown: () => false,
|
|
591
|
+
forceRestart: true,
|
|
592
|
+
env: buildDaemonDistGuardEnv({
|
|
593
|
+
HAPPIER_STACK_REPO_DIR: repoDir,
|
|
594
|
+
HAPPIER_STACK_TUI: '0',
|
|
595
|
+
HAPPIER_STACK_CREDENTIAL_VALIDATE_TIMEOUT_MS: '1',
|
|
596
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_TIMEOUT_MS: '20',
|
|
597
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_POLL_MS: '1',
|
|
598
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_STABLE_MS: '0',
|
|
599
|
+
EVENTS_PATH: eventsPath,
|
|
600
|
+
PUBLICATION_LOCK_PATH: lockPath,
|
|
601
|
+
}),
|
|
602
|
+
stackName: 'dev',
|
|
603
|
+
admittedDistClosureFingerprint: fingerprint,
|
|
604
|
+
}),
|
|
605
|
+
/Failed to start daemon/,
|
|
606
|
+
);
|
|
607
|
+
|
|
608
|
+
const events = (await readFile(eventsPath, 'utf-8'))
|
|
609
|
+
.trim()
|
|
610
|
+
.split(/\n+/)
|
|
611
|
+
.map((line) => JSON.parse(line));
|
|
612
|
+
assert.ok(events.some(({ args }) => args[0] === 'daemon' && args[1] === 'start'));
|
|
613
|
+
assert.ok(
|
|
614
|
+
events.every(({ publicationLockHeld }) => publicationLockHeld === false),
|
|
615
|
+
`daemon command ran while publication lock was held:\n${JSON.stringify(events, null, 2)}`,
|
|
616
|
+
);
|
|
617
|
+
assert.ok(
|
|
618
|
+
events.every(({ publicationLockLease }) => publicationLockLease === null),
|
|
619
|
+
`daemon command inherited a publication-lock lease:\n${JSON.stringify(events, null, 2)}`,
|
|
620
|
+
);
|
|
621
|
+
});
|
|
622
|
+
|
|
623
|
+
test('applyDaemonDistClosureRuntimeEnv exposes the current stack dist fingerprint to source daemon child spawns', () => {
|
|
624
|
+
const env = { KEEP_ME: '1' };
|
|
625
|
+
|
|
626
|
+
const nextEnv = applyDaemonDistClosureRuntimeEnv(env, {
|
|
627
|
+
runtimeStatePath: '/tmp/happier/stack.runtime.json',
|
|
628
|
+
distEntrypoint: '/repo/apps/cli/dist/index.mjs',
|
|
629
|
+
distClosureFingerprint: 'abc123def4567890',
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
assert.equal(nextEnv, env);
|
|
633
|
+
assert.equal(nextEnv.KEEP_ME, '1');
|
|
634
|
+
assert.equal(nextEnv.HAPPIER_CLI_SUBPROCESS_STACK_RUNTIME_STATE_PATH, '/tmp/happier/stack.runtime.json');
|
|
635
|
+
assert.equal(nextEnv.HAPPIER_CLI_SUBPROCESS_DIST_ENTRYPOINT, '/repo/apps/cli/dist/index.mjs');
|
|
636
|
+
assert.equal(nextEnv.HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT, 'abc123def4567890');
|
|
637
|
+
assert.equal(nextEnv.HAPPIER_CLI_SUBPROCESS_RUNTIME_BACKED, undefined);
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
test('applyDaemonDistClosureRuntimeEnv marks an admitted runtime-backed daemon and preserves its immutable fingerprint', () => {
|
|
641
|
+
const env = {};
|
|
642
|
+
|
|
643
|
+
applyDaemonDistClosureRuntimeEnv(env, {
|
|
644
|
+
runtimeStatePath: '/tmp/happier/stack.runtime.json',
|
|
645
|
+
distEntrypoint: '/tmp/happier/runtime/builds/snap-1/cli/package-dist/index.mjs',
|
|
646
|
+
distClosureFingerprint: 'abc123def4567890',
|
|
647
|
+
runtimeBacked: true,
|
|
648
|
+
});
|
|
649
|
+
|
|
650
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_RUNTIME_BACKED, '1');
|
|
651
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_DIST_ENTRYPOINT, '/tmp/happier/runtime/builds/snap-1/cli/package-dist/index.mjs');
|
|
652
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT, 'abc123def4567890');
|
|
653
|
+
});
|
|
654
|
+
|
|
655
|
+
test('applyDaemonDistClosureRuntimeEnv clears the dist runner fast path when the fingerprint is missing', () => {
|
|
656
|
+
const env = {
|
|
657
|
+
HAPPIER_CLI_SUBPROCESS_STACK_RUNTIME_STATE_PATH: '/tmp/happier/stack.runtime.json',
|
|
658
|
+
HAPPIER_CLI_SUBPROCESS_DIST_ENTRYPOINT: '/repo/apps/cli/dist/index.mjs',
|
|
659
|
+
HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: 'abc123def4567890',
|
|
660
|
+
HAPPIER_CLI_SUBPROCESS_RUNTIME_BACKED: '1',
|
|
661
|
+
};
|
|
662
|
+
|
|
663
|
+
applyDaemonDistClosureRuntimeEnv(env, {
|
|
664
|
+
runtimeStatePath: '/tmp/happier/stack.runtime.json',
|
|
665
|
+
distEntrypoint: '/repo/apps/cli/dist/index.mjs',
|
|
666
|
+
distClosureFingerprint: null,
|
|
667
|
+
});
|
|
668
|
+
|
|
669
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_STACK_RUNTIME_STATE_PATH, undefined);
|
|
670
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_DIST_ENTRYPOINT, undefined);
|
|
671
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT, undefined);
|
|
672
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_RUNTIME_BACKED, undefined);
|
|
673
|
+
});
|
|
674
|
+
|
|
675
|
+
test('applyDaemonDistClosureRuntimeEnv pins detached daemon launch without a runtime projection path', () => {
|
|
676
|
+
const env = {};
|
|
677
|
+
|
|
678
|
+
applyDaemonDistClosureRuntimeEnv(env, {
|
|
679
|
+
runtimeStatePath: null,
|
|
680
|
+
distEntrypoint: '/repo/apps/cli/dist/index.mjs',
|
|
681
|
+
distClosureFingerprint: 'abc123def4567890',
|
|
682
|
+
});
|
|
683
|
+
|
|
684
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_STACK_RUNTIME_STATE_PATH, undefined);
|
|
685
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_DIST_ENTRYPOINT, '/repo/apps/cli/dist/index.mjs');
|
|
686
|
+
assert.equal(env.HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT, 'abc123def4567890');
|
|
687
|
+
});
|
|
688
|
+
|
|
689
|
+
test('daemon dist guard does not restart when only dist mtimes are newer than daemon startup', async (t) => {
|
|
690
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-mtime-'));
|
|
691
|
+
t.after(async () => {
|
|
692
|
+
await rm(tmp, { recursive: true, force: true });
|
|
693
|
+
});
|
|
694
|
+
const runtimeStatePath = join(tmp, 'stack.runtime.json');
|
|
695
|
+
const fingerprint = 'abc123def4567890';
|
|
696
|
+
await writeFile(
|
|
697
|
+
runtimeStatePath,
|
|
698
|
+
JSON.stringify({ daemon: { distClosureFingerprint: fingerprint } }),
|
|
699
|
+
'utf-8',
|
|
700
|
+
);
|
|
701
|
+
|
|
702
|
+
const reason = resolveDaemonDistRestartReason({
|
|
703
|
+
distEntrypoint: join(tmp, 'cli', 'dist', 'index.mjs'),
|
|
704
|
+
distClosure: {
|
|
705
|
+
ok: true,
|
|
706
|
+
fingerprint,
|
|
707
|
+
maxMtimeMs: 2_000,
|
|
708
|
+
},
|
|
709
|
+
runtimeStatePath,
|
|
710
|
+
});
|
|
711
|
+
|
|
712
|
+
assert.equal(reason, null);
|
|
713
|
+
});
|
|
714
|
+
|
|
715
|
+
test('runtime-backed daemon adoption requires a valid authenticated fingerprint equal to the admitted closure', async (t) => {
|
|
716
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-runtime-daemon-authenticated-fingerprint-'));
|
|
717
|
+
t.after(async () => rm(tmp, { recursive: true, force: true }));
|
|
718
|
+
const runtimeStatePath = join(tmp, 'stack.runtime.json');
|
|
719
|
+
const admittedFingerprint = 'bbbbbbbbbbbbbbbb';
|
|
720
|
+
await writeFile(
|
|
721
|
+
runtimeStatePath,
|
|
722
|
+
JSON.stringify({ daemon: { distClosureFingerprint: admittedFingerprint } }) + '\n',
|
|
723
|
+
'utf-8',
|
|
724
|
+
);
|
|
725
|
+
const input = {
|
|
726
|
+
distEntrypoint: join(tmp, 'runtime', 'builds', 'snap-b', 'cli', 'package-dist', 'index.mjs'),
|
|
727
|
+
distClosure: { ok: true, fingerprint: admittedFingerprint },
|
|
728
|
+
runtimeStatePath,
|
|
729
|
+
runtimeBacked: true,
|
|
730
|
+
};
|
|
731
|
+
|
|
732
|
+
assert.match(resolveDaemonDistRestartReason({
|
|
733
|
+
...input,
|
|
734
|
+
observedDaemonDistFingerprint: 'aaaaaaaaaaaaaaaa',
|
|
735
|
+
}), /different|mismatch|invalid/i);
|
|
736
|
+
assert.match(resolveDaemonDistRestartReason({
|
|
737
|
+
...input,
|
|
738
|
+
observedDaemonDistFingerprint: null,
|
|
739
|
+
}), /missing|invalid|fingerprint/i);
|
|
740
|
+
assert.match(resolveDaemonDistRestartReason({
|
|
741
|
+
...input,
|
|
742
|
+
observedDaemonDistFingerprint: 'not-a-fingerprint',
|
|
743
|
+
}), /missing|invalid|fingerprint/i);
|
|
744
|
+
assert.equal(resolveDaemonDistRestartReason({
|
|
745
|
+
...input,
|
|
746
|
+
observedDaemonDistFingerprint: admittedFingerprint,
|
|
747
|
+
}), null);
|
|
748
|
+
});
|
|
749
|
+
|
|
25
750
|
async function reserveLoopbackServerUrls() {
|
|
26
751
|
const server = net.createServer();
|
|
27
752
|
await new Promise((resolve, reject) => {
|
|
@@ -62,6 +787,81 @@ function overrideProcessReleaseNameForTest(nextName) {
|
|
|
62
787
|
};
|
|
63
788
|
}
|
|
64
789
|
|
|
790
|
+
const FAKE_PING_AWARE_DAEMON_CHILD_SCRIPT = `
|
|
791
|
+
const fs = require('node:fs');
|
|
792
|
+
const http = require('node:http');
|
|
793
|
+
const path = require('node:path');
|
|
794
|
+
|
|
795
|
+
const statePath = process.argv[1];
|
|
796
|
+
if (!statePath) process.exit(2);
|
|
797
|
+
|
|
798
|
+
const server = http.createServer((req, res) => {
|
|
799
|
+
if (req.url === '/ping') {
|
|
800
|
+
const distClosureFingerprint = String(
|
|
801
|
+
process.env.HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT || '',
|
|
802
|
+
).trim();
|
|
803
|
+
res.writeHead(200, { 'content-type': 'application/json' });
|
|
804
|
+
res.end(JSON.stringify({
|
|
805
|
+
ok: true,
|
|
806
|
+
...(/^[a-f0-9]{16}$/.test(distClosureFingerprint) ? { distClosureFingerprint } : {}),
|
|
807
|
+
}));
|
|
808
|
+
return;
|
|
809
|
+
}
|
|
810
|
+
res.writeHead(404, { 'content-type': 'application/json' });
|
|
811
|
+
res.end(JSON.stringify({ error: 'not-found' }));
|
|
812
|
+
});
|
|
813
|
+
|
|
814
|
+
server.listen(0, '127.0.0.1', () => {
|
|
815
|
+
const address = server.address();
|
|
816
|
+
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
817
|
+
fs.writeFileSync(
|
|
818
|
+
statePath,
|
|
819
|
+
JSON.stringify({
|
|
820
|
+
pid: process.pid,
|
|
821
|
+
httpPort: address.port,
|
|
822
|
+
controlToken: '',
|
|
823
|
+
startTime: new Date().toISOString(),
|
|
824
|
+
}),
|
|
825
|
+
'utf-8',
|
|
826
|
+
);
|
|
827
|
+
});
|
|
828
|
+
|
|
829
|
+
process.on('SIGTERM', () => {
|
|
830
|
+
server.close(() => process.exit(0));
|
|
831
|
+
setTimeout(() => process.exit(0), 50).unref();
|
|
832
|
+
});
|
|
833
|
+
|
|
834
|
+
setInterval(() => {}, 1000);
|
|
835
|
+
`;
|
|
836
|
+
|
|
837
|
+
function shellQuote(value) {
|
|
838
|
+
return `'${String(value).replaceAll("'", "'\\''")}'`;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
function fakePingAwareDaemonSpawnerSource() {
|
|
842
|
+
return `
|
|
843
|
+
const FAKE_PING_AWARE_DAEMON_CHILD_SCRIPT = ${JSON.stringify(FAKE_PING_AWARE_DAEMON_CHILD_SCRIPT)};
|
|
844
|
+
|
|
845
|
+
function startFakePingAwareDaemon(statePath) {
|
|
846
|
+
const forcedDistClosureFingerprint = String(
|
|
847
|
+
process.env.HAPPIER_TEST_DAEMON_CHILD_DIST_FINGERPRINT || '',
|
|
848
|
+
).trim();
|
|
849
|
+
const child = spawn(process.execPath, ['-e', FAKE_PING_AWARE_DAEMON_CHILD_SCRIPT, statePath, 'daemon', 'start'], {
|
|
850
|
+
detached: true,
|
|
851
|
+
env: {
|
|
852
|
+
...process.env,
|
|
853
|
+
...(forcedDistClosureFingerprint
|
|
854
|
+
? { HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: forcedDistClosureFingerprint }
|
|
855
|
+
: {}),
|
|
856
|
+
},
|
|
857
|
+
stdio: 'ignore',
|
|
858
|
+
});
|
|
859
|
+
child.unref();
|
|
860
|
+
return child.pid;
|
|
861
|
+
}
|
|
862
|
+
`;
|
|
863
|
+
}
|
|
864
|
+
|
|
65
865
|
async function writeStubHappyCli({ cliDir }) {
|
|
66
866
|
// Dist entrypoint exists, but package.json intentionally has no build script.
|
|
67
867
|
// startLocalDaemonWithAuth should launch the daemon via dist (not via bin/happier.mjs).
|
|
@@ -71,11 +871,15 @@ import { existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
|
71
871
|
import { join } from 'node:path';
|
|
72
872
|
|
|
73
873
|
const args = process.argv.slice(2);
|
|
874
|
+
if (args[0] === 'server' && args[1] === 'set' && process.env.HAPPIER_TEST_FAIL_SERVER_SET === '1') process.exit(73);
|
|
875
|
+
if (args[0] !== 'daemon') process.exit(0);
|
|
876
|
+
if (args[1] === '--help') process.exit(0);
|
|
74
877
|
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
75
878
|
if (!home) process.exit(2);
|
|
76
879
|
const state = join(home, 'daemon.state.json');
|
|
77
880
|
|
|
78
|
-
|
|
881
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
882
|
+
|
|
79
883
|
const sub = args[1] || '';
|
|
80
884
|
|
|
81
885
|
if (sub === 'stop') {
|
|
@@ -92,9 +896,7 @@ if (sub === 'stop') {
|
|
|
92
896
|
}
|
|
93
897
|
|
|
94
898
|
if (sub === 'start') {
|
|
95
|
-
|
|
96
|
-
child.unref();
|
|
97
|
-
writeFileSync(state, JSON.stringify({ pid: child.pid, httpPort: 0, startTime: new Date().toISOString() }), 'utf-8');
|
|
899
|
+
startFakePingAwareDaemon(state);
|
|
98
900
|
process.exit(0);
|
|
99
901
|
}
|
|
100
902
|
|
|
@@ -124,26 +926,31 @@ process.exit(0);
|
|
|
124
926
|
return join(cliBinDir, 'happier.mjs');
|
|
125
927
|
}
|
|
126
928
|
|
|
127
|
-
async function
|
|
128
|
-
const cliDir = join(snapshotDir, 'cli');
|
|
129
|
-
await mkdir(cliDir, { recursive: true });
|
|
130
|
-
const implPath = join(cliDir, 'runtime-cli.mjs');
|
|
131
|
-
const cliBin = join(cliDir, 'happier');
|
|
132
|
-
|
|
929
|
+
async function writeSlowStartStubHappyCli({ cliDir }) {
|
|
133
930
|
const distScript = `
|
|
134
931
|
import { spawn } from 'node:child_process';
|
|
135
|
-
import { existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
932
|
+
import { appendFileSync, existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
136
933
|
import { join } from 'node:path';
|
|
934
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
137
935
|
|
|
138
936
|
const args = process.argv.slice(2);
|
|
937
|
+
if (args[0] === 'daemon' && args[1] === '--help') process.exit(0);
|
|
139
938
|
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
939
|
+
const eventsPath = process.env.HAPPIER_TEST_DAEMON_EVENTS_PATH;
|
|
140
940
|
if (!home) process.exit(2);
|
|
141
941
|
const state = join(home, 'daemon.state.json');
|
|
142
942
|
|
|
943
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
944
|
+
|
|
945
|
+
function event(name) {
|
|
946
|
+
if (eventsPath) appendFileSync(eventsPath, name + '\\n', 'utf-8');
|
|
947
|
+
}
|
|
948
|
+
|
|
143
949
|
if (args[0] !== 'daemon') process.exit(0);
|
|
144
950
|
const sub = args[1] || '';
|
|
145
951
|
|
|
146
952
|
if (sub === 'stop') {
|
|
953
|
+
event('stop');
|
|
147
954
|
if (existsSync(state)) {
|
|
148
955
|
try {
|
|
149
956
|
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
@@ -157,9 +964,68 @@ if (sub === 'stop') {
|
|
|
157
964
|
}
|
|
158
965
|
|
|
159
966
|
if (sub === 'start') {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
967
|
+
event('start');
|
|
968
|
+
await delay(400);
|
|
969
|
+
startFakePingAwareDaemon(state);
|
|
970
|
+
await delay(100);
|
|
971
|
+
process.exit(0);
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
process.exit(0);
|
|
975
|
+
`;
|
|
976
|
+
const monoRoot = join(cliDir, '..', '..');
|
|
977
|
+
const { cliBinDir } = await writeStubHappierCliFiles(monoRoot, {
|
|
978
|
+
packageJsonContent: '{}\n',
|
|
979
|
+
distIndexScript: distScript.trimStart(),
|
|
980
|
+
binHappierScript: 'process.exit(42);\n',
|
|
981
|
+
});
|
|
982
|
+
return join(cliBinDir, 'happier.mjs');
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
async function writeDelayedStopStubHappyCli({ cliDir }) {
|
|
986
|
+
const distScript = `
|
|
987
|
+
import { spawn } from 'node:child_process';
|
|
988
|
+
import { appendFileSync, existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
989
|
+
import { join } from 'node:path';
|
|
990
|
+
import { setTimeout as delay } from 'node:timers/promises';
|
|
991
|
+
|
|
992
|
+
const args = process.argv.slice(2);
|
|
993
|
+
if (args[0] === 'daemon' && args[1] === '--help') process.exit(0);
|
|
994
|
+
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
995
|
+
const eventsPath = process.env.HAPPIER_TEST_DAEMON_EVENTS_PATH;
|
|
996
|
+
if (!home) process.exit(2);
|
|
997
|
+
const lifecycleScopeId = String(process.env.HAPPIER_DAEMON_LIFECYCLE_SCOPE_ID || '').trim();
|
|
998
|
+
const state = lifecycleScopeId
|
|
999
|
+
? join(home, 'servers', lifecycleScopeId, 'daemon.state.json')
|
|
1000
|
+
: join(home, 'daemon.state.json');
|
|
1001
|
+
|
|
1002
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
1003
|
+
|
|
1004
|
+
function event(name) {
|
|
1005
|
+
if (eventsPath) appendFileSync(eventsPath, name + '\\n', 'utf-8');
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
if (args[0] !== 'daemon') process.exit(0);
|
|
1009
|
+
const sub = args[1] || '';
|
|
1010
|
+
|
|
1011
|
+
if (sub === 'stop') {
|
|
1012
|
+
event('stop');
|
|
1013
|
+
await delay(250);
|
|
1014
|
+
if (existsSync(state)) {
|
|
1015
|
+
try {
|
|
1016
|
+
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
1017
|
+
if (Number.isFinite(pid) && pid > 1) {
|
|
1018
|
+
try { process.kill(pid, 'SIGTERM'); } catch {}
|
|
1019
|
+
}
|
|
1020
|
+
} catch {}
|
|
1021
|
+
try { rmSync(state); } catch {}
|
|
1022
|
+
}
|
|
1023
|
+
process.exit(0);
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
if (sub === 'start') {
|
|
1027
|
+
event('start');
|
|
1028
|
+
startFakePingAwareDaemon(state);
|
|
163
1029
|
process.exit(0);
|
|
164
1030
|
}
|
|
165
1031
|
|
|
@@ -178,25 +1044,24 @@ if (sub === 'status') {
|
|
|
178
1044
|
}
|
|
179
1045
|
|
|
180
1046
|
process.exit(0);
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
1047
|
+
`;
|
|
1048
|
+
const monoRoot = join(cliDir, '..', '..');
|
|
1049
|
+
const { cliBinDir } = await writeStubHappierCliFiles(monoRoot, {
|
|
1050
|
+
packageJsonContent: '{}\n',
|
|
1051
|
+
distIndexScript: distScript.trimStart(),
|
|
1052
|
+
binHappierScript: 'process.exit(42);\n',
|
|
1053
|
+
});
|
|
1054
|
+
return join(cliBinDir, 'happier.mjs');
|
|
186
1055
|
}
|
|
187
1056
|
|
|
188
|
-
async function
|
|
189
|
-
const cliDir = join(snapshotDir, 'cli');
|
|
190
|
-
const packageDistDir = join(cliDir, 'package-dist');
|
|
191
|
-
await mkdir(packageDistDir, { recursive: true });
|
|
192
|
-
const cliBin = join(cliDir, 'happier');
|
|
193
|
-
|
|
1057
|
+
async function writePidOnlyFalseReadyStubHappyCli({ cliDir }) {
|
|
194
1058
|
const distScript = `
|
|
195
1059
|
import { spawn } from 'node:child_process';
|
|
196
1060
|
import { existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
197
1061
|
import { join } from 'node:path';
|
|
198
1062
|
|
|
199
1063
|
const args = process.argv.slice(2);
|
|
1064
|
+
if (args[0] === 'daemon' && args[1] === '--help') process.exit(0);
|
|
200
1065
|
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
201
1066
|
if (!home) process.exit(2);
|
|
202
1067
|
const state = join(home, 'daemon.state.json');
|
|
@@ -217,44 +1082,61 @@ if (sub === 'stop') {
|
|
|
217
1082
|
process.exit(0);
|
|
218
1083
|
}
|
|
219
1084
|
|
|
220
|
-
if (sub === 'start
|
|
221
|
-
const child = spawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], { detached: true, stdio: 'ignore' });
|
|
1085
|
+
if (sub === 'start') {
|
|
1086
|
+
const child = spawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)', 'daemon', 'start'], { detached: true, stdio: 'ignore' });
|
|
222
1087
|
child.unref();
|
|
223
1088
|
writeFileSync(state, JSON.stringify({ pid: child.pid, httpPort: 0, startTime: new Date().toISOString() }), 'utf-8');
|
|
224
1089
|
process.exit(0);
|
|
225
1090
|
}
|
|
226
1091
|
|
|
227
|
-
if (sub === 'status') {
|
|
228
|
-
let ok = false;
|
|
229
|
-
if (existsSync(state)) {
|
|
230
|
-
try {
|
|
231
|
-
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
232
|
-
if (Number.isFinite(pid) && pid > 1) {
|
|
233
|
-
try { process.kill(pid, 0); ok = true; } catch {}
|
|
234
|
-
}
|
|
235
|
-
} catch {}
|
|
236
|
-
}
|
|
237
|
-
console.log(ok ? 'daemon: running' : 'daemon: stopped');
|
|
238
|
-
process.exit(0);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
1092
|
process.exit(0);
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
};
|
|
1093
|
+
`;
|
|
1094
|
+
const monoRoot = join(cliDir, '..', '..');
|
|
1095
|
+
const { cliBinDir } = await writeStubHappierCliFiles(monoRoot, {
|
|
1096
|
+
packageJsonContent: '{}\n',
|
|
1097
|
+
distIndexScript: distScript.trimStart(),
|
|
1098
|
+
binHappierScript: 'process.exit(42);\n',
|
|
1099
|
+
});
|
|
1100
|
+
return join(cliBinDir, 'happier.mjs');
|
|
251
1101
|
}
|
|
252
1102
|
|
|
253
|
-
|
|
1103
|
+
test('pid-only false-ready fixture publishes daemon command identity and cleans up its child', async () => {
|
|
1104
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-pid-only-identity-'));
|
|
1105
|
+
let fixturePid = null;
|
|
1106
|
+
try {
|
|
1107
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
1108
|
+
await writePidOnlyFalseReadyStubHappyCli({ cliDir });
|
|
1109
|
+
const cliEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
1110
|
+
const cliHomeDir = join(tmp, 'cli-home');
|
|
1111
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
1112
|
+
const env = {
|
|
1113
|
+
...process.env,
|
|
1114
|
+
HAPPIER_HOME_DIR: cliHomeDir,
|
|
1115
|
+
HAPPIER_STACK_STACK: 'dev',
|
|
1116
|
+
HAPPIER_STACK_PROCESS_KIND: 'daemon',
|
|
1117
|
+
};
|
|
1118
|
+
|
|
1119
|
+
execFileSync(process.execPath, [cliEntrypoint, 'daemon', 'start'], { env, stdio: 'ignore' });
|
|
1120
|
+
fixturePid = await readDaemonPid(join(cliHomeDir, 'daemon.state.json'));
|
|
1121
|
+
const command = execFileSync('ps', ['-p', String(fixturePid), '-o', 'command='], { encoding: 'utf8' });
|
|
1122
|
+
assert.match(command, /daemon start/);
|
|
1123
|
+
|
|
1124
|
+
execFileSync(process.execPath, [cliEntrypoint, 'daemon', 'stop'], { env, stdio: 'ignore' });
|
|
1125
|
+
assert.equal(await waitForProcessExit(fixturePid), true, `expected fixture daemon pid ${fixturePid} to exit`);
|
|
1126
|
+
fixturePid = null;
|
|
1127
|
+
} finally {
|
|
1128
|
+
if (fixturePid) {
|
|
1129
|
+
try { process.kill(fixturePid, 'SIGKILL'); } catch {}
|
|
1130
|
+
}
|
|
1131
|
+
await rm(tmp, { recursive: true, force: true });
|
|
1132
|
+
}
|
|
1133
|
+
});
|
|
1134
|
+
|
|
1135
|
+
async function writeRuntimeSnapshotHappyCli({ snapshotDir }) {
|
|
254
1136
|
const cliDir = join(snapshotDir, 'cli');
|
|
255
1137
|
await mkdir(cliDir, { recursive: true });
|
|
1138
|
+
const implPath = join(cliDir, 'runtime-cli.mjs');
|
|
256
1139
|
const cliBin = join(cliDir, 'happier');
|
|
257
|
-
const cliCommand = join(cliDir, 'happier.mjs');
|
|
258
1140
|
|
|
259
1141
|
const distScript = `
|
|
260
1142
|
import { spawn } from 'node:child_process';
|
|
@@ -262,17 +1144,31 @@ import { existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
|
262
1144
|
import { join } from 'node:path';
|
|
263
1145
|
|
|
264
1146
|
const args = process.argv.slice(2);
|
|
1147
|
+
if (args[0] === 'daemon' && args[1] === '--help') process.exit(0);
|
|
265
1148
|
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
266
1149
|
if (!home) process.exit(2);
|
|
267
1150
|
const state = join(home, 'daemon.state.json');
|
|
268
1151
|
|
|
1152
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
1153
|
+
|
|
269
1154
|
if (args[0] !== 'daemon') process.exit(0);
|
|
270
1155
|
const sub = args[1] || '';
|
|
271
1156
|
|
|
272
|
-
if (sub === '
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
1157
|
+
if (sub === 'stop') {
|
|
1158
|
+
if (existsSync(state)) {
|
|
1159
|
+
try {
|
|
1160
|
+
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
1161
|
+
if (Number.isFinite(pid) && pid > 1) {
|
|
1162
|
+
try { process.kill(pid, 'SIGTERM'); } catch {}
|
|
1163
|
+
}
|
|
1164
|
+
} catch {}
|
|
1165
|
+
try { rmSync(state); } catch {}
|
|
1166
|
+
}
|
|
1167
|
+
process.exit(0);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
if (sub === 'start') {
|
|
1171
|
+
startFakePingAwareDaemon(state);
|
|
276
1172
|
process.exit(0);
|
|
277
1173
|
}
|
|
278
1174
|
|
|
@@ -292,32 +1188,177 @@ if (sub === 'status') {
|
|
|
292
1188
|
|
|
293
1189
|
process.exit(0);
|
|
294
1190
|
`;
|
|
295
|
-
|
|
296
|
-
await writeFile(
|
|
297
|
-
await writeFile(cliBin, 'exit 42\n', 'utf-8');
|
|
1191
|
+
await writeFile(implPath, distScript.trimStart(), 'utf-8');
|
|
1192
|
+
await writeFile(cliBin, `#!/bin/sh\nexec "${process.execPath}" "${implPath}" "$@"\n`, 'utf-8');
|
|
298
1193
|
await chmod(cliBin, 0o755);
|
|
299
|
-
return
|
|
300
|
-
cliBin,
|
|
301
|
-
cliCommand,
|
|
302
|
-
};
|
|
1194
|
+
return cliBin;
|
|
303
1195
|
}
|
|
304
1196
|
|
|
305
|
-
async function
|
|
306
|
-
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
1197
|
+
async function writeRuntimeSnapshotHappyCliWithNodeEntrypoint({ snapshotDir }) {
|
|
1198
|
+
const cliDir = join(snapshotDir, 'cli');
|
|
1199
|
+
const packageDistDir = join(cliDir, 'package-dist');
|
|
1200
|
+
await mkdir(packageDistDir, { recursive: true });
|
|
1201
|
+
const cliBin = join(cliDir, 'happier');
|
|
1202
|
+
|
|
1203
|
+
const distScript = `
|
|
1204
|
+
import { spawn } from 'node:child_process';
|
|
1205
|
+
import { existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
1206
|
+
import { join } from 'node:path';
|
|
1207
|
+
|
|
1208
|
+
const args = process.argv.slice(2);
|
|
1209
|
+
if (args[0] === 'daemon' && args[1] === '--help') process.exit(0);
|
|
1210
|
+
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
1211
|
+
if (!home) process.exit(2);
|
|
1212
|
+
const state = join(home, 'daemon.state.json');
|
|
1213
|
+
|
|
1214
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
1215
|
+
|
|
1216
|
+
if (args[0] !== 'daemon') process.exit(0);
|
|
1217
|
+
const sub = args[1] || '';
|
|
1218
|
+
|
|
1219
|
+
if (sub === 'stop') {
|
|
1220
|
+
if (existsSync(state)) {
|
|
1221
|
+
try {
|
|
1222
|
+
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
1223
|
+
if (Number.isFinite(pid) && pid > 1) {
|
|
1224
|
+
try { process.kill(pid, 'SIGTERM'); } catch {}
|
|
1225
|
+
}
|
|
1226
|
+
} catch {}
|
|
1227
|
+
try { rmSync(state); } catch {}
|
|
1228
|
+
}
|
|
1229
|
+
process.exit(0);
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
if (sub === 'start-sync' || sub === 'start') {
|
|
1233
|
+
startFakePingAwareDaemon(state);
|
|
1234
|
+
process.exit(0);
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
if (sub === 'status') {
|
|
1238
|
+
let ok = false;
|
|
1239
|
+
if (existsSync(state)) {
|
|
1240
|
+
try {
|
|
1241
|
+
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
1242
|
+
if (Number.isFinite(pid) && pid > 1) {
|
|
1243
|
+
try { process.kill(pid, 0); ok = true; } catch {}
|
|
1244
|
+
}
|
|
1245
|
+
} catch {}
|
|
1246
|
+
}
|
|
1247
|
+
console.log(ok ? 'daemon: running' : 'daemon: stopped');
|
|
1248
|
+
process.exit(0);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
process.exit(0);
|
|
1252
|
+
`;
|
|
1253
|
+
|
|
1254
|
+
await writeFile(join(packageDistDir, 'index.mjs'), distScript.trimStart(), 'utf-8');
|
|
1255
|
+
await writeFile(cliBin, 'exit 42\n', 'utf-8');
|
|
1256
|
+
await chmod(cliBin, 0o755);
|
|
1257
|
+
return {
|
|
1258
|
+
cliBin,
|
|
1259
|
+
cliNodeEntrypoint: join(packageDistDir, 'index.mjs'),
|
|
1260
|
+
};
|
|
1261
|
+
}
|
|
1262
|
+
|
|
1263
|
+
async function writeRuntimeSnapshotHappyCliJsCommand({ snapshotDir }) {
|
|
1264
|
+
const cliDir = join(snapshotDir, 'cli');
|
|
1265
|
+
await mkdir(cliDir, { recursive: true });
|
|
1266
|
+
const cliBin = join(cliDir, 'happier');
|
|
1267
|
+
const cliCommand = join(cliDir, 'happier.mjs');
|
|
1268
|
+
|
|
1269
|
+
const distScript = `
|
|
1270
|
+
import { spawn } from 'node:child_process';
|
|
1271
|
+
import { existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
1272
|
+
import { join } from 'node:path';
|
|
1273
|
+
|
|
1274
|
+
const args = process.argv.slice(2);
|
|
1275
|
+
if (args[0] === 'daemon' && args[1] === '--help') process.exit(0);
|
|
1276
|
+
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
1277
|
+
if (!home) process.exit(2);
|
|
1278
|
+
const state = join(home, 'daemon.state.json');
|
|
1279
|
+
|
|
1280
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
1281
|
+
|
|
1282
|
+
if (args[0] !== 'daemon') process.exit(0);
|
|
1283
|
+
const sub = args[1] || '';
|
|
1284
|
+
|
|
1285
|
+
if (sub === 'start-sync' || sub === 'start') {
|
|
1286
|
+
startFakePingAwareDaemon(state);
|
|
1287
|
+
process.exit(0);
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
if (sub === 'status') {
|
|
1291
|
+
let ok = false;
|
|
1292
|
+
if (existsSync(state)) {
|
|
1293
|
+
try {
|
|
1294
|
+
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
1295
|
+
if (Number.isFinite(pid) && pid > 1) {
|
|
1296
|
+
try { process.kill(pid, 0); ok = true; } catch {}
|
|
1297
|
+
}
|
|
1298
|
+
} catch {}
|
|
1299
|
+
}
|
|
1300
|
+
console.log(ok ? 'daemon: running' : 'daemon: stopped');
|
|
1301
|
+
process.exit(0);
|
|
1302
|
+
}
|
|
1303
|
+
|
|
1304
|
+
process.exit(0);
|
|
1305
|
+
`;
|
|
1306
|
+
|
|
1307
|
+
await writeFile(cliCommand, distScript.trimStart(), 'utf-8');
|
|
1308
|
+
await writeFile(cliBin, 'exit 42\n', 'utf-8');
|
|
1309
|
+
await chmod(cliBin, 0o755);
|
|
1310
|
+
return {
|
|
1311
|
+
cliBin,
|
|
1312
|
+
cliCommand,
|
|
1313
|
+
};
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
async function writePathResolvedRuntimeCommand({
|
|
1317
|
+
binDir,
|
|
1318
|
+
stopMode = 'kill-state',
|
|
1319
|
+
preStartObservationPath = '',
|
|
1320
|
+
preStartStatePath = '',
|
|
1321
|
+
preStartLockPath = '',
|
|
1322
|
+
} = {}) {
|
|
1323
|
+
await mkdir(binDir, { recursive: true });
|
|
1324
|
+
const commandPath = join(binDir, 'happier-runtime-cmd');
|
|
1325
|
+
const observedStatePathLine = preStartStatePath
|
|
1326
|
+
? `STATE=${shellQuote(preStartStatePath)}`
|
|
1327
|
+
: '';
|
|
1328
|
+
const preStartObservation = preStartObservationPath
|
|
1329
|
+
? `"${process.execPath}" -e ${shellQuote(`
|
|
1330
|
+
const fs = require('node:fs');
|
|
1331
|
+
const readExact = (path) => {
|
|
1332
|
+
try {
|
|
1333
|
+
return fs.readFileSync(path, 'utf-8');
|
|
1334
|
+
} catch (error) {
|
|
1335
|
+
if (error && error.code === 'ENOENT') return null;
|
|
1336
|
+
throw error;
|
|
1337
|
+
}
|
|
1338
|
+
};
|
|
1339
|
+
fs.writeFileSync(
|
|
1340
|
+
process.argv[3],
|
|
1341
|
+
JSON.stringify({
|
|
1342
|
+
stateRaw: readExact(process.argv[1]),
|
|
1343
|
+
lockRaw: readExact(process.argv[2]),
|
|
1344
|
+
}),
|
|
1345
|
+
'utf-8',
|
|
1346
|
+
);
|
|
1347
|
+
`)} ${shellQuote(preStartStatePath)} ${shellQuote(preStartLockPath)} ${shellQuote(preStartObservationPath)} || exit $?`
|
|
1348
|
+
: '';
|
|
1349
|
+
const script = `#!/bin/sh
|
|
1350
|
+
HOME_DIR="${'$'}{HAPPIER_HOME_DIR:-${'$'}{HAPPIER_STACK_CLI_HOME_DIR:-}}"
|
|
1351
|
+
if [ -z "$HOME_DIR" ]; then
|
|
311
1352
|
exit 2
|
|
312
1353
|
fi
|
|
313
1354
|
STATE="$HOME_DIR/daemon.state.json"
|
|
1355
|
+
${observedStatePathLine}
|
|
314
1356
|
case "$1" in
|
|
315
1357
|
daemon)
|
|
316
1358
|
case "$2" in
|
|
317
1359
|
start)
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
printf '{"pid":%s,"httpPort":0,"startTime":"test"}\n' "$child" > "$STATE"
|
|
1360
|
+
${preStartObservation}
|
|
1361
|
+
"${process.execPath}" -e ${shellQuote(FAKE_PING_AWARE_DAEMON_CHILD_SCRIPT)} "$STATE" daemon start >/dev/null 2>&1 &
|
|
321
1362
|
exit 0
|
|
322
1363
|
;;
|
|
323
1364
|
stop)
|
|
@@ -345,53 +1386,1344 @@ esac
|
|
|
345
1386
|
return { cliCommand: 'happier-runtime-cmd', commandPath };
|
|
346
1387
|
}
|
|
347
1388
|
|
|
348
|
-
async function readDaemonPid(statePath) {
|
|
349
|
-
return Number(JSON.parse(await readFile(statePath, 'utf-8')).pid);
|
|
350
|
-
}
|
|
1389
|
+
async function readDaemonPid(statePath) {
|
|
1390
|
+
return Number(JSON.parse(await readFile(statePath, 'utf-8')).pid);
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
async function waitForProcessExit(pid, timeoutMs = 2_000) {
|
|
1394
|
+
const deadline = Date.now() + timeoutMs;
|
|
1395
|
+
while (Date.now() < deadline) {
|
|
1396
|
+
try {
|
|
1397
|
+
process.kill(pid, 0);
|
|
1398
|
+
} catch {
|
|
1399
|
+
return true;
|
|
1400
|
+
}
|
|
1401
|
+
await new Promise((resolve) => setTimeout(resolve, 25));
|
|
1402
|
+
}
|
|
1403
|
+
return false;
|
|
1404
|
+
}
|
|
1405
|
+
|
|
1406
|
+
async function writeDistBuildManifestForTest(distEntrypoint, fingerprint) {
|
|
1407
|
+
await writeFile(
|
|
1408
|
+
join(dirname(distEntrypoint), '.build-manifest.json'),
|
|
1409
|
+
JSON.stringify({
|
|
1410
|
+
fingerprint,
|
|
1411
|
+
builtAt: '2026-07-09T00:00:00.000Z',
|
|
1412
|
+
fileCount: 1,
|
|
1413
|
+
toolVersion: '1',
|
|
1414
|
+
}) + '\n',
|
|
1415
|
+
'utf-8',
|
|
1416
|
+
);
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
async function spawnReplacementDaemonForTest({ statePath, env, previousPid }) {
|
|
1420
|
+
const child = spawn(process.execPath, ['-e', FAKE_PING_AWARE_DAEMON_CHILD_SCRIPT, statePath], {
|
|
1421
|
+
detached: true,
|
|
1422
|
+
env,
|
|
1423
|
+
stdio: 'ignore',
|
|
1424
|
+
});
|
|
1425
|
+
child.unref();
|
|
1426
|
+
|
|
1427
|
+
const deadline = Date.now() + 5_000;
|
|
1428
|
+
while (Date.now() < deadline) {
|
|
1429
|
+
try {
|
|
1430
|
+
const pid = await readDaemonPid(statePath);
|
|
1431
|
+
if (pid === child.pid && pid !== previousPid) return pid;
|
|
1432
|
+
} catch {
|
|
1433
|
+
// Replacement has not published its state yet.
|
|
1434
|
+
}
|
|
1435
|
+
await new Promise((resolve) => setTimeout(resolve, 25));
|
|
1436
|
+
}
|
|
1437
|
+
throw new Error('test replacement daemon did not publish a successor state');
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
async function spawnUnreachableDaemonForTest({ statePath, env }) {
|
|
1441
|
+
const script = `
|
|
1442
|
+
const fs = require('node:fs');
|
|
1443
|
+
const path = require('node:path');
|
|
1444
|
+
const statePath = process.argv[1];
|
|
1445
|
+
fs.mkdirSync(path.dirname(statePath), { recursive: true });
|
|
1446
|
+
fs.writeFileSync(statePath, JSON.stringify({
|
|
1447
|
+
pid: process.pid,
|
|
1448
|
+
httpPort: 1,
|
|
1449
|
+
controlToken: 'unknown-control-owner',
|
|
1450
|
+
startTime: new Date().toISOString(),
|
|
1451
|
+
}), 'utf-8');
|
|
1452
|
+
setInterval(() => {}, 1000);
|
|
1453
|
+
`;
|
|
1454
|
+
const child = spawn(process.execPath, ['-e', script, statePath], {
|
|
1455
|
+
detached: true,
|
|
1456
|
+
env,
|
|
1457
|
+
stdio: 'ignore',
|
|
1458
|
+
});
|
|
1459
|
+
child.unref();
|
|
1460
|
+
|
|
1461
|
+
const deadline = Date.now() + 5_000;
|
|
1462
|
+
while (Date.now() < deadline) {
|
|
1463
|
+
try {
|
|
1464
|
+
if (await readDaemonPid(statePath) === child.pid) return child.pid;
|
|
1465
|
+
} catch {
|
|
1466
|
+
// The unreachable fixture has not published state yet.
|
|
1467
|
+
}
|
|
1468
|
+
await new Promise((resolve) => setTimeout(resolve, 25));
|
|
1469
|
+
}
|
|
1470
|
+
throw new Error('test unreachable daemon did not publish state');
|
|
1471
|
+
}
|
|
1472
|
+
|
|
1473
|
+
test('startLocalDaemonWithAuth requires daemon control ping before accepting running daemon state', async () => {
|
|
1474
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-ping-ready-'));
|
|
1475
|
+
let fixturePid = null;
|
|
1476
|
+
try {
|
|
1477
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
1478
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
1479
|
+
const cliBin = await writePidOnlyFalseReadyStubHappyCli({ cliDir });
|
|
1480
|
+
await writeFile(join(tmp, 'package.json'), '{}\n', 'utf-8');
|
|
1481
|
+
runGit(['init'], tmp);
|
|
1482
|
+
runGit(['config', 'user.email', 'test@example.com'], tmp);
|
|
1483
|
+
runGit(['config', 'user.name', 'Test User'], tmp);
|
|
1484
|
+
runGit(['add', '.'], tmp);
|
|
1485
|
+
runGit(['commit', '-m', 'init'], tmp);
|
|
1486
|
+
|
|
1487
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
1488
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
1489
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
1490
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
1491
|
+
const env = buildDaemonDistGuardEnv({
|
|
1492
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
1493
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_TIMEOUT_MS: '250',
|
|
1494
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_POLL_MS: '25',
|
|
1495
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_STABLE_MS: '0',
|
|
1496
|
+
});
|
|
1497
|
+
|
|
1498
|
+
await assert.rejects(
|
|
1499
|
+
() =>
|
|
1500
|
+
startLocalDaemonWithAuth({
|
|
1501
|
+
cliBin,
|
|
1502
|
+
cliHomeDir,
|
|
1503
|
+
internalServerUrl,
|
|
1504
|
+
publicServerUrl,
|
|
1505
|
+
isShuttingDown: () => false,
|
|
1506
|
+
forceRestart: true,
|
|
1507
|
+
env,
|
|
1508
|
+
stackName: 'dev',
|
|
1509
|
+
cliIdentity: 'default',
|
|
1510
|
+
}),
|
|
1511
|
+
/Failed to start daemon|daemon failed to start/i,
|
|
1512
|
+
);
|
|
1513
|
+
fixturePid = await readDaemonPid(join(cliHomeDir, 'daemon.state.json'));
|
|
1514
|
+
|
|
1515
|
+
await stopLocalDaemon({
|
|
1516
|
+
cliBin,
|
|
1517
|
+
internalServerUrl,
|
|
1518
|
+
cliHomeDir,
|
|
1519
|
+
env,
|
|
1520
|
+
});
|
|
1521
|
+
assert.equal(await waitForProcessExit(fixturePid), true, `expected fixture daemon pid ${fixturePid} to exit`);
|
|
1522
|
+
fixturePid = null;
|
|
1523
|
+
} finally {
|
|
1524
|
+
if (fixturePid) {
|
|
1525
|
+
try { process.kill(fixturePid, 'SIGKILL'); } catch {}
|
|
1526
|
+
}
|
|
1527
|
+
await rm(tmp, { recursive: true, force: true });
|
|
1528
|
+
}
|
|
1529
|
+
});
|
|
1530
|
+
|
|
1531
|
+
test('startLocalDaemonWithAuth does not require a second CLI build when dist/index.mjs already exists', async () => {
|
|
1532
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-guard-'));
|
|
1533
|
+
let fixturePid = null;
|
|
1534
|
+
try {
|
|
1535
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
1536
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
1537
|
+
const cliBin = await writeStubHappyCli({ cliDir });
|
|
1538
|
+
await writeFile(join(tmp, 'package.json'), '{}\n', 'utf-8');
|
|
1539
|
+
runGit(['init'], tmp);
|
|
1540
|
+
runGit(['config', 'user.email', 'test@example.com'], tmp);
|
|
1541
|
+
runGit(['config', 'user.name', 'Test User'], tmp);
|
|
1542
|
+
runGit(['add', '.'], tmp);
|
|
1543
|
+
runGit(['commit', '-m', 'init'], tmp);
|
|
1544
|
+
|
|
1545
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
1546
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
1547
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
1548
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
1549
|
+
|
|
1550
|
+
const env = buildDaemonDistGuardEnv({
|
|
1551
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
1552
|
+
});
|
|
1553
|
+
|
|
1554
|
+
// If startLocalDaemonWithAuth tries to rebuild, this will fail because package.json has no build script.
|
|
1555
|
+
await startLocalDaemonWithAuth({
|
|
1556
|
+
cliBin,
|
|
1557
|
+
cliHomeDir,
|
|
1558
|
+
internalServerUrl,
|
|
1559
|
+
publicServerUrl,
|
|
1560
|
+
isShuttingDown: () => false,
|
|
1561
|
+
forceRestart: true,
|
|
1562
|
+
env,
|
|
1563
|
+
stackName: 'dev',
|
|
1564
|
+
cliIdentity: 'default',
|
|
1565
|
+
});
|
|
1566
|
+
fixturePid = await readDaemonPid(join(cliHomeDir, 'daemon.state.json'));
|
|
1567
|
+
|
|
1568
|
+
await stopLocalDaemon({
|
|
1569
|
+
cliBin,
|
|
1570
|
+
internalServerUrl,
|
|
1571
|
+
cliHomeDir,
|
|
1572
|
+
env,
|
|
1573
|
+
});
|
|
1574
|
+
assert.equal(await waitForProcessExit(fixturePid), true, `expected fixture daemon pid ${fixturePid} to exit`);
|
|
1575
|
+
fixturePid = null;
|
|
1576
|
+
|
|
1577
|
+
assert.ok(true);
|
|
1578
|
+
} finally {
|
|
1579
|
+
if (fixturePid) {
|
|
1580
|
+
try { process.kill(fixturePid, 'SIGKILL'); } catch {}
|
|
1581
|
+
}
|
|
1582
|
+
await rm(tmp, { recursive: true, force: true });
|
|
1583
|
+
}
|
|
1584
|
+
});
|
|
1585
|
+
|
|
1586
|
+
test('startLocalDaemonWithAuth cold-starts runnable prior dist and preserves the exact live daemon', async (t) => {
|
|
1587
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-stale-cold-start-'));
|
|
1588
|
+
|
|
1589
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
1590
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
1591
|
+
const cliBin = await writeStubHappyCli({ cliDir });
|
|
1592
|
+
for (const app of ['ui', 'server']) {
|
|
1593
|
+
await mkdir(join(tmp, 'apps', app), { recursive: true });
|
|
1594
|
+
await writeFile(join(tmp, 'apps', app, 'package.json'), `{ "name": "${app}-test" }\n`, 'utf-8');
|
|
1595
|
+
}
|
|
1596
|
+
await writeFile(join(tmp, 'package.json'), '{ "private": true }\n', 'utf-8');
|
|
1597
|
+
await writeWorkspacePackageBuildOwnerStub(tmp);
|
|
1598
|
+
await writeFile(join(tmp, 'yarn.lock'), '# root yarn\n', 'utf-8');
|
|
1599
|
+
await mkdir(join(tmp, 'node_modules'), { recursive: true });
|
|
1600
|
+
await writeFile(join(tmp, 'node_modules', '.yarn-integrity'), 'ok\n', 'utf-8');
|
|
1601
|
+
await mkdir(join(cliDir, 'node_modules'), { recursive: true });
|
|
1602
|
+
await writeFile(join(cliDir, 'node_modules', '.yarn-integrity'), 'ok\n', 'utf-8');
|
|
1603
|
+
|
|
1604
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
1605
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
1606
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
1607
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
1608
|
+
|
|
1609
|
+
const env = buildDaemonDistGuardEnv({
|
|
1610
|
+
HAPPIER_STACK_REPO_DIR: tmp,
|
|
1611
|
+
HAPPIER_STACK_HOME_DIR: join(tmp, 'hstack-home'),
|
|
1612
|
+
HAPPIER_STACK_CLI_BUILD: '0',
|
|
1613
|
+
HAPPIER_STACK_SKIP_REFRESH_DEPS: '1',
|
|
1614
|
+
});
|
|
1615
|
+
t.after(async () => {
|
|
1616
|
+
await stopLocalDaemon({
|
|
1617
|
+
cliBin,
|
|
1618
|
+
internalServerUrl,
|
|
1619
|
+
cliHomeDir,
|
|
1620
|
+
env,
|
|
1621
|
+
stackName: 'dev',
|
|
1622
|
+
}).catch(() => {});
|
|
1623
|
+
await rm(tmp, { recursive: true, force: true });
|
|
1624
|
+
});
|
|
1625
|
+
|
|
1626
|
+
await startLocalDaemonWithAuth({
|
|
1627
|
+
cliBin,
|
|
1628
|
+
cliHomeDir,
|
|
1629
|
+
internalServerUrl,
|
|
1630
|
+
publicServerUrl,
|
|
1631
|
+
isShuttingDown: () => false,
|
|
1632
|
+
forceRestart: false,
|
|
1633
|
+
env,
|
|
1634
|
+
stackName: 'dev',
|
|
1635
|
+
cliIdentity: 'default',
|
|
1636
|
+
});
|
|
1637
|
+
const livePid = checkDaemonState(cliHomeDir, { serverUrl: internalServerUrl, env }).pid;
|
|
1638
|
+
assert.ok(Number(livePid) > 1);
|
|
1639
|
+
|
|
1640
|
+
await startLocalDaemonWithAuth({
|
|
1641
|
+
cliBin,
|
|
1642
|
+
cliHomeDir,
|
|
1643
|
+
internalServerUrl,
|
|
1644
|
+
publicServerUrl,
|
|
1645
|
+
isShuttingDown: () => false,
|
|
1646
|
+
forceRestart: false,
|
|
1647
|
+
env: {
|
|
1648
|
+
...env,
|
|
1649
|
+
HAPPIER_STACK_REPO_DIR: '',
|
|
1650
|
+
HAPPIER_STACK_CLI_ROOT_DIR: tmp,
|
|
1651
|
+
HAPPIER_TEST_FAIL_SERVER_SET: '1',
|
|
1652
|
+
},
|
|
1653
|
+
stackName: 'dev',
|
|
1654
|
+
cliIdentity: 'default',
|
|
1655
|
+
});
|
|
1656
|
+
assert.equal(
|
|
1657
|
+
checkDaemonState(cliHomeDir, { serverUrl: internalServerUrl, env }).pid,
|
|
1658
|
+
livePid,
|
|
1659
|
+
'an unavailable current build must preserve the exact already-live daemon',
|
|
1660
|
+
);
|
|
1661
|
+
|
|
1662
|
+
await stopLocalDaemon({
|
|
1663
|
+
cliBin,
|
|
1664
|
+
internalServerUrl,
|
|
1665
|
+
cliHomeDir,
|
|
1666
|
+
env,
|
|
1667
|
+
stackName: 'dev',
|
|
1668
|
+
});
|
|
1669
|
+
const binDir = join(tmp, 'bin');
|
|
1670
|
+
const yarnPath = join(binDir, 'yarn');
|
|
1671
|
+
await mkdir(binDir, { recursive: true });
|
|
1672
|
+
await writeFile(join(binDir, 'lsof'), '#!/bin/sh\nprintf "%s\\n" "$FAKE_LISTEN_PID"\n', 'utf-8');
|
|
1673
|
+
await writeFile(join(binDir, 'ps'), `#!/bin/sh
|
|
1674
|
+
case "$*" in
|
|
1675
|
+
*"pgid="*) printf "%s\\n" "$FAKE_LISTEN_PID" ;;
|
|
1676
|
+
*"eww -p $FAKE_LISTEN_PID"*)
|
|
1677
|
+
printf "PID COMMAND\\n"
|
|
1678
|
+
printf "%s node HAPPIER_STACK_STACK=%s HAPPIER_STACK_ENV_FILE=%s HAPPIER_STACK_PROCESS_KIND=server\\n" \
|
|
1679
|
+
"$FAKE_LISTEN_PID" "$FAKE_STACK_NAME" "$FAKE_STACK_ENV_FILE"
|
|
1680
|
+
;;
|
|
1681
|
+
*) exec /bin/ps "$@" ;;
|
|
1682
|
+
esac
|
|
1683
|
+
`, 'utf-8');
|
|
1684
|
+
await writeFile(
|
|
1685
|
+
yarnPath,
|
|
1686
|
+
[
|
|
1687
|
+
'#!/usr/bin/env bash',
|
|
1688
|
+
'set -euo pipefail',
|
|
1689
|
+
'if [ "${1:-}" = "--version" ]; then echo "1.22.22"; fi',
|
|
1690
|
+
'exit 0',
|
|
1691
|
+
].join('\n') + '\n',
|
|
1692
|
+
'utf-8',
|
|
1693
|
+
);
|
|
1694
|
+
await chmod(join(binDir, 'lsof'), 0o755);
|
|
1695
|
+
await chmod(join(binDir, 'ps'), 0o755);
|
|
1696
|
+
await chmod(yarnPath, 0o755);
|
|
1697
|
+
const buildEnv = {
|
|
1698
|
+
...env,
|
|
1699
|
+
PATH: `${binDir}:/usr/bin:/bin`,
|
|
1700
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
1701
|
+
HAPPIER_STACK_CLI_BUILD_MODE: 'always',
|
|
1702
|
+
};
|
|
1703
|
+
await startLocalDaemonWithAuth({
|
|
1704
|
+
cliBin,
|
|
1705
|
+
cliHomeDir,
|
|
1706
|
+
internalServerUrl,
|
|
1707
|
+
publicServerUrl,
|
|
1708
|
+
isShuttingDown: () => false,
|
|
1709
|
+
forceRestart: false,
|
|
1710
|
+
env: buildEnv,
|
|
1711
|
+
stackName: 'dev',
|
|
1712
|
+
cliIdentity: 'default',
|
|
1713
|
+
});
|
|
1714
|
+
await stopLocalDaemon({
|
|
1715
|
+
cliBin,
|
|
1716
|
+
internalServerUrl,
|
|
1717
|
+
cliHomeDir,
|
|
1718
|
+
env: buildEnv,
|
|
1719
|
+
stackName: 'dev',
|
|
1720
|
+
});
|
|
1721
|
+
const upToDateEnv = { ...buildEnv, HAPPIER_STACK_CLI_BUILD_MODE: 'auto' };
|
|
1722
|
+
await startLocalDaemonWithAuth({
|
|
1723
|
+
cliBin,
|
|
1724
|
+
cliHomeDir,
|
|
1725
|
+
internalServerUrl,
|
|
1726
|
+
publicServerUrl,
|
|
1727
|
+
isShuttingDown: () => false,
|
|
1728
|
+
forceRestart: false,
|
|
1729
|
+
env: upToDateEnv,
|
|
1730
|
+
stackName: 'dev',
|
|
1731
|
+
cliIdentity: 'default',
|
|
1732
|
+
});
|
|
1733
|
+
assert.equal(
|
|
1734
|
+
checkDaemonState(cliHomeDir, { serverUrl: internalServerUrl, env: upToDateEnv }).status,
|
|
1735
|
+
'running',
|
|
1736
|
+
'an up-to-date admitted dist must remain launchable',
|
|
1737
|
+
);
|
|
1738
|
+
});
|
|
1739
|
+
|
|
1740
|
+
test('source stack start uses an unchanged runnable prior dist when the current CLI build fails', async (t) => {
|
|
1741
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-run-stale-cold-start-'));
|
|
1742
|
+
const repoDir = join(tmp, 'repo');
|
|
1743
|
+
const cliDir = join(repoDir, 'apps', 'cli');
|
|
1744
|
+
await writeStubHappyCli({ cliDir });
|
|
1745
|
+
const cliHomeDir = join(tmp, 'cli-home');
|
|
1746
|
+
const stackName = `stale-cold-${process.pid}`;
|
|
1747
|
+
const envPath = join(tmp, 'stacks', stackName, 'env');
|
|
1748
|
+
const runtimeStatePath = join(tmp, 'stacks', stackName, 'stack.runtime.json');
|
|
1749
|
+
await mkdir(dirname(envPath), { recursive: true });
|
|
1750
|
+
await writeFile(envPath, '\n', 'utf-8');
|
|
1751
|
+
const healthServer = spawn(process.execPath, ['-e', `
|
|
1752
|
+
const { createServer } = require('node:http');
|
|
1753
|
+
const server = createServer((req, res) => {
|
|
1754
|
+
if (req.url === '/health') {
|
|
1755
|
+
res.writeHead(200, { 'content-type': 'application/json' });
|
|
1756
|
+
res.end(JSON.stringify({ service: 'happier-server', status: 'ok' }));
|
|
1757
|
+
return;
|
|
1758
|
+
}
|
|
1759
|
+
res.writeHead(404);
|
|
1760
|
+
res.end();
|
|
1761
|
+
});
|
|
1762
|
+
server.listen(0, '127.0.0.1', () => process.stdout.write(String(server.address().port) + '\\n'));
|
|
1763
|
+
process.on('SIGTERM', () => server.close(() => process.exit(0)));
|
|
1764
|
+
`], {
|
|
1765
|
+
env: {
|
|
1766
|
+
...process.env,
|
|
1767
|
+
HAPPIER_STACK_STACK: stackName,
|
|
1768
|
+
HAPPIER_STACK_ENV_FILE: envPath,
|
|
1769
|
+
HAPPIER_STACK_PROCESS_KIND: 'server',
|
|
1770
|
+
},
|
|
1771
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
1772
|
+
});
|
|
1773
|
+
const healthServerExit = new Promise((resolve) => healthServer.once('exit', resolve));
|
|
1774
|
+
const serverPort = await new Promise((resolve, reject) => {
|
|
1775
|
+
let output = '';
|
|
1776
|
+
const timer = setTimeout(() => reject(new Error('timed out waiting for health server port')), 2_000);
|
|
1777
|
+
healthServer.stdout.on('data', (chunk) => {
|
|
1778
|
+
output += String(chunk);
|
|
1779
|
+
const value = Number(output.trim().split(/\s+/)[0]);
|
|
1780
|
+
if (Number.isInteger(value) && value > 0) {
|
|
1781
|
+
clearTimeout(timer);
|
|
1782
|
+
resolve(value);
|
|
1783
|
+
}
|
|
1784
|
+
});
|
|
1785
|
+
healthServer.once('exit', (code, signal) => {
|
|
1786
|
+
clearTimeout(timer);
|
|
1787
|
+
reject(new Error(`health server exited before readiness (code=${code}, signal=${signal})`));
|
|
1788
|
+
});
|
|
1789
|
+
});
|
|
1790
|
+
const internalServerUrl = `http://127.0.0.1:${serverPort}`;
|
|
1791
|
+
|
|
1792
|
+
await mkdir(join(repoDir, 'node_modules'), { recursive: true });
|
|
1793
|
+
await writeFile(join(repoDir, 'node_modules', '.yarn-integrity'), 'ok\n', 'utf-8');
|
|
1794
|
+
await mkdir(join(cliDir, 'node_modules'), { recursive: true });
|
|
1795
|
+
await writeFile(join(cliDir, 'node_modules', '.yarn-integrity'), 'ok\n', 'utf-8');
|
|
1796
|
+
await mkdir(join(repoDir, 'apps', 'ui'), { recursive: true });
|
|
1797
|
+
await mkdir(join(repoDir, 'apps', 'server'), { recursive: true });
|
|
1798
|
+
await writeFile(join(repoDir, 'package.json'), '{ "private": true }\n', 'utf-8');
|
|
1799
|
+
await writeWorkspacePackageBuildOwnerStub(repoDir);
|
|
1800
|
+
await writeFile(join(repoDir, 'yarn.lock'), '# test lock\n', 'utf-8');
|
|
1801
|
+
const binDir = join(tmp, 'bin');
|
|
1802
|
+
const yarnPath = join(binDir, 'yarn');
|
|
1803
|
+
const ownershipLogPath = join(tmp, 'listener-ownership.log');
|
|
1804
|
+
await mkdir(binDir, { recursive: true });
|
|
1805
|
+
await writeFile(
|
|
1806
|
+
join(binDir, 'lsof'),
|
|
1807
|
+
'#!/bin/sh\nprintf "lsof\\n" >> "$FAKE_OWNERSHIP_LOG"\nprintf "%s\\n" "$FAKE_LISTEN_PID"\n',
|
|
1808
|
+
'utf-8',
|
|
1809
|
+
);
|
|
1810
|
+
await writeFile(join(binDir, 'ps'), `#!/bin/sh
|
|
1811
|
+
printf "ps\\n" >> "$FAKE_OWNERSHIP_LOG"
|
|
1812
|
+
case "$*" in
|
|
1813
|
+
*"pgid="*) printf "%s\\n" "$FAKE_LISTEN_PID" ;;
|
|
1814
|
+
*"eww -p $FAKE_LISTEN_PID"*)
|
|
1815
|
+
printf "PID COMMAND\\n"
|
|
1816
|
+
printf "%s node HAPPIER_STACK_STACK=%s HAPPIER_STACK_ENV_FILE=%s HAPPIER_STACK_PROCESS_KIND=server\\n" \
|
|
1817
|
+
"$FAKE_LISTEN_PID" "$FAKE_STACK_NAME" "$FAKE_STACK_ENV_FILE"
|
|
1818
|
+
;;
|
|
1819
|
+
*) exec /bin/ps "$@" ;;
|
|
1820
|
+
esac
|
|
1821
|
+
`, 'utf-8');
|
|
1822
|
+
await writeFile(
|
|
1823
|
+
yarnPath,
|
|
1824
|
+
`#!${process.execPath}\n` +
|
|
1825
|
+
`if (process.argv.includes('--version')) { console.log('1.22.22'); process.exit(0); }\n` +
|
|
1826
|
+
`if (process.argv.includes('build')) process.exit(47);\n` +
|
|
1827
|
+
`process.exit(0);\n`,
|
|
1828
|
+
'utf-8',
|
|
1829
|
+
);
|
|
1830
|
+
await chmod(join(binDir, 'lsof'), 0o755);
|
|
1831
|
+
await chmod(join(binDir, 'ps'), 0o755);
|
|
1832
|
+
await chmod(yarnPath, 0o755);
|
|
1833
|
+
await writeFile(
|
|
1834
|
+
join(cliDir, 'package.json'),
|
|
1835
|
+
JSON.stringify({
|
|
1836
|
+
name: 'fake-cli',
|
|
1837
|
+
private: true,
|
|
1838
|
+
scripts: {
|
|
1839
|
+
build: `${JSON.stringify(process.execPath)} -e "process.exit(47)"`,
|
|
1840
|
+
},
|
|
1841
|
+
}) + '\n',
|
|
1842
|
+
'utf-8',
|
|
1843
|
+
);
|
|
1844
|
+
await writeFile(join(repoDir, 'apps', 'ui', 'package.json'), '{ "name": "fake-ui" }\n', 'utf-8');
|
|
1845
|
+
await writeFile(
|
|
1846
|
+
join(repoDir, 'apps', 'server', 'package.json'),
|
|
1847
|
+
JSON.stringify({ name: 'fake-server', private: true, scripts: { start: 'node server.mjs' } }) + '\n',
|
|
1848
|
+
'utf-8',
|
|
1849
|
+
);
|
|
1850
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
1851
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
1852
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
1853
|
+
|
|
1854
|
+
const env = buildDaemonDistGuardEnv({
|
|
1855
|
+
HAPPIER_STACK_DISABLE_STACK_ENV_AUTOLOAD: '1',
|
|
1856
|
+
HAPPIER_STACK_HOME_DIR: join(tmp, 'hstack-home'),
|
|
1857
|
+
HAPPIER_STACK_STORAGE_DIR: join(tmp, 'stacks'),
|
|
1858
|
+
HAPPIER_STACK_STACK: '',
|
|
1859
|
+
HAPPIER_STACK_ENV_FILE: envPath,
|
|
1860
|
+
HAPPIER_STACK_RUNTIME_STATE_PATH: runtimeStatePath,
|
|
1861
|
+
HAPPIER_STACK_RUNTIME_MODE: 'source',
|
|
1862
|
+
HAPPIER_STACK_REPO_DIR: repoDir,
|
|
1863
|
+
HAPPIER_STACK_CLI_HOME_DIR: cliHomeDir,
|
|
1864
|
+
HAPPIER_STACK_SERVER_PORT: String(serverPort),
|
|
1865
|
+
HAPPIER_STACK_SERVER_COMPONENT: 'happier-server-light',
|
|
1866
|
+
HAPPIER_STACK_MANAGED_INFRA: '0',
|
|
1867
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
1868
|
+
HAPPIER_STACK_CLI_BUILD_MODE: 'always',
|
|
1869
|
+
HAPPIER_STACK_SKIP_REFRESH_DEPS: '1',
|
|
1870
|
+
HAPPIER_STACK_SERVE_UI: '0',
|
|
1871
|
+
HAPPIER_STACK_NO_BROWSER: '1',
|
|
1872
|
+
FAKE_LISTEN_PID: String(healthServer.pid),
|
|
1873
|
+
FAKE_STACK_NAME: stackName,
|
|
1874
|
+
FAKE_STACK_ENV_FILE: envPath,
|
|
1875
|
+
FAKE_OWNERSHIP_LOG: ownershipLogPath,
|
|
1876
|
+
PATH: `${binDir}:${process.env.PATH}`,
|
|
1877
|
+
});
|
|
1878
|
+
const priorDistSource = await readFile(join(cliDir, 'dist', 'index.mjs'), 'utf-8');
|
|
1879
|
+
const priorDistManifest = await readFile(join(cliDir, 'dist', '.build-manifest.json'), 'utf-8');
|
|
1880
|
+
const runPath = join(dirname(fileURLToPath(import.meta.url)), 'run.mjs');
|
|
1881
|
+
const runner = spawn(process.execPath, [runPath, '--source', '--server=happier-server-light', '--no-ui', '--no-browser'], {
|
|
1882
|
+
cwd: repoDir,
|
|
1883
|
+
env,
|
|
1884
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
1885
|
+
});
|
|
1886
|
+
let stdout = '';
|
|
1887
|
+
let stderr = '';
|
|
1888
|
+
runner.stdout.on('data', (chunk) => { stdout += String(chunk); });
|
|
1889
|
+
runner.stderr.on('data', (chunk) => { stderr += String(chunk); });
|
|
1890
|
+
const runnerExit = new Promise((resolve) => runner.once('exit', (code, signal) => resolve({ code, signal })));
|
|
1891
|
+
|
|
1892
|
+
t.after(async () => {
|
|
1893
|
+
if (runner.exitCode == null && runner.signalCode == null) runner.kill('SIGTERM');
|
|
1894
|
+
await Promise.race([runnerExit, new Promise((resolve) => setTimeout(resolve, 5_000))]);
|
|
1895
|
+
if (runner.exitCode == null && runner.signalCode == null) {
|
|
1896
|
+
runner.kill('SIGKILL');
|
|
1897
|
+
await Promise.race([runnerExit, new Promise((resolve) => setTimeout(resolve, 2_000))]);
|
|
1898
|
+
}
|
|
1899
|
+
const runtimeState = JSON.parse(await readFile(runtimeStatePath, 'utf-8').catch(() => '{}'));
|
|
1900
|
+
const cleanupServerUrl = Number(runtimeState?.ports?.server) > 0
|
|
1901
|
+
? `http://127.0.0.1:${runtimeState.ports.server}`
|
|
1902
|
+
: internalServerUrl;
|
|
1903
|
+
const remainingDaemon = checkDaemonState(cliHomeDir, { serverUrl: cleanupServerUrl, env });
|
|
1904
|
+
if (Number(remainingDaemon?.pid) > 1) {
|
|
1905
|
+
try { process.kill(remainingDaemon.pid, 'SIGTERM'); } catch {}
|
|
1906
|
+
}
|
|
1907
|
+
if (healthServer.exitCode == null && healthServer.signalCode == null) healthServer.kill('SIGTERM');
|
|
1908
|
+
await Promise.race([healthServerExit, new Promise((resolve) => setTimeout(resolve, 2_000))]);
|
|
1909
|
+
await rm(tmp, { recursive: true, force: true });
|
|
1910
|
+
});
|
|
1911
|
+
|
|
1912
|
+
const deadline = Date.now() + 60_000;
|
|
1913
|
+
let state = null;
|
|
1914
|
+
let observedServerUrl = internalServerUrl;
|
|
1915
|
+
while (Date.now() < deadline) {
|
|
1916
|
+
const runtimeState = JSON.parse(await readFile(runtimeStatePath, 'utf-8').catch(() => '{}'));
|
|
1917
|
+
observedServerUrl = Number(runtimeState?.ports?.server) > 0
|
|
1918
|
+
? `http://127.0.0.1:${runtimeState.ports.server}`
|
|
1919
|
+
: internalServerUrl;
|
|
1920
|
+
state = checkDaemonState(cliHomeDir, { serverUrl: observedServerUrl, env });
|
|
1921
|
+
if (state.status === 'running') break;
|
|
1922
|
+
if (runner.exitCode != null || runner.signalCode != null) break;
|
|
1923
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
assert.equal(
|
|
1927
|
+
state?.status,
|
|
1928
|
+
'running',
|
|
1929
|
+
`source start did not launch the prior usable dist after current build failure\nstdout:\n${stdout}\nstderr:\n${stderr}`,
|
|
1930
|
+
);
|
|
1931
|
+
assert.match(
|
|
1932
|
+
`${stdout}\n${stderr}`,
|
|
1933
|
+
/WARNING: happier-cli current build failed .*starting the daemon from the last usable dist.*Source changes are not active/s,
|
|
1934
|
+
);
|
|
1935
|
+
assert.equal(await readFile(join(cliDir, 'dist', 'index.mjs'), 'utf-8'), priorDistSource);
|
|
1936
|
+
assert.equal(await readFile(join(cliDir, 'dist', '.build-manifest.json'), 'utf-8'), priorDistManifest);
|
|
1937
|
+
});
|
|
1938
|
+
|
|
1939
|
+
test('startLocalDaemonWithAuth ignores unreachable stale dist chunks when the entrypoint closure is complete', async () => {
|
|
1940
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-stale-unused-'));
|
|
1941
|
+
try {
|
|
1942
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
1943
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
1944
|
+
const cliBin = await writeStubHappyCli({ cliDir });
|
|
1945
|
+
await writeFile(join(cliDir, 'dist', 'stale-unused.mjs'), "import './missing-old-chunk.mjs';\n", 'utf-8');
|
|
1946
|
+
|
|
1947
|
+
await writeFile(join(tmp, 'package.json'), '{}\n', 'utf-8');
|
|
1948
|
+
await writeFile(join(tmp, 'yarn.lock'), '# yarn lockfile v1\n', 'utf-8');
|
|
1949
|
+
await writeDistBuildManifestForTest(join(cliDir, 'dist', 'index.mjs'), 'abcdef1234567890');
|
|
1950
|
+
runGit(['init'], tmp);
|
|
1951
|
+
runGit(['config', 'user.email', 'test@example.com'], tmp);
|
|
1952
|
+
runGit(['config', 'user.name', 'Test User'], tmp);
|
|
1953
|
+
runGit(['add', '.'], tmp);
|
|
1954
|
+
runGit(['commit', '-m', 'init'], tmp);
|
|
1955
|
+
|
|
1956
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
1957
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
1958
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
1959
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
1960
|
+
|
|
1961
|
+
const env = buildDaemonDistGuardEnv({
|
|
1962
|
+
HAPPIER_STACK_REPO_DIR: tmp,
|
|
1963
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
1964
|
+
});
|
|
1965
|
+
|
|
1966
|
+
await startLocalDaemonWithAuth({
|
|
1967
|
+
cliBin,
|
|
1968
|
+
cliHomeDir,
|
|
1969
|
+
internalServerUrl,
|
|
1970
|
+
publicServerUrl,
|
|
1971
|
+
isShuttingDown: () => false,
|
|
1972
|
+
forceRestart: true,
|
|
1973
|
+
env,
|
|
1974
|
+
stackName: 'dev',
|
|
1975
|
+
cliIdentity: 'default',
|
|
1976
|
+
});
|
|
1977
|
+
|
|
1978
|
+
const daemonPid = await readDaemonPid(join(cliHomeDir, 'daemon.state.json'));
|
|
1979
|
+
assert.ok(daemonPid > 1, 'expected daemon start to ignore unreachable stale dist modules');
|
|
1980
|
+
|
|
1981
|
+
await stopLocalDaemon({
|
|
1982
|
+
cliBin,
|
|
1983
|
+
internalServerUrl,
|
|
1984
|
+
cliHomeDir,
|
|
1985
|
+
env,
|
|
1986
|
+
});
|
|
1987
|
+
} finally {
|
|
1988
|
+
await rm(tmp, { recursive: true, force: true });
|
|
1989
|
+
}
|
|
1990
|
+
});
|
|
1991
|
+
|
|
1992
|
+
test('startLocalDaemonWithAuth prefers guarded dist over package-dist when both entrypoints exist', async () => {
|
|
1993
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-preferred-'));
|
|
1994
|
+
let daemonPid = null;
|
|
1995
|
+
try {
|
|
1996
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
1997
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
1998
|
+
const monoRoot = join(cliDir, '..', '..');
|
|
1999
|
+
const distScript = `
|
|
2000
|
+
import { spawn } from 'node:child_process';
|
|
2001
|
+
import { writeFileSync } from 'node:fs';
|
|
2002
|
+
import { join } from 'node:path';
|
|
2003
|
+
|
|
2004
|
+
const args = process.argv.slice(2);
|
|
2005
|
+
if (args[0] === 'daemon' && args[1] === '--help') process.exit(0);
|
|
2006
|
+
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
2007
|
+
if (!home) process.exit(2);
|
|
2008
|
+
|
|
2009
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
2010
|
+
|
|
2011
|
+
if (args[0] !== 'daemon') process.exit(0);
|
|
2012
|
+
if (args[1] === 'start') {
|
|
2013
|
+
startFakePingAwareDaemon(join(home, 'daemon.state.json'));
|
|
2014
|
+
}
|
|
2015
|
+
process.exit(0);
|
|
2016
|
+
`;
|
|
2017
|
+
const { cliBinDir } = await writeStubHappierCliFiles(monoRoot, {
|
|
2018
|
+
packageJsonContent: '{}\n',
|
|
2019
|
+
distIndexScript: distScript.trimStart(),
|
|
2020
|
+
binHappierScript: 'process.exit(43);\n',
|
|
2021
|
+
});
|
|
2022
|
+
await mkdir(join(cliDir, 'package-dist'), { recursive: true });
|
|
2023
|
+
await writeFile(join(cliDir, 'package-dist', 'index.mjs'), 'process.exit(42);\n', 'utf-8');
|
|
2024
|
+
|
|
2025
|
+
await writeFile(join(tmp, 'package.json'), '{}\n', 'utf-8');
|
|
2026
|
+
runGit(['init'], tmp);
|
|
2027
|
+
runGit(['config', 'user.email', 'test@example.com'], tmp);
|
|
2028
|
+
runGit(['config', 'user.name', 'Test User'], tmp);
|
|
2029
|
+
runGit(['add', '.'], tmp);
|
|
2030
|
+
runGit(['commit', '-m', 'init'], tmp);
|
|
2031
|
+
|
|
2032
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2033
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2034
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2035
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2036
|
+
|
|
2037
|
+
const cliBin = join(cliBinDir, 'happier.mjs');
|
|
2038
|
+
const env = buildDaemonDistGuardEnv({
|
|
2039
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
2040
|
+
HAPPIER_STACK_TUI: '0',
|
|
2041
|
+
});
|
|
2042
|
+
|
|
2043
|
+
await startLocalDaemonWithAuth({
|
|
2044
|
+
cliBin,
|
|
2045
|
+
cliHomeDir,
|
|
2046
|
+
internalServerUrl,
|
|
2047
|
+
publicServerUrl,
|
|
2048
|
+
isShuttingDown: () => false,
|
|
2049
|
+
forceRestart: true,
|
|
2050
|
+
env,
|
|
2051
|
+
stackName: 'dev',
|
|
2052
|
+
cliIdentity: 'default',
|
|
2053
|
+
});
|
|
2054
|
+
|
|
2055
|
+
const daemonState = JSON.parse(await readFile(join(cliHomeDir, 'daemon.state.json'), 'utf-8'));
|
|
2056
|
+
daemonPid = Number(daemonState.pid);
|
|
2057
|
+
assert.ok(daemonPid > 1, 'expected package-dist daemon to write daemon state');
|
|
2058
|
+
|
|
2059
|
+
await stopLocalDaemon({
|
|
2060
|
+
cliBin,
|
|
2061
|
+
internalServerUrl,
|
|
2062
|
+
cliHomeDir,
|
|
2063
|
+
env,
|
|
2064
|
+
});
|
|
2065
|
+
} finally {
|
|
2066
|
+
if (daemonPid) {
|
|
2067
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
2068
|
+
}
|
|
2069
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2070
|
+
}
|
|
2071
|
+
});
|
|
2072
|
+
|
|
2073
|
+
test('startLocalDaemonWithAuth starts from rebuilt dist when dist is missing at command resolution time', async () => {
|
|
2074
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-rebuild-command-'));
|
|
2075
|
+
try {
|
|
2076
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
2077
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
2078
|
+
const monoRoot = join(cliDir, '..', '..');
|
|
2079
|
+
const distScript = `
|
|
2080
|
+
import { spawn } from 'node:child_process';
|
|
2081
|
+
import { existsSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
|
|
2082
|
+
import { join } from 'node:path';
|
|
2083
|
+
|
|
2084
|
+
const args = process.argv.slice(2);
|
|
2085
|
+
if (args[0] !== 'daemon') process.exit(0);
|
|
2086
|
+
if (args[1] === '--help') process.exit(0);
|
|
2087
|
+
const home = process.env.HAPPIER_HOME_DIR || process.env.HAPPIER_STACK_CLI_HOME_DIR;
|
|
2088
|
+
if (!home) process.exit(2);
|
|
2089
|
+
const state = join(home, 'daemon.state.json');
|
|
2090
|
+
|
|
2091
|
+
${fakePingAwareDaemonSpawnerSource()}
|
|
2092
|
+
|
|
2093
|
+
const sub = args[1] || '';
|
|
2094
|
+
|
|
2095
|
+
if (sub === 'stop') {
|
|
2096
|
+
if (existsSync(state)) {
|
|
2097
|
+
try {
|
|
2098
|
+
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
2099
|
+
if (Number.isFinite(pid) && pid > 1) {
|
|
2100
|
+
try { process.kill(pid, 'SIGTERM'); } catch {}
|
|
2101
|
+
}
|
|
2102
|
+
} catch {}
|
|
2103
|
+
try { rmSync(state); } catch {}
|
|
2104
|
+
}
|
|
2105
|
+
process.exit(0);
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
if (sub === 'start') {
|
|
2109
|
+
startFakePingAwareDaemon(state);
|
|
2110
|
+
process.exit(0);
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
if (sub === 'status') {
|
|
2114
|
+
let ok = false;
|
|
2115
|
+
if (existsSync(state)) {
|
|
2116
|
+
try {
|
|
2117
|
+
const pid = Number(JSON.parse(readFileSync(state, 'utf-8')).pid);
|
|
2118
|
+
if (Number.isFinite(pid) && pid > 1) {
|
|
2119
|
+
try { process.kill(pid, 0); ok = true; } catch {}
|
|
2120
|
+
}
|
|
2121
|
+
} catch {}
|
|
2122
|
+
}
|
|
2123
|
+
console.log(ok ? 'daemon: running' : 'daemon: stopped');
|
|
2124
|
+
process.exit(0);
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
process.exit(0);
|
|
2128
|
+
`;
|
|
2129
|
+
const { cliBinDir } = await writeStubHappierCliFiles(monoRoot, {
|
|
2130
|
+
packageJsonContent: JSON.stringify({ scripts: { build: 'node scripts/build.mjs' } }) + '\n',
|
|
2131
|
+
// If daemon command resolution happens before the build creates dist/index.mjs,
|
|
2132
|
+
// the stale fallback path invokes this bin wrapper and the test fails.
|
|
2133
|
+
binHappierScript: 'process.exit(42);\n',
|
|
2134
|
+
});
|
|
2135
|
+
await mkdir(join(cliDir, 'scripts'), { recursive: true });
|
|
2136
|
+
await writeFile(
|
|
2137
|
+
join(cliDir, 'scripts', 'build.mjs'),
|
|
2138
|
+
`import { mkdirSync, writeFileSync } from 'node:fs';\n` +
|
|
2139
|
+
`import { join } from 'node:path';\n` +
|
|
2140
|
+
`const dist = process.env.HAPPIER_WORKSPACE_DIST_OUTPUT_DIR || process.env.HAPPIER_CLI_BUILD_OUTPUT_DIR || join(process.cwd(), 'dist');\n` +
|
|
2141
|
+
`mkdirSync(dist, { recursive: true });\n` +
|
|
2142
|
+
`writeFileSync(join(dist, 'index.mjs'), ${JSON.stringify(distScript.trimStart())}, 'utf-8');\n` +
|
|
2143
|
+
`writeFileSync(join(dist, '.build-manifest.json'), JSON.stringify({ fingerprint: '3333333333333333', builtAt: '2026-07-09T00:00:00.000Z', fileCount: 1, toolVersion: '1' }) + '\\n', 'utf-8');\n`,
|
|
2144
|
+
'utf-8',
|
|
2145
|
+
);
|
|
2146
|
+
|
|
2147
|
+
await writeFile(join(tmp, 'package.json'), '{}\n', 'utf-8');
|
|
2148
|
+
await writeWorkspacePackageBuildOwnerStub(tmp);
|
|
2149
|
+
for (const app of ['ui', 'server']) {
|
|
2150
|
+
const appDir = join(tmp, 'apps', app);
|
|
2151
|
+
await mkdir(appDir, { recursive: true });
|
|
2152
|
+
await writeFile(join(appDir, 'package.json'), `{ "name": "fake-${app}" }\n`, 'utf-8');
|
|
2153
|
+
}
|
|
2154
|
+
await writeFile(join(tmp, 'yarn.lock'), '# root yarn\n', 'utf-8');
|
|
2155
|
+
await mkdir(join(tmp, 'node_modules'), { recursive: true });
|
|
2156
|
+
await writeFile(join(tmp, 'node_modules', '.yarn-integrity'), 'ok\n', 'utf-8');
|
|
2157
|
+
await mkdir(join(cliDir, 'node_modules'), { recursive: true });
|
|
2158
|
+
await writeFile(join(cliDir, 'node_modules', '.yarn-integrity'), 'ok\n', 'utf-8');
|
|
2159
|
+
const binDir = join(tmp, 'bin');
|
|
2160
|
+
const yarnPath = join(binDir, 'yarn');
|
|
2161
|
+
await mkdir(binDir, { recursive: true });
|
|
2162
|
+
await writeFile(
|
|
2163
|
+
yarnPath,
|
|
2164
|
+
`#!${process.execPath}\n` +
|
|
2165
|
+
`const { spawnSync } = require('node:child_process');\n` +
|
|
2166
|
+
`const { appendFileSync } = require('node:fs');\n` +
|
|
2167
|
+
`const { join } = require('node:path');\n` +
|
|
2168
|
+
`appendFileSync(process.env.HAPPIER_TEST_YARN_INVOCATIONS, process.argv.slice(2).join(' ') + '\\n');\n` +
|
|
2169
|
+
`if (process.argv.includes('--version')) { console.log('1.22.22'); process.exit(0); }\n` +
|
|
2170
|
+
`if (process.argv.includes('build')) {\n` +
|
|
2171
|
+
` const result = spawnSync(process.execPath, [join(process.cwd(), 'scripts', 'build.mjs')], { stdio: 'inherit', env: process.env });\n` +
|
|
2172
|
+
` process.exit(result.status ?? 1);\n` +
|
|
2173
|
+
`}\n` +
|
|
2174
|
+
`process.exit(0);\n`,
|
|
2175
|
+
'utf-8',
|
|
2176
|
+
);
|
|
2177
|
+
await chmod(yarnPath, 0o755);
|
|
2178
|
+
runGit(['init'], tmp);
|
|
2179
|
+
runGit(['config', 'user.email', 'test@example.com'], tmp);
|
|
2180
|
+
runGit(['config', 'user.name', 'Test User'], tmp);
|
|
2181
|
+
runGit(['add', '.'], tmp);
|
|
2182
|
+
runGit(['commit', '-m', 'init'], tmp);
|
|
2183
|
+
|
|
2184
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2185
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2186
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2187
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2188
|
+
|
|
2189
|
+
const cliBin = join(cliBinDir, 'happier.mjs');
|
|
2190
|
+
const env = buildDaemonDistGuardEnv({
|
|
2191
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
2192
|
+
HAPPIER_STACK_HOME_DIR: join(tmp, 'hstack-home'),
|
|
2193
|
+
HAPPIER_STACK_SKIP_REFRESH_DEPS: '1',
|
|
2194
|
+
HAPPIER_STACK_TUI: '0',
|
|
2195
|
+
HAPPIER_TEST_YARN_INVOCATIONS: join(tmp, 'yarn-invocations.log'),
|
|
2196
|
+
PATH: `${binDir}:${process.env.PATH}`,
|
|
2197
|
+
});
|
|
2198
|
+
|
|
2199
|
+
await startLocalDaemonWithAuth({
|
|
2200
|
+
cliBin,
|
|
2201
|
+
cliHomeDir,
|
|
2202
|
+
internalServerUrl,
|
|
2203
|
+
publicServerUrl,
|
|
2204
|
+
isShuttingDown: () => false,
|
|
2205
|
+
forceRestart: true,
|
|
2206
|
+
env,
|
|
2207
|
+
stackName: 'dev',
|
|
2208
|
+
cliIdentity: 'default',
|
|
2209
|
+
});
|
|
2210
|
+
const daemonState = JSON.parse(await readFile(join(cliHomeDir, 'daemon.state.json'), 'utf-8'));
|
|
2211
|
+
assert.ok(Number(daemonState.pid) > 1, 'expected rebuilt dist daemon to write daemon state');
|
|
2212
|
+
assert.deepEqual(
|
|
2213
|
+
(await readFile(join(tmp, 'yarn-invocations.log'), 'utf-8')).trim().split(/\n+/),
|
|
2214
|
+
['--version', 'build'],
|
|
2215
|
+
'the rebuild must use the caller-owned package-manager environment',
|
|
2216
|
+
);
|
|
2217
|
+
|
|
2218
|
+
await stopLocalDaemon({
|
|
2219
|
+
cliBin,
|
|
2220
|
+
internalServerUrl,
|
|
2221
|
+
cliHomeDir,
|
|
2222
|
+
env,
|
|
2223
|
+
});
|
|
2224
|
+
} finally {
|
|
2225
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2226
|
+
}
|
|
2227
|
+
});
|
|
2228
|
+
|
|
2229
|
+
test('startLocalDaemonWithAuth coalesces concurrent non-forced starts behind an active restart', async () => {
|
|
2230
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-lifecycle-lock-'));
|
|
2231
|
+
try {
|
|
2232
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
2233
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
2234
|
+
const cliBin = await writeSlowStartStubHappyCli({ cliDir });
|
|
2235
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2236
|
+
const eventsPath = join(tmp, 'daemon-events.log');
|
|
2237
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2238
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2239
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2240
|
+
|
|
2241
|
+
const env = buildDaemonDistGuardEnv({
|
|
2242
|
+
HAPPIER_TEST_DAEMON_EVENTS_PATH: eventsPath,
|
|
2243
|
+
});
|
|
2244
|
+
|
|
2245
|
+
await Promise.all([
|
|
2246
|
+
startLocalDaemonWithAuth({
|
|
2247
|
+
cliBin,
|
|
2248
|
+
cliHomeDir,
|
|
2249
|
+
internalServerUrl,
|
|
2250
|
+
publicServerUrl,
|
|
2251
|
+
isShuttingDown: () => false,
|
|
2252
|
+
forceRestart: true,
|
|
2253
|
+
env,
|
|
2254
|
+
stackName: 'dev',
|
|
2255
|
+
cliIdentity: 'default',
|
|
2256
|
+
}),
|
|
2257
|
+
(async () => {
|
|
2258
|
+
await new Promise((resolve) => setTimeout(resolve, 25));
|
|
2259
|
+
await startLocalDaemonWithAuth({
|
|
2260
|
+
cliBin,
|
|
2261
|
+
cliHomeDir,
|
|
2262
|
+
internalServerUrl,
|
|
2263
|
+
publicServerUrl,
|
|
2264
|
+
isShuttingDown: () => false,
|
|
2265
|
+
forceRestart: false,
|
|
2266
|
+
env,
|
|
2267
|
+
stackName: 'dev',
|
|
2268
|
+
cliIdentity: 'default',
|
|
2269
|
+
});
|
|
2270
|
+
})(),
|
|
2271
|
+
]);
|
|
2272
|
+
|
|
2273
|
+
const events = (await readFile(eventsPath, 'utf-8')).trim().split(/\n+/).filter(Boolean);
|
|
2274
|
+
assert.equal(events.filter((event) => event === 'start').length, 1);
|
|
2275
|
+
|
|
2276
|
+
await stopLocalDaemon({
|
|
2277
|
+
cliBin,
|
|
2278
|
+
internalServerUrl,
|
|
2279
|
+
cliHomeDir,
|
|
2280
|
+
env,
|
|
2281
|
+
});
|
|
2282
|
+
} finally {
|
|
2283
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2284
|
+
}
|
|
2285
|
+
});
|
|
2286
|
+
|
|
2287
|
+
test('startLocalDaemonWithAuth keeps a running daemon when a concurrent CLI build removes dist before restart', async () => {
|
|
2288
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-build-race-'));
|
|
2289
|
+
let daemonPid = null;
|
|
2290
|
+
try {
|
|
2291
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
2292
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
2293
|
+
const cliBin = await writeDelayedStopStubHappyCli({ cliDir });
|
|
2294
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2295
|
+
const eventsPath = join(tmp, 'daemon-events.log');
|
|
2296
|
+
const lockPath = join(cliDir, '.dist.hstack-build.lock');
|
|
2297
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2298
|
+
await mkdir(dirname(lockPath), { recursive: true });
|
|
2299
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2300
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2301
|
+
|
|
2302
|
+
const env = buildDaemonDistGuardEnv({
|
|
2303
|
+
HAPPIER_TEST_DAEMON_EVENTS_PATH: eventsPath,
|
|
2304
|
+
HAPPIER_STACK_CLI_BUILD: '1',
|
|
2305
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_TIMEOUT_MS: '3000',
|
|
2306
|
+
});
|
|
2307
|
+
const daemonEnv = getDaemonEnv({
|
|
2308
|
+
baseEnv: env,
|
|
2309
|
+
cliHomeDir,
|
|
2310
|
+
internalServerUrl,
|
|
2311
|
+
publicServerUrl,
|
|
2312
|
+
stackName: 'dev',
|
|
2313
|
+
cliIdentity: 'default',
|
|
2314
|
+
});
|
|
2315
|
+
const statePath = resolveStackDaemonStatePaths({
|
|
2316
|
+
cliHomeDir,
|
|
2317
|
+
serverUrl: internalServerUrl,
|
|
2318
|
+
env: daemonEnv,
|
|
2319
|
+
}).serverScopedStatePath;
|
|
2320
|
+
|
|
2321
|
+
await startLocalDaemonWithAuth({
|
|
2322
|
+
cliBin,
|
|
2323
|
+
cliHomeDir,
|
|
2324
|
+
internalServerUrl,
|
|
2325
|
+
publicServerUrl,
|
|
2326
|
+
isShuttingDown: () => false,
|
|
2327
|
+
forceRestart: true,
|
|
2328
|
+
env,
|
|
2329
|
+
stackName: 'dev',
|
|
2330
|
+
cliIdentity: 'default',
|
|
2331
|
+
});
|
|
2332
|
+
daemonPid = await readDaemonPid(statePath);
|
|
2333
|
+
await writeFile(eventsPath, '', 'utf-8');
|
|
2334
|
+
|
|
2335
|
+
await writeFile(
|
|
2336
|
+
lockPath,
|
|
2337
|
+
JSON.stringify({ pid: process.pid, createdAtMs: Date.now(), updatedAtMs: Date.now() }),
|
|
2338
|
+
'utf-8',
|
|
2339
|
+
);
|
|
2340
|
+
const releaseBuildLockAfterDistMove = (async () => {
|
|
2341
|
+
await new Promise((resolve) => setTimeout(resolve, 75));
|
|
2342
|
+
await rm(join(cliDir, '.dist.hstack-backup'), { recursive: true, force: true });
|
|
2343
|
+
await rename(join(cliDir, 'dist'), join(cliDir, '.dist.hstack-backup'));
|
|
2344
|
+
await rm(lockPath, { force: true });
|
|
2345
|
+
})();
|
|
2346
|
+
|
|
2347
|
+
await startLocalDaemonWithAuth({
|
|
2348
|
+
cliBin,
|
|
2349
|
+
cliHomeDir,
|
|
2350
|
+
internalServerUrl,
|
|
2351
|
+
publicServerUrl,
|
|
2352
|
+
isShuttingDown: () => false,
|
|
2353
|
+
forceRestart: true,
|
|
2354
|
+
env,
|
|
2355
|
+
stackName: 'dev',
|
|
2356
|
+
cliIdentity: 'default',
|
|
2357
|
+
});
|
|
2358
|
+
await releaseBuildLockAfterDistMove;
|
|
2359
|
+
|
|
2360
|
+
const events = (await readFile(eventsPath, 'utf-8')).trim().split(/\n+/).filter(Boolean);
|
|
2361
|
+
assert.deepEqual(events, []);
|
|
2362
|
+
assert.doesNotThrow(() => process.kill(daemonPid, 0));
|
|
2363
|
+
assert.equal(await readDaemonPid(statePath), daemonPid);
|
|
2364
|
+
} finally {
|
|
2365
|
+
if (daemonPid) {
|
|
2366
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
2367
|
+
}
|
|
2368
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2369
|
+
}
|
|
2370
|
+
});
|
|
2371
|
+
|
|
2372
|
+
test('startLocalDaemonWithAuth reconciles a stale dist fingerprint through the confirmed overlap owner', async () => {
|
|
2373
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-restart-reconcile-'));
|
|
2374
|
+
let daemonPid = null;
|
|
2375
|
+
try {
|
|
2376
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
2377
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
2378
|
+
const cliBin = await writeSlowStartStubHappyCli({ cliDir });
|
|
2379
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2380
|
+
const statePath = join(cliHomeDir, 'daemon.state.json');
|
|
2381
|
+
const runtimeStatePath = join(tmp, 'stack.runtime.json');
|
|
2382
|
+
await recordStackRuntimeStart(runtimeStatePath, {
|
|
2383
|
+
stackName: 'dev',
|
|
2384
|
+
ownerPid: process.pid,
|
|
2385
|
+
});
|
|
2386
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
2387
|
+
const eventsPath = join(tmp, 'daemon-events.log');
|
|
2388
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2389
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2390
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2391
|
+
|
|
2392
|
+
const env = buildDaemonDistGuardEnv({
|
|
2393
|
+
HAPPIER_TEST_DAEMON_EVENTS_PATH: eventsPath,
|
|
2394
|
+
});
|
|
2395
|
+
|
|
2396
|
+
await startLocalDaemonWithAuth({
|
|
2397
|
+
cliBin,
|
|
2398
|
+
cliHomeDir,
|
|
2399
|
+
internalServerUrl,
|
|
2400
|
+
publicServerUrl,
|
|
2401
|
+
runtimeStatePath,
|
|
2402
|
+
isShuttingDown: () => false,
|
|
2403
|
+
forceRestart: true,
|
|
2404
|
+
env,
|
|
2405
|
+
stackName: 'dev',
|
|
2406
|
+
cliIdentity: 'default',
|
|
2407
|
+
});
|
|
2408
|
+
daemonPid = await readDaemonPid(statePath);
|
|
2409
|
+
await writeFile(eventsPath, '', 'utf-8');
|
|
2410
|
+
await writeDistBuildManifestForTest(distEntrypoint, '1111111111111111');
|
|
2411
|
+
let overlapRestartUsed = false;
|
|
2412
|
+
await startLocalDaemonWithAuth({
|
|
2413
|
+
cliBin,
|
|
2414
|
+
cliHomeDir,
|
|
2415
|
+
internalServerUrl,
|
|
2416
|
+
publicServerUrl,
|
|
2417
|
+
runtimeStatePath,
|
|
2418
|
+
isShuttingDown: () => false,
|
|
2419
|
+
forceRestart: false,
|
|
2420
|
+
env,
|
|
2421
|
+
stackName: 'dev',
|
|
2422
|
+
cliIdentity: 'default',
|
|
2423
|
+
}, {
|
|
2424
|
+
restartDaemonViaControlServerImpl: async (args) => {
|
|
2425
|
+
overlapRestartUsed = true;
|
|
2426
|
+
assert.equal(args.successorDistClosureFingerprint, '1111111111111111');
|
|
2427
|
+
assert.doesNotThrow(() => process.kill(daemonPid, 0));
|
|
2428
|
+
const successorPid = await spawnReplacementDaemonForTest({
|
|
2429
|
+
statePath,
|
|
2430
|
+
previousPid: daemonPid,
|
|
2431
|
+
env: {
|
|
2432
|
+
...getDaemonEnv({
|
|
2433
|
+
baseEnv: env,
|
|
2434
|
+
cliHomeDir,
|
|
2435
|
+
internalServerUrl,
|
|
2436
|
+
publicServerUrl,
|
|
2437
|
+
stackName: 'dev',
|
|
2438
|
+
cliIdentity: 'default',
|
|
2439
|
+
}),
|
|
2440
|
+
HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: args.successorDistClosureFingerprint,
|
|
2441
|
+
},
|
|
2442
|
+
});
|
|
2443
|
+
assert.doesNotThrow(() => process.kill(daemonPid, 0));
|
|
2444
|
+
process.kill(daemonPid, 'SIGTERM');
|
|
2445
|
+
return { status: 'restarting', previousPid: daemonPid, pid: successorPid };
|
|
2446
|
+
},
|
|
2447
|
+
});
|
|
2448
|
+
|
|
2449
|
+
const restartedPid = await readDaemonPid(statePath);
|
|
2450
|
+
assert.equal(overlapRestartUsed, true);
|
|
2451
|
+
assert.notEqual(restartedPid, daemonPid);
|
|
2452
|
+
assert.deepEqual((await readFile(eventsPath, 'utf-8')).trim().split(/\n+/).filter(Boolean), []);
|
|
2453
|
+
assert.equal(
|
|
2454
|
+
JSON.parse(await readFile(runtimeStatePath, 'utf-8')).daemon.distClosureFingerprint,
|
|
2455
|
+
'1111111111111111',
|
|
2456
|
+
);
|
|
2457
|
+
daemonPid = restartedPid;
|
|
2458
|
+
|
|
2459
|
+
await startLocalDaemonWithAuth({
|
|
2460
|
+
cliBin,
|
|
2461
|
+
cliHomeDir,
|
|
2462
|
+
internalServerUrl,
|
|
2463
|
+
publicServerUrl,
|
|
2464
|
+
runtimeStatePath,
|
|
2465
|
+
isShuttingDown: () => false,
|
|
2466
|
+
forceRestart: false,
|
|
2467
|
+
env,
|
|
2468
|
+
stackName: 'dev',
|
|
2469
|
+
cliIdentity: 'default',
|
|
2470
|
+
}, {
|
|
2471
|
+
restartDaemonViaControlServerImpl: async () => {
|
|
2472
|
+
throw new Error('matching fingerprint must not request another overlap restart');
|
|
2473
|
+
},
|
|
2474
|
+
});
|
|
2475
|
+
|
|
2476
|
+
assert.equal(await readDaemonPid(statePath), daemonPid);
|
|
2477
|
+
} finally {
|
|
2478
|
+
if (daemonPid) {
|
|
2479
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
2480
|
+
}
|
|
2481
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2482
|
+
}
|
|
2483
|
+
});
|
|
2484
|
+
|
|
2485
|
+
test('startLocalDaemonWithAuth preserves the old daemon when stale-dist overlap restart fails', async () => {
|
|
2486
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-restart-failure-'));
|
|
2487
|
+
let daemonPid = null;
|
|
2488
|
+
try {
|
|
2489
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
2490
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
2491
|
+
const cliBin = await writeSlowStartStubHappyCli({ cliDir });
|
|
2492
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2493
|
+
const statePath = join(cliHomeDir, 'daemon.state.json');
|
|
2494
|
+
const runtimeStatePath = join(tmp, 'stack.runtime.json');
|
|
2495
|
+
const eventsPath = join(tmp, 'daemon-events.log');
|
|
2496
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
2497
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2498
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2499
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2500
|
+
const env = buildDaemonDistGuardEnv({ HAPPIER_TEST_DAEMON_EVENTS_PATH: eventsPath });
|
|
2501
|
+
|
|
2502
|
+
await startLocalDaemonWithAuth({
|
|
2503
|
+
cliBin,
|
|
2504
|
+
cliHomeDir,
|
|
2505
|
+
internalServerUrl,
|
|
2506
|
+
publicServerUrl,
|
|
2507
|
+
runtimeStatePath,
|
|
2508
|
+
isShuttingDown: () => false,
|
|
2509
|
+
forceRestart: true,
|
|
2510
|
+
env,
|
|
2511
|
+
stackName: 'dev',
|
|
2512
|
+
cliIdentity: 'default',
|
|
2513
|
+
});
|
|
2514
|
+
daemonPid = await readDaemonPid(statePath);
|
|
2515
|
+
await writeFile(eventsPath, '', 'utf-8');
|
|
2516
|
+
await writeDistBuildManifestForTest(distEntrypoint, '2222222222222222');
|
|
351
2517
|
|
|
352
|
-
|
|
353
|
-
|
|
2518
|
+
await assert.rejects(
|
|
2519
|
+
() => startLocalDaemonWithAuth({
|
|
2520
|
+
cliBin,
|
|
2521
|
+
cliHomeDir,
|
|
2522
|
+
internalServerUrl,
|
|
2523
|
+
publicServerUrl,
|
|
2524
|
+
runtimeStatePath,
|
|
2525
|
+
isShuttingDown: () => false,
|
|
2526
|
+
forceRestart: false,
|
|
2527
|
+
env,
|
|
2528
|
+
stackName: 'dev',
|
|
2529
|
+
cliIdentity: 'default',
|
|
2530
|
+
}, {
|
|
2531
|
+
restartDaemonViaControlServerImpl: async () => {
|
|
2532
|
+
throw new Error('replacement not confirmed');
|
|
2533
|
+
},
|
|
2534
|
+
}),
|
|
2535
|
+
/stale runtime.*keeping the existing daemon running.*replacement not confirmed/i,
|
|
2536
|
+
);
|
|
2537
|
+
|
|
2538
|
+
assert.equal(await readDaemonPid(statePath), daemonPid);
|
|
2539
|
+
assert.doesNotThrow(() => process.kill(daemonPid, 0));
|
|
2540
|
+
assert.deepEqual((await readFile(eventsPath, 'utf-8')).trim().split(/\n+/).filter(Boolean), []);
|
|
2541
|
+
} finally {
|
|
2542
|
+
if (daemonPid) {
|
|
2543
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
2544
|
+
}
|
|
2545
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2546
|
+
}
|
|
2547
|
+
});
|
|
2548
|
+
|
|
2549
|
+
test('startLocalDaemonWithAuth reconciles an initial healthy mismatch during preserve-existing fallback', async () => {
|
|
2550
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-preserve-mismatch-'));
|
|
2551
|
+
let daemonPid = null;
|
|
354
2552
|
try {
|
|
355
2553
|
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
356
2554
|
const cliDir = join(tmp, 'apps', 'cli');
|
|
357
2555
|
const cliBin = await writeStubHappyCli({ cliDir });
|
|
358
|
-
await writeFile(join(tmp, 'package.json'), '{}\n', 'utf-8');
|
|
359
|
-
runGit(['init'], tmp);
|
|
360
|
-
runGit(['config', 'user.email', 'test@example.com'], tmp);
|
|
361
|
-
runGit(['config', 'user.name', 'Test User'], tmp);
|
|
362
|
-
runGit(['add', '.'], tmp);
|
|
363
|
-
runGit(['commit', '-m', 'init'], tmp);
|
|
364
|
-
|
|
365
2556
|
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2557
|
+
const statePath = join(cliHomeDir, 'daemon.state.json');
|
|
2558
|
+
const runtimeStatePath = join(tmp, 'stack.runtime.json');
|
|
2559
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
2560
|
+
const currentFingerprint = JSON.parse(
|
|
2561
|
+
await readFile(join(dirname(distEntrypoint), '.build-manifest.json'), 'utf-8'),
|
|
2562
|
+
).fingerprint;
|
|
2563
|
+
const existingFingerprint = currentFingerprint === '0000000000000000'
|
|
2564
|
+
? '1111111111111111'
|
|
2565
|
+
: '0000000000000000';
|
|
366
2566
|
await mkdir(cliHomeDir, { recursive: true });
|
|
367
2567
|
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
368
2568
|
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
369
2569
|
|
|
370
|
-
const env = buildDaemonDistGuardEnv(
|
|
371
|
-
|
|
2570
|
+
const env = buildDaemonDistGuardEnv();
|
|
2571
|
+
daemonPid = await spawnReplacementDaemonForTest({
|
|
2572
|
+
statePath,
|
|
2573
|
+
previousPid: null,
|
|
2574
|
+
env: {
|
|
2575
|
+
...getDaemonEnv({
|
|
2576
|
+
baseEnv: env,
|
|
2577
|
+
cliHomeDir,
|
|
2578
|
+
internalServerUrl,
|
|
2579
|
+
publicServerUrl,
|
|
2580
|
+
stackName: 'dev',
|
|
2581
|
+
cliIdentity: 'default',
|
|
2582
|
+
}),
|
|
2583
|
+
HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: existingFingerprint,
|
|
2584
|
+
},
|
|
372
2585
|
});
|
|
2586
|
+
await writeFile(
|
|
2587
|
+
runtimeStatePath,
|
|
2588
|
+
JSON.stringify({
|
|
2589
|
+
version: 1,
|
|
2590
|
+
stackName: 'dev',
|
|
2591
|
+
processes: { daemonPid, daemonPids: [daemonPid] },
|
|
2592
|
+
daemon: { distClosureFingerprint: existingFingerprint },
|
|
2593
|
+
}) + '\n',
|
|
2594
|
+
'utf-8',
|
|
2595
|
+
);
|
|
373
2596
|
|
|
374
|
-
|
|
2597
|
+
let overlapRestartUsed = false;
|
|
375
2598
|
await startLocalDaemonWithAuth({
|
|
376
2599
|
cliBin,
|
|
377
2600
|
cliHomeDir,
|
|
378
2601
|
internalServerUrl,
|
|
379
2602
|
publicServerUrl,
|
|
2603
|
+
runtimeStatePath,
|
|
380
2604
|
isShuttingDown: () => false,
|
|
381
|
-
forceRestart:
|
|
2605
|
+
forceRestart: false,
|
|
2606
|
+
preserveExistingRunning: true,
|
|
382
2607
|
env,
|
|
383
2608
|
stackName: 'dev',
|
|
384
2609
|
cliIdentity: 'default',
|
|
2610
|
+
}, {
|
|
2611
|
+
restartDaemonViaControlServerImpl: async (args) => {
|
|
2612
|
+
overlapRestartUsed = true;
|
|
2613
|
+
assert.equal(args.successorDistClosureFingerprint, currentFingerprint);
|
|
2614
|
+
assert.doesNotThrow(() => process.kill(daemonPid, 0));
|
|
2615
|
+
const successorPid = await spawnReplacementDaemonForTest({
|
|
2616
|
+
statePath,
|
|
2617
|
+
previousPid: daemonPid,
|
|
2618
|
+
env: {
|
|
2619
|
+
...getDaemonEnv({
|
|
2620
|
+
baseEnv: env,
|
|
2621
|
+
cliHomeDir,
|
|
2622
|
+
internalServerUrl,
|
|
2623
|
+
publicServerUrl,
|
|
2624
|
+
stackName: 'dev',
|
|
2625
|
+
cliIdentity: 'default',
|
|
2626
|
+
}),
|
|
2627
|
+
HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: currentFingerprint,
|
|
2628
|
+
},
|
|
2629
|
+
});
|
|
2630
|
+
process.kill(daemonPid, 'SIGTERM');
|
|
2631
|
+
return { status: 'restarting', previousPid: daemonPid, pid: successorPid };
|
|
2632
|
+
},
|
|
385
2633
|
});
|
|
386
2634
|
|
|
387
|
-
|
|
2635
|
+
assert.equal(overlapRestartUsed, true);
|
|
2636
|
+
daemonPid = await readDaemonPid(statePath);
|
|
2637
|
+
const runtimeState = JSON.parse(await readFile(runtimeStatePath, 'utf-8'));
|
|
2638
|
+
assert.equal(runtimeState.processes.daemonPid, daemonPid);
|
|
2639
|
+
assert.equal(runtimeState.daemon.distClosureFingerprint, currentFingerprint);
|
|
2640
|
+
} finally {
|
|
2641
|
+
if (daemonPid) {
|
|
2642
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
2643
|
+
}
|
|
2644
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2645
|
+
}
|
|
2646
|
+
});
|
|
2647
|
+
|
|
2648
|
+
test('startLocalDaemonWithAuth reconciles a mismatched daemon adopted during cold-start verification', async () => {
|
|
2649
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-cold-adoption-'));
|
|
2650
|
+
let daemonPid = null;
|
|
2651
|
+
try {
|
|
2652
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
2653
|
+
const cliDir = join(tmp, 'apps', 'cli');
|
|
2654
|
+
const cliBin = await writeStubHappyCli({ cliDir });
|
|
2655
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2656
|
+
const statePath = join(cliHomeDir, 'daemon.state.json');
|
|
2657
|
+
const runtimeStatePath = join(tmp, 'stack.runtime.json');
|
|
2658
|
+
await recordStackRuntimeStart(runtimeStatePath, {
|
|
2659
|
+
stackName: 'dev',
|
|
2660
|
+
ownerPid: process.pid,
|
|
2661
|
+
});
|
|
2662
|
+
const distEntrypoint = join(cliDir, 'dist', 'index.mjs');
|
|
2663
|
+
const currentFingerprint = JSON.parse(
|
|
2664
|
+
await readFile(join(dirname(distEntrypoint), '.build-manifest.json'), 'utf-8'),
|
|
2665
|
+
).fingerprint;
|
|
2666
|
+
const adoptedFingerprint = currentFingerprint === '0000000000000000'
|
|
2667
|
+
? '1111111111111111'
|
|
2668
|
+
: '0000000000000000';
|
|
2669
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2670
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2671
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2672
|
+
|
|
2673
|
+
const env = buildDaemonDistGuardEnv({
|
|
2674
|
+
HAPPIER_TEST_DAEMON_CHILD_DIST_FINGERPRINT: adoptedFingerprint,
|
|
2675
|
+
HAPPIER_STACK_DAEMON_START_VERIFY_STABLE_MS: '0',
|
|
2676
|
+
});
|
|
2677
|
+
let overlapRestartUsed = false;
|
|
2678
|
+
|
|
2679
|
+
await startLocalDaemonWithAuth({
|
|
388
2680
|
cliBin,
|
|
389
|
-
internalServerUrl,
|
|
390
2681
|
cliHomeDir,
|
|
2682
|
+
internalServerUrl,
|
|
2683
|
+
publicServerUrl,
|
|
2684
|
+
runtimeStatePath,
|
|
2685
|
+
isShuttingDown: () => false,
|
|
2686
|
+
forceRestart: false,
|
|
2687
|
+
preserveExistingRunning: true,
|
|
2688
|
+
env,
|
|
2689
|
+
stackName: 'dev',
|
|
2690
|
+
cliIdentity: 'default',
|
|
2691
|
+
}, {
|
|
2692
|
+
restartDaemonViaControlServerImpl: async (args) => {
|
|
2693
|
+
overlapRestartUsed = true;
|
|
2694
|
+
assert.equal(args.successorDistClosureFingerprint, currentFingerprint);
|
|
2695
|
+
const adoptedPid = await readDaemonPid(statePath);
|
|
2696
|
+
assert.doesNotThrow(() => process.kill(adoptedPid, 0));
|
|
2697
|
+
const successorPid = await spawnReplacementDaemonForTest({
|
|
2698
|
+
statePath,
|
|
2699
|
+
previousPid: adoptedPid,
|
|
2700
|
+
env: {
|
|
2701
|
+
...getDaemonEnv({
|
|
2702
|
+
baseEnv: env,
|
|
2703
|
+
cliHomeDir,
|
|
2704
|
+
internalServerUrl,
|
|
2705
|
+
publicServerUrl,
|
|
2706
|
+
stackName: 'dev',
|
|
2707
|
+
cliIdentity: 'default',
|
|
2708
|
+
}),
|
|
2709
|
+
HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: currentFingerprint,
|
|
2710
|
+
},
|
|
2711
|
+
});
|
|
2712
|
+
process.kill(adoptedPid, 'SIGTERM');
|
|
2713
|
+
return { status: 'restarting', previousPid: adoptedPid, pid: successorPid };
|
|
2714
|
+
},
|
|
391
2715
|
});
|
|
392
2716
|
|
|
393
|
-
assert.
|
|
2717
|
+
assert.equal(overlapRestartUsed, true);
|
|
2718
|
+
daemonPid = await readDaemonPid(statePath);
|
|
2719
|
+
assert.equal(
|
|
2720
|
+
JSON.parse(await readFile(runtimeStatePath, 'utf-8')).daemon.distClosureFingerprint,
|
|
2721
|
+
currentFingerprint,
|
|
2722
|
+
);
|
|
394
2723
|
} finally {
|
|
2724
|
+
if (daemonPid) {
|
|
2725
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
2726
|
+
}
|
|
395
2727
|
await rm(tmp, { recursive: true, force: true });
|
|
396
2728
|
}
|
|
397
2729
|
});
|
|
@@ -409,6 +2741,7 @@ test('startLocalDaemonWithAuth rejects incomplete dist when index imports missin
|
|
|
409
2741
|
"import './doctor-missing-chunk.mjs';\nexport {};\n",
|
|
410
2742
|
'utf-8',
|
|
411
2743
|
);
|
|
2744
|
+
await rm(join(cliDir, 'dist', '.build-manifest.json'), { force: true });
|
|
412
2745
|
|
|
413
2746
|
await writeFile(join(tmp, 'package.json'), '{}\n', 'utf-8');
|
|
414
2747
|
runGit(['init'], tmp);
|
|
@@ -423,6 +2756,8 @@ test('startLocalDaemonWithAuth rejects incomplete dist when index imports missin
|
|
|
423
2756
|
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
424
2757
|
|
|
425
2758
|
const env = buildDaemonDistGuardEnv({
|
|
2759
|
+
HAPPIER_STACK_REPO_DIR: tmp,
|
|
2760
|
+
HAPPIER_STACK_CLI_ROOT_DIR: tmp,
|
|
426
2761
|
HAPPIER_STACK_CLI_BUILD: '0',
|
|
427
2762
|
});
|
|
428
2763
|
|
|
@@ -439,13 +2774,95 @@ test('startLocalDaemonWithAuth rejects incomplete dist when index imports missin
|
|
|
439
2774
|
stackName: 'dev',
|
|
440
2775
|
cliIdentity: 'default',
|
|
441
2776
|
}),
|
|
442
|
-
|
|
2777
|
+
(error) => error?.code === 'ECLIDISTSTALECOLDSTART',
|
|
443
2778
|
);
|
|
444
2779
|
} finally {
|
|
445
2780
|
await rm(tmp, { recursive: true, force: true });
|
|
446
2781
|
}
|
|
447
2782
|
});
|
|
448
2783
|
|
|
2784
|
+
test('resolveGuardedLocalCliDistEntrypoint rejects local dist outside the active CLI directory', async () => {
|
|
2785
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-active-dist-guard-'));
|
|
2786
|
+
try {
|
|
2787
|
+
const activeCliDir = join(tmp, 'active', 'apps', 'cli');
|
|
2788
|
+
const staleCliDir = join(tmp, 'T', 'hstack-runtime-start-fixture-stale', 'apps', 'cli');
|
|
2789
|
+
const activeCliBin = await writeStubHappyCli({ cliDir: activeCliDir });
|
|
2790
|
+
const staleCliBin = await writeStubHappyCli({ cliDir: staleCliDir });
|
|
2791
|
+
|
|
2792
|
+
const accepted = resolveGuardedLocalCliDistEntrypoint({
|
|
2793
|
+
cliBin: activeCliBin,
|
|
2794
|
+
activeCliDir,
|
|
2795
|
+
});
|
|
2796
|
+
assert.equal(accepted.ok, true);
|
|
2797
|
+
assert.equal(accepted.distEntrypoint, join(activeCliDir, 'dist', 'index.mjs'));
|
|
2798
|
+
|
|
2799
|
+
const rejected = resolveGuardedLocalCliDistEntrypoint({
|
|
2800
|
+
cliBin: staleCliBin,
|
|
2801
|
+
activeCliDir,
|
|
2802
|
+
});
|
|
2803
|
+
assert.equal(rejected.ok, false);
|
|
2804
|
+
assert.match(rejected.reason, /outside_active_cli_dir/);
|
|
2805
|
+
} finally {
|
|
2806
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2807
|
+
}
|
|
2808
|
+
});
|
|
2809
|
+
|
|
2810
|
+
test('resolveGuardedLocalCliDistEntrypoint rejects symlinked active dist outside the active CLI directory', async () => {
|
|
2811
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-active-dist-symlink-'));
|
|
2812
|
+
try {
|
|
2813
|
+
const activeCliDir = join(tmp, 'active', 'apps', 'cli');
|
|
2814
|
+
const staleCliDir = join(tmp, 'T', 'hstack-runtime-start-fixture-stale', 'apps', 'cli');
|
|
2815
|
+
const activeCliBin = await writeStubHappyCli({ cliDir: activeCliDir });
|
|
2816
|
+
await writeStubHappyCli({ cliDir: staleCliDir });
|
|
2817
|
+
|
|
2818
|
+
await rm(join(activeCliDir, 'dist'), { recursive: true, force: true });
|
|
2819
|
+
await symlink(join(staleCliDir, 'dist'), join(activeCliDir, 'dist'), 'dir');
|
|
2820
|
+
|
|
2821
|
+
const rejected = resolveGuardedLocalCliDistEntrypoint({
|
|
2822
|
+
cliBin: activeCliBin,
|
|
2823
|
+
activeCliDir,
|
|
2824
|
+
});
|
|
2825
|
+
assert.equal(rejected.ok, false);
|
|
2826
|
+
assert.match(rejected.reason, /outside_active_cli_dir/);
|
|
2827
|
+
} finally {
|
|
2828
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2829
|
+
}
|
|
2830
|
+
});
|
|
2831
|
+
|
|
2832
|
+
test('createDaemonStartAttemptLogPath prunes old start-attempt logs while keeping the current one', async () => {
|
|
2833
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-start-attempt-prune-'));
|
|
2834
|
+
try {
|
|
2835
|
+
const cliHomeDir = join(tmp, 'cli-home');
|
|
2836
|
+
const logsDir = join(cliHomeDir, 'logs');
|
|
2837
|
+
await mkdir(logsDir, { recursive: true });
|
|
2838
|
+
for (let index = 0; index < 4; index += 1) {
|
|
2839
|
+
await writeFile(
|
|
2840
|
+
join(logsDir, `2026-06-30-10-00-0${index}-pid-100-daemon-start-attempt.log`),
|
|
2841
|
+
`old ${index}\n`,
|
|
2842
|
+
'utf-8',
|
|
2843
|
+
);
|
|
2844
|
+
}
|
|
2845
|
+
|
|
2846
|
+
const currentPath = await createDaemonStartAttemptLogPath({
|
|
2847
|
+
cliHomeDir,
|
|
2848
|
+
nowMs: Date.parse('2026-06-30T10:01:00.000Z'),
|
|
2849
|
+
pid: 200,
|
|
2850
|
+
keepCount: 2,
|
|
2851
|
+
});
|
|
2852
|
+
|
|
2853
|
+
const remaining = (await readdir(logsDir))
|
|
2854
|
+
.filter((file) => file.endsWith('-daemon-start-attempt.log'))
|
|
2855
|
+
.sort();
|
|
2856
|
+
assert.equal(currentPath, join(logsDir, '2026-06-30-10-01-00-pid-200-daemon-start-attempt.log'));
|
|
2857
|
+
assert.deepEqual(remaining, [
|
|
2858
|
+
'2026-06-30-10-00-03-pid-100-daemon-start-attempt.log',
|
|
2859
|
+
'2026-06-30-10-01-00-pid-200-daemon-start-attempt.log',
|
|
2860
|
+
]);
|
|
2861
|
+
} finally {
|
|
2862
|
+
await rm(tmp, { recursive: true, force: true });
|
|
2863
|
+
}
|
|
2864
|
+
});
|
|
2865
|
+
|
|
449
2866
|
test('startLocalDaemonWithAuth accepts a runtime snapshot cli executable without requiring dist/index.mjs', async () => {
|
|
450
2867
|
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-runtime-cli-'));
|
|
451
2868
|
try {
|
|
@@ -490,8 +2907,15 @@ test('startLocalDaemonWithAuth prefers a runtime snapshot node entrypoint over t
|
|
|
490
2907
|
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
491
2908
|
const snapshotDir = join(tmp, 'runtime', 'builds', 'snap-auth');
|
|
492
2909
|
const { cliBin, cliNodeEntrypoint } = await writeRuntimeSnapshotHappyCliWithNodeEntrypoint({ snapshotDir });
|
|
2910
|
+
const admittedFingerprint = 'abc123def4567890';
|
|
2911
|
+
await writeFile(
|
|
2912
|
+
join(dirname(cliNodeEntrypoint), '.build-manifest.json'),
|
|
2913
|
+
JSON.stringify({ fingerprint: admittedFingerprint, fileCount: 1 }) + '\n',
|
|
2914
|
+
'utf-8',
|
|
2915
|
+
);
|
|
493
2916
|
|
|
494
2917
|
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2918
|
+
const runtimeStatePath = join(tmp, 'stack', 'stack.runtime.json');
|
|
495
2919
|
await mkdir(cliHomeDir, { recursive: true });
|
|
496
2920
|
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
497
2921
|
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
@@ -509,7 +2933,16 @@ test('startLocalDaemonWithAuth prefers a runtime snapshot node entrypoint over t
|
|
|
509
2933
|
}),
|
|
510
2934
|
stackName: 'dev',
|
|
511
2935
|
cliIdentity: 'default',
|
|
2936
|
+
runtimeStatePath,
|
|
2937
|
+
runtimeBacked: true,
|
|
2938
|
+
admittedDistClosureFingerprint: admittedFingerprint,
|
|
2939
|
+
});
|
|
2940
|
+
|
|
2941
|
+
const authenticated = await checkDaemonStatePingAware(cliHomeDir, {
|
|
2942
|
+
serverUrl: internalServerUrl,
|
|
2943
|
+
env: buildDaemonDistGuardEnv(),
|
|
512
2944
|
});
|
|
2945
|
+
assert.equal(authenticated.distClosureFingerprint, admittedFingerprint);
|
|
513
2946
|
|
|
514
2947
|
await stopLocalDaemon({
|
|
515
2948
|
cliBin,
|
|
@@ -524,6 +2957,196 @@ test('startLocalDaemonWithAuth prefers a runtime snapshot node entrypoint over t
|
|
|
524
2957
|
}
|
|
525
2958
|
});
|
|
526
2959
|
|
|
2960
|
+
test('startLocalDaemonWithAuth preserve-existing runtime adoption replaces a daemon with missing authenticated identity despite projection B', async () => {
|
|
2961
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-runtime-adoption-mismatch-'));
|
|
2962
|
+
let daemonPid = null;
|
|
2963
|
+
try {
|
|
2964
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
2965
|
+
const snapshotDir = join(tmp, 'runtime', 'builds', 'snap-b');
|
|
2966
|
+
const { cliBin, cliNodeEntrypoint } = await writeRuntimeSnapshotHappyCliWithNodeEntrypoint({ snapshotDir });
|
|
2967
|
+
const admittedFingerprint = 'bbbbbbbbbbbbbbbb';
|
|
2968
|
+
await writeDistBuildManifestForTest(cliNodeEntrypoint, admittedFingerprint);
|
|
2969
|
+
|
|
2970
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
2971
|
+
const statePath = join(cliHomeDir, 'daemon.state.json');
|
|
2972
|
+
const runtimeStatePath = join(tmp, 'stack', 'stack.runtime.json');
|
|
2973
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
2974
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
2975
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
2976
|
+
await recordStackRuntimeStart(runtimeStatePath, {
|
|
2977
|
+
stackName: 'dev',
|
|
2978
|
+
ownerPid: process.pid,
|
|
2979
|
+
daemon: { distClosureFingerprint: admittedFingerprint },
|
|
2980
|
+
});
|
|
2981
|
+
|
|
2982
|
+
const env = buildDaemonDistGuardEnv({ HAPPIER_STACK_CLI_BUILD: '0' });
|
|
2983
|
+
daemonPid = await spawnReplacementDaemonForTest({
|
|
2984
|
+
statePath,
|
|
2985
|
+
previousPid: null,
|
|
2986
|
+
env: {
|
|
2987
|
+
...getDaemonEnv({
|
|
2988
|
+
baseEnv: env,
|
|
2989
|
+
cliHomeDir,
|
|
2990
|
+
internalServerUrl,
|
|
2991
|
+
publicServerUrl,
|
|
2992
|
+
stackName: 'dev',
|
|
2993
|
+
cliIdentity: 'default',
|
|
2994
|
+
}),
|
|
2995
|
+
},
|
|
2996
|
+
});
|
|
2997
|
+
|
|
2998
|
+
let replacementCount = 0;
|
|
2999
|
+
await startLocalDaemonWithAuth({
|
|
3000
|
+
cliBin,
|
|
3001
|
+
cliCommand: cliBin,
|
|
3002
|
+
cliNodeEntrypoint,
|
|
3003
|
+
cliHomeDir,
|
|
3004
|
+
internalServerUrl,
|
|
3005
|
+
publicServerUrl,
|
|
3006
|
+
runtimeStatePath,
|
|
3007
|
+
isShuttingDown: () => false,
|
|
3008
|
+
forceRestart: false,
|
|
3009
|
+
preserveExistingRunning: true,
|
|
3010
|
+
env,
|
|
3011
|
+
stackName: 'dev',
|
|
3012
|
+
cliIdentity: 'default',
|
|
3013
|
+
runtimeBacked: true,
|
|
3014
|
+
admittedDistClosureFingerprint: admittedFingerprint,
|
|
3015
|
+
}, {
|
|
3016
|
+
restartDaemonViaControlServerImpl: async (args) => {
|
|
3017
|
+
replacementCount += 1;
|
|
3018
|
+
assert.equal(args.successorDistClosureFingerprint, admittedFingerprint);
|
|
3019
|
+
const successorPid = await spawnReplacementDaemonForTest({
|
|
3020
|
+
statePath,
|
|
3021
|
+
previousPid: daemonPid,
|
|
3022
|
+
env: {
|
|
3023
|
+
...getDaemonEnv({
|
|
3024
|
+
baseEnv: env,
|
|
3025
|
+
cliHomeDir,
|
|
3026
|
+
internalServerUrl,
|
|
3027
|
+
publicServerUrl,
|
|
3028
|
+
stackName: 'dev',
|
|
3029
|
+
cliIdentity: 'default',
|
|
3030
|
+
}),
|
|
3031
|
+
HAPPIER_CLI_SUBPROCESS_DAEMON_DIST_CLOSURE_FINGERPRINT: admittedFingerprint,
|
|
3032
|
+
},
|
|
3033
|
+
});
|
|
3034
|
+
process.kill(daemonPid, 'SIGTERM');
|
|
3035
|
+
return { status: 'restarting', previousPid: daemonPid, pid: successorPid };
|
|
3036
|
+
},
|
|
3037
|
+
});
|
|
3038
|
+
|
|
3039
|
+
assert.equal(replacementCount, 1, 'missing authenticated identity must not be adopted or projected as closure B');
|
|
3040
|
+
daemonPid = await readDaemonPid(statePath);
|
|
3041
|
+
|
|
3042
|
+
await startLocalDaemonWithAuth({
|
|
3043
|
+
cliBin,
|
|
3044
|
+
cliCommand: cliBin,
|
|
3045
|
+
cliNodeEntrypoint,
|
|
3046
|
+
cliHomeDir,
|
|
3047
|
+
internalServerUrl,
|
|
3048
|
+
publicServerUrl,
|
|
3049
|
+
runtimeStatePath,
|
|
3050
|
+
isShuttingDown: () => false,
|
|
3051
|
+
forceRestart: false,
|
|
3052
|
+
env,
|
|
3053
|
+
stackName: 'dev',
|
|
3054
|
+
cliIdentity: 'default',
|
|
3055
|
+
runtimeBacked: true,
|
|
3056
|
+
admittedDistClosureFingerprint: admittedFingerprint,
|
|
3057
|
+
}, {
|
|
3058
|
+
restartDaemonViaControlServerImpl: async () => {
|
|
3059
|
+
throw new Error('matching admitted closure must remain adopted');
|
|
3060
|
+
},
|
|
3061
|
+
});
|
|
3062
|
+
|
|
3063
|
+
assert.equal(await readDaemonPid(statePath), daemonPid);
|
|
3064
|
+
} finally {
|
|
3065
|
+
if (daemonPid) {
|
|
3066
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
3067
|
+
}
|
|
3068
|
+
await rm(tmp, { recursive: true, force: true });
|
|
3069
|
+
}
|
|
3070
|
+
});
|
|
3071
|
+
|
|
3072
|
+
test('startLocalDaemonWithAuth fails closed on an unreachable runtime-backed daemon without changing its projected identity', async () => {
|
|
3073
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-runtime-unreachable-'));
|
|
3074
|
+
const admittedFingerprint = 'bbbbbbbbbbbbbbbb';
|
|
3075
|
+
const priorFingerprint = 'aaaaaaaaaaaaaaaa';
|
|
3076
|
+
let daemonPid = null;
|
|
3077
|
+
try {
|
|
3078
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
3079
|
+
const snapshotDir = join(tmp, 'runtime', 'builds', 'snap-b');
|
|
3080
|
+
const { cliBin, cliNodeEntrypoint } = await writeRuntimeSnapshotHappyCliWithNodeEntrypoint({ snapshotDir });
|
|
3081
|
+
await writeDistBuildManifestForTest(cliNodeEntrypoint, admittedFingerprint);
|
|
3082
|
+
|
|
3083
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
3084
|
+
const statePath = join(cliHomeDir, 'daemon.state.json');
|
|
3085
|
+
const runtimeStatePath = join(tmp, 'stack', 'stack.runtime.json');
|
|
3086
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
3087
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
3088
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
3089
|
+
await recordStackRuntimeStart(runtimeStatePath, {
|
|
3090
|
+
stackName: 'dev',
|
|
3091
|
+
ownerPid: process.pid,
|
|
3092
|
+
daemon: { distClosureFingerprint: priorFingerprint },
|
|
3093
|
+
});
|
|
3094
|
+
|
|
3095
|
+
const env = buildDaemonDistGuardEnv({ HAPPIER_STACK_CLI_BUILD: '0' });
|
|
3096
|
+
const daemonEnv = getDaemonEnv({
|
|
3097
|
+
baseEnv: env,
|
|
3098
|
+
cliHomeDir,
|
|
3099
|
+
internalServerUrl,
|
|
3100
|
+
publicServerUrl,
|
|
3101
|
+
stackName: 'dev',
|
|
3102
|
+
cliIdentity: 'default',
|
|
3103
|
+
});
|
|
3104
|
+
daemonPid = await spawnUnreachableDaemonForTest({ statePath, env: daemonEnv });
|
|
3105
|
+
const observed = await checkDaemonStatePingAware(cliHomeDir, {
|
|
3106
|
+
serverUrl: internalServerUrl,
|
|
3107
|
+
env: daemonEnv,
|
|
3108
|
+
pingTimeoutMs: 50,
|
|
3109
|
+
});
|
|
3110
|
+
assert.equal(observed.status, 'unreachable');
|
|
3111
|
+
|
|
3112
|
+
let replacementAttempted = false;
|
|
3113
|
+
await assert.rejects(
|
|
3114
|
+
() => startLocalDaemonWithAuth({
|
|
3115
|
+
cliBin,
|
|
3116
|
+
cliCommand: cliBin,
|
|
3117
|
+
cliNodeEntrypoint,
|
|
3118
|
+
cliHomeDir,
|
|
3119
|
+
internalServerUrl,
|
|
3120
|
+
publicServerUrl,
|
|
3121
|
+
runtimeStatePath,
|
|
3122
|
+
isShuttingDown: () => false,
|
|
3123
|
+
forceRestart: false,
|
|
3124
|
+
env,
|
|
3125
|
+
stackName: 'dev',
|
|
3126
|
+
cliIdentity: 'default',
|
|
3127
|
+
runtimeBacked: true,
|
|
3128
|
+
admittedDistClosureFingerprint: admittedFingerprint,
|
|
3129
|
+
}, {
|
|
3130
|
+
restartDaemonViaControlServerImpl: async () => {
|
|
3131
|
+
replacementAttempted = true;
|
|
3132
|
+
throw new Error('unreachable control ownership must not attempt replacement');
|
|
3133
|
+
},
|
|
3134
|
+
}),
|
|
3135
|
+
(error) => error?.code === 'EIMMUTABLERUNTIMEDAEMONIDENTITY',
|
|
3136
|
+
);
|
|
3137
|
+
|
|
3138
|
+
assert.equal(replacementAttempted, false);
|
|
3139
|
+
assert.doesNotThrow(() => process.kill(daemonPid, 0));
|
|
3140
|
+
const projected = JSON.parse(await readFile(runtimeStatePath, 'utf-8'));
|
|
3141
|
+
assert.equal(projected.daemon.distClosureFingerprint, priorFingerprint);
|
|
3142
|
+
} finally {
|
|
3143
|
+
if (daemonPid) {
|
|
3144
|
+
try { process.kill(daemonPid, 'SIGTERM'); } catch {}
|
|
3145
|
+
}
|
|
3146
|
+
await rm(tmp, { recursive: true, force: true });
|
|
3147
|
+
}
|
|
3148
|
+
});
|
|
3149
|
+
|
|
527
3150
|
test('startLocalDaemonWithAuth still prefers a runtime snapshot node entrypoint when the host runtime is bun', async () => {
|
|
528
3151
|
const restoreProcessReleaseName = overrideProcessReleaseNameForTest('bun');
|
|
529
3152
|
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-runtime-bun-node-entrypoint-'));
|
|
@@ -761,3 +3384,83 @@ test('startLocalDaemonWithAuth kills the daemon from daemon.state.json when daem
|
|
|
761
3384
|
await rm(tmp, { recursive: true, force: true });
|
|
762
3385
|
}
|
|
763
3386
|
});
|
|
3387
|
+
|
|
3388
|
+
test('startLocalDaemonWithAuth preserves exact daemon publication bytes until the replacement CLI starts', async () => {
|
|
3389
|
+
const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-owner-publication-'));
|
|
3390
|
+
try {
|
|
3391
|
+
const { internalServerUrl, publicServerUrl } = await reserveLoopbackServerUrls();
|
|
3392
|
+
const cliHomeDir = join(tmp, 'stack', 'cli');
|
|
3393
|
+
const binDir = join(tmp, 'bin');
|
|
3394
|
+
const observationPath = join(tmp, 'pre-start-publication.json');
|
|
3395
|
+
const env = buildDaemonDistGuardEnv({
|
|
3396
|
+
HAPPIER_STACK_CLI_BUILD: '0',
|
|
3397
|
+
PATH: `${binDir}:${process.env.PATH ?? ''}`,
|
|
3398
|
+
});
|
|
3399
|
+
const daemonEnv = getDaemonEnv({
|
|
3400
|
+
baseEnv: env,
|
|
3401
|
+
cliHomeDir,
|
|
3402
|
+
internalServerUrl,
|
|
3403
|
+
publicServerUrl,
|
|
3404
|
+
stackName: 'dev',
|
|
3405
|
+
cliIdentity: 'default',
|
|
3406
|
+
});
|
|
3407
|
+
const {
|
|
3408
|
+
serverScopedStatePath: statePath,
|
|
3409
|
+
serverScopedLockPath: lockPath,
|
|
3410
|
+
} = resolveStackDaemonStatePaths({
|
|
3411
|
+
cliHomeDir,
|
|
3412
|
+
serverUrl: internalServerUrl,
|
|
3413
|
+
env: daemonEnv,
|
|
3414
|
+
});
|
|
3415
|
+
const stateRaw = JSON.stringify({
|
|
3416
|
+
pid: 999999,
|
|
3417
|
+
httpPort: 4321,
|
|
3418
|
+
startTime: '2026-07-30T12:00:00.000Z',
|
|
3419
|
+
marker: 'exact-predecessor-publication',
|
|
3420
|
+
}) + '\n';
|
|
3421
|
+
const lockRaw = '999999\n';
|
|
3422
|
+
const { cliCommand } = await writePathResolvedRuntimeCommand({
|
|
3423
|
+
binDir,
|
|
3424
|
+
stopMode: 'noop',
|
|
3425
|
+
preStartObservationPath: observationPath,
|
|
3426
|
+
preStartStatePath: statePath,
|
|
3427
|
+
preStartLockPath: lockPath,
|
|
3428
|
+
});
|
|
3429
|
+
|
|
3430
|
+
await mkdir(cliHomeDir, { recursive: true });
|
|
3431
|
+
await writeFile(join(cliHomeDir, 'access.key'), 'dummy\n', 'utf-8');
|
|
3432
|
+
await writeFile(join(cliHomeDir, 'settings.json'), JSON.stringify({ machineId: 'test-machine' }) + '\n', 'utf-8');
|
|
3433
|
+
await mkdir(dirname(statePath), { recursive: true });
|
|
3434
|
+
await writeFile(statePath, stateRaw, 'utf-8');
|
|
3435
|
+
await writeFile(lockPath, lockRaw, 'utf-8');
|
|
3436
|
+
|
|
3437
|
+
await startLocalDaemonWithAuth({
|
|
3438
|
+
cliBin: join(tmp, 'runtime', 'cli', 'happier'),
|
|
3439
|
+
cliCommand,
|
|
3440
|
+
cliHomeDir,
|
|
3441
|
+
internalServerUrl,
|
|
3442
|
+
publicServerUrl,
|
|
3443
|
+
isShuttingDown: () => false,
|
|
3444
|
+
forceRestart: true,
|
|
3445
|
+
env,
|
|
3446
|
+
stackName: 'dev',
|
|
3447
|
+
cliIdentity: 'default',
|
|
3448
|
+
});
|
|
3449
|
+
|
|
3450
|
+
const observed = JSON.parse(await readFile(observationPath, 'utf-8'));
|
|
3451
|
+
assert.equal(observed.stateRaw, stateRaw);
|
|
3452
|
+
assert.equal(observed.lockRaw, lockRaw);
|
|
3453
|
+
|
|
3454
|
+
await stopLocalDaemon({
|
|
3455
|
+
cliBin: join(tmp, 'runtime', 'cli', 'happier'),
|
|
3456
|
+
cliCommand,
|
|
3457
|
+
internalServerUrl,
|
|
3458
|
+
cliHomeDir,
|
|
3459
|
+
env,
|
|
3460
|
+
stackName: 'dev',
|
|
3461
|
+
cliIdentity: 'default',
|
|
3462
|
+
});
|
|
3463
|
+
} finally {
|
|
3464
|
+
await rm(tmp, { recursive: true, force: true });
|
|
3465
|
+
}
|
|
3466
|
+
});
|