@smoothbuilder/smoothagent-agent-server 0.3.0 → 0.4.1

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 (416) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/bytes-HBD44S56.js +8 -0
  3. package/dist/bytes-HBD44S56.js.map +7 -0
  4. package/dist/{chunk-C64SPUFX.js → chunk-IZAPYKOR.js} +5943 -11537
  5. package/dist/chunk-IZAPYKOR.js.map +7 -0
  6. package/dist/{client-CN6PRCWE.js → client-TQOOMRH6.js} +6 -24
  7. package/dist/client-TQOOMRH6.js.map +7 -0
  8. package/dist/dashboard.js +1 -1
  9. package/dist/index.js +1 -1
  10. package/dist/types/sdk/generated/ts-client/api/errors/BadGatewayError.d.ts +2 -2
  11. package/dist/types/sdk/generated/ts-client/api/errors/BadRequestError.d.ts +2 -2
  12. package/dist/types/sdk/generated/ts-client/api/errors/ConflictError.d.ts +2 -2
  13. package/dist/types/sdk/generated/ts-client/api/errors/FailedDependencyError.d.ts +2 -2
  14. package/dist/types/sdk/generated/ts-client/api/errors/ForbiddenError.d.ts +2 -2
  15. package/dist/types/sdk/generated/ts-client/api/errors/GoneError.d.ts +2 -2
  16. package/dist/types/sdk/generated/ts-client/api/errors/InternalServerError.d.ts +2 -2
  17. package/dist/types/sdk/generated/ts-client/api/errors/NotFoundError.d.ts +2 -2
  18. package/dist/types/sdk/generated/ts-client/api/errors/PaymentRequiredError.d.ts +2 -2
  19. package/dist/types/sdk/generated/ts-client/api/errors/ServiceUnavailableError.d.ts +2 -2
  20. package/dist/types/sdk/generated/ts-client/api/errors/TooManyRequestsError.d.ts +2 -2
  21. package/dist/types/sdk/generated/ts-client/api/errors/UnauthorizedError.d.ts +2 -2
  22. package/dist/types/sdk/generated/ts-client/api/errors/UnprocessableEntityError.d.ts +2 -2
  23. package/dist/types/sdk/generated/ts-client/api/resources/agents/types/AgentsGetResponse.d.ts +1 -1
  24. package/dist/types/sdk/generated/ts-client/api/resources/agents/types/AgentsListResponse.d.ts +1 -1
  25. package/dist/types/sdk/generated/ts-client/api/resources/chats/client/requests/ChatsEventsRequest.d.ts +1 -1
  26. package/dist/types/sdk/generated/ts-client/api/resources/chats/client/requests/ChatsHistoryRequest.d.ts +1 -1
  27. package/dist/types/sdk/generated/ts-client/api/resources/chats/client/requests/ChatsUpdateRequest.d.ts +1 -1
  28. package/dist/types/sdk/generated/ts-client/api/resources/chats/client/requests/CreateChat.d.ts +1 -1
  29. package/dist/types/sdk/generated/ts-client/api/resources/chats/client/requests/EditQueuedChatsRequest.d.ts +1 -1
  30. package/dist/types/sdk/generated/ts-client/api/resources/chats/client/requests/SendMessage.d.ts +2 -2
  31. package/dist/types/sdk/generated/ts-client/api/resources/chats/client/requests/SwitchAgent.d.ts +6 -4
  32. package/dist/types/sdk/generated/ts-client/api/resources/chats/types/ChatBoxListTasksResponse.d.ts +1 -1
  33. package/dist/types/sdk/generated/ts-client/api/resources/chats/types/ChatsEventsRequestAccept.d.ts +1 -1
  34. package/dist/types/sdk/generated/ts-client/api/resources/chats/types/ChatsHistoryRequestAnchor.d.ts +1 -1
  35. package/dist/types/sdk/generated/ts-client/api/resources/chats/types/ChatsListResponse.d.ts +1 -1
  36. package/dist/types/sdk/generated/ts-client/api/resources/chats/types/ChatsRunsResponse.d.ts +1 -1
  37. package/dist/types/sdk/generated/ts-client/api/resources/chats/types/ChatsSendResponse.d.ts +1 -1
  38. package/dist/types/sdk/generated/ts-client/api/resources/files/client/requests/FilesUploadRequest.d.ts +1 -1
  39. package/dist/types/sdk/generated/ts-client/api/resources/files/types/CreateUploadFilesResponse.d.ts +1 -1
  40. package/dist/types/sdk/generated/ts-client/api/resources/identity/client/requests/MeFeedRequest.d.ts +1 -1
  41. package/dist/types/sdk/generated/ts-client/api/resources/identity/types/MeFeedRequestAccept.d.ts +1 -1
  42. package/dist/types/sdk/generated/ts-client/api/resources/identity/types/MeWhoamiResponse.d.ts +1 -1
  43. package/dist/types/sdk/generated/ts-client/api/resources/index.d.ts +6 -6
  44. package/dist/types/sdk/generated/ts-client/api/resources/machines/types/MachinesListResponse.d.ts +1 -1
  45. package/dist/types/sdk/generated/ts-client/api/resources/providers/client/requests/MyProvidersConnectRequest.d.ts +1 -1
  46. package/dist/types/sdk/generated/ts-client/api/resources/providers/client/requests/MyProvidersDisconnectRequest.d.ts +1 -1
  47. package/dist/types/sdk/generated/ts-client/api/resources/providers/client/requests/MyProvidersLimitsRequest.d.ts +1 -1
  48. package/dist/types/sdk/generated/ts-client/api/resources/providers/client/requests/MyProvidersSetKeyRequest.d.ts +1 -1
  49. package/dist/types/sdk/generated/ts-client/api/resources/providers/types/MyProvidersConnectResponse.d.ts +1 -1
  50. package/dist/types/sdk/generated/ts-client/api/resources/providers/types/MyProvidersDisconnectRequestVia.d.ts +1 -1
  51. package/dist/types/sdk/generated/ts-client/api/resources/providers/types/MyProvidersListResponse.d.ts +1 -1
  52. package/dist/types/sdk/generated/ts-client/api/types/Agent.d.ts +2 -2
  53. package/dist/types/sdk/generated/ts-client/api/types/AgentHooks.d.ts +7 -1
  54. package/dist/types/sdk/generated/ts-client/api/types/AgentLimits.d.ts +1 -1
  55. package/dist/types/sdk/generated/ts-client/api/types/AgentMessageOrigin.d.ts +1 -1
  56. package/dist/types/sdk/generated/ts-client/api/types/AgentProviderOption.d.ts +1 -1
  57. package/dist/types/sdk/generated/ts-client/api/types/AgentPublic.d.ts +1 -1
  58. package/dist/types/sdk/generated/ts-client/api/types/BoxFileContent.d.ts +1 -1
  59. package/dist/types/sdk/generated/ts-client/api/types/BoxFileEntry.d.ts +2 -2
  60. package/dist/types/sdk/generated/ts-client/api/types/BoxFileList.d.ts +1 -1
  61. package/dist/types/sdk/generated/ts-client/api/types/BoxProfile.d.ts +2 -0
  62. package/dist/types/sdk/generated/ts-client/api/types/Chat.d.ts +2 -2
  63. package/dist/types/sdk/generated/ts-client/api/types/ChatContext.d.ts +1 -1
  64. package/dist/types/sdk/generated/ts-client/api/types/ChatDeleted.d.ts +1 -1
  65. package/dist/types/sdk/generated/ts-client/api/types/ChatSelection.d.ts +2 -2
  66. package/dist/types/sdk/generated/ts-client/api/types/ChatTask.d.ts +3 -3
  67. package/dist/types/sdk/generated/ts-client/api/types/ChatUsage.d.ts +1 -1
  68. package/dist/types/sdk/generated/ts-client/api/types/DeviceFlow.d.ts +1 -1
  69. package/dist/types/sdk/generated/ts-client/api/types/ErrorBody.d.ts +1 -1
  70. package/dist/types/sdk/generated/ts-client/api/types/Error_.d.ts +1 -1
  71. package/dist/types/sdk/generated/ts-client/api/types/EventRange.d.ts +1 -1
  72. package/dist/types/sdk/generated/ts-client/api/types/EventsAgentSelection.d.ts +1 -1
  73. package/dist/types/sdk/generated/ts-client/api/types/EventsApprovalOption.d.ts +1 -1
  74. package/dist/types/sdk/generated/ts-client/api/types/EventsCapabilities.d.ts +9 -9
  75. package/dist/types/sdk/generated/ts-client/api/types/EventsContentFile.d.ts +1 -1
  76. package/dist/types/sdk/generated/ts-client/api/types/EventsContentImage.d.ts +1 -1
  77. package/dist/types/sdk/generated/ts-client/api/types/EventsContentPart.d.ts +1 -1
  78. package/dist/types/sdk/generated/ts-client/api/types/EventsDelta.d.ts +1 -1
  79. package/dist/types/sdk/generated/ts-client/api/types/EventsEAgentSwitchFailed.d.ts +1 -1
  80. package/dist/types/sdk/generated/ts-client/api/types/EventsEAgentSwitchFailedData.d.ts +1 -1
  81. package/dist/types/sdk/generated/ts-client/api/types/EventsEAgentSwitched.d.ts +1 -1
  82. package/dist/types/sdk/generated/ts-client/api/types/EventsEAgentSwitchedData.d.ts +1 -1
  83. package/dist/types/sdk/generated/ts-client/api/types/EventsEChatState.d.ts +1 -1
  84. package/dist/types/sdk/generated/ts-client/api/types/EventsEChatStateData.d.ts +1 -1
  85. package/dist/types/sdk/generated/ts-client/api/types/EventsEContextUpdated.d.ts +1 -1
  86. package/dist/types/sdk/generated/ts-client/api/types/EventsEContextUpdatedData.d.ts +1 -1
  87. package/dist/types/sdk/generated/ts-client/api/types/EventsEError.d.ts +1 -1
  88. package/dist/types/sdk/generated/ts-client/api/types/EventsEErrorData.d.ts +1 -1
  89. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemCompleted.d.ts +1 -1
  90. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemCompletedData.d.ts +1 -1
  91. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemDelta.d.ts +1 -1
  92. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemDeltaData.d.ts +1 -1
  93. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemRetracted.d.ts +1 -1
  94. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemRetractedData.d.ts +2 -2
  95. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemStarted.d.ts +1 -1
  96. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemStartedData.d.ts +1 -1
  97. package/dist/types/sdk/generated/ts-client/api/types/EventsEItemUpdated.d.ts +1 -1
  98. package/dist/types/sdk/generated/ts-client/api/types/EventsELimitsUpdated.d.ts +1 -1
  99. package/dist/types/sdk/generated/ts-client/api/types/EventsENotice.d.ts +1 -1
  100. package/dist/types/sdk/generated/ts-client/api/types/EventsENoticeData.d.ts +1 -1
  101. package/dist/types/sdk/generated/ts-client/api/types/EventsERunCompleted.d.ts +1 -1
  102. package/dist/types/sdk/generated/ts-client/api/types/EventsERunCompletedData.d.ts +2 -2
  103. package/dist/types/sdk/generated/ts-client/api/types/EventsERunStarted.d.ts +1 -1
  104. package/dist/types/sdk/generated/ts-client/api/types/EventsERunStartedData.d.ts +2 -2
  105. package/dist/types/sdk/generated/ts-client/api/types/EventsERunWaiting.d.ts +1 -1
  106. package/dist/types/sdk/generated/ts-client/api/types/EventsERunWaitingData.d.ts +2 -2
  107. package/dist/types/sdk/generated/ts-client/api/types/EventsESessionStarted.d.ts +1 -1
  108. package/dist/types/sdk/generated/ts-client/api/types/EventsESessionStartedData.d.ts +2 -2
  109. package/dist/types/sdk/generated/ts-client/api/types/EventsETaskUpdated.d.ts +1 -1
  110. package/dist/types/sdk/generated/ts-client/api/types/EventsETaskUpdatedData.d.ts +1 -1
  111. package/dist/types/sdk/generated/ts-client/api/types/EventsEUsageUpdated.d.ts +1 -1
  112. package/dist/types/sdk/generated/ts-client/api/types/EventsEUsageUpdatedData.d.ts +1 -1
  113. package/dist/types/sdk/generated/ts-client/api/types/EventsErrorCode.d.ts +1 -1
  114. package/dist/types/sdk/generated/ts-client/api/types/EventsEvent.d.ts +1 -1
  115. package/dist/types/sdk/generated/ts-client/api/types/EventsFailure.d.ts +1 -1
  116. package/dist/types/sdk/generated/ts-client/api/types/EventsFailureReason.d.ts +1 -1
  117. package/dist/types/sdk/generated/ts-client/api/types/EventsHandoffInjected.d.ts +1 -1
  118. package/dist/types/sdk/generated/ts-client/api/types/EventsHandoffLost.d.ts +1 -1
  119. package/dist/types/sdk/generated/ts-client/api/types/EventsInboxEntry.d.ts +5 -5
  120. package/dist/types/sdk/generated/ts-client/api/types/EventsInboxState.d.ts +2 -2
  121. package/dist/types/sdk/generated/ts-client/api/types/EventsItem.d.ts +1 -1
  122. package/dist/types/sdk/generated/ts-client/api/types/EventsItemApproval.d.ts +3 -3
  123. package/dist/types/sdk/generated/ts-client/api/types/EventsItemCommand.d.ts +2 -2
  124. package/dist/types/sdk/generated/ts-client/api/types/EventsItemCompaction.d.ts +3 -3
  125. package/dist/types/sdk/generated/ts-client/api/types/EventsItemError.d.ts +2 -2
  126. package/dist/types/sdk/generated/ts-client/api/types/EventsItemFileChange.d.ts +3 -3
  127. package/dist/types/sdk/generated/ts-client/api/types/EventsItemFileSearch.d.ts +2 -2
  128. package/dist/types/sdk/generated/ts-client/api/types/EventsItemHandoff.d.ts +4 -4
  129. package/dist/types/sdk/generated/ts-client/api/types/EventsItemHook.d.ts +2 -2
  130. package/dist/types/sdk/generated/ts-client/api/types/EventsItemNotification.d.ts +3 -3
  131. package/dist/types/sdk/generated/ts-client/api/types/EventsItemPlan.d.ts +3 -3
  132. package/dist/types/sdk/generated/ts-client/api/types/EventsItemProposedPlan.d.ts +2 -2
  133. package/dist/types/sdk/generated/ts-client/api/types/EventsItemQuestion.d.ts +2 -2
  134. package/dist/types/sdk/generated/ts-client/api/types/EventsItemReasoning.d.ts +2 -2
  135. package/dist/types/sdk/generated/ts-client/api/types/EventsItemSubagent.d.ts +2 -2
  136. package/dist/types/sdk/generated/ts-client/api/types/EventsItemText.d.ts +3 -3
  137. package/dist/types/sdk/generated/ts-client/api/types/EventsItemTimer.d.ts +2 -2
  138. package/dist/types/sdk/generated/ts-client/api/types/EventsItemToolCall.d.ts +3 -3
  139. package/dist/types/sdk/generated/ts-client/api/types/EventsItemUserMessage.d.ts +4 -4
  140. package/dist/types/sdk/generated/ts-client/api/types/EventsItemWebSearch.d.ts +3 -3
  141. package/dist/types/sdk/generated/ts-client/api/types/EventsLimitWindow.d.ts +2 -2
  142. package/dist/types/sdk/generated/ts-client/api/types/EventsLimits.d.ts +2 -2
  143. package/dist/types/sdk/generated/ts-client/api/types/EventsNativeRef.d.ts +1 -1
  144. package/dist/types/sdk/generated/ts-client/api/types/EventsOrigin.d.ts +2 -2
  145. package/dist/types/sdk/generated/ts-client/api/types/EventsRawFrame.d.ts +2 -2
  146. package/dist/types/sdk/generated/ts-client/api/types/EventsRunAgent.d.ts +2 -2
  147. package/dist/types/sdk/generated/ts-client/api/types/EventsRunTrigger.d.ts +2 -2
  148. package/dist/types/sdk/generated/ts-client/api/types/EventsScheduledSwitch.d.ts +1 -1
  149. package/dist/types/sdk/generated/ts-client/api/types/EventsTask.d.ts +3 -3
  150. package/dist/types/sdk/generated/ts-client/api/types/EventsToolOutput.d.ts +1 -1
  151. package/dist/types/sdk/generated/ts-client/api/types/EventsUsage.d.ts +1 -1
  152. package/dist/types/sdk/generated/ts-client/api/types/FileObject.d.ts +2 -2
  153. package/dist/types/sdk/generated/ts-client/api/types/HistoryEntry.d.ts +1 -1
  154. package/dist/types/sdk/generated/ts-client/api/types/HistoryPage.d.ts +1 -1
  155. package/dist/types/sdk/generated/ts-client/api/types/LoginStatus.d.ts +2 -2
  156. package/dist/types/sdk/generated/ts-client/api/types/Machine.d.ts +3 -3
  157. package/dist/types/sdk/generated/ts-client/api/types/MessageReceipt.d.ts +1 -1
  158. package/dist/types/sdk/generated/ts-client/api/types/MyProviderStatus.d.ts +4 -4
  159. package/dist/types/sdk/generated/ts-client/api/types/OAuthFlow.d.ts +1 -1
  160. package/dist/types/sdk/generated/ts-client/api/types/Pairing.d.ts +2 -2
  161. package/dist/types/sdk/generated/ts-client/api/types/Placement.d.ts +2 -2
  162. package/dist/types/sdk/generated/ts-client/api/types/PreTurnHook.d.ts +1 -1
  163. package/dist/types/sdk/generated/ts-client/api/types/Principal.d.ts +2 -2
  164. package/dist/types/sdk/generated/ts-client/api/types/ProviderKind.d.ts +1 -1
  165. package/dist/types/sdk/generated/ts-client/api/types/ProviderLimits.d.ts +2 -2
  166. package/dist/types/sdk/generated/ts-client/api/types/ProviderStatus.d.ts +4 -4
  167. package/dist/types/sdk/generated/ts-client/api/types/RunSummary.d.ts +2 -2
  168. package/dist/types/sdk/generated/ts-client/api/types/Scope.d.ts +1 -1
  169. package/dist/types/sdk/generated/ts-client/api/types/SwitchResult.d.ts +2 -2
  170. package/dist/types/sdk/generated/ts-client/api/types/ToolPrincipal.d.ts +3 -3
  171. package/dist/types/sdk/generated/ts-client/api/types/index.d.ts +1 -1
  172. package/dist/types/sdk/generated/ts-client/core/runtime/index.d.ts +1 -1
  173. package/dist/types/sdk/generated/ts-client/core/stream/Stream.d.ts +1 -1
  174. package/dist/types/sdk/generated/ts-client/core/stream/index.d.ts +1 -1
  175. package/dist/types/sdk/generated/ts-client/core/url/index.d.ts +1 -1
  176. package/dist/types/sdk/generated/ts-client/errors/SmoothAgentApiError.d.ts +2 -2
  177. package/dist/types/sdk/generated/ts-server/BaseClient.d.ts +2 -2
  178. package/dist/types/sdk/generated/ts-server/api/errors/BadGatewayError.d.ts +2 -2
  179. package/dist/types/sdk/generated/ts-server/api/errors/BadRequestError.d.ts +2 -2
  180. package/dist/types/sdk/generated/ts-server/api/errors/ConflictError.d.ts +2 -2
  181. package/dist/types/sdk/generated/ts-server/api/errors/FailedDependencyError.d.ts +2 -2
  182. package/dist/types/sdk/generated/ts-server/api/errors/ForbiddenError.d.ts +2 -2
  183. package/dist/types/sdk/generated/ts-server/api/errors/GoneError.d.ts +2 -2
  184. package/dist/types/sdk/generated/ts-server/api/errors/InternalServerError.d.ts +2 -2
  185. package/dist/types/sdk/generated/ts-server/api/errors/NotFoundError.d.ts +2 -2
  186. package/dist/types/sdk/generated/ts-server/api/errors/PaymentRequiredError.d.ts +2 -2
  187. package/dist/types/sdk/generated/ts-server/api/errors/ServiceUnavailableError.d.ts +2 -2
  188. package/dist/types/sdk/generated/ts-server/api/errors/TooManyRequestsError.d.ts +2 -2
  189. package/dist/types/sdk/generated/ts-server/api/errors/UnauthorizedError.d.ts +2 -2
  190. package/dist/types/sdk/generated/ts-server/api/errors/UnprocessableEntityError.d.ts +2 -2
  191. package/dist/types/sdk/generated/ts-server/api/resources/agents/client/requests/AgentConfig.d.ts +2 -2
  192. package/dist/types/sdk/generated/ts-server/api/resources/agents/client/requests/AgentConfigMergePatchUpdate.d.ts +2 -2
  193. package/dist/types/sdk/generated/ts-server/api/resources/agents/types/AgentsEmbedResponse.d.ts +1 -1
  194. package/dist/types/sdk/generated/ts-server/api/resources/agents/types/AgentsGetResponse.d.ts +1 -1
  195. package/dist/types/sdk/generated/ts-server/api/resources/agents/types/AgentsListResponse.d.ts +1 -1
  196. package/dist/types/sdk/generated/ts-server/api/resources/billing/client/requests/UsageGetRequest.d.ts +1 -1
  197. package/dist/types/sdk/generated/ts-server/api/resources/billing/types/UsageGetRequestGroupBy.d.ts +1 -1
  198. package/dist/types/sdk/generated/ts-server/api/resources/billing/types/UsageGetResponse.d.ts +1 -1
  199. package/dist/types/sdk/generated/ts-server/api/resources/chats/client/requests/ChatsEventsRequest.d.ts +1 -1
  200. package/dist/types/sdk/generated/ts-server/api/resources/chats/client/requests/ChatsHistoryRequest.d.ts +1 -1
  201. package/dist/types/sdk/generated/ts-server/api/resources/chats/client/requests/ChatsUpdateRequest.d.ts +1 -1
  202. package/dist/types/sdk/generated/ts-server/api/resources/chats/client/requests/CreateChat.d.ts +1 -1
  203. package/dist/types/sdk/generated/ts-server/api/resources/chats/client/requests/EditQueuedChatsRequest.d.ts +1 -1
  204. package/dist/types/sdk/generated/ts-server/api/resources/chats/client/requests/SendMessage.d.ts +2 -2
  205. package/dist/types/sdk/generated/ts-server/api/resources/chats/client/requests/SwitchAgent.d.ts +6 -4
  206. package/dist/types/sdk/generated/ts-server/api/resources/chats/types/ChatBoxListTasksResponse.d.ts +1 -1
  207. package/dist/types/sdk/generated/ts-server/api/resources/chats/types/ChatsEventsRequestAccept.d.ts +1 -1
  208. package/dist/types/sdk/generated/ts-server/api/resources/chats/types/ChatsHistoryRequestAnchor.d.ts +1 -1
  209. package/dist/types/sdk/generated/ts-server/api/resources/chats/types/ChatsListResponse.d.ts +1 -1
  210. package/dist/types/sdk/generated/ts-server/api/resources/chats/types/ChatsRunsResponse.d.ts +1 -1
  211. package/dist/types/sdk/generated/ts-server/api/resources/chats/types/ChatsSendResponse.d.ts +1 -1
  212. package/dist/types/sdk/generated/ts-server/api/resources/connections/client/requests/ConnectionsConnectRequest.d.ts +1 -1
  213. package/dist/types/sdk/generated/ts-server/api/resources/connections/client/requests/ConnectionsDisconnectRequest.d.ts +1 -1
  214. package/dist/types/sdk/generated/ts-server/api/resources/connections/client/requests/ConnectionsLimitsRequest.d.ts +1 -1
  215. package/dist/types/sdk/generated/ts-server/api/resources/connections/client/requests/SetKeyConnectionsRequest.d.ts +1 -1
  216. package/dist/types/sdk/generated/ts-server/api/resources/connections/types/ConnectionsConnectResponse.d.ts +1 -1
  217. package/dist/types/sdk/generated/ts-server/api/resources/connections/types/ConnectionsDisconnectRequestVia.d.ts +1 -1
  218. package/dist/types/sdk/generated/ts-server/api/resources/connections/types/ConnectionsListResponse.d.ts +1 -1
  219. package/dist/types/sdk/generated/ts-server/api/resources/files/client/requests/FilesUploadRequest.d.ts +1 -1
  220. package/dist/types/sdk/generated/ts-server/api/resources/files/types/CreateUploadFilesResponse.d.ts +1 -1
  221. package/dist/types/sdk/generated/ts-server/api/resources/identity/types/MeWhoamiResponse.d.ts +1 -1
  222. package/dist/types/sdk/generated/ts-server/api/resources/index.d.ts +15 -15
  223. package/dist/types/sdk/generated/ts-server/api/resources/keys/client/requests/CreateApiKey.d.ts +1 -1
  224. package/dist/types/sdk/generated/ts-server/api/resources/keys/types/ApiKeysListResponse.d.ts +1 -1
  225. package/dist/types/sdk/generated/ts-server/api/resources/machines/client/requests/MachinesCreateRequest.d.ts +1 -1
  226. package/dist/types/sdk/generated/ts-server/api/resources/machines/client/requests/MachinesUpdateRequest.d.ts +1 -1
  227. package/dist/types/sdk/generated/ts-server/api/resources/machines/types/MachinesListResponse.d.ts +1 -1
  228. package/dist/types/sdk/generated/ts-server/api/resources/observability/client/requests/ChatObservabilityLogsRequest.d.ts +1 -1
  229. package/dist/types/sdk/generated/ts-server/api/resources/observability/client/requests/ChatObservabilityMetricsRequest.d.ts +1 -1
  230. package/dist/types/sdk/generated/ts-server/api/resources/providers/client/requests/MyProvidersConnectRequest.d.ts +1 -1
  231. package/dist/types/sdk/generated/ts-server/api/resources/providers/client/requests/MyProvidersDisconnectRequest.d.ts +1 -1
  232. package/dist/types/sdk/generated/ts-server/api/resources/providers/client/requests/MyProvidersLimitsRequest.d.ts +1 -1
  233. package/dist/types/sdk/generated/ts-server/api/resources/providers/client/requests/MyProvidersSetKeyRequest.d.ts +1 -1
  234. package/dist/types/sdk/generated/ts-server/api/resources/providers/types/MyProvidersConnectResponse.d.ts +1 -1
  235. package/dist/types/sdk/generated/ts-server/api/resources/providers/types/MyProvidersDisconnectRequestVia.d.ts +1 -1
  236. package/dist/types/sdk/generated/ts-server/api/resources/providers/types/MyProvidersListResponse.d.ts +1 -1
  237. package/dist/types/sdk/generated/ts-server/api/resources/runs/client/requests/RunsListRequest.d.ts +1 -1
  238. package/dist/types/sdk/generated/ts-server/api/resources/runs/types/RunsListRequestStatus.d.ts +1 -1
  239. package/dist/types/sdk/generated/ts-server/api/resources/runs/types/RunsListResponse.d.ts +1 -1
  240. package/dist/types/sdk/generated/ts-server/api/resources/secrets/types/SecretsListResponse.d.ts +1 -1
  241. package/dist/types/sdk/generated/ts-server/api/resources/users/client/Client.d.ts +38 -0
  242. package/dist/types/sdk/generated/ts-server/api/resources/users/client/requests/UsersCreateRequest.d.ts +3 -1
  243. package/dist/types/sdk/generated/ts-server/api/resources/users/client/requests/UsersMergeRequest.d.ts +13 -0
  244. package/dist/types/sdk/generated/ts-server/api/resources/users/client/requests/UsersUpdateRequest.d.ts +3 -1
  245. package/dist/types/sdk/generated/ts-server/api/resources/users/client/requests/index.d.ts +1 -0
  246. package/dist/types/sdk/generated/ts-server/api/resources/users/types/GrantsListResponse.d.ts +1 -1
  247. package/dist/types/sdk/generated/ts-server/api/resources/users/types/UserTokensListResponse.d.ts +1 -1
  248. package/dist/types/sdk/generated/ts-server/api/resources/users/types/UsersListResponse.d.ts +1 -1
  249. package/dist/types/sdk/generated/ts-server/api/resources/webhooks/types/WebhooksCreateResponse.d.ts +1 -1
  250. package/dist/types/sdk/generated/ts-server/api/resources/webhooks/types/WebhooksListResponse.d.ts +1 -1
  251. package/dist/types/sdk/generated/ts-server/api/resources/workspaces/client/requests/WorkspacesCreateRequest.d.ts +1 -1
  252. package/dist/types/sdk/generated/ts-server/api/resources/workspaces/client/requests/WorkspacesUpdateRequest.d.ts +1 -1
  253. package/dist/types/sdk/generated/ts-server/api/resources/workspaces/types/WorkspacesListResponse.d.ts +1 -1
  254. package/dist/types/sdk/generated/ts-server/api/types/Agent.d.ts +2 -2
  255. package/dist/types/sdk/generated/ts-server/api/types/AgentHealth.d.ts +4 -4
  256. package/dist/types/sdk/generated/ts-server/api/types/AgentHooks.d.ts +7 -1
  257. package/dist/types/sdk/generated/ts-server/api/types/AgentHooksMergePatchUpdateOrCreate.d.ts +7 -1
  258. package/dist/types/sdk/generated/ts-server/api/types/AgentLimits.d.ts +1 -1
  259. package/dist/types/sdk/generated/ts-server/api/types/AgentLimitsMergePatchUpdateOrCreate.d.ts +1 -1
  260. package/dist/types/sdk/generated/ts-server/api/types/AgentMessageOrigin.d.ts +1 -1
  261. package/dist/types/sdk/generated/ts-server/api/types/AgentProviderOption.d.ts +1 -1
  262. package/dist/types/sdk/generated/ts-server/api/types/AgentPublic.d.ts +1 -1
  263. package/dist/types/sdk/generated/ts-server/api/types/ApiKey.d.ts +2 -2
  264. package/dist/types/sdk/generated/ts-server/api/types/ApiKeyWithSecret.d.ts +2 -2
  265. package/dist/types/sdk/generated/ts-server/api/types/BillingLine.d.ts +1 -1
  266. package/dist/types/sdk/generated/ts-server/api/types/BillingStatement.d.ts +1 -1
  267. package/dist/types/sdk/generated/ts-server/api/types/BoxFileContent.d.ts +1 -1
  268. package/dist/types/sdk/generated/ts-server/api/types/BoxFileEntry.d.ts +2 -2
  269. package/dist/types/sdk/generated/ts-server/api/types/BoxFileList.d.ts +1 -1
  270. package/dist/types/sdk/generated/ts-server/api/types/BoxIncident.d.ts +1 -1
  271. package/dist/types/sdk/generated/ts-server/api/types/BoxProfile.d.ts +2 -0
  272. package/dist/types/sdk/generated/ts-server/api/types/BoxProfileMergePatchUpdateOrCreate.d.ts +2 -0
  273. package/dist/types/sdk/generated/ts-server/api/types/Chat.d.ts +2 -2
  274. package/dist/types/sdk/generated/ts-server/api/types/ChatContext.d.ts +1 -1
  275. package/dist/types/sdk/generated/ts-server/api/types/ChatDeleted.d.ts +1 -1
  276. package/dist/types/sdk/generated/ts-server/api/types/ChatDiagnosis.d.ts +1 -1
  277. package/dist/types/sdk/generated/ts-server/api/types/ChatSelection.d.ts +2 -2
  278. package/dist/types/sdk/generated/ts-server/api/types/ChatTask.d.ts +3 -3
  279. package/dist/types/sdk/generated/ts-server/api/types/ChatUsage.d.ts +1 -1
  280. package/dist/types/sdk/generated/ts-server/api/types/Connection.d.ts +1 -1
  281. package/dist/types/sdk/generated/ts-server/api/types/Culprit.d.ts +1 -1
  282. package/dist/types/sdk/generated/ts-server/api/types/DeviceFlow.d.ts +1 -1
  283. package/dist/types/sdk/generated/ts-server/api/types/ErrorBody.d.ts +1 -1
  284. package/dist/types/sdk/generated/ts-server/api/types/Error_.d.ts +1 -1
  285. package/dist/types/sdk/generated/ts-server/api/types/EventRange.d.ts +1 -1
  286. package/dist/types/sdk/generated/ts-server/api/types/EventsAgentSelection.d.ts +1 -1
  287. package/dist/types/sdk/generated/ts-server/api/types/EventsApprovalOption.d.ts +1 -1
  288. package/dist/types/sdk/generated/ts-server/api/types/EventsCapabilities.d.ts +9 -9
  289. package/dist/types/sdk/generated/ts-server/api/types/EventsContentFile.d.ts +1 -1
  290. package/dist/types/sdk/generated/ts-server/api/types/EventsContentImage.d.ts +1 -1
  291. package/dist/types/sdk/generated/ts-server/api/types/EventsContentPart.d.ts +1 -1
  292. package/dist/types/sdk/generated/ts-server/api/types/EventsDelta.d.ts +1 -1
  293. package/dist/types/sdk/generated/ts-server/api/types/EventsEAgentSwitchFailed.d.ts +1 -1
  294. package/dist/types/sdk/generated/ts-server/api/types/EventsEAgentSwitchFailedData.d.ts +1 -1
  295. package/dist/types/sdk/generated/ts-server/api/types/EventsEAgentSwitched.d.ts +1 -1
  296. package/dist/types/sdk/generated/ts-server/api/types/EventsEAgentSwitchedData.d.ts +1 -1
  297. package/dist/types/sdk/generated/ts-server/api/types/EventsEChatState.d.ts +1 -1
  298. package/dist/types/sdk/generated/ts-server/api/types/EventsEChatStateData.d.ts +1 -1
  299. package/dist/types/sdk/generated/ts-server/api/types/EventsEContextUpdated.d.ts +1 -1
  300. package/dist/types/sdk/generated/ts-server/api/types/EventsEContextUpdatedData.d.ts +1 -1
  301. package/dist/types/sdk/generated/ts-server/api/types/EventsEError.d.ts +1 -1
  302. package/dist/types/sdk/generated/ts-server/api/types/EventsEErrorData.d.ts +1 -1
  303. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemCompleted.d.ts +1 -1
  304. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemCompletedData.d.ts +1 -1
  305. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemDelta.d.ts +1 -1
  306. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemDeltaData.d.ts +1 -1
  307. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemRetracted.d.ts +1 -1
  308. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemRetractedData.d.ts +2 -2
  309. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemStarted.d.ts +1 -1
  310. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemStartedData.d.ts +1 -1
  311. package/dist/types/sdk/generated/ts-server/api/types/EventsEItemUpdated.d.ts +1 -1
  312. package/dist/types/sdk/generated/ts-server/api/types/EventsELimitsUpdated.d.ts +1 -1
  313. package/dist/types/sdk/generated/ts-server/api/types/EventsENotice.d.ts +1 -1
  314. package/dist/types/sdk/generated/ts-server/api/types/EventsENoticeData.d.ts +1 -1
  315. package/dist/types/sdk/generated/ts-server/api/types/EventsERunCompleted.d.ts +1 -1
  316. package/dist/types/sdk/generated/ts-server/api/types/EventsERunCompletedData.d.ts +2 -2
  317. package/dist/types/sdk/generated/ts-server/api/types/EventsERunStarted.d.ts +1 -1
  318. package/dist/types/sdk/generated/ts-server/api/types/EventsERunStartedData.d.ts +2 -2
  319. package/dist/types/sdk/generated/ts-server/api/types/EventsERunWaiting.d.ts +1 -1
  320. package/dist/types/sdk/generated/ts-server/api/types/EventsERunWaitingData.d.ts +2 -2
  321. package/dist/types/sdk/generated/ts-server/api/types/EventsESessionStarted.d.ts +1 -1
  322. package/dist/types/sdk/generated/ts-server/api/types/EventsESessionStartedData.d.ts +2 -2
  323. package/dist/types/sdk/generated/ts-server/api/types/EventsETaskUpdated.d.ts +1 -1
  324. package/dist/types/sdk/generated/ts-server/api/types/EventsETaskUpdatedData.d.ts +1 -1
  325. package/dist/types/sdk/generated/ts-server/api/types/EventsEUsageUpdated.d.ts +1 -1
  326. package/dist/types/sdk/generated/ts-server/api/types/EventsEUsageUpdatedData.d.ts +1 -1
  327. package/dist/types/sdk/generated/ts-server/api/types/EventsErrorCode.d.ts +1 -1
  328. package/dist/types/sdk/generated/ts-server/api/types/EventsEvent.d.ts +1 -1
  329. package/dist/types/sdk/generated/ts-server/api/types/EventsFailure.d.ts +1 -1
  330. package/dist/types/sdk/generated/ts-server/api/types/EventsFailureReason.d.ts +1 -1
  331. package/dist/types/sdk/generated/ts-server/api/types/EventsHandoffInjected.d.ts +1 -1
  332. package/dist/types/sdk/generated/ts-server/api/types/EventsHandoffLost.d.ts +1 -1
  333. package/dist/types/sdk/generated/ts-server/api/types/EventsInboxEntry.d.ts +5 -5
  334. package/dist/types/sdk/generated/ts-server/api/types/EventsInboxState.d.ts +2 -2
  335. package/dist/types/sdk/generated/ts-server/api/types/EventsItem.d.ts +1 -1
  336. package/dist/types/sdk/generated/ts-server/api/types/EventsItemApproval.d.ts +3 -3
  337. package/dist/types/sdk/generated/ts-server/api/types/EventsItemCommand.d.ts +2 -2
  338. package/dist/types/sdk/generated/ts-server/api/types/EventsItemCompaction.d.ts +3 -3
  339. package/dist/types/sdk/generated/ts-server/api/types/EventsItemError.d.ts +2 -2
  340. package/dist/types/sdk/generated/ts-server/api/types/EventsItemFileChange.d.ts +3 -3
  341. package/dist/types/sdk/generated/ts-server/api/types/EventsItemFileSearch.d.ts +2 -2
  342. package/dist/types/sdk/generated/ts-server/api/types/EventsItemHandoff.d.ts +4 -4
  343. package/dist/types/sdk/generated/ts-server/api/types/EventsItemHook.d.ts +2 -2
  344. package/dist/types/sdk/generated/ts-server/api/types/EventsItemNotification.d.ts +3 -3
  345. package/dist/types/sdk/generated/ts-server/api/types/EventsItemPlan.d.ts +3 -3
  346. package/dist/types/sdk/generated/ts-server/api/types/EventsItemProposedPlan.d.ts +2 -2
  347. package/dist/types/sdk/generated/ts-server/api/types/EventsItemQuestion.d.ts +2 -2
  348. package/dist/types/sdk/generated/ts-server/api/types/EventsItemReasoning.d.ts +2 -2
  349. package/dist/types/sdk/generated/ts-server/api/types/EventsItemSubagent.d.ts +2 -2
  350. package/dist/types/sdk/generated/ts-server/api/types/EventsItemText.d.ts +3 -3
  351. package/dist/types/sdk/generated/ts-server/api/types/EventsItemTimer.d.ts +2 -2
  352. package/dist/types/sdk/generated/ts-server/api/types/EventsItemToolCall.d.ts +3 -3
  353. package/dist/types/sdk/generated/ts-server/api/types/EventsItemUserMessage.d.ts +4 -4
  354. package/dist/types/sdk/generated/ts-server/api/types/EventsItemWebSearch.d.ts +3 -3
  355. package/dist/types/sdk/generated/ts-server/api/types/EventsLimitWindow.d.ts +2 -2
  356. package/dist/types/sdk/generated/ts-server/api/types/EventsLimits.d.ts +2 -2
  357. package/dist/types/sdk/generated/ts-server/api/types/EventsNativeRef.d.ts +1 -1
  358. package/dist/types/sdk/generated/ts-server/api/types/EventsOrigin.d.ts +2 -2
  359. package/dist/types/sdk/generated/ts-server/api/types/EventsRawFrame.d.ts +2 -2
  360. package/dist/types/sdk/generated/ts-server/api/types/EventsRunAgent.d.ts +2 -2
  361. package/dist/types/sdk/generated/ts-server/api/types/EventsRunTrigger.d.ts +2 -2
  362. package/dist/types/sdk/generated/ts-server/api/types/EventsScheduledSwitch.d.ts +1 -1
  363. package/dist/types/sdk/generated/ts-server/api/types/EventsTask.d.ts +3 -3
  364. package/dist/types/sdk/generated/ts-server/api/types/EventsToolOutput.d.ts +1 -1
  365. package/dist/types/sdk/generated/ts-server/api/types/EventsUsage.d.ts +1 -1
  366. package/dist/types/sdk/generated/ts-server/api/types/FileObject.d.ts +2 -2
  367. package/dist/types/sdk/generated/ts-server/api/types/Grant.d.ts +1 -1
  368. package/dist/types/sdk/generated/ts-server/api/types/HistoryEntry.d.ts +1 -1
  369. package/dist/types/sdk/generated/ts-server/api/types/HistoryPage.d.ts +1 -1
  370. package/dist/types/sdk/generated/ts-server/api/types/LoginStatus.d.ts +2 -2
  371. package/dist/types/sdk/generated/ts-server/api/types/LogsPage.d.ts +1 -1
  372. package/dist/types/sdk/generated/ts-server/api/types/Machine.d.ts +3 -3
  373. package/dist/types/sdk/generated/ts-server/api/types/MessageReceipt.d.ts +1 -1
  374. package/dist/types/sdk/generated/ts-server/api/types/MetricsPage.d.ts +1 -1
  375. package/dist/types/sdk/generated/ts-server/api/types/MyProviderStatus.d.ts +4 -4
  376. package/dist/types/sdk/generated/ts-server/api/types/OAuthFlow.d.ts +1 -1
  377. package/dist/types/sdk/generated/ts-server/api/types/Pairing.d.ts +2 -2
  378. package/dist/types/sdk/generated/ts-server/api/types/Placement.d.ts +2 -2
  379. package/dist/types/sdk/generated/ts-server/api/types/PlacementMergePatchUpdateOrCreate.d.ts +2 -2
  380. package/dist/types/sdk/generated/ts-server/api/types/PreTurnHook.d.ts +1 -1
  381. package/dist/types/sdk/generated/ts-server/api/types/PreTurnHookMergePatchUpdateOrCreate.d.ts +1 -1
  382. package/dist/types/sdk/generated/ts-server/api/types/Principal.d.ts +2 -2
  383. package/dist/types/sdk/generated/ts-server/api/types/ProviderKind.d.ts +1 -1
  384. package/dist/types/sdk/generated/ts-server/api/types/ProviderLimits.d.ts +2 -2
  385. package/dist/types/sdk/generated/ts-server/api/types/ProviderStatus.d.ts +4 -4
  386. package/dist/types/sdk/generated/ts-server/api/types/ReleasesStatus.d.ts +1 -1
  387. package/dist/types/sdk/generated/ts-server/api/types/RunDiagnosis.d.ts +1 -1
  388. package/dist/types/sdk/generated/ts-server/api/types/RunSummary.d.ts +2 -2
  389. package/dist/types/sdk/generated/ts-server/api/types/RunVerdict.d.ts +2 -2
  390. package/dist/types/sdk/generated/ts-server/api/types/Scope.d.ts +1 -1
  391. package/dist/types/sdk/generated/ts-server/api/types/SecretInfo.d.ts +1 -1
  392. package/dist/types/sdk/generated/ts-server/api/types/SwitchResult.d.ts +2 -2
  393. package/dist/types/sdk/generated/ts-server/api/types/ToolPrincipal.d.ts +3 -3
  394. package/dist/types/sdk/generated/ts-server/api/types/User.d.ts +9 -1
  395. package/dist/types/sdk/generated/ts-server/api/types/UserKind.d.ts +5 -0
  396. package/dist/types/sdk/generated/ts-server/api/types/UserSession.d.ts +2 -2
  397. package/dist/types/sdk/generated/ts-server/api/types/UserToken.d.ts +1 -1
  398. package/dist/types/sdk/generated/ts-server/api/types/WebhookEndpoint.d.ts +1 -1
  399. package/dist/types/sdk/generated/ts-server/api/types/Workspace.d.ts +1 -1
  400. package/dist/types/sdk/generated/ts-server/api/types/WorkspaceRun.d.ts +2 -2
  401. package/dist/types/sdk/generated/ts-server/api/types/index.d.ts +2 -1
  402. package/dist/types/sdk/generated/ts-server/auth/BearerAuthProvider.d.ts +1 -1
  403. package/dist/types/sdk/generated/ts-server/core/runtime/index.d.ts +1 -1
  404. package/dist/types/sdk/generated/ts-server/core/stream/Stream.d.ts +1 -1
  405. package/dist/types/sdk/generated/ts-server/core/stream/index.d.ts +1 -1
  406. package/dist/types/sdk/generated/ts-server/core/url/index.d.ts +1 -1
  407. package/dist/types/sdk/generated/ts-server/errors/SmoothAgentApiError.d.ts +2 -2
  408. package/dist/types/sdk/generated/ts-server/errors/handleNonStatusCodeError.d.ts +1 -1
  409. package/dist/types/sdk/generated/ts-server/index.d.ts +1 -1
  410. package/dist/types/sdk/ts/core-live/src/types.d.ts +1 -1
  411. package/dist/types/sdk/ts/core-live/src/wasm/bytes.d.ts +1 -1
  412. package/dist/types/sdk/ts/core-live/src/watch.d.ts +3 -1
  413. package/package.json +2 -2
  414. package/dist/bytes-3XCX7CRA.js +0 -8
  415. package/dist/chunk-C64SPUFX.js.map +0 -7
  416. package/dist/client-CN6PRCWE.js.map +0 -7
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../core-live/src/auth.ts", "../../core-live/src/wasm/live.js", "../../core-live/src/native.ts", "../../core-live/src/edge.ts", "../../core-live/src/wasm/empty.ts", "../../core-live/src/backoff.ts", "../../core-live/src/stream.ts", "../../core-live/src/types.ts", "../../core-live/src/watch.ts", "../../core-live/src/prompt.ts", "../../core-live/src/feed.ts", "../../core-live/src/client.ts"],
4
- "sourcesContent": ["// Token do usu\u00E1rio (DESIGN \u00A71.1; proposta sdk \u00A74.7; control \u00A72.2):\n// - `getToken` \u00E9 single-flight: N chamadas concorrentes = UMA renova\u00E7\u00E3o no backend do dev;\n// - renova ANTES de vencer (o JWT \u00E9 leg\u00EDvel: `exp`), com folga;\n// - REST com 401 {reason:'expired'} \u2192 renova e repete UMA vez; 'revoked' \u2192 para (a sess\u00E3o acabou);\n// - token novo tamb\u00E9m vai pros sockets abertos (`onRenew`), sem derrubar nada.\nimport type { Clock } from './deps'\n\nexport type AuthErrorReason = 'missing' | 'invalid' | 'expired' | 'revoked'\n\nexport class SmoothAgentAuthError extends Error {\n constructor(\n readonly reason: AuthErrorReason,\n message = `unauthorized (${reason})`,\n ) {\n super(message)\n this.name = 'SmoothAgentAuthError'\n }\n}\n\nexport interface TokenSourceOptions {\n token?: string\n getToken?: () => Promise<string>\n clock: Clock\n /** Renova quando falta menos que isto pro `exp` (padr\u00E3o 60 s). */\n skewMs?: number\n}\n\n/** `exp` (ms) de um JWT, ou null se n\u00E3o for JWT (chave de API) ou n\u00E3o tiver `exp`. */\nexport function jwtExpiresAt(token: string): number | null {\n const part = token.split('.')[1]\n if (!part) return null\n try {\n const json = JSON.parse(decodeBase64Url(part)) as { exp?: unknown }\n return typeof json.exp === 'number' ? json.exp * 1000 : null\n } catch {\n return null\n }\n}\n\nfunction decodeBase64Url(s: string): string {\n const b64 = s.replace(/-/g, '+').replace(/_/g, '/') + '==='.slice((s.length + 3) % 4)\n if (typeof atob === 'function') {\n const bin = atob(b64)\n const bytes = Uint8Array.from(bin, (c) => c.charCodeAt(0))\n return new TextDecoder().decode(bytes)\n }\n return Buffer.from(b64, 'base64').toString('utf8')\n}\n\nexport class TokenSource {\n private current: string | null\n private inflight: Promise<string> | null = null\n private stale = false\n private revoked = false\n private readonly listeners = new Set<(token: string) => void>()\n private readonly skewMs: number\n\n constructor(private readonly o: TokenSourceOptions) {\n if (!o.token && !o.getToken) throw new Error('SmoothAgent: passe `token` ou `getToken`')\n this.current = o.token ?? null\n this.skewMs = o.skewMs ?? 60_000\n }\n\n /** Token v\u00E1lido agora (renova se precisar). Rejeita com SmoothAgentAuthError('revoked') depois de revogado. */\n async get(): Promise<string> {\n if (this.revoked) throw new SmoothAgentAuthError('revoked')\n if (this.current && !this.stale && !this.nearExpiry(this.current)) return this.current\n if (!this.o.getToken) {\n if (this.current && !this.stale) return this.current // sem como renovar: usa o que tem\n throw new SmoothAgentAuthError('expired')\n }\n return this.refresh()\n }\n\n /** O servidor disse `expired`: a pr\u00F3xima `get()` renova. */\n invalidate(): void {\n this.stale = true\n }\n\n /** O servidor disse `revoked`: nada de renovar. */\n markRevoked(): void {\n this.revoked = true\n }\n\n get isRevoked(): boolean {\n return this.revoked\n }\n\n onRenew(cb: (token: string) => void): () => void {\n this.listeners.add(cb)\n return () => this.listeners.delete(cb)\n }\n\n private nearExpiry(token: string): boolean {\n const exp = jwtExpiresAt(token)\n return exp !== null && exp - this.o.clock.now() < this.skewMs\n }\n\n private refresh(): Promise<string> {\n if (this.inflight) return this.inflight\n const prev = this.current\n this.inflight = this.o.getToken!()\n .then((t) => {\n this.current = t\n this.stale = false\n if (t !== prev) for (const l of this.listeners) l(t)\n return t\n })\n .finally(() => {\n this.inflight = null\n })\n return this.inflight\n }\n}\n\n/**\n * `fetch` com o Authorization do TokenSource e a regra do 401: `expired` \u2192 renova e repete UMA vez;\n * `revoked` \u2192 marca e devolve a resposta (quem chamou mostra o erro). Vai como `fetch` da SDK gerada.\n */\nexport function authedFetch(source: TokenSource, base: typeof fetch = fetch): typeof fetch {\n return async (input, init) => {\n const call = async (token: string) => {\n const headers = new Headers(init?.headers)\n headers.set('Authorization', `Bearer ${token}`)\n return base(input, { ...init, headers })\n }\n let res = await call(await source.get())\n if (res.status !== 401) return res\n const reason = await reasonOf(res)\n if (reason === 'revoked') {\n source.markRevoked()\n return res\n }\n if (reason !== 'expired') return res\n source.invalidate()\n res = await call(await source.get())\n if (res.status === 401 && (await reasonOf(res)) === 'revoked') source.markRevoked()\n return res\n }\n}\n\nasync function reasonOf(res: Response): Promise<AuthErrorReason | undefined> {\n try {\n const body = (await res.clone().json()) as { error?: { details?: { reason?: AuthErrorReason } } }\n return body.error?.details?.reason\n } catch {\n return undefined\n }\n}\n", "let wasm;\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n/**\n * @param {number} epoch\n * @param {number} now\n * @returns {number}\n */\nexport function to_ms(epoch, now) {\n const ret = wasm.to_ms(epoch, now);\n return ret;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n/**\n * @param {string} c\n * @returns {string}\n */\nexport function error_code(c) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(c, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.error_code(retptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n}\n\n/**\n * A lista fechada do contrato (\u00A76), gerada do schema no build.\n * @returns {string}\n */\nexport function error_codes() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.error_codes(retptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n}\n\nfunction getObject(idx) { return heap[idx]; }\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n/**\n * `state.needsProvider` a partir do estado (o mesmo do watch; a fixture de conformidade usa).\n * @param {string} timeline_json\n * @param {string} queue_json\n * @param {string} refusal_json\n * @returns {string}\n */\nexport function needs_provider(timeline_json, queue_json, refusal_json) {\n let deferred5_0;\n let deferred5_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(timeline_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(queue_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(refusal_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len2 = WASM_VECTOR_LEN;\n wasm.needs_provider(retptr, ptr0, len0, ptr1, len1, ptr2, len2);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr4 = r0;\n var len4 = r1;\n if (r3) {\n ptr4 = 0; len4 = 0;\n throw takeObject(r2);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred5_0, deferred5_1, 1);\n }\n}\n\nconst LiveFeedFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_livefeed_free(ptr >>> 0, 1));\n/**\n * A lista lateral ao vivo (UserFeed). As entradas s\u00E3o as mesmas da borda comum; as que n\u00E3o se aplicam\n * (probe, range, snapshot) n\u00E3o fazem nada.\n */\nexport class LiveFeed {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n LiveFeedFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_livefeed_free(ptr, 0);\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @param {string} text\n * @returns {string}\n */\n on_message(now, online, visible, rand, conn, text) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_on_message(retptr, this.__wbg_ptr, now, online, visible, rand, conn, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} _n\n * @param {boolean} _o\n * @param {boolean} _v\n * @param {number} _r\n * @param {number} _req\n * @param {boolean} _ok\n * @param {string} _s\n * @returns {string}\n */\n on_snapshot(_n, _o, _v, _r, _req, _ok, _s) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(_s, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_on_probe(retptr, this.__wbg_ptr, _n, _o, _v, _r, _req, _ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n next_deadline() {\n const ret = wasm.livefeed_next_deadline(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_open_failed(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livefeed_on_open_failed(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * `config_json`: { url, agentId?, backoff? }\n * @param {string} config_json\n */\n constructor(config_json) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(config_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_new(retptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n LiveFeedFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n tick(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livefeed_tick(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} _why\n * @param {number} _away_ms\n * @returns {string}\n */\n wake(now, online, visible, rand, _why, _away_ms) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(_why, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_wake(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0, _away_ms);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n close(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livefeed_close(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n start(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livefeed_start(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n status() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livefeed_status(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_open(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livefeed_on_open(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @param {number} code\n * @param {string} reason\n * @returns {string}\n */\n on_close(now, online, visible, rand, conn, code, reason) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(reason, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_on_close(retptr, this.__wbg_ptr, now, online, visible, rand, conn, code, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} _now\n * @param {boolean} _online\n * @param {boolean} _visible\n * @param {number} _rand\n * @param {number} _conn\n * @returns {string}\n */\n on_error(_now, _online, _visible, _rand, _conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livefeed_on_error(retptr, this.__wbg_ptr, _now, _online, _visible, _rand, _conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} _n\n * @param {boolean} _o\n * @param {boolean} _v\n * @param {number} _r\n * @param {number} _req\n * @param {boolean} _ok\n * @param {string} _a\n * @returns {string}\n */\n on_probe(_n, _o, _v, _r, _req, _ok, _a) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(_a, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_on_probe(retptr, this.__wbg_ptr, _n, _o, _v, _r, _req, _ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} _n\n * @param {boolean} _o\n * @param {boolean} _v\n * @param {number} _r\n * @param {number} _req\n * @param {boolean} _ok\n * @param {string} _e\n * @param {number} _f\n * @param {number} _t\n * @returns {string}\n */\n on_range(_n, _o, _v, _r, _req, _ok, _e, _f, _t) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(_e, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_on_range(retptr, this.__wbg_ptr, _n, _o, _v, _r, _req, _ok, ptr0, len0, _f, _t);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} token\n * @returns {string}\n */\n on_token(now, online, visible, rand, req, ok, token) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(token, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livefeed_on_token(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n}\n\nconst LiveSessionFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_livesession_free(ptr >>> 0, 1));\n/**\n * Uma sess\u00E3o ao vivo de um chat (o `ChatStream`). Toda entrada recebe o ambiente do instante e devolve\n * os efeitos (JSON array) que a borda executa em ordem.\n */\nexport class LiveSession {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n LiveSessionFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_livesession_free(ptr, 0);\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @param {string} text\n * @returns {string}\n */\n on_message(now, online, visible, rand, conn, text) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_on_message(retptr, this.__wbg_ptr, now, online, visible, rand, conn, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} snapshot_json\n * @returns {string}\n */\n on_snapshot(now, online, visible, rand, req, ok, snapshot_json) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(snapshot_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_on_snapshot(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * JSON da presen\u00E7a da box ou \"\".\n * @returns {string}\n */\n box_presence() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_box_presence(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Pr\u00F3ximo prazo (ms) ou -1.\n * @returns {number}\n */\n next_deadline() {\n const ret = wasm.livesession_next_deadline(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} token\n * @returns {string}\n */\n token_renewed(now, online, visible, rand, token) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(token, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_token_renewed(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_open_failed(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_on_open_failed(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * `config_json`: { chatId, connectorUrl, resumeCursor?, resumeInboxVersion?, includeRaw?, strict?,\n * pingEveryMs?, pongTimeoutMs?, switchGraceMs?, syncTimeoutMs?, gapTimeoutMs?,\n * longAwayMs?, backoff?{\u2026}, has:{probeAccess,eventsRange,snapshot} }\n * @param {string} config_json\n */\n constructor(config_json) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(config_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_new(retptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n LiveSessionFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * \"connector\" | \"box\" | \"\" (nenhum)\n * @returns {string}\n */\n via() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_via(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n tick(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_tick(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} why\n * @param {number} away_ms\n * @returns {string}\n */\n wake(now, online, visible, rand, why, away_ms) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(why, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_wake(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0, away_ms);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n close(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_close(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n start(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_start(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n cursor() {\n const ret = wasm.livesession_cursor(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n status() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_status(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} frame_json\n * @returns {string}\n */\n command(now, online, visible, rand, frame_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(frame_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_command(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr2 = r0;\n var len2 = r1;\n if (r3) {\n ptr2 = 0; len2 = 0;\n throw takeObject(r2);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_open(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_on_open(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @param {number} code\n * @param {string} reason\n * @returns {string}\n */\n on_close(now, online, visible, rand, conn, code, reason) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(reason, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_on_close(retptr, this.__wbg_ptr, now, online, visible, rand, conn, code, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_error(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livesession_on_error(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} access\n * @returns {string}\n */\n on_probe(now, online, visible, rand, req, ok, access) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(access, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_on_probe(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * `events_json` = array de envelopes.\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} events_json\n * @param {number} from\n * @param {number} to\n * @returns {string}\n */\n on_range(now, online, visible, rand, req, ok, events_json, from, to) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(events_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_on_range(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0, from, to);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * `ok=false` = o getToken falhou.\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} token\n * @returns {string}\n */\n on_token(now, online, visible, rand, req, ok, token) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(token, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livesession_on_token(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n}\n\nconst LiveWatchFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_livewatch_free(ptr >>> 0, 1));\n/**\n * O `watch()` inteiro (transporte + estado + hist\u00F3rico + otimista). Efeitos = os da sess\u00E3o + `history`\n * (pedir p\u00E1gina), `patch` (o que mudou no estado) e `tap` (eventos aplicados).\n */\nexport class LiveWatch {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n LiveWatchFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_livewatch_free(ptr, 0);\n }\n /**\n * @returns {string}\n */\n load_newer() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_load_newer(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n load_older() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_load_older(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * `page_json` = a p\u00E1gina no formato do log ({items: envelopes, hasBefore, hasAfter, anchorIndex?\u2026});\n * com `ok=false`, `page_json` \u00E9 a mensagem de erro.\n * @param {number} req\n * @param {boolean} ok\n * @param {string} page_json\n * @returns {string}\n */\n on_history(req, ok, page_json) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(page_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_on_history(retptr, this.__wbg_ptr, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @param {string} text\n * @returns {string}\n */\n on_message(now, online, visible, rand, conn, text) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_on_message(retptr, this.__wbg_ptr, now, online, visible, rand, conn, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @returns {string}\n */\n jump_to_end() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_jump_to_end(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} snapshot_json\n * @returns {string}\n */\n on_snapshot(now, online, visible, rand, req, ok, snapshot_json) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(snapshot_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_on_snapshot(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * Troca de agente (\u00A717.4) no mesmo canal ordenado dos comandos; `to_json` = `{agentId?, model?, effort?}` (o\n * realtime completa e valida; provider/agentName que vierem s\u00E3o ignorados). O `resolve`\n * sai com o ref `switch:<switch_id>`.\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} switch_id\n * @param {string} to_json\n * @returns {string}\n */\n switch_agent(now, online, visible, rand, switch_id, to_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(switch_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(to_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n wasm.livewatch_switch_agent(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0, ptr1, len1);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr3 = r0;\n var len3 = r1;\n if (r3) {\n ptr3 = 0; len3 = 0;\n throw takeObject(r2);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * S\u00F3 modelo/esfor\u00E7o do mesmo agente (`change_json` = `{model?, effort?}`). Ref `switch:<switch_id>`.\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} switch_id\n * @param {string} change_json\n * @returns {string}\n */\n switch_model(now, online, visible, rand, switch_id, change_json) {\n let deferred4_0;\n let deferred4_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(switch_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(change_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n wasm.livewatch_switch_model(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0, ptr1, len1);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr3 = r0;\n var len3 = r1;\n if (r3) {\n ptr3 = 0; len3 = 0;\n throw takeObject(r2);\n }\n deferred4_0 = ptr3;\n deferred4_1 = len3;\n return getStringFromWasm0(ptr3, len3);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred4_0, deferred4_1, 1);\n }\n }\n /**\n * Cancela a troca agendada (frame `cancelSwitch`). Ref `switch:<switch_id>`.\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} switch_id\n * @returns {string}\n */\n cancel_switch(now, online, visible, rand, switch_id) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(switch_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_cancel_switch(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n next_deadline() {\n const ret = wasm.livewatch_next_deadline(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} token\n * @returns {string}\n */\n token_renewed(now, online, visible, rand, token) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(token, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_token_renewed(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * O ref que o pr\u00F3ximo `queue_op` vai usar (a borda espera o `resolve` dele).\n * @returns {string}\n */\n next_queue_ref() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_next_queue_ref(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_open_failed(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_on_open_failed(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * A mesma configura\u00E7\u00E3o da `LiveSession` + `pageSize?`, `maxWindow?`, `has.history`.\n * @param {string} config_json\n */\n constructor(config_json) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(config_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_new(retptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n if (r2) {\n throw takeObject(r1);\n }\n this.__wbg_ptr = r0 >>> 0;\n LiveWatchFinalization.register(this, this.__wbg_ptr, this);\n return this;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {string}\n */\n via() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_via(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * `content_json` = ContentPart[] (a borda converte texto/anexos); `metadata_json` = `{chave: texto}` ou `\"\"` (sem).\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} message_id\n * @param {string} content_json\n * @param {string} mode\n * @param {string} metadata_json\n * @returns {string}\n */\n send(now, online, visible, rand, message_id, content_json, mode, metadata_json) {\n let deferred6_0;\n let deferred6_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(message_id, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passStringToWasm0(content_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passStringToWasm0(mode, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len2 = WASM_VECTOR_LEN;\n const ptr3 = passStringToWasm0(metadata_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len3 = WASM_VECTOR_LEN;\n wasm.livewatch_send(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr5 = r0;\n var len5 = r1;\n if (r3) {\n ptr5 = 0; len5 = 0;\n throw takeObject(r2);\n }\n deferred6_0 = ptr5;\n deferred6_1 = len5;\n return getStringFromWasm0(ptr5, len5);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred6_0, deferred6_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n tick(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_tick(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} why\n * @param {number} away_ms\n * @returns {string}\n */\n wake(now, online, visible, rand, why, away_ms) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(why, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_wake(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0, away_ms);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n close(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_close(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @returns {string}\n */\n start(now, online, visible, rand) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_start(retptr, this.__wbg_ptr, now, online, visible, rand);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @returns {number}\n */\n cursor() {\n const ret = wasm.livewatch_cursor(this.__wbg_ptr);\n return ret;\n }\n /**\n * @returns {string}\n */\n status() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_status(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * Comando cru com `ref` (stop/respond/resend/reset).\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} frame_json\n * @returns {string}\n */\n command(now, online, visible, rand, frame_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(frame_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_command(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr2 = r0;\n var len2 = r1;\n if (r3) {\n ptr2 = 0; len2 = 0;\n throw takeObject(r2);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * `anchor_json` = {\"messageId\": \"msg_\u2026\"} | {\"eventId\": N}\n * @param {string} anchor_json\n * @returns {string}\n */\n jump_to(anchor_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(anchor_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_jump_to(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr2 = r0;\n var len2 = r1;\n if (r3) {\n ptr2 = 0; len2 = 0;\n throw takeObject(r2);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred3_0, deferred3_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_open(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_on_open(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @param {number} code\n * @param {string} reason\n * @returns {string}\n */\n on_close(now, online, visible, rand, conn, code, reason) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(reason, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_on_close(retptr, this.__wbg_ptr, now, online, visible, rand, conn, code, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} conn\n * @returns {string}\n */\n on_error(now, online, visible, rand, conn) {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.livewatch_on_error(retptr, this.__wbg_ptr, now, online, visible, rand, conn);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} access\n * @returns {string}\n */\n on_probe(now, online, visible, rand, req, ok, access) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(access, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_on_probe(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} events_json\n * @param {number} from\n * @param {number} to\n * @returns {string}\n */\n on_range(now, online, visible, rand, req, ok, events_json, from, to) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(events_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_on_range(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0, from, to);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {number} req\n * @param {boolean} ok\n * @param {string} token\n * @returns {string}\n */\n on_token(now, online, visible, rand, req, ok, token) {\n let deferred2_0;\n let deferred2_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(token, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_on_token(retptr, this.__wbg_ptr, now, online, visible, rand, req, ok, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred2_0 = r0;\n deferred2_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred2_0, deferred2_1, 1);\n }\n }\n /**\n * @param {number} now\n * @param {boolean} online\n * @param {boolean} visible\n * @param {number} rand\n * @param {string} op_json\n * @returns {string}\n */\n queue_op(now, online, visible, rand, op_json) {\n let deferred3_0;\n let deferred3_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(op_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.livewatch_queue_op(retptr, this.__wbg_ptr, now, online, visible, rand, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr2 = r0;\n var len2 = r1;\n if (r3) {\n ptr2 = 0; len2 = 0;\n throw takeObject(r2);\n }\n deferred3_0 = ptr2;\n deferred3_1 = len2;\n return getStringFromWasm0(ptr2, len2);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred3_0, deferred3_1, 1);\n }\n }\n}\n\nconst ReducerFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_reducer_free(ptr >>> 0, 1));\n/**\n * O reducer do contrato, em Rust (o mesmo que os nativos usam).\n */\nexport class Reducer {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n ReducerFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_reducer_free(ptr, 0);\n }\n /**\n * Parte de um estado (o snapshot) em vez do vazio.\n * @param {string} state_json\n */\n load_state(state_json) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(state_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.reducer_load_state(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @returns {string}\n */\n state_json() {\n let deferred1_0;\n let deferred1_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.reducer_state_json(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_export_2(deferred1_0, deferred1_1, 1);\n }\n }\n constructor() {\n const ret = wasm.reducer_new();\n this.__wbg_ptr = ret >>> 0;\n ReducerFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {string} event_json\n */\n apply(event_json) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(event_json, wasm.__wbindgen_export_0, wasm.__wbindgen_export_1);\n const len0 = WASM_VECTOR_LEN;\n wasm.reducer_apply(retptr, this.__wbg_ptr, ptr0, len0);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n", "// O n\u00FAcleo \u00FAnico (Rust, sdk/core-rs) compilado pra wasm. Tudo o que decide (sequ\u00EAncia, transporte, reducer)\n// mora l\u00E1; este pacote \u00E9 a borda: sockets, rel\u00F3gio, getToken (DESIGN \u00A714, princ\u00EDpio 1).\n// Os BYTES (o grosso do peso) ficam num m\u00F3dulo \u00E0 parte, importado sob demanda: o bundler os p\u00F5e num peda\u00E7o\n// separado, que s\u00F3 baixa quando a camada ao vivo nasce \u2014 e baixa em paralelo, sem segurar a tela nem o REST.\n// A cola JS (`live.js`) \u00E9 pequena e fica junto. Sem fetch nem plugin de bundler: os bytes s\u00E3o base64.\nimport * as live from './wasm/live.js'\n\nlet ready = false\nlet loading: Promise<typeof live> | null = null\n\nfunction decode(b64: string): Uint8Array {\n if (typeof atob === 'function') {\n const bin = atob(b64)\n const out = new Uint8Array(bin.length)\n for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i)\n return out\n }\n return Uint8Array.from(Buffer.from(b64, 'base64'))\n}\n\n/** Carrega o n\u00FAcleo (uma vez). A camada ao vivo chama sozinha; chamar antes s\u00F3 adianta o download. */\nexport function loadCore(): Promise<typeof live> {\n if (ready) return Promise.resolve(live)\n loading ??= import('./wasm/bytes').then(({ WASM_BASE64 }) => {\n if (!ready) {\n live.initSync({ module: decode(WASM_BASE64) })\n ready = true\n }\n return live\n })\n return loading\n}\n\n/** O n\u00FAcleo, se j\u00E1 carregou (sen\u00E3o `null`: quem usa enfileira at\u00E9 `loadCore()` resolver). */\nexport function coreIfReady(): typeof live | null {\n return ready ? live : null\n}\n\n/** O n\u00FAcleo j\u00E1 carregado; antes disso \u00E9 erro (use `loadCore()`). */\nexport function core(): typeof live {\n if (!ready) throw new Error('SmoothAgent: o n\u00FAcleo ainda est\u00E1 carregando \u2014 aguarde `loadCore()`')\n return live\n}\n", "// A BORDA comum do n\u00FAcleo Rust (DESIGN \u00A714): executa os efeitos de IO que o n\u00FAcleo pede \u2014 sockets, um timer\n// no pr\u00F3ximo prazo, getToken/probe/range/snapshot \u2014 e devolve o resultado como entrada. O que n\u00E3o \u00E9\n// IO (estado, debug, resolve\u2026) vai pro `handle` de quem usa (ChatStream, LiveChat). Nenhuma decis\u00E3o aqui.\nimport { SmoothAgentAuthError } from './auth'\nimport type { LiveDeps, SocketLike } from './deps'\nimport { coreIfReady, loadCore } from './native'\n\nexport type Env = [now: number, online: boolean, visible: boolean, rand: number]\n\n/** As entradas que todo n\u00FAcleo (LiveSession, LiveWatch) aceita; cada uma devolve os efeitos em JSON. */\nexport interface CoreLike {\n tick(...e: Env): string\n on_open(...a: [...Env, number]): string\n on_message(...a: [...Env, number, string]): string\n on_error(...a: [...Env, number]): string\n on_close(...a: [...Env, number, number, string]): string\n on_open_failed(...a: [...Env, number]): string\n on_token(...a: [...Env, number, boolean, string]): string\n on_probe(...a: [...Env, number, boolean, string]): string\n on_range(...a: [...Env, number, boolean, string, number, number]): string\n on_snapshot(...a: [...Env, number, boolean, string]): string\n next_deadline(): number\n}\n\nexport type IoFx =\n | { k: 'token' | 'probe' | 'snapshot'; req: number }\n | { k: 'invalidateToken' }\n | { k: 'range'; req: number; from: number; to: number }\n | { k: 'open'; conn: number; via: string; url: string; protocols: string[] }\n | { k: 'send'; conn: number; text: string }\n | { k: 'close'; conn: number; code: number; reason: string }\n\n/** Um efeito que n\u00E3o \u00E9 IO (cada casca trata os seus). */\nexport type OtherFx = { k: string; [x: string]: unknown }\n\nexport class Edge<C extends CoreLike> {\n private readonly sockets = new Map<number, SocketLike>()\n private timer: unknown = null\n private stopped = false\n /** O n\u00FAcleo desta casca; `null` at\u00E9 o wasm carregar (as entradas esperam em `pending`, em ordem). */\n core: C | null = null\n private pending: Array<(c: C) => void> = []\n\n constructor(\n make: () => C,\n private readonly d: LiveDeps,\n private readonly chatId: string,\n private readonly random: () => number,\n private readonly handle: (f: OtherFx) => void,\n ) {\n if (coreIfReady()) this.core = make()\n else\n void loadCore().then(() => {\n if (this.stopped && !this.pending.length) return\n const c = (this.core = make())\n const queued = this.pending\n this.pending = []\n for (const p of queued) p(c)\n })\n }\n\n /** Roda `fn` com o n\u00FAcleo: na hora se j\u00E1 carregou, sen\u00E3o na ordem em que foi pedido, quando carregar. */\n when(fn: (c: C) => void): void {\n if (this.core) fn(this.core)\n else this.pending.push(fn)\n }\n\n env(): Env {\n return [this.d.clock.now(), this.d.env.online(), this.d.env.visible(), this.random()]\n }\n\n /** Uma entrada pro n\u00FAcleo; executa os efeitos devolvidos, em ordem; re-arma o timer. */\n run(input: (c: C, e: Env) => string): void {\n if (this.stopped) return\n this.when((c) => this.exec(JSON.parse(input(c, this.env())) as Array<IoFx | OtherFx>))\n }\n\n /** Executa uma lista de efeitos j\u00E1 devolvida (quando quem chamou precisou do JSON antes). */\n exec(fx: Array<IoFx | OtherFx>): void {\n for (const f of fx) this.one(f)\n this.arm()\n }\n\n /** Para tudo (depois do close do n\u00FAcleo): sem timer, sem novas entradas. */\n stop(): void {\n this.stopped = true\n this.disarm()\n // fechou antes do n\u00FAcleo carregar: nada abriu ainda (as entradas esperavam); some sem nascer\n if (!this.core) this.pending = []\n }\n\n private arm(): void {\n this.disarm()\n if (this.stopped || !this.core) return\n const at = this.core.next_deadline()\n if (at < 0) return\n this.timer = this.d.clock.setTimeout(() => {\n this.timer = null\n this.run((c, e) => c.tick(...e))\n }, Math.max(0, at - this.d.clock.now()))\n }\n\n private disarm(): void {\n if (this.timer !== null) {\n this.d.clock.clearTimeout(this.timer)\n this.timer = null\n }\n }\n\n private one(f: IoFx | OtherFx): void {\n const d = this.d\n const chatId = this.chatId\n switch (f.k) {\n case 'token': {\n const req = (f as { req: number }).req\n d.token().then(\n (t) => this.run((c, e) => c.on_token(...e, req, true, t)),\n // o motivo decide: `revoked`/`missing`/`invalid` param de vez; o resto (rede, 500) entra no backoff\n (err: unknown) => this.run((c, e) => c.on_token(...e, req, false, err instanceof SmoothAgentAuthError ? err.reason : 'error')),\n )\n return\n }\n case 'invalidateToken':\n d.invalidateToken?.()\n return\n case 'probe': {\n const req = (f as { req: number }).req\n d.probeAccess!(chatId).then(\n (a) => this.run((c, e) => c.on_probe(...e, req, true, a)),\n () => this.run((c, e) => c.on_probe(...e, req, false, '')),\n )\n return\n }\n case 'range': {\n const { req, from, to } = f as { req: number; from: number; to: number }\n d.eventsRange!(chatId, from, to).then(\n (r) => this.run((c, e) => c.on_range(...e, req, true, JSON.stringify(r.events), r.range.from, r.range.to)),\n () => this.run((c, e) => c.on_range(...e, req, false, '[]', 0, 0)),\n )\n return\n }\n case 'snapshot': {\n const req = (f as { req: number }).req\n d.snapshot!(chatId).then(\n (s) => this.run((c, e) => c.on_snapshot(...e, req, true, JSON.stringify(s))),\n () => this.run((c, e) => c.on_snapshot(...e, req, false, '')),\n )\n return\n }\n case 'open': {\n const { conn, url, protocols } = f as { conn: number; url: string; protocols: string[] }\n return this.open(conn, url, protocols)\n }\n case 'send': {\n const { conn, text } = f as { conn: number; text: string }\n const sock = this.sockets.get(conn)\n if (sock && sock.readyState === 1) sock.send(text)\n return\n }\n case 'close': {\n const { conn, code, reason } = f as { conn: number; code: number; reason: string }\n const sock = this.sockets.get(conn)\n this.sockets.delete(conn)\n if (!sock) return\n sock.onopen = sock.onmessage = sock.onclose = sock.onerror = null\n try {\n sock.close(code, reason)\n } catch {\n /* j\u00E1 fechado */\n }\n return\n }\n default:\n this.handle(f as OtherFx)\n }\n }\n\n private open(conn: number, url: string, protocols: string[]): void {\n let sock: SocketLike\n try {\n sock = this.d.openSocket(url, protocols)\n } catch {\n this.run((c, e) => c.on_open_failed(...e, conn))\n return\n }\n this.sockets.set(conn, sock)\n sock.onopen = () => this.run((c, e) => c.on_open(...e, conn))\n sock.onmessage = (ev) => this.run((c, e) => c.on_message(...e, conn, String(ev.data)))\n sock.onerror = () => this.run((c, e) => c.on_error(...e, conn))\n sock.onclose = (ev) => {\n this.sockets.delete(conn)\n this.run((c, e) => c.on_close(...e, conn, ev.code, ev.reason ?? ''))\n }\n }\n}\n", "// GERADO por sdk/core-rs/build-wasm.mjs de sdk/core-rs/fixtures/empty-state.json \u2014 n\u00E3o editar.\nexport const EMPTY_STATE_JSON = \"{\\\"seq\\\":0,\\\"chat\\\":{\\\"state\\\":\\\"idle\\\"},\\\"items\\\":{},\\\"order\\\":[],\\\"history\\\":[],\\\"tasks\\\":{},\\\"pending\\\":{},\\\"limits\\\":{},\\\"usage\\\":{\\\"chat\\\":{}},\\\"runs\\\":[],\\\"switches\\\":[]}\"\n", "// A pol\u00EDtica do backoff do transporte (T3: um dono s\u00F3 do retry, jitter, teto, zera s\u00F3 depois que a conex\u00E3o\n// FICA de p\u00E9; proposta sdk \u00A74.7). O backoff em si mora no n\u00FAcleo Rust (sdk/core-rs, util.rs).\nexport interface BackoffPolicy {\n baseMs: number\n factor: number\n capVisibleMs: number\n capHiddenMs: number\n /** S\u00F3 zera o contador depois de ficar de p\u00E9 este tempo. */\n stableMs: number\n}\n\nexport const DEFAULT_BACKOFF: BackoffPolicy = {\n baseMs: 250,\n factor: 2,\n capVisibleMs: 30_000,\n capHiddenMs: 300_000,\n stableMs: 10_000,\n}\n", "// UMA assinatura l\u00F3gica de um chat, com o transporte trocando sozinho por baixo (DESIGN \u00A75.1.8, \u00A79.1).\n//\n// CASCA FINA: quem decide \u00E9 o n\u00FAcleo \u00FAnico em Rust (sdk/core-rs, `Session`, compilado pra wasm \u2014 DESIGN \u00A714,\n// princ\u00EDpio 1). Esta classe s\u00F3 \u00E9 a borda: abre/fecha os sockets que o n\u00FAcleo pede, entrega os frames, chama\n// getToken/probe/range/snapshot, mant\u00E9m UM timer no pr\u00F3ximo prazo do n\u00FAcleo e repassa o resto pros\n// listeners. A API p\u00FAblica \u00E9 a mesma de antes (o Studio e o `watch()` dependem dela).\nimport type { ErrorCode as ContractErrorCode } from '../../../../contract/events/ts/src/gen/events'\nimport { ERROR_CODE_HTTP, KNOWN_ERROR_CODES } from '../../../../contract/events/ts/src/gen/known'\nimport { DEFAULT_BACKOFF, type BackoffPolicy } from './backoff'\nimport type { LiveDeps } from './deps'\nimport { uuidv7 } from './ids'\nimport { Edge, type OtherFx } from './edge'\nimport { core } from './native'\nimport type { BoxPresence, ChatSnapshot, ClientFrame, Envelope, InboxState, QueueState, ServerFrame, SubmitResult } from './types'\nimport type { LiveSession } from './wasm/live.js'\n\n/** auth_failed = token inv\u00E1lido/revogado (4401) \u00B7 forbidden = sem grant no chat/agente (4403). Nenhum dos dois religa sozinho. */\nexport type LiveStatus = 'connecting' | 'synchronizing' | 'live' | 'reconnecting' | 'offline' | 'auth_failed' | 'forbidden' | 'closed'\n\nexport { PING, PONG } from './deps'\n/** Por onde a tela fala: sempre o conector do realtime (DESIGN \u00A717.4 \u2014 ele repassa pra box quente). */\nexport type Via = 'connector'\n\nexport type DebugEvent =\n /** `timeout` com `reason:'sync'` = a conex\u00E3o n\u00E3o sincronizou no prazo (B-39): derrubada e assinada de novo */\n | { kind: 'transport'; via: Via; what: 'connecting' | 'open' | 'close' | 'dead' | 'fail' | 'error' | 'timeout'; code?: number; reason?: string }\n | { kind: 'switch'; from: Via | null; to: Via }\n | { kind: 'dup_dropped' | 'gap_detected' | 'gap_closed' | 'compacted_skip'; from: number; to: number }\n | { kind: 'resync'; reason: string }\n | { kind: 'cursor'; seq: number }\n | { kind: 'resend'; ref: string; attempt?: number }\n /** O servidor falhou de passagem (`retryable`): o mesmo comando sai de novo em `inMs`. */\n | { kind: 'retry'; ref: string; code: string | null; attempt: number; inMs: number }\n\n/**\n * Modo estrito (pro `tests`): em vez de esconder o problema (resync), reporta.\n * - gap_timeout: buraco que n\u00E3o fechou no prazo (o estado fica parado no buraco);\n * - out_of_order: a camada ia aplicar um seq que n\u00E3o \u00E9 o seguinte (n\u00E3o deveria acontecer nunca);\n * - snapshot_regressed: snapshot com seq menor que o j\u00E1 aplicado;\n * - bad_time_unit: epoch de frame que veio em segundos/\u00B5s (o contrato \u00E9 ms) \u2014 converte, mas reporta;\n * - bad_ack: `ack` com status fora do SubmitResult (o app recebe `rejected`).\n * Duplicado pelos dois transportes \u00E9 normal (s\u00F3 `dup_dropped` no debug).\n */\nexport interface Violation {\n kind: 'gap_timeout' | 'out_of_order' | 'snapshot_regressed' | 'bad_time_unit' | 'bad_ack'\n from: number\n to: number\n cursor: number\n at: number\n}\n\nexport interface StreamListener {\n snapshot?(s: ChatSnapshot): void\n events?(evs: Envelope[]): void\n /** @deprecated \u00A717: use `queue`. */\n inbox?(inbox: InboxState): void\n /** A fila (\u00A717, `QueueState`), j\u00E1 pela maior vers\u00E3o. */\n queue?(queue: QueueState): void\n box?(box: BoxPresence, via: Via): void\n status?(status: LiveStatus): void\n /** Frames que esta camada n\u00E3o trata (ex. `test.*`, extens\u00F5es futuras). */\n other?(frame: ServerFrame): void\n debug?(e: DebugEvent): void\n /** S\u00F3 no modo estrito: o que a camada teria escondido (resync) vira viola\u00E7\u00E3o vis\u00EDvel. */\n violation?(v: Violation): void\n}\n\nexport interface StreamOptions {\n chatId: string\n /** Retomar de um cache: estado j\u00E1 aplicado at\u00E9 aqui (pula o snapshot). */\n resumeFrom?: { cursor: number; inboxVersion: number }\n includeRaw?: boolean\n backoff?: BackoffPolicy\n random?: () => number\n pingEveryMs?: number\n pongTimeoutMs?: number\n /** Troca dentro deste prazo n\u00E3o muda o status (o usu\u00E1rio n\u00E3o percebe). */\n switchGraceMs?: number\n /** Conector que abre e n\u00E3o manda snapshot/replay neste prazo \u00E9 tratado como morto (T3: 15 s). */\n syncTimeoutMs?: number\n gapTimeoutMs?: number\n /** Voltar de background mais longo que isto troca o socket na hora em vez de sondar (T3). */\n longAwayMs?: number\n /** Comando sem `ack` neste prazo (socket de p\u00E9, frame sumido) = reenvia o MESMO frame (padr\u00E3o 10 s). */\n ackTimeoutMs?: number\n /** B-45: com a aba vis\u00EDvel, confere a fila (o snapshot do REST, s\u00F3 a fila) a cada tanto (padr\u00E3o 5 min; 0 = nunca). */\n queueCheckEveryMs?: number\n /** Foco/aba vis\u00EDvel de novo tamb\u00E9m conferem a fila, no m\u00E1ximo uma vez neste intervalo (padr\u00E3o 30 s). */\n queueCheckMinMs?: number\n /** Modo estrito (testes): buraco vira viola\u00E7\u00E3o em vez de resync. Ver `Violation`. */\n strict?: boolean\n}\n\n/** Epoch dos frames em ms (a regra mora no n\u00FAcleo; ver `Violation.bad_time_unit`). */\nexport function toMs(epoch: number, now: number = Date.now()): number {\n return core().to_ms(epoch, now)\n}\n\n/** C\u00F3digos fechados de erro (DESIGN \u00A76) \u2014 a lista \u00E9 a do contrato (@smoothagent/events/known). */\nexport const ERROR_CODES = KNOWN_ERROR_CODES\nexport type ErrorCode = ContractErrorCode\nexport { ERROR_CODE_HTTP }\nexport const errorCode = (c: unknown): ErrorCode => (typeof c === 'string' ? (core().error_code(c) as ErrorCode) : 'internal')\n\n/**\n * `ref` de comando \u00DANICO entre interfaces (o realtime guarda o recibo por `ref` no chat: repetido, a 2\u00AA tela\n * receberia o recibo da 1\u00AA e o comando dela sumiria calado \u2014 ORD-05). UUIDv7 = tempo + 74 bits aleat\u00F3rios.\n */\nexport const newRef = (): string => `r_${uuidv7()}`\n\nexport class ChatStream {\n private readonly edge: Edge<LiveSession>\n private readonly waiting = new Map<string, { resolve(r: SubmitResult): void; reject(e: Error): void }>()\n private closed = false\n private readonly unWake: () => void\n\n constructor(\n private readonly d: LiveDeps,\n private readonly opts: StreamOptions,\n private readonly l: StreamListener,\n ) {\n const cfg = JSON.stringify(sessionConfig(d, opts))\n this.edge = new Edge(() => new (core().LiveSession)(cfg), d, opts.chatId, opts.random ?? Math.random, (f) => this.handle(f))\n this.unWake = d.env.onWake((why, awayMs) => this.edge.run((c, e) => c.wake(...e, why, awayMs ?? 0)))\n this.edge.run((c, e) => c.start(...e))\n }\n\n // ------------------------------------------------------------------ API (a mesma de antes)\n\n get status(): LiveStatus {\n return (this.edge.core?.status() ?? (this.closed ? 'closed' : 'connecting')) as LiveStatus\n }\n get cursor(): number {\n return this.edge.core?.cursor() ?? this.opts.resumeFrom?.cursor ?? 0\n }\n get via(): Via | null {\n return (this.edge.core?.via() || null) as Via | null\n }\n get box(): BoxPresence | null {\n const b = this.edge.core?.box_presence()\n return b ? (JSON.parse(b) as BoxPresence) : null\n }\n\n /**\n * Manda um comando (send/queue/stop/respond/resend/reset). Resolve com o `ack` \u2014 que s\u00F3 vem depois de\n * gravado no log. Cai o socket antes do ack: o n\u00FAcleo reenvia o MESMO frame no pr\u00F3ximo transporte; o\n * servidor devolve `duplicate`. Nunca rejeita por transporte; s\u00F3 por close()/revoga\u00E7\u00E3o.\n */\n command(frame: ClientFrame & { ref: string }): Promise<SubmitResult> {\n if (this.closed) return Promise.reject(new Error('stream closed'))\n return new Promise((resolve, reject) => {\n this.waiting.set(frame.ref, { resolve, reject })\n this.edge.run((c, e) => c.command(...e, JSON.stringify(frame)))\n })\n }\n\n /** Token do usu\u00E1rio renovado: vai pelo socket do conector sem derrubar. */\n tokenRenewed(token: string): void {\n this.edge.run((c, e) => c.token_renewed(...e, token))\n }\n\n retry(): void {\n this.edge.run((c, e) => c.wake(...e, 'manual', 0))\n }\n\n close(): void {\n if (this.closed) return\n this.edge.run((c, e) => c.close(...e))\n this.closed = true\n this.unWake()\n this.edge.stop()\n }\n\n private handle(f: OtherFx): void {\n const v = f.v as never\n switch (f.k) {\n case 'onSnapshot':\n return this.l.snapshot?.(v)\n case 'onEvents':\n return this.l.events?.(v)\n case 'onInbox':\n return this.l.inbox?.(v)\n case 'onQueue':\n return this.l.queue?.(v)\n case 'onBox':\n return this.l.box?.(v, f.via as Via)\n case 'onStatus':\n return this.l.status?.(v)\n case 'onDebug':\n return this.l.debug?.(v)\n case 'onViolation':\n return this.l.violation?.(v)\n case 'onOther':\n return this.l.other?.(v)\n case 'resolve': {\n const w = this.waiting.get(f.ref as string)\n this.waiting.delete(f.ref as string)\n return w?.resolve(v)\n }\n case 'reject': {\n const w = this.waiting.get(f.ref as string)\n this.waiting.delete(f.ref as string)\n return w?.reject(new Error(String(f.v)))\n }\n }\n }\n}\n\n/** A configura\u00E7\u00E3o do n\u00FAcleo a partir das op\u00E7\u00F5es do TS (a mesma pro ChatStream e pro LiveChat). */\nexport function sessionConfig(d: LiveDeps, opts: StreamOptions): Record<string, unknown> {\n const b = opts.backoff ?? DEFAULT_BACKOFF\n return {\n chatId: opts.chatId,\n connectorUrl: d.connectorUrl(opts.chatId),\n ...(opts.resumeFrom ? { resumeCursor: opts.resumeFrom.cursor, resumeInboxVersion: opts.resumeFrom.inboxVersion } : {}),\n includeRaw: opts.includeRaw ?? false,\n strict: opts.strict ?? false,\n pingEveryMs: opts.pingEveryMs,\n pongTimeoutMs: opts.pongTimeoutMs,\n switchGraceMs: opts.switchGraceMs,\n syncTimeoutMs: opts.syncTimeoutMs,\n gapTimeoutMs: opts.gapTimeoutMs,\n longAwayMs: opts.longAwayMs,\n ackTimeoutMs: opts.ackTimeoutMs,\n queueCheckEveryMs: opts.queueCheckEveryMs,\n queueCheckMinMs: opts.queueCheckMinMs,\n backoff: { baseMs: b.baseMs, factor: b.factor, capVisibleMs: b.capVisibleMs, capHiddenMs: b.capHiddenMs, stableMs: b.stableMs },\n has: { probeAccess: !!d.probeAccess, eventsRange: !!d.eventsRange, snapshot: !!d.snapshot },\n }\n}\n", "import type {\n BoxPresence,\n CFSend,\n ChatState,\n ClientFrame,\n ContentPart as ContractContentPart,\n ErrorCode,\n Event,\n InboxState,\n Origin,\n Provider,\n RawFrame,\n SnapshotPayload,\n SubmitAccepted,\n SubmitConflict,\n SubmitDuplicate,\n Timestamp,\n} from '../../../../contract/events/ts/src/gen/events'\n\n// Os tipos do fio e dos canais v\u00EAm GERADOS do contrato (contract/events, auditoria H23): nada copiado \u00E0 m\u00E3o.\n// Aqui ficam s\u00F3 os nomes que a API da SDK j\u00E1 expunha e o `Envelope` solto (abaixo).\nexport type {\n AgentSelection,\n QueueItem,\n QueueState,\n PendingSwitch,\n BoxPresence,\n ChatState,\n ClientFrame,\n ErrorCode,\n Event,\n InboxEntry,\n InboxState,\n Origin,\n QueueOp,\n RawFrame,\n ScheduledSwitch,\n ServerFrame,\n FeedFrame,\n} from '../../../../contract/events/ts/src/gen/events'\n\n/**\n * Um evento da timeline com `type`/`data` soltos (o app l\u00EA campos sem estreitar a uni\u00E3o). \u00C9 o envelope do\n * contrato (`Event`) sem a amarra\u00E7\u00E3o por tipo; pra estreitar por `type`, use `Event`.\n */\nexport interface Envelope {\n /** = String(seq) */\n id: string\n seq: number\n /** fencing: a concess\u00E3o que numerou */\n epoch?: number\n chatId: string\n ts: string\n type: string\n runId?: string\n itemId?: string\n parentItemId?: string\n origin?: Origin\n /** s\u00F3 com `includeRaw` */\n raw?: RawFrame[]\n data?: Record<string, unknown>\n}\n\nexport type SendMode = CFSend['mode']\n\n/**\n * \"Conecte sua conta\": o usu\u00E1rio roda com a PR\u00D3PRIA credencial do provedor e ela falta ou venceu. Derivado no\n * n\u00FAcleo (o snapshot/F5 reproduz): fila parada por `auth`, \u00FAltimo run falhado por `provider_not_connected`/\n * `provider_auth_expired`, ou send/resend recusado com esses c\u00F3digos. Some no `run.started` seguinte.\n */\nexport interface NeedsProvider {\n provider: Provider\n reason: 'not_connected' | 'auth_expired'\n /** desde quando a fila est\u00E1 parada (o `held.since`) */\n since?: Timestamp\n}\n\n/** Peda\u00E7o do conte\u00FAdo de uma mensagem \u2014 o tipo GERADO do contrato. No fio do WS o conte\u00FAdo \u00E9 SEMPRE lista. */\nexport type ContentPart = ContractContentPart\n\n/**\n * Texto solto vira `[{type:'text', text}]` (o realtime recusa string no `send` e no `edit`); anexos\n * (`fileId` do upload) entram como partes `file` \u2014 o frame n\u00E3o tem campo `attachments`.\n */\nexport function toContentParts(content: string | ContentPart[], attachments: string[] = []): ContentPart[] {\n const parts: ContentPart[] = typeof content === 'string' ? [{ type: 'text', text: content }] : [...content]\n for (const fileId of attachments) parts.push({ type: 'file', fileId })\n return parts\n}\n\n/**\n * A resposta de um comando, s\u00F3 depois de gravado no log. O `rejected` da SDK traz sempre um c\u00F3digo do \u00A76\n * (`ErrorCode`): c\u00F3digo fora da lista vira `internal` (e `bad_ack` no modo estrito).\n */\nexport type SubmitResult = SubmitAccepted | SubmitDuplicate | SubmitConflict | { status: 'rejected'; code: ErrorCode; message: string }\n\n/** O snapshot que o servidor manda (o estado j\u00E1 reduzido no `seq`, a inbox, a presen\u00E7a e os recentes). */\nexport type ChatSnapshot = SnapshotPayload\n\n/** @deprecated o nome antigo; \u00E9 o `InboxState` do contrato. */\nexport type { InboxState as Inbox } from '../../../../contract/events/ts/src/gen/events'\n", "// `watch()` \u2014 o estado pronto da tela (DESIGN \u00A72.1, \u00A713; proposta sdk \u00A74.1\u2013\u00A74.9).\n//\n// CASCA FINA: o n\u00FAcleo \u00FAnico em Rust (sdk/core-rs, `Watch`) \u00E9 dono do transporte, do reducer do contrato, da\n// inbox, da presen\u00E7a, do otimista e da janela do hist\u00F3rico; ele devolve PATCHES do que mudou. Aqui s\u00F3 se\n// mant\u00E9m o espelho JS (itens que n\u00E3o mudaram mant\u00EAm a identidade \u2014 bom pro React), se executa o IO (Edge)\n// e se avisa quem assina. A API p\u00FAblica \u00E9 a mesma de antes.\nimport type { LiveDeps } from './deps'\nimport { Edge, type OtherFx } from './edge'\nimport { newMessageId, uuidv7 } from './ids'\nimport { core } from './native'\nimport { EMPTY_STATE_JSON } from './wasm/empty'\nimport { newRef, sessionConfig, type DebugEvent, type LiveStatus, type StreamOptions, type Via, type Violation } from './stream'\nimport { toContentParts, type QueueState, type BoxPresence, type ContentPart, type Envelope, type InboxState, type NeedsProvider, type QueueOp, type SendMode, type SubmitResult } from './types'\nimport type { LiveWatch } from './wasm/live.js'\n\nexport { newMessageId, uuidv7 }\n\n/** A troca, na forma do REST (`SwitchAgent`). */\nexport interface SwitchTo {\n agentId: string\n /**\n * Ausente = no MESMO agente fica o de agora; em OUTRO agente, o padr\u00E3o dele. `null` = (no mesmo agente) voltar ao\n * padr\u00E3o do agente. Tem que estar em `selection.options`.\n */\n model?: string | null\n effort?: string | null\n /** @deprecated ignorado: o servidor resolve o provedor pelo agente */\n provider?: string\n /** @deprecated ignorado: o servidor resolve o nome pelo agente */\n agentName?: string\n}\n\n/**\n * O reducer do contrato (contract/events). Com o n\u00FAcleo em Rust, o reducer que roda \u00E9 SEMPRE o do contrato\n * (o mesmo nos nativos); este tipo fica pra compatibilidade de quem j\u00E1 passava `contractReducer`.\n */\nexport interface Reducer<S, I = unknown> {\n empty(): S\n /** Pode mutar e devolver o mesmo objeto; a camada publica um estado novo por lote. */\n apply(state: S, ev: Envelope): S\n /** Itens FECHADOS, em ordem (o hist\u00F3rico ao vivo). */\n history(state: S): I[]\n /** Item de hist\u00F3rico a partir de uma entrada de p\u00E1gina do REST. */\n itemOf(entry: Envelope): I\n idOf(item: I): string\n}\n\nexport interface HistoryPage {\n items: Envelope[]\n firstEventId: number | null\n lastEventId: number | null\n hasBefore: boolean\n hasAfter: boolean\n anchorIndex?: number\n headEventId: number\n liveFromEventId?: number\n}\n\nexport type HistoryQuery = { limit?: number } & (\n | { before: number }\n | { after: number }\n | { around: { messageId: string } | { eventId: number } }\n | { anchor: 'end' }\n)\n\nexport interface WatchDeps extends LiveDeps {\n history?(chatId: string, q: HistoryQuery): Promise<HistoryPage>\n /**\n * REST `POST /v3/chats/{id}/messages` com `clientMessageId` = o messageId do `send` (a MESMA fila fria dur\u00E1vel do\n * ChatLog, que deduplica pelo id). O caminho dur\u00E1vel do `send` quando o socket n\u00E3o confirma a tempo e no `close()`.\n * Falha passageira: rejeita (o socket segue tentando); recusa do servidor: resolve `rejected`.\n */\n postMessage?(chatId: string, m: { clientMessageId: string; content: ContentPart[]; mode: SendMode; metadata?: Record<string, string> }): Promise<SubmitResult>\n}\n\n/**\n * Um `send` que n\u00E3o chegou a ser confirmado gravado: o `close()` sem caminho dur\u00E1vel (`reason: 'closed'`), o\n * `timeoutMs` vencido (`'timeout'`), ou socket e REST falharam (`'failed'`). Traz a mensagem pro app reenviar \u2014\n * reenviar com o MESMO `messageId` \u00E9 seguro (o servidor deduplica: nunca 2x).\n */\nexport class SendNotConfirmedError extends Error {\n override readonly name = 'SendNotConfirmedError'\n constructor(\n readonly reason: 'closed' | 'timeout' | 'failed',\n readonly messageId: string,\n readonly content: ContentPart[],\n readonly mode: SendMode,\n override readonly cause?: unknown,\n ) {\n super(reason === 'closed' ? 'stream closed' : reason === 'timeout' ? 'send: sem confirma\u00E7\u00E3o no prazo' : 'send: n\u00E3o confirmado')\n }\n}\n\n/** Um comando (stop/respond/reset/fila/troca) que esperava o ack quando o `close()` chegou. */\nexport class CommandAbortedError extends Error {\n override readonly name = 'CommandAbortedError'\n constructor(readonly ref: string) {\n super('stream closed')\n }\n}\n\n/** Espera padr\u00E3o do socket antes do caminho dur\u00E1vel (REST) no `send`. */\nexport const SEND_FALLBACK_MS = 2_000\n\nexport interface LocalSend {\n messageId: string\n content: ContentPart[]\n mode: SendMode\n /** O metadata que foi junto (chave \u2192 texto do app; o agente nunca v\u00EA). */\n metadata?: Record<string, string>\n status: 'sending' | 'pending' | 'rejected'\n error?: string\n /** Vers\u00E3o da inbox que o ack disse conter a mensagem. */\n ackVersion?: number\n}\n\nexport interface HistoryWindow<I> {\n anchor: 'end' | 'detached'\n /** Os itens fechados que a tela mostra, em ordem. */\n items: I[]\n hasBefore: boolean\n hasAfter: boolean\n loadingBefore: boolean\n loadingAfter: boolean\n newWhileDetached: number\n /** Depois de `jumpTo`: o \u00EDndice do item \u00E2ncora em `items` (pra tela rolar at\u00E9 ele). */\n anchorIndex?: number\n error?: string\n}\n\nexport interface WatchState<S, I = unknown> {\n /** Sobe a cada mudan\u00E7a (comparar barato). */\n version: number\n timeline: S\n /**\n * A fila do chat (\u00A717): a MESMA venha da fila fria do realtime ou da box (a maior vers\u00E3o vale). Uma\n * mensagem some daqui quando o `user_message` com o mesmo messageId entra na timeline \u2014 nunca aparece 2\u00D7.\n */\n queue: QueueState\n /** @deprecated \u00A717 (lote 2 tira): use `queue`. */\n inbox: InboxState\n /** \"Conecte sua conta\" (ver `NeedsProvider`); null = nada a pedir. */\n needsProvider: NeedsProvider | null\n box: BoxPresence | null\n local: { sending: LocalSend[] }\n history: HistoryWindow<I>\n sync: { status: LiveStatus; cursor: number; via: Via | null; violations: Violation[] }\n}\n\nexport interface WatchOptions<S, I> extends Omit<StreamOptions, 'chatId'> {\n chatId: string\n /** Ignorado: o reducer \u00E9 o do contrato, no n\u00FAcleo (mantido pra compatibilidade). */\n reducer?: Reducer<S, I>\n /** Itens por p\u00E1gina do hist\u00F3rico (1\u2013200). */\n pageSize?: number\n /** Teto da janela: rolar muito solta a ponta oposta (a virtualiza\u00E7\u00E3o \u00E9 da tela). */\n maxWindow?: number\n onDebug?(e: DebugEvent): void\n /** Erro de auth definitivo (revogado). */\n onAuthFailed?(): void\n /** Modo estrito: cada viola\u00E7\u00E3o (tamb\u00E9m fica em `sync.violations`). */\n onViolation?(v: Violation): void\n /**\n * Quanto o `send` espera a confirma\u00E7\u00E3o pelo socket antes de gravar pelo REST (`deps.postMessage`), com o mesmo\n * messageId. Padr\u00E3o 2000 ms; `Infinity` = s\u00F3 no `close()`.\n */\n sendFallbackMs?: number\n}\n\n/** Um `send` esperando confirma\u00E7\u00E3o (socket e/ou REST): resolve uma vez, pelo primeiro que confirmar. */\ninterface PendingSend {\n messageId: string\n content: ContentPart[]\n mode: SendMode\n metadata?: Record<string, string>\n resolve(r: SubmitResult): void\n reject(e: Error): void\n timers: unknown[]\n /** pediu o caminho dur\u00E1vel (prazo do socket vencido ou `close()`) */\n rest: boolean\n done: boolean\n}\n\n/** Espera pra tentar de novo a corrente do REST quando a cabe\u00E7a falhou de vez com o chat aberto: 5 s, 10 s\u2026 at\u00E9 60 s. */\nconst REST_RETRY_MS = 5_000\nconst REST_RETRY_MAX_MS = 60_000\n\n/**\n * O erro que vai no `cause`: s\u00F3 nome, mensagem, status e c\u00F3digo. Nunca o objeto cru do `fetch` do app (um\n * wrapper pode pendurar a requisi\u00E7\u00E3o, com o `Authorization`, no erro).\n */\nfunction safeCause(e: unknown): Error {\n const x = (e ?? {}) as { name?: unknown; message?: unknown; status?: unknown; code?: unknown }\n const out = new Error(typeof x.message === 'string' ? x.message : String(e)) as Error & { status?: number; code?: string }\n if (typeof x.name === 'string') out.name = x.name\n if (typeof x.status === 'number') out.status = x.status\n if (typeof x.code === 'string') out.code = x.code\n return out\n}\n\nconst EMPTY_INBOX: InboxState = { version: -1, pending: [], queue: [], notDelivered: [], responses: [] }\nconst EMPTY_QUEUE: QueueState = { version: -1, owner: 'cold', turn: 'idle', items: [], notDelivered: [] }\n\ntype Listener<S, I> = (s: WatchState<S, I>) => void\n\ninterface Patch {\n version: number\n timeline?: { replace: Record<string, unknown> } | { set: Record<string, unknown>; del: string[]; items: Record<string, unknown> }\n inbox?: InboxState\n queue?: QueueState\n needsProvider?: NeedsProvider | null\n box?: BoxPresence | null\n local?: LocalSend[]\n history?: Omit<HistoryWindow<unknown>, 'items'> & { ids: string[]; items?: Record<string, unknown> }\n sync?: WatchState<unknown>['sync']\n}\n\ntype Input = Parameters<Edge<LiveWatch>['run']>[0]\n\nexport class LiveChat<S, I = unknown> {\n private readonly edge: Edge<LiveWatch>\n private state: WatchState<S, I>\n private readonly listeners = new Set<Listener<S, I>>()\n private readonly eventTaps = new Set<(evs: Envelope[]) => void>()\n private readonly waiting = new Map<string, { resolve(r: SubmitResult): void; reject(e: Error): void }>()\n private readonly historyWaiting = new Map<number, () => void>()\n /** os `send` esperando, NA ORDEM em que foram mandados (o Map guarda a ordem de inser\u00E7\u00E3o) */\n private readonly sends = new Map<string, PendingSend>()\n /** a corrente do REST: um pedido por vez, em ordem (B nunca passa na frente de A) */\n private restBusy = false\n private restRetry: unknown = null\n /** falhas de vez seguidas da corrente (a espera cresce; zera quando uma grava) */\n private restFails = 0\n /** gravados pelo REST e ainda em `local.sending` do n\u00FAcleo (que n\u00E3o viu o ack): a tela mostra `pending` */\n private readonly restStored = new Map<string, number | undefined>()\n /** o `local.sending` como o n\u00FAcleo mandou (antes da sobreposi\u00E7\u00E3o do REST) */\n private coreLocal: LocalSend[] = []\n /** itens que vieram de p\u00E1ginas do hist\u00F3rico (n\u00E3o est\u00E3o na timeline viva) */\n private readonly pageItems = new Map<string, I>()\n private historyIds: string[] = []\n private closed = false\n private readonly unWake: () => void\n\n constructor(\n private readonly d: WatchDeps,\n private readonly o: WatchOptions<S, I>,\n ) {\n this.state = {\n version: 0,\n // a timeline vazia do n\u00FAcleo (forma completa: order, items, runs\u2026) antes do wasm e do 1\u00BA snapshot\n timeline: JSON.parse(EMPTY_STATE_JSON) as S,\n queue: EMPTY_QUEUE,\n inbox: EMPTY_INBOX,\n needsProvider: null,\n box: null,\n local: { sending: [] },\n history: { anchor: 'end', items: [], hasBefore: false, hasAfter: false, loadingBefore: false, loadingAfter: false, newWhileDetached: 0 },\n sync: { status: 'connecting', cursor: 0, via: null, violations: [] },\n }\n const cfg = sessionConfig(d, o as StreamOptions)\n ;(cfg.has as Record<string, boolean>).history = !!d.history\n // refNonce: os `ref` da fila saem \u00FAnicos entre interfaces (ver `newRef`)\n const wcfg = JSON.stringify({ ...cfg, pageSize: o.pageSize, maxWindow: o.maxWindow, refNonce: uuidv7(d.clock.now()).replace(/-/g, '') })\n // o n\u00FAcleo nasce quando o wasm chegar (peda\u00E7o \u00E0 parte); at\u00E9 l\u00E1 o estado \u00E9 o inicial e as entradas esperam\n this.edge = new Edge(() => new (core().LiveWatch)(wcfg), d, o.chatId, o.random ?? Math.random, (f) => this.handle(f))\n this.unWake = d.env.onWake((why, awayMs) => this.edge.run((c, e) => c.wake(...e, why, awayMs ?? 0)))\n this.edge.run((c, e) => c.start(...e))\n }\n\n // ------------------------------------------------------------------ leitura\n\n getState = (): WatchState<S, I> => this.state\n\n /** Compat\u00EDvel com `useSyncExternalStore(live.subscribe, live.getState)`. */\n subscribe = (cb: Listener<S, I>): (() => void) => {\n this.listeners.add(cb)\n return () => this.listeners.delete(cb)\n }\n\n /** S\u00F3 chama quando o peda\u00E7o escolhido muda (a fila n\u00E3o re-renderiza a cada delta de texto \u2014 T3). */\n select<T>(fn: (s: WatchState<S, I>) => T, cb: (v: T) => void, eq: (a: T, b: T) => boolean = Object.is): () => void {\n let prev = fn(this.state)\n cb(prev)\n return this.subscribe((s) => {\n const next = fn(s)\n if (!eq(prev, next)) {\n prev = next\n cb(next)\n }\n })\n }\n\n /** Eventos aplicados, em ordem (o `prompt()` e o `events()` usam). */\n tap(cb: (evs: Envelope[]) => void): () => void {\n this.eventTaps.add(cb)\n return () => this.eventTaps.delete(cb)\n }\n\n get chatId(): string {\n return this.o.chatId\n }\n\n // ------------------------------------------------------------------ comandos\n\n /**\n * Manda uma mensagem. Aparece na hora em `local.sending`; sai quando a inbox do log a mostra. Resolve quando\n * gravada: pelo socket ou, se ele n\u00E3o confirmar em `sendFallbackMs`, pelo REST com o mesmo messageId (o servidor\n * deduplica). `timeoutMs`: rejeita com `SendNotConfirmedError` ('timeout') se nada confirmou no prazo.\n *\n * O `timeoutMs` s\u00F3 desiste de ESPERAR: n\u00E3o cancela o envio pelo socket (o n\u00FAcleo segue reenviando aquele frame\n * at\u00E9 o ack ou o `close()`), ent\u00E3o a mensagem ainda pode chegar \u00E0 fila depois do timeout \u2014 e, chegando, a ordem\n * relativa dela com os `send` seguintes n\u00E3o \u00E9 garantida (o caminho do REST tamb\u00E9m n\u00E3o espera mais por ela).\n * Reenviar com o mesmo `messageId` \u00E9 seguro (o servidor deduplica) \u2014 com o MESMO `metadata`: outro = `conflict`.\n *\n * `metadata`: chave \u2192 texto do app (at\u00E9 16 chaves `^[A-Za-z0-9_.:-]{1,64}$`, sem o prefixo `sa.`; valores de at\u00E9\n * 512 caracteres). Volta como `metadata` no item `user_message` e nos itens da fila; o agente/LLM NUNCA v\u00EA.\n * Fora dos limites = `rejected` `invalid_request`. `{}` = sem metadata.\n */\n async send(\n content: string | ContentPart[],\n opts: { mode?: SendMode; attachments?: string[]; messageId?: string; timeoutMs?: number; metadata?: Record<string, string> } = {},\n ): Promise<SubmitResult & { messageId: string }> {\n const messageId = opts.messageId ?? newMessageId(this.d.clock.now())\n const parts = toContentParts(content, opts.attachments)\n const mode = opts.mode ?? 'auto'\n const metadata = opts.metadata && Object.keys(opts.metadata).length ? { ...opts.metadata } : undefined\n if (this.closed) throw new SendNotConfirmedError('closed', messageId, parts, mode)\n const r = await new Promise<SubmitResult>((resolve, reject) => {\n // o mesmo messageId de novo (reenvio do app) com o 1\u00BA ainda esperando: os dois resolvem com o resultado dele\n const prev = this.sends.get(messageId)\n if (prev && !prev.done) {\n prev.done = true\n for (const t of prev.timers) this.d.clock.clearTimeout(t)\n }\n const ps: PendingSend = {\n messageId, content: parts, mode, ...(metadata ? { metadata } : {}), timers: [], rest: false, done: false,\n resolve: prev ? (x) => (prev.resolve(x), resolve(x)) : resolve,\n reject: prev ? (e) => (prev.reject(e), reject(e)) : reject,\n }\n this.sends.set(messageId, ps)\n const fallback = this.o.sendFallbackMs ?? SEND_FALLBACK_MS\n if (this.d.postMessage && Number.isFinite(fallback)) ps.timers.push(this.d.clock.setTimeout(() => this.viaRest(ps), Math.max(0, fallback)))\n if (opts.timeoutMs !== undefined && Number.isFinite(opts.timeoutMs))\n ps.timers.push(this.d.clock.setTimeout(() => this.settleSend(ps, new SendNotConfirmedError('timeout', messageId, parts, mode)), Math.max(0, opts.timeoutMs)))\n this.waiting.set(`send:${messageId}`, {\n resolve: (x) => this.settleSend(ps, x),\n // o n\u00FAcleo desistiu (fechou): vale o REST, se houver\n reject: (e) => this.coreGaveUp(ps, e),\n })\n this.edge.run((c, e) => c.send(...e, messageId, JSON.stringify(parts), mode, metadata ? JSON.stringify(metadata) : ''))\n })\n return { ...r, messageId }\n }\n\n /** Pede o caminho dur\u00E1vel pra este send (e, pela ordem, pra todos os anteriores ainda esperando). */\n private viaRest(ps: PendingSend): void {\n if (ps.done || !this.d.postMessage) return\n ps.rest = true\n this.pumpRest()\n }\n\n /**\n * A corrente do REST, por chat: grava UM por vez, na ordem dos `send`. A cabe\u00E7a \u00E9 o send mais antigo ainda\n * esperando; se algum depois dela pediu o REST, ela vai antes (a fila no servidor fica na ordem em que o usu\u00E1rio\n * mandou). A cabe\u00E7a confirmada (por qualquer caminho) libera a pr\u00F3xima. Falhou de vez: com o chat aberto a corrente\n * para e tenta de novo com espera crescente, 5 s at\u00E9 60 s (o socket tamb\u00E9m segue tentando); fechado, a cabe\u00E7a e TODAS as de tr\u00E1s\n * rejeitam \u2014 nenhuma pula a que n\u00E3o foi gravada.\n */\n private pumpRest(): void {\n if (this.restBusy || !this.d.postMessage) return\n const order = [...this.sends.values()].filter((x) => !x.done)\n const head = order[0]\n if (!head || !order.some((x) => x.rest)) return\n if (this.restRetry !== null) {\n this.d.clock.clearTimeout(this.restRetry)\n this.restRetry = null\n }\n this.restBusy = true\n this.d.postMessage(this.o.chatId, { clientMessageId: head.messageId, content: head.content, mode: head.mode, ...(head.metadata ? { metadata: head.metadata } : {}) }).then(\n (r) => {\n this.restBusy = false\n this.restFails = 0\n if (r.status === 'accepted' || r.status === 'duplicate') this.markStored(head.messageId, r.version ?? r.inboxVersion)\n this.settleSend(head, r)\n this.pumpRest()\n },\n (e: unknown) => {\n this.restBusy = false\n if (head.done) return this.pumpRest() // o socket confirmou enquanto o REST falhava\n if (this.closed) {\n // fechado, n\u00E3o h\u00E1 mais quem tente: a cabe\u00E7a e as de tr\u00E1s (que n\u00E3o podem passar na frente dela)\n const cause = safeCause(e)\n this.restBusy = true // ningu\u00E9m sai pela corrente enquanto as de tr\u00E1s rejeitam junto\n for (const x of [...this.sends.values()].filter((y) => !y.done)) this.settleSend(x, new SendNotConfirmedError('failed', x.messageId, x.content, x.mode, cause))\n this.restBusy = false\n return\n }\n // servidor fora: a espera cresce (5 s, 10 s, 20 s, 40 s, 60 s, 60 s\u2026)\n const wait = Math.min(REST_RETRY_MAX_MS, REST_RETRY_MS * 2 ** this.restFails++)\n this.restRetry = this.d.clock.setTimeout(() => {\n this.restRetry = null\n this.pumpRest()\n }, wait)\n },\n )\n }\n\n private coreGaveUp(ps: PendingSend, e: Error): void {\n if (ps.done) return\n if (this.d.postMessage) this.viaRest(ps)\n else this.settleSend(ps, new SendNotConfirmedError('closed', ps.messageId, ps.content, ps.mode, e))\n }\n\n private settleSend(ps: PendingSend, r: SubmitResult | Error): void {\n if (ps.done) return\n ps.done = true\n for (const t of ps.timers) this.d.clock.clearTimeout(t)\n if (this.sends.get(ps.messageId) === ps) this.sends.delete(ps.messageId)\n if (r instanceof Error) ps.reject(r)\n else ps.resolve(r)\n // a cabe\u00E7a saiu (socket, REST, timeout): a pr\u00F3xima da corrente pode ir\n if (!this.restBusy) this.pumpRest()\n }\n\n /** Gravado pelo REST: no `local.sending` passa de `sending` a `pending` (o n\u00FAcleo n\u00E3o viu o ack). */\n private markStored(messageId: string, version: number | undefined): void {\n if (this.closed || !this.coreLocal.some((l) => l.messageId === messageId)) return\n this.restStored.set(messageId, version)\n this.state = { ...this.state, local: { sending: this.overlayLocal() } }\n for (const l of this.listeners) l(this.state)\n }\n\n private overlayLocal(): LocalSend[] {\n for (const id of [...this.restStored.keys()]) if (!this.coreLocal.some((l) => l.messageId === id)) this.restStored.delete(id)\n if (!this.restStored.size) return this.coreLocal\n return this.coreLocal.map((l) => {\n if (l.status !== 'sending' || !this.restStored.has(l.messageId)) return l\n const v = this.restStored.get(l.messageId)\n return { ...l, status: 'pending' as const, ...(v !== undefined ? { ackVersion: v } : {}) }\n })\n }\n\n stop(): Promise<SubmitResult> {\n const stopId = uuidv7(this.d.clock.now())\n return this.command({ t: 'stop', ref: `stop:${stopId}`, chatId: this.o.chatId, stopId })\n }\n\n respond(requestId: string, answer: unknown): Promise<SubmitResult> {\n return this.command({ t: 'respond', ref: `respond:${requestId}:${uuidv7(this.d.clock.now())}`, chatId: this.o.chatId, requestId, answer })\n }\n\n /** Sess\u00E3o nova do provedor (era o recycle); `clearHistory` tamb\u00E9m esconde o hist\u00F3rico at\u00E9 aqui. */\n reset(opts: { clearHistory?: boolean } = {}): Promise<SubmitResult> {\n const resetId = uuidv7(this.d.clock.now())\n return this.command({ t: 'reset', ref: `reset:${resetId}`, chatId: this.o.chatId, resetId, ...(opts.clearHistory ? { clearHistory: true } : {}) })\n }\n\n /**\n * Troca de agente (\u00A717.4): um comando da fila no MESMO canal ordenado do `send` \u2014 \"troquei e mandei\" chega\n * na ordem, sem esperar nada. O dono aplica antes do pr\u00F3ximo run; uma troca nova substitui a pendente\n * (`queue.pendingSwitch`). A forma \u00E9 a do REST (`agentId`, `model?`, `effort?`): o servidor completa o resto e\n * valida o acesso; `provider`/`agentName` n\u00E3o v\u00E3o (o servidor ignoraria).\n */\n switchAgent(to: SwitchTo): Promise<SubmitResult> {\n const switchId = uuidv7(this.d.clock.now())\n return this.wait(`switch:${switchId}`, (c, e) => c.switch_agent(...e, switchId, JSON.stringify(to)))\n }\n\n /**\n * Troca S\u00D3 modelo/esfor\u00E7o do agente de agora (o que n\u00E3o vier fica o de agora): o mesmo comando `switch`, sem\n * `agentId` \u2014 o servidor completa com o agente atual (a box aplica ao vivo, sem sess\u00E3o nova). `null` = voltar\n * ao padr\u00E3o do agente (vai no frame como `reset`).\n */\n switchModel(change: { model?: string | null; effort?: string | null }): Promise<SubmitResult> {\n const switchId = uuidv7(this.d.clock.now())\n return this.wait(`switch:${switchId}`, (c, e) => c.switch_model(...e, switchId, JSON.stringify(change)))\n }\n\n /** Cancela a troca agendada (`queue.pendingSwitch`): o comando `cancelSwitch`, no mesmo canal ordenado. */\n cancelSwitch(): Promise<SubmitResult> {\n const switchId = uuidv7(this.d.clock.now())\n return this.wait(`switch:${switchId}`, (c, e) => c.cancel_switch(...e, switchId))\n }\n\n resend(messageId: string): Promise<SubmitResult> {\n return this.command({ t: 'resend', ref: newRef(), chatId: this.o.chatId, messageId })\n }\n\n /** Fila: sempre em cima da vers\u00E3o que a tela est\u00E1 vendo; `conflict` traz (e aplica) o estado novo. */\n readonly queue = {\n reorder: (order: string[]) => this.queueOp({ kind: 'reorder', order }),\n edit: (messageId: string, content: string | ContentPart[]) => this.queueOp({ kind: 'edit', messageId, content: toContentParts(content) }),\n remove: (messageId: string) => this.queueOp({ kind: 'remove', messageId }),\n sendNow: (messageId: string) => this.queueOp({ kind: 'sendNow', messageId }),\n }\n\n private queueOp(op: QueueOp): Promise<SubmitResult> {\n if (this.closed) return Promise.reject(new Error('stream closed'))\n return new Promise((resolve, reject) =>\n this.edge.when((c) => this.wait(c.next_queue_ref(), (w, e) => w.queue_op(...e, JSON.stringify(op))).then(resolve, reject)),\n )\n }\n\n private command(frame: { ref: string } & Record<string, unknown>): Promise<SubmitResult> {\n return this.wait(frame.ref, (c, e) => c.command(...e, JSON.stringify(frame)))\n }\n\n private wait(ref: string, input: Input): Promise<SubmitResult> {\n if (this.closed) return Promise.reject(new Error('stream closed'))\n return new Promise((resolve, reject) => {\n this.waiting.set(ref, { resolve, reject })\n this.edge.run(input)\n })\n }\n\n retry(): void {\n this.edge.run((c, e) => c.wake(...e, 'manual', 0))\n }\n\n tokenRenewed(token: string): void {\n this.edge.run((c, e) => c.token_renewed(...e, token))\n }\n\n /**\n * Fecha. Nenhuma espera fica pendurada: o `send` n\u00E3o confirmado vai pelo REST (mesmo messageId) e resolve quando\n * gravado; sem REST, rejeita com `SendNotConfirmedError` ('closed', com a mensagem). Os demais comandos\n * rejeitam com `CommandAbortedError`.\n */\n close(): void {\n if (this.closed) return\n this.edge.run((c, e) => c.close(...e))\n this.closed = true\n this.unWake()\n this.edge.stop()\n this.listeners.clear()\n this.eventTaps.clear()\n // o n\u00FAcleo j\u00E1 rejeitou o que tinha; o que ele n\u00E3o chegou a ver (wasm ainda carregando) sai aqui\n const left = [...this.waiting]\n this.waiting.clear()\n for (const [ref, w] of left) w.reject(new CommandAbortedError(ref))\n for (const ps of [...this.sends.values()]) this.coreGaveUp(ps, new Error('stream closed'))\n // o que estava esperando a nova tentativa vai agora (fechado, falhar = rejeitar)\n this.pumpRest()\n }\n\n // ------------------------------------------------------------------ hist\u00F3rico (\u00A74.9)\n\n readonly history = {\n /** Rola pra cima: p\u00E1gina de itens fechados antes do primeiro da janela. */\n loadOlder: (): Promise<void> => this.page((c) => c.load_older()),\n /** S\u00F3 na janela parada: p\u00E1gina depois do \u00FAltimo item; encontrando o ao vivo, recola no fim. */\n loadNewer: (): Promise<void> => this.page((c) => c.load_newer()),\n /** Abre \"em volta\" de uma mensagem ou evento. O ao vivo continua aplicando por baixo. */\n jumpTo: (anchor: { messageId: string } | { eventId: number }): Promise<void> => this.page((c) => c.jump_to(JSON.stringify(anchor))),\n /** Volta pro fim (cola no ao vivo). */\n jumpToEnd: (): Promise<void> => this.page((c) => c.jump_to_end()),\n }\n\n /** Roda um pedido de hist\u00F3rico; resolve quando a p\u00E1gina chegou e foi aplicada (ou na hora, se n\u00E3o pediu). */\n private page(input: (c: LiveWatch) => string): Promise<void> {\n if (this.closed) return Promise.resolve()\n return new Promise<void>((resolve) =>\n this.edge.when((c) => {\n const fx = JSON.parse(input(c)) as OtherFx[]\n const req = fx.find((f) => f.k === 'history')?.req as number | undefined\n if (req === undefined) resolve()\n else this.historyWaiting.set(req, resolve)\n this.edge.exec(fx)\n }),\n )\n }\n\n // ------------------------------------------------------------------ efeitos do n\u00FAcleo\n\n private handle(f: OtherFx): void {\n switch (f.k) {\n case 'patch':\n return this.applyPatch(f.v as Patch)\n case 'tap': {\n const evs = f.v as Envelope[]\n for (const t of this.eventTaps) t(evs)\n return\n }\n case 'history': {\n const req = f.req as number\n const finish = (input: (c: LiveWatch) => string) => {\n if (!this.closed && this.edge.core) this.edge.exec(JSON.parse(input(this.edge.core)) as OtherFx[])\n const w = this.historyWaiting.get(req)\n this.historyWaiting.delete(req)\n w?.()\n }\n this.d.history!(this.o.chatId, f.q as HistoryQuery).then(\n (page) => finish((c) => c.on_history(req, true, JSON.stringify(page))),\n (e: unknown) => finish((c) => c.on_history(req, false, e instanceof Error ? e.message : String(e))),\n )\n return\n }\n case 'onStatus':\n if (f.v === 'auth_failed') this.o.onAuthFailed?.()\n return\n case 'onDebug':\n return this.o.onDebug?.(f.v as DebugEvent)\n case 'onViolation':\n return this.o.onViolation?.(f.v as Violation)\n case 'resolve': {\n const w = this.waiting.get(f.ref as string)\n this.waiting.delete(f.ref as string)\n return w?.resolve(f.v as SubmitResult)\n }\n case 'reject': {\n const w = this.waiting.get(f.ref as string)\n this.waiting.delete(f.ref as string)\n return w?.reject(String(f.v) === 'stream closed' ? new CommandAbortedError(f.ref as string) : new Error(String(f.v)))\n }\n }\n }\n\n private applyPatch(p: Patch): void {\n const prev = this.state\n let timeline = prev.timeline as unknown as Record<string, unknown>\n if (p.timeline && 'replace' in p.timeline) {\n timeline = p.timeline.replace\n } else if (p.timeline) {\n const t = p.timeline\n timeline = { ...timeline, ...t.set }\n for (const k of t.del) delete timeline[k]\n if (Object.keys(t.items).length) timeline.items = { ...(timeline.items as Record<string, unknown>), ...t.items }\n }\n let history = prev.history\n if (p.history) {\n const { ids, items, ...flags } = p.history\n for (const [id, it] of Object.entries(items ?? {})) this.pageItems.set(id, it as I)\n this.historyIds = ids\n history = { ...(flags as Omit<HistoryWindow<I>, 'items'>), items: [] }\n }\n if (p.history || p.timeline) {\n const live = (timeline.items ?? {}) as Record<string, I>\n history = { ...history, items: this.historyIds.map((id) => live[id] ?? this.pageItems.get(id)).filter((x): x is I => x !== undefined) }\n }\n this.state = {\n version: p.version,\n timeline: timeline as unknown as S,\n queue: p.queue ?? prev.queue,\n inbox: p.inbox ?? prev.inbox,\n needsProvider: p.needsProvider !== undefined ? p.needsProvider : prev.needsProvider,\n box: p.box !== undefined ? p.box : prev.box,\n local: p.local ? { sending: ((this.coreLocal = p.local), this.overlayLocal()) } : prev.local,\n history,\n sync: p.sync ?? prev.sync,\n }\n for (const l of this.listeners) l(this.state)\n }\n}\n", "// `prompt()` \u2014 o atalho pergunta-e-resposta (DESIGN \u00A72; proposta sdk \u00A73.3), no formato do MessageStream\n// da Anthropic: eventos (`.on`), iterador ass\u00EDncrono e `result`.\n// Regra da v2 (2026-08-02, 2026-10-18): `result` NUNCA rejeita por transporte (a camada religa pelo\n// cursor) e sempre resolve \u2014 inclusive no `cancel()`. S\u00F3 rejeita em erro de PEDIDO (o envio foi recusado).\nimport type { ContentPart, Envelope, SendMode } from './types'\nimport type { LiveChat } from './watch'\n\nexport type RunOutcome = 'completed' | 'stopped' | 'failed' | 'not_delivered' | 'cancelled'\n\nexport interface RunResult {\n status: RunOutcome\n messageId: string\n runId?: string\n text: string\n /** Itens fechados deste run (o `data.item` dos item.completed). */\n items: unknown[]\n usage?: unknown\n error?: unknown\n /** S\u00F3 em `not_delivered`: `not_consumed` = a box dormiu v\u00E1rias vezes sem o provedor ler; ausente = STOP antes do turno. */\n notDeliveredReason?: string\n}\n\nexport type RunEvent =\n | { type: 'queued' }\n | { type: 'started'; runId: string }\n | { type: 'text'; delta: string; text: string }\n | { type: 'item'; item: unknown }\n | { type: 'event'; event: Envelope }\n | { type: 'done'; result: RunResult }\n\nexport class PromptRejectedError extends Error {\n constructor(\n readonly code: string,\n message: string,\n ) {\n super(message)\n this.name = 'PromptRejectedError'\n }\n}\n\ntype Handlers = { [K in RunEvent['type']]?: Array<(e: Extract<RunEvent, { type: K }>) => void> }\n\nexport class RunHandle implements AsyncIterable<RunEvent> {\n readonly result: Promise<RunResult>\n state: 'sending' | 'queued' | 'running' | 'done' = 'sending'\n messageId = ''\n runId: string | undefined\n\n private resolve!: (r: RunResult) => void\n private reject!: (e: Error) => void\n private readonly handlers: Handlers = {}\n private readonly buffer: RunEvent[] = []\n private wakeIterators: Array<() => void> = []\n private text = ''\n private readonly items: unknown[] = []\n private readonly untap: () => void\n private unselect: (() => void) | null = null\n\n constructor(\n private readonly live: LiveChat<unknown, unknown>,\n content: string | ContentPart[],\n opts: { mode?: SendMode; attachments?: string[]; messageId?: string; metadata?: Record<string, string> } = {},\n private readonly onSettled?: () => void,\n ) {\n this.result = new Promise((res, rej) => {\n this.resolve = res\n this.reject = rej\n })\n this.result.catch(() => {}) // quem n\u00E3o der await n\u00E3o ganha unhandled rejection\n this.untap = live.tap((evs) => evs.forEach((e) => this.onEvent(e)))\n live\n .send(content, opts)\n .then((r) => {\n this.messageId = r.messageId\n if (r.status === 'rejected') return this.fail(new PromptRejectedError(r.code, r.message))\n if (r.status === 'conflict') return this.fail(new PromptRejectedError('conflict', 'conflict'))\n this.watchQueue()\n })\n .catch((e: Error) => this.fail(e))\n if (opts.messageId) this.messageId = opts.messageId\n }\n\n on<K extends RunEvent['type']>(type: K, cb: (e: Extract<RunEvent, { type: K }>) => void): this {\n ;((this.handlers[type] ??= []) as Array<typeof cb>).push(cb)\n return this\n }\n\n /** STOP do chat (o run \u00E9 dele). O `result` resolve com `stopped` quando o run fechar. */\n stop(): Promise<unknown> {\n return this.live.stop()\n }\n\n /** Para de ouvir; o agente segue. O `result` resolve com `cancelled`. */\n cancel(): void {\n this.settle('cancelled')\n }\n\n [Symbol.asyncIterator](): AsyncIterator<RunEvent> {\n let i = 0\n return {\n next: () =>\n new Promise((resolve) => {\n const pull = () => {\n if (i < this.buffer.length) return resolve({ value: this.buffer[i++]!, done: false })\n if (this.state === 'done') return resolve({ value: undefined, done: true })\n this.wakeIterators.push(pull)\n }\n pull()\n }),\n }\n }\n\n // ------------------------------------------------------------------\n\n private watchQueue(): void {\n // na fila (agente ocupado): a tela pode mostrar \"na fila\" at\u00E9 o run dela come\u00E7ar; STOP antes do turno\n // pegar a mensagem = ela vai pra `inbox.notDelivered` (o app reenvia ou descarta) e o run nunca abre\n const mine = (q: { messageId: string }) => q.messageId === this.messageId\n this.unselect = this.live.select(\n (s) => {\n const nd = (s.queue?.notDelivered?.find(mine) ?? s.inbox.notDelivered?.find(mine)) as { notDeliveredReason?: string } | undefined\n if (nd) return `not_delivered:${nd.notDeliveredReason ?? ''}`\n // \u00A717: o item `queue` espera atr\u00E1s de outro run; o `auto` pendente vai come\u00E7ar (n\u00E3o \u00E9 \"na fila\")\n const q = s.queue?.items?.find(mine)\n return (q && q.mode === 'queue') || s.inbox.queue.some(mine) ? 'queued' : ''\n },\n (where) => {\n if (where.startsWith('not_delivered:') && !this.runId) {\n const reason = where.slice('not_delivered:'.length)\n return this.settle('not_delivered', undefined, undefined, reason || undefined)\n }\n if (where === 'queued' && this.state === 'sending') {\n this.state = 'queued'\n this.emit({ type: 'queued' })\n }\n },\n )\n }\n\n private onEvent(e: Envelope): void {\n if (this.state === 'done') return\n const d = (e.data ?? {}) as Record<string, unknown>\n if (!this.runId) {\n // o run \u00E9 o que abriu pela nossa mensagem (`run.started.trigger.messageIds`) ou aquele em que o\n // provedor a leu (o item `user_message` com o nosso messageId \u2014 steer entra no run ativo)\n const item = d.item as { kind?: string; messageId?: string; runId?: string } | undefined\n const trigger = d.trigger as { messageIds?: string[] } | undefined\n const read = (e.type === 'item.started' || e.type === 'item.completed') && item?.kind === 'user_message' && item.messageId === this.messageId\n if (this.messageId !== '' && ((e.type === 'run.started' && trigger?.messageIds?.includes(this.messageId)) || read)) {\n this.runId = e.runId ?? (d.runId as string | undefined) ?? item?.runId\n if (this.runId) {\n this.state = 'running'\n this.emit({ type: 'started', runId: this.runId })\n }\n }\n if (!this.runId) return\n }\n const runOf = e.runId ?? (d.runId as string | undefined)\n if (runOf !== this.runId) return\n this.emit({ type: 'event', event: e })\n if (e.type === 'item.delta') {\n const delta = d.delta as { path?: string; append?: string } | undefined\n const piece = delta ? (delta.path === 'text' ? delta.append : undefined) : (d.text as string | undefined)\n if (piece) {\n this.text += piece\n this.emit({ type: 'text', delta: piece, text: this.text })\n }\n } else if (e.type === 'item.completed') {\n const item = d.item ?? d\n this.items.push(item)\n this.emit({ type: 'item', item })\n } else if (e.type === 'run.completed') {\n const status = (d.status as RunOutcome | undefined) ?? 'completed'\n this.settle(status, d.usage, d.error)\n }\n }\n\n /**\n * O texto do run = os itens `text` fechados. Um steer no Codex CORTA a resposta em andamento\n * (`steerBoundary: 'model_call'`): o parcial fecha `interrupted` e outra resposta come\u00E7a j\u00E1 com o\n * steer \u2014 a resposta final \u00E9 a que completou; o parcial cortado s\u00F3 entra se n\u00E3o houver outra.\n */\n private finalText(): string {\n const texts = this.items.filter(\n (i): i is { kind: string; text: string; status?: string } =>\n typeof i === 'object' && i !== null && (i as { kind?: unknown }).kind === 'text',\n )\n if (!texts.length) return this.text\n const done = texts.filter((i) => i.status !== 'interrupted')\n return (done.length ? done : texts).map((i) => i.text).join('')\n }\n\n private settle(status: RunOutcome, usage?: unknown, error?: unknown, notDeliveredReason?: string): void {\n if (this.state === 'done') return\n const result: RunResult = {\n status, messageId: this.messageId, text: this.finalText(), items: this.items,\n ...(this.runId ? { runId: this.runId } : {}), ...(usage !== undefined ? { usage } : {}), ...(error !== undefined ? { error } : {}),\n ...(notDeliveredReason ? { notDeliveredReason } : {}),\n }\n this.emit({ type: 'done', result })\n this.state = 'done'\n this.cleanup()\n this.resolve(result)\n }\n\n private fail(e: Error): void {\n if (this.state === 'done') return\n this.state = 'done'\n this.cleanup()\n this.reject(e)\n }\n\n private cleanup(): void {\n this.untap()\n this.unselect?.()\n const wake = this.wakeIterators\n this.wakeIterators = []\n wake.forEach((w) => w())\n this.onSettled?.()\n }\n\n private emit(ev: RunEvent): void {\n this.buffer.push(ev)\n for (const h of (this.handlers[ev.type] ?? []) as Array<(e: RunEvent) => void>) {\n try {\n h(ev)\n } catch {\n /* handler do app n\u00E3o derruba o run */\n }\n }\n const wake = this.wakeIterators\n this.wakeIterators = []\n wake.forEach((w) => w())\n }\n}\n", "// A lista lateral ao vivo (DESIGN \u00A713, P8): o UserFeed do realtime (`GET /v3/me/feed`, um DO por usu\u00E1rio).\n// Protocolo: na conex\u00E3o `{t:'feed', version, rows}` (os 200 mais recentes); depois `{t:'row'}` e\n// `{t:'removed'}`, cada um com `version`. Reconectar = `feed` inteiro de novo (sem replay), ent\u00E3o a\n// SDK s\u00F3 precisa de backoff e de descartar frame com vers\u00E3o velha. O filtro por agente \u00E9 daqui.\n// A regra mora no n\u00FAcleo Rust (sdk/core-rs, `Feed`); aqui \u00E9 a borda.\nimport type { Clock, LiveDeps, LiveEnv, OpenSocket } from './deps'\nimport { Edge, type OtherFx } from './edge'\nimport { core } from './native'\nimport type { LiveFeed } from './wasm/live.js'\nimport type { BoxPresence } from './types'\n\nexport interface ChatRow {\n chatId: string\n agentId: string\n title?: string\n state: string\n waiting?: 'approval' | 'question' | 'input'\n box?: BoxPresence\n lastEventSeq: number\n updatedAt: string\n lastReadSeq: number\n unreadCount: number\n}\n\nexport type FeedFrame =\n | { t: 'feed'; version: number; rows: ChatRow[] }\n | { t: 'row'; version: number; row: ChatRow }\n | { t: 'removed'; version: number; chatId: string }\n | { t: 'hello'; tokenExpiresAt?: number }\n | { t: 'bye'; reason: string; reconnect: string }\n | { t: 'pong' }\n\nexport type FeedStatus = 'connecting' | 'live' | 'reconnecting' | 'offline' | 'auth_failed' | 'forbidden' | 'closed'\n\nexport interface FeedState {\n version: number\n /** Ordenadas por `updatedAt` (mais recente primeiro), j\u00E1 filtradas por agente se pedido. */\n rows: ChatRow[]\n status: FeedStatus\n}\n\nexport interface FeedDeps {\n url: string\n openSocket: OpenSocket\n token(): Promise<string>\n invalidateToken?(): void\n clock: Clock\n env: LiveEnv\n}\n\n/** CASCA FINA sobre o n\u00FAcleo Rust (`Feed`): a borda comum executa o IO; o estado chega pronto. */\nexport class ChatListLive {\n private readonly edge: Edge<LiveFeed>\n private state: FeedState = { version: -1, rows: [], status: 'connecting' }\n private readonly listeners = new Set<(s: FeedState) => void>()\n private readonly unWake: () => void\n private closed = false\n\n constructor(\n private readonly d: FeedDeps,\n filter: { agentId?: string } = {},\n ) {\n const fcfg = JSON.stringify({ url: d.url, ...(filter.agentId ? { agentId: filter.agentId } : {}) })\n const deps: LiveDeps = { connectorUrl: () => d.url, openSocket: d.openSocket, token: d.token, invalidateToken: d.invalidateToken, clock: d.clock, env: d.env }\n this.edge = new Edge(() => new (core().LiveFeed)(fcfg), deps, '', Math.random, (fx: OtherFx) => {\n if (fx.k !== 'feedState') return\n this.state = fx.v as FeedState\n for (const l of this.listeners) l(this.state)\n })\n this.unWake = d.env.onWake((why, awayMs) => this.edge.run((c, e) => c.wake(...e, why, awayMs ?? 0)))\n this.edge.run((c, e) => c.start(...e))\n }\n\n getState = (): FeedState => this.state\n\n subscribe = (cb: (s: FeedState) => void): (() => void) => {\n this.listeners.add(cb)\n return () => this.listeners.delete(cb)\n }\n\n close(): void {\n if (this.closed) return\n this.edge.run((c, e) => c.close(...e))\n this.closed = true\n this.unWake()\n this.edge.stop()\n }\n}\n", "// A cola: monta a camada ao vivo pra uma credencial (token do usu\u00E1rio ou chave). \u00C9 o que\n// `@smoothcodes/agent-client` e `@smoothcodes/agent-server` exp\u00F5em como `chats.watch/events/prompt`.\n// - N `watch(chatId)` na mesma inst\u00E2ncia compartilham UM stream (contagem de refer\u00EAncias);\n// o \u00FAltimo `close()` fecha depois de `keepAliveMs` (T3: assinatura \u00D7 cache t\u00EAm vidas separadas).\n// - O token renovado vai pros sockets abertos sem derrubar.\n// As chamadas REST (hist\u00F3rico, peda\u00E7o do log, snapshot) s\u00E3o `fetch` cru nas rotas do control; quando o contrato\n// consolidar, viram os m\u00E9todos da SDK gerada (proposta sdk \u00A75).\nimport { authedFetch, TokenSource } from './auth'\nimport { serverEnv, systemClock, type Clock, type LiveEnv, type OpenSocket, type SocketLike } from './deps'\nimport type { DebugEvent, Violation } from './stream'\nimport type { ChatSnapshot, ContentPart, Envelope, ErrorCode, SendMode, SubmitResult } from './types'\nimport { untilStored } from './rest'\nimport { KNOWN_ERROR_CODES } from '../../../../contract/events/ts/src/gen/known'\n\n/** Rede caiu (sem status) ou 408/429/5xx: o REST repete; o resto \u00E9 resposta do servidor. */\nfunction restTransient(e: unknown): boolean {\n const st = (e as { status?: number } | null)?.status\n return st === undefined || st === 408 || st === 429 || st >= 500\n}\nimport { LiveChat, type HistoryPage, type HistoryQuery, type Reducer, type WatchDeps, type WatchOptions } from './watch'\nimport { loadCore } from './native'\nimport { RunHandle } from './prompt'\nimport { ChatStream } from './stream'\nimport type { HistoryPage as ControlHistoryPage } from '../../../generated/ts-client/api/types/HistoryPage'\nimport { ChatListLive } from './feed'\n\nexport interface LiveClientOptions<S, I> {\n /** a base da API, ex. `https://smoothagent-v3-api.uaibuilder.workers.dev` (white-label: s\u00F3 isto muda). */\n baseUrl: string\n token?: string\n getToken?: () => Promise<string>\n /** Ignorado: o reducer \u00E9 o do contrato, no n\u00FAcleo Rust (mantido pra compatibilidade). */\n reducer?: Reducer<S, I>\n fetch?: typeof fetch\n WebSocket?: new (url: string, protocols: string[]) => SocketLike\n clock?: Clock\n env?: LiveEnv\n keepAliveMs?: number\n onDebug?(chatId: string, e: DebugEvent): void\n /** Modo estrito (testes): buraco vira viola\u00E7\u00E3o em vez de resync. */\n strict?: boolean\n onViolation?(chatId: string, v: Violation): void\n /** Revogado: a sess\u00E3o acabou (o app volta pro login dele). */\n onAuthRevoked?(): void\n /** Op\u00E7\u00F5es repassadas a cada stream (testes e ajuste fino). */\n stream?: Partial<Omit<WatchOptions<S, I>, 'chatId' | 'reducer'>>\n}\n\ninterface Entry<S, I> {\n live: LiveChat<S, I>\n refs: number\n closeTimer: unknown\n}\n\nexport class LiveClient<S, I = unknown> {\n readonly tokens: TokenSource\n /** `fetch` com o token e a regra do 401 (a SDK gerada usa o mesmo). */\n readonly fetch: typeof fetch\n private readonly clock: Clock\n private readonly entries = new Map<string, Entry<S, I>>()\n private readonly lists = new Set<ChatListLive>()\n private readonly api: string\n\n constructor(private readonly o: LiveClientOptions<S, I>) {\n this.clock = o.clock ?? systemClock\n this.tokens = new TokenSource({ token: o.token, getToken: o.getToken, clock: this.clock })\n this.fetch = authedFetch(this.tokens, o.fetch ?? globalThis.fetch.bind(globalThis))\n this.api = `${o.baseUrl.replace(/\\/$/, '')}/v3`\n // o n\u00FAcleo (wasm, peda\u00E7o \u00E0 parte) come\u00E7a a baixar j\u00E1, em paralelo com o REST e a tela\n void loadCore().catch(() => {})\n this.tokens.onRenew((t) => {\n for (const e of this.entries.values()) e.live.tokenRenewed(t)\n })\n }\n\n /** O estado ao vivo do chat. Chame `close()` no handle quando a tela desmontar. */\n watch(chatId: string): LiveChat<S, I> & { release(): void } {\n let e = this.entries.get(chatId)\n if (e) {\n e.refs++\n if (e.closeTimer !== null) {\n this.clock.clearTimeout(e.closeTimer)\n e.closeTimer = null\n }\n } else {\n e = { live: new LiveChat(this.deps(), this.watchOptions(chatId)), refs: 1, closeTimer: null }\n this.entries.set(chatId, e)\n }\n const entry = e\n let released = false\n const release = () => {\n if (released) return\n released = true\n this.release(chatId, entry)\n }\n // um handle por chamada (cada tela solta o seu); tudo o mais \u00E9 o LiveChat compartilhado\n return new Proxy(entry.live, {\n get(target, key) {\n if (key === 'release') return release\n if (key === 'close') return release // fechar um handle = soltar a refer\u00EAncia\n const v = Reflect.get(target, key, target) as unknown\n return typeof v === 'function' ? (v as (...a: unknown[]) => unknown).bind(target) : v\n },\n }) as LiveChat<S, I> & { release(): void }\n }\n\n /**\n * Eventos crus, j\u00E1 sem duplicado/buraco e com a troca de transporte. Termina no `return()`/break.\n * - `after`: come\u00E7a DEPOIS deste seq (retomar de onde parou: todo evento de `after+1` em diante, sem snapshot);\n * sem `after`, come\u00E7a no estado atual (o snapshot do servidor; `onSnapshot(seq)` diz at\u00E9 onde ele cobre).\n * - `onSnapshot(seq)`: o servidor mandou um snapshot em vez dos eventos \u2014 os anteriores a `seq` N\u00C3O v\u00EAm\n * (in\u00EDcio sem `after`, ou resync depois de um buraco que n\u00E3o fechou). Nunca pula em sil\u00EAncio (M46).\n * - `includeRaw`: os eventos trazem o `raw` do provedor.\n * Um socket pr\u00F3prio (n\u00E3o o do `watch()`), pra o cursor ser s\u00F3 dele.\n */\n async *events(chatId: string, o: { after?: number; includeRaw?: boolean; onSnapshot?(seq: number): void } = {}): AsyncGenerator<Envelope, void, undefined> {\n const queue: Envelope[] = []\n let wake: (() => void) | null = null\n const stream = new ChatStream(\n this.deps(),\n {\n ...this.o.stream,\n chatId,\n ...(o.includeRaw ? { includeRaw: true } : {}),\n ...(o.after !== undefined ? { resumeFrom: { cursor: o.after, inboxVersion: -1 } } : {}),\n ...(this.o.strict ? { strict: true } : {}),\n },\n {\n events: (evs) => {\n queue.push(...evs)\n wake?.()\n },\n snapshot: (s) => o.onSnapshot?.(s.seq),\n status: (st) => {\n if (st === 'auth_failed') {\n this.tokens.markRevoked()\n this.o.onAuthRevoked?.()\n }\n },\n debug: (e) => this.o.onDebug?.(chatId, e),\n violation: (v) => this.o.onViolation?.(chatId, v),\n },\n )\n const unRenew = this.tokens.onRenew((t) => stream.tokenRenewed(t))\n try {\n for (;;) {\n while (queue.length) yield queue.shift()!\n await new Promise<void>((r) => (wake = r))\n wake = null\n }\n } finally {\n unRenew?.()\n stream.close()\n }\n }\n\n /** Manda e acompanha s\u00F3 esse run. `result` nunca rejeita por transporte. */\n prompt(chatId: string, content: string | ContentPart[], opts: { mode?: SendMode; attachments?: string[]; messageId?: string; metadata?: Record<string, string> } = {}): RunHandle {\n const h = this.watch(chatId)\n return new RunHandle(h as unknown as LiveChat<unknown, unknown>, content, opts, () => h.release())\n }\n\n /** A lista lateral ao vivo (UserFeed): t\u00EDtulo, estado, esperando o qu\u00EA, n\u00E3o lidas. Filtro por agente aqui. */\n watchList(filter: { agentId?: string } = {}): ChatListLive {\n const d = this.deps()\n const list = new ChatListLive(\n { url: `${this.api.replace(/^http/, 'ws')}/me/feed`, openSocket: d.openSocket, token: d.token, invalidateToken: d.invalidateToken, clock: d.clock, env: d.env },\n filter,\n )\n this.lists.add(list)\n return list\n }\n\n /** Marca como lido at\u00E9 `seq` (vale pra todos os dispositivos do usu\u00E1rio; o feed atualiza o unreadCount). */\n async markRead(chatId: string, seq: number): Promise<void> {\n await this.json(`/chats/${encodeURIComponent(chatId)}/read`, { method: 'POST', body: JSON.stringify({ seq }), headers: { 'Content-Type': 'application/json' } })\n }\n\n /** Fecha tudo agora. */\n close(): void {\n for (const e of this.entries.values()) {\n if (e.closeTimer !== null) this.clock.clearTimeout(e.closeTimer)\n e.live.close()\n }\n this.entries.clear()\n for (const l of this.lists) l.close()\n this.lists.clear()\n }\n\n private release(chatId: string, e: Entry<S, I>): void {\n if (--e.refs > 0) return\n e.closeTimer = this.clock.setTimeout(() => {\n if (e.refs > 0 || this.entries.get(chatId) !== e) return\n e.live.close()\n this.entries.delete(chatId)\n }, this.o.keepAliveMs ?? 300_000)\n }\n\n private watchOptions(chatId: string): WatchOptions<S, I> {\n return {\n ...this.o.stream,\n chatId,\n\n onDebug: (e) => this.o.onDebug?.(chatId, e),\n ...(this.o.strict ? { strict: true } : {}),\n onViolation: (v) => this.o.onViolation?.(chatId, v),\n onAuthFailed: () => {\n this.tokens.markRevoked()\n this.o.onAuthRevoked?.()\n },\n }\n }\n\n private deps(): WatchDeps {\n const wsBase = this.api.replace(/^http/, 'ws')\n const WS = this.o.WebSocket ?? (globalThis as { WebSocket?: new (u: string, p: string[]) => SocketLike }).WebSocket\n if (!WS) throw new Error('SmoothAgent: sem WebSocket neste ambiente \u2014 passe `WebSocket` nas op\u00E7\u00F5es')\n const openSocket: OpenSocket = (url, protocols) => new WS(url, protocols)\n return {\n connectorUrl: (id) => `${wsBase}/chats/${encodeURIComponent(id)}/live`,\n openSocket,\n token: () => this.tokens.get(),\n invalidateToken: () => this.tokens.invalidate(),\n clock: this.clock,\n env: this.o.env ?? browserEnv() ?? serverEnv,\n eventsRange: (id, from, to) => this.json(`/chats/${encodeURIComponent(id)}/events/range?after=${from - 1}&until=${to}`),\n snapshot: (id) => this.json<ChatSnapshot>(`/chats/${encodeURIComponent(id)}/snapshot`),\n probeAccess: async (id) => {\n const res = await this.fetch(`${this.api}/chats/${encodeURIComponent(id)}`, { headers: { Accept: 'application/json' } })\n if (res.status === 401) return 'unauthorized'\n if (res.status === 403 || res.status === 404) return 'forbidden' // 404 = n\u00E3o existe OU n\u00E3o \u00E9 seu (control n\u00E3o vaza exist\u00EAncia)\n return 'ok'\n },\n history: async (id, q) => fromControlPage(id, await this.json<ControlHistoryPage>(`/chats/${encodeURIComponent(id)}/history?${historyQs(q)}`)),\n postMessage: (id, m) => this.postMessage(id, m),\n }\n }\n\n /**\n * O caminho dur\u00E1vel do `send` (REST `SendMessage`): a mesma fila fria do ChatLog, deduplicada pelo\n * `clientMessageId` (= o messageId do socket) e pela Idempotency-Key (a mesma). Falha passageira: repete com\n * espera (`untilStored`) e, esgotado, rejeita; recusa do servidor = `rejected` com o c\u00F3digo do \u00A76.\n */\n private async postMessage(id: string, m: { clientMessageId: string; content: ContentPart[]; mode: SendMode; metadata?: Record<string, string> }): Promise<SubmitResult> {\n const call = () =>\n this.json<{ messageId: string; status: 'pending' | 'duplicate'; inboxVersion?: number }>(`/chats/${encodeURIComponent(id)}/messages`, {\n method: 'POST',\n body: JSON.stringify(m),\n headers: { 'Content-Type': 'application/json', 'Idempotency-Key': m.clientMessageId },\n })\n try {\n const r = await untilStored(call, { clock: this.clock, isTransient: (e) => restTransient(e) })\n const v = r.inboxVersion ?? 0\n return r.status === 'duplicate' ? { status: 'duplicate', messageId: m.clientMessageId, inboxVersion: v } : { status: 'accepted', messageId: m.clientMessageId, inboxVersion: v }\n } catch (e) {\n if (restTransient(e)) throw e\n const err = e as { code?: string; message?: string }\n const code = (KNOWN_ERROR_CODES as readonly string[]).includes(err.code ?? '') ? (err.code as ErrorCode) : 'internal'\n return { status: 'rejected', code, message: err.message ?? code }\n }\n }\n\n private async json<T>(path: string, init?: RequestInit): Promise<T> {\n const res = await this.fetch(`${this.api}${path}`, { ...init, headers: { Accept: 'application/json', ...(init?.headers ?? {}) } })\n if (!res.ok) {\n const body = (await res.json().catch(() => ({}))) as { error?: { code?: string; message?: string } }\n throw Object.assign(new Error(body.error?.message ?? `HTTP ${res.status}`), { code: body.error?.code, status: res.status })\n }\n return (await res.json()) as T\n }\n}\n\n/**\n * A p\u00E1gina do `GET /v3/chats/{id}/history` do contrato (tipo GERADO): cada entrada \u00E9 o EVENTO que fechou\n * um item (`entry.event`, um Events.Event) + o `seq` dele. Vira envelope do log e passa pelo reducer do\n * contrato como qualquer evento (`item.completed` traz o item em `data.item`). Ids de evento v\u00EAm em string.\n */\nexport function fromControlPage(_chatId: string, p: ControlHistoryPage): HistoryPage {\n const num = (v: string | number | null | undefined) => (v === null || v === undefined ? null : Number(v))\n return {\n items: p.data.map((entry) => ({ ...(entry.event as unknown as Envelope), seq: entry.seq })),\n firstEventId: num(p.firstEventId),\n lastEventId: num(p.lastEventId),\n hasBefore: p.hasBefore,\n hasAfter: p.hasAfter,\n ...(p.anchorIndex !== undefined ? { anchorIndex: p.anchorIndex } : {}),\n headEventId: num(p.headEventId) ?? 0,\n ...(p.liveFromEventId !== undefined && p.liveFromEventId !== null ? { liveFromEventId: Number(p.liveFromEventId) } : {}),\n }\n}\n\nfunction historyQs(q: HistoryQuery): string {\n const p = new URLSearchParams()\n if (q.limit) p.set('limit', String(q.limit))\n if ('before' in q) p.set('before', String(q.before))\n else if ('after' in q) p.set('after', String(q.after))\n else if ('around' in q) p.set('around', 'messageId' in q.around ? q.around.messageId : String(q.around.eventId))\n else p.set('anchor', 'end')\n return p.toString()\n}\n\n/** Navegador: online/offline, visibilidade e foco viram wakeups (T3 wakeups). */\nfunction browserEnv(): LiveEnv | null {\n const g = globalThis as { document?: Document; navigator?: Navigator; addEventListener?: typeof addEventListener; removeEventListener?: typeof removeEventListener }\n if (!g.document || !g.addEventListener) return null\n const doc = g.document\n return {\n online: () => g.navigator?.onLine !== false,\n visible: () => doc.visibilityState !== 'hidden',\n onWake: (cb) => {\n let hiddenAt: number | null = null\n const onOnline = () => cb('online')\n const onFocus = () => cb('focus')\n const onVis = () => {\n if (doc.visibilityState === 'hidden') hiddenAt = Date.now()\n else {\n cb('visible', hiddenAt === null ? 0 : Date.now() - hiddenAt)\n hiddenAt = null\n }\n }\n g.addEventListener!('online', onOnline)\n g.addEventListener!('focus', onFocus)\n doc.addEventListener('visibilitychange', onVis)\n return () => {\n g.removeEventListener!('online', onOnline)\n g.removeEventListener!('focus', onFocus)\n doc.removeEventListener('visibilitychange', onVis)\n }\n },\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["ptr"]
7
- }