@qlever-llc/trellis 0.10.13 → 0.10.14

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 (94) hide show
  1. package/esm/auth/browser.js +0 -1
  2. package/esm/auth.js +0 -1
  3. package/esm/browser.d.ts +29 -2
  4. package/esm/browser.d.ts.map +1 -1
  5. package/esm/browser.js +14 -3
  6. package/esm/client_connect.d.ts.map +1 -1
  7. package/esm/client_connect.js +7 -3
  8. package/esm/contract_support/mod.d.ts +5 -10
  9. package/esm/contract_support/mod.d.ts.map +1 -1
  10. package/esm/contract_support/mod.js +41 -31
  11. package/esm/contract_support/protocol.d.ts +8 -13
  12. package/esm/contract_support/protocol.d.ts.map +1 -1
  13. package/esm/contract_support/protocol.js +4 -5
  14. package/esm/contracts.js +0 -1
  15. package/esm/device.d.ts +0 -29
  16. package/esm/device.d.ts.map +1 -1
  17. package/esm/device.js +10 -1
  18. package/esm/errors/index.js +0 -1
  19. package/esm/index.d.ts +3 -4
  20. package/esm/index.d.ts.map +1 -1
  21. package/esm/index.js +3 -4
  22. package/esm/runtime_transport.d.ts.map +1 -1
  23. package/esm/runtime_transport.js +4 -2
  24. package/esm/server/health_rpc.d.ts +4 -2
  25. package/esm/server/health_rpc.d.ts.map +1 -1
  26. package/esm/server/health_rpc.js +6 -1
  27. package/esm/server/service.d.ts +12 -37
  28. package/esm/server/service.d.ts.map +1 -1
  29. package/esm/server/service.js +138 -103
  30. package/esm/server.js +3 -3
  31. package/esm/service/outbox_inbox.d.ts +1 -6
  32. package/esm/service/outbox_inbox.d.ts.map +1 -1
  33. package/esm/service/outbox_inbox.js +0 -21
  34. package/esm/telemetry/env.d.ts.map +1 -1
  35. package/esm/telemetry/env.js +5 -6
  36. package/esm/telemetry/metrics.d.ts +0 -7
  37. package/esm/telemetry/metrics.d.ts.map +1 -1
  38. package/esm/trellis.d.ts +1 -19
  39. package/esm/trellis.d.ts.map +1 -1
  40. package/esm/trellis.js +12 -8
  41. package/package.json +2 -2
  42. package/script/auth/browser.js +0 -1
  43. package/script/auth.js +0 -1
  44. package/script/browser.d.ts +29 -2
  45. package/script/browser.d.ts.map +1 -1
  46. package/script/browser.js +75 -17
  47. package/script/client_connect.d.ts.map +1 -1
  48. package/script/client_connect.js +7 -36
  49. package/script/contract_support/mod.d.ts +5 -10
  50. package/script/contract_support/mod.d.ts.map +1 -1
  51. package/script/contract_support/mod.js +43 -32
  52. package/script/contract_support/protocol.d.ts +8 -13
  53. package/script/contract_support/protocol.d.ts.map +1 -1
  54. package/script/contract_support/protocol.js +5 -6
  55. package/script/contracts.js +0 -1
  56. package/script/device.d.ts +0 -29
  57. package/script/device.d.ts.map +1 -1
  58. package/script/device.js +10 -1
  59. package/script/errors/index.js +0 -1
  60. package/script/index.d.ts +3 -4
  61. package/script/index.d.ts.map +1 -1
  62. package/script/index.js +1 -6
  63. package/script/runtime_transport.d.ts.map +1 -1
  64. package/script/runtime_transport.js +4 -2
  65. package/script/server/health_rpc.d.ts +4 -2
  66. package/script/server/health_rpc.d.ts.map +1 -1
  67. package/script/server/health_rpc.js +6 -1
  68. package/script/server/service.d.ts +12 -37
  69. package/script/server/service.d.ts.map +1 -1
  70. package/script/server/service.js +148 -112
  71. package/script/server.js +3 -3
  72. package/script/service/outbox_inbox.d.ts +1 -6
  73. package/script/service/outbox_inbox.d.ts.map +1 -1
  74. package/script/service/outbox_inbox.js +0 -21
  75. package/script/telemetry/env.d.ts.map +1 -1
  76. package/script/telemetry/env.js +5 -39
  77. package/script/telemetry/metrics.d.ts +0 -7
  78. package/script/telemetry/metrics.d.ts.map +1 -1
  79. package/script/trellis.d.ts +1 -19
  80. package/script/trellis.d.ts.map +1 -1
  81. package/script/trellis.js +12 -8
  82. package/src/browser.ts +200 -2
  83. package/src/client_connect.ts +10 -2
  84. package/src/contract_support/mod.ts +69 -45
  85. package/src/contract_support/protocol.ts +16 -7
  86. package/src/device.ts +10 -2
  87. package/src/index.ts +3 -4
  88. package/src/runtime_transport.ts +6 -1
  89. package/src/server/health_rpc.ts +7 -2
  90. package/src/server/service.ts +177 -126
  91. package/src/server.ts +3 -3
  92. package/src/service/outbox_inbox.ts +1 -28
  93. package/src/telemetry/env.ts +10 -7
  94. package/src/trellis.ts +22 -13
@@ -10,12 +10,14 @@ 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 _StoreHandle_nc, _TrellisService_instances, _TrellisService_server, _TrellisService_handlerTrellis, _TrellisService_operationTransfer, _TrellisService_stopHealthPublishing, _TrellisService_managedJobWorkers, _TrellisService_waitPromise, _TrellisService_stopPromise, _TrellisService_createBoundHealth, _TrellisService_createBoundEventFacade, _TrellisService_createHandleFacade, _TrellisService_createBoundHandleFacade, _TrellisService_operation;
13
+ var _InternalStoreHandle_nc, _TrellisService_instances, _TrellisService_server, _TrellisService_nc, _TrellisService_handlerTrellis, _TrellisService_operationTransfer, _TrellisService_stopHealthPublishing, _TrellisService_managedJobWorkers, _TrellisService_waitPromise, _TrellisService_stopPromise, _TrellisService_createBoundHealth, _TrellisService_createBoundEventFacade, _TrellisService_createHandleFacade, _TrellisService_createBoundHandleFacade, _TrellisService_operation;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.TrellisService = exports.StoreHandle = void 0;
16
16
  exports.createConnectedService = createConnectedService;
17
+ exports.connectTrellisServiceWithRuntimeDeps = connectTrellisServiceWithRuntimeDeps;
17
18
  const nats_core_1 = require("@nats-io/nats-core");
18
- const index_js_1 = require("../index.js");
19
+ const kv_js_1 = require("../kv.js");
20
+ const store_js_1 = require("../store.js");
19
21
  const auth_js_1 = require("../sdk/auth.js");
20
22
  const server_js_1 = require("../server.js");
21
23
  const auth_js_2 = require("../auth.js");
@@ -31,7 +33,7 @@ const transfer_js_1 = require("./transfer.js");
31
33
  const globals_js_1 = require("../globals.js");
32
34
  const runtime_transport_js_1 = require("../runtime_transport.js");
33
35
  const server_logger_js_1 = require("../server_logger.js");
34
- const index_js_2 = require("../errors/index.js");
36
+ const index_js_1 = require("../errors/index.js");
35
37
  const jobs_js_1 = require("../jobs.js");
36
38
  const job_manager_js_1 = require("./internal_jobs/job-manager.js");
37
39
  const runtime_worker_js_1 = require("./internal_jobs/runtime-worker.js");
@@ -346,7 +348,7 @@ async function fetchServiceBootstrapInfo(args) {
346
348
  includeContract = true;
347
349
  continue;
348
350
  }
349
- throw new index_js_2.TransportError({
351
+ throw new index_js_1.TransportError({
350
352
  code: "trellis.bootstrap.failed",
351
353
  message: `Service bootstrap failed: ${failure.message ?? failure.reason}`,
352
354
  hint: "Retry the connection. If it keeps failing, check Trellis bootstrap availability and contract activation.",
@@ -361,7 +363,7 @@ async function fetchServiceBootstrapInfo(args) {
361
363
  }
362
364
  if (!settled.response.ok) {
363
365
  const detail = settled.responseText.trim();
364
- throw new index_js_2.TransportError({
366
+ throw new index_js_1.TransportError({
365
367
  code: "trellis.bootstrap.failed",
366
368
  message: detail.length > 0
367
369
  ? `Service bootstrap failed with HTTP ${settled.response.status}: ${detail}`
@@ -376,7 +378,7 @@ async function fetchServiceBootstrapInfo(args) {
376
378
  });
377
379
  }
378
380
  if (settled.payload === undefined) {
379
- throw new index_js_2.TransportError({
381
+ throw new index_js_1.TransportError({
380
382
  code: "trellis.bootstrap.invalid_response",
381
383
  message: `Service bootstrap returned invalid JSON: ${settled.responseText.trim() || "<empty body>"}`,
382
384
  hint: "Retry the connection. If it keeps happening, check the Trellis deployment.",
@@ -397,22 +399,26 @@ async function fetchServiceBootstrapInfo(args) {
397
399
  }
398
400
  }
399
401
  class StoreHandle {
402
+ }
403
+ exports.StoreHandle = StoreHandle;
404
+ class InternalStoreHandle extends StoreHandle {
400
405
  constructor(nc, binding, token) {
406
+ super();
401
407
  Object.defineProperty(this, "binding", {
402
408
  enumerable: true,
403
409
  configurable: true,
404
410
  writable: true,
405
411
  value: void 0
406
412
  });
407
- _StoreHandle_nc.set(this, void 0);
413
+ _InternalStoreHandle_nc.set(this, void 0);
408
414
  if (token !== storeHandleConstructorToken) {
409
415
  throw new TypeError("StoreHandle instances are created by TrellisService");
410
416
  }
411
- __classPrivateFieldSet(this, _StoreHandle_nc, nc, "f");
417
+ __classPrivateFieldSet(this, _InternalStoreHandle_nc, nc, "f");
412
418
  this.binding = binding;
413
419
  }
414
420
  open() {
415
- return index_js_1.TypedStore.open(__classPrivateFieldGet(this, _StoreHandle_nc, "f"), this.binding.name, {
421
+ return store_js_1.TypedStore.open(__classPrivateFieldGet(this, _InternalStoreHandle_nc, "f"), this.binding.name, {
416
422
  ttlMs: this.binding.ttlMs,
417
423
  maxObjectBytes: this.binding.maxObjectBytes,
418
424
  maxTotalBytes: this.binding.maxTotalBytes,
@@ -426,8 +432,7 @@ class StoreHandle {
426
432
  return this.open().andThen((store) => store.waitFor(key, options));
427
433
  }
428
434
  }
429
- exports.StoreHandle = StoreHandle;
430
- _StoreHandle_nc = new WeakMap();
435
+ _InternalStoreHandle_nc = new WeakMap();
431
436
  async function openServiceKvBindings(args) {
432
437
  for (const alias of Object.keys(args.bindings)) {
433
438
  if (!args.contractKv[alias]) {
@@ -442,7 +447,7 @@ async function openServiceKvBindings(args) {
442
447
  }
443
448
  throw new Error(`Required KV binding '${alias}' is unavailable`);
444
449
  }
445
- const store = await index_js_1.TypedKV.open(args.nc, binding.bucket, metadata.schema, {
450
+ const store = await kv_js_1.TypedKV.open(args.nc, binding.bucket, metadata.schema, {
446
451
  history: binding.history,
447
452
  ttl: binding.ttlMs,
448
453
  maxValueBytes: binding.maxValueBytes,
@@ -463,6 +468,9 @@ function createServiceEventPublishFacade(outbound) {
463
468
  }
464
469
  return surface;
465
470
  }
471
+ /**
472
+ * @internal Shared by Trellis-owned service bootstrap paths.
473
+ */
466
474
  async function createConnectedService(args) {
467
475
  const resolvedLog = resolveServiceLogger(args.server.log);
468
476
  const connection = (0, connection_js_1.observeNatsTrellisConnection)({
@@ -597,10 +605,25 @@ async function createConnectedService(args) {
597
605
  auth: args.auth,
598
606
  stores: Object.fromEntries(Object.entries(args.bindings.store ?? {}).map(([alias, binding]) => [
599
607
  alias,
600
- new StoreHandle(args.nc, binding, storeHandleConstructorToken),
608
+ new InternalStoreHandle(args.nc, binding, storeHandleConstructorToken),
601
609
  ])),
602
610
  });
603
- const service = new TrellisService(args.name, args.auth, args.nc, server, outbound.event, handlerTrellis, kv, args.contractJobs, args.bindings, operationTransfer, health, stopHealthPublishing, connection, trellisServiceConstructorToken);
611
+ const service = Reflect.construct(TrellisService, [
612
+ args.name,
613
+ args.auth,
614
+ args.nc,
615
+ server,
616
+ outbound.event,
617
+ handlerTrellis,
618
+ kv,
619
+ args.contractJobs,
620
+ args.bindings,
621
+ operationTransfer,
622
+ health,
623
+ stopHealthPublishing,
624
+ connection,
625
+ trellisServiceConstructorToken,
626
+ ]);
604
627
  handlerResources = {
605
628
  kv: service.kv,
606
629
  store: service.store,
@@ -617,9 +640,9 @@ async function createConnectedService(args) {
617
640
  return service;
618
641
  }
619
642
  function toUnexpectedError(cause) {
620
- return cause instanceof index_js_2.UnexpectedError
643
+ return cause instanceof index_js_1.UnexpectedError
621
644
  ? cause
622
- : new index_js_2.UnexpectedError({ cause });
645
+ : new index_js_1.UnexpectedError({ cause });
623
646
  }
624
647
  function serializeJobHandlerError(error) {
625
648
  try {
@@ -1139,6 +1162,98 @@ function createBoundJobsFacade(args) {
1139
1162
  }
1140
1163
  return boundJobs;
1141
1164
  }
1165
+ /**
1166
+ * Connects a service with caller-supplied runtime dependencies for tests and
1167
+ * Trellis-owned internals. This helper is intentionally not re-exported from
1168
+ * public package subpaths.
1169
+ *
1170
+ * @internal
1171
+ */
1172
+ function connectTrellisServiceWithRuntimeDeps(args, deps) {
1173
+ return result_1.AsyncResult.from((async () => {
1174
+ try {
1175
+ const runtimeDeps = {
1176
+ ...(await loadDefaultServiceRuntimeDeps()),
1177
+ ...deps,
1178
+ };
1179
+ if (automaticTelemetryEnabled(args.telemetry)) {
1180
+ runtimeDeps.initTelemetry?.(args.name);
1181
+ }
1182
+ const auth = await (0, auth_js_2.createAuth)({ sessionKeySeed: args.sessionKeySeed });
1183
+ const bootstrapLog = resolveServiceLogger(args.server?.log);
1184
+ const bootstrap = await fetchServiceBootstrapInfo({
1185
+ trellisUrl: args.trellisUrl,
1186
+ serviceName: args.name,
1187
+ contractId: args.contract.CONTRACT_ID,
1188
+ contractDigest: args.contract.CONTRACT_DIGEST,
1189
+ contract: args.contract.CONTRACT,
1190
+ auth,
1191
+ log: bootstrapLog,
1192
+ });
1193
+ const { authenticator: authTokenAuthenticator, inboxPrefix } = await auth
1194
+ .natsConnectOptions({
1195
+ contractDigest: args.contract.CONTRACT_DIGEST,
1196
+ });
1197
+ let nc;
1198
+ try {
1199
+ nc = await runtimeDeps.connect({
1200
+ servers: (0, runtime_transport_js_1.selectRuntimeTransportServers)(bootstrap.connectInfo.transports),
1201
+ maxReconnectAttempts: runtime_transport_js_1.DEFAULT_RUNTIME_MAX_RECONNECT_ATTEMPTS,
1202
+ waitOnFirstConnect: runtime_transport_js_1.DEFAULT_SERVICE_RUNTIME_WAIT_ON_FIRST_CONNECT,
1203
+ inboxPrefix,
1204
+ authenticator: [
1205
+ authTokenAuthenticator,
1206
+ (0, nats_core_1.jwtAuthenticator)(bootstrap.connectInfo.transport.sentinel.jwt, new TextEncoder().encode(bootstrap.connectInfo.transport.sentinel.seed)),
1207
+ ],
1208
+ });
1209
+ }
1210
+ catch (cause) {
1211
+ throw new index_js_1.TransportError({
1212
+ code: "trellis.runtime.connect_failed",
1213
+ message: "Trellis could not open the service runtime connection.",
1214
+ hint: "Retry the connection. If it keeps failing, check Trellis transport availability.",
1215
+ cause,
1216
+ context: {
1217
+ trellisUrl: args.trellisUrl,
1218
+ contractId: args.contract.CONTRACT_ID,
1219
+ contractDigest: args.contract.CONTRACT_DIGEST,
1220
+ },
1221
+ });
1222
+ }
1223
+ try {
1224
+ const server = args.contract.API.trellis
1225
+ ? {
1226
+ ...(args.server ?? {}),
1227
+ api: args.contract.API.owned,
1228
+ trellisApi: args.contract.API.trellis,
1229
+ }
1230
+ : {
1231
+ ...(args.server ?? {}),
1232
+ api: args.contract.API.owned,
1233
+ };
1234
+ return result_1.Result.ok(await createConnectedService({
1235
+ name: args.name,
1236
+ auth,
1237
+ nc,
1238
+ contractId: args.contract.CONTRACT_ID,
1239
+ contractDigest: args.contract.CONTRACT_DIGEST,
1240
+ contractJobs: (args.contract[mod_js_1.CONTRACT_JOBS_METADATA] ?? {}),
1241
+ contractKv: (args.contract[mod_js_1.CONTRACT_KV_METADATA] ?? {}),
1242
+ contractEventConsumers: args.contract.CONTRACT.eventConsumers,
1243
+ server,
1244
+ bindings: bootstrap.binding.resources,
1245
+ }));
1246
+ }
1247
+ catch (cause) {
1248
+ await closeFailedServiceBootstrapConnection(nc);
1249
+ throw cause;
1250
+ }
1251
+ }
1252
+ catch (cause) {
1253
+ return result_1.Result.err(cause instanceof index_js_1.TransportError ? cause : toUnexpectedError(cause));
1254
+ }
1255
+ })());
1256
+ }
1142
1257
  class TrellisService {
1143
1258
  constructor(name, auth, nc, server, event, handlerTrellis, kv, contractJobs, bindings, operationTransfer, health, stopHealthPublishing, connection, token) {
1144
1259
  _TrellisService_instances.add(this);
@@ -1154,13 +1269,8 @@ class TrellisService {
1154
1269
  writable: true,
1155
1270
  value: void 0
1156
1271
  });
1157
- Object.defineProperty(this, "nc", {
1158
- enumerable: true,
1159
- configurable: true,
1160
- writable: true,
1161
- value: void 0
1162
- });
1163
1272
  _TrellisService_server.set(this, void 0);
1273
+ _TrellisService_nc.set(this, void 0);
1164
1274
  _TrellisService_handlerTrellis.set(this, void 0);
1165
1275
  /** Event lifecycle surface for service startup listeners and publishers. */
1166
1276
  Object.defineProperty(this, "event", {
@@ -1217,7 +1327,7 @@ class TrellisService {
1217
1327
  const storeBindings = bindings.store ?? {};
1218
1328
  this.name = name;
1219
1329
  this.auth = auth;
1220
- this.nc = nc;
1330
+ __classPrivateFieldSet(this, _TrellisService_nc, nc, "f");
1221
1331
  __classPrivateFieldSet(this, _TrellisService_server, server, "f");
1222
1332
  Object.defineProperty(this, "server", {
1223
1333
  value: server,
@@ -1226,7 +1336,10 @@ class TrellisService {
1226
1336
  __classPrivateFieldSet(this, _TrellisService_handlerTrellis, handlerTrellis, "f");
1227
1337
  this.event = event;
1228
1338
  this.kv = kv;
1229
- this.store = Object.fromEntries(Object.entries(storeBindings).map(([alias, binding]) => [alias, new StoreHandle(nc, binding, storeHandleConstructorToken)]));
1339
+ this.store = Object.fromEntries(Object.entries(storeBindings).map(([alias, binding]) => [
1340
+ alias,
1341
+ new InternalStoreHandle(nc, binding, storeHandleConstructorToken),
1342
+ ]));
1230
1343
  __classPrivateFieldSet(this, _TrellisService_operationTransfer, operationTransfer, "f");
1231
1344
  const jobs = createJobsFacade({
1232
1345
  serviceName: name,
@@ -1253,7 +1366,6 @@ class TrellisService {
1253
1366
  return {
1254
1367
  name: this.name,
1255
1368
  auth: this.auth,
1256
- nc: this.nc,
1257
1369
  event: __classPrivateFieldGet(this, _TrellisService_instances, "m", _TrellisService_createBoundEventFacade).call(this, deps),
1258
1370
  kv: this.kv,
1259
1371
  store: this.store,
@@ -1293,7 +1405,7 @@ class TrellisService {
1293
1405
  const current = await __classPrivateFieldGet(this, _TrellisService_server, "f").operations.get(operationId).take();
1294
1406
  if (!(0, result_1.isErr)(current) && current.state === "completed") {
1295
1407
  if (!operationOutputsEqual(current.output, output)) {
1296
- return result_1.Result.err(new index_js_2.UnexpectedError({
1408
+ return result_1.Result.err(new index_js_1.UnexpectedError({
1297
1409
  cause: new Error("operation already completed with different output"),
1298
1410
  }));
1299
1411
  }
@@ -1302,96 +1414,14 @@ class TrellisService {
1302
1414
  return result_1.Result.err(completed.error);
1303
1415
  })());
1304
1416
  }
1305
- static connect(args, deps) {
1306
- return result_1.AsyncResult.from((async () => {
1307
- try {
1308
- const runtimeDeps = {
1309
- ...(await loadDefaultServiceRuntimeDeps()),
1310
- ...deps,
1311
- };
1312
- if (automaticTelemetryEnabled(args.telemetry)) {
1313
- runtimeDeps.initTelemetry?.(args.name);
1314
- }
1315
- const auth = await (0, auth_js_2.createAuth)({ sessionKeySeed: args.sessionKeySeed });
1316
- const bootstrapLog = resolveServiceLogger(args.server?.log);
1317
- const bootstrap = await fetchServiceBootstrapInfo({
1318
- trellisUrl: args.trellisUrl,
1319
- serviceName: args.name,
1320
- contractId: args.contract.CONTRACT_ID,
1321
- contractDigest: args.contract.CONTRACT_DIGEST,
1322
- contract: args.contract.CONTRACT,
1323
- auth,
1324
- log: bootstrapLog,
1325
- });
1326
- const { authenticator: authTokenAuthenticator, inboxPrefix } = await auth
1327
- .natsConnectOptions({
1328
- contractDigest: args.contract.CONTRACT_DIGEST,
1329
- });
1330
- let nc;
1331
- try {
1332
- nc = await runtimeDeps.connect({
1333
- servers: (0, runtime_transport_js_1.selectRuntimeTransportServers)(bootstrap.connectInfo.transports),
1334
- maxReconnectAttempts: runtime_transport_js_1.DEFAULT_RUNTIME_MAX_RECONNECT_ATTEMPTS,
1335
- waitOnFirstConnect: runtime_transport_js_1.DEFAULT_SERVICE_RUNTIME_WAIT_ON_FIRST_CONNECT,
1336
- inboxPrefix,
1337
- authenticator: [
1338
- authTokenAuthenticator,
1339
- (0, nats_core_1.jwtAuthenticator)(bootstrap.connectInfo.transport.sentinel.jwt, new TextEncoder().encode(bootstrap.connectInfo.transport.sentinel.seed)),
1340
- ],
1341
- });
1342
- }
1343
- catch (cause) {
1344
- throw new index_js_2.TransportError({
1345
- code: "trellis.runtime.connect_failed",
1346
- message: "Trellis could not open the service runtime connection.",
1347
- hint: "Retry the connection. If it keeps failing, check Trellis transport availability.",
1348
- cause,
1349
- context: {
1350
- trellisUrl: args.trellisUrl,
1351
- contractId: args.contract.CONTRACT_ID,
1352
- contractDigest: args.contract.CONTRACT_DIGEST,
1353
- },
1354
- });
1355
- }
1356
- try {
1357
- const server = args.contract.API.trellis
1358
- ? {
1359
- ...(args.server ?? {}),
1360
- api: args.contract.API.owned,
1361
- trellisApi: args.contract.API.trellis,
1362
- }
1363
- : {
1364
- ...(args.server ?? {}),
1365
- api: args.contract.API.owned,
1366
- };
1367
- return result_1.Result.ok(await createConnectedService({
1368
- name: args.name,
1369
- auth,
1370
- nc,
1371
- contractId: args.contract.CONTRACT_ID,
1372
- contractDigest: args.contract.CONTRACT_DIGEST,
1373
- contractJobs: (args.contract[mod_js_1.CONTRACT_JOBS_METADATA] ?? {}),
1374
- contractKv: (args.contract[mod_js_1.CONTRACT_KV_METADATA] ?? {}),
1375
- contractEventConsumers: args.contract.CONTRACT.eventConsumers,
1376
- server,
1377
- bindings: bootstrap.binding.resources,
1378
- }));
1379
- }
1380
- catch (cause) {
1381
- await closeFailedServiceBootstrapConnection(nc);
1382
- throw cause;
1383
- }
1384
- }
1385
- catch (cause) {
1386
- return result_1.Result.err(cause instanceof index_js_2.TransportError ? cause : toUnexpectedError(cause));
1387
- }
1388
- })());
1417
+ static connect(args) {
1418
+ return connectTrellisServiceWithRuntimeDeps(args, {});
1389
1419
  }
1390
1420
  async wait() {
1391
1421
  __classPrivateFieldSet(this, _TrellisService_waitPromise, __classPrivateFieldGet(this, _TrellisService_waitPromise, "f") ?? (async () => {
1392
1422
  try {
1393
1423
  await __classPrivateFieldGet(this, _TrellisService_managedJobWorkers, "f").start().orThrow();
1394
- const closed = await this.nc.closed();
1424
+ const closed = await __classPrivateFieldGet(this, _TrellisService_nc, "f").closed();
1395
1425
  if (closed instanceof Error) {
1396
1426
  throw closed;
1397
1427
  }
@@ -1418,6 +1448,12 @@ class TrellisService {
1418
1448
  }
1419
1449
  finally {
1420
1450
  await __classPrivateFieldGet(this, _TrellisService_server, "f").stop();
1451
+ this.connection.setStatus({
1452
+ kind: this.connection.status.kind,
1453
+ phase: "closed",
1454
+ observedAt: new Date(),
1455
+ transport: { name: "nats" },
1456
+ });
1421
1457
  }
1422
1458
  }
1423
1459
  }
@@ -1426,7 +1462,7 @@ class TrellisService {
1426
1462
  }
1427
1463
  }
1428
1464
  exports.TrellisService = TrellisService;
1429
- _TrellisService_server = new WeakMap(), _TrellisService_handlerTrellis = new WeakMap(), _TrellisService_operationTransfer = new WeakMap(), _TrellisService_stopHealthPublishing = new WeakMap(), _TrellisService_managedJobWorkers = new WeakMap(), _TrellisService_waitPromise = new WeakMap(), _TrellisService_stopPromise = new WeakMap(), _TrellisService_instances = new WeakSet(), _TrellisService_createBoundHealth = function _TrellisService_createBoundHealth(deps) {
1465
+ _TrellisService_server = new WeakMap(), _TrellisService_nc = new WeakMap(), _TrellisService_handlerTrellis = new WeakMap(), _TrellisService_operationTransfer = new WeakMap(), _TrellisService_stopHealthPublishing = new WeakMap(), _TrellisService_managedJobWorkers = new WeakMap(), _TrellisService_waitPromise = new WeakMap(), _TrellisService_stopPromise = new WeakMap(), _TrellisService_instances = new WeakSet(), _TrellisService_createBoundHealth = function _TrellisService_createBoundHealth(deps) {
1430
1466
  const health = this.health;
1431
1467
  return {
1432
1468
  serviceName: health.serviceName,
package/script/server.js CHANGED
@@ -618,18 +618,18 @@ class TrellisServiceRuntime extends trellis_js_1.Trellis {
618
618
  }
619
619
  async stop() {
620
620
  __classPrivateFieldSet(this, _TrellisServiceRuntime_stopPromise, __classPrivateFieldGet(this, _TrellisServiceRuntime_stopPromise, "f") ?? (async () => {
621
- if (this.natsConnection.isClosed()) {
621
+ if (this.nats.isClosed()) {
622
622
  return;
623
623
  }
624
624
  try {
625
- await this.natsConnection.drain();
625
+ await this.nats.drain();
626
626
  }
627
627
  catch (cause) {
628
628
  if (!(cause instanceof Error) ||
629
629
  cause.name !== "DrainingConnectionError") {
630
630
  throw cause;
631
631
  }
632
- await this.natsConnection.closed().catch(() => undefined);
632
+ await this.nats.closed().catch(() => undefined);
633
633
  }
634
634
  })(), "f");
635
635
  await __classPrivateFieldGet(this, _TrellisServiceRuntime_stopPromise, "f");
@@ -1,4 +1,3 @@
1
- import type { NatsConnection } from "@nats-io/nats-core";
2
1
  import { type AsyncResult, type BaseError } from "@qlever-llc/result";
3
2
  import { type StaticDecode, Type } from "typebox";
4
3
  import type { PreparedTrellisEvent, Trellis } from "../trellis.js";
@@ -151,8 +150,6 @@ export type KvOutboxRecord = StaticDecode<typeof KvOutboxRecordSchema>;
151
150
  export declare class NatsKvOutboxRepository implements OutboxRepository {
152
151
  readonly kv: OutboxKvStore;
153
152
  constructor(kv: OutboxKvStore);
154
- /** Opens or creates the KV bucket used for durable outbox records. */
155
- static open(nats: NatsConnection, bucket?: string): Promise<NatsKvOutboxRepository>;
156
153
  enqueue(event: PreparedTrellisEvent): Promise<OutboxMessage>;
157
154
  claimDue(limit: number, now: Date): Promise<OutboxMessage[]>;
158
155
  markDispatched(id: string, now: Date): Promise<void>;
@@ -165,9 +162,7 @@ export declare class NatsKvOutboxRepository implements OutboxRepository {
165
162
  /** Durable NATS KV inbox repository for event-id duplicate suppression. */
166
163
  export declare class NatsKvInboxRepository implements InboxRepository {
167
164
  readonly kv: TypedKV<typeof KvInboxRecordSchema>;
168
- private constructor();
169
- /** Opens or creates the KV bucket used for durable inbox records. */
170
- static open(nats: NatsConnection, bucket?: string): Promise<NatsKvInboxRepository>;
165
+ constructor(kv: TypedKV<typeof KvInboxRecordSchema>);
171
166
  record(messageId: string, now?: Date): Promise<boolean>;
172
167
  }
173
168
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"outbox_inbox.d.ts","sourceRoot":"","sources":["../../src/service/outbox_inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbox_inbox.d.ts","sourceRoot":"","sources":["../../src/service/outbox_inbox.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,6 @@ exports.dispatchOutbox = dispatchOutbox;
20
20
  exports.outboxMessageToPrepared = outboxMessageToPrepared;
21
21
  const result_1 = require("@qlever-llc/result");
22
22
  const typebox_1 = require("typebox");
23
- const kv_js_1 = require("../kv.js");
24
23
  const mod_js_1 = require("../telemetry/mod.js");
25
24
  exports.defaultSqlOutboxTables = Object.freeze({
26
25
  outbox: "trellis_outbox",
@@ -293,16 +292,6 @@ class NatsKvOutboxRepository {
293
292
  value: kv
294
293
  });
295
294
  }
296
- /** Opens or creates the KV bucket used for durable outbox records. */
297
- static async open(nats, bucket = "trellis_outbox") {
298
- const opened = await kv_js_1.TypedKV.open(nats, bucket, exports.KvOutboxRecordSchema, {
299
- history: 1,
300
- });
301
- const value = opened.take();
302
- if ((0, result_1.isErr)(value))
303
- throw value.error;
304
- return new NatsKvOutboxRepository(value);
305
- }
306
295
  async enqueue(event) {
307
296
  const now = new Date().toISOString();
308
297
  const record = {
@@ -412,16 +401,6 @@ class NatsKvInboxRepository {
412
401
  value: kv
413
402
  });
414
403
  }
415
- /** Opens or creates the KV bucket used for durable inbox records. */
416
- static async open(nats, bucket = "trellis_inbox") {
417
- const opened = await kv_js_1.TypedKV.open(nats, bucket, KvInboxRecordSchema, {
418
- history: 1,
419
- });
420
- const value = opened.take();
421
- if ((0, result_1.isErr)(value))
422
- throw value.error;
423
- return new NatsKvInboxRepository(value);
424
- }
425
404
  async record(messageId, now = new Date()) {
426
405
  // Durable NATS KV dedupe is useful for event handlers without SQL state, but
427
406
  // it is not transactional with unrelated DB side effects.
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/telemetry/env.ts"],"names":[],"mappings":"AAYA,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CActD"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/telemetry/env.ts"],"names":[],"mappings":"AAiBA,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAYtD"}
@@ -1,51 +1,17 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.getEnv = getEnv;
37
- const dntShim = __importStar(require("../_dnt.shims.js"));
38
4
  // Shared telemetry code needs environment access without assuming Deno or Node.
39
5
  function getEnv(key) {
40
- const deno = dntShim.dntGlobalThis;
41
- if (deno.Deno?.env?.get) {
6
+ const load = new Function("return globalThis");
7
+ const environmentGlobal = load();
8
+ if (environmentGlobal.Deno?.env?.get) {
42
9
  try {
43
- return deno.Deno.env.get(key);
10
+ return environmentGlobal.Deno.env.get(key);
44
11
  }
45
12
  catch {
46
13
  return undefined;
47
14
  }
48
15
  }
49
- const processGlobal = dntShim.dntGlobalThis;
50
- return processGlobal.process?.env?.[key];
16
+ return environmentGlobal.process?.env?.[key];
51
17
  }
@@ -24,11 +24,4 @@ export type TrellisErrorMetricAttributes = {
24
24
  export declare function getTrellisMeter(): Meter;
25
25
  /** Records one Trellis error with only stable, low-cardinality attributes. */
26
26
  export declare function recordTrellisError(error: unknown, attributes?: TrellisErrorMetricAttributes): void;
27
- /**
28
- * Builds sanitized, low-cardinality attributes for `trellis.errors`.
29
- *
30
- * @internal Exported for focused tests; runtime callers should use
31
- * {@link recordTrellisError}.
32
- */
33
- export declare function buildTrellisErrorMetricAttributes(error: unknown, attributes?: TrellisErrorMetricAttributes): Record<string, string>;
34
27
  //# sourceMappingURL=metrics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/telemetry/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAW,MAAM,oBAAoB,CAAC;AAiDzD,yEAAyE;AACzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AASF,sDAAsD;AACtD,wBAAgB,eAAe,IAAI,KAAK,CAEvC;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,UAAU,GAAE,4BAAiC,GAC5C,IAAI,CAWN;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,OAAO,EACd,UAAU,GAAE,4BAAiC,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsDxB"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/telemetry/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAW,MAAM,oBAAoB,CAAC;AAiDzD,yEAAyE;AACzE,MAAM,MAAM,4BAA4B,GAAG;IACzC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AASF,sDAAsD;AACtD,wBAAgB,eAAe,IAAI,KAAK,CAEvC;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,UAAU,GAAE,4BAAiC,GAC5C,IAAI,CAWN"}