@proompteng/temporal-bun-sdk 0.1.0

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 (448) hide show
  1. package/README.md +387 -0
  2. package/dist/bin/start-worker.js +3 -0
  3. package/dist/bin/temporal-bun.js +3 -0
  4. package/dist/src/activities/index.d.ts +6 -0
  5. package/dist/src/activities/index.d.ts.map +1 -0
  6. package/dist/src/activities/index.js +5 -0
  7. package/dist/src/activities/index.js.map +1 -0
  8. package/dist/src/activities/lifecycle.d.ts +48 -0
  9. package/dist/src/activities/lifecycle.d.ts.map +1 -0
  10. package/dist/src/activities/lifecycle.js +306 -0
  11. package/dist/src/activities/lifecycle.js.map +1 -0
  12. package/dist/src/bin/replay-command.d.ts +104 -0
  13. package/dist/src/bin/replay-command.d.ts.map +1 -0
  14. package/dist/src/bin/replay-command.js +582 -0
  15. package/dist/src/bin/replay-command.js.map +1 -0
  16. package/dist/src/bin/start-worker.d.ts +3 -0
  17. package/dist/src/bin/start-worker.d.ts.map +1 -0
  18. package/dist/src/bin/start-worker.js +29 -0
  19. package/dist/src/bin/start-worker.js.map +1 -0
  20. package/dist/src/bin/temporal-bun.d.ts +25 -0
  21. package/dist/src/bin/temporal-bun.d.ts.map +1 -0
  22. package/dist/src/bin/temporal-bun.js +427 -0
  23. package/dist/src/bin/temporal-bun.js.map +1 -0
  24. package/dist/src/build_id_preflight.d.ts +7 -0
  25. package/dist/src/build_id_preflight.d.ts.map +1 -0
  26. package/dist/src/build_id_preflight.js +123 -0
  27. package/dist/src/build_id_preflight.js.map +1 -0
  28. package/dist/src/client/headers.d.ts +4 -0
  29. package/dist/src/client/headers.d.ts.map +1 -0
  30. package/dist/src/client/headers.js +79 -0
  31. package/dist/src/client/headers.js.map +1 -0
  32. package/dist/src/client/index.d.ts +2 -0
  33. package/dist/src/client/index.d.ts.map +1 -0
  34. package/dist/src/client/index.js +2 -0
  35. package/dist/src/client/index.js.map +1 -0
  36. package/dist/src/client/interceptors.d.ts +17 -0
  37. package/dist/src/client/interceptors.d.ts.map +1 -0
  38. package/dist/src/client/interceptors.js +71 -0
  39. package/dist/src/client/interceptors.js.map +1 -0
  40. package/dist/src/client/layer.d.ts +10 -0
  41. package/dist/src/client/layer.d.ts.map +1 -0
  42. package/dist/src/client/layer.js +7 -0
  43. package/dist/src/client/layer.js.map +1 -0
  44. package/dist/src/client/retries.d.ts +13 -0
  45. package/dist/src/client/retries.d.ts.map +1 -0
  46. package/dist/src/client/retries.js +51 -0
  47. package/dist/src/client/retries.js.map +1 -0
  48. package/dist/src/client/serialization.d.ts +48 -0
  49. package/dist/src/client/serialization.d.ts.map +1 -0
  50. package/dist/src/client/serialization.js +310 -0
  51. package/dist/src/client/serialization.js.map +1 -0
  52. package/dist/src/client/serialization.test.d.ts +2 -0
  53. package/dist/src/client/serialization.test.d.ts.map +1 -0
  54. package/dist/src/client/serialization.test.js +251 -0
  55. package/dist/src/client/serialization.test.js.map +1 -0
  56. package/dist/src/client/transport.d.ts +12 -0
  57. package/dist/src/client/transport.d.ts.map +1 -0
  58. package/dist/src/client/transport.js +36 -0
  59. package/dist/src/client/transport.js.map +1 -0
  60. package/dist/src/client/types.d.ts +51 -0
  61. package/dist/src/client/types.d.ts.map +1 -0
  62. package/dist/src/client/types.js +7 -0
  63. package/dist/src/client/types.js.map +1 -0
  64. package/dist/src/client.d.ts +92 -0
  65. package/dist/src/client.d.ts.map +1 -0
  66. package/dist/src/client.js +666 -0
  67. package/dist/src/client.js.map +1 -0
  68. package/dist/src/common/duration.d.ts +4 -0
  69. package/dist/src/common/duration.d.ts.map +1 -0
  70. package/dist/src/common/duration.js +14 -0
  71. package/dist/src/common/duration.js.map +1 -0
  72. package/dist/src/common/index.d.ts +2 -0
  73. package/dist/src/common/index.d.ts.map +1 -0
  74. package/dist/src/common/index.js +2 -0
  75. package/dist/src/common/index.js.map +1 -0
  76. package/dist/src/common/payloads/converter.d.ts +16 -0
  77. package/dist/src/common/payloads/converter.d.ts.map +1 -0
  78. package/dist/src/common/payloads/converter.js +33 -0
  79. package/dist/src/common/payloads/converter.js.map +1 -0
  80. package/dist/src/common/payloads/failure.d.ts +7 -0
  81. package/dist/src/common/payloads/failure.d.ts.map +1 -0
  82. package/dist/src/common/payloads/failure.js +53 -0
  83. package/dist/src/common/payloads/failure.js.map +1 -0
  84. package/dist/src/common/payloads/index.d.ts +4 -0
  85. package/dist/src/common/payloads/index.d.ts.map +1 -0
  86. package/dist/src/common/payloads/index.js +4 -0
  87. package/dist/src/common/payloads/index.js.map +1 -0
  88. package/dist/src/common/payloads/json-codec.d.ts +16 -0
  89. package/dist/src/common/payloads/json-codec.d.ts.map +1 -0
  90. package/dist/src/common/payloads/json-codec.js +185 -0
  91. package/dist/src/common/payloads/json-codec.js.map +1 -0
  92. package/dist/src/common/sleep.d.ts +2 -0
  93. package/dist/src/common/sleep.d.ts.map +1 -0
  94. package/dist/src/common/sleep.js +3 -0
  95. package/dist/src/common/sleep.js.map +1 -0
  96. package/dist/src/config.d.ts +115 -0
  97. package/dist/src/config.d.ts.map +1 -0
  98. package/dist/src/config.js +505 -0
  99. package/dist/src/config.js.map +1 -0
  100. package/dist/src/core-bridge/client.d.ts +36 -0
  101. package/dist/src/core-bridge/client.d.ts.map +1 -0
  102. package/dist/src/core-bridge/client.js +111 -0
  103. package/dist/src/core-bridge/client.js.map +1 -0
  104. package/dist/src/core-bridge/index.d.ts +4 -0
  105. package/dist/src/core-bridge/index.d.ts.map +1 -0
  106. package/dist/src/core-bridge/index.js +4 -0
  107. package/dist/src/core-bridge/index.js.map +1 -0
  108. package/dist/src/core-bridge/runtime.d.ts +20 -0
  109. package/dist/src/core-bridge/runtime.d.ts.map +1 -0
  110. package/dist/src/core-bridge/runtime.js +62 -0
  111. package/dist/src/core-bridge/runtime.js.map +1 -0
  112. package/dist/src/core-bridge/runtime.test.d.ts +2 -0
  113. package/dist/src/core-bridge/runtime.test.d.ts.map +1 -0
  114. package/dist/src/core-bridge/runtime.test.js +68 -0
  115. package/dist/src/core-bridge/runtime.test.js.map +1 -0
  116. package/dist/src/index.d.ts +11 -0
  117. package/dist/src/index.d.ts.map +1 -0
  118. package/dist/src/index.js +7 -0
  119. package/dist/src/index.js.map +1 -0
  120. package/dist/src/internal/core-bridge/native.d.ts +176 -0
  121. package/dist/src/internal/core-bridge/native.d.ts.map +1 -0
  122. package/dist/src/internal/core-bridge/native.js +1208 -0
  123. package/dist/src/internal/core-bridge/native.js.map +1 -0
  124. package/dist/src/observability/index.d.ts +21 -0
  125. package/dist/src/observability/index.d.ts.map +1 -0
  126. package/dist/src/observability/index.js +19 -0
  127. package/dist/src/observability/index.js.map +1 -0
  128. package/dist/src/observability/logger.d.ts +28 -0
  129. package/dist/src/observability/logger.d.ts.map +1 -0
  130. package/dist/src/observability/logger.js +53 -0
  131. package/dist/src/observability/logger.js.map +1 -0
  132. package/dist/src/observability/metrics.d.ts +28 -0
  133. package/dist/src/observability/metrics.d.ts.map +1 -0
  134. package/dist/src/observability/metrics.js +355 -0
  135. package/dist/src/observability/metrics.js.map +1 -0
  136. package/dist/src/proto/google/api/annotations_pb.d.ts +14 -0
  137. package/dist/src/proto/google/api/annotations_pb.d.ts.map +1 -0
  138. package/dist/src/proto/google/api/annotations_pb.js +27 -0
  139. package/dist/src/proto/google/api/annotations_pb.js.map +1 -0
  140. package/dist/src/proto/google/api/http_pb.d.ts +441 -0
  141. package/dist/src/proto/google/api/http_pb.d.ts.map +1 -0
  142. package/dist/src/proto/google/api/http_pb.js +34 -0
  143. package/dist/src/proto/google/api/http_pb.js.map +1 -0
  144. package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts +67 -0
  145. package/dist/src/proto/temporal/api/activity/v1/message_pb.d.ts.map +1 -0
  146. package/dist/src/proto/temporal/api/activity/v1/message_pb.js +17 -0
  147. package/dist/src/proto/temporal/api/activity/v1/message_pb.js.map +1 -0
  148. package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts +464 -0
  149. package/dist/src/proto/temporal/api/batch/v1/message_pb.d.ts.map +1 -0
  150. package/dist/src/proto/temporal/api/batch/v1/message_pb.js +71 -0
  151. package/dist/src/proto/temporal/api/batch/v1/message_pb.js.map +1 -0
  152. package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts +796 -0
  153. package/dist/src/proto/temporal/api/command/v1/message_pb.d.ts.map +1 -0
  154. package/dist/src/proto/temporal/api/command/v1/message_pb.js +106 -0
  155. package/dist/src/proto/temporal/api/command/v1/message_pb.js.map +1 -0
  156. package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts +751 -0
  157. package/dist/src/proto/temporal/api/common/v1/message_pb.d.ts.map +1 -0
  158. package/dist/src/proto/temporal/api/common/v1/message_pb.js +133 -0
  159. package/dist/src/proto/temporal/api/common/v1/message_pb.js.map +1 -0
  160. package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts +639 -0
  161. package/dist/src/proto/temporal/api/deployment/v1/message_pb.d.ts.map +1 -0
  162. package/dist/src/proto/temporal/api/deployment/v1/message_pb.js +83 -0
  163. package/dist/src/proto/temporal/api/deployment/v1/message_pb.js.map +1 -0
  164. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.d.ts +80 -0
  165. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.d.ts.map +1 -0
  166. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.js +85 -0
  167. package/dist/src/proto/temporal/api/enums/v1/batch_operation_pb.js.map +1 -0
  168. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.d.ts +89 -0
  169. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.d.ts.map +1 -0
  170. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.js +93 -0
  171. package/dist/src/proto/temporal/api/enums/v1/command_type_pb.js.map +1 -0
  172. package/dist/src/proto/temporal/api/enums/v1/common_pb.d.ts +314 -0
  173. package/dist/src/proto/temporal/api/enums/v1/common_pb.d.ts.map +1 -0
  174. package/dist/src/proto/temporal/api/enums/v1/common_pb.js +326 -0
  175. package/dist/src/proto/temporal/api/enums/v1/common_pb.js.map +1 -0
  176. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts +186 -0
  177. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.d.ts.map +1 -0
  178. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js +193 -0
  179. package/dist/src/proto/temporal/api/enums/v1/deployment_pb.js.map +1 -0
  180. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts +407 -0
  181. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.d.ts.map +1 -0
  182. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js +411 -0
  183. package/dist/src/proto/temporal/api/enums/v1/event_type_pb.js.map +1 -0
  184. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts +371 -0
  185. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.d.ts.map +1 -0
  186. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js +380 -0
  187. package/dist/src/proto/temporal/api/enums/v1/failed_cause_pb.js.map +1 -0
  188. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.d.ts +73 -0
  189. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.d.ts.map +1 -0
  190. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.js +79 -0
  191. package/dist/src/proto/temporal/api/enums/v1/namespace_pb.js.map +1 -0
  192. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts +35 -0
  193. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.d.ts.map +1 -0
  194. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js +39 -0
  195. package/dist/src/proto/temporal/api/enums/v1/nexus_pb.js.map +1 -0
  196. package/dist/src/proto/temporal/api/enums/v1/query_pb.d.ts +58 -0
  197. package/dist/src/proto/temporal/api/enums/v1/query_pb.d.ts.map +1 -0
  198. package/dist/src/proto/temporal/api/enums/v1/query_pb.js +63 -0
  199. package/dist/src/proto/temporal/api/enums/v1/query_pb.js.map +1 -0
  200. package/dist/src/proto/temporal/api/enums/v1/reset_pb.d.ts +108 -0
  201. package/dist/src/proto/temporal/api/enums/v1/reset_pb.d.ts.map +1 -0
  202. package/dist/src/proto/temporal/api/enums/v1/reset_pb.js +114 -0
  203. package/dist/src/proto/temporal/api/enums/v1/reset_pb.js.map +1 -0
  204. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.d.ts +67 -0
  205. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.d.ts.map +1 -0
  206. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.js +71 -0
  207. package/dist/src/proto/temporal/api/enums/v1/schedule_pb.js.map +1 -0
  208. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts +249 -0
  209. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.d.ts.map +1 -0
  210. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js +259 -0
  211. package/dist/src/proto/temporal/api/enums/v1/task_queue_pb.js.map +1 -0
  212. package/dist/src/proto/temporal/api/enums/v1/update_pb.d.ts +78 -0
  213. package/dist/src/proto/temporal/api/enums/v1/update_pb.d.ts.map +1 -0
  214. package/dist/src/proto/temporal/api/enums/v1/update_pb.js +83 -0
  215. package/dist/src/proto/temporal/api/enums/v1/update_pb.js.map +1 -0
  216. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts +408 -0
  217. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.d.ts.map +1 -0
  218. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js +422 -0
  219. package/dist/src/proto/temporal/api/enums/v1/workflow_pb.js.map +1 -0
  220. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts +331 -0
  221. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.d.ts.map +1 -0
  222. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js +104 -0
  223. package/dist/src/proto/temporal/api/errordetails/v1/message_pb.js.map +1 -0
  224. package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts +39 -0
  225. package/dist/src/proto/temporal/api/export/v1/message_pb.d.ts.map +1 -0
  226. package/dist/src/proto/temporal/api/export/v1/message_pb.js +20 -0
  227. package/dist/src/proto/temporal/api/export/v1/message_pb.js.map +1 -0
  228. package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts +381 -0
  229. package/dist/src/proto/temporal/api/failure/v1/message_pb.d.ts.map +1 -0
  230. package/dist/src/proto/temporal/api/failure/v1/message_pb.js +74 -0
  231. package/dist/src/proto/temporal/api/failure/v1/message_pb.js.map +1 -0
  232. package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts +73 -0
  233. package/dist/src/proto/temporal/api/filter/v1/message_pb.d.ts.map +1 -0
  234. package/dist/src/proto/temporal/api/filter/v1/message_pb.js +31 -0
  235. package/dist/src/proto/temporal/api/filter/v1/message_pb.js.map +1 -0
  236. package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts +3136 -0
  237. package/dist/src/proto/temporal/api/history/v1/message_pb.d.ts.map +1 -0
  238. package/dist/src/proto/temporal/api/history/v1/message_pb.js +317 -0
  239. package/dist/src/proto/temporal/api/history/v1/message_pb.js.map +1 -0
  240. package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts +242 -0
  241. package/dist/src/proto/temporal/api/namespace/v1/message_pb.d.ts.map +1 -0
  242. package/dist/src/proto/temporal/api/namespace/v1/message_pb.js +46 -0
  243. package/dist/src/proto/temporal/api/namespace/v1/message_pb.js.map +1 -0
  244. package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts +549 -0
  245. package/dist/src/proto/temporal/api/nexus/v1/message_pb.d.ts.map +1 -0
  246. package/dist/src/proto/temporal/api/nexus/v1/message_pb.js +97 -0
  247. package/dist/src/proto/temporal/api/nexus/v1/message_pb.js.map +1 -0
  248. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts +499 -0
  249. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.d.ts.map +1 -0
  250. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js +137 -0
  251. package/dist/src/proto/temporal/api/operatorservice/v1/request_response_pb.js.map +1 -0
  252. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.d.ts +153 -0
  253. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.d.ts.map +1 -0
  254. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.js +22 -0
  255. package/dist/src/proto/temporal/api/operatorservice/v1/service_pb.js.map +1 -0
  256. package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts +64 -0
  257. package/dist/src/proto/temporal/api/protocol/v1/message_pb.d.ts.map +1 -0
  258. package/dist/src/proto/temporal/api/protocol/v1/message_pb.js +15 -0
  259. package/dist/src/proto/temporal/api/protocol/v1/message_pb.js.map +1 -0
  260. package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts +96 -0
  261. package/dist/src/proto/temporal/api/query/v1/message_pb.d.ts.map +1 -0
  262. package/dist/src/proto/temporal/api/query/v1/message_pb.js +28 -0
  263. package/dist/src/proto/temporal/api/query/v1/message_pb.js.map +1 -0
  264. package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts +67 -0
  265. package/dist/src/proto/temporal/api/replication/v1/message_pb.d.ts.map +1 -0
  266. package/dist/src/proto/temporal/api/replication/v1/message_pb.js +26 -0
  267. package/dist/src/proto/temporal/api/replication/v1/message_pb.js.map +1 -0
  268. package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts +172 -0
  269. package/dist/src/proto/temporal/api/rules/v1/message_pb.d.ts.map +1 -0
  270. package/dist/src/proto/temporal/api/rules/v1/message_pb.js +35 -0
  271. package/dist/src/proto/temporal/api/rules/v1/message_pb.js.map +1 -0
  272. package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts +779 -0
  273. package/dist/src/proto/temporal/api/schedule/v1/message_pb.d.ts.map +1 -0
  274. package/dist/src/proto/temporal/api/schedule/v1/message_pb.js +95 -0
  275. package/dist/src/proto/temporal/api/schedule/v1/message_pb.js.map +1 -0
  276. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts +157 -0
  277. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.d.ts.map +1 -0
  278. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.js +34 -0
  279. package/dist/src/proto/temporal/api/sdk/v1/enhanced_stack_trace_pb.js.map +1 -0
  280. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.d.ts +71 -0
  281. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.d.ts.map +1 -0
  282. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.js +14 -0
  283. package/dist/src/proto/temporal/api/sdk/v1/task_complete_metadata_pb.js.map +1 -0
  284. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts +37 -0
  285. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.d.ts.map +1 -0
  286. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.js +15 -0
  287. package/dist/src/proto/temporal/api/sdk/v1/user_metadata_pb.js.map +1 -0
  288. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.d.ts +84 -0
  289. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.d.ts.map +1 -0
  290. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.js +24 -0
  291. package/dist/src/proto/temporal/api/sdk/v1/worker_config_pb.js.map +1 -0
  292. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts +99 -0
  293. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.d.ts.map +1 -0
  294. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.js +24 -0
  295. package/dist/src/proto/temporal/api/sdk/v1/workflow_metadata_pb.js.map +1 -0
  296. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts +757 -0
  297. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.d.ts.map +1 -0
  298. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js +138 -0
  299. package/dist/src/proto/temporal/api/taskqueue/v1/message_pb.js.map +1 -0
  300. package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts +230 -0
  301. package/dist/src/proto/temporal/api/update/v1/message_pb.d.ts.map +1 -0
  302. package/dist/src/proto/temporal/api/update/v1/message_pb.js +57 -0
  303. package/dist/src/proto/temporal/api/update/v1/message_pb.js.map +1 -0
  304. package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts +85 -0
  305. package/dist/src/proto/temporal/api/version/v1/message_pb.d.ts.map +1 -0
  306. package/dist/src/proto/temporal/api/version/v1/message_pb.js +26 -0
  307. package/dist/src/proto/temporal/api/version/v1/message_pb.js.map +1 -0
  308. package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts +311 -0
  309. package/dist/src/proto/temporal/api/worker/v1/message_pb.d.ts.map +1 -0
  310. package/dist/src/proto/temporal/api/worker/v1/message_pb.js +42 -0
  311. package/dist/src/proto/temporal/api/worker/v1/message_pb.js.map +1 -0
  312. package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts +1500 -0
  313. package/dist/src/proto/temporal/api/workflow/v1/message_pb.d.ts.map +1 -0
  314. package/dist/src/proto/temporal/api/workflow/v1/message_pb.js +183 -0
  315. package/dist/src/proto/temporal/api/workflow/v1/message_pb.js.map +1 -0
  316. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts +6967 -0
  317. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.d.ts.map +1 -0
  318. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js +1073 -0
  319. package/dist/src/proto/temporal/api/workflowservice/v1/request_response_pb.js.map +1 -0
  320. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts +1305 -0
  321. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.d.ts.map +1 -0
  322. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js +27 -0
  323. package/dist/src/proto/temporal/api/workflowservice/v1/service_pb.js.map +1 -0
  324. package/dist/src/runtime/cli-layer.d.ts +12 -0
  325. package/dist/src/runtime/cli-layer.d.ts.map +1 -0
  326. package/dist/src/runtime/cli-layer.js +19 -0
  327. package/dist/src/runtime/cli-layer.js.map +1 -0
  328. package/dist/src/runtime/config-layer.d.ts +9 -0
  329. package/dist/src/runtime/config-layer.d.ts.map +1 -0
  330. package/dist/src/runtime/config-layer.js +15 -0
  331. package/dist/src/runtime/config-layer.js.map +1 -0
  332. package/dist/src/runtime/effect-layers.d.ts +518 -0
  333. package/dist/src/runtime/effect-layers.d.ts.map +1 -0
  334. package/dist/src/runtime/effect-layers.js +68 -0
  335. package/dist/src/runtime/effect-layers.js.map +1 -0
  336. package/dist/src/runtime/worker-app.d.ts +14 -0
  337. package/dist/src/runtime/worker-app.d.ts.map +1 -0
  338. package/dist/src/runtime/worker-app.js +58 -0
  339. package/dist/src/runtime/worker-app.js.map +1 -0
  340. package/dist/src/telemetry/runtime.d.ts +5 -0
  341. package/dist/src/telemetry/runtime.d.ts.map +1 -0
  342. package/dist/src/telemetry/runtime.js +94 -0
  343. package/dist/src/telemetry/runtime.js.map +1 -0
  344. package/dist/src/worker/activity-context.d.ts +30 -0
  345. package/dist/src/worker/activity-context.d.ts.map +1 -0
  346. package/dist/src/worker/activity-context.js +9 -0
  347. package/dist/src/worker/activity-context.js.map +1 -0
  348. package/dist/src/worker/build-id.d.ts +20 -0
  349. package/dist/src/worker/build-id.d.ts.map +1 -0
  350. package/dist/src/worker/build-id.js +98 -0
  351. package/dist/src/worker/build-id.js.map +1 -0
  352. package/dist/src/worker/concurrency.d.ts +31 -0
  353. package/dist/src/worker/concurrency.d.ts.map +1 -0
  354. package/dist/src/worker/concurrency.js +129 -0
  355. package/dist/src/worker/concurrency.js.map +1 -0
  356. package/dist/src/worker/defaults.d.ts +9 -0
  357. package/dist/src/worker/defaults.d.ts.map +1 -0
  358. package/dist/src/worker/defaults.js +53 -0
  359. package/dist/src/worker/defaults.js.map +1 -0
  360. package/dist/src/worker/index.d.ts +7 -0
  361. package/dist/src/worker/index.d.ts.map +1 -0
  362. package/dist/src/worker/index.js +4 -0
  363. package/dist/src/worker/index.js.map +1 -0
  364. package/dist/src/worker/layer.d.ts +19 -0
  365. package/dist/src/worker/layer.d.ts.map +1 -0
  366. package/dist/src/worker/layer.js +71 -0
  367. package/dist/src/worker/layer.js.map +1 -0
  368. package/dist/src/worker/runtime.d.ts +59 -0
  369. package/dist/src/worker/runtime.d.ts.map +1 -0
  370. package/dist/src/worker/runtime.js +1415 -0
  371. package/dist/src/worker/runtime.js.map +1 -0
  372. package/dist/src/worker/service.d.ts +19 -0
  373. package/dist/src/worker/service.d.ts.map +1 -0
  374. package/dist/src/worker/service.js +14 -0
  375. package/dist/src/worker/service.js.map +1 -0
  376. package/dist/src/worker/sticky-cache.d.ts +41 -0
  377. package/dist/src/worker/sticky-cache.d.ts.map +1 -0
  378. package/dist/src/worker/sticky-cache.js +127 -0
  379. package/dist/src/worker/sticky-cache.js.map +1 -0
  380. package/dist/src/worker.d.ts +30 -0
  381. package/dist/src/worker.d.ts.map +1 -0
  382. package/dist/src/worker.js +82 -0
  383. package/dist/src/worker.js.map +1 -0
  384. package/dist/src/workflow/commands.d.ts +84 -0
  385. package/dist/src/workflow/commands.d.ts.map +1 -0
  386. package/dist/src/workflow/commands.js +159 -0
  387. package/dist/src/workflow/commands.js.map +1 -0
  388. package/dist/src/workflow/context.d.ts +119 -0
  389. package/dist/src/workflow/context.d.ts.map +1 -0
  390. package/dist/src/workflow/context.js +197 -0
  391. package/dist/src/workflow/context.js.map +1 -0
  392. package/dist/src/workflow/definition.d.ts +15 -0
  393. package/dist/src/workflow/definition.d.ts.map +1 -0
  394. package/dist/src/workflow/definition.js +19 -0
  395. package/dist/src/workflow/definition.js.map +1 -0
  396. package/dist/src/workflow/determinism.d.ts +54 -0
  397. package/dist/src/workflow/determinism.d.ts.map +1 -0
  398. package/dist/src/workflow/determinism.js +147 -0
  399. package/dist/src/workflow/determinism.js.map +1 -0
  400. package/dist/src/workflow/errors.d.ts +37 -0
  401. package/dist/src/workflow/errors.d.ts.map +1 -0
  402. package/dist/src/workflow/errors.js +35 -0
  403. package/dist/src/workflow/errors.js.map +1 -0
  404. package/dist/src/workflow/executor.d.ts +35 -0
  405. package/dist/src/workflow/executor.d.ts.map +1 -0
  406. package/dist/src/workflow/executor.js +178 -0
  407. package/dist/src/workflow/executor.js.map +1 -0
  408. package/dist/src/workflow/index.d.ts +8 -0
  409. package/dist/src/workflow/index.d.ts.map +1 -0
  410. package/dist/src/workflow/index.js +8 -0
  411. package/dist/src/workflow/index.js.map +1 -0
  412. package/dist/src/workflow/registry.d.ts +9 -0
  413. package/dist/src/workflow/registry.d.ts.map +1 -0
  414. package/dist/src/workflow/registry.js +51 -0
  415. package/dist/src/workflow/registry.js.map +1 -0
  416. package/dist/src/workflow/replay.d.ts +87 -0
  417. package/dist/src/workflow/replay.d.ts.map +1 -0
  418. package/dist/src/workflow/replay.js +759 -0
  419. package/dist/src/workflow/replay.js.map +1 -0
  420. package/dist/src/workflow/runtime/bootstrap.d.ts +15 -0
  421. package/dist/src/workflow/runtime/bootstrap.d.ts.map +1 -0
  422. package/dist/src/workflow/runtime/bootstrap.js +124 -0
  423. package/dist/src/workflow/runtime/bootstrap.js.map +1 -0
  424. package/dist/src/workflow/runtime/engine.d.ts +21 -0
  425. package/dist/src/workflow/runtime/engine.d.ts.map +1 -0
  426. package/dist/src/workflow/runtime/engine.js +73 -0
  427. package/dist/src/workflow/runtime/engine.js.map +1 -0
  428. package/dist/src/workflow/runtime/environment.d.ts +29 -0
  429. package/dist/src/workflow/runtime/environment.d.ts.map +1 -0
  430. package/dist/src/workflow/runtime/environment.js +298 -0
  431. package/dist/src/workflow/runtime/environment.js.map +1 -0
  432. package/dist/src/workflow/runtime/index.d.ts +7 -0
  433. package/dist/src/workflow/runtime/index.d.ts.map +1 -0
  434. package/dist/src/workflow/runtime/index.js +4 -0
  435. package/dist/src/workflow/runtime/index.js.map +1 -0
  436. package/dist/src/workflow/runtime/info.d.ts +5 -0
  437. package/dist/src/workflow/runtime/info.d.ts.map +1 -0
  438. package/dist/src/workflow/runtime/info.js +22 -0
  439. package/dist/src/workflow/runtime/info.js.map +1 -0
  440. package/dist/src/workflow/runtime/replay.d.ts +26 -0
  441. package/dist/src/workflow/runtime/replay.d.ts.map +1 -0
  442. package/dist/src/workflow/runtime/replay.js +254 -0
  443. package/dist/src/workflow/runtime/replay.js.map +1 -0
  444. package/dist/src/workflows/index.d.ts +3 -0
  445. package/dist/src/workflows/index.d.ts.map +1 -0
  446. package/dist/src/workflows/index.js +15 -0
  447. package/dist/src/workflows/index.js.map +1 -0
  448. package/package.json +74 -0
@@ -0,0 +1,1208 @@
1
+ import { dlopen, FFIType, JSCallback, ptr, toArrayBuffer } from 'bun:ffi';
2
+ import { existsSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
6
+ const packageRoot = resolvePackageRoot();
7
+ const distNativeDir = join(packageRoot, 'dist', 'native');
8
+ const zigStageLibDir = join(packageRoot, 'bruke', 'zig-out', 'lib');
9
+ const UNKNOWN_NATIVE_ERROR_CODE = 2;
10
+ export class NativeBridgeError extends Error {
11
+ code;
12
+ details;
13
+ raw;
14
+ constructor(input) {
15
+ const payload = typeof input === 'string'
16
+ ? { code: UNKNOWN_NATIVE_ERROR_CODE, message: input, raw: input }
17
+ : {
18
+ code: input.code ?? UNKNOWN_NATIVE_ERROR_CODE,
19
+ message: input.message ?? 'Unknown native error',
20
+ details: input.details,
21
+ raw: input.raw ?? input.message,
22
+ };
23
+ const message = payload.message ?? 'Unknown native error';
24
+ super(message);
25
+ this.name = 'NativeBridgeError';
26
+ this.code = payload.code;
27
+ this.details = payload.details;
28
+ this.raw = payload.raw ?? message;
29
+ Object.setPrototypeOf(this, new.target.prototype);
30
+ }
31
+ }
32
+ const nativeLogLevels = ['trace', 'debug', 'info', 'warn', 'error'];
33
+ const utf8Decoder = new TextDecoder('utf-8');
34
+ const runtimeLoggerState = new Map();
35
+ const runtimeTelemetryState = new Map();
36
+ const byteArrayMetricsState = {
37
+ totalAllocations: 0,
38
+ totalFrees: 0,
39
+ activeBuffers: 0,
40
+ doubleFreePreventions: 0,
41
+ };
42
+ const byteArrayActivePointers = new Set();
43
+ const decodeUtf8 = (pointer, length) => {
44
+ if (!pointer || length === 0)
45
+ return '';
46
+ return utf8Decoder.decode(new Uint8Array(toArrayBuffer(pointer, length)));
47
+ };
48
+ const pointerFromBuffer = (buffer) => {
49
+ if (!buffer || buffer.length === 0) {
50
+ return 0;
51
+ }
52
+ return ptr(buffer);
53
+ };
54
+ const mapLogLevel = (levelIndex) => {
55
+ const value = nativeLogLevels[levelIndex];
56
+ return value ?? 'info';
57
+ };
58
+ const parseFields = (json) => {
59
+ if (!json || json.length === 0) {
60
+ return undefined;
61
+ }
62
+ try {
63
+ return JSON.parse(json);
64
+ }
65
+ catch {
66
+ return undefined;
67
+ }
68
+ };
69
+ const detachLoggerOrThrow = (runtime) => {
70
+ const status = Number(temporal_bun_runtime_set_logger(runtime.handle, 0));
71
+ if (status !== 0) {
72
+ throw buildNativeBridgeError();
73
+ }
74
+ const handleId = Number(runtime.handle);
75
+ const registration = runtimeLoggerState.get(handleId);
76
+ if (registration) {
77
+ runtimeLoggerState.delete(handleId);
78
+ try {
79
+ registration.onDetach?.();
80
+ }
81
+ catch { }
82
+ registration.jsCallback.close();
83
+ }
84
+ };
85
+ const detachLoggerUnsafe = (runtime) => {
86
+ try {
87
+ detachLoggerOrThrow(runtime);
88
+ }
89
+ catch { }
90
+ };
91
+ function loadBridgeLibrary() {
92
+ const symbolMap = buildBridgeSymbolMap();
93
+ const override = process.env.TEMPORAL_BUN_SDK_NATIVE_PATH;
94
+ if (override) {
95
+ if (!existsSync(override)) {
96
+ throw new Error(`Temporal Bun bridge override not found at ${override}`);
97
+ }
98
+ ensureZigBridgePath(override);
99
+ try {
100
+ return {
101
+ module: dlopen(override, symbolMap),
102
+ path: override,
103
+ variant: 'zig',
104
+ };
105
+ }
106
+ catch (error) {
107
+ throw buildBridgeLoadError(override, error, {
108
+ variant: 'zig',
109
+ preference: 'enable',
110
+ override: true,
111
+ });
112
+ }
113
+ }
114
+ const preference = getZigPreference();
115
+ if (preference === 'disable') {
116
+ throw new NativeBridgeError('TEMPORAL_BUN_SDK_USE_ZIG=0 is no longer supported. The Rust bridge has been removed; build the Zig bridge with "pnpm --filter @proompteng/temporal-bun-sdk run build:native:zig" instead.');
117
+ }
118
+ const candidates = resolveBridgeLibraryCandidates(preference);
119
+ if (candidates.length === 0) {
120
+ throw new NativeBridgeError('No Zig bridge artefacts were found. Run "pnpm --filter @proompteng/temporal-bun-sdk run build:native:zig" to compile the bridge, or publish prebuilt artefacts alongside the package.');
121
+ }
122
+ let lastError = null;
123
+ let lastCandidate = null;
124
+ for (const candidate of candidates) {
125
+ let candidatePath;
126
+ try {
127
+ candidatePath = candidate.resolvePath();
128
+ }
129
+ catch (error) {
130
+ lastError = error;
131
+ logZigBridgeLoadFailure('(failed to resolve Zig bridge path)', error);
132
+ continue;
133
+ }
134
+ try {
135
+ return {
136
+ module: dlopen(candidatePath, symbolMap),
137
+ path: candidatePath,
138
+ variant: candidate.variant,
139
+ };
140
+ }
141
+ catch (error) {
142
+ lastError = error;
143
+ lastCandidate = { path: candidatePath, variant: candidate.variant };
144
+ logZigBridgeLoadFailure(candidatePath, error);
145
+ }
146
+ }
147
+ if (lastCandidate) {
148
+ throw buildBridgeLoadError(lastCandidate.path, lastError, {
149
+ variant: lastCandidate.variant,
150
+ preference,
151
+ override: false,
152
+ });
153
+ }
154
+ throw new NativeBridgeError('No Zig bridge library could be loaded. Rebuild it with "pnpm --filter @proompteng/temporal-bun-sdk run build:native:zig".');
155
+ }
156
+ const { module: nativeModule, path: libraryFile, variant: resolvedBridgeVariant } = loadBridgeLibrary();
157
+ export const bridgeVariant = resolvedBridgeVariant;
158
+ export const isZigBridge = resolvedBridgeVariant === 'zig';
159
+ export const nativeLibraryPath = libraryFile;
160
+ function buildBridgeSymbolMap() {
161
+ return {
162
+ temporal_bun_runtime_new: {
163
+ args: [FFIType.ptr, FFIType.uint64_t],
164
+ returns: FFIType.ptr,
165
+ },
166
+ temporal_bun_runtime_update_telemetry: {
167
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
168
+ returns: FFIType.int32_t,
169
+ },
170
+ temporal_bun_runtime_free: {
171
+ args: [FFIType.ptr],
172
+ returns: FFIType.void,
173
+ },
174
+ temporal_bun_runtime_set_logger: {
175
+ args: [FFIType.ptr, FFIType.ptr],
176
+ returns: FFIType.int32_t,
177
+ },
178
+ temporal_bun_runtime_test_get_mode: {
179
+ args: [FFIType.ptr],
180
+ returns: FFIType.uint32_t,
181
+ },
182
+ temporal_bun_runtime_test_get_metric_prefix: {
183
+ args: [FFIType.ptr],
184
+ returns: FFIType.ptr,
185
+ },
186
+ temporal_bun_runtime_test_get_socket_addr: {
187
+ args: [FFIType.ptr],
188
+ returns: FFIType.ptr,
189
+ },
190
+ temporal_bun_runtime_test_get_attach_service_name: {
191
+ args: [FFIType.ptr],
192
+ returns: FFIType.int32_t,
193
+ },
194
+ temporal_bun_runtime_test_get_pending_worker_count: {
195
+ args: [FFIType.ptr],
196
+ returns: FFIType.uint64_t,
197
+ },
198
+ temporal_bun_runtime_test_get_pending_queue_capacity: {
199
+ args: [FFIType.ptr],
200
+ returns: FFIType.uint64_t,
201
+ },
202
+ temporal_bun_runtime_test_get_byte_array_metrics: {
203
+ args: [],
204
+ returns: FFIType.ptr,
205
+ },
206
+ temporal_bun_runtime_test_reset_byte_array_metrics: {
207
+ args: [],
208
+ returns: FFIType.void,
209
+ },
210
+ temporal_bun_byte_array_test_allocate_from_slice: {
211
+ args: [FFIType.ptr, FFIType.uint64_t],
212
+ returns: FFIType.ptr,
213
+ },
214
+ temporal_bun_byte_array_test_free: {
215
+ args: [FFIType.ptr],
216
+ returns: FFIType.void,
217
+ },
218
+ temporal_bun_runtime_test_register_client: {
219
+ args: [FFIType.ptr],
220
+ returns: FFIType.int32_t,
221
+ },
222
+ temporal_bun_runtime_test_unregister_client: {
223
+ args: [FFIType.ptr],
224
+ returns: FFIType.void,
225
+ },
226
+ temporal_bun_runtime_test_register_worker: {
227
+ args: [FFIType.ptr],
228
+ returns: FFIType.int32_t,
229
+ },
230
+ temporal_bun_runtime_test_unregister_worker: {
231
+ args: [FFIType.ptr],
232
+ returns: FFIType.void,
233
+ },
234
+ temporal_bun_runtime_test_emit_log: {
235
+ args: [
236
+ FFIType.uint32_t,
237
+ FFIType.ptr,
238
+ FFIType.uint64_t,
239
+ FFIType.ptr,
240
+ FFIType.uint64_t,
241
+ FFIType.uint64_t,
242
+ FFIType.ptr,
243
+ FFIType.uint64_t,
244
+ ],
245
+ returns: FFIType.void,
246
+ },
247
+ temporal_bun_error_message: {
248
+ args: [FFIType.ptr],
249
+ returns: FFIType.ptr,
250
+ },
251
+ temporal_bun_error_free: {
252
+ args: [FFIType.ptr, FFIType.uint64_t],
253
+ returns: FFIType.void,
254
+ },
255
+ temporal_bun_client_connect_async: {
256
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
257
+ returns: FFIType.ptr,
258
+ },
259
+ temporal_bun_client_free: {
260
+ args: [FFIType.ptr],
261
+ returns: FFIType.void,
262
+ },
263
+ temporal_bun_client_describe_namespace_async: {
264
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
265
+ returns: FFIType.ptr,
266
+ },
267
+ temporal_bun_client_update_headers: {
268
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
269
+ returns: FFIType.int32_t,
270
+ },
271
+ temporal_bun_pending_client_poll: {
272
+ args: [FFIType.ptr],
273
+ returns: FFIType.int32_t,
274
+ },
275
+ temporal_bun_pending_client_consume: {
276
+ args: [FFIType.ptr],
277
+ returns: FFIType.ptr,
278
+ },
279
+ temporal_bun_pending_client_free: {
280
+ args: [FFIType.ptr],
281
+ returns: FFIType.void,
282
+ },
283
+ temporal_bun_pending_byte_array_poll: {
284
+ args: [FFIType.ptr],
285
+ returns: FFIType.int32_t,
286
+ },
287
+ temporal_bun_pending_byte_array_consume: {
288
+ args: [FFIType.ptr],
289
+ returns: FFIType.ptr,
290
+ },
291
+ temporal_bun_pending_byte_array_free: {
292
+ args: [FFIType.ptr],
293
+ returns: FFIType.void,
294
+ },
295
+ temporal_bun_byte_array_free: {
296
+ args: [FFIType.ptr],
297
+ returns: FFIType.void,
298
+ },
299
+ temporal_bun_client_start_workflow: {
300
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
301
+ returns: FFIType.ptr,
302
+ },
303
+ temporal_bun_client_terminate_workflow: {
304
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
305
+ returns: FFIType.int32_t,
306
+ },
307
+ temporal_bun_client_signal: {
308
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
309
+ returns: FFIType.ptr,
310
+ },
311
+ temporal_bun_client_cancel_workflow: {
312
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
313
+ returns: FFIType.ptr,
314
+ },
315
+ temporal_bun_client_signal_with_start: {
316
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
317
+ returns: FFIType.ptr,
318
+ },
319
+ temporal_bun_client_query_workflow: {
320
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
321
+ returns: FFIType.ptr,
322
+ },
323
+ temporal_bun_worker_new: {
324
+ args: [FFIType.ptr, FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
325
+ returns: FFIType.ptr,
326
+ },
327
+ temporal_bun_worker_free: {
328
+ args: [FFIType.ptr],
329
+ returns: FFIType.int32_t,
330
+ },
331
+ temporal_bun_worker_poll_workflow_task: {
332
+ args: [FFIType.ptr],
333
+ returns: FFIType.ptr,
334
+ },
335
+ temporal_bun_worker_complete_workflow_task: {
336
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
337
+ returns: FFIType.int32_t,
338
+ },
339
+ temporal_bun_worker_complete_activity_task: {
340
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
341
+ returns: FFIType.int32_t,
342
+ },
343
+ temporal_bun_worker_poll_activity_task: {
344
+ args: [FFIType.ptr],
345
+ returns: FFIType.ptr,
346
+ },
347
+ temporal_bun_worker_record_activity_heartbeat: {
348
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
349
+ returns: FFIType.int32_t,
350
+ },
351
+ temporal_bun_worker_initiate_shutdown: {
352
+ args: [FFIType.ptr],
353
+ returns: FFIType.int32_t,
354
+ },
355
+ temporal_bun_worker_finalize_shutdown: {
356
+ args: [FFIType.ptr],
357
+ returns: FFIType.int32_t,
358
+ },
359
+ temporal_bun_worker_replayer_new: {
360
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t],
361
+ returns: FFIType.ptr,
362
+ },
363
+ temporal_bun_worker_replayer_free: {
364
+ args: [FFIType.ptr],
365
+ returns: FFIType.int32_t,
366
+ },
367
+ temporal_bun_worker_replay_push: {
368
+ args: [FFIType.ptr, FFIType.ptr, FFIType.uint64_t, FFIType.ptr, FFIType.uint64_t],
369
+ returns: FFIType.int32_t,
370
+ },
371
+ temporal_bun_worker_replay_get_worker: {
372
+ args: [FFIType.ptr],
373
+ returns: FFIType.ptr,
374
+ },
375
+ temporal_bun_worker_test_handle_new: {
376
+ args: [],
377
+ returns: FFIType.ptr,
378
+ },
379
+ temporal_bun_worker_test_handle_release: {
380
+ args: [FFIType.ptr],
381
+ returns: FFIType.void,
382
+ },
383
+ };
384
+ }
385
+ function ensureZigBridgePath(candidate) {
386
+ if (!/temporal[-_]bun[-_]bridge[-_]zig/.test(candidate)) {
387
+ throw new Error(`Only Zig bridge libraries are supported. Invalid bridge candidate: ${candidate}`);
388
+ }
389
+ }
390
+ function logZigBridgeLoadFailure(candidate, error) {
391
+ const reason = error instanceof Error ? error.message : String(error);
392
+ console.warn(`Failed to load Zig bridge at ${candidate}.\nReason: ${reason}`, error);
393
+ }
394
+ function buildBridgeLoadError(libraryPath, error, context) {
395
+ const reason = error instanceof Error ? error.message : String(error);
396
+ const messages = [`Failed to load Temporal Bun bridge at ${libraryPath}`];
397
+ if (reason) {
398
+ messages.push(`Reason: ${reason}`);
399
+ }
400
+ if (context.override) {
401
+ messages.push('Verify TEMPORAL_BUN_SDK_NATIVE_PATH or rebuild the specified library for this platform.');
402
+ }
403
+ else if (context.preference === 'enable') {
404
+ messages.push('TEMPORAL_BUN_SDK_USE_ZIG=1 expects a compiled Zig bridge. Rebuild it with "pnpm --filter @proompteng/temporal-bun-sdk run build:native:zig".');
405
+ }
406
+ else {
407
+ messages.push('Rebuild the Zig bridge or install packaged artefacts so a library exists under dist/native/<platform>/<arch>/ or bruke/zig-out/lib/.');
408
+ }
409
+ const failure = new NativeBridgeError(messages.join('. '));
410
+ failure.cause = error;
411
+ return failure;
412
+ }
413
+ const { symbols: { temporal_bun_runtime_new, temporal_bun_runtime_free, temporal_bun_runtime_set_logger, temporal_bun_runtime_update_telemetry, temporal_bun_runtime_test_emit_log, temporal_bun_runtime_test_get_mode, temporal_bun_runtime_test_get_metric_prefix, temporal_bun_runtime_test_get_socket_addr, temporal_bun_runtime_test_get_attach_service_name, temporal_bun_runtime_test_get_pending_worker_count, temporal_bun_runtime_test_get_pending_queue_capacity, temporal_bun_runtime_test_register_client, temporal_bun_runtime_test_unregister_client, temporal_bun_runtime_test_register_worker, temporal_bun_runtime_test_unregister_worker, temporal_bun_runtime_test_get_byte_array_metrics, temporal_bun_runtime_test_reset_byte_array_metrics, temporal_bun_byte_array_test_allocate_from_slice, temporal_bun_byte_array_test_free, temporal_bun_error_message, temporal_bun_error_free, temporal_bun_client_connect_async, temporal_bun_client_free, temporal_bun_client_describe_namespace_async, temporal_bun_client_update_headers, temporal_bun_pending_client_poll, temporal_bun_pending_client_consume, temporal_bun_pending_client_free, temporal_bun_pending_byte_array_poll, temporal_bun_pending_byte_array_consume, temporal_bun_pending_byte_array_free, temporal_bun_byte_array_free, temporal_bun_client_start_workflow, temporal_bun_client_terminate_workflow, temporal_bun_client_signal, temporal_bun_client_cancel_workflow, temporal_bun_client_signal_with_start, temporal_bun_client_query_workflow, temporal_bun_worker_new, temporal_bun_worker_free, temporal_bun_worker_poll_workflow_task, temporal_bun_worker_complete_workflow_task, temporal_bun_worker_complete_activity_task, temporal_bun_worker_poll_activity_task, temporal_bun_worker_record_activity_heartbeat, temporal_bun_worker_initiate_shutdown, temporal_bun_worker_finalize_shutdown, temporal_bun_worker_replayer_new, temporal_bun_worker_replayer_free, temporal_bun_worker_replay_push, temporal_bun_worker_replay_get_worker, temporal_bun_worker_test_handle_new, temporal_bun_worker_test_handle_release, }, } = nativeModule;
414
+ const pendingByteArrayFfi = {
415
+ poll: temporal_bun_pending_byte_array_poll,
416
+ consume: temporal_bun_pending_byte_array_consume,
417
+ free: temporal_bun_pending_byte_array_free,
418
+ };
419
+ const workerFfi = {
420
+ pollActivityTask: temporal_bun_worker_poll_activity_task,
421
+ pollWorkflowTask: temporal_bun_worker_poll_workflow_task,
422
+ completeWorkflowTask: temporal_bun_worker_complete_workflow_task,
423
+ completeActivityTask: temporal_bun_worker_complete_activity_task,
424
+ recordActivityHeartbeat: temporal_bun_worker_record_activity_heartbeat,
425
+ initiateShutdown: temporal_bun_worker_initiate_shutdown,
426
+ finalizeShutdown: temporal_bun_worker_finalize_shutdown,
427
+ };
428
+ const workerReplayFfi = {
429
+ create: temporal_bun_worker_replayer_new,
430
+ free: temporal_bun_worker_replayer_free,
431
+ push: temporal_bun_worker_replay_push,
432
+ getWorker: temporal_bun_worker_replay_get_worker,
433
+ };
434
+ export const native = {
435
+ bridgeVariant: resolvedBridgeVariant,
436
+ createRuntime(options = {}) {
437
+ const payload = Buffer.from(JSON.stringify(options), 'utf8');
438
+ const handleNum = Number(temporal_bun_runtime_new(ptr(payload), payload.byteLength));
439
+ if (!handleNum) {
440
+ throw buildNativeBridgeError();
441
+ }
442
+ return { type: 'runtime', handle: handleNum };
443
+ },
444
+ runtimeShutdown(runtime) {
445
+ detachLoggerUnsafe(runtime);
446
+ runtimeTelemetryState.delete(Number(runtime.handle));
447
+ temporal_bun_runtime_free(runtime.handle);
448
+ },
449
+ async createClient(runtime, config) {
450
+ const payload = Buffer.from(JSON.stringify(config), 'utf8');
451
+ const pendingHandle = Number(temporal_bun_client_connect_async(runtime.handle, ptr(payload), payload.byteLength));
452
+ if (!pendingHandle) {
453
+ throw buildNativeBridgeError();
454
+ }
455
+ try {
456
+ const handleNum = await waitForClientHandle(pendingHandle);
457
+ return { type: 'client', handle: handleNum };
458
+ }
459
+ finally {
460
+ temporal_bun_pending_client_free(pendingHandle);
461
+ }
462
+ },
463
+ clientShutdown(client) {
464
+ temporal_bun_client_free(client.handle);
465
+ },
466
+ async describeNamespace(client, namespace) {
467
+ const payload = Buffer.from(JSON.stringify({ namespace }), 'utf8');
468
+ const pendingHandle = Number(temporal_bun_client_describe_namespace_async(client.handle, ptr(payload), payload.byteLength));
469
+ if (!pendingHandle) {
470
+ throw buildNativeBridgeError();
471
+ }
472
+ try {
473
+ return await waitForByteArray(pendingHandle, pendingByteArrayFfi);
474
+ }
475
+ finally {
476
+ pendingByteArrayFfi.free(pendingHandle);
477
+ }
478
+ },
479
+ async startWorkflow(client, request) {
480
+ const payload = Buffer.from(JSON.stringify(request), 'utf8');
481
+ const arrayPtr = Number(temporal_bun_client_start_workflow(client.handle, ptr(payload), payload.byteLength));
482
+ if (!arrayPtr) {
483
+ throw buildNativeBridgeError();
484
+ }
485
+ return readByteArray(arrayPtr);
486
+ },
487
+ configureTelemetry(runtime, options = {}) {
488
+ const payload = Buffer.from(JSON.stringify(options), 'utf8');
489
+ const result = temporal_bun_runtime_update_telemetry(runtime.handle, ptr(payload), payload.byteLength);
490
+ if (result !== 0) {
491
+ throw buildNativeBridgeError();
492
+ }
493
+ const handleId = Number(runtime.handle);
494
+ const previous = runtimeTelemetryState.get(handleId) ?? {
495
+ mode: 'none',
496
+ metricPrefix: 'temporal_',
497
+ socketAddr: '',
498
+ attachServiceName: true,
499
+ };
500
+ const telemetry = (options.telemetry ?? {});
501
+ const metricsExporter = options.metricsExporter;
502
+ let metricPrefix = previous.metricPrefix;
503
+ let attachServiceName = previous.attachServiceName;
504
+ if (telemetry && typeof telemetry === 'object') {
505
+ const candidatePrefix = telemetry.metricPrefix;
506
+ if (typeof candidatePrefix === 'string' && candidatePrefix.length > 0) {
507
+ metricPrefix = candidatePrefix;
508
+ }
509
+ const attach = telemetry.attachServiceName;
510
+ if (typeof attach === 'boolean') {
511
+ attachServiceName = attach;
512
+ }
513
+ }
514
+ let mode = previous.mode;
515
+ let socketAddr = previous.socketAddr;
516
+ if (metricsExporter === null) {
517
+ mode = 'none';
518
+ socketAddr = '';
519
+ }
520
+ else if (metricsExporter && typeof metricsExporter === 'object') {
521
+ const exporterType = metricsExporter.type;
522
+ if (exporterType === 'prometheus') {
523
+ mode = 'prometheus';
524
+ const socket = metricsExporter.socketAddr;
525
+ if (typeof socket === 'string' && socket.length > 0) {
526
+ socketAddr = socket;
527
+ }
528
+ }
529
+ else if (exporterType === 'otel' || exporterType === 'otlp') {
530
+ mode = 'otlp';
531
+ socketAddr = '';
532
+ }
533
+ }
534
+ runtimeTelemetryState.set(handleId, {
535
+ mode,
536
+ metricPrefix,
537
+ socketAddr,
538
+ attachServiceName,
539
+ });
540
+ },
541
+ pendingExecutorWorkerCount(runtime) {
542
+ return Number(temporal_bun_runtime_test_get_pending_worker_count(runtime.handle));
543
+ },
544
+ pendingExecutorQueueCapacity(runtime) {
545
+ return Number(temporal_bun_runtime_test_get_pending_queue_capacity(runtime.handle));
546
+ },
547
+ installLogger(runtime, callback, onDetach) {
548
+ if (typeof callback !== 'function') {
549
+ throw new TypeError('Runtime logger callback must be a function');
550
+ }
551
+ const handleId = Number(runtime.handle);
552
+ if (runtimeLoggerState.has(handleId)) {
553
+ throw new NativeBridgeError('Temporal runtime logger already installed');
554
+ }
555
+ const callbackOptions = {
556
+ returns: 'void',
557
+ args: ['u32', 'pointer', 'usize', 'pointer', 'usize', 'u64', 'pointer', 'usize'],
558
+ threadsafe: true,
559
+ onError(error) {
560
+ detachLoggerUnsafe(runtime);
561
+ throw error;
562
+ },
563
+ };
564
+ const jsCallback = new JSCallback((level, targetPtr, targetLen, messagePtr, messageLen, timestampMillis, fieldsPtr, fieldsLen) => {
565
+ const levelIndex = Number(level);
566
+ const fieldsLength = Number(fieldsLen);
567
+ const event = {
568
+ level: mapLogLevel(levelIndex),
569
+ levelIndex,
570
+ target: decodeUtf8(targetPtr, Number(targetLen)),
571
+ message: decodeUtf8(messagePtr, Number(messageLen)),
572
+ timestampMillis: Number(timestampMillis),
573
+ };
574
+ if (fieldsLength > 0) {
575
+ const fieldsJson = decodeUtf8(fieldsPtr, fieldsLength);
576
+ event.fieldsJson = fieldsJson;
577
+ event.fields = parseFields(fieldsJson);
578
+ }
579
+ callback(event);
580
+ }, callbackOptions);
581
+ const status = Number(temporal_bun_runtime_set_logger(runtime.handle, jsCallback.ptr));
582
+ if (status !== 0) {
583
+ jsCallback.close();
584
+ throw buildNativeBridgeError();
585
+ }
586
+ runtimeLoggerState.set(handleId, { runtime, jsCallback, onDetach });
587
+ },
588
+ removeLogger(runtime) {
589
+ detachLoggerOrThrow(runtime);
590
+ },
591
+ __TEST__: {
592
+ emitSyntheticLog({ level = 'info', target = '', message = '', timestampMillis = Date.now(), fieldsJson, } = {}) {
593
+ const levelIndex = typeof level === 'number' ? level : nativeLogLevels.indexOf(level ?? 'info');
594
+ const normalizedLevel = levelIndex >= 0 ? levelIndex : nativeLogLevels.indexOf('info');
595
+ const targetBuffer = Buffer.from(target ?? '', 'utf8');
596
+ const messageBuffer = Buffer.from(message ?? '', 'utf8');
597
+ const fieldsBuffer = fieldsJson ? Buffer.from(fieldsJson, 'utf8') : null;
598
+ temporal_bun_runtime_test_emit_log(normalizedLevel, pointerFromBuffer(targetBuffer), targetBuffer.length, pointerFromBuffer(messageBuffer), messageBuffer.length, BigInt(Math.trunc(timestampMillis ?? Date.now())), pointerFromBuffer(fieldsBuffer), fieldsBuffer?.length ?? 0);
599
+ },
600
+ getTelemetrySnapshot(runtime) {
601
+ const modeValue = Number(temporal_bun_runtime_test_get_mode(runtime.handle));
602
+ const metricPrefixPtr = Number(temporal_bun_runtime_test_get_metric_prefix(runtime.handle));
603
+ const socketAddrPtr = Number(temporal_bun_runtime_test_get_socket_addr(runtime.handle));
604
+ const attachServiceName = temporal_bun_runtime_test_get_attach_service_name(runtime.handle) !== 0;
605
+ const decodeFromByteArrayPointer = (pointer) => {
606
+ if (!pointer)
607
+ return '';
608
+ return utf8Decoder.decode(readByteArray(pointer));
609
+ };
610
+ let mode = modeValue === 1 ? 'prometheus' : modeValue === 2 ? 'otlp' : 'none';
611
+ let metricPrefix = decodeFromByteArrayPointer(metricPrefixPtr);
612
+ let socketAddr = decodeFromByteArrayPointer(socketAddrPtr);
613
+ const handleId = Number(runtime.handle);
614
+ const override = runtimeTelemetryState.get(handleId);
615
+ if (override) {
616
+ if (mode === 'none' && override.mode !== 'none') {
617
+ mode = override.mode;
618
+ }
619
+ if (!metricPrefix) {
620
+ metricPrefix = override.metricPrefix;
621
+ }
622
+ if (!socketAddr && override.socketAddr) {
623
+ socketAddr = override.socketAddr;
624
+ }
625
+ const resolvedAttach = override.attachServiceName;
626
+ return {
627
+ mode,
628
+ metricPrefix,
629
+ socketAddr,
630
+ attachServiceName: resolvedAttach,
631
+ };
632
+ }
633
+ return {
634
+ mode,
635
+ metricPrefix,
636
+ socketAddr,
637
+ attachServiceName,
638
+ };
639
+ },
640
+ registerClient(runtime) {
641
+ return temporal_bun_runtime_test_register_client(runtime.handle) !== 0;
642
+ },
643
+ unregisterClient(runtime) {
644
+ temporal_bun_runtime_test_unregister_client(runtime.handle);
645
+ },
646
+ registerWorker(runtime) {
647
+ return temporal_bun_runtime_test_register_worker(runtime.handle) !== 0;
648
+ },
649
+ unregisterWorker(runtime) {
650
+ temporal_bun_runtime_test_unregister_worker(runtime.handle);
651
+ },
652
+ getByteArrayMetrics() {
653
+ const bufferPtr = Number(temporal_bun_runtime_test_get_byte_array_metrics());
654
+ if (!bufferPtr) {
655
+ return { ...byteArrayMetricsState };
656
+ }
657
+ try {
658
+ const bytes = readByteArray(bufferPtr);
659
+ const json = utf8Decoder.decode(bytes);
660
+ return JSON.parse(json);
661
+ }
662
+ catch {
663
+ return { ...byteArrayMetricsState };
664
+ }
665
+ },
666
+ resetByteArrayMetrics() {
667
+ temporal_bun_runtime_test_reset_byte_array_metrics();
668
+ byteArrayMetricsState.totalAllocations = 0;
669
+ byteArrayMetricsState.totalFrees = 0;
670
+ byteArrayMetricsState.activeBuffers = 0;
671
+ byteArrayMetricsState.doubleFreePreventions = 0;
672
+ byteArrayActivePointers.clear();
673
+ },
674
+ allocateTestByteArray(input) {
675
+ const buffer = Buffer.from(input, 'utf8');
676
+ const rawPtr = temporal_bun_byte_array_test_allocate_from_slice(ptr(buffer), buffer.byteLength);
677
+ if (!rawPtr)
678
+ throw new NativeBridgeError('Failed to allocate test byte array');
679
+ const pointer = Number(rawPtr);
680
+ byteArrayMetricsState.totalAllocations += 1;
681
+ byteArrayMetricsState.activeBuffers += 1;
682
+ byteArrayActivePointers.add(pointer);
683
+ return pointer;
684
+ },
685
+ freeTestByteArray(pointer) {
686
+ temporal_bun_byte_array_test_free(pointer);
687
+ if (byteArrayActivePointers.delete(pointer)) {
688
+ byteArrayMetricsState.totalFrees += 1;
689
+ byteArrayMetricsState.activeBuffers = Math.max(0, byteArrayMetricsState.activeBuffers - 1);
690
+ }
691
+ else {
692
+ byteArrayMetricsState.doubleFreePreventions += 1;
693
+ }
694
+ },
695
+ },
696
+ updateClientHeaders(client, headers) {
697
+ const payload = Buffer.from(JSON.stringify(headers ?? {}), 'utf8');
698
+ const status = Number(temporal_bun_client_update_headers(client.handle, ptr(payload), payload.byteLength));
699
+ if (status !== 0) {
700
+ throw buildNativeBridgeError();
701
+ }
702
+ },
703
+ async signalWorkflow(client, request) {
704
+ const payload = Buffer.from(JSON.stringify(request), 'utf8');
705
+ const pendingHandle = Number(temporal_bun_client_signal(client.handle, ptr(payload), payload.byteLength));
706
+ if (!pendingHandle) {
707
+ throw buildNativeBridgeError();
708
+ }
709
+ try {
710
+ await waitForByteArray(pendingHandle, pendingByteArrayFfi);
711
+ }
712
+ finally {
713
+ pendingByteArrayFfi.free(pendingHandle);
714
+ }
715
+ },
716
+ async queryWorkflow(client, request) {
717
+ const payload = Buffer.from(JSON.stringify(request), 'utf8');
718
+ const pendingHandle = Number(temporal_bun_client_query_workflow(client.handle, ptr(payload), payload.byteLength));
719
+ if (!pendingHandle) {
720
+ throw buildNativeBridgeError();
721
+ }
722
+ try {
723
+ return await waitForByteArray(pendingHandle, pendingByteArrayFfi);
724
+ }
725
+ finally {
726
+ pendingByteArrayFfi.free(pendingHandle);
727
+ }
728
+ },
729
+ async terminateWorkflow(client, request) {
730
+ const payload = Buffer.from(JSON.stringify(request), 'utf8');
731
+ const status = Number(temporal_bun_client_terminate_workflow(client.handle, ptr(payload), payload.byteLength));
732
+ if (status !== 0) {
733
+ throw buildNativeBridgeError();
734
+ }
735
+ },
736
+ async cancelWorkflow(client, request) {
737
+ const payload = Buffer.from(JSON.stringify(request), 'utf8');
738
+ const pendingHandle = Number(temporal_bun_client_cancel_workflow(client.handle, ptr(payload), payload.byteLength));
739
+ if (!pendingHandle) {
740
+ throw buildNativeBridgeError();
741
+ }
742
+ try {
743
+ await waitForByteArray(pendingHandle, pendingByteArrayFfi);
744
+ }
745
+ finally {
746
+ pendingByteArrayFfi.free(pendingHandle);
747
+ }
748
+ },
749
+ async signalWithStart(client, request) {
750
+ const payload = Buffer.from(JSON.stringify(request), 'utf8');
751
+ const arrayPtr = Number(temporal_bun_client_signal_with_start(client.handle, ptr(payload), payload.byteLength));
752
+ if (!arrayPtr) {
753
+ throw buildNativeBridgeError();
754
+ }
755
+ return readByteArray(arrayPtr);
756
+ },
757
+ createWorker(runtime, client, config) {
758
+ const payload = Buffer.from(JSON.stringify(config), 'utf8');
759
+ const handleNum = Number(temporal_bun_worker_new(runtime.handle, client.handle, ptr(payload), payload.byteLength));
760
+ if (!handleNum) {
761
+ throw buildNativeBridgeError();
762
+ }
763
+ return { type: 'worker', handle: handleNum };
764
+ },
765
+ destroyWorker(worker) {
766
+ const status = Number(temporal_bun_worker_free(worker.handle));
767
+ if (status === 0) {
768
+ worker.handle = 0;
769
+ return;
770
+ }
771
+ if (status === -1) {
772
+ throw buildNativeBridgeError();
773
+ }
774
+ throw buildNativeBridgeError();
775
+ },
776
+ createReplayWorker(runtime, config) {
777
+ const payload = Buffer.from(JSON.stringify(config), 'utf8');
778
+ const handlePtrNum = Number(workerReplayFfi.create(runtime.handle, ptr(payload), payload.byteLength));
779
+ if (!handlePtrNum) {
780
+ throw buildNativeBridgeError();
781
+ }
782
+ const handlePtr = handlePtrNum;
783
+ const workerPtrNum = Number(workerReplayFfi.getWorker(handlePtr));
784
+ if (!workerPtrNum) {
785
+ workerReplayFfi.free(handlePtr);
786
+ throw new NativeBridgeError('Failed to resolve native worker handle for replay worker');
787
+ }
788
+ const replayWorker = { type: 'worker', handle: workerPtrNum };
789
+ return { type: 'replay-worker', handle: handlePtr, worker: replayWorker };
790
+ },
791
+ destroyReplayWorker(replay) {
792
+ if (Number(replay.handle) === 0) {
793
+ return;
794
+ }
795
+ const status = Number(workerReplayFfi.free(replay.handle));
796
+ if (status === 0) {
797
+ replay.handle = 0;
798
+ replay.worker.handle = 0;
799
+ return;
800
+ }
801
+ throw buildNativeBridgeError();
802
+ },
803
+ pushReplayHistory(replay, workflowId, history) {
804
+ if (Number(replay.handle) === 0) {
805
+ throw new NativeBridgeError('Replay worker handle is not initialized');
806
+ }
807
+ if (!workflowId || workflowId.length === 0) {
808
+ throw new NativeBridgeError('Workflow ID must be provided for replay push');
809
+ }
810
+ const workflowIdBuffer = Buffer.from(workflowId, 'utf8');
811
+ let historyBuffer;
812
+ if (Buffer.isBuffer(history)) {
813
+ historyBuffer = history;
814
+ }
815
+ else if (typeof history === 'string') {
816
+ historyBuffer = Buffer.from(history, 'utf8');
817
+ }
818
+ else {
819
+ historyBuffer = Buffer.from(history);
820
+ }
821
+ const status = Number(workerReplayFfi.push(replay.handle, ptr(workflowIdBuffer), workflowIdBuffer.byteLength, ptr(historyBuffer), historyBuffer.byteLength));
822
+ if (status !== 0) {
823
+ throw buildNativeBridgeError();
824
+ }
825
+ },
826
+ createWorkerHandleForTest() {
827
+ const handleNum = Number(temporal_bun_worker_test_handle_new());
828
+ if (!handleNum) {
829
+ throw buildNativeBridgeError();
830
+ }
831
+ return { type: 'worker', handle: handleNum };
832
+ },
833
+ releaseWorkerHandleForTest(handle) {
834
+ temporal_bun_worker_test_handle_release(handle);
835
+ },
836
+ workerCompleteWorkflowTask(worker, payload) {
837
+ const buffer = Buffer.isBuffer(payload) ? payload : Buffer.from(payload);
838
+ const status = Number(workerFfi.completeWorkflowTask(worker.handle, ptr(buffer), buffer.byteLength));
839
+ if (status !== 0) {
840
+ throw buildNativeBridgeError();
841
+ }
842
+ },
843
+ workerCompleteActivityTask(worker, payload) {
844
+ const buffer = Buffer.isBuffer(payload) ? payload : Buffer.from(payload);
845
+ const status = Number(workerFfi.completeActivityTask(worker.handle, ptr(buffer), buffer.byteLength));
846
+ if (status !== 0) {
847
+ throw buildNativeBridgeError();
848
+ }
849
+ },
850
+ workerRecordActivityHeartbeat(worker, payload) {
851
+ const buffer = Buffer.isBuffer(payload) ? payload : Buffer.from(payload);
852
+ const status = Number(workerFfi.recordActivityHeartbeat(worker.handle, ptr(buffer), buffer.byteLength));
853
+ if (status !== 0) {
854
+ throw buildNativeBridgeError();
855
+ }
856
+ },
857
+ worker: {
858
+ async pollWorkflowTask(worker) {
859
+ if (!isZigBridge) {
860
+ throw new NativeBridgeError('Workflow polling via native.worker.pollWorkflowTask requires the Zig bridge. Rebuild the native module with `TEMPORAL_BUN_SDK_USE_ZIG=1`.');
861
+ }
862
+ const pendingHandle = Number(workerFfi.pollWorkflowTask(worker.handle));
863
+ if (!pendingHandle) {
864
+ throw buildNativeBridgeError();
865
+ }
866
+ try {
867
+ return await waitForByteArray(pendingHandle, pendingByteArrayFfi);
868
+ }
869
+ finally {
870
+ pendingByteArrayFfi.free(pendingHandle);
871
+ }
872
+ },
873
+ completeWorkflowTask(worker, payload) {
874
+ const buffer = Buffer.isBuffer(payload) ? payload : Buffer.from(payload);
875
+ const status = Number(workerFfi.completeWorkflowTask(worker.handle, ptr(buffer), buffer.byteLength));
876
+ if (status !== 0) {
877
+ throw buildNativeBridgeError();
878
+ }
879
+ },
880
+ completeActivityTask(worker, payload) {
881
+ const buffer = Buffer.isBuffer(payload) ? payload : Buffer.from(payload);
882
+ const status = Number(workerFfi.completeActivityTask(worker.handle, ptr(buffer), buffer.byteLength));
883
+ if (status !== 0) {
884
+ throw buildNativeBridgeError();
885
+ }
886
+ },
887
+ recordActivityHeartbeat(worker, payload) {
888
+ const buffer = Buffer.isBuffer(payload) ? payload : Buffer.from(payload);
889
+ const status = Number(workerFfi.recordActivityHeartbeat(worker.handle, ptr(buffer), buffer.byteLength));
890
+ if (status !== 0) {
891
+ throw buildNativeBridgeError();
892
+ }
893
+ },
894
+ initiateShutdown(worker) {
895
+ const status = Number(workerFfi.initiateShutdown(worker.handle));
896
+ if (status !== 0) {
897
+ throw buildNativeBridgeError();
898
+ }
899
+ },
900
+ finalizeShutdown(worker) {
901
+ const status = Number(workerFfi.finalizeShutdown(worker.handle));
902
+ if (status === 0) {
903
+ return;
904
+ }
905
+ if (status === -1) {
906
+ throw buildNativeBridgeError();
907
+ }
908
+ throw buildNativeBridgeError();
909
+ },
910
+ async pollActivityTask(worker) {
911
+ if (process.env.TEMPORAL_BUN_SDK_USE_ZIG !== '1' || !isZigBridge) {
912
+ throw new NativeBridgeError({
913
+ code: UNKNOWN_NATIVE_ERROR_CODE,
914
+ message: 'Activity polling via Zig requires TEMPORAL_BUN_SDK_USE_ZIG=1 and the Zig bridge. Rebuild the native bridge or enable the environment flag.',
915
+ details: { bridgeVariant: resolvedBridgeVariant },
916
+ });
917
+ }
918
+ const pendingHandle = Number(workerFfi.pollActivityTask(worker.handle));
919
+ if (!pendingHandle) {
920
+ throw buildNativeBridgeError();
921
+ }
922
+ try {
923
+ const payload = await waitForByteArray(pendingHandle, pendingByteArrayFfi);
924
+ return payload.byteLength === 0 ? null : payload;
925
+ }
926
+ finally {
927
+ pendingByteArrayFfi.free(pendingHandle);
928
+ }
929
+ },
930
+ },
931
+ };
932
+ export const __testing = {
933
+ pendingByteArrayFfi,
934
+ workerFfi,
935
+ workerReplayFfi,
936
+ };
937
+ function resolvePackageRoot() {
938
+ let dir = moduleDir;
939
+ for (let depth = 0; depth < 6; depth += 1) {
940
+ const candidate = join(dir, 'package.json');
941
+ if (existsSync(candidate)) {
942
+ return dir;
943
+ }
944
+ dir = join(dir, '..');
945
+ }
946
+ return join(moduleDir, '..', '..', '..', '..', '..');
947
+ }
948
+ function resolveBridgeLibraryCandidates(preference) {
949
+ const candidates = [];
950
+ const attemptedZigPaths = [];
951
+ const packaged = resolvePackagedZigBridgeLibraryPath();
952
+ attemptedZigPaths.push(...packaged.attempted);
953
+ if (packaged.path) {
954
+ const zigPackagedPath = packaged.path;
955
+ candidates.push({ resolvePath: () => zigPackagedPath, variant: 'zig' });
956
+ }
957
+ const local = resolveLocalZigBridgeLibraryPath();
958
+ attemptedZigPaths.push(...local.attempted);
959
+ if (local.path) {
960
+ const zigLocalPath = local.path;
961
+ candidates.push({ resolvePath: () => zigLocalPath, variant: 'zig' });
962
+ }
963
+ if (attemptedZigPaths.length > 0 && candidates.length === 0) {
964
+ const message = preference === 'enable'
965
+ ? 'TEMPORAL_BUN_SDK_USE_ZIG=1 was set but no Zig bridge artefacts were found.'
966
+ : 'No Zig bridge binary was located for this platform.';
967
+ logMissingZigBridge(attemptedZigPaths, `${message} Rebuild the bridge with "pnpm --filter @proompteng/temporal-bun-sdk run build:native:zig".`);
968
+ }
969
+ return candidates;
970
+ }
971
+ function getZigPreference() {
972
+ const flag = process.env.TEMPORAL_BUN_SDK_USE_ZIG;
973
+ if (!flag) {
974
+ return 'auto';
975
+ }
976
+ if (/^(0|false|off)$/i.test(flag)) {
977
+ return 'disable';
978
+ }
979
+ if (/^(1|true|on)$/i.test(flag)) {
980
+ return 'enable';
981
+ }
982
+ return 'enable';
983
+ }
984
+ function resolvePackagedZigBridgeLibraryPath() {
985
+ const attempted = [];
986
+ const platform = getRuntimePlatform();
987
+ const arch = getRuntimeArch();
988
+ if (!platform || !arch) {
989
+ return { path: null, attempted };
990
+ }
991
+ const releaseName = getZigReleaseLibraryName();
992
+ const packagedPath = join(distNativeDir, platform, arch, releaseName);
993
+ attempted.push(packagedPath);
994
+ if (existsSync(packagedPath)) {
995
+ return { path: packagedPath, attempted };
996
+ }
997
+ return { path: null, attempted };
998
+ }
999
+ function resolveLocalZigBridgeLibraryPath() {
1000
+ const attempted = [];
1001
+ const platform = getRuntimePlatform();
1002
+ const arch = getRuntimeArch();
1003
+ const releaseName = getZigReleaseLibraryName();
1004
+ const debugName = getZigDebugLibraryName();
1005
+ const candidates = [];
1006
+ if (platform && arch) {
1007
+ candidates.push(join(zigStageLibDir, platform, arch, releaseName));
1008
+ candidates.push(join(zigStageLibDir, platform, arch, debugName));
1009
+ }
1010
+ candidates.push(join(zigStageLibDir, releaseName));
1011
+ candidates.push(join(zigStageLibDir, debugName));
1012
+ for (const candidate of candidates) {
1013
+ attempted.push(candidate);
1014
+ if (existsSync(candidate)) {
1015
+ return { path: candidate, attempted };
1016
+ }
1017
+ }
1018
+ return { path: null, attempted };
1019
+ }
1020
+ function logMissingZigBridge(paths, message) {
1021
+ if (paths.length === 0) {
1022
+ return;
1023
+ }
1024
+ const uniquePaths = [...new Set(paths)];
1025
+ const details = uniquePaths.map((candidate) => ` • ${candidate}`).join('\n');
1026
+ console.warn(`${message}\nSearched the following locations:\n${details}`);
1027
+ }
1028
+ function getRuntimePlatform() {
1029
+ if (process.platform === 'darwin') {
1030
+ return 'darwin';
1031
+ }
1032
+ if (process.platform === 'linux') {
1033
+ return 'linux';
1034
+ }
1035
+ return null;
1036
+ }
1037
+ function getRuntimeArch() {
1038
+ if (process.arch === 'arm64') {
1039
+ return 'arm64';
1040
+ }
1041
+ if (process.arch === 'x64') {
1042
+ return 'x64';
1043
+ }
1044
+ return null;
1045
+ }
1046
+ function getZigReleaseLibraryName() {
1047
+ if (process.platform === 'win32') {
1048
+ return 'temporal_bun_bridge_zig.dll';
1049
+ }
1050
+ if (process.platform === 'darwin') {
1051
+ return 'libtemporal_bun_bridge_zig.dylib';
1052
+ }
1053
+ return 'libtemporal_bun_bridge_zig.so';
1054
+ }
1055
+ function getZigDebugLibraryName() {
1056
+ if (process.platform === 'win32') {
1057
+ return 'temporal_bun_bridge_zig_debug.dll';
1058
+ }
1059
+ if (process.platform === 'darwin') {
1060
+ return 'libtemporal_bun_bridge_zig_debug.dylib';
1061
+ }
1062
+ return 'libtemporal_bun_bridge_zig_debug.so';
1063
+ }
1064
+ function readByteArray(pointer) {
1065
+ // Wrap numeric addresses in a Pointer-compatible shape for bun:ffi
1066
+ const headerPtr = pointer;
1067
+ const header = new BigUint64Array(toArrayBuffer(headerPtr, 0, 24));
1068
+ const dataPtrNum = Number(header[0]);
1069
+ const len = Number(header[1]);
1070
+ const dataPtr = dataPtrNum;
1071
+ const view = new Uint8Array(toArrayBuffer(dataPtr, 0, len));
1072
+ const copy = new Uint8Array(view);
1073
+ temporal_bun_byte_array_free(pointer);
1074
+ return copy;
1075
+ }
1076
+ async function waitForClientHandle(handle) {
1077
+ return await new Promise((resolve, reject) => {
1078
+ const poll = () => {
1079
+ const status = Number(temporal_bun_pending_client_poll(handle));
1080
+ if (status === 0) {
1081
+ setTimeout(poll, 0);
1082
+ return;
1083
+ }
1084
+ if (status === 1) {
1085
+ try {
1086
+ const pointer = Number(temporal_bun_pending_client_consume(handle));
1087
+ if (!pointer) {
1088
+ throw buildNativeBridgeError();
1089
+ }
1090
+ resolve(pointer);
1091
+ }
1092
+ catch (error) {
1093
+ reject(error);
1094
+ }
1095
+ return;
1096
+ }
1097
+ reject(buildNativeBridgeError());
1098
+ };
1099
+ setTimeout(poll, 0);
1100
+ });
1101
+ }
1102
+ async function waitForByteArray(handle, ffi = pendingByteArrayFfi) {
1103
+ return await new Promise((resolve, reject) => {
1104
+ const poll = () => {
1105
+ const status = Number(ffi.poll(handle));
1106
+ if (status === 0) {
1107
+ setTimeout(poll, 0);
1108
+ return;
1109
+ }
1110
+ if (status === 1) {
1111
+ try {
1112
+ const consumed = ffi.consume(handle);
1113
+ if (!consumed) {
1114
+ throw buildNativeBridgeError();
1115
+ }
1116
+ if (typeof consumed === 'number') {
1117
+ const arrayPtr = Number(consumed);
1118
+ if (!arrayPtr) {
1119
+ throw buildNativeBridgeError();
1120
+ }
1121
+ resolve(readByteArray(arrayPtr));
1122
+ return;
1123
+ }
1124
+ if (consumed instanceof Uint8Array) {
1125
+ resolve(new Uint8Array(consumed));
1126
+ return;
1127
+ }
1128
+ throw buildNativeBridgeError();
1129
+ }
1130
+ catch (error) {
1131
+ reject(error);
1132
+ }
1133
+ return;
1134
+ }
1135
+ // status === -1 or unexpected
1136
+ reject(buildNativeBridgeError());
1137
+ };
1138
+ setTimeout(poll, 0);
1139
+ });
1140
+ }
1141
+ function readLastErrorText() {
1142
+ const lenBuffer = new BigUint64Array(1);
1143
+ const errPtr = Number(temporal_bun_error_message(ptr(lenBuffer)));
1144
+ const len = Number(lenBuffer[0]);
1145
+ if (!errPtr || len === 0) {
1146
+ return 'Unknown native error';
1147
+ }
1148
+ try {
1149
+ const errPtrWrapped = errPtr;
1150
+ const buffer = Buffer.from(toArrayBuffer(errPtrWrapped, 0, len));
1151
+ return buffer.toString('utf8');
1152
+ }
1153
+ finally {
1154
+ temporal_bun_error_free(errPtr, len);
1155
+ }
1156
+ }
1157
+ function readLastErrorPayload() {
1158
+ const raw = readLastErrorText();
1159
+ if (!raw) {
1160
+ return {
1161
+ code: UNKNOWN_NATIVE_ERROR_CODE,
1162
+ message: 'Unknown native error',
1163
+ raw,
1164
+ };
1165
+ }
1166
+ try {
1167
+ const parsed = JSON.parse(raw);
1168
+ if (typeof parsed.message === 'string') {
1169
+ return {
1170
+ code: typeof parsed.code === 'number' ? parsed.code : UNKNOWN_NATIVE_ERROR_CODE,
1171
+ message: parsed.message,
1172
+ details: parsed.details,
1173
+ raw,
1174
+ };
1175
+ }
1176
+ }
1177
+ catch {
1178
+ // fall through to default handling when the payload is not valid JSON
1179
+ }
1180
+ if (raw.startsWith('temporal-bun-bridge-zig:')) {
1181
+ const message = raw.replace(/^temporal-bun-bridge-zig:\s*/, '');
1182
+ const code = mapZigErrorCode(message);
1183
+ return {
1184
+ code,
1185
+ message,
1186
+ details: { source: 'zig', raw },
1187
+ raw: JSON.stringify({ code, message }),
1188
+ };
1189
+ }
1190
+ return {
1191
+ code: UNKNOWN_NATIVE_ERROR_CODE,
1192
+ message: raw,
1193
+ raw,
1194
+ };
1195
+ }
1196
+ function mapZigErrorCode(message) {
1197
+ if (/received null runtime handle/i.test(message)) {
1198
+ return 3;
1199
+ }
1200
+ if (/is not implemented yet/i.test(message)) {
1201
+ return 12;
1202
+ }
1203
+ return UNKNOWN_NATIVE_ERROR_CODE;
1204
+ }
1205
+ function buildNativeBridgeError() {
1206
+ return new NativeBridgeError(readLastErrorPayload());
1207
+ }
1208
+ //# sourceMappingURL=native.js.map