@qlever-llc/trellis 0.10.9 → 0.10.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/esm/client.d.ts +2 -0
  2. package/esm/client.d.ts.map +1 -1
  3. package/esm/client.js +2 -0
  4. package/esm/client_connect.d.ts +3 -2
  5. package/esm/client_connect.d.ts.map +1 -1
  6. package/esm/client_connect.js +4 -1
  7. package/esm/generated-sdk/auth/api.d.ts.map +1 -1
  8. package/esm/generated-sdk/auth/client.d.ts.map +1 -1
  9. package/esm/generated-sdk/auth/contract.d.ts.map +1 -1
  10. package/esm/generated-sdk/auth/contract.js +9590 -7
  11. package/esm/generated-sdk/auth/mod.d.ts +3 -3
  12. package/esm/generated-sdk/auth/mod.d.ts.map +1 -1
  13. package/esm/generated-sdk/auth/mod.js +1 -1
  14. package/esm/generated-sdk/auth/owned_api.d.ts.map +1 -1
  15. package/esm/generated-sdk/auth/owned_api.js +305 -62
  16. package/esm/generated-sdk/auth/schemas.d.ts.map +1 -1
  17. package/esm/generated-sdk/auth/schemas.js +6492 -139
  18. package/esm/generated-sdk/auth/types.d.ts +254 -254
  19. package/esm/generated-sdk/auth/types.d.ts.map +1 -1
  20. package/esm/generated-sdk/health/api.d.ts.map +1 -1
  21. package/esm/generated-sdk/health/client.d.ts.map +1 -1
  22. package/esm/generated-sdk/health/contract.d.ts.map +1 -1
  23. package/esm/generated-sdk/health/contract.js +117 -7
  24. package/esm/generated-sdk/health/mod.d.ts +2 -2
  25. package/esm/generated-sdk/health/mod.d.ts.map +1 -1
  26. package/esm/generated-sdk/health/mod.js +1 -1
  27. package/esm/generated-sdk/health/owned_api.d.ts.map +1 -1
  28. package/esm/generated-sdk/health/schemas.d.ts.map +1 -1
  29. package/esm/generated-sdk/health/schemas.js +79 -1
  30. package/esm/generated-sdk/health/types.d.ts +4 -4
  31. package/esm/generated-sdk/health/types.d.ts.map +1 -1
  32. package/esm/generated-sdk/jobs/api.d.ts.map +1 -1
  33. package/esm/generated-sdk/jobs/api.js +12 -4
  34. package/esm/generated-sdk/jobs/client.d.ts.map +1 -1
  35. package/esm/generated-sdk/jobs/contract.d.ts.map +1 -1
  36. package/esm/generated-sdk/jobs/contract.js +1080 -7
  37. package/esm/generated-sdk/jobs/mod.d.ts +2 -2
  38. package/esm/generated-sdk/jobs/mod.d.ts.map +1 -1
  39. package/esm/generated-sdk/jobs/mod.js +1 -1
  40. package/esm/generated-sdk/jobs/owned_api.d.ts.map +1 -1
  41. package/esm/generated-sdk/jobs/owned_api.js +26 -6
  42. package/esm/generated-sdk/jobs/schemas.d.ts.map +1 -1
  43. package/esm/generated-sdk/jobs/schemas.js +768 -18
  44. package/esm/generated-sdk/jobs/types.d.ts +14 -14
  45. package/esm/generated-sdk/jobs/types.d.ts.map +1 -1
  46. package/esm/generated-sdk/state/api.d.ts.map +1 -1
  47. package/esm/generated-sdk/state/api.js +3 -1
  48. package/esm/generated-sdk/state/client.d.ts.map +1 -1
  49. package/esm/generated-sdk/state/contract.d.ts.map +1 -1
  50. package/esm/generated-sdk/state/contract.js +638 -7
  51. package/esm/generated-sdk/state/mod.d.ts +2 -2
  52. package/esm/generated-sdk/state/mod.d.ts.map +1 -1
  53. package/esm/generated-sdk/state/mod.js +1 -1
  54. package/esm/generated-sdk/state/owned_api.d.ts.map +1 -1
  55. package/esm/generated-sdk/state/owned_api.js +36 -8
  56. package/esm/generated-sdk/state/schemas.d.ts.map +1 -1
  57. package/esm/generated-sdk/state/schemas.js +441 -14
  58. package/esm/generated-sdk/state/types.d.ts +15 -15
  59. package/esm/generated-sdk/state/types.d.ts.map +1 -1
  60. package/esm/generated-sdk/trellis-core/api.d.ts.map +1 -1
  61. package/esm/generated-sdk/trellis-core/client.d.ts.map +1 -1
  62. package/esm/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  63. package/esm/generated-sdk/trellis-core/contract.js +744 -7
  64. package/esm/generated-sdk/trellis-core/mod.d.ts +2 -2
  65. package/esm/generated-sdk/trellis-core/mod.d.ts.map +1 -1
  66. package/esm/generated-sdk/trellis-core/mod.js +1 -1
  67. package/esm/generated-sdk/trellis-core/owned_api.d.ts.map +1 -1
  68. package/esm/generated-sdk/trellis-core/owned_api.js +1 -1
  69. package/esm/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  70. package/esm/generated-sdk/trellis-core/schemas.js +626 -8
  71. package/esm/generated-sdk/trellis-core/types.d.ts +14 -14
  72. package/esm/generated-sdk/trellis-core/types.d.ts.map +1 -1
  73. package/esm/server/health.d.ts.map +1 -1
  74. package/esm/server/health.js +34 -3
  75. package/esm/server/service.d.ts +35 -13
  76. package/esm/server/service.d.ts.map +1 -1
  77. package/esm/server/service.js +33 -3
  78. package/esm/server.d.ts.map +1 -1
  79. package/esm/server.js +49 -8
  80. package/esm/service/deno.d.ts +1 -1
  81. package/esm/service/deno.d.ts.map +1 -1
  82. package/esm/service/mod.d.ts +1 -1
  83. package/esm/service/mod.d.ts.map +1 -1
  84. package/esm/service/node.d.ts +1 -1
  85. package/esm/service/node.d.ts.map +1 -1
  86. package/esm/trellis.d.ts +28 -4
  87. package/esm/trellis.d.ts.map +1 -1
  88. package/esm/trellis.js +117 -26
  89. package/package.json +2 -2
  90. package/script/client.d.ts +2 -0
  91. package/script/client.d.ts.map +1 -1
  92. package/script/client.js +2 -0
  93. package/script/client_connect.d.ts +3 -2
  94. package/script/client_connect.d.ts.map +1 -1
  95. package/script/client_connect.js +4 -1
  96. package/script/generated-sdk/auth/api.d.ts.map +1 -1
  97. package/script/generated-sdk/auth/client.d.ts.map +1 -1
  98. package/script/generated-sdk/auth/contract.d.ts.map +1 -1
  99. package/script/generated-sdk/auth/contract.js +9590 -7
  100. package/script/generated-sdk/auth/mod.d.ts +3 -3
  101. package/script/generated-sdk/auth/mod.d.ts.map +1 -1
  102. package/script/generated-sdk/auth/mod.js +2 -2
  103. package/script/generated-sdk/auth/owned_api.d.ts.map +1 -1
  104. package/script/generated-sdk/auth/owned_api.js +304 -61
  105. package/script/generated-sdk/auth/schemas.d.ts.map +1 -1
  106. package/script/generated-sdk/auth/schemas.js +6492 -139
  107. package/script/generated-sdk/auth/types.d.ts +254 -254
  108. package/script/generated-sdk/auth/types.d.ts.map +1 -1
  109. package/script/generated-sdk/health/api.d.ts.map +1 -1
  110. package/script/generated-sdk/health/client.d.ts.map +1 -1
  111. package/script/generated-sdk/health/contract.d.ts.map +1 -1
  112. package/script/generated-sdk/health/contract.js +117 -7
  113. package/script/generated-sdk/health/mod.d.ts +2 -2
  114. package/script/generated-sdk/health/mod.d.ts.map +1 -1
  115. package/script/generated-sdk/health/mod.js +2 -2
  116. package/script/generated-sdk/health/owned_api.d.ts.map +1 -1
  117. package/script/generated-sdk/health/schemas.d.ts.map +1 -1
  118. package/script/generated-sdk/health/schemas.js +79 -1
  119. package/script/generated-sdk/health/types.d.ts +4 -4
  120. package/script/generated-sdk/health/types.d.ts.map +1 -1
  121. package/script/generated-sdk/jobs/api.d.ts.map +1 -1
  122. package/script/generated-sdk/jobs/api.js +12 -4
  123. package/script/generated-sdk/jobs/client.d.ts.map +1 -1
  124. package/script/generated-sdk/jobs/contract.d.ts.map +1 -1
  125. package/script/generated-sdk/jobs/contract.js +1080 -7
  126. package/script/generated-sdk/jobs/mod.d.ts +2 -2
  127. package/script/generated-sdk/jobs/mod.d.ts.map +1 -1
  128. package/script/generated-sdk/jobs/mod.js +2 -2
  129. package/script/generated-sdk/jobs/owned_api.d.ts.map +1 -1
  130. package/script/generated-sdk/jobs/owned_api.js +25 -5
  131. package/script/generated-sdk/jobs/schemas.d.ts.map +1 -1
  132. package/script/generated-sdk/jobs/schemas.js +768 -18
  133. package/script/generated-sdk/jobs/types.d.ts +14 -14
  134. package/script/generated-sdk/jobs/types.d.ts.map +1 -1
  135. package/script/generated-sdk/state/api.d.ts.map +1 -1
  136. package/script/generated-sdk/state/api.js +3 -1
  137. package/script/generated-sdk/state/client.d.ts.map +1 -1
  138. package/script/generated-sdk/state/contract.d.ts.map +1 -1
  139. package/script/generated-sdk/state/contract.js +638 -7
  140. package/script/generated-sdk/state/mod.d.ts +2 -2
  141. package/script/generated-sdk/state/mod.d.ts.map +1 -1
  142. package/script/generated-sdk/state/mod.js +2 -2
  143. package/script/generated-sdk/state/owned_api.d.ts.map +1 -1
  144. package/script/generated-sdk/state/owned_api.js +35 -7
  145. package/script/generated-sdk/state/schemas.d.ts.map +1 -1
  146. package/script/generated-sdk/state/schemas.js +441 -14
  147. package/script/generated-sdk/state/types.d.ts +15 -15
  148. package/script/generated-sdk/state/types.d.ts.map +1 -1
  149. package/script/generated-sdk/trellis-core/api.d.ts.map +1 -1
  150. package/script/generated-sdk/trellis-core/client.d.ts.map +1 -1
  151. package/script/generated-sdk/trellis-core/contract.d.ts.map +1 -1
  152. package/script/generated-sdk/trellis-core/contract.js +744 -7
  153. package/script/generated-sdk/trellis-core/mod.d.ts +2 -2
  154. package/script/generated-sdk/trellis-core/mod.d.ts.map +1 -1
  155. package/script/generated-sdk/trellis-core/mod.js +2 -2
  156. package/script/generated-sdk/trellis-core/owned_api.d.ts.map +1 -1
  157. package/script/generated-sdk/trellis-core/schemas.d.ts.map +1 -1
  158. package/script/generated-sdk/trellis-core/schemas.js +626 -8
  159. package/script/generated-sdk/trellis-core/types.d.ts +14 -14
  160. package/script/generated-sdk/trellis-core/types.d.ts.map +1 -1
  161. package/script/server/health.d.ts.map +1 -1
  162. package/script/server/health.js +34 -3
  163. package/script/server/service.d.ts +35 -13
  164. package/script/server/service.d.ts.map +1 -1
  165. package/script/server/service.js +32 -2
  166. package/script/server.d.ts.map +1 -1
  167. package/script/server.js +48 -7
  168. package/script/service/deno.d.ts +1 -1
  169. package/script/service/deno.d.ts.map +1 -1
  170. package/script/service/mod.d.ts +1 -1
  171. package/script/service/mod.d.ts.map +1 -1
  172. package/script/service/node.d.ts +1 -1
  173. package/script/service/node.d.ts.map +1 -1
  174. package/script/trellis.d.ts +28 -4
  175. package/script/trellis.d.ts.map +1 -1
  176. package/script/trellis.js +118 -26
  177. package/src/client.ts +4 -0
  178. package/src/client_connect.ts +11 -9
  179. package/src/sdk/_generated/auth/api.ts +10 -21
  180. package/src/sdk/_generated/auth/client.ts +1178 -160
  181. package/src/sdk/_generated/auth/contract.ts +9637 -13
  182. package/src/sdk/_generated/auth/mod.ts +22 -3
  183. package/src/sdk/_generated/auth/owned_api.ts +897 -264
  184. package/src/sdk/_generated/auth/schemas.ts +6630 -278
  185. package/src/sdk/_generated/auth/types.ts +2950 -359
  186. package/src/sdk/_generated/core/api.ts +10 -21
  187. package/src/sdk/_generated/core/client.ts +105 -12
  188. package/src/sdk/_generated/core/contract.ts +774 -13
  189. package/src/sdk/_generated/core/mod.ts +17 -2
  190. package/src/sdk/_generated/core/owned_api.ts +40 -24
  191. package/src/sdk/_generated/core/schemas.ts +626 -9
  192. package/src/sdk/_generated/core/types.ts +233 -18
  193. package/src/sdk/_generated/health/api.ts +10 -21
  194. package/src/sdk/_generated/health/client.ts +104 -8
  195. package/src/sdk/_generated/health/contract.ts +144 -13
  196. package/src/sdk/_generated/health/mod.ts +17 -2
  197. package/src/sdk/_generated/health/owned_api.ts +4 -9
  198. package/src/sdk/_generated/health/schemas.ts +79 -2
  199. package/src/sdk/_generated/health/types.ts +31 -4
  200. package/src/sdk/_generated/jobs/api.ts +20 -18
  201. package/src/sdk/_generated/jobs/client.ts +199 -28
  202. package/src/sdk/_generated/jobs/contract.ts +1119 -13
  203. package/src/sdk/_generated/jobs/mod.ts +17 -2
  204. package/src/sdk/_generated/jobs/owned_api.ts +64 -27
  205. package/src/sdk/_generated/jobs/schemas.ts +776 -20
  206. package/src/sdk/_generated/jobs/types.ts +407 -34
  207. package/src/sdk/_generated/state/api.ts +11 -18
  208. package/src/sdk/_generated/state/client.ts +169 -22
  209. package/src/sdk/_generated/state/contract.ts +670 -13
  210. package/src/sdk/_generated/state/mod.ts +17 -2
  211. package/src/sdk/_generated/state/owned_api.ts +65 -25
  212. package/src/sdk/_generated/state/schemas.ts +441 -15
  213. package/src/sdk/_generated/state/types.ts +229 -26
  214. package/src/server/health.ts +41 -3
  215. package/src/server/service.ts +140 -18
  216. package/src/server.ts +62 -7
  217. package/src/service/deno.ts +4 -0
  218. package/src/service/mod.ts +4 -0
  219. package/src/service/node.ts +4 -0
  220. package/src/trellis.ts +167 -55
package/script/trellis.js CHANGED
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _Trellis_instances, _Trellis_log, _Trellis_tasks, _Trellis_hasExplicitApi, _Trellis_noResponderMaxRetries, _Trellis_noResponderRetryMs, _Trellis_onSessionNotFound, _Trellis_operationStore, _Trellis_eventConsumers, _Trellis_durableEventLoops, _Trellis_createStateFacade, _Trellis_createRpcFacade, _Trellis_createRpcHandleFacade, _Trellis_createEventFacade, _Trellis_createEventPublishFacade, _Trellis_createFeedFacade, _Trellis_createHandlerTrellis, _Trellis_createOperationFacade, _Trellis_unknownApiError, _Trellis_requestBuiltRpcUnknown, _Trellis_requestBuiltRpc, _Trellis_handleBrowserAuthRequired, _Trellis_authenticateFeedRequest, _Trellis_subscribeFeed, _Trellis_handleFeed, _Trellis_processFeedMessage, _Trellis_handleRPC, _Trellis_processRPCMessage, _Trellis_respondWithPayload, _Trellis_respondWithError, _Trellis_startEphemeralEvent, _Trellis_resolveEventConsumerGroup, _Trellis_registerDurableEventHandler, _Trellis_startDurableEventConsumer, _Trellis_durableEventConsumerGroupReady, _Trellis_runDurableEventConsumer, _Trellis_handleDurableEvent, _Trellis_handleDurableEventConsumer, _Trellis_parseEventMessage, _Trellis_escapeSubjectToken, _Trellis_currentIat, _Trellis_createProof, _Trellis_requestMessageWithRetry, _Trellis_requestJson, _Trellis_watchJson;
13
+ var _Trellis_instances, _Trellis_log, _Trellis_tasks, _Trellis_hasExplicitApi, _Trellis_noResponderMaxRetries, _Trellis_noResponderRetryMs, _Trellis_onSessionNotFound, _Trellis_operationStore, _Trellis_eventConsumers, _Trellis_durableEventLoops, _Trellis_createStateFacade, _Trellis_createRpcFacade, _Trellis_createRpcHandleFacade, _Trellis_createEventFacade, _Trellis_createEventPublishFacade, _Trellis_createFeedFacade, _Trellis_createHandlerTrellis, _Trellis_createOperationFacade, _Trellis_unknownApiError, _Trellis_requestBuiltRpcUnknown, _Trellis_requestBuiltRpc, _Trellis_handleBrowserAuthRequired, _Trellis_authenticateFeedRequest, _Trellis_subscribeFeed, _Trellis_handleFeed, _Trellis_processFeedMessage, _Trellis_handleRPC, _Trellis_processRPCMessage, _Trellis_respondWithPayload, _Trellis_respondWithError, _Trellis_startEphemeralEvent, _Trellis_invokeEventHandler, _Trellis_resolveEventConsumerGroup, _Trellis_registerDurableEventHandler, _Trellis_startDurableEventConsumer, _Trellis_durableEventConsumerGroupReady, _Trellis_runDurableEventConsumer, _Trellis_handleDurableEvent, _Trellis_handleDurableEventConsumer, _Trellis_parseEventMessage, _Trellis_escapeSubjectToken, _Trellis_currentIat, _Trellis_createProof, _Trellis_requestMessageWithRetry, _Trellis_requestJson, _Trellis_watchJson;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.Trellis = exports.DurableOperationRecordSchema = void 0;
16
16
  exports.safeJson = safeJson;
@@ -21,6 +21,7 @@ exports.sha256 = sha256;
21
21
  exports.buildProofInput = buildProofInput;
22
22
  exports.isOperationDeferred = isOperationDeferred;
23
23
  exports.isResultLike = isResultLike;
24
+ exports.annotateHandlerBoundaryError = annotateHandlerBoundaryError;
24
25
  exports.buildRuntimeOperationSnapshot = buildRuntimeOperationSnapshot;
25
26
  exports.isTerminalRuntimeOperationSnapshot = isTerminalRuntimeOperationSnapshot;
26
27
  exports.createTrellisInternal = createTrellisInternal;
@@ -204,6 +205,21 @@ function isOperationDeferred(value) {
204
205
  function isResultLike(value) {
205
206
  return value instanceof result_1.Result;
206
207
  }
208
+ function compactHandlerErrorContext(context) {
209
+ return Object.fromEntries(Object.entries(context).filter(([key, value]) => key !== "traceId" && value !== undefined));
210
+ }
211
+ function sanitizeHandlerErrorContext(error) {
212
+ delete error.getContext().subject;
213
+ }
214
+ function annotateHandlerBoundaryError(cause, context) {
215
+ const error = cause instanceof result_1.BaseError && !(cause instanceof RemoteError_js_1.RemoteError)
216
+ ? cause
217
+ : new index_js_1.UnexpectedError({ cause });
218
+ sanitizeHandlerErrorContext(error);
219
+ error.withContext(compactHandlerErrorContext(context));
220
+ error.withTraceId(context.traceId);
221
+ return error;
222
+ }
207
223
  const DurableOperationSignalSchema = typebox_1.Type.Object({
208
224
  operationId: typebox_1.Type.String(),
209
225
  sequence: typebox_1.Type.Number(),
@@ -234,8 +250,11 @@ const DurableOperationSnapshotSchema = typebox_1.Type.Object({
234
250
  })),
235
251
  output: typebox_1.Type.Optional(typebox_1.Type.Any()),
236
252
  error: typebox_1.Type.Optional(typebox_1.Type.Object({
253
+ id: typebox_1.Type.Optional(typebox_1.Type.String()),
237
254
  type: typebox_1.Type.String(),
238
255
  message: typebox_1.Type.String(),
256
+ context: typebox_1.Type.Optional(typebox_1.Type.Record(typebox_1.Type.String(), typebox_1.Type.Unknown())),
257
+ traceId: typebox_1.Type.Optional(typebox_1.Type.String()),
239
258
  })),
240
259
  });
241
260
  exports.DurableOperationRecordSchema = typebox_1.Type.Object({
@@ -741,6 +760,18 @@ class Trellis {
741
760
  writable: true,
742
761
  value: void 0
743
762
  });
763
+ Object.defineProperty(this, "contractId", {
764
+ enumerable: true,
765
+ configurable: true,
766
+ writable: true,
767
+ value: void 0
768
+ });
769
+ Object.defineProperty(this, "contractDigest", {
770
+ enumerable: true,
771
+ configurable: true,
772
+ writable: true,
773
+ value: void 0
774
+ });
744
775
  Object.defineProperty(this, "nats", {
745
776
  enumerable: true,
746
777
  configurable: true,
@@ -783,6 +814,8 @@ class Trellis {
783
814
  __classPrivateFieldSet(this, _Trellis_log, (opts?.log ?? globals_js_1.logger).child({ lib: "trellis" }), "f");
784
815
  this.timeout = opts?.timeout ?? 3000;
785
816
  this.stream = opts?.stream ?? "trellis";
817
+ this.contractId = opts?.contractId;
818
+ this.contractDigest = opts?.contractDigest;
786
819
  __classPrivateFieldSet(this, _Trellis_hasExplicitApi, api !== undefined, "f");
787
820
  __classPrivateFieldSet(this, _Trellis_noResponderMaxRetries, opts?.noResponderRetry?.maxAttempts ??
788
821
  DEFAULT_NO_RESPONDER_MAX_RETRIES, "f");
@@ -1543,9 +1576,14 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1543
1576
  }
1544
1577
  }
1545
1578
  catch (cause) {
1546
- const error = cause instanceof result_1.BaseError
1547
- ? cause
1548
- : new index_js_1.UnexpectedError({ cause });
1579
+ const error = annotateHandlerBoundaryError(cause, {
1580
+ feed,
1581
+ requestId: msg.headers?.get("request-id"),
1582
+ service: this.name,
1583
+ contractId: this.contractId,
1584
+ contractDigest: this.contractDigest,
1585
+ traceId: traceIdFromTraceparent(msg.headers?.get("traceparent")),
1586
+ });
1549
1587
  __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_respondWithError).call(this, msg, error);
1550
1588
  }
1551
1589
  })();
@@ -1580,7 +1618,7 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1580
1618
  await this.nats.flush();
1581
1619
  const controller = new AbortController();
1582
1620
  try {
1583
- await handler({
1621
+ const handlerResult = await handler({
1584
1622
  input: parsed,
1585
1623
  caller: callerValue,
1586
1624
  signal: controller.signal,
@@ -1598,6 +1636,19 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1598
1636
  return (0, result_1.ok)(undefined);
1599
1637
  })()),
1600
1638
  });
1639
+ const handlerOutcome = isResultLike(handlerResult)
1640
+ ? handlerResult.take()
1641
+ : handlerResult;
1642
+ if ((0, result_1.isErr)(handlerOutcome)) {
1643
+ return (0, result_1.err)(annotateHandlerBoundaryError(handlerOutcome.error, {
1644
+ feed,
1645
+ requestId: msg.headers?.get("request-id"),
1646
+ service: this.name,
1647
+ contractId: this.contractId,
1648
+ contractDigest: this.contractDigest,
1649
+ traceId: traceIdFromTraceparent(msg.headers?.get("traceparent")),
1650
+ }));
1651
+ }
1601
1652
  return (0, result_1.ok)(undefined);
1602
1653
  }
1603
1654
  finally {
@@ -1830,7 +1881,14 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1830
1881
  client: handlerTrellis,
1831
1882
  })));
1832
1883
  if (handlerResultWrapped.isErr()) {
1833
- const error = handlerResultWrapped.error.withContext({ method });
1884
+ const error = annotateHandlerBoundaryError(handlerResultWrapped.error, {
1885
+ method: String(method),
1886
+ requestId: msg.headers?.get("request-id"),
1887
+ service: this.name,
1888
+ contractId: this.contractId,
1889
+ contractDigest: this.contractDigest,
1890
+ traceId: activeTraceId(span) ?? incomingTraceId,
1891
+ });
1834
1892
  __classPrivateFieldGet(this, _Trellis_log, "f").error({
1835
1893
  method,
1836
1894
  error: error.message,
@@ -1848,11 +1906,14 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1848
1906
  const handlerResult = handlerResultWrapped.take();
1849
1907
  const handlerOutcome = handlerResult.take();
1850
1908
  if ((0, result_1.isErr)(handlerOutcome)) {
1851
- const handlerError = handlerOutcome.error;
1852
- const error = handlerError instanceof result_1.BaseError &&
1853
- !(handlerError instanceof RemoteError_js_1.RemoteError)
1854
- ? handlerError
1855
- : new index_js_1.UnexpectedError({ cause: handlerError });
1909
+ const error = annotateHandlerBoundaryError(handlerOutcome.error, {
1910
+ method: String(method),
1911
+ requestId: msg.headers?.get("request-id"),
1912
+ service: this.name,
1913
+ contractId: this.contractId,
1914
+ contractDigest: this.contractDigest,
1915
+ traceId: activeTraceId(span) ?? incomingTraceId,
1916
+ });
1856
1917
  __classPrivateFieldGet(this, _Trellis_log, "f").error({
1857
1918
  method,
1858
1919
  error: error.message,
@@ -1951,15 +2012,17 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1951
2012
  __classPrivateFieldGet(this, _Trellis_log, "f").error({ error: m.error }, "Event validation failed");
1952
2013
  continue;
1953
2014
  }
1954
- const handlerResult = await result_1.AsyncResult.lift(fn(m, createEventListenerContext({
2015
+ const handlerResult = await __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_invokeEventHandler).call(this, {
2016
+ event,
1955
2017
  payload: m,
1956
- subject: msg.subject,
1957
2018
  mode: "ephemeral",
1958
2019
  message: msg,
1959
- })));
1960
- if (handlerResult.isErr()) {
2020
+ fn,
2021
+ });
2022
+ const handlerValue = handlerResult.take();
2023
+ if ((0, result_1.isErr)(handlerValue)) {
1961
2024
  __classPrivateFieldGet(this, _Trellis_log, "f").error({
1962
- error: handlerResult.error.toSerializable(),
2025
+ error: handlerValue.error.toSerializable(),
1963
2026
  event,
1964
2027
  subject: msg.subject,
1965
2028
  }, "Event handler failed");
@@ -1968,6 +2031,31 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
1968
2031
  });
1969
2032
  __classPrivateFieldGet(this, _Trellis_tasks, "f").add(`event:${event}:${(0, ulid_1.ulid)()}`, task);
1970
2033
  return (0, result_1.ok)(undefined);
2034
+ }, _Trellis_invokeEventHandler = async function _Trellis_invokeEventHandler(args) {
2035
+ const annotation = {
2036
+ event: String(args.event),
2037
+ service: this.name,
2038
+ contractId: this.contractId,
2039
+ contractDigest: this.contractDigest,
2040
+ traceId: traceIdFromTraceparent(args.message.headers?.get("traceparent")),
2041
+ };
2042
+ try {
2043
+ const result = await Promise.resolve(args.fn(args.payload, createEventListenerContext({
2044
+ payload: args.payload,
2045
+ subject: args.message.subject,
2046
+ mode: args.mode,
2047
+ ...(args.group ? { group: args.group } : {}),
2048
+ message: args.message,
2049
+ })));
2050
+ const outcome = isResultLike(result) ? result.take() : result;
2051
+ if ((0, result_1.isErr)(outcome)) {
2052
+ return (0, result_1.err)(annotateHandlerBoundaryError(outcome.error, annotation));
2053
+ }
2054
+ return (0, result_1.ok)(undefined);
2055
+ }
2056
+ catch (cause) {
2057
+ return (0, result_1.err)(annotateHandlerBoundaryError(cause, annotation));
2058
+ }
1971
2059
  }, _Trellis_resolveEventConsumerGroup = function _Trellis_resolveEventConsumerGroup(event, opts) {
1972
2060
  const metadata = __classPrivateFieldGet(this, _Trellis_eventConsumers, "f").metadata;
1973
2061
  const bindings = __classPrivateFieldGet(this, _Trellis_eventConsumers, "f").bindings ?? {};
@@ -2093,15 +2181,17 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2093
2181
  msg.term();
2094
2182
  continue;
2095
2183
  }
2096
- const handlerResult = await result_1.AsyncResult.lift(fn(m, createEventListenerContext({
2184
+ const handlerResult = await __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_invokeEventHandler).call(this, {
2185
+ event,
2097
2186
  payload: m,
2098
- subject: msg.subject,
2099
2187
  mode: "durable",
2100
2188
  message: msg,
2101
- })));
2102
- if (handlerResult.isErr()) {
2189
+ fn,
2190
+ });
2191
+ const handlerValue = handlerResult.take();
2192
+ if ((0, result_1.isErr)(handlerValue)) {
2103
2193
  __classPrivateFieldGet(this, _Trellis_log, "f").error({
2104
- error: handlerResult.error.toSerializable(),
2194
+ error: handlerValue.error.toSerializable(),
2105
2195
  event,
2106
2196
  subject: msg.subject,
2107
2197
  }, "Event handler failed");
@@ -2134,16 +2224,18 @@ _Trellis_log = new WeakMap(), _Trellis_tasks = new WeakMap(), _Trellis_hasExplic
2134
2224
  failed = true;
2135
2225
  break;
2136
2226
  }
2137
- const handlerResult = await result_1.AsyncResult.lift(registration.fn(eventPayload, createEventListenerContext({
2227
+ const handlerResult = await __classPrivateFieldGet(this, _Trellis_instances, "m", _Trellis_invokeEventHandler).call(this, {
2228
+ event: registration.event,
2138
2229
  payload: eventPayload,
2139
- subject: msg.subject,
2140
2230
  mode: "durable",
2141
2231
  group,
2142
2232
  message: msg,
2143
- })));
2144
- if (handlerResult.isErr()) {
2233
+ fn: registration.fn,
2234
+ });
2235
+ const handlerValue = handlerResult.take();
2236
+ if ((0, result_1.isErr)(handlerValue)) {
2145
2237
  __classPrivateFieldGet(this, _Trellis_log, "f").error({
2146
- error: handlerResult.error.toSerializable(),
2238
+ error: handlerValue.error.toSerializable(),
2147
2239
  event: registration.event,
2148
2240
  subject: msg.subject,
2149
2241
  }, "Event handler failed");
package/src/client.ts CHANGED
@@ -50,6 +50,8 @@ type ClientContractManifest = {
50
50
  };
51
51
 
52
52
  type ClientContractShape = {
53
+ CONTRACT_ID?: string;
54
+ CONTRACT_DIGEST?: string;
53
55
  CONTRACT: ClientContractManifest;
54
56
  API: {
55
57
  owned?: TrellisAPI;
@@ -120,6 +122,8 @@ export function createClient<
120
122
  noResponderRetry: opts?.noResponderRetry,
121
123
  api,
122
124
  state: contract[CONTRACT_STATE_METADATA],
125
+ contractId: contract.CONTRACT_ID,
126
+ contractDigest: contract.CONTRACT_DIGEST,
123
127
  },
124
128
  );
125
129
  }
@@ -224,13 +224,12 @@ const ClientTransportsSchema = Type.Object({
224
224
  type ClientConnectDeps = {
225
225
  loadTransport(): Promise<RuntimeTransport>;
226
226
  now(): number;
227
- setInterval?: (
228
- handler: () => void,
229
- ms: number,
230
- ) => ReturnType<typeof globalThis.setInterval>;
231
- clearInterval?: (id: ReturnType<typeof globalThis.setInterval>) => void;
227
+ setInterval?: (handler: () => void, ms: number) => IntervalHandle;
228
+ clearInterval?: (id: IntervalHandle) => void;
232
229
  };
233
230
 
231
+ type IntervalHandle = ReturnType<typeof globalThis.setInterval> | number;
232
+
234
233
  const ClientBootstrapReadySchema = Type.Object({
235
234
  status: Type.Literal("ready"),
236
235
  serverNow: Type.Integer(),
@@ -800,11 +799,14 @@ async function createRuntimeUserAuthenticator(args: {
800
799
  ((
801
800
  handler: () => void,
802
801
  ms: number,
803
- ): ReturnType<typeof globalThis.setInterval> =>
804
- globalThis.setInterval(handler, ms));
802
+ ): IntervalHandle => globalThis.setInterval(handler, ms));
805
803
  const clearRefreshInterval = args.deps.clearInterval ??
806
- ((id: ReturnType<typeof globalThis.setInterval>) =>
807
- globalThis.clearInterval(id));
804
+ ((id: IntervalHandle) => {
805
+ const clearIntervalFn = globalThis.clearInterval as (
806
+ id: IntervalHandle,
807
+ ) => void;
808
+ clearIntervalFn(id);
809
+ });
808
810
  const refreshIntervalId = setRefreshInterval(() => {
809
811
  void refresh();
810
812
  }, 10_000);
@@ -4,29 +4,19 @@ import { OWNED_API } from "./owned_api.js";
4
4
  export { OWNED_API };
5
5
 
6
6
  export type UsedApi = {
7
- rpc: {
8
- };
9
- operations: {
10
- };
11
- events: {
12
- };
13
- feeds: {
14
- };
15
- subjects: {
16
- };
7
+ rpc: {};
8
+ operations: {};
9
+ events: {};
10
+ feeds: {};
11
+ subjects: {};
17
12
  };
18
13
 
19
14
  export const USED_API: UsedApi = {
20
- rpc: {
21
- },
22
- operations: {
23
- },
24
- events: {
25
- },
26
- feeds: {
27
- },
28
- subjects: {
29
- },
15
+ rpc: {},
16
+ operations: {},
17
+ events: {},
18
+ feeds: {},
19
+ subjects: {},
30
20
  };
31
21
 
32
22
  export type OwnedApi = typeof OWNED_API;
@@ -44,4 +34,3 @@ export const API = {
44
34
  } as const;
45
35
 
46
36
  export type ApiViews = typeof API;
47
-