@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.
Files changed (2592) hide show
  1. package/README.md +4 -4
  2. package/bin/happier.mjs +8 -1
  3. package/bin/hstack.mjs +51 -36
  4. package/bin/localBundledWorkspacePreflight.mjs +48 -0
  5. package/docs/server-flavors.md +10 -13
  6. package/node_modules/@happier-dev/agents/dist/advancedModes.d.ts +1 -1
  7. package/node_modules/@happier-dev/agents/dist/advancedModes.d.ts.map +1 -1
  8. package/node_modules/@happier-dev/agents/dist/advancedModes.js.map +1 -1
  9. package/node_modules/@happier-dev/agents/dist/auth.d.ts +2 -2
  10. package/node_modules/@happier-dev/agents/dist/auth.d.ts.map +1 -1
  11. package/node_modules/@happier-dev/agents/dist/auth.js +25 -5
  12. package/node_modules/@happier-dev/agents/dist/auth.js.map +1 -1
  13. package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.d.ts +16 -0
  14. package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.d.ts.map +1 -0
  15. package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.js +56 -0
  16. package/node_modules/@happier-dev/agents/dist/connectedServices/runtimeFallbackCapability.js.map +1 -0
  17. package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.d.ts +114 -0
  18. package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.d.ts.map +1 -0
  19. package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.js +318 -0
  20. package/node_modules/@happier-dev/agents/dist/connectedServices/sessionOptions.js.map +1 -0
  21. package/node_modules/@happier-dev/agents/dist/index.d.ts +29 -14
  22. package/node_modules/@happier-dev/agents/dist/index.d.ts.map +1 -1
  23. package/node_modules/@happier-dev/agents/dist/index.js +25 -11
  24. package/node_modules/@happier-dev/agents/dist/index.js.map +1 -1
  25. package/node_modules/@happier-dev/agents/dist/localCli.d.ts +2 -1
  26. package/node_modules/@happier-dev/agents/dist/localCli.d.ts.map +1 -1
  27. package/node_modules/@happier-dev/agents/dist/localCli.js +68 -43
  28. package/node_modules/@happier-dev/agents/dist/localCli.js.map +1 -1
  29. package/node_modules/@happier-dev/agents/dist/manifest.d.ts +419 -162
  30. package/node_modules/@happier-dev/agents/dist/manifest.d.ts.map +1 -1
  31. package/node_modules/@happier-dev/agents/dist/manifest.js +221 -6
  32. package/node_modules/@happier-dev/agents/dist/manifest.js.map +1 -1
  33. package/node_modules/@happier-dev/agents/dist/mediaCapabilities.d.ts +5 -0
  34. package/node_modules/@happier-dev/agents/dist/mediaCapabilities.d.ts.map +1 -0
  35. package/node_modules/@happier-dev/agents/dist/mediaCapabilities.js +11 -0
  36. package/node_modules/@happier-dev/agents/dist/mediaCapabilities.js.map +1 -0
  37. package/node_modules/@happier-dev/agents/dist/models.d.ts +25 -0
  38. package/node_modules/@happier-dev/agents/dist/models.d.ts.map +1 -1
  39. package/node_modules/@happier-dev/agents/dist/models.js +99 -68
  40. package/node_modules/@happier-dev/agents/dist/models.js.map +1 -1
  41. package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.d.ts +20 -0
  42. package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.d.ts.map +1 -0
  43. package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.js +35 -0
  44. package/node_modules/@happier-dev/agents/dist/nativeLaunchSelection.js.map +1 -0
  45. package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.d.ts +2 -0
  46. package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.d.ts.map +1 -0
  47. package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.js +12 -0
  48. package/node_modules/@happier-dev/agents/dist/path/isAbsolutePathLike.js.map +1 -0
  49. package/node_modules/@happier-dev/agents/dist/permissions/index.d.ts +5 -0
  50. package/node_modules/@happier-dev/agents/dist/permissions/index.d.ts.map +1 -1
  51. package/node_modules/@happier-dev/agents/dist/permissions/index.js +23 -59
  52. package/node_modules/@happier-dev/agents/dist/permissions/index.js.map +1 -1
  53. package/node_modules/@happier-dev/agents/dist/permissions/privilege.d.ts +33 -0
  54. package/node_modules/@happier-dev/agents/dist/permissions/privilege.d.ts.map +1 -0
  55. package/node_modules/@happier-dev/agents/dist/permissions/privilege.js +95 -0
  56. package/node_modules/@happier-dev/agents/dist/permissions/privilege.js.map +1 -0
  57. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.d.ts +171 -80
  58. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.d.ts.map +1 -1
  59. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.js +62 -0
  60. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/claudeRemote.js.map +1 -1
  61. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/codex.d.ts +10 -10
  62. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/codex.d.ts.map +1 -1
  63. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.d.ts +65 -0
  64. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.d.ts.map +1 -0
  65. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.js +81 -0
  66. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/cursor.js.map +1 -0
  67. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.d.ts +36 -0
  68. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.d.ts.map +1 -0
  69. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.js +33 -0
  70. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/kimi.js.map +1 -0
  71. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.d.ts +16 -16
  72. package/node_modules/@happier-dev/agents/dist/providerSettings/definitions/opencode.d.ts.map +1 -1
  73. package/node_modules/@happier-dev/agents/dist/providerSettings/index.d.ts +4 -1
  74. package/node_modules/@happier-dev/agents/dist/providerSettings/index.d.ts.map +1 -1
  75. package/node_modules/@happier-dev/agents/dist/providerSettings/index.js +3 -1
  76. package/node_modules/@happier-dev/agents/dist/providerSettings/index.js.map +1 -1
  77. package/node_modules/@happier-dev/agents/dist/providerSettings/registry.d.ts.map +1 -1
  78. package/node_modules/@happier-dev/agents/dist/providerSettings/registry.js +4 -0
  79. package/node_modules/@happier-dev/agents/dist/providerSettings/registry.js.map +1 -1
  80. package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.d.ts +49 -0
  81. package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.d.ts.map +1 -0
  82. package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.js +102 -0
  83. package/node_modules/@happier-dev/agents/dist/providers/claude/contextWindow.js.map +1 -0
  84. package/node_modules/@happier-dev/agents/dist/providers/claude/effort.d.ts +9 -2
  85. package/node_modules/@happier-dev/agents/dist/providers/claude/effort.d.ts.map +1 -1
  86. package/node_modules/@happier-dev/agents/dist/providers/claude/effort.js +52 -20
  87. package/node_modules/@happier-dev/agents/dist/providers/claude/effort.js.map +1 -1
  88. package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.d.ts +13 -0
  89. package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.d.ts.map +1 -0
  90. package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.js +13 -0
  91. package/node_modules/@happier-dev/agents/dist/providers/claude/flagshipModel.js.map +1 -0
  92. package/node_modules/@happier-dev/agents/dist/providers/claude/index.d.ts +7 -2
  93. package/node_modules/@happier-dev/agents/dist/providers/claude/index.d.ts.map +1 -1
  94. package/node_modules/@happier-dev/agents/dist/providers/claude/index.js +7 -2
  95. package/node_modules/@happier-dev/agents/dist/providers/claude/index.js.map +1 -1
  96. package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.d.ts +9 -0
  97. package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.d.ts.map +1 -0
  98. package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.js +13 -0
  99. package/node_modules/@happier-dev/agents/dist/providers/claude/modelDisplayName.js.map +1 -0
  100. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.d.ts +14 -0
  101. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.d.ts.map +1 -0
  102. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.js +37 -0
  103. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthProfile.js.map +1 -0
  104. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.d.ts +5 -0
  105. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.d.ts.map +1 -0
  106. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.js +18 -0
  107. package/node_modules/@happier-dev/agents/dist/providers/claude/oauthScopes.js.map +1 -0
  108. package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.d.ts +7 -1
  109. package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.d.ts.map +1 -1
  110. package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.js +8 -0
  111. package/node_modules/@happier-dev/agents/dist/providers/claude/permissionRequestSource.js.map +1 -1
  112. package/node_modules/@happier-dev/agents/dist/providers/codex/index.d.ts +3 -0
  113. package/node_modules/@happier-dev/agents/dist/providers/codex/index.d.ts.map +1 -0
  114. package/node_modules/@happier-dev/agents/dist/providers/codex/index.js +3 -0
  115. package/node_modules/@happier-dev/agents/dist/providers/codex/index.js.map +1 -0
  116. package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.d.ts +12 -0
  117. package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.d.ts.map +1 -0
  118. package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.js +17 -0
  119. package/node_modules/@happier-dev/agents/dist/providers/codex/oauth.js.map +1 -0
  120. package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.d.ts +3 -0
  121. package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.d.ts.map +1 -0
  122. package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.js +26 -0
  123. package/node_modules/@happier-dev/agents/dist/providers/codex/readSessionMetadataConnectedServiceBindings.js.map +1 -0
  124. package/node_modules/@happier-dev/agents/dist/providers/gemini/index.d.ts +2 -0
  125. package/node_modules/@happier-dev/agents/dist/providers/gemini/index.d.ts.map +1 -0
  126. package/node_modules/@happier-dev/agents/dist/providers/gemini/index.js +2 -0
  127. package/node_modules/@happier-dev/agents/dist/providers/gemini/index.js.map +1 -0
  128. package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.d.ts +7 -0
  129. package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.d.ts.map +1 -0
  130. package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.js +11 -0
  131. package/node_modules/@happier-dev/agents/dist/providers/gemini/oauth.js.map +1 -0
  132. package/node_modules/@happier-dev/agents/dist/providers/index.d.ts +2 -0
  133. package/node_modules/@happier-dev/agents/dist/providers/index.d.ts.map +1 -1
  134. package/node_modules/@happier-dev/agents/dist/providers/index.js +2 -0
  135. package/node_modules/@happier-dev/agents/dist/providers/index.js.map +1 -1
  136. package/node_modules/@happier-dev/agents/dist/providers/pi/thinking.d.ts +3 -3
  137. package/node_modules/@happier-dev/agents/dist/providers/pi/thinking.d.ts.map +1 -1
  138. package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.d.ts +24 -0
  139. package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.d.ts.map +1 -1
  140. package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.js +121 -15
  141. package/node_modules/@happier-dev/agents/dist/providers/providerCliRuntime.js.map +1 -1
  142. package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.d.ts +3 -0
  143. package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.d.ts.map +1 -0
  144. package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.js +9 -0
  145. package/node_modules/@happier-dev/agents/dist/providers/readSessionMetadataConnectedServiceBindings.js.map +1 -0
  146. package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.d.ts +26 -0
  147. package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.d.ts.map +1 -1
  148. package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.js +52 -10
  149. package/node_modules/@happier-dev/agents/dist/resolveAgentIdFromSessionMetadata.js.map +1 -1
  150. package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.d.ts +16 -0
  151. package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.d.ts.map +1 -0
  152. package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.js +120 -0
  153. package/node_modules/@happier-dev/agents/dist/runtime/agentStateRequestCoverage.js.map +1 -0
  154. package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.d.ts +82 -0
  155. package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.d.ts.map +1 -0
  156. package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.js +16 -0
  157. package/node_modules/@happier-dev/agents/dist/runtime/terminal/control.js.map +1 -0
  158. package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.d.ts +66 -0
  159. package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.d.ts.map +1 -0
  160. package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.js +2 -0
  161. package/node_modules/@happier-dev/agents/dist/runtime/terminal/inputInjection.js.map +1 -0
  162. package/node_modules/@happier-dev/agents/dist/runtimeInput.d.ts +5 -0
  163. package/node_modules/@happier-dev/agents/dist/runtimeInput.d.ts.map +1 -0
  164. package/node_modules/@happier-dev/agents/dist/runtimeInput.js +16 -0
  165. package/node_modules/@happier-dev/agents/dist/runtimeInput.js.map +1 -0
  166. package/node_modules/@happier-dev/agents/dist/runtimeKinds.d.ts.map +1 -1
  167. package/node_modules/@happier-dev/agents/dist/runtimeKinds.js +2 -0
  168. package/node_modules/@happier-dev/agents/dist/runtimeKinds.js.map +1 -1
  169. package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.d.ts +20 -0
  170. package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.d.ts.map +1 -1
  171. package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.js +13 -0
  172. package/node_modules/@happier-dev/agents/dist/sessionControls/agentRuntimeDescriptor.js.map +1 -1
  173. package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.d.ts +6 -0
  174. package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.d.ts.map +1 -1
  175. package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.js +12 -1
  176. package/node_modules/@happier-dev/agents/dist/sessionControls/codexRuntimeDescriptorExtra.js.map +1 -1
  177. package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.d.ts +79 -0
  178. package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.d.ts.map +1 -1
  179. package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.js +180 -10
  180. package/node_modules/@happier-dev/agents/dist/sessionControls/metadata.js.map +1 -1
  181. package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.d.ts +9 -0
  182. package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.d.ts.map +1 -1
  183. package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.js +16 -0
  184. package/node_modules/@happier-dev/agents/dist/sessionControls/metadataKeys.js.map +1 -1
  185. package/node_modules/@happier-dev/agents/dist/sessionControls/publish.d.ts +10 -0
  186. package/node_modules/@happier-dev/agents/dist/sessionControls/publish.d.ts.map +1 -1
  187. package/node_modules/@happier-dev/agents/dist/sessionControls/publish.js +66 -10
  188. package/node_modules/@happier-dev/agents/dist/sessionControls/publish.js.map +1 -1
  189. package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.d.ts +1 -1
  190. package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.d.ts.map +1 -1
  191. package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.js +7 -0
  192. package/node_modules/@happier-dev/agents/dist/sessionControls/sessionCapabilities.js.map +1 -1
  193. package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.d.ts +14 -0
  194. package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.d.ts.map +1 -1
  195. package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.js +43 -0
  196. package/node_modules/@happier-dev/agents/dist/sessionControls/vendorResumePolicy.js.map +1 -1
  197. package/node_modules/@happier-dev/agents/dist/sessionModes.d.ts +3 -0
  198. package/node_modules/@happier-dev/agents/dist/sessionModes.d.ts.map +1 -1
  199. package/node_modules/@happier-dev/agents/dist/sessionModes.js +14 -0
  200. package/node_modules/@happier-dev/agents/dist/sessionModes.js.map +1 -1
  201. package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.d.ts +262 -4
  202. package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.d.ts.map +1 -1
  203. package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.js +1619 -45
  204. package/node_modules/@happier-dev/agents/dist/sessions/replay/happierReplayPrompt.js.map +1 -1
  205. package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.d.ts +66 -0
  206. package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.d.ts.map +1 -0
  207. package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.js +194 -0
  208. package/node_modules/@happier-dev/agents/dist/sessions/state/projectCurrentAgentSessionView.js.map +1 -0
  209. package/node_modules/@happier-dev/agents/dist/types.d.ts +62 -4
  210. package/node_modules/@happier-dev/agents/dist/types.d.ts.map +1 -1
  211. package/node_modules/@happier-dev/agents/dist/types.js +2 -2
  212. package/node_modules/@happier-dev/agents/dist/types.js.map +1 -1
  213. package/node_modules/@happier-dev/cli-common/cliDistBuildManifest.cjs +708 -0
  214. package/node_modules/@happier-dev/cli-common/cliDistBuildManifest.d.cts +94 -0
  215. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.d.ts +4 -1
  216. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.d.ts.map +1 -1
  217. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.js +161 -71
  218. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildCliBinaryArtifactPayload.js.map +1 -1
  219. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.d.ts +6 -1
  220. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.d.ts.map +1 -1
  221. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.js +71 -3
  222. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/buildServerBinaryArtifactPayload.js.map +1 -1
  223. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.d.ts +7 -3
  224. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.d.ts.map +1 -1
  225. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.js +83 -9
  226. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.js.map +1 -1
  227. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.d.ts +10 -0
  228. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.d.ts.map +1 -0
  229. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.js +13 -0
  230. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/compilePrismaMigrateBinary.js.map +1 -0
  231. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.d.ts +9 -6
  232. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.d.ts.map +1 -1
  233. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.js +63 -9
  234. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.js.map +1 -1
  235. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.d.ts +2 -0
  236. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.d.ts.map +1 -0
  237. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.js +45 -0
  238. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/finalizeRuntimeArtifactPayload.js.map +1 -0
  239. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.d.ts +2 -0
  240. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.d.ts.map +1 -1
  241. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.js +2 -0
  242. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/index.js.map +1 -1
  243. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.d.ts +8 -0
  244. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.d.ts.map +1 -0
  245. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.js +16 -0
  246. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/refreshCliBinaryArtifactRuntimeAssetBuildManifest.js.map +1 -0
  247. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.d.ts +4 -0
  248. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.d.ts.map +1 -0
  249. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.js +33 -0
  250. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverBuildDbProviders.js.map +1 -0
  251. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.d.ts +11 -1
  252. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.d.ts.map +1 -1
  253. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.js +222 -12
  254. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/serverSidecars.js.map +1 -1
  255. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.d.ts +6 -0
  256. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.d.ts.map +1 -0
  257. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.js +48 -0
  258. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/shouldReuseCliDistSnapshot.js.map +1 -0
  259. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.d.ts +3 -0
  260. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.d.ts.map +1 -1
  261. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.js +7 -97
  262. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/withCliDistBuildLock.js.map +1 -1
  263. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.d.ts +31 -31
  264. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/componentCatalog.d.ts.map +1 -1
  265. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.d.ts +9 -0
  266. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.d.ts.map +1 -0
  267. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.js +216 -0
  268. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/copyRuntimePayloadTree.js.map +1 -0
  269. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.d.ts +20 -0
  270. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.d.ts.map +1 -0
  271. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.js +46 -0
  272. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/defaultReleaseChannelState.js.map +1 -0
  273. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.d.ts.map +1 -1
  274. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.js +16 -28
  275. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/extractReleasePayloadRootFromArchive.js.map +1 -1
  276. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.d.ts +10 -1
  277. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.d.ts.map +1 -1
  278. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.js +7 -1
  279. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/index.js.map +1 -1
  280. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installLayout.d.ts.map +1 -1
  281. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installLayout.js +7 -7
  282. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installLayout.js.map +1 -1
  283. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.d.ts +1 -0
  284. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.d.ts.map +1 -1
  285. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.js +156 -0
  286. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/installVersionedPayload.js.map +1 -1
  287. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.d.ts +1 -0
  288. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.d.ts.map +1 -1
  289. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.js +1 -1
  290. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.js.map +1 -1
  291. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.d.ts +2 -0
  292. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.d.ts.map +1 -1
  293. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.js +13 -3
  294. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/promoteVersionedPayload.js.map +1 -1
  295. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.d.ts +1 -0
  296. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.d.ts.map +1 -1
  297. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.js +38 -4
  298. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/pruneRetainedVersions.js.map +1 -1
  299. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.d.ts.map +1 -1
  300. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.js +64 -23
  301. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.js.map +1 -1
  302. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.d.ts +15 -0
  303. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.d.ts.map +1 -1
  304. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.js +829 -76
  305. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntimeInstall.js.map +1 -1
  306. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.d.ts +14 -0
  307. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.d.ts.map +1 -0
  308. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.js +29 -0
  309. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveDesiredShimTargets.js.map +1 -0
  310. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.d.ts +32 -0
  311. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.d.ts.map +1 -1
  312. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.js +21 -4
  313. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveInstalledComponentPaths.js.map +1 -1
  314. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.d.ts +34 -0
  315. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.d.ts.map +1 -0
  316. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.js +49 -0
  317. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveJunctionFreeCurrentPath.js.map +1 -0
  318. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.d.ts +29 -0
  319. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.d.ts.map +1 -0
  320. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.js +177 -0
  321. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveManagedCliReleaseChannel.js.map +1 -0
  322. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.d.ts +39 -0
  323. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.d.ts.map +1 -0
  324. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.js +112 -0
  325. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/resolveNonCollidingRelayPort.js.map +1 -0
  326. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runtimeKinds.d.ts +1 -1
  327. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/runtimeKinds.d.ts.map +1 -1
  328. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.d.ts +53 -0
  329. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.d.ts.map +1 -1
  330. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.js +285 -36
  331. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/selfHostServerEnv.js.map +1 -1
  332. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.d.ts +32 -0
  333. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.d.ts.map +1 -0
  334. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.js +93 -0
  335. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/serverRuntimeArtifactLayout.js.map +1 -0
  336. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.d.ts +1 -0
  337. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.d.ts.map +1 -1
  338. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.js +23 -10
  339. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledFirstPartyShims.js.map +1 -1
  340. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledPayloadPointer.d.ts.map +1 -1
  341. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledPayloadPointer.js +66 -6
  342. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/syncInstalledPayloadPointer.js.map +1 -1
  343. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.d.ts +10 -0
  344. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.d.ts.map +1 -0
  345. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.js +61 -0
  346. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/uiDeploymentIdentity.js.map +1 -0
  347. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.d.ts +12 -0
  348. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.d.ts.map +1 -1
  349. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.js +24 -0
  350. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/versionMarkers.js.map +1 -1
  351. package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.d.ts +35 -0
  352. package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.d.ts.map +1 -0
  353. package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.js +222 -0
  354. package/node_modules/@happier-dev/cli-common/dist/fs/windowsProtectedAcl.js.map +1 -0
  355. package/node_modules/@happier-dev/cli-common/dist/links/index.d.ts +6 -0
  356. package/node_modules/@happier-dev/cli-common/dist/links/index.d.ts.map +1 -1
  357. package/node_modules/@happier-dev/cli-common/dist/links/index.js +30 -15
  358. package/node_modules/@happier-dev/cli-common/dist/links/index.js.map +1 -1
  359. package/node_modules/@happier-dev/cli-common/dist/output/index.d.ts +2 -0
  360. package/node_modules/@happier-dev/cli-common/dist/output/index.d.ts.map +1 -0
  361. package/node_modules/@happier-dev/cli-common/dist/output/index.js +2 -0
  362. package/node_modules/@happier-dev/cli-common/dist/output/index.js.map +1 -0
  363. package/node_modules/@happier-dev/cli-common/dist/output/progress.d.ts +28 -0
  364. package/node_modules/@happier-dev/cli-common/dist/output/progress.d.ts.map +1 -0
  365. package/node_modules/@happier-dev/cli-common/dist/output/progress.js +126 -0
  366. package/node_modules/@happier-dev/cli-common/dist/output/progress.js.map +1 -0
  367. package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.d.ts +2 -0
  368. package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.d.ts.map +1 -0
  369. package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.js +2 -0
  370. package/node_modules/@happier-dev/cli-common/dist/path/expandHomeDirPath.js.map +1 -0
  371. package/node_modules/@happier-dev/cli-common/dist/path/pathShape.d.ts +5 -0
  372. package/node_modules/@happier-dev/cli-common/dist/path/pathShape.d.ts.map +1 -0
  373. package/node_modules/@happier-dev/cli-common/dist/path/pathShape.js +31 -0
  374. package/node_modules/@happier-dev/cli-common/dist/path/pathShape.js.map +1 -0
  375. package/node_modules/@happier-dev/cli-common/dist/process/commandExists.d.ts.map +1 -1
  376. package/node_modules/@happier-dev/cli-common/dist/process/commandExists.js +12 -6
  377. package/node_modules/@happier-dev/cli-common/dist/process/commandExists.js.map +1 -1
  378. package/node_modules/@happier-dev/cli-common/dist/process/index.d.ts +1 -0
  379. package/node_modules/@happier-dev/cli-common/dist/process/index.d.ts.map +1 -1
  380. package/node_modules/@happier-dev/cli-common/dist/process/index.js +1 -0
  381. package/node_modules/@happier-dev/cli-common/dist/process/index.js.map +1 -1
  382. package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.d.ts +9 -0
  383. package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.d.ts.map +1 -0
  384. package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.js +64 -0
  385. package/node_modules/@happier-dev/cli-common/dist/process/runCommandStreaming.js.map +1 -0
  386. package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.d.ts.map +1 -1
  387. package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.js +35 -7
  388. package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.js.map +1 -1
  389. package/node_modules/@happier-dev/cli-common/dist/providers/downloadGitHubReleaseAsset.d.ts.map +1 -1
  390. package/node_modules/@happier-dev/cli-common/dist/providers/downloadGitHubReleaseAsset.js +42 -20
  391. package/node_modules/@happier-dev/cli-common/dist/providers/downloadGitHubReleaseAsset.js.map +1 -1
  392. package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.d.ts +12 -0
  393. package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.d.ts.map +1 -1
  394. package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.js +86 -16
  395. package/node_modules/@happier-dev/cli-common/dist/providers/extractGitHubReleaseAsset.js.map +1 -1
  396. package/node_modules/@happier-dev/cli-common/dist/providers/install.d.ts +3 -0
  397. package/node_modules/@happier-dev/cli-common/dist/providers/install.d.ts.map +1 -1
  398. package/node_modules/@happier-dev/cli-common/dist/providers/install.js +551 -78
  399. package/node_modules/@happier-dev/cli-common/dist/providers/install.js.map +1 -1
  400. package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.d.ts.map +1 -1
  401. package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.js +4 -3
  402. package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.js.map +1 -1
  403. package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.d.ts.map +1 -1
  404. package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.js +34 -3
  405. package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.js.map +1 -1
  406. package/node_modules/@happier-dev/cli-common/dist/providers/nodeRelease.js.map +1 -1
  407. package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.d.ts.map +1 -1
  408. package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.js +37 -12
  409. package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.js.map +1 -1
  410. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.d.ts +3 -3
  411. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.d.ts.map +1 -1
  412. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.js +109 -38
  413. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.js.map +1 -1
  414. package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.d.ts.map +1 -1
  415. package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.js +10 -5
  416. package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.js.map +1 -1
  417. package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.d.ts +8 -0
  418. package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.d.ts.map +1 -0
  419. package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.js +40 -0
  420. package/node_modules/@happier-dev/cli-common/dist/relayHost/buildRelayRuntimeHealthProbeCommand.js.map +1 -0
  421. package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.d.ts +3 -2
  422. package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.d.ts.map +1 -1
  423. package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.js +1442 -365
  424. package/node_modules/@happier-dev/cli-common/dist/relayHost/relayHostEngine.js.map +1 -1
  425. package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.d.ts +8 -0
  426. package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.d.ts.map +1 -0
  427. package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.js +33 -0
  428. package/node_modules/@happier-dev/cli-common/dist/relayHost/remoteRelayRuntimeInstallCommand.js.map +1 -0
  429. package/node_modules/@happier-dev/cli-common/dist/service/launchd.d.ts +1 -0
  430. package/node_modules/@happier-dev/cli-common/dist/service/launchd.d.ts.map +1 -1
  431. package/node_modules/@happier-dev/cli-common/dist/service/launchd.js +4 -0
  432. package/node_modules/@happier-dev/cli-common/dist/service/launchd.js.map +1 -1
  433. package/node_modules/@happier-dev/cli-common/dist/service/manager.d.ts +30 -0
  434. package/node_modules/@happier-dev/cli-common/dist/service/manager.d.ts.map +1 -1
  435. package/node_modules/@happier-dev/cli-common/dist/service/manager.js +197 -24
  436. package/node_modules/@happier-dev/cli-common/dist/service/manager.js.map +1 -1
  437. package/node_modules/@happier-dev/cli-common/dist/service/path.js.map +1 -1
  438. package/node_modules/@happier-dev/cli-common/dist/service/systemd.d.ts +2 -0
  439. package/node_modules/@happier-dev/cli-common/dist/service/systemd.d.ts.map +1 -1
  440. package/node_modules/@happier-dev/cli-common/dist/service/systemd.js +7 -1
  441. package/node_modules/@happier-dev/cli-common/dist/service/systemd.js.map +1 -1
  442. package/node_modules/@happier-dev/cli-common/dist/service/windows.d.ts +49 -0
  443. package/node_modules/@happier-dev/cli-common/dist/service/windows.d.ts.map +1 -1
  444. package/node_modules/@happier-dev/cli-common/dist/service/windows.js +167 -0
  445. package/node_modules/@happier-dev/cli-common/dist/service/windows.js.map +1 -1
  446. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.d.ts +7 -0
  447. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.d.ts.map +1 -0
  448. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.js +41 -0
  449. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadArchive.js.map +1 -0
  450. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.d.ts +5 -0
  451. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.d.ts.map +1 -0
  452. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.js +51 -0
  453. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/createScpReadyPayloadCopy.js.map +1 -0
  454. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.d.ts +2 -0
  455. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.d.ts.map +1 -1
  456. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.js +1 -0
  457. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.js.map +1 -1
  458. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.d.ts +1 -0
  459. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.d.ts.map +1 -1
  460. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.js +104 -61
  461. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.js.map +1 -1
  462. package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.d.ts.map +1 -1
  463. package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.d.ts +2 -0
  464. package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.d.ts.map +1 -0
  465. package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.js +13 -0
  466. package/node_modules/@happier-dev/cli-common/dist/systemTasks/ssh/scpRemotePath.js.map +1 -0
  467. package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.d.ts.map +1 -1
  468. package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.js +20 -2
  469. package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.js.map +1 -1
  470. package/node_modules/@happier-dev/cli-common/dist/tailscale/index.d.ts +2 -2
  471. package/node_modules/@happier-dev/cli-common/dist/tailscale/index.d.ts.map +1 -1
  472. package/node_modules/@happier-dev/cli-common/dist/tailscale/index.js +2 -2
  473. package/node_modules/@happier-dev/cli-common/dist/tailscale/index.js.map +1 -1
  474. package/node_modules/@happier-dev/cli-common/dist/tailscale/installStrategy.js.map +1 -1
  475. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.d.ts +15 -0
  476. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.d.ts.map +1 -1
  477. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.js +50 -1
  478. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.js.map +1 -1
  479. package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.d.ts +29 -0
  480. package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.d.ts.map +1 -1
  481. package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.js +42 -0
  482. package/node_modules/@happier-dev/cli-common/dist/tailscale/statusSnapshot.js.map +1 -1
  483. package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.d.ts +2 -2
  484. package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.d.ts.map +1 -1
  485. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.d.ts +16 -1
  486. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.d.ts.map +1 -1
  487. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.js +113 -24
  488. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.js.map +1 -1
  489. package/node_modules/@happier-dev/cli-common/expandHomeDirPath.cjs +41 -0
  490. package/node_modules/@happier-dev/cli-common/expandHomeDirPath.d.cts +10 -0
  491. package/node_modules/@happier-dev/cli-common/jsonOwnerBuildLockState.cjs +54 -0
  492. package/node_modules/@happier-dev/cli-common/package.json +57 -0
  493. package/node_modules/@happier-dev/cli-common/processInstance.d.mts +10 -0
  494. package/node_modules/@happier-dev/cli-common/processInstance.mjs +67 -0
  495. package/node_modules/@happier-dev/cli-common/runtimeImportProbePolicy.d.mts +1 -0
  496. package/node_modules/@happier-dev/cli-common/runtimeImportProbePolicy.mjs +5 -0
  497. package/node_modules/@happier-dev/cli-common/workspaceBundleLock.d.mts +39 -0
  498. package/node_modules/@happier-dev/cli-common/workspaceBundleLock.mjs +380 -0
  499. package/node_modules/@happier-dev/cli-common/workspaceLockLease.d.mts +21 -0
  500. package/node_modules/@happier-dev/cli-common/workspaceLockLease.mjs +57 -0
  501. package/node_modules/@happier-dev/connection-supervisor/dist/createManagedConnectionSupervisor.d.ts.map +1 -1
  502. package/node_modules/@happier-dev/connection-supervisor/dist/createManagedConnectionSupervisor.js +47 -9
  503. package/node_modules/@happier-dev/connection-supervisor/dist/createManagedConnectionSupervisor.js.map +1 -1
  504. package/node_modules/@happier-dev/connection-supervisor/dist/createManagedEndpointSupervisor.d.ts.map +1 -1
  505. package/node_modules/@happier-dev/connection-supervisor/dist/createManagedEndpointSupervisor.js +33 -0
  506. package/node_modules/@happier-dev/connection-supervisor/dist/createManagedEndpointSupervisor.js.map +1 -1
  507. package/node_modules/@happier-dev/connection-supervisor/dist/index.d.ts +1 -1
  508. package/node_modules/@happier-dev/connection-supervisor/dist/index.d.ts.map +1 -1
  509. package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionEvents.js +1 -1
  510. package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionEvents.js.map +1 -1
  511. package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionTypes.d.ts +8 -0
  512. package/node_modules/@happier-dev/connection-supervisor/dist/managedConnectionTypes.d.ts.map +1 -1
  513. package/node_modules/@happier-dev/connection-supervisor/dist/managedEndpointSupervisorTypes.d.ts +3 -0
  514. package/node_modules/@happier-dev/connection-supervisor/dist/managedEndpointSupervisorTypes.d.ts.map +1 -1
  515. package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.d.ts +419 -213
  516. package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.d.ts.map +1 -1
  517. package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.js +21 -3
  518. package/node_modules/@happier-dev/protocol/dist/account/encryptionMigrate.js.map +1 -1
  519. package/node_modules/@happier-dev/protocol/dist/account/encryptionMode.d.ts +2 -2
  520. package/node_modules/@happier-dev/protocol/dist/account/profile.d.ts +102 -4
  521. package/node_modules/@happier-dev/protocol/dist/account/profile.d.ts.map +1 -1
  522. package/node_modules/@happier-dev/protocol/dist/account/profile.js +19 -2
  523. package/node_modules/@happier-dev/protocol/dist/account/profile.js.map +1 -1
  524. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.d.ts +249 -41
  525. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.d.ts.map +1 -1
  526. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.js +180 -18
  527. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettings.js.map +1 -1
  528. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsApiV2.d.ts +3 -576
  529. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsApiV2.d.ts.map +1 -1
  530. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.d.ts +4 -0
  531. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.d.ts.map +1 -0
  532. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.js +3 -0
  533. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsPersistedObject.js.map +1 -0
  534. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.d.ts +1 -192
  535. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.d.ts.map +1 -1
  536. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.js +2 -2
  537. package/node_modules/@happier-dev/protocol/dist/account/settings/accountSettingsStoredContentEnvelope.js.map +1 -1
  538. package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.d.ts +79 -0
  539. package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.d.ts.map +1 -0
  540. package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.js +80 -0
  541. package/node_modules/@happier-dev/protocol/dist/account/settings/connectedServicesSettings.js.map +1 -0
  542. package/node_modules/@happier-dev/protocol/dist/account/settings/index.d.ts +3 -1
  543. package/node_modules/@happier-dev/protocol/dist/account/settings/index.d.ts.map +1 -1
  544. package/node_modules/@happier-dev/protocol/dist/account/settings/index.js +3 -1
  545. package/node_modules/@happier-dev/protocol/dist/account/settings/index.js.map +1 -1
  546. package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.d.ts +35 -14
  547. package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.d.ts.map +1 -1
  548. package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.js +21 -2
  549. package/node_modules/@happier-dev/protocol/dist/account/settings/notificationChannels.js.map +1 -1
  550. package/node_modules/@happier-dev/protocol/dist/acpCatalog/settingsV1.d.ts +29 -29
  551. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.d.ts +26 -0
  552. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.d.ts.map +1 -0
  553. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.js +24 -0
  554. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalMetadata.js.map +1 -0
  555. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.d.ts +15 -0
  556. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.d.ts.map +1 -1
  557. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.js +17 -0
  558. package/node_modules/@happier-dev/protocol/dist/actions/actionApprovalPolicy.js.map +1 -1
  559. package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.d.ts +4 -0
  560. package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.d.ts.map +1 -1
  561. package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.js +4 -0
  562. package/node_modules/@happier-dev/protocol/dist/actions/actionCatalog.js.map +1 -1
  563. package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.d.ts +269 -17
  564. package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.d.ts.map +1 -1
  565. package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.js +1200 -130
  566. package/node_modules/@happier-dev/protocol/dist/actions/actionExecutor.js.map +1 -1
  567. package/node_modules/@happier-dev/protocol/dist/actions/actionIds.d.ts +64 -44
  568. package/node_modules/@happier-dev/protocol/dist/actions/actionIds.d.ts.map +1 -1
  569. package/node_modules/@happier-dev/protocol/dist/actions/actionIds.js +21 -0
  570. package/node_modules/@happier-dev/protocol/dist/actions/actionIds.js.map +1 -1
  571. package/node_modules/@happier-dev/protocol/dist/actions/actionInputVoiceGuidance.d.ts.map +1 -1
  572. package/node_modules/@happier-dev/protocol/dist/actions/actionInputVoiceGuidance.js +13 -4
  573. package/node_modules/@happier-dev/protocol/dist/actions/actionInputVoiceGuidance.js.map +1 -1
  574. package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.d.ts +28 -0
  575. package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.d.ts.map +1 -0
  576. package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.js +77 -0
  577. package/node_modules/@happier-dev/protocol/dist/actions/actionOptionSources.js.map +1 -0
  578. package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.d.ts +73 -35
  579. package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.d.ts.map +1 -1
  580. package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.js +24 -1
  581. package/node_modules/@happier-dev/protocol/dist/actions/actionSettings.js.map +1 -1
  582. package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.d.ts +487 -65
  583. package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.d.ts.map +1 -1
  584. package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.js +1373 -135
  585. package/node_modules/@happier-dev/protocol/dist/actions/actionSpecs.js.map +1 -1
  586. package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.d.ts +24 -0
  587. package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.d.ts.map +1 -0
  588. package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.js +139 -0
  589. package/node_modules/@happier-dev/protocol/dist/actions/actionSurfaceAvailability.js.map +1 -0
  590. package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.d.ts +14 -0
  591. package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.d.ts.map +1 -0
  592. package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.js +46 -0
  593. package/node_modules/@happier-dev/protocol/dist/actions/actionToolExposure.js.map +1 -0
  594. package/node_modules/@happier-dev/protocol/dist/actions/actionUiPlacements.d.ts +5 -5
  595. package/node_modules/@happier-dev/protocol/dist/actions/actionUiPlacements.d.ts.map +1 -1
  596. package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.d.ts +11 -0
  597. package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.d.ts.map +1 -0
  598. package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.js +12 -0
  599. package/node_modules/@happier-dev/protocol/dist/actions/executionRunActionPermissionMode.js.map +1 -0
  600. package/node_modules/@happier-dev/protocol/dist/actions/index.d.ts +8 -3
  601. package/node_modules/@happier-dev/protocol/dist/actions/index.d.ts.map +1 -1
  602. package/node_modules/@happier-dev/protocol/dist/actions/index.js +7 -2
  603. package/node_modules/@happier-dev/protocol/dist/actions/index.js.map +1 -1
  604. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.d.ts +11 -0
  605. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.d.ts.map +1 -0
  606. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.js +9 -0
  607. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationDeclarationV1.js.map +1 -0
  608. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.d.ts +299 -0
  609. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.d.ts.map +1 -0
  610. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.js +180 -0
  611. package/node_modules/@happier-dev/protocol/dist/actions/operations/actionOperationV1.js.map +1 -0
  612. package/node_modules/@happier-dev/protocol/dist/actions/operations/index.d.ts +3 -0
  613. package/node_modules/@happier-dev/protocol/dist/actions/operations/index.d.ts.map +1 -0
  614. package/node_modules/@happier-dev/protocol/dist/actions/operations/index.js +3 -0
  615. package/node_modules/@happier-dev/protocol/dist/actions/operations/index.js.map +1 -0
  616. package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.d.ts +37 -0
  617. package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.d.ts.map +1 -0
  618. package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.js +121 -0
  619. package/node_modules/@happier-dev/protocol/dist/actions/permissionPrivilege.js.map +1 -0
  620. package/node_modules/@happier-dev/protocol/dist/actions/sessionModeIds.js +5 -5
  621. package/node_modules/@happier-dev/protocol/dist/actions/sessionModeIds.js.map +1 -1
  622. package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.d.ts +37 -0
  623. package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.d.ts.map +1 -0
  624. package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.js +80 -0
  625. package/node_modules/@happier-dev/protocol/dist/actions/sessionSpawnConfigOptions.js.map +1 -0
  626. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.d.ts +94 -0
  627. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.d.ts.map +1 -0
  628. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.js +125 -0
  629. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRecordV1.js.map +1 -0
  630. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.d.ts +40 -0
  631. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.d.ts.map +1 -0
  632. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.js +94 -0
  633. package/node_modules/@happier-dev/protocol/dist/activity/backgroundTask/backgroundTaskRedaction.js.map +1 -0
  634. package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.d.ts +10 -2
  635. package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.d.ts.map +1 -1
  636. package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.js +4 -0
  637. package/node_modules/@happier-dev/protocol/dist/activity/webhookPayload.js.map +1 -1
  638. package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.d.ts +105 -53
  639. package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.d.ts.map +1 -1
  640. package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.js +64 -0
  641. package/node_modules/@happier-dev/protocol/dist/approvals/approvalRequestV1.js.map +1 -1
  642. package/node_modules/@happier-dev/protocol/dist/auth/errors.d.ts +15 -14
  643. package/node_modules/@happier-dev/protocol/dist/auth/errors.d.ts.map +1 -1
  644. package/node_modules/@happier-dev/protocol/dist/auth/errors.js +1 -0
  645. package/node_modules/@happier-dev/protocol/dist/auth/errors.js.map +1 -1
  646. package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.d.ts +52 -0
  647. package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.d.ts.map +1 -0
  648. package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.js +13 -0
  649. package/node_modules/@happier-dev/protocol/dist/backendSurface/declarationV1.js.map +1 -0
  650. package/node_modules/@happier-dev/protocol/dist/bugReports/redaction.d.ts.map +1 -1
  651. package/node_modules/@happier-dev/protocol/dist/bugReports/redaction.js +406 -10
  652. package/node_modules/@happier-dev/protocol/dist/bugReports/redaction.js.map +1 -1
  653. package/node_modules/@happier-dev/protocol/dist/changes.d.ts +11 -29
  654. package/node_modules/@happier-dev/protocol/dist/changes.d.ts.map +1 -1
  655. package/node_modules/@happier-dev/protocol/dist/changes.js +6 -1
  656. package/node_modules/@happier-dev/protocol/dist/changes.js.map +1 -1
  657. package/node_modules/@happier-dev/protocol/dist/checklists.d.ts +2 -2
  658. package/node_modules/@happier-dev/protocol/dist/checklists.d.ts.map +1 -1
  659. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.d.ts +4 -0
  660. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.d.ts.map +1 -0
  661. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.js +4 -0
  662. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/index.js.map +1 -0
  663. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.d.ts +18 -0
  664. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.d.ts.map +1 -0
  665. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.js +45 -0
  666. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/primitives.js.map +1 -0
  667. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.d.ts +36 -0
  668. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.d.ts.map +1 -0
  669. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.js +19 -0
  670. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/upgradeRequiredV1.js.map +1 -0
  671. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.d.ts +35 -0
  672. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.d.ts.map +1 -0
  673. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.js +41 -0
  674. package/node_modules/@happier-dev/protocol/dist/clientCompatibility/versionEndpointV1.js.map +1 -0
  675. package/node_modules/@happier-dev/protocol/dist/common/asyncTtlCache.d.ts.map +1 -1
  676. package/node_modules/@happier-dev/protocol/dist/common/probedResourceCache.d.ts.map +1 -1
  677. package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.d.ts +382 -0
  678. package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.d.ts.map +1 -0
  679. package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.js +264 -0
  680. package/node_modules/@happier-dev/protocol/dist/connect/accountUsage.js.map +1 -0
  681. package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.d.ts +12 -0
  682. package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.d.ts.map +1 -1
  683. package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.js +25 -1
  684. package/node_modules/@happier-dev/protocol/dist/connect/buildConnectedServiceCredentialRecord.js.map +1 -1
  685. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.d.ts +7 -0
  686. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.d.ts.map +1 -0
  687. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.js +40 -0
  688. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceAuthGroupMemberRuntimeStatePolicy.js.map +1 -0
  689. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.d.ts +74 -0
  690. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.d.ts.map +1 -0
  691. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.js +75 -0
  692. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceBindings.js.map +1 -0
  693. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.d.ts +0 -5
  694. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.d.ts.map +1 -1
  695. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.js +0 -8
  696. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCipher.js.map +1 -1
  697. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.d.ts +19 -0
  698. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.d.ts.map +1 -0
  699. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.js +19 -0
  700. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceCredentialBinding.js.map +1 -0
  701. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.d.ts +25 -15
  702. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.d.ts.map +1 -1
  703. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.js +10 -0
  704. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceErrors.js.map +1 -1
  705. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.d.ts +43 -0
  706. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.d.ts.map +1 -0
  707. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.js +53 -0
  708. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceLimitCategory.js.map +1 -0
  709. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.d.ts +1331 -27
  710. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.d.ts.map +1 -1
  711. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.js +534 -13
  712. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceSchemas.js.map +1 -1
  713. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.d.ts +184 -0
  714. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.d.ts.map +1 -0
  715. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.js +142 -0
  716. package/node_modules/@happier-dev/protocol/dist/connect/connectedServiceUxDiagnostics.js.map +1 -0
  717. package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.d.ts +61 -0
  718. package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.d.ts.map +1 -0
  719. package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.js +148 -0
  720. package/node_modules/@happier-dev/protocol/dist/connect/normalizeConnectedServiceSelectionInput.js.map +1 -0
  721. package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.d.ts +2 -1
  722. package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.d.ts.map +1 -1
  723. package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.js +19 -0
  724. package/node_modules/@happier-dev/protocol/dist/crypto/accountScopedCipher.js.map +1 -1
  725. package/node_modules/@happier-dev/protocol/dist/crypto/base64.d.ts +1 -0
  726. package/node_modules/@happier-dev/protocol/dist/crypto/base64.d.ts.map +1 -1
  727. package/node_modules/@happier-dev/protocol/dist/crypto/base64.js +34 -0
  728. package/node_modules/@happier-dev/protocol/dist/crypto/base64.js.map +1 -1
  729. package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.d.ts +3 -0
  730. package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.d.ts.map +1 -0
  731. package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.js +21 -0
  732. package/node_modules/@happier-dev/protocol/dist/crypto/canonicalDigest.js.map +1 -0
  733. package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.d.ts +93 -0
  734. package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.d.ts.map +1 -0
  735. package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.js +99 -0
  736. package/node_modules/@happier-dev/protocol/dist/crypto/cryptoGoldenVectors.js.map +1 -0
  737. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.d.ts +6 -0
  738. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.d.ts.map +1 -0
  739. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.js +8 -0
  740. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareCapabilityUrl.js.map +1 -0
  741. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.d.ts +17 -0
  742. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.d.ts.map +1 -0
  743. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.js +34 -0
  744. package/node_modules/@happier-dev/protocol/dist/crypto/publicShareEncryptedDataKeyEnvelopeV0.js.map +1 -0
  745. package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.d.ts +18 -0
  746. package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.d.ts.map +1 -1
  747. package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.js +85 -0
  748. package/node_modules/@happier-dev/protocol/dist/crypto/terminalProvisioningV2.js.map +1 -1
  749. package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.d.ts +52 -0
  750. package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.d.ts.map +1 -0
  751. package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.js +34 -0
  752. package/node_modules/@happier-dev/protocol/dist/daemon/serverWorkStatus.js.map +1 -0
  753. package/node_modules/@happier-dev/protocol/dist/daemonExecutionRuns.d.ts +12 -12
  754. package/node_modules/@happier-dev/protocol/dist/daemonTerminal.d.ts +47 -26
  755. package/node_modules/@happier-dev/protocol/dist/daemonTerminal.d.ts.map +1 -1
  756. package/node_modules/@happier-dev/protocol/dist/daemonTerminal.js +26 -14
  757. package/node_modules/@happier-dev/protocol/dist/daemonTerminal.js.map +1 -1
  758. package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.d.ts +352 -0
  759. package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.d.ts.map +1 -1
  760. package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.js +159 -0
  761. package/node_modules/@happier-dev/protocol/dist/diagnostics/doctorSnapshot.js.map +1 -1
  762. package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.d.ts +209 -28
  763. package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.d.ts.map +1 -1
  764. package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.js +94 -0
  765. package/node_modules/@happier-dev/protocol/dist/directSessions/daemonRpcV1.js.map +1 -1
  766. package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.d.ts +35 -0
  767. package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.d.ts.map +1 -0
  768. package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.js +157 -0
  769. package/node_modules/@happier-dev/protocol/dist/directSessions/linkedSessionMetadata.js.map +1 -0
  770. package/node_modules/@happier-dev/protocol/dist/drafts/index.d.ts +2 -0
  771. package/node_modules/@happier-dev/protocol/dist/drafts/index.d.ts.map +1 -0
  772. package/node_modules/@happier-dev/protocol/dist/drafts/index.js +2 -0
  773. package/node_modules/@happier-dev/protocol/dist/drafts/index.js.map +1 -0
  774. package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.d.ts +1016 -0
  775. package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.d.ts.map +1 -0
  776. package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.js +152 -0
  777. package/node_modules/@happier-dev/protocol/dist/drafts/sessionDrafts.js.map +1 -0
  778. package/node_modules/@happier-dev/protocol/dist/e2e/providerScenarios.d.ts +7 -7
  779. package/node_modules/@happier-dev/protocol/dist/e2e/providerSpec.d.ts +4 -4
  780. package/node_modules/@happier-dev/protocol/dist/ephemeralTasks.d.ts +4 -4
  781. package/node_modules/@happier-dev/protocol/dist/executionRunListRequest.d.ts +2 -2
  782. package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.d.ts +37 -12
  783. package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.d.ts.map +1 -1
  784. package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.js +33 -3
  785. package/node_modules/@happier-dev/protocol/dist/executionRunStartRequest.js.map +1 -1
  786. package/node_modules/@happier-dev/protocol/dist/executionRuns.d.ts +85 -27
  787. package/node_modules/@happier-dev/protocol/dist/executionRuns.d.ts.map +1 -1
  788. package/node_modules/@happier-dev/protocol/dist/executionRuns.js +24 -0
  789. package/node_modules/@happier-dev/protocol/dist/executionRuns.js.map +1 -1
  790. package/node_modules/@happier-dev/protocol/dist/features/catalog.d.ts +288 -168
  791. package/node_modules/@happier-dev/protocol/dist/features/catalog.d.ts.map +1 -1
  792. package/node_modules/@happier-dev/protocol/dist/features/catalog.js +128 -0
  793. package/node_modules/@happier-dev/protocol/dist/features/catalog.js.map +1 -1
  794. package/node_modules/@happier-dev/protocol/dist/features/decision.d.ts +91 -71
  795. package/node_modules/@happier-dev/protocol/dist/features/decision.d.ts.map +1 -1
  796. package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.d.ts +1 -1
  797. package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.d.ts.map +1 -1
  798. package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.js +1 -1
  799. package/node_modules/@happier-dev/protocol/dist/features/embeddedFeaturePolicies.generated.js.map +1 -1
  800. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/authCapabilities.d.ts +5 -5
  801. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.d.ts +1 -1
  802. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.d.ts.map +1 -1
  803. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.js +3 -0
  804. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/bugReportsCapabilities.js.map +1 -1
  805. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.d.ts +70 -5
  806. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.d.ts.map +1 -1
  807. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.js +10 -0
  808. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/capabilitiesSchema.js.map +1 -1
  809. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.d.ts +19 -0
  810. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.d.ts.map +1 -0
  811. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.js +18 -0
  812. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/connectedServicesCapabilities.js.map +1 -0
  813. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/encryptionCapabilities.d.ts +4 -4
  814. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.d.ts +84 -0
  815. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.d.ts.map +1 -0
  816. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.js +56 -0
  817. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/petsCapabilities.js.map +1 -0
  818. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverCapabilities.d.ts +6 -0
  819. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverCapabilities.d.ts.map +1 -1
  820. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.d.ts +9 -0
  821. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.d.ts.map +1 -0
  822. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.js +18 -0
  823. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverIdentityCapabilities.js.map +1 -0
  824. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.d.ts +6 -0
  825. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.d.ts.map +1 -1
  826. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.js +1 -0
  827. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/serverRetentionCapabilities.js.map +1 -1
  828. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.d.ts +50 -0
  829. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.d.ts.map +1 -0
  830. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.js +35 -0
  831. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sessionCapabilities.js.map +1 -0
  832. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.d.ts +16 -0
  833. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.d.ts.map +1 -0
  834. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.js +16 -0
  835. package/node_modules/@happier-dev/protocol/dist/features/payload/capabilities/sharingCapabilities.js.map +1 -0
  836. package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.d.ts +36 -0
  837. package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.d.ts.map +1 -1
  838. package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.js +40 -2
  839. package/node_modules/@happier-dev/protocol/dist/features/payload/featureGatesSchema.js.map +1 -1
  840. package/node_modules/@happier-dev/protocol/dist/features/payload/featuresResponseSchema.d.ts +106 -5
  841. package/node_modules/@happier-dev/protocol/dist/features/payload/featuresResponseSchema.d.ts.map +1 -1
  842. package/node_modules/@happier-dev/protocol/dist/features.d.ts +5 -0
  843. package/node_modules/@happier-dev/protocol/dist/features.d.ts.map +1 -1
  844. package/node_modules/@happier-dev/protocol/dist/features.js +5 -0
  845. package/node_modules/@happier-dev/protocol/dist/features.js.map +1 -1
  846. package/node_modules/@happier-dev/protocol/dist/index.d.ts +111 -36
  847. package/node_modules/@happier-dev/protocol/dist/index.d.ts.map +1 -1
  848. package/node_modules/@happier-dev/protocol/dist/index.js +109 -35
  849. package/node_modules/@happier-dev/protocol/dist/index.js.map +1 -1
  850. package/node_modules/@happier-dev/protocol/dist/installables.d.ts +43 -5
  851. package/node_modules/@happier-dev/protocol/dist/installables.d.ts.map +1 -1
  852. package/node_modules/@happier-dev/protocol/dist/installables.js +29 -2
  853. package/node_modules/@happier-dev/protocol/dist/installables.js.map +1 -1
  854. package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.d.ts +2 -2
  855. package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.d.ts.map +1 -1
  856. package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.js +3 -1
  857. package/node_modules/@happier-dev/protocol/dist/llmTasks/llmTaskRunnerConfigV1.js.map +1 -1
  858. package/node_modules/@happier-dev/protocol/dist/machineFileBrowser.d.ts +2 -2
  859. package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.d.ts +8 -0
  860. package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.d.ts.map +1 -0
  861. package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.js +45 -0
  862. package/node_modules/@happier-dev/protocol/dist/machineHost/normalizeMachineHost.js.map +1 -0
  863. package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.d.ts +3 -0
  864. package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.d.ts.map +1 -0
  865. package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.js +3 -0
  866. package/node_modules/@happier-dev/protocol/dist/machineIdentity/index.js.map +1 -0
  867. package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.d.ts +17 -0
  868. package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.d.ts.map +1 -0
  869. package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.js +18 -0
  870. package/node_modules/@happier-dev/protocol/dist/machineIdentity/machineLocality.js.map +1 -0
  871. package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.d.ts +8 -0
  872. package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.d.ts.map +1 -0
  873. package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.js +73 -0
  874. package/node_modules/@happier-dev/protocol/dist/machineIdentity/normalizeMachineHomeDir.js.map +1 -0
  875. package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.d.ts +96 -0
  876. package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.d.ts.map +1 -0
  877. package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.js +107 -0
  878. package/node_modules/@happier-dev/protocol/dist/machineOwnership/daemonOwnership.js.map +1 -0
  879. package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.d.ts +1 -1
  880. package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.d.ts.map +1 -1
  881. package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.js +9 -2
  882. package/node_modules/@happier-dev/protocol/dist/machineTransfer/transferStream.js.map +1 -1
  883. package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.d.ts +57 -0
  884. package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.d.ts.map +1 -0
  885. package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.js +88 -0
  886. package/node_modules/@happier-dev/protocol/dist/machines/identity/canonicalMachineId.js.map +1 -0
  887. package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.d.ts +42 -0
  888. package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.d.ts.map +1 -0
  889. package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.js +145 -0
  890. package/node_modules/@happier-dev/protocol/dist/machines/identity/installationIdentity.js.map +1 -0
  891. package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.d.ts +14 -0
  892. package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.d.ts.map +1 -0
  893. package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.js +21 -0
  894. package/node_modules/@happier-dev/protocol/dist/machines/identity/machineReplacement.js.map +1 -0
  895. package/node_modules/@happier-dev/protocol/dist/machines/index.d.ts +4 -0
  896. package/node_modules/@happier-dev/protocol/dist/machines/index.d.ts.map +1 -0
  897. package/node_modules/@happier-dev/protocol/dist/machines/index.js +4 -0
  898. package/node_modules/@happier-dev/protocol/dist/machines/index.js.map +1 -0
  899. package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.d.ts +21 -0
  900. package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.d.ts.map +1 -0
  901. package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.js +23 -0
  902. package/node_modules/@happier-dev/protocol/dist/machines/metadataUpdate.js.map +1 -0
  903. package/node_modules/@happier-dev/protocol/dist/mcpServers/daemonRpcV1.d.ts +30 -24
  904. package/node_modules/@happier-dev/protocol/dist/mcpServers/daemonRpcV1.d.ts.map +1 -1
  905. package/node_modules/@happier-dev/protocol/dist/mcpServers/previewV1.d.ts +38 -36
  906. package/node_modules/@happier-dev/protocol/dist/mcpServers/previewV1.d.ts.map +1 -1
  907. package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.d.ts +25 -2
  908. package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.d.ts.map +1 -1
  909. package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.js +30 -0
  910. package/node_modules/@happier-dev/protocol/dist/mcpServers/sessionSelectionV1.js.map +1 -1
  911. package/node_modules/@happier-dev/protocol/dist/mcpServers/settingsV1.d.ts +3 -3
  912. package/node_modules/@happier-dev/protocol/dist/memory/memorySearch.d.ts +8 -8
  913. package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.d.ts +58 -12
  914. package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.d.ts.map +1 -1
  915. package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.js +46 -5
  916. package/node_modules/@happier-dev/protocol/dist/memory/memorySettings.js.map +1 -1
  917. package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.d.ts +101 -2
  918. package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.d.ts.map +1 -1
  919. package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.js +53 -0
  920. package/node_modules/@happier-dev/protocol/dist/memory/memoryStatus.js.map +1 -1
  921. package/node_modules/@happier-dev/protocol/dist/mentionRefV1.d.ts +107 -0
  922. package/node_modules/@happier-dev/protocol/dist/mentionRefV1.d.ts.map +1 -0
  923. package/node_modules/@happier-dev/protocol/dist/mentionRefV1.js +191 -0
  924. package/node_modules/@happier-dev/protocol/dist/mentionRefV1.js.map +1 -0
  925. package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.d.ts +258 -0
  926. package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.d.ts.map +1 -0
  927. package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.js +131 -0
  928. package/node_modules/@happier-dev/protocol/dist/pets/accountLibrary.js.map +1 -0
  929. package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.d.ts +52 -0
  930. package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.d.ts.map +1 -0
  931. package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.js +45 -0
  932. package/node_modules/@happier-dev/protocol/dist/pets/assetFormats.js.map +1 -0
  933. package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.d.ts +13 -0
  934. package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.d.ts.map +1 -0
  935. package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.js +51 -0
  936. package/node_modules/@happier-dev/protocol/dist/pets/atlasPixelInspection.js.map +1 -0
  937. package/node_modules/@happier-dev/protocol/dist/pets/constants.d.ts +85 -0
  938. package/node_modules/@happier-dev/protocol/dist/pets/constants.d.ts.map +1 -0
  939. package/node_modules/@happier-dev/protocol/dist/pets/constants.js +59 -0
  940. package/node_modules/@happier-dev/protocol/dist/pets/constants.js.map +1 -0
  941. package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.d.ts +610 -0
  942. package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.d.ts.map +1 -0
  943. package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.js +265 -0
  944. package/node_modules/@happier-dev/protocol/dist/pets/daemonRpc.js.map +1 -0
  945. package/node_modules/@happier-dev/protocol/dist/pets/index.d.ts +8 -0
  946. package/node_modules/@happier-dev/protocol/dist/pets/index.d.ts.map +1 -0
  947. package/node_modules/@happier-dev/protocol/dist/pets/index.js +8 -0
  948. package/node_modules/@happier-dev/protocol/dist/pets/index.js.map +1 -0
  949. package/node_modules/@happier-dev/protocol/dist/pets/manifest.d.ts +20 -0
  950. package/node_modules/@happier-dev/protocol/dist/pets/manifest.d.ts.map +1 -0
  951. package/node_modules/@happier-dev/protocol/dist/pets/manifest.js +17 -0
  952. package/node_modules/@happier-dev/protocol/dist/pets/manifest.js.map +1 -0
  953. package/node_modules/@happier-dev/protocol/dist/pets/source.d.ts +79 -0
  954. package/node_modules/@happier-dev/protocol/dist/pets/source.d.ts.map +1 -0
  955. package/node_modules/@happier-dev/protocol/dist/pets/source.js +62 -0
  956. package/node_modules/@happier-dev/protocol/dist/pets/source.js.map +1 -0
  957. package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.d.ts +22 -8
  958. package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.d.ts.map +1 -1
  959. package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.js +5 -0
  960. package/node_modules/@happier-dev/protocol/dist/profiles/backendProfileSchema.js.map +1 -1
  961. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptAssetsV1.d.ts +41 -41
  962. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptBundleSchemas.d.ts +3 -3
  963. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptDocV2.d.ts +1 -1
  964. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptExternalLinksV1.d.ts +8 -8
  965. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.d.ts +3 -0
  966. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.d.ts.map +1 -1
  967. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.js +1 -1
  968. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptInvocationsV1.js.map +1 -1
  969. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptPlacementV1.d.ts +2 -2
  970. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptRegistriesV1.d.ts +18 -18
  971. package/node_modules/@happier-dev/protocol/dist/promptLibrary/promptStacksV1.d.ts +18 -18
  972. package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.d.ts +2 -0
  973. package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.d.ts.map +1 -1
  974. package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.js +7 -2
  975. package/node_modules/@happier-dev/protocol/dist/prompts/buildAppendSystemPromptBaseV1.js.map +1 -1
  976. package/node_modules/@happier-dev/protocol/dist/prompts/changeTitleInstructionV1.js.map +1 -1
  977. package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.d.ts +54 -0
  978. package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.d.ts.map +1 -0
  979. package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.js +67 -0
  980. package/node_modules/@happier-dev/protocol/dist/prompts/codingPromptBehaviorV1.js.map +1 -0
  981. package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.d.ts.map +1 -1
  982. package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.js +15 -15
  983. package/node_modules/@happier-dev/protocol/dist/prompts/executionRunsGuidanceV1.js.map +1 -1
  984. package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.d.ts +10 -0
  985. package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.d.ts.map +1 -1
  986. package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.js +28 -4
  987. package/node_modules/@happier-dev/protocol/dist/prompts/systemPromptBaseV1.js.map +1 -1
  988. package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.d.ts +3 -2
  989. package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.d.ts.map +1 -1
  990. package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.js +1 -1
  991. package/node_modules/@happier-dev/protocol/dist/providers/agentProviderIdsV1.js.map +1 -1
  992. package/node_modules/@happier-dev/protocol/dist/providers/claude/builtInBackendProfiles.d.ts.map +1 -1
  993. package/node_modules/@happier-dev/protocol/dist/providers/claude/builtInBackendProfiles.js +60 -0
  994. package/node_modules/@happier-dev/protocol/dist/providers/claude/builtInBackendProfiles.js.map +1 -1
  995. package/node_modules/@happier-dev/protocol/dist/providers/claude/index.d.ts +4 -0
  996. package/node_modules/@happier-dev/protocol/dist/providers/claude/index.d.ts.map +1 -0
  997. package/node_modules/@happier-dev/protocol/dist/providers/claude/index.js +4 -0
  998. package/node_modules/@happier-dev/protocol/dist/providers/claude/index.js.map +1 -0
  999. package/node_modules/@happier-dev/protocol/dist/providers/claude/memoryDefaults.d.ts +1 -1
  1000. package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.d.ts +6 -0
  1001. package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.d.ts.map +1 -0
  1002. package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.js +17 -0
  1003. package/node_modules/@happier-dev/protocol/dist/providers/claude/sdkSkills.js.map +1 -0
  1004. package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.d.ts +100 -0
  1005. package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.d.ts.map +1 -0
  1006. package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.js +301 -0
  1007. package/node_modules/@happier-dev/protocol/dist/providers/claude/sessionTasks.js.map +1 -0
  1008. package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.d.ts +37 -0
  1009. package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.d.ts.map +1 -0
  1010. package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.js +60 -0
  1011. package/node_modules/@happier-dev/protocol/dist/providers/claude/slashCommands.js.map +1 -0
  1012. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.d.ts +10 -0
  1013. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.d.ts.map +1 -0
  1014. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.js +11 -0
  1015. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerCapabilities.js.map +1 -0
  1016. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.d.ts +35 -0
  1017. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.d.ts.map +1 -0
  1018. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.js +74 -0
  1019. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerGoal.js.map +1 -0
  1020. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.d.ts +12 -0
  1021. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.d.ts.map +1 -0
  1022. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.js +21 -0
  1023. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPermissions.js.map +1 -0
  1024. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.d.ts +15 -0
  1025. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.d.ts.map +1 -0
  1026. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.js +48 -0
  1027. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerPlugin.js.map +1 -0
  1028. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.d.ts +65 -0
  1029. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.d.ts.map +1 -0
  1030. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.js +43 -0
  1031. package/node_modules/@happier-dev/protocol/dist/providers/codex/appServerTurnInput.js.map +1 -0
  1032. package/node_modules/@happier-dev/protocol/dist/providers/codex/backendMode.d.ts +1 -1
  1033. package/node_modules/@happier-dev/protocol/dist/providers/codex/backendMode.d.ts.map +1 -1
  1034. package/node_modules/@happier-dev/protocol/dist/providers/codex/builtInBackendProfiles.d.ts.map +1 -1
  1035. package/node_modules/@happier-dev/protocol/dist/providers/codex/builtInBackendProfiles.js +3 -0
  1036. package/node_modules/@happier-dev/protocol/dist/providers/codex/builtInBackendProfiles.js.map +1 -1
  1037. package/node_modules/@happier-dev/protocol/dist/providers/codex/index.d.ts +7 -0
  1038. package/node_modules/@happier-dev/protocol/dist/providers/codex/index.d.ts.map +1 -0
  1039. package/node_modules/@happier-dev/protocol/dist/providers/codex/index.js +7 -0
  1040. package/node_modules/@happier-dev/protocol/dist/providers/codex/index.js.map +1 -0
  1041. package/node_modules/@happier-dev/protocol/dist/providers/codex/installables.d.ts +2 -2
  1042. package/node_modules/@happier-dev/protocol/dist/providers/codex/installables.d.ts.map +1 -1
  1043. package/node_modules/@happier-dev/protocol/dist/providers/gemini/builtInBackendProfiles.d.ts.map +1 -1
  1044. package/node_modules/@happier-dev/protocol/dist/providers/gemini/builtInBackendProfiles.js +4 -2
  1045. package/node_modules/@happier-dev/protocol/dist/providers/gemini/builtInBackendProfiles.js.map +1 -1
  1046. package/node_modules/@happier-dev/protocol/dist/providers/github/installables.d.ts +5 -0
  1047. package/node_modules/@happier-dev/protocol/dist/providers/github/installables.d.ts.map +1 -0
  1048. package/node_modules/@happier-dev/protocol/dist/providers/github/installables.js +5 -0
  1049. package/node_modules/@happier-dev/protocol/dist/providers/github/installables.js.map +1 -0
  1050. package/node_modules/@happier-dev/protocol/dist/providers/kiro/acpCatalog.d.ts +2 -2
  1051. package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.d.ts +11 -0
  1052. package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.d.ts.map +1 -0
  1053. package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.js +26 -0
  1054. package/node_modules/@happier-dev/protocol/dist/providers/opencode/appSkills.js.map +1 -0
  1055. package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.d.ts +4 -0
  1056. package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.d.ts.map +1 -0
  1057. package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.js +4 -0
  1058. package/node_modules/@happier-dev/protocol/dist/providers/opencode/index.js.map +1 -0
  1059. package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.d.ts +17 -0
  1060. package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.d.ts.map +1 -0
  1061. package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.js +58 -0
  1062. package/node_modules/@happier-dev/protocol/dist/providers/opencode/sessionTodo.js.map +1 -0
  1063. package/node_modules/@happier-dev/protocol/dist/push/pushNotificationActions.d.ts +8 -8
  1064. package/node_modules/@happier-dev/protocol/dist/push/pushNotificationActions.d.ts.map +1 -1
  1065. package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.d.ts +48 -0
  1066. package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.d.ts.map +1 -0
  1067. package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.js +60 -0
  1068. package/node_modules/@happier-dev/protocol/dist/replaySeedBudget.js.map +1 -0
  1069. package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.d.ts +43 -0
  1070. package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.d.ts.map +1 -0
  1071. package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.js +17 -0
  1072. package/node_modules/@happier-dev/protocol/dist/retention/serverRetentionPolicyV2.js.map +1 -0
  1073. package/node_modules/@happier-dev/protocol/dist/reviews/ReviewFinding.d.ts +10 -10
  1074. package/node_modules/@happier-dev/protocol/dist/reviews/ReviewQuestion.d.ts +2 -2
  1075. package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.d.ts +10 -1
  1076. package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.d.ts.map +1 -1
  1077. package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.js +3 -1
  1078. package/node_modules/@happier-dev/protocol/dist/reviews/reviewStart.js.map +1 -1
  1079. package/node_modules/@happier-dev/protocol/dist/rpc.d.ts +231 -126
  1080. package/node_modules/@happier-dev/protocol/dist/rpc.d.ts.map +1 -1
  1081. package/node_modules/@happier-dev/protocol/dist/rpc.js +168 -0
  1082. package/node_modules/@happier-dev/protocol/dist/rpc.js.map +1 -1
  1083. package/node_modules/@happier-dev/protocol/dist/rpcErrors.d.ts +16 -0
  1084. package/node_modules/@happier-dev/protocol/dist/rpcErrors.d.ts.map +1 -1
  1085. package/node_modules/@happier-dev/protocol/dist/rpcErrors.js +44 -0
  1086. package/node_modules/@happier-dev/protocol/dist/rpcErrors.js.map +1 -1
  1087. package/node_modules/@happier-dev/protocol/dist/scm.d.ts +555 -173
  1088. package/node_modules/@happier-dev/protocol/dist/scm.d.ts.map +1 -1
  1089. package/node_modules/@happier-dev/protocol/dist/scm.js +232 -45
  1090. package/node_modules/@happier-dev/protocol/dist/scm.js.map +1 -1
  1091. package/node_modules/@happier-dev/protocol/dist/scmBranches.d.ts +112 -37
  1092. package/node_modules/@happier-dev/protocol/dist/scmBranches.d.ts.map +1 -1
  1093. package/node_modules/@happier-dev/protocol/dist/scmBranches.js +15 -1
  1094. package/node_modules/@happier-dev/protocol/dist/scmBranches.js.map +1 -1
  1095. package/node_modules/@happier-dev/protocol/dist/scmCapabilities.d.ts.map +1 -1
  1096. package/node_modules/@happier-dev/protocol/dist/scmCapabilities.js +38 -0
  1097. package/node_modules/@happier-dev/protocol/dist/scmCapabilities.js.map +1 -1
  1098. package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.d.ts +43 -0
  1099. package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.d.ts.map +1 -0
  1100. package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.js +42 -0
  1101. package/node_modules/@happier-dev/protocol/dist/scmErrorCodes.js.map +1 -0
  1102. package/node_modules/@happier-dev/protocol/dist/scmPullRequests.d.ts +594 -0
  1103. package/node_modules/@happier-dev/protocol/dist/scmPullRequests.d.ts.map +1 -0
  1104. package/node_modules/@happier-dev/protocol/dist/scmPullRequests.js +192 -0
  1105. package/node_modules/@happier-dev/protocol/dist/scmPullRequests.js.map +1 -0
  1106. package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.d.ts +878 -0
  1107. package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.d.ts.map +1 -0
  1108. package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.js +109 -0
  1109. package/node_modules/@happier-dev/protocol/dist/scmRepositoryProvisioning.js.map +1 -0
  1110. package/node_modules/@happier-dev/protocol/dist/scmRequestBase.d.ts +26 -0
  1111. package/node_modules/@happier-dev/protocol/dist/scmRequestBase.d.ts.map +1 -0
  1112. package/node_modules/@happier-dev/protocol/dist/scmRequestBase.js +11 -0
  1113. package/node_modules/@happier-dev/protocol/dist/scmRequestBase.js.map +1 -0
  1114. package/node_modules/@happier-dev/protocol/dist/scmStash.d.ts +60 -45
  1115. package/node_modules/@happier-dev/protocol/dist/scmStash.d.ts.map +1 -1
  1116. package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.d.ts +52 -0
  1117. package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.d.ts.map +1 -0
  1118. package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.js +85 -0
  1119. package/node_modules/@happier-dev/protocol/dist/scmWorktreeName.js.map +1 -0
  1120. package/node_modules/@happier-dev/protocol/dist/scmWorktrees.d.ts +49 -37
  1121. package/node_modules/@happier-dev/protocol/dist/scmWorktrees.d.ts.map +1 -1
  1122. package/node_modules/@happier-dev/protocol/dist/sentFrom.d.ts +10 -10
  1123. package/node_modules/@happier-dev/protocol/dist/sentFrom.d.ts.map +1 -1
  1124. package/node_modules/@happier-dev/protocol/dist/serverControl/contract.d.ts +22 -18
  1125. package/node_modules/@happier-dev/protocol/dist/serverControl/contract.d.ts.map +1 -1
  1126. package/node_modules/@happier-dev/protocol/dist/serverUrls/index.d.ts +1 -0
  1127. package/node_modules/@happier-dev/protocol/dist/serverUrls/index.d.ts.map +1 -1
  1128. package/node_modules/@happier-dev/protocol/dist/serverUrls/index.js +1 -0
  1129. package/node_modules/@happier-dev/protocol/dist/serverUrls/index.js.map +1 -1
  1130. package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.d.ts +36 -0
  1131. package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.d.ts.map +1 -0
  1132. package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.js +65 -0
  1133. package/node_modules/@happier-dev/protocol/dist/serverUrls/loopbackHostname.js.map +1 -0
  1134. package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.d.ts +21 -1
  1135. package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.d.ts.map +1 -1
  1136. package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.js +26 -0
  1137. package/node_modules/@happier-dev/protocol/dist/serverUrls/serverUrlComparableKey.js.map +1 -1
  1138. package/node_modules/@happier-dev/protocol/dist/session/attachMetadataIdentityPolicy.d.ts +1 -1
  1139. package/node_modules/@happier-dev/protocol/dist/session/attachMetadataIdentityPolicy.d.ts.map +1 -1
  1140. package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.d.ts +74 -0
  1141. package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.d.ts.map +1 -0
  1142. package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.js +66 -0
  1143. package/node_modules/@happier-dev/protocol/dist/sessionActivityHeadlineOrdering.js.map +1 -0
  1144. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.d.ts +14 -0
  1145. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.d.ts.map +1 -0
  1146. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.js +29 -0
  1147. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromExecutionRunStatus.js.map +1 -0
  1148. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.d.ts +34 -0
  1149. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.d.ts.map +1 -0
  1150. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.js +54 -0
  1151. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromSubagentStatus.js.map +1 -0
  1152. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.d.ts +10 -0
  1153. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.d.ts.map +1 -0
  1154. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.js +30 -0
  1155. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowAgentStatus.js.map +1 -0
  1156. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.d.ts +10 -0
  1157. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.d.ts.map +1 -0
  1158. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.js +33 -0
  1159. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/fromWorkflowRunStatus.js.map +1 -0
  1160. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.d.ts +5 -0
  1161. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.d.ts.map +1 -0
  1162. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.js +5 -0
  1163. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/adapters/index.js.map +1 -0
  1164. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.d.ts +71 -0
  1165. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.d.ts.map +1 -0
  1166. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.js +119 -0
  1167. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryId.js.map +1 -0
  1168. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.d.ts +81 -0
  1169. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.d.ts.map +1 -0
  1170. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.js +143 -0
  1171. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityEntryV1.js.map +1 -0
  1172. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.d.ts +41 -0
  1173. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.d.ts.map +1 -0
  1174. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.js +77 -0
  1175. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineBuild.js.map +1 -0
  1176. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.d.ts +115 -0
  1177. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.d.ts.map +1 -0
  1178. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.js +113 -0
  1179. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityHeadlineV1.js.map +1 -0
  1180. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.d.ts +32 -0
  1181. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.d.ts.map +1 -0
  1182. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.js +31 -0
  1183. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityKindV1.js.map +1 -0
  1184. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.d.ts +100 -0
  1185. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.d.ts.map +1 -0
  1186. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.js +129 -0
  1187. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityStatusV1.js.map +1 -0
  1188. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.d.ts +25 -0
  1189. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.d.ts.map +1 -0
  1190. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.js +46 -0
  1191. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/agentActivityToneV1.js.map +1 -0
  1192. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.d.ts +10 -0
  1193. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.d.ts.map +1 -0
  1194. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.js +10 -0
  1195. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/index.js.map +1 -0
  1196. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.d.ts +33 -0
  1197. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.d.ts.map +1 -0
  1198. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.js +38 -0
  1199. package/node_modules/@happier-dev/protocol/dist/sessionAgentActivity/workflowAgentSidechainId.js.map +1 -0
  1200. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.d.ts +409 -0
  1201. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.d.ts.map +1 -0
  1202. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.js +457 -0
  1203. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransition.js.map +1 -0
  1204. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.d.ts +110 -0
  1205. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.d.ts.map +1 -0
  1206. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.js +184 -0
  1207. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionDivider.js.map +1 -0
  1208. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.d.ts +2 -0
  1209. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.d.ts.map +1 -0
  1210. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.js +2 -0
  1211. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.contract.test-d.js.map +1 -0
  1212. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.d.ts +155 -0
  1213. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.d.ts.map +1 -0
  1214. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.js +54 -0
  1215. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionEffectStage.js.map +1 -0
  1216. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.d.ts +808 -0
  1217. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.d.ts.map +1 -0
  1218. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.js +577 -0
  1219. package/node_modules/@happier-dev/protocol/dist/sessionAgentTransitionVectors.js.map +1 -0
  1220. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.d.ts +12 -1
  1221. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.d.ts.map +1 -1
  1222. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.js +10 -0
  1223. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/buildFieldArtifacts.js.map +1 -1
  1224. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/contextKinds.d.ts +1 -1
  1225. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/contextKinds.d.ts.map +1 -1
  1226. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.d.ts +537 -330
  1227. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.d.ts.map +1 -1
  1228. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.js +111 -1
  1229. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldCatalog.js.map +1 -1
  1230. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldDefinition.d.ts +6 -4
  1231. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldDefinition.d.ts.map +1 -1
  1232. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/fieldDefinition.js.map +1 -1
  1233. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.d.ts +757 -440
  1234. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.d.ts.map +1 -1
  1235. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.js +5 -1
  1236. package/node_modules/@happier-dev/protocol/dist/sessionAuthoring/index.js.map +1 -1
  1237. package/node_modules/@happier-dev/protocol/dist/sessionChanges/reconcileWithScmSnapshot.d.ts.map +1 -1
  1238. package/node_modules/@happier-dev/protocol/dist/sessionChanges/reconcileWithScmSnapshot.js +90 -3
  1239. package/node_modules/@happier-dev/protocol/dist/sessionChanges/reconcileWithScmSnapshot.js.map +1 -1
  1240. package/node_modules/@happier-dev/protocol/dist/sessionChanges/schemas.d.ts +76 -76
  1241. package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.d.ts +8 -8
  1242. package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.d.ts.map +1 -1
  1243. package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.js +3 -2
  1244. package/node_modules/@happier-dev/protocol/dist/sessionContinueWithReplay.js.map +1 -1
  1245. package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.d.ts +2723 -359
  1246. package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.d.ts.map +1 -1
  1247. package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.js +190 -10
  1248. package/node_modules/@happier-dev/protocol/dist/sessionControl/contract.js.map +1 -1
  1249. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.d.ts +1 -1
  1250. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.d.ts.map +1 -1
  1251. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.js +1 -1
  1252. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffRpc.js.map +1 -1
  1253. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.d.ts +401 -91
  1254. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.d.ts.map +1 -1
  1255. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.js +66 -0
  1256. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffSchemas.js.map +1 -1
  1257. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffStatus.d.ts +32 -31
  1258. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffStatus.d.ts.map +1 -1
  1259. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.d.ts +10 -5
  1260. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.d.ts.map +1 -1
  1261. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.js +1 -1
  1262. package/node_modules/@happier-dev/protocol/dist/sessionControl/handoff/handoffTypes.js.map +1 -1
  1263. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.d.ts +30 -0
  1264. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.d.ts.map +1 -0
  1265. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.js +42 -0
  1266. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingInputInterruptAndRunV1.js.map +1 -0
  1267. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.d.ts +49 -0
  1268. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.d.ts.map +1 -0
  1269. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.js +35 -0
  1270. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionPendingQueueWakeV1.js.map +1 -0
  1271. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.d.ts +48 -0
  1272. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.d.ts.map +1 -0
  1273. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.js +49 -0
  1274. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionTerminalComposerClearV1.js.map +1 -0
  1275. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.d.ts +236 -0
  1276. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.d.ts.map +1 -0
  1277. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.js +318 -0
  1278. package/node_modules/@happier-dev/protocol/dist/sessionControl/sessionUsageLimitRecoveryOperationResultV1.js.map +1 -0
  1279. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.d.ts +258 -0
  1280. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.d.ts.map +1 -0
  1281. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.js +27 -0
  1282. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderAssignments.js.map +1 -0
  1283. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.d.ts +63 -0
  1284. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.d.ts.map +1 -0
  1285. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.js +52 -0
  1286. package/node_modules/@happier-dev/protocol/dist/sessionFolders/folderSettings.js.map +1 -0
  1287. package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.d.ts +3 -0
  1288. package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.d.ts.map +1 -0
  1289. package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.js +3 -0
  1290. package/node_modules/@happier-dev/protocol/dist/sessionFolders/index.js.map +1 -0
  1291. package/node_modules/@happier-dev/protocol/dist/sessionFork.d.ts +36 -15
  1292. package/node_modules/@happier-dev/protocol/dist/sessionFork.d.ts.map +1 -1
  1293. package/node_modules/@happier-dev/protocol/dist/sessionFork.js +42 -12
  1294. package/node_modules/@happier-dev/protocol/dist/sessionFork.js.map +1 -1
  1295. package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.d.ts +25 -0
  1296. package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.d.ts.map +1 -0
  1297. package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.js +27 -0
  1298. package/node_modules/@happier-dev/protocol/dist/sessionForkPoint.js.map +1 -0
  1299. package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.d.ts +2 -0
  1300. package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.d.ts.map +1 -0
  1301. package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.js +2 -0
  1302. package/node_modules/@happier-dev/protocol/dist/sessionMedia/index.js.map +1 -0
  1303. package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.d.ts +304 -0
  1304. package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.d.ts.map +1 -0
  1305. package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.js +117 -0
  1306. package/node_modules/@happier-dev/protocol/dist/sessionMedia/sessionMediaSchemas.js.map +1 -0
  1307. package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.d.ts +104 -0
  1308. package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.d.ts.map +1 -0
  1309. package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.js +72 -0
  1310. package/node_modules/@happier-dev/protocol/dist/sessionMessages/acceptedPendingSettlementV1.js.map +1 -0
  1311. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.d.ts +30 -0
  1312. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.d.ts.map +1 -0
  1313. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.js +33 -0
  1314. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryBlockedReason.js.map +1 -0
  1315. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.d.ts +44 -0
  1316. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.d.ts.map +1 -0
  1317. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.js +115 -0
  1318. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingDeliveryStatusV1.js.map +1 -0
  1319. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.d.ts +7 -0
  1320. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.d.ts.map +1 -0
  1321. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.js +12 -0
  1322. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingLocalId.js.map +1 -0
  1323. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.d.ts +8 -0
  1324. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.d.ts.map +1 -0
  1325. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.js +7 -0
  1326. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingProviderAction.js.map +1 -0
  1327. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.d.ts +17 -0
  1328. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.d.ts.map +1 -0
  1329. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.js +11 -0
  1330. package/node_modules/@happier-dev/protocol/dist/sessionMessages/pendingRequestedActionV1.js.map +1 -0
  1331. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.d.ts +7 -0
  1332. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.d.ts.map +1 -0
  1333. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.js +6 -0
  1334. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageDeliveryResolutionV1.js.map +1 -0
  1335. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.d.ts +20 -14
  1336. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.d.ts.map +1 -1
  1337. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.js +24 -0
  1338. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageMeta.js.map +1 -1
  1339. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.d.ts +10 -0
  1340. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.d.ts.map +1 -0
  1341. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.js +4 -0
  1342. package/node_modules/@happier-dev/protocol/dist/sessionMessages/sessionMessageRole.js.map +1 -0
  1343. package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.d.ts +18 -0
  1344. package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.d.ts.map +1 -0
  1345. package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.js +51 -0
  1346. package/node_modules/@happier-dev/protocol/dist/sessionMessages/specialCommands.js.map +1 -0
  1347. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.d.ts +81 -0
  1348. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.d.ts.map +1 -0
  1349. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.js +62 -0
  1350. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptObservationV1.js.map +1 -0
  1351. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.d.ts +1103 -22
  1352. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.d.ts.map +1 -1
  1353. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.js +621 -17
  1354. package/node_modules/@happier-dev/protocol/dist/sessionMessages/transcriptRawRecordV1.js.map +1 -1
  1355. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.d.ts +14 -3
  1356. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.d.ts.map +1 -1
  1357. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.js +22 -3
  1358. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/agentRuntimeDescriptorV1.js.map +1 -1
  1359. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.d.ts +19 -0
  1360. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.d.ts.map +1 -0
  1361. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.js +56 -0
  1362. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/connectedServiceMaterializationIdentityV1.js.map +1 -0
  1363. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/metadataOverridesV1.d.ts +2 -2
  1364. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.d.ts +17 -0
  1365. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.d.ts.map +1 -0
  1366. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.js +60 -0
  1367. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerAccountUsageRefsV1.js.map +1 -0
  1368. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.d.ts +25 -0
  1369. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.d.ts.map +1 -0
  1370. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.js +21 -0
  1371. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/providerSessionInfoV1.js.map +1 -0
  1372. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.d.ts +25 -0
  1373. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.d.ts.map +1 -0
  1374. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.js +37 -0
  1375. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionContinuationRecoveryIdentityV1.js.map +1 -0
  1376. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.d.ts +31 -5
  1377. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.d.ts.map +1 -1
  1378. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.js +64 -0
  1379. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionPermissionModes.js.map +1 -1
  1380. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.d.ts +159 -0
  1381. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.d.ts.map +1 -0
  1382. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.js +75 -0
  1383. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionUsageLimitRecoveryV1.js.map +1 -0
  1384. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.d.ts +37 -0
  1385. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.d.ts.map +1 -0
  1386. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.js +48 -0
  1387. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/sessionWorkspaceLocationV1.js.map +1 -0
  1388. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.d.ts +57 -14
  1389. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.d.ts.map +1 -1
  1390. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.js +47 -4
  1391. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/terminalMetadata.js.map +1 -1
  1392. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsRemoteSessionLaunchMode.d.ts +2 -2
  1393. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsRemoteSessionLaunchMode.d.ts.map +1 -1
  1394. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.d.ts +5 -0
  1395. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.d.ts.map +1 -0
  1396. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.js +16 -0
  1397. package/node_modules/@happier-dev/protocol/dist/sessionMetadata/windowsTerminalWindowName.js.map +1 -0
  1398. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.d.ts +21 -0
  1399. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.d.ts.map +1 -0
  1400. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.js +27 -0
  1401. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/constants.js.map +1 -0
  1402. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.d.ts +10 -0
  1403. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.d.ts.map +1 -0
  1404. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.js +29 -0
  1405. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/content.js.map +1 -0
  1406. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.d.ts +30 -0
  1407. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.d.ts.map +1 -0
  1408. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.js +33 -0
  1409. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/folders.js.map +1 -0
  1410. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.d.ts +10 -0
  1411. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.d.ts.map +1 -0
  1412. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.js +10 -0
  1413. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/index.js.map +1 -0
  1414. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.d.ts +325 -0
  1415. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.d.ts.map +1 -0
  1416. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.js +184 -0
  1417. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/mutations.js.map +1 -0
  1418. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.d.ts +61 -0
  1419. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.d.ts.map +1 -0
  1420. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.js +29 -0
  1421. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/ordering.js.map +1 -0
  1422. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.d.ts +8 -0
  1423. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.d.ts.map +1 -0
  1424. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.js +12 -0
  1425. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/pins.js.map +1 -0
  1426. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.d.ts +208 -0
  1427. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.d.ts.map +1 -0
  1428. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.js +46 -0
  1429. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/snapshot.js.map +1 -0
  1430. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.d.ts +20 -0
  1431. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.d.ts.map +1 -0
  1432. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.js +21 -0
  1433. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/standings.js.map +1 -0
  1434. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.d.ts +23 -0
  1435. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.d.ts.map +1 -0
  1436. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.js +25 -0
  1437. package/node_modules/@happier-dev/protocol/dist/sessionOrganization/tags.js.map +1 -0
  1438. package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.d.ts +352 -0
  1439. package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.d.ts.map +1 -0
  1440. package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.js +207 -0
  1441. package/node_modules/@happier-dev/protocol/dist/sessionRunner/contract.js.map +1 -0
  1442. package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.d.ts +2 -0
  1443. package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.d.ts.map +1 -0
  1444. package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.js +2 -0
  1445. package/node_modules/@happier-dev/protocol/dist/sessionRunner/index.js.map +1 -0
  1446. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.d.ts +11 -0
  1447. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.d.ts.map +1 -0
  1448. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.js +14 -0
  1449. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/admission.js.map +1 -0
  1450. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.d.ts +4 -0
  1451. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.d.ts.map +1 -0
  1452. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.js +4 -0
  1453. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/index.js.map +1 -0
  1454. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.d.ts +49 -0
  1455. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.d.ts.map +1 -0
  1456. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.js +125 -0
  1457. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/projection.js.map +1 -0
  1458. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.d.ts +113 -0
  1459. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.d.ts.map +1 -0
  1460. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.js +79 -0
  1461. package/node_modules/@happier-dev/protocol/dist/sessionRuntimeActivity/transport.js.map +1 -0
  1462. package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.d.ts +47 -0
  1463. package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.d.ts.map +1 -0
  1464. package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.js +44 -0
  1465. package/node_modules/@happier-dev/protocol/dist/sessionSpawnSourceContextV1.js.map +1 -0
  1466. package/node_modules/@happier-dev/protocol/dist/sessionStop.d.ts +45 -0
  1467. package/node_modules/@happier-dev/protocol/dist/sessionStop.d.ts.map +1 -0
  1468. package/node_modules/@happier-dev/protocol/dist/sessionStop.js +27 -0
  1469. package/node_modules/@happier-dev/protocol/dist/sessionStop.js.map +1 -0
  1470. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.d.ts +36 -0
  1471. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.d.ts.map +1 -0
  1472. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.js +40 -0
  1473. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordKinds.js.map +1 -0
  1474. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.d.ts +303 -0
  1475. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.d.ts.map +1 -0
  1476. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.js +28 -0
  1477. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/activity/activitySystemRecordPayload.js.map +1 -0
  1478. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.d.ts +12 -0
  1479. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.d.ts.map +1 -0
  1480. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.js +12 -0
  1481. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/index.js.map +1 -0
  1482. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.d.ts +9 -0
  1483. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.d.ts.map +1 -0
  1484. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.js +8 -0
  1485. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordKinds.js.map +1 -0
  1486. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.d.ts +69 -0
  1487. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.d.ts.map +1 -0
  1488. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.js +28 -0
  1489. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/memory/memorySystemRecordPayload.js.map +1 -0
  1490. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.d.ts +28 -0
  1491. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.d.ts.map +1 -0
  1492. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.js +20 -0
  1493. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecord.js.map +1 -0
  1494. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.d.ts +150 -0
  1495. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.d.ts.map +1 -0
  1496. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.js +69 -0
  1497. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordCatalog.js.map +1 -0
  1498. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.d.ts +10 -0
  1499. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.d.ts.map +1 -0
  1500. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.js +3 -0
  1501. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordContent.js.map +1 -0
  1502. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.d.ts +10 -0
  1503. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.d.ts.map +1 -0
  1504. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.js +9 -0
  1505. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordKind.js.map +1 -0
  1506. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.d.ts +8 -0
  1507. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.d.ts.map +1 -0
  1508. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.js +9 -0
  1509. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordNamespace.js.map +1 -0
  1510. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.d.ts +114 -0
  1511. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.d.ts.map +1 -0
  1512. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.js +8 -0
  1513. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordPayloads.js.map +1 -0
  1514. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.d.ts +174 -0
  1515. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.d.ts.map +1 -0
  1516. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.js +68 -0
  1517. package/node_modules/@happier-dev/protocol/dist/sessionSystemRecords/sessionSystemRecordRoutes.js.map +1 -0
  1518. package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.d.ts +67 -3
  1519. package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.d.ts.map +1 -1
  1520. package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.js +290 -2
  1521. package/node_modules/@happier-dev/protocol/dist/sessionUserMessageRpc.js.map +1 -1
  1522. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.d.ts +8 -0
  1523. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.d.ts.map +1 -0
  1524. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.js +8 -0
  1525. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/index.js.map +1 -0
  1526. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.d.ts +9 -0
  1527. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.d.ts.map +1 -0
  1528. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.js +16 -0
  1529. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateBounds.js.map +1 -0
  1530. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.d.ts +8 -0
  1531. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.d.ts.map +1 -0
  1532. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.js +25 -0
  1533. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateItemIds.js.map +1 -0
  1534. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.d.ts +18 -0
  1535. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.d.ts.map +1 -0
  1536. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.js +87 -0
  1537. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateMerge.js.map +1 -0
  1538. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.d.ts +21 -0
  1539. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.d.ts.map +1 -0
  1540. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.js +91 -0
  1541. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStatePrimary.js.map +1 -0
  1542. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.d.ts +1574 -0
  1543. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.d.ts.map +1 -0
  1544. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.js +397 -0
  1545. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateRpc.js.map +1 -0
  1546. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.d.ts +165 -0
  1547. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.d.ts.map +1 -0
  1548. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.js +124 -0
  1549. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/sessionWorkStateV1.js.map +1 -0
  1550. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.d.ts +33 -0
  1551. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.d.ts.map +1 -0
  1552. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.js +73 -0
  1553. package/node_modules/@happier-dev/protocol/dist/sessionWorkState/skillCatalogItemIdentityV1.js.map +1 -0
  1554. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.d.ts +6 -0
  1555. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.d.ts.map +1 -0
  1556. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.js +6 -0
  1557. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/index.js.map +1 -0
  1558. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.d.ts +44 -0
  1559. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.d.ts.map +1 -0
  1560. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.js +123 -0
  1561. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineBuild.js.map +1 -0
  1562. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.d.ts +101 -0
  1563. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.d.ts.map +1 -0
  1564. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.js +49 -0
  1565. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowActivityHeadlineV1.js.map +1 -0
  1566. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.d.ts +17 -0
  1567. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.d.ts.map +1 -0
  1568. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.js +29 -0
  1569. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowPhases.js.map +1 -0
  1570. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.d.ts +20 -0
  1571. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.d.ts.map +1 -0
  1572. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.js +101 -0
  1573. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunRecordRevision.js.map +1 -0
  1574. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.d.ts +159 -0
  1575. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.d.ts.map +1 -0
  1576. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.js +125 -0
  1577. package/node_modules/@happier-dev/protocol/dist/sessionWorkflowActivity/sessionWorkflowRunSnapshotV1.js.map +1 -0
  1578. package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.d.ts +280 -0
  1579. package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.d.ts.map +1 -0
  1580. package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.js +125 -0
  1581. package/node_modules/@happier-dev/protocol/dist/sessions/control/runtimeIssueV1.js.map +1 -0
  1582. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.d.ts +336 -0
  1583. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.d.ts.map +1 -0
  1584. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.js +138 -0
  1585. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnMutationV1.js.map +1 -0
  1586. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.d.ts +224 -0
  1587. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.d.ts.map +1 -0
  1588. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.js +96 -0
  1589. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnV1.js.map +1 -0
  1590. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.d.ts +188 -0
  1591. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.d.ts.map +1 -0
  1592. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.js +24 -0
  1593. package/node_modules/@happier-dev/protocol/dist/sessions/turns/sessionTurnsProjectionV1.js.map +1 -0
  1594. package/node_modules/@happier-dev/protocol/dist/social/friends.d.ts +16 -16
  1595. package/node_modules/@happier-dev/protocol/dist/socketRpc.d.ts +36 -8
  1596. package/node_modules/@happier-dev/protocol/dist/socketRpc.d.ts.map +1 -1
  1597. package/node_modules/@happier-dev/protocol/dist/socketRpc.js +13 -0
  1598. package/node_modules/@happier-dev/protocol/dist/socketRpc.js.map +1 -1
  1599. package/node_modules/@happier-dev/protocol/dist/spawnSession.d.ts +91 -14
  1600. package/node_modules/@happier-dev/protocol/dist/spawnSession.d.ts.map +1 -1
  1601. package/node_modules/@happier-dev/protocol/dist/spawnSession.js +233 -0
  1602. package/node_modules/@happier-dev/protocol/dist/spawnSession.js.map +1 -1
  1603. package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.d.ts +66 -0
  1604. package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.d.ts.map +1 -0
  1605. package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.js +131 -0
  1606. package/node_modules/@happier-dev/protocol/dist/spawnSessionNonce.js.map +1 -0
  1607. package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewFindingsV1.d.ts +8 -8
  1608. package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewFindingsV2.d.ts +7 -7
  1609. package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewFollowUpV1.d.ts +6 -6
  1610. package/node_modules/@happier-dev/protocol/dist/structuredMessages/reviewPublishRequestV1.d.ts +5 -5
  1611. package/node_modules/@happier-dev/protocol/dist/structuredMessages/voiceAgentTurnV1.d.ts +1 -1
  1612. package/node_modules/@happier-dev/protocol/dist/systemTasks/spec.js.map +1 -1
  1613. package/node_modules/@happier-dev/protocol/dist/systemTasks/tailscaleSecureAccessTaskContract.d.ts +2 -2
  1614. package/node_modules/@happier-dev/protocol/dist/systemTasks/tailscaleSecureAccessTaskContract.d.ts.map +1 -1
  1615. package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.d.ts +7 -0
  1616. package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.d.ts.map +1 -0
  1617. package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.js +32 -0
  1618. package/node_modules/@happier-dev/protocol/dist/testing/accountScopedCipherFixtures.js.map +1 -0
  1619. package/node_modules/@happier-dev/protocol/dist/tools/happierToolsShellBridge.d.ts.map +1 -1
  1620. package/node_modules/@happier-dev/protocol/dist/tools/happierToolsShellBridge.js +95 -39
  1621. package/node_modules/@happier-dev/protocol/dist/tools/happierToolsShellBridge.js.map +1 -1
  1622. package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.d.ts +99 -0
  1623. package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.d.ts.map +1 -0
  1624. package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.js +246 -0
  1625. package/node_modules/@happier-dev/protocol/dist/tools/structuredQuestionAnswersV1.js.map +1 -0
  1626. package/node_modules/@happier-dev/protocol/dist/tools/v2/aliases.d.ts +11 -11
  1627. package/node_modules/@happier-dev/protocol/dist/tools/v2/aliases.d.ts.map +1 -1
  1628. package/node_modules/@happier-dev/protocol/dist/tools/v2/index.d.ts +2 -1
  1629. package/node_modules/@happier-dev/protocol/dist/tools/v2/index.d.ts.map +1 -1
  1630. package/node_modules/@happier-dev/protocol/dist/tools/v2/index.js +2 -1
  1631. package/node_modules/@happier-dev/protocol/dist/tools/v2/index.js.map +1 -1
  1632. package/node_modules/@happier-dev/protocol/dist/tools/v2/meta.d.ts +5 -5
  1633. package/node_modules/@happier-dev/protocol/dist/tools/v2/names.d.ts +45 -39
  1634. package/node_modules/@happier-dev/protocol/dist/tools/v2/names.d.ts.map +1 -1
  1635. package/node_modules/@happier-dev/protocol/dist/tools/v2/names.js +9 -0
  1636. package/node_modules/@happier-dev/protocol/dist/tools/v2/names.js.map +1 -1
  1637. package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.d.ts +9 -0
  1638. package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.d.ts.map +1 -0
  1639. package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.js +343 -0
  1640. package/node_modules/@happier-dev/protocol/dist/tools/v2/patch.js.map +1 -0
  1641. package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.d.ts +284 -100
  1642. package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.d.ts.map +1 -1
  1643. package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.js +62 -0
  1644. package/node_modules/@happier-dev/protocol/dist/tools/v2/schemas.js.map +1 -1
  1645. package/node_modules/@happier-dev/protocol/dist/tools/v2/subAgentFamilies.d.ts +1 -1
  1646. package/node_modules/@happier-dev/protocol/dist/tools/v2/subAgentFamilies.d.ts.map +1 -1
  1647. package/node_modules/@happier-dev/protocol/dist/updates.d.ts +813 -24
  1648. package/node_modules/@happier-dev/protocol/dist/updates.d.ts.map +1 -1
  1649. package/node_modules/@happier-dev/protocol/dist/updates.js +148 -1
  1650. package/node_modules/@happier-dev/protocol/dist/updates.js.map +1 -1
  1651. package/node_modules/@happier-dev/protocol/dist/voiceActions.d.ts +2 -2
  1652. package/node_modules/@happier-dev/protocol/dist/voiceActions.d.ts.map +1 -1
  1653. package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.d.ts +310 -0
  1654. package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.d.ts.map +1 -0
  1655. package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.js +108 -0
  1656. package/node_modules/@happier-dev/protocol/dist/workspace/anchors/v1.js.map +1 -0
  1657. package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.d.ts +39 -0
  1658. package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.d.ts.map +1 -0
  1659. package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.js +33 -0
  1660. package/node_modules/@happier-dev/protocol/dist/workspace/favicon/v1.js.map +1 -0
  1661. package/node_modules/@happier-dev/protocol/dist/workspaces/manifestSchema.d.ts +1 -1
  1662. package/node_modules/@happier-dev/protocol/package.json +8 -0
  1663. package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.d.ts +38 -0
  1664. package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.d.ts.map +1 -0
  1665. package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.js +1123 -0
  1666. package/node_modules/@happier-dev/release-runtime/dist/archiveExtraction.js.map +1 -0
  1667. package/node_modules/@happier-dev/release-runtime/dist/assets.d.ts.map +1 -1
  1668. package/node_modules/@happier-dev/release-runtime/dist/github.d.ts +2 -0
  1669. package/node_modules/@happier-dev/release-runtime/dist/github.d.ts.map +1 -1
  1670. package/node_modules/@happier-dev/release-runtime/dist/github.js +17 -15
  1671. package/node_modules/@happier-dev/release-runtime/dist/github.js.map +1 -1
  1672. package/node_modules/@happier-dev/release-runtime/dist/index.d.ts +1 -1
  1673. package/node_modules/@happier-dev/release-runtime/dist/index.d.ts.map +1 -1
  1674. package/node_modules/@happier-dev/release-runtime/dist/index.js +1 -1
  1675. package/node_modules/@happier-dev/release-runtime/dist/index.js.map +1 -1
  1676. package/node_modules/@happier-dev/release-runtime/dist/releaseRings.d.ts +3 -2
  1677. package/node_modules/@happier-dev/release-runtime/dist/releaseRings.d.ts.map +1 -1
  1678. package/node_modules/@happier-dev/release-runtime/dist/releaseRings.js +5 -0
  1679. package/node_modules/@happier-dev/release-runtime/dist/releaseRings.js.map +1 -1
  1680. package/node_modules/@happier-dev/release-runtime/node_modules/tar/LICENSE.md +55 -0
  1681. package/node_modules/@happier-dev/release-runtime/node_modules/tar/README.md +1233 -0
  1682. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.d.ts +3 -0
  1683. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
  1684. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.js +82 -0
  1685. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/create.js.map +1 -0
  1686. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
  1687. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
  1688. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
  1689. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
  1690. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
  1691. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
  1692. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.js +88 -0
  1693. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/extract.js.map +1 -0
  1694. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
  1695. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
  1696. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
  1697. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
  1698. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.d.ts +53 -0
  1699. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
  1700. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.js +348 -0
  1701. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/header.js.map +1 -0
  1702. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.d.ts +20 -0
  1703. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
  1704. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.js +64 -0
  1705. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.js.map +1 -0
  1706. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.min.js +4 -0
  1707. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
  1708. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
  1709. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
  1710. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
  1711. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
  1712. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.d.ts +7 -0
  1713. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
  1714. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.js +153 -0
  1715. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/list.js.map +1 -0
  1716. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
  1717. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
  1718. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.js +52 -0
  1719. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
  1720. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
  1721. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
  1722. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.js +187 -0
  1723. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
  1724. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
  1725. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
  1726. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
  1727. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
  1728. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
  1729. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
  1730. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
  1731. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
  1732. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
  1733. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
  1734. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
  1735. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
  1736. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.d.ts +604 -0
  1737. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
  1738. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.js +66 -0
  1739. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/options.js.map +1 -0
  1740. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
  1741. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
  1742. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.js +544 -0
  1743. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pack.js.map +1 -0
  1744. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/package.json +3 -0
  1745. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
  1746. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
  1747. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.js +655 -0
  1748. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/parse.js.map +1 -0
  1749. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
  1750. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
  1751. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
  1752. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
  1753. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
  1754. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
  1755. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.js +182 -0
  1756. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/pax.js.map +1 -0
  1757. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
  1758. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
  1759. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.js +7 -0
  1760. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
  1761. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
  1762. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
  1763. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.js +136 -0
  1764. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
  1765. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
  1766. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
  1767. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.js +227 -0
  1768. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/replace.js.map +1 -0
  1769. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
  1770. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
  1771. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
  1772. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
  1773. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
  1774. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
  1775. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
  1776. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
  1777. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
  1778. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
  1779. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
  1780. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
  1781. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.d.ts +16 -0
  1782. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
  1783. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.js +70 -0
  1784. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/types.js.map +1 -0
  1785. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
  1786. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
  1787. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.js +932 -0
  1788. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
  1789. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.d.ts +2 -0
  1790. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
  1791. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.js +33 -0
  1792. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/update.js.map +1 -0
  1793. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
  1794. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
  1795. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.js +31 -0
  1796. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
  1797. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
  1798. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
  1799. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.js +14 -0
  1800. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
  1801. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
  1802. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
  1803. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.js +698 -0
  1804. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
  1805. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.d.ts +3 -0
  1806. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.d.ts.map +1 -0
  1807. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.js +76 -0
  1808. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/create.js.map +1 -0
  1809. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
  1810. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
  1811. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.js +14 -0
  1812. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
  1813. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.d.ts +3 -0
  1814. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
  1815. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.js +49 -0
  1816. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/extract.js.map +1 -0
  1817. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
  1818. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
  1819. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.js +26 -0
  1820. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
  1821. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.d.ts +53 -0
  1822. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.d.ts.map +1 -0
  1823. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.js +311 -0
  1824. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/header.js.map +1 -0
  1825. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.d.ts +20 -0
  1826. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.d.ts.map +1 -0
  1827. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.js +20 -0
  1828. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.js.map +1 -0
  1829. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.min.js +4 -0
  1830. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/index.min.js.map +7 -0
  1831. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
  1832. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
  1833. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.js +94 -0
  1834. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
  1835. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.d.ts +7 -0
  1836. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.d.ts.map +1 -0
  1837. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.js +113 -0
  1838. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/list.js.map +1 -0
  1839. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.d.ts +49 -0
  1840. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
  1841. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.js +48 -0
  1842. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/make-command.js.map +1 -0
  1843. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
  1844. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
  1845. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.js +179 -0
  1846. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mkdir.js.map +1 -0
  1847. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
  1848. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
  1849. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.js +25 -0
  1850. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
  1851. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
  1852. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
  1853. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
  1854. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
  1855. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
  1856. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
  1857. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
  1858. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
  1859. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.d.ts +604 -0
  1860. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.d.ts.map +1 -0
  1861. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.js +54 -0
  1862. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/options.js.map +1 -0
  1863. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.d.ts +105 -0
  1864. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
  1865. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.js +502 -0
  1866. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pack.js.map +1 -0
  1867. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/package.json +3 -0
  1868. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.d.ts +92 -0
  1869. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
  1870. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.js +651 -0
  1871. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/parse.js.map +1 -0
  1872. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
  1873. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
  1874. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.js +166 -0
  1875. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
  1876. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.d.ts +26 -0
  1877. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
  1878. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.js +178 -0
  1879. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/pax.js.map +1 -0
  1880. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
  1881. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
  1882. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.js +3 -0
  1883. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/process-umask.js.map +1 -0
  1884. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
  1885. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
  1886. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.js +132 -0
  1887. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/read-entry.js.map +1 -0
  1888. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.d.ts +2 -0
  1889. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
  1890. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.js +221 -0
  1891. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/replace.js.map +1 -0
  1892. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
  1893. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
  1894. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
  1895. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
  1896. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
  1897. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
  1898. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
  1899. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
  1900. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
  1901. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
  1902. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.js +15 -0
  1903. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
  1904. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.d.ts +16 -0
  1905. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.d.ts.map +1 -0
  1906. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.js +65 -0
  1907. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/types.js.map +1 -0
  1908. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.d.ts +101 -0
  1909. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
  1910. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.js +891 -0
  1911. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/unpack.js.map +1 -0
  1912. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.d.ts +2 -0
  1913. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.d.ts.map +1 -0
  1914. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.js +30 -0
  1915. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/update.js.map +1 -0
  1916. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
  1917. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
  1918. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.js +27 -0
  1919. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/warn-method.js.map +1 -0
  1920. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.d.ts +3 -0
  1921. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
  1922. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.js +9 -0
  1923. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/winchars.js.map +1 -0
  1924. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
  1925. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
  1926. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.js +656 -0
  1927. package/node_modules/@happier-dev/release-runtime/node_modules/tar/dist/esm/write-entry.js.map +1 -0
  1928. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
  1929. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/README.md +71 -0
  1930. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
  1931. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
  1932. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
  1933. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
  1934. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
  1935. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
  1936. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
  1937. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
  1938. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
  1939. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
  1940. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/LICENSE +15 -0
  1941. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/README.md +825 -0
  1942. 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
  1943. 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
  1944. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/commonjs/index.js +1028 -0
  1945. 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
  1946. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/commonjs/package.json +3 -0
  1947. 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
  1948. 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
  1949. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/esm/index.js +1018 -0
  1950. 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
  1951. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/dist/esm/package.json +3 -0
  1952. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/node_modules/minipass/package.json +82 -0
  1953. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/@isaacs/fs-minipass/package.json +72 -0
  1954. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/LICENSE.md +63 -0
  1955. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/README.md +3 -0
  1956. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
  1957. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
  1958. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.js +93 -0
  1959. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/index.js.map +1 -0
  1960. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/commonjs/package.json +3 -0
  1961. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.d.ts +3 -0
  1962. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
  1963. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.js +85 -0
  1964. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/index.js.map +1 -0
  1965. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/dist/esm/package.json +3 -0
  1966. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/chownr/package.json +69 -0
  1967. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/LICENSE +15 -0
  1968. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/README.md +825 -0
  1969. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.d.ts +549 -0
  1970. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  1971. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.js +1028 -0
  1972. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  1973. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/commonjs/package.json +3 -0
  1974. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.d.ts +549 -0
  1975. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  1976. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.js +1018 -0
  1977. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/index.js.map +1 -0
  1978. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/dist/esm/package.json +3 -0
  1979. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minipass/package.json +82 -0
  1980. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/LICENSE +26 -0
  1981. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/README.md +64 -0
  1982. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
  1983. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
  1984. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.js +123 -0
  1985. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
  1986. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
  1987. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
  1988. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.js +416 -0
  1989. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
  1990. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/commonjs/package.json +3 -0
  1991. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
  1992. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
  1993. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.js +117 -0
  1994. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/constants.js.map +1 -0
  1995. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.d.ts +99 -0
  1996. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
  1997. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.js +363 -0
  1998. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/index.js.map +1 -0
  1999. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/dist/esm/package.json +3 -0
  2000. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/LICENSE +15 -0
  2001. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/README.md +825 -0
  2002. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.d.ts +549 -0
  2003. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
  2004. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.js +1028 -0
  2005. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/index.js.map +1 -0
  2006. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/commonjs/package.json +3 -0
  2007. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.d.ts +549 -0
  2008. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
  2009. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.js +1018 -0
  2010. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/index.js.map +1 -0
  2011. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/dist/esm/package.json +3 -0
  2012. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/node_modules/minipass/package.json +82 -0
  2013. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/minizlib/package.json +80 -0
  2014. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/LICENSE.md +63 -0
  2015. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/README.md +205 -0
  2016. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
  2017. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
  2018. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.js +384 -0
  2019. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/index.js.map +1 -0
  2020. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/commonjs/package.json +3 -0
  2021. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.d.ts +39 -0
  2022. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
  2023. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.js +379 -0
  2024. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/index.js.map +1 -0
  2025. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/dist/esm/package.json +3 -0
  2026. package/node_modules/@happier-dev/release-runtime/node_modules/tar/node_modules/yallist/package.json +68 -0
  2027. package/node_modules/@happier-dev/release-runtime/node_modules/tar/package.json +298 -0
  2028. package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/README.md +72 -0
  2029. package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/dist/package/xz-decompress.js +273 -0
  2030. package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/dist/package/xz-decompress.min.js +6 -0
  2031. package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/package.json +55 -0
  2032. package/node_modules/@happier-dev/release-runtime/node_modules/xz-decompress/types.d.ts +3 -0
  2033. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/LICENSE +21 -0
  2034. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/README.md +658 -0
  2035. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/index.js +796 -0
  2036. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/LICENSE +19 -0
  2037. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/README.md +47 -0
  2038. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/index.js +111 -0
  2039. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/buffer-crc32/package.json +39 -0
  2040. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/.npmignore +2 -0
  2041. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/.travis.yml +7 -0
  2042. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/CHANGELOG.md +49 -0
  2043. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/LICENSE +21 -0
  2044. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/README.md +199 -0
  2045. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/index.js +296 -0
  2046. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/LICENSE +23 -0
  2047. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/README.md +41 -0
  2048. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/index.js +55 -0
  2049. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/package.json +18 -0
  2050. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/node_modules/pend/test.js +137 -0
  2051. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/package.json +36 -0
  2052. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/node_modules/fd-slicer/test/test.js +350 -0
  2053. package/node_modules/@happier-dev/release-runtime/node_modules/yauzl/package.json +40 -0
  2054. package/node_modules/@happier-dev/release-runtime/package.json +8 -3
  2055. package/node_modules/@happier-dev/release-runtime/releaseRings.cjs +204 -0
  2056. package/package.json +5 -3
  2057. package/scripts/auth.mjs +219 -230
  2058. package/scripts/auth_copy_from_runCapture.integration.test.mjs +39 -20
  2059. package/scripts/auth_login_force_cleans_server_scoped_credentials.integration.test.mjs +41 -8
  2060. package/scripts/auth_login_guided_server_no_expo.test.mjs +543 -25
  2061. package/scripts/auth_login_print_includes_configure_links.test.mjs +23 -4
  2062. package/scripts/auth_login_respects_pinned_stack_port.test.mjs +68 -17
  2063. package/scripts/build/build_server_artifact.mjs +1 -0
  2064. package/scripts/build/collect_build_source_metadata.mjs +6 -5
  2065. package/scripts/build/collect_build_source_metadata.test.mjs +21 -0
  2066. package/scripts/build/runtime_build_lock.mjs +3 -1
  2067. package/scripts/build/runtime_build_lock.test.mjs +18 -0
  2068. package/scripts/build.mjs +8 -0
  2069. package/scripts/bundleWorkspaceDeps.mjs +427 -16
  2070. package/scripts/bundleWorkspaceDeps.test.mjs +419 -11
  2071. package/scripts/claude_hooks.test.mjs +50 -0
  2072. package/scripts/daemon.getDaemonEnv.test.mjs +106 -2
  2073. package/scripts/daemon.mjs +1195 -292
  2074. package/scripts/daemon.status_scope.test.mjs +2 -1
  2075. package/scripts/daemon_dist_guard.test.mjs +2800 -97
  2076. package/scripts/daemon_invalid_auth_reseed_stack_name.integration.test.mjs +64 -2
  2077. package/scripts/daemon_server_scope_commands.test.mjs +158 -49
  2078. package/scripts/daemon_server_scoped_state.test.mjs +59 -12
  2079. package/scripts/daemon_start_verification.integration.test.mjs +856 -65
  2080. package/scripts/daemon_stop_expected_pid.test.mjs +336 -12
  2081. package/scripts/dev.mjs +590 -93
  2082. package/scripts/dev_cli_build_ownership.test.mjs +191 -0
  2083. package/scripts/dev_external_server_flags.test.mjs +142 -2
  2084. package/scripts/dev_preserve_daemon_shutdown.integration.test.mjs +238 -0
  2085. package/scripts/dev_reload_composition.integration.test.mjs +392 -0
  2086. package/scripts/dev_target_placement.test.mjs +97 -0
  2087. package/scripts/dev_targets.mjs +159 -0
  2088. package/scripts/dev_targets_cmd.test.mjs +81 -0
  2089. package/scripts/direct_start_cleanup_dry_run.test.mjs +66 -0
  2090. package/scripts/doctor_runtime_snapshot.test.mjs +3 -2
  2091. package/scripts/eas.mjs +3 -2
  2092. package/scripts/eas_platform_parsing.test.mjs +9 -0
  2093. package/scripts/ghops.test.mjs +477 -6
  2094. package/scripts/happier.mjs +1 -429
  2095. package/scripts/happier_defaults_from_settings.test.mjs +56 -83
  2096. package/scripts/happier_main.mjs +433 -0
  2097. package/scripts/happier_runtime_snapshot.test.mjs +186 -14
  2098. package/scripts/happier_server_url_scope.test.mjs +3 -1
  2099. package/scripts/happier_tsx_fallback.test.mjs +5 -4
  2100. package/scripts/happier_wrapper_bootstrap.test.mjs +208 -0
  2101. package/scripts/hstack_wrapper_bundled_workspace_sync.test.mjs +351 -0
  2102. package/scripts/init_shim_invoked_cwd.test.mjs +10 -2
  2103. package/scripts/lifecycle_authority_inventory.test.mjs +40 -0
  2104. package/scripts/lint.mjs +3 -2
  2105. package/scripts/localBundledWorkspacePreflight.test.mjs +330 -0
  2106. package/scripts/migrate.mjs +30 -5
  2107. package/scripts/migrate_effective_db_provider.test.mjs +68 -0
  2108. package/scripts/mobile.mjs +59 -13
  2109. package/scripts/mobile_dev_client.mjs +12 -7
  2110. package/scripts/mobile_dev_client_android_falls_back_to_pipeline_in_test_stub.test.mjs +30 -1
  2111. package/scripts/mobile_dev_client_android_reuse_existing_apk_in_test_stub.test.mjs +62 -1
  2112. package/scripts/mobile_dev_client_android_reuse_falls_back_to_cached_apk_in_test_stub.test.mjs +1 -1
  2113. package/scripts/mobile_dev_client_help_smoke.test.mjs +2 -0
  2114. package/scripts/mobile_memory_profiling_prebuild_patches_podfile_autolinking.test.mjs +94 -0
  2115. package/scripts/mobile_profiling_runtime_uses_simulator_selection.test.mjs +116 -0
  2116. package/scripts/mobile_run_android_passes_port.test.mjs +120 -2
  2117. package/scripts/orchestrated_stack_auth_flow.test.mjs +40 -4
  2118. package/scripts/orchestrated_stack_auth_flow_webapp_url.test.mjs +76 -4
  2119. package/scripts/pack.mjs +53 -8
  2120. package/scripts/pack.test.mjs +113 -2
  2121. package/scripts/pglite_lock.integration.test.mjs +46 -2
  2122. package/scripts/profile_mobile_scenario.mjs +235 -0
  2123. package/scripts/profile_processes.mjs +138 -0
  2124. package/scripts/profiling/ios_xctrace_memory_diagnostics.mjs +91 -0
  2125. package/scripts/profiling/ios_xctrace_memory_diagnostics.test.mjs +72 -0
  2126. package/scripts/profiling/mobile_profile_scenarios.mjs +830 -0
  2127. package/scripts/profiling/mobile_profile_scenarios.test.mjs +379 -0
  2128. package/scripts/profiling/process_profiler.mjs +424 -0
  2129. package/scripts/profiling/process_profiler.test.mjs +214 -0
  2130. package/scripts/provider_projection_owners.test.mjs +29 -0
  2131. package/scripts/provision/linux-ubuntu-provision.sh +33 -0
  2132. package/scripts/provision/linux-ubuntu-provision.test.mjs +19 -1
  2133. package/scripts/release_binary_smoke.integration.test.mjs +24 -12
  2134. package/scripts/remote_cmd.mjs +56 -13
  2135. package/scripts/remote_cmd.test.mjs +84 -1
  2136. package/scripts/repo_local.mjs +82 -130
  2137. package/scripts/repo_local_effective_db_provider.test.mjs +161 -0
  2138. package/scripts/repo_local_wrapper.test.mjs +75 -1
  2139. package/scripts/review_pr.mjs +8 -17
  2140. package/scripts/review_pr.warm_base_deps.test.mjs +8 -1
  2141. package/scripts/review_pr.workspace_cache.test.mjs +16 -0
  2142. package/scripts/root_package_repo_local_scripts.test.mjs +1 -0
  2143. package/scripts/run.mjs +281 -80
  2144. package/scripts/run_effective_db_provider.test.mjs +79 -0
  2145. package/scripts/run_script_with_stack_env.restart_port_reuse.test.mjs +80 -0
  2146. package/scripts/run_source_server_workspace_deps.test.mjs +18 -0
  2147. package/scripts/run_startup_topology_side_effects.test.mjs +196 -0
  2148. package/scripts/runtime/launch/inspectActiveRuntimeSnapshot.mjs +40 -13
  2149. package/scripts/runtime/launch/resolveActiveRuntimeSnapshot.test.mjs +119 -0
  2150. package/scripts/runtime/launch/resolveCliRuntimeLaunchSpec.mjs +51 -0
  2151. package/scripts/runtime/launch/resolveLaunchSpecs.test.mjs +153 -9
  2152. package/scripts/runtime/launch/resolveServerRuntimeLaunchSpec.mjs +61 -4
  2153. package/scripts/runtime/launch/resolveStackRuntimeLaunchContext.mjs +2 -2
  2154. package/scripts/runtime/launch/runServerRuntimeMigration.mjs +116 -0
  2155. package/scripts/runtime/launch/runServerRuntimeMigration.test.mjs +211 -0
  2156. package/scripts/runtime/launch/runtimeProvenanceConsumerInventory.test.mjs +36 -0
  2157. package/scripts/runtime/shared/runtime_mode.mjs +10 -1
  2158. package/scripts/runtime/shared/runtime_mode.test.mjs +22 -0
  2159. package/scripts/self_host/install_companion_cli.mjs +3 -17
  2160. package/scripts/self_host_runtime.mjs +462 -479
  2161. package/scripts/self_host_runtime.test.mjs +662 -36
  2162. package/scripts/self_host_schtasks.real.integration.test.mjs +2 -1
  2163. package/scripts/self_host_service_e2e_harness.mjs +7 -1
  2164. package/scripts/self_host_systemd.real.integration.test.mjs +31 -5
  2165. package/scripts/self_host_systemd_harness.test.mjs +33 -0
  2166. package/scripts/server_flavor.mjs +39 -17
  2167. package/scripts/server_flavor_provider.test.mjs +126 -0
  2168. package/scripts/service.mjs +76 -85
  2169. package/scripts/service.post_start_diagnostics_scope.test.mjs +97 -0
  2170. package/scripts/service_cleanup_ownership.test.mjs +41 -0
  2171. package/scripts/setup.mjs +26 -1
  2172. package/scripts/setup_dev_child_env.test.mjs +23 -2
  2173. package/scripts/sqlite_snapshot.mjs +86 -0
  2174. package/scripts/sqlite_snapshot.test.mjs +1032 -0
  2175. package/scripts/stack/help_text.mjs +5 -3
  2176. package/scripts/stack/run_script_with_stack_env.mjs +396 -189
  2177. package/scripts/stack/run_script_with_stack_env.test.mjs +368 -0
  2178. package/scripts/stack/stack_daemon_command.mjs +74 -48
  2179. package/scripts/stack/stack_daemon_runtime_provenance.test.mjs +40 -0
  2180. package/scripts/stack/stack_environment.mjs +57 -19
  2181. package/scripts/stack/stack_environment.sanitization.test.mjs +64 -0
  2182. package/scripts/stack/stack_happier_passthrough_command.mjs +21 -1
  2183. package/scripts/stack/stack_info_snapshot.mjs +317 -68
  2184. package/scripts/stack/stack_install_command.mjs +295 -0
  2185. package/scripts/stack/stack_mobile_install_command.mjs +19 -5
  2186. package/scripts/stack/stack_mobile_install_command.test.mjs +44 -0
  2187. package/scripts/stack/stack_stop_command.mjs +12 -4
  2188. package/scripts/stack/stack_stop_command.test.mjs +16 -0
  2189. package/scripts/stack.mjs +244 -94
  2190. package/scripts/stack_archive_cmd.integration.test.mjs +29 -1
  2191. package/scripts/stack_audit_fix_light_env.test.mjs +10 -7
  2192. package/scripts/stack_audit_mysql_provider.test.mjs +194 -0
  2193. package/scripts/stack_background_pinned_stack_json.test.mjs +59 -1
  2194. package/scripts/stack_copy_auth_server_scoped.test.mjs +30 -15
  2195. package/scripts/stack_daemon_cmd.integration.test.mjs +112 -5
  2196. package/scripts/stack_guided_login_inner_invocation.test.mjs +17 -7
  2197. package/scripts/stack_happy_cmd.integration.test.mjs +70 -15
  2198. package/scripts/stack_info_snapshot_running_status.test.mjs +789 -25
  2199. package/scripts/stack_install_command.test.mjs +125 -0
  2200. package/scripts/stack_new_name_normalize_cmd.test.mjs +31 -0
  2201. package/scripts/stack_new_port_policy.test.mjs +128 -0
  2202. package/scripts/stack_owner_death_watchdog.integration.test.mjs +227 -4
  2203. package/scripts/stack_package_scripts.test.mjs +3 -1
  2204. package/scripts/stack_runtime_start.integration.test.mjs +435 -12
  2205. package/scripts/stack_runtime_start_listener_proof.integration.test.mjs +119 -0
  2206. package/scripts/stack_server_flavors_defaults.test.mjs +126 -0
  2207. package/scripts/stack_stop_sweeps_legacy_infra_without_kind.integration.test.mjs +2 -0
  2208. package/scripts/stackless_startup_topology.test.mjs +111 -0
  2209. package/scripts/start_proxy_runtime_state.test.mjs +686 -0
  2210. package/scripts/start_runtime_mode_json.test.mjs +6 -3
  2211. package/scripts/stopStackWithEnv_daemonControlToken.integration.test.mjs +123 -6
  2212. package/scripts/stopStackWithEnv_daemonPidSet.integration.test.mjs +1008 -0
  2213. package/scripts/stopStackWithEnv_home_relative_env_file.integration.test.mjs +94 -0
  2214. package/scripts/stopStackWithEnv_kills_ephemeral_runtime_pids_without_env_markers.integration.test.mjs +346 -8
  2215. package/scripts/stopStackWithEnv_sweeps_repo_local_stack_by_stackName_when_runtime_missing.integration.test.mjs +280 -15
  2216. package/scripts/tauri_dev.mjs +46 -5
  2217. package/scripts/tauri_dev.test.mjs +111 -30
  2218. package/scripts/test_ci.mjs +14 -1
  2219. package/scripts/test_cmd.mjs +4 -3
  2220. package/scripts/test_integration.mjs +13 -2
  2221. package/scripts/testkit/core/env_scope.mjs +5 -1
  2222. package/scripts/testkit/core/expo_command_shims.mjs +29 -0
  2223. package/scripts/testkit/core/minimal_monorepo_layout.mjs +2 -0
  2224. package/scripts/testkit/core/owner_death_watchdog_fixture.mjs +36 -0
  2225. package/scripts/testkit/core/owner_death_watchdog_fixture.test.mjs +43 -0
  2226. package/scripts/testkit/core/runtime_snapshot_layout.mjs +11 -0
  2227. package/scripts/testkit/core/spawn_daemon_like_process.mjs +193 -0
  2228. package/scripts/testkit/core/spawn_daemon_like_process.test.mjs +85 -0
  2229. package/scripts/testkit/core/spawn_test_process.mjs +30 -0
  2230. package/scripts/testkit/core/spawn_test_process.test.mjs +38 -1
  2231. package/scripts/testkit/core/stub_happier_cli_files.mjs +13 -0
  2232. package/scripts/testkit/core/workspace_package_build_owner.mjs +29 -0
  2233. package/scripts/testkit/runtime_snapshot_start_testkit.mjs +128 -31
  2234. package/scripts/testkit/runtime_snapshot_testkit.mjs +3 -0
  2235. package/scripts/testkit/stack_happier_cli_command_testkit.mjs +4 -0
  2236. package/scripts/tools.mjs +20 -1
  2237. package/scripts/tools_profile_processes_help.test.mjs +131 -0
  2238. package/scripts/tui.mjs +245 -280
  2239. package/scripts/tui_restart_delegation.test.mjs +257 -0
  2240. package/scripts/tui_stopStackForTuiExit_no_autosweep.integration.test.mjs +57 -1
  2241. package/scripts/typecheck.mjs +3 -2
  2242. package/scripts/ui_gateway.mjs +2 -2
  2243. package/scripts/ui_gateway.test.mjs +119 -0
  2244. package/scripts/utils/auth/clearStackForceLoginCredentialPaths.mjs +11 -1
  2245. package/scripts/utils/auth/credentials_paths.mjs +110 -36
  2246. package/scripts/utils/auth/credentials_paths.test.mjs +283 -26
  2247. package/scripts/utils/auth/daemon_gate.test.mjs +3 -2
  2248. package/scripts/utils/auth/ensure_active_access_key_valid.mjs +31 -8
  2249. package/scripts/utils/auth/ensure_active_access_key_valid.test.mjs +115 -1
  2250. package/scripts/utils/auth/orchestrated_stack_auth_flow.mjs +34 -3
  2251. package/scripts/utils/auth/stable_scope_id.mjs +11 -0
  2252. package/scripts/utils/auth/stable_scope_id.test.mjs +16 -0
  2253. package/scripts/utils/auth/stack_guided_login.mjs +32 -15
  2254. package/scripts/utils/cli/args.mjs +33 -7
  2255. package/scripts/utils/cli/args.test.mjs +51 -0
  2256. package/scripts/utils/cli/cli.mjs +3 -4
  2257. package/scripts/utils/cli/cliDistIntegrity.mjs +130 -53
  2258. package/scripts/utils/cli/cliDistIntegrity.test.mjs +157 -0
  2259. package/scripts/utils/cli/cli_registry.mjs +107 -11
  2260. package/scripts/utils/cli/prereqs.test.mjs +2 -2
  2261. package/scripts/utils/dev/daemon.mjs +395 -151
  2262. package/scripts/utils/dev/daemonLifecycleReconciler.mjs +98 -0
  2263. package/scripts/utils/dev/daemonLifecycleReconciler.test.mjs +187 -0
  2264. package/scripts/utils/dev/daemon_watch_resilience.test.mjs +817 -166
  2265. package/scripts/utils/dev/devProxy.mjs +310 -0
  2266. package/scripts/utils/dev/devProxy.test.mjs +406 -0
  2267. package/scripts/utils/dev/devProxyLifecycle.mjs +27 -0
  2268. package/scripts/utils/dev/devProxyLifecycle.test.mjs +32 -0
  2269. package/scripts/utils/dev/devProxyRuntime.mjs +96 -0
  2270. package/scripts/utils/dev/devReloadComposition.mjs +50 -0
  2271. package/scripts/utils/dev/devReloadCoordinator.mjs +557 -0
  2272. package/scripts/utils/dev/devReloadCoordinator.test.mjs +1685 -0
  2273. package/scripts/utils/dev/devReloadTargets.mjs +11 -0
  2274. package/scripts/utils/dev/devRuntimeInputPolicy.mjs +31 -0
  2275. package/scripts/utils/dev/devStartupTopology.mjs +131 -0
  2276. package/scripts/utils/dev/devStartupTopology.test.mjs +181 -0
  2277. package/scripts/utils/dev/expo_dev.buildEnv.test.mjs +21 -0
  2278. package/scripts/utils/dev/expo_dev.ensure_workspace_built.test.mjs +169 -3
  2279. package/scripts/utils/dev/expo_dev.mjs +735 -259
  2280. package/scripts/utils/dev/expo_dev.tailscale.test.mjs +415 -0
  2281. package/scripts/utils/dev/expo_dev.test.mjs +72 -1
  2282. package/scripts/utils/dev/expo_dev_crash_supervision.test.mjs +341 -0
  2283. package/scripts/utils/dev/expo_dev_restart_port_reservation.test.mjs +521 -64
  2284. package/scripts/utils/dev/expo_dev_runtime_metadata.test.mjs +142 -4
  2285. package/scripts/utils/dev/expo_dev_supervision.mjs +116 -0
  2286. package/scripts/utils/dev/expo_dev_tailscale.mjs +153 -0
  2287. package/scripts/utils/dev/expo_dev_verbose_logs.test.mjs +24 -3
  2288. package/scripts/utils/dev/reloadPollInterval.mjs +18 -0
  2289. package/scripts/utils/dev/resolveDevServerConnection.mjs +5 -2
  2290. package/scripts/utils/dev/resolveDevServerConnection.test.mjs +20 -3
  2291. package/scripts/utils/dev/server.mjs +2251 -81
  2292. package/scripts/utils/dev/server_watch.exclusive.test.mjs +1986 -0
  2293. package/scripts/utils/dev/server_watch.test.mjs +1254 -0
  2294. package/scripts/utils/dev/tauri_dev.mjs +2 -1
  2295. package/scripts/utils/dev/tauri_dev.test.mjs +23 -18
  2296. package/scripts/utils/dev/watchSignature.mjs +95 -0
  2297. package/scripts/utils/dev_targets/config.mjs +266 -0
  2298. package/scripts/utils/dev_targets/config.test.mjs +224 -0
  2299. package/scripts/utils/dev_targets/doctor.mjs +61 -0
  2300. package/scripts/utils/dev_targets/doctor.test.mjs +67 -0
  2301. package/scripts/utils/dev_targets/mutagen_project.mjs +125 -0
  2302. package/scripts/utils/dev_targets/mutagen_project.test.mjs +121 -0
  2303. package/scripts/utils/dev_targets/remote_commands.mjs +478 -0
  2304. package/scripts/utils/dev_targets/remote_commands.test.mjs +389 -0
  2305. package/scripts/utils/dev_targets/remote_dependency_bootstrap.mjs +103 -0
  2306. package/scripts/utils/dev_targets/remote_dependency_bootstrap.test.mjs +38 -0
  2307. package/scripts/utils/dev_targets/service_placement.mjs +45 -0
  2308. package/scripts/utils/dev_targets/service_placement.test.mjs +61 -0
  2309. package/scripts/utils/dev_targets/supervisor.mjs +863 -0
  2310. package/scripts/utils/dev_targets/supervisor.test.mjs +1382 -0
  2311. package/scripts/utils/env/env_file.mjs +88 -16
  2312. package/scripts/utils/env/env_file.test.mjs +46 -1
  2313. package/scripts/utils/env/env_local.mjs +6 -6
  2314. package/scripts/utils/env/scrub_env.mjs +2 -0
  2315. package/scripts/utils/env/scrub_env.test.mjs +4 -0
  2316. package/scripts/utils/execution_host_adapter.mjs +87 -0
  2317. package/scripts/utils/execution_host_adapter.test.mjs +69 -0
  2318. package/scripts/utils/expo/command.mjs +6 -0
  2319. package/scripts/utils/expo/command_export_max_workers.test.mjs +2 -0
  2320. package/scripts/utils/expo/command_heap_limit_env.test.mjs +87 -25
  2321. package/scripts/utils/expo/command_workspace_deps_built.test.mjs +75 -29
  2322. package/scripts/utils/expo/expo.mjs +340 -14
  2323. package/scripts/utils/expo/expo_state_running.test.mjs +104 -2
  2324. package/scripts/utils/expo/expo_wait_for_metro.test.mjs +187 -0
  2325. package/scripts/utils/expo/metro_ports.mjs +160 -1
  2326. package/scripts/utils/expo/metro_ports.test.mjs +198 -1
  2327. package/scripts/utils/fs/atomic_dir_swap.mjs +44 -31
  2328. package/scripts/utils/fs/atomic_dir_swap.test.mjs +69 -0
  2329. package/scripts/utils/fs/atomic_rename.mjs +33 -0
  2330. package/scripts/utils/fs/json.mjs +5 -4
  2331. package/scripts/utils/fs/json.test.mjs +33 -0
  2332. package/scripts/utils/fs/tail.mjs +4 -0
  2333. package/scripts/utils/fs/tail.test.mjs +32 -0
  2334. package/scripts/utils/mobile/android_generated_build_state.mjs +87 -0
  2335. package/scripts/utils/mobile/config.mjs +14 -0
  2336. package/scripts/utils/mobile/dev_client_install_invocation.android.test.mjs +21 -0
  2337. package/scripts/utils/mobile/dev_client_install_invocation.mjs +39 -2
  2338. package/scripts/utils/mobile/dev_client_install_invocation.test.mjs +34 -0
  2339. package/scripts/utils/mobile/identifiers.mjs +29 -8
  2340. package/scripts/utils/mobile/identifiers.test.mjs +17 -1
  2341. package/scripts/utils/mobile/ios_podfile_autolinking.mjs +74 -0
  2342. package/scripts/utils/mobile/ios_podfile_autolinking.test.mjs +79 -0
  2343. package/scripts/utils/mobile/ios_podfile_properties.mjs +50 -0
  2344. package/scripts/utils/mobile/ios_podfile_properties.test.mjs +88 -0
  2345. package/scripts/utils/mobile/ios_profiling_runtime.mjs +171 -0
  2346. package/scripts/utils/mobile/ios_profiling_runtime.test.mjs +145 -0
  2347. package/scripts/utils/mobile/ios_xcodeproj_patch.mjs +6 -1
  2348. package/scripts/utils/mobile/ios_xcodeproj_patch.test.mjs +41 -0
  2349. package/scripts/utils/mobile/profiling_runtime_mode.mjs +35 -0
  2350. package/scripts/utils/mobile/profiling_runtime_mode.test.mjs +28 -0
  2351. package/scripts/utils/net/ports.mjs +419 -40
  2352. package/scripts/utils/net/ports.test.mjs +639 -1
  2353. package/scripts/utils/net/tcp_forward.mjs +117 -9
  2354. package/scripts/utils/net/tcp_forward.test.mjs +255 -0
  2355. package/scripts/utils/pglite_lock.mjs +84 -3
  2356. package/scripts/utils/proc/cliDistBuildLock.mjs +62 -81
  2357. package/scripts/utils/proc/cliDistBuildLock.test.mjs +400 -0
  2358. package/scripts/utils/proc/cli_runtime_inputs.mjs +109 -0
  2359. package/scripts/utils/proc/command_dependency_admission.test.mjs +54 -0
  2360. package/scripts/utils/proc/dependency_refresh.mjs +263 -0
  2361. package/scripts/utils/proc/dependency_refresh.test.mjs +125 -0
  2362. package/scripts/utils/proc/ensureWorkspacePackagesBuilt.test.mjs +569 -18
  2363. package/scripts/utils/proc/exit_cleanup.mjs +2 -2
  2364. package/scripts/utils/proc/jsonOwnerFileLock.mjs +194 -0
  2365. package/scripts/utils/proc/jsonOwnerFileLock.test.mjs +428 -0
  2366. package/scripts/utils/proc/ownership.mjs +411 -52
  2367. package/scripts/utils/proc/ownership_killProcessGroupOwnedByStack.test.mjs +348 -1
  2368. package/scripts/utils/proc/ownership_listPidsWithEnvNeedles.test.mjs +196 -1
  2369. package/scripts/utils/proc/pids.mjs +11 -6
  2370. package/scripts/utils/proc/pids.test.mjs +29 -0
  2371. package/scripts/utils/proc/pm.mjs +406 -368
  2372. package/scripts/utils/proc/pm_stack_cache_env.test.mjs +1295 -121
  2373. package/scripts/utils/proc/proc.mjs +342 -89
  2374. package/scripts/utils/proc/proc.test.mjs +362 -3
  2375. package/scripts/utils/proc/pruneLogsByCount.mjs +49 -0
  2376. package/scripts/utils/proc/pruneLogsByCount.test.mjs +132 -0
  2377. package/scripts/utils/proc/terminate.mjs +203 -20
  2378. package/scripts/utils/proc/terminate.test.mjs +207 -1
  2379. package/scripts/utils/proc/watch.mjs +139 -19
  2380. package/scripts/utils/proc/watch.test.mjs +230 -0
  2381. package/scripts/utils/proc/workspace_dependencies.mjs +21 -0
  2382. package/scripts/utils/proc/workspace_package_manifests.mjs +108 -0
  2383. package/scripts/utils/remote/install_remote_first_party_component.mjs +112 -43
  2384. package/scripts/utils/remote/install_remote_first_party_component.test.mjs +46 -35
  2385. package/scripts/utils/review/augment_runner_integration.test.mjs +10 -3
  2386. package/scripts/utils/server/apply_runtime_server_sqlite_env.mjs +36 -0
  2387. package/scripts/utils/server/apply_runtime_server_sqlite_env.test.mjs +46 -0
  2388. package/scripts/utils/server/apply_server_preset_env_defaults.mjs +32 -0
  2389. package/scripts/utils/server/apply_server_preset_env_defaults.test.mjs +95 -0
  2390. package/scripts/utils/server/effective_db_provider.mjs +138 -0
  2391. package/scripts/utils/server/effective_db_provider.test.mjs +249 -0
  2392. package/scripts/utils/server/flavor_scripts.mjs +12 -78
  2393. package/scripts/utils/server/flavor_scripts.test.mjs +39 -47
  2394. package/scripts/utils/server/infra/happy_server_infra.mjs +92 -39
  2395. package/scripts/utils/server/infra/happy_server_infra_provider.test.mjs +290 -0
  2396. package/scripts/utils/server/listener_ownership.mjs +488 -0
  2397. package/scripts/utils/server/listener_ownership.test.mjs +473 -0
  2398. package/scripts/utils/server/logging_env.mjs +20 -0
  2399. package/scripts/utils/server/logging_env.test.mjs +29 -0
  2400. package/scripts/utils/server/mobile_api_url.mjs +17 -3
  2401. package/scripts/utils/server/mobile_api_url.test.mjs +21 -1
  2402. package/scripts/utils/server/prisma_client_import.mjs +18 -0
  2403. package/scripts/utils/server/prisma_import.mjs +0 -15
  2404. package/scripts/utils/server/prisma_import.test.mjs +0 -37
  2405. package/scripts/utils/server/resolve_stack_server_port.mjs +131 -43
  2406. package/scripts/utils/server/resolve_stack_server_port.test.mjs +696 -5
  2407. package/scripts/utils/server/server.mjs +146 -39
  2408. package/scripts/utils/server/server.test.mjs +252 -4
  2409. package/scripts/utils/server/server_migrations.mjs +17 -0
  2410. package/scripts/utils/server/shutdown_grace.mjs +14 -0
  2411. package/scripts/utils/server/shutdown_grace.test.mjs +29 -0
  2412. package/scripts/utils/server/source_server_workspace_deps.mjs +27 -0
  2413. package/scripts/utils/server/source_server_workspace_deps.test.mjs +71 -0
  2414. package/scripts/utils/server/validate.mjs +4 -43
  2415. package/scripts/utils/server/validate.test.mjs +4 -4
  2416. package/scripts/utils/service/archive_service_lifecycle.mjs +59 -0
  2417. package/scripts/utils/service/archive_service_lifecycle.test.mjs +88 -0
  2418. package/scripts/utils/service/daemon_autostart.mjs +1 -1
  2419. package/scripts/utils/service/daemon_autostart.test.mjs +34 -0
  2420. package/scripts/utils/service/service_manager.mjs +26 -1
  2421. package/scripts/utils/service/service_manager.plan.test.mjs +187 -1
  2422. package/scripts/utils/sqlite/sqlite_snapshot.mjs +820 -0
  2423. package/scripts/utils/stack/daemonControlClient.mjs +426 -0
  2424. package/scripts/utils/stack/daemonControlClient.test.mjs +567 -0
  2425. package/scripts/utils/stack/daemon_lifecycle_lock.mjs +49 -0
  2426. package/scripts/utils/stack/daemon_lifecycle_lock.test.mjs +220 -0
  2427. package/scripts/utils/stack/dirs.mjs +6 -2
  2428. package/scripts/utils/stack/owner_death_watchdog.mjs +6 -1
  2429. package/scripts/utils/stack/owner_death_watchdog_runner.mjs +130 -2
  2430. package/scripts/utils/stack/repo_stack_identity.mjs +113 -0
  2431. package/scripts/utils/stack/repo_stack_identity.test.mjs +23 -0
  2432. package/scripts/utils/stack/restart_args.mjs +22 -0
  2433. package/scripts/utils/stack/runtime_daemon_state.mjs +474 -23
  2434. package/scripts/utils/stack/runtime_daemon_state.test.mjs +838 -0
  2435. package/scripts/utils/stack/runtime_owner_incarnation.mjs +9 -0
  2436. package/scripts/utils/stack/runtime_state.mjs +896 -37
  2437. package/scripts/utils/stack/runtime_state.test.mjs +1152 -2
  2438. package/scripts/utils/stack/server_profile_reconciliation.mjs +92 -0
  2439. package/scripts/utils/stack/startup.mjs +75 -81
  2440. package/scripts/utils/stack/startup_runtime_probe.test.mjs +115 -0
  2441. package/scripts/utils/stack/startup_server_light_dirs.test.mjs +10 -3
  2442. package/scripts/utils/stack/startup_server_light_generate.test.mjs +115 -4
  2443. package/scripts/utils/stack/startup_server_light_legacy.test.mjs +17 -15
  2444. package/scripts/utils/stack/startup_server_light_testkit.mjs +8 -1
  2445. package/scripts/utils/stack/stop.mjs +641 -144
  2446. package/scripts/utils/stack/stop_lock_timeout.test.mjs +13 -0
  2447. package/scripts/utils/tauri/desktop_install.mjs +81 -0
  2448. package/scripts/utils/tauri/desktop_install.test.mjs +43 -0
  2449. package/scripts/utils/tauri/dev_runtime.mjs +10 -1
  2450. package/scripts/utils/tauri/dev_runtime.test.mjs +2 -1
  2451. package/scripts/utils/tauri/stack_overrides.mjs +28 -4
  2452. package/scripts/utils/tauri/stack_overrides.test.mjs +26 -0
  2453. package/scripts/utils/test/test_env.mjs +44 -0
  2454. package/scripts/utils/test/test_env.test.mjs +99 -0
  2455. package/scripts/utils/tui/actions.mjs +4 -13
  2456. package/scripts/utils/tui/actions.test.mjs +5 -16
  2457. package/scripts/utils/tui/args.mjs +8 -2
  2458. package/scripts/utils/tui/args.test.mjs +14 -1
  2459. package/scripts/utils/tui/cleanup.mjs +16 -1
  2460. package/scripts/utils/tui/daemon_pane_reconcile.mjs +27 -1
  2461. package/scripts/utils/tui/daemon_pane_reconcile.test.mjs +18 -0
  2462. package/scripts/utils/tui/dev_target_panes.mjs +22 -0
  2463. package/scripts/utils/tui/dev_target_panes.test.mjs +26 -0
  2464. package/scripts/utils/tui/rescue_priority.mjs +37 -0
  2465. package/scripts/utils/tui/rescue_priority.test.mjs +24 -0
  2466. package/scripts/utils/tui/restart_operation.mjs +151 -0
  2467. package/scripts/utils/tui/stack_scope_env.mjs +8 -3
  2468. package/scripts/utils/tui/stack_scope_env.test.mjs +7 -2
  2469. package/scripts/utils/tui/stdin_handoff.mjs +13 -40
  2470. package/scripts/utils/tui/stdin_handoff.test.mjs +36 -1
  2471. package/scripts/utils/tui/tauri_mode.mjs +178 -6
  2472. package/scripts/utils/tui/tauri_mode.test.mjs +222 -4
  2473. package/scripts/utils/workspaces/workspaceBundleLock.mjs +39 -0
  2474. package/scripts/utils/worktrees/yarn_install_guard.mjs +7 -49
  2475. package/scripts/utils/worktrees/yarn_install_guard.test.mjs +139 -4
  2476. package/scripts/worktrees.mjs +16 -16
  2477. package/node_modules/@happier-dev/agents/dist/.tsbuildinfo +0 -1
  2478. package/node_modules/@happier-dev/cli-common/dist/.tsbuildinfo +0 -1
  2479. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.d.ts +0 -2
  2480. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.d.ts.map +0 -1
  2481. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.js +0 -51
  2482. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/commands.test.js.map +0 -1
  2483. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.d.ts +0 -2
  2484. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.d.ts.map +0 -1
  2485. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.js +0 -76
  2486. package/node_modules/@happier-dev/cli-common/dist/componentArtifacts/ensureBundledWorkspacePackagesBuilt.test.js.map +0 -1
  2487. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.d.ts +0 -2
  2488. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.d.ts.map +0 -1
  2489. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.js +0 -151
  2490. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/prepareFirstPartyComponentPayloadFromGitHubRelease.test.js.map +0 -1
  2491. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.d.ts +0 -2
  2492. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.d.ts.map +0 -1
  2493. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.js +0 -184
  2494. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/relayRuntime.test.js.map +0 -1
  2495. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.d.ts +0 -2
  2496. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.d.ts.map +0 -1
  2497. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.js +0 -96
  2498. package/node_modules/@happier-dev/cli-common/dist/firstPartyRuntime/releaseAssetBundle.test.js.map +0 -1
  2499. package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.d.ts +0 -2
  2500. package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.d.ts.map +0 -1
  2501. package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.js +0 -64
  2502. package/node_modules/@happier-dev/cli-common/dist/process/windows/resolveWindowsCommandInvocation.test.js.map +0 -1
  2503. package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.d.ts +0 -9
  2504. package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.d.ts.map +0 -1
  2505. package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.js +0 -72
  2506. package/node_modules/@happier-dev/cli-common/dist/providers/codexRelease.js.map +0 -1
  2507. package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.d.ts +0 -2
  2508. package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.d.ts.map +0 -1
  2509. package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.js +0 -178
  2510. package/node_modules/@happier-dev/cli-common/dist/providers/install.gating.test.js.map +0 -1
  2511. package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.d.ts +0 -2
  2512. package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.d.ts.map +0 -1
  2513. package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.js +0 -176
  2514. package/node_modules/@happier-dev/cli-common/dist/providers/managedJavaScriptRuntime.systemNodeFallback.test.js.map +0 -1
  2515. package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.d.ts +0 -2
  2516. package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.d.ts.map +0 -1
  2517. package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.js +0 -138
  2518. package/node_modules/@happier-dev/cli-common/dist/providers/managedPnpm.test.js.map +0 -1
  2519. package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.d.ts +0 -2
  2520. package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.d.ts.map +0 -1
  2521. package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.js +0 -44
  2522. package/node_modules/@happier-dev/cli-common/dist/providers/pnpmRelease.test.js.map +0 -1
  2523. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.d.ts +0 -2
  2524. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.d.ts.map +0 -1
  2525. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.js +0 -20
  2526. package/node_modules/@happier-dev/cli-common/dist/providers/resolution.test.js.map +0 -1
  2527. package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.d.ts +0 -2
  2528. package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.d.ts.map +0 -1
  2529. package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.js +0 -25
  2530. package/node_modules/@happier-dev/cli-common/dist/providers/resolveHappyHomeDir.test.js.map +0 -1
  2531. package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.d.ts +0 -2
  2532. package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.d.ts.map +0 -1
  2533. package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.js +0 -177
  2534. package/node_modules/@happier-dev/cli-common/dist/systemTasks/interactiveTaskKinds.test.js.map +0 -1
  2535. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.d.ts +0 -2
  2536. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.d.ts.map +0 -1
  2537. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.js +0 -173
  2538. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/relayRuntimeKinds.test.js.map +0 -1
  2539. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.d.ts +0 -2
  2540. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.d.ts.map +0 -1
  2541. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.js +0 -98
  2542. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteFirstPartyPayloadInstaller.test.js.map +0 -1
  2543. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.d.ts +0 -2
  2544. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.d.ts.map +0 -1
  2545. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.js +0 -549
  2546. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/remoteSshBootstrapMachineKind.test.js.map +0 -1
  2547. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.d.ts +0 -2
  2548. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.d.ts.map +0 -1
  2549. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.js +0 -37
  2550. package/node_modules/@happier-dev/cli-common/dist/systemTasks/kinds/sshHostTrust.test.js.map +0 -1
  2551. package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.d.ts +0 -2
  2552. package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.d.ts.map +0 -1
  2553. package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.js +0 -243
  2554. package/node_modules/@happier-dev/cli-common/dist/systemTasks/runSystemTask.test.js.map +0 -1
  2555. package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.d.ts +0 -2
  2556. package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.d.ts.map +0 -1
  2557. package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.js +0 -204
  2558. package/node_modules/@happier-dev/cli-common/dist/tailscale/commandRunner.test.js.map +0 -1
  2559. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.d.ts +0 -2
  2560. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.d.ts.map +0 -1
  2561. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.js +0 -58
  2562. package/node_modules/@happier-dev/cli-common/dist/tailscale/serveStatus.test.js.map +0 -1
  2563. package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.d.ts +0 -2
  2564. package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.d.ts.map +0 -1
  2565. package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.js +0 -29
  2566. package/node_modules/@happier-dev/cli-common/dist/tailscale/taskContract.test.js.map +0 -1
  2567. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.d.ts +0 -2
  2568. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.d.ts.map +0 -1
  2569. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.js +0 -94
  2570. package/node_modules/@happier-dev/cli-common/dist/workspaces/index.test.js.map +0 -1
  2571. package/node_modules/@happier-dev/protocol/dist/.tsbuildinfo +0 -1
  2572. package/node_modules/@happier-dev/release-runtime/dist/.tsbuildinfo +0 -1
  2573. package/node_modules/@happier-dev/release-runtime/dist/_cjs/releaseRings.js +0 -134
  2574. package/node_modules/@happier-dev/release-runtime/dist/extractPlan.d.ts +0 -14
  2575. package/node_modules/@happier-dev/release-runtime/dist/extractPlan.d.ts.map +0 -1
  2576. package/node_modules/@happier-dev/release-runtime/dist/extractPlan.js +0 -48
  2577. package/node_modules/@happier-dev/release-runtime/dist/extractPlan.js.map +0 -1
  2578. package/node_modules/@happier-dev/release-runtime/dist/releaseRings.cjs +0 -134
  2579. package/scripts/daemon_cleanup_lsof_unavailable.test.mjs +0 -112
  2580. package/scripts/ghops.mjs +0 -83
  2581. package/scripts/stack_guided_login_does_not_preopen_browser.test.mjs +0 -17
  2582. package/scripts/utils/auth/guided_stack_web_login.mjs +0 -56
  2583. package/scripts/utils/auth/login_ux.mjs +0 -113
  2584. package/scripts/utils/cli/smoke_help.mjs +0 -44
  2585. package/scripts/utils/dev_auth_key.mjs +0 -7
  2586. package/scripts/utils/server/apply_runtime_server_light_sqlite_env.mjs +0 -25
  2587. package/scripts/utils/server/apply_server_light_env_defaults.mjs +0 -15
  2588. package/scripts/utils/server/apply_server_light_env_defaults.test.mjs +0 -25
  2589. package/scripts/utils/stack_context.mjs +0 -1
  2590. package/scripts/utils/stack_runtime_state.mjs +0 -1
  2591. package/scripts/utils/tui/daemon_autostart.mjs +0 -36
  2592. 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
- import { startLocalDaemonWithAuth, stopLocalDaemon } from './daemon.mjs';
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
- if (args[0] !== 'daemon') process.exit(0);
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
- const child = spawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], { detached: true, stdio: 'ignore' });
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 writeRuntimeSnapshotHappyCli({ snapshotDir }) {
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
- const child = spawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], { detached: true, stdio: 'ignore' });
161
- child.unref();
162
- writeFileSync(state, JSON.stringify({ pid: child.pid, httpPort: 0, startTime: new Date().toISOString() }), 'utf-8');
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
- await writeFile(implPath, distScript.trimStart(), 'utf-8');
183
- await writeFile(cliBin, `#!/bin/sh\nexec "${process.execPath}" "${implPath}" "$@"\n`, 'utf-8');
184
- await chmod(cliBin, 0o755);
185
- return cliBin;
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 writeRuntimeSnapshotHappyCliWithNodeEntrypoint({ snapshotDir }) {
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-sync' || 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
- await writeFile(join(packageDistDir, 'index.mjs'), distScript.trimStart(), 'utf-8');
245
- await writeFile(cliBin, 'exit 42\n', 'utf-8');
246
- await chmod(cliBin, 0o755);
247
- return {
248
- cliBin,
249
- cliNodeEntrypoint: join(packageDistDir, 'index.mjs'),
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
- async function writeRuntimeSnapshotHappyCliJsCommand({ snapshotDir }) {
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 === 'start-sync' || sub === 'start') {
273
- const child = spawn(process.execPath, ['-e', 'setInterval(() => {}, 1000)'], { detached: true, stdio: 'ignore' });
274
- child.unref();
275
- writeFileSync(state, JSON.stringify({ pid: child.pid, httpPort: 0, startTime: new Date().toISOString() }), 'utf-8');
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(cliCommand, distScript.trimStart(), 'utf-8');
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 writePathResolvedRuntimeCommand({ binDir, stopMode = 'kill-state' } = {}) {
306
- await mkdir(binDir, { recursive: true });
307
- const commandPath = join(binDir, 'happier-runtime-cmd');
308
- const script = `#!/bin/sh
309
- HOME_DIR="${'$'}{HAPPIER_HOME_DIR:-${'$'}{HAPPIER_STACK_CLI_HOME_DIR:-}}"
310
- if [ -z "$HOME_DIR" ]; then
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
- "${process.execPath}" -e "setInterval(() => {}, 1000)" daemon start >/dev/null 2>&1 &
319
- child=$!
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
- test('startLocalDaemonWithAuth does not require a second CLI build when dist/index.mjs already exists', async () => {
353
- const tmp = await mkdtemp(join(tmpdir(), 'happy-stacks-daemon-dist-guard-'));
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
- HAPPIER_STACK_CLI_BUILD: '1',
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
- // If startLocalDaemonWithAuth tries to rebuild, this will fail because package.json has no build script.
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: true,
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
- await stopLocalDaemon({
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.ok(true);
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
- /dist entrypoint is missing or incomplete|missing_module/i,
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
+ });