@qlever-llc/trellis 0.10.13 → 0.10.15

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 +14 -37
  28. package/esm/server/service.d.ts.map +1 -1
  29. package/esm/server/service.js +143 -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 +14 -37
  69. package/script/server/service.d.ts.map +1 -1
  70. package/script/server/service.js +153 -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 +186 -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
@@ -9,9 +9,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  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");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- 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;
12
+ 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;
13
13
  import { headers as natsHeaders, jwtAuthenticator, } from "@nats-io/nats-core";
14
- import { TypedKV, TypedStore, } from "../index.js";
14
+ import { TypedKV } from "../kv.js";
15
+ import { TypedStore, } from "../store.js";
15
16
  import { sdk as trellisAuth } from "../sdk/auth.js";
16
17
  import { TrellisServiceRuntime, } from "../server.js";
17
18
  import { createAuth, estimateMidpointClockOffsetMs, SentinelCredsSchema, } from "../auth.js";
@@ -393,22 +394,25 @@ async function fetchServiceBootstrapInfo(args) {
393
394
  }
394
395
  }
395
396
  export class StoreHandle {
397
+ }
398
+ class InternalStoreHandle extends StoreHandle {
396
399
  constructor(nc, binding, token) {
400
+ super();
397
401
  Object.defineProperty(this, "binding", {
398
402
  enumerable: true,
399
403
  configurable: true,
400
404
  writable: true,
401
405
  value: void 0
402
406
  });
403
- _StoreHandle_nc.set(this, void 0);
407
+ _InternalStoreHandle_nc.set(this, void 0);
404
408
  if (token !== storeHandleConstructorToken) {
405
409
  throw new TypeError("StoreHandle instances are created by TrellisService");
406
410
  }
407
- __classPrivateFieldSet(this, _StoreHandle_nc, nc, "f");
411
+ __classPrivateFieldSet(this, _InternalStoreHandle_nc, nc, "f");
408
412
  this.binding = binding;
409
413
  }
410
414
  open() {
411
- return TypedStore.open(__classPrivateFieldGet(this, _StoreHandle_nc, "f"), this.binding.name, {
415
+ return TypedStore.open(__classPrivateFieldGet(this, _InternalStoreHandle_nc, "f"), this.binding.name, {
412
416
  ttlMs: this.binding.ttlMs,
413
417
  maxObjectBytes: this.binding.maxObjectBytes,
414
418
  maxTotalBytes: this.binding.maxTotalBytes,
@@ -422,7 +426,7 @@ export class StoreHandle {
422
426
  return this.open().andThen((store) => store.waitFor(key, options));
423
427
  }
424
428
  }
425
- _StoreHandle_nc = new WeakMap();
429
+ _InternalStoreHandle_nc = new WeakMap();
426
430
  async function openServiceKvBindings(args) {
427
431
  for (const alias of Object.keys(args.bindings)) {
428
432
  if (!args.contractKv[alias]) {
@@ -458,6 +462,9 @@ function createServiceEventPublishFacade(outbound) {
458
462
  }
459
463
  return surface;
460
464
  }
465
+ /**
466
+ * @internal Shared by Trellis-owned service bootstrap paths.
467
+ */
461
468
  export async function createConnectedService(args) {
462
469
  const resolvedLog = resolveServiceLogger(args.server.log);
463
470
  const connection = observeNatsTrellisConnection({
@@ -592,10 +599,25 @@ export async function createConnectedService(args) {
592
599
  auth: args.auth,
593
600
  stores: Object.fromEntries(Object.entries(args.bindings.store ?? {}).map(([alias, binding]) => [
594
601
  alias,
595
- new StoreHandle(args.nc, binding, storeHandleConstructorToken),
602
+ new InternalStoreHandle(args.nc, binding, storeHandleConstructorToken),
596
603
  ])),
597
604
  });
598
- const service = new TrellisService(args.name, args.auth, args.nc, server, outbound.event, handlerTrellis, kv, args.contractJobs, args.bindings, operationTransfer, health, stopHealthPublishing, connection, trellisServiceConstructorToken);
605
+ const service = Reflect.construct(TrellisService, [
606
+ args.name,
607
+ args.auth,
608
+ args.nc,
609
+ server,
610
+ outbound.event,
611
+ handlerTrellis,
612
+ kv,
613
+ args.contractJobs,
614
+ args.bindings,
615
+ operationTransfer,
616
+ health,
617
+ stopHealthPublishing,
618
+ connection,
619
+ trellisServiceConstructorToken,
620
+ ]);
599
621
  handlerResources = {
600
622
  kv: service.kv,
601
623
  store: service.store,
@@ -1134,6 +1156,98 @@ function createBoundJobsFacade(args) {
1134
1156
  }
1135
1157
  return boundJobs;
1136
1158
  }
1159
+ /**
1160
+ * Connects a service with caller-supplied runtime dependencies for tests and
1161
+ * Trellis-owned internals. This helper is intentionally not re-exported from
1162
+ * public package subpaths.
1163
+ *
1164
+ * @internal
1165
+ */
1166
+ export function connectTrellisServiceWithRuntimeDeps(args, deps) {
1167
+ return AsyncResult.from((async () => {
1168
+ try {
1169
+ const runtimeDeps = {
1170
+ ...(await loadDefaultServiceRuntimeDeps()),
1171
+ ...deps,
1172
+ };
1173
+ if (automaticTelemetryEnabled(args.telemetry)) {
1174
+ runtimeDeps.initTelemetry?.(args.name);
1175
+ }
1176
+ const auth = await createAuth({ sessionKeySeed: args.sessionKeySeed });
1177
+ const bootstrapLog = resolveServiceLogger(args.server?.log);
1178
+ const bootstrap = await fetchServiceBootstrapInfo({
1179
+ trellisUrl: args.trellisUrl,
1180
+ serviceName: args.name,
1181
+ contractId: args.contract.CONTRACT_ID,
1182
+ contractDigest: args.contract.CONTRACT_DIGEST,
1183
+ contract: args.contract.CONTRACT,
1184
+ auth,
1185
+ log: bootstrapLog,
1186
+ });
1187
+ const { authenticator: authTokenAuthenticator, inboxPrefix } = await auth
1188
+ .natsConnectOptions({
1189
+ contractDigest: args.contract.CONTRACT_DIGEST,
1190
+ });
1191
+ let nc;
1192
+ try {
1193
+ nc = await runtimeDeps.connect({
1194
+ servers: selectRuntimeTransportServers(bootstrap.connectInfo.transports),
1195
+ maxReconnectAttempts: DEFAULT_RUNTIME_MAX_RECONNECT_ATTEMPTS,
1196
+ waitOnFirstConnect: DEFAULT_SERVICE_RUNTIME_WAIT_ON_FIRST_CONNECT,
1197
+ inboxPrefix,
1198
+ authenticator: [
1199
+ authTokenAuthenticator,
1200
+ jwtAuthenticator(bootstrap.connectInfo.transport.sentinel.jwt, new TextEncoder().encode(bootstrap.connectInfo.transport.sentinel.seed)),
1201
+ ],
1202
+ });
1203
+ }
1204
+ catch (cause) {
1205
+ throw new TransportError({
1206
+ code: "trellis.runtime.connect_failed",
1207
+ message: "Trellis could not open the service runtime connection.",
1208
+ hint: "Retry the connection. If it keeps failing, check Trellis transport availability.",
1209
+ cause,
1210
+ context: {
1211
+ trellisUrl: args.trellisUrl,
1212
+ contractId: args.contract.CONTRACT_ID,
1213
+ contractDigest: args.contract.CONTRACT_DIGEST,
1214
+ },
1215
+ });
1216
+ }
1217
+ try {
1218
+ const server = args.contract.API.trellis
1219
+ ? {
1220
+ ...(args.server ?? {}),
1221
+ api: args.contract.API.owned,
1222
+ trellisApi: args.contract.API.trellis,
1223
+ }
1224
+ : {
1225
+ ...(args.server ?? {}),
1226
+ api: args.contract.API.owned,
1227
+ };
1228
+ return Result.ok(await createConnectedService({
1229
+ name: args.name,
1230
+ auth,
1231
+ nc,
1232
+ contractId: args.contract.CONTRACT_ID,
1233
+ contractDigest: args.contract.CONTRACT_DIGEST,
1234
+ contractJobs: (args.contract[CONTRACT_JOBS_METADATA] ?? {}),
1235
+ contractKv: (args.contract[CONTRACT_KV_METADATA] ?? {}),
1236
+ contractEventConsumers: args.contract.CONTRACT.eventConsumers,
1237
+ server,
1238
+ bindings: bootstrap.binding.resources,
1239
+ }));
1240
+ }
1241
+ catch (cause) {
1242
+ await closeFailedServiceBootstrapConnection(nc);
1243
+ throw cause;
1244
+ }
1245
+ }
1246
+ catch (cause) {
1247
+ return Result.err(cause instanceof TransportError ? cause : toUnexpectedError(cause));
1248
+ }
1249
+ })());
1250
+ }
1137
1251
  export class TrellisService {
1138
1252
  constructor(name, auth, nc, server, event, handlerTrellis, kv, contractJobs, bindings, operationTransfer, health, stopHealthPublishing, connection, token) {
1139
1253
  _TrellisService_instances.add(this);
@@ -1149,13 +1263,8 @@ export class TrellisService {
1149
1263
  writable: true,
1150
1264
  value: void 0
1151
1265
  });
1152
- Object.defineProperty(this, "nc", {
1153
- enumerable: true,
1154
- configurable: true,
1155
- writable: true,
1156
- value: void 0
1157
- });
1158
1266
  _TrellisService_server.set(this, void 0);
1267
+ _TrellisService_nc.set(this, void 0);
1159
1268
  _TrellisService_handlerTrellis.set(this, void 0);
1160
1269
  /** Event lifecycle surface for service startup listeners and publishers. */
1161
1270
  Object.defineProperty(this, "event", {
@@ -1212,7 +1321,7 @@ export class TrellisService {
1212
1321
  const storeBindings = bindings.store ?? {};
1213
1322
  this.name = name;
1214
1323
  this.auth = auth;
1215
- this.nc = nc;
1324
+ __classPrivateFieldSet(this, _TrellisService_nc, nc, "f");
1216
1325
  __classPrivateFieldSet(this, _TrellisService_server, server, "f");
1217
1326
  Object.defineProperty(this, "server", {
1218
1327
  value: server,
@@ -1221,7 +1330,10 @@ export class TrellisService {
1221
1330
  __classPrivateFieldSet(this, _TrellisService_handlerTrellis, handlerTrellis, "f");
1222
1331
  this.event = event;
1223
1332
  this.kv = kv;
1224
- this.store = Object.fromEntries(Object.entries(storeBindings).map(([alias, binding]) => [alias, new StoreHandle(nc, binding, storeHandleConstructorToken)]));
1333
+ this.store = Object.fromEntries(Object.entries(storeBindings).map(([alias, binding]) => [
1334
+ alias,
1335
+ new InternalStoreHandle(nc, binding, storeHandleConstructorToken),
1336
+ ]));
1225
1337
  __classPrivateFieldSet(this, _TrellisService_operationTransfer, operationTransfer, "f");
1226
1338
  const jobs = createJobsFacade({
1227
1339
  serviceName: name,
@@ -1248,7 +1360,6 @@ export class TrellisService {
1248
1360
  return {
1249
1361
  name: this.name,
1250
1362
  auth: this.auth,
1251
- nc: this.nc,
1252
1363
  event: __classPrivateFieldGet(this, _TrellisService_instances, "m", _TrellisService_createBoundEventFacade).call(this, deps),
1253
1364
  kv: this.kv,
1254
1365
  store: this.store,
@@ -1258,11 +1369,16 @@ export class TrellisService {
1258
1369
  connection: this.connection,
1259
1370
  createTransfer: (args) => this.createTransfer(args),
1260
1371
  completeOperation: (operationId, output) => this.completeOperation(operationId, output),
1372
+ publishPrepared: (event) => this.publishPrepared(event),
1261
1373
  wait: () => this.wait(),
1262
1374
  stop: () => this.stop(),
1263
1375
  with: (nextDeps) => this.with(nextDeps),
1264
1376
  };
1265
1377
  }
1378
+ /** Publishes a prepared event through the service runtime connection. */
1379
+ publishPrepared(event) {
1380
+ return __classPrivateFieldGet(this, _TrellisService_handlerTrellis, "f").publishPrepared(event);
1381
+ }
1266
1382
  /**
1267
1383
  * Creates a short-lived receive transfer grant for a caller session.
1268
1384
  */
@@ -1297,96 +1413,14 @@ export class TrellisService {
1297
1413
  return Result.err(completed.error);
1298
1414
  })());
1299
1415
  }
1300
- static connect(args, deps) {
1301
- return AsyncResult.from((async () => {
1302
- try {
1303
- const runtimeDeps = {
1304
- ...(await loadDefaultServiceRuntimeDeps()),
1305
- ...deps,
1306
- };
1307
- if (automaticTelemetryEnabled(args.telemetry)) {
1308
- runtimeDeps.initTelemetry?.(args.name);
1309
- }
1310
- const auth = await createAuth({ sessionKeySeed: args.sessionKeySeed });
1311
- const bootstrapLog = resolveServiceLogger(args.server?.log);
1312
- const bootstrap = await fetchServiceBootstrapInfo({
1313
- trellisUrl: args.trellisUrl,
1314
- serviceName: args.name,
1315
- contractId: args.contract.CONTRACT_ID,
1316
- contractDigest: args.contract.CONTRACT_DIGEST,
1317
- contract: args.contract.CONTRACT,
1318
- auth,
1319
- log: bootstrapLog,
1320
- });
1321
- const { authenticator: authTokenAuthenticator, inboxPrefix } = await auth
1322
- .natsConnectOptions({
1323
- contractDigest: args.contract.CONTRACT_DIGEST,
1324
- });
1325
- let nc;
1326
- try {
1327
- nc = await runtimeDeps.connect({
1328
- servers: selectRuntimeTransportServers(bootstrap.connectInfo.transports),
1329
- maxReconnectAttempts: DEFAULT_RUNTIME_MAX_RECONNECT_ATTEMPTS,
1330
- waitOnFirstConnect: DEFAULT_SERVICE_RUNTIME_WAIT_ON_FIRST_CONNECT,
1331
- inboxPrefix,
1332
- authenticator: [
1333
- authTokenAuthenticator,
1334
- jwtAuthenticator(bootstrap.connectInfo.transport.sentinel.jwt, new TextEncoder().encode(bootstrap.connectInfo.transport.sentinel.seed)),
1335
- ],
1336
- });
1337
- }
1338
- catch (cause) {
1339
- throw new TransportError({
1340
- code: "trellis.runtime.connect_failed",
1341
- message: "Trellis could not open the service runtime connection.",
1342
- hint: "Retry the connection. If it keeps failing, check Trellis transport availability.",
1343
- cause,
1344
- context: {
1345
- trellisUrl: args.trellisUrl,
1346
- contractId: args.contract.CONTRACT_ID,
1347
- contractDigest: args.contract.CONTRACT_DIGEST,
1348
- },
1349
- });
1350
- }
1351
- try {
1352
- const server = args.contract.API.trellis
1353
- ? {
1354
- ...(args.server ?? {}),
1355
- api: args.contract.API.owned,
1356
- trellisApi: args.contract.API.trellis,
1357
- }
1358
- : {
1359
- ...(args.server ?? {}),
1360
- api: args.contract.API.owned,
1361
- };
1362
- return Result.ok(await createConnectedService({
1363
- name: args.name,
1364
- auth,
1365
- nc,
1366
- contractId: args.contract.CONTRACT_ID,
1367
- contractDigest: args.contract.CONTRACT_DIGEST,
1368
- contractJobs: (args.contract[CONTRACT_JOBS_METADATA] ?? {}),
1369
- contractKv: (args.contract[CONTRACT_KV_METADATA] ?? {}),
1370
- contractEventConsumers: args.contract.CONTRACT.eventConsumers,
1371
- server,
1372
- bindings: bootstrap.binding.resources,
1373
- }));
1374
- }
1375
- catch (cause) {
1376
- await closeFailedServiceBootstrapConnection(nc);
1377
- throw cause;
1378
- }
1379
- }
1380
- catch (cause) {
1381
- return Result.err(cause instanceof TransportError ? cause : toUnexpectedError(cause));
1382
- }
1383
- })());
1416
+ static connect(args) {
1417
+ return connectTrellisServiceWithRuntimeDeps(args, {});
1384
1418
  }
1385
1419
  async wait() {
1386
1420
  __classPrivateFieldSet(this, _TrellisService_waitPromise, __classPrivateFieldGet(this, _TrellisService_waitPromise, "f") ?? (async () => {
1387
1421
  try {
1388
1422
  await __classPrivateFieldGet(this, _TrellisService_managedJobWorkers, "f").start().orThrow();
1389
- const closed = await this.nc.closed();
1423
+ const closed = await __classPrivateFieldGet(this, _TrellisService_nc, "f").closed();
1390
1424
  if (closed instanceof Error) {
1391
1425
  throw closed;
1392
1426
  }
@@ -1413,6 +1447,12 @@ export class TrellisService {
1413
1447
  }
1414
1448
  finally {
1415
1449
  await __classPrivateFieldGet(this, _TrellisService_server, "f").stop();
1450
+ this.connection.setStatus({
1451
+ kind: this.connection.status.kind,
1452
+ phase: "closed",
1453
+ observedAt: new Date(),
1454
+ transport: { name: "nats" },
1455
+ });
1416
1456
  }
1417
1457
  }
1418
1458
  }
@@ -1420,7 +1460,7 @@ export class TrellisService {
1420
1460
  await __classPrivateFieldGet(this, _TrellisService_stopPromise, "f");
1421
1461
  }
1422
1462
  }
1423
- _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) {
1463
+ _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) {
1424
1464
  const health = this.health;
1425
1465
  return {
1426
1466
  serviceName: health.serviceName,
package/esm/server.js CHANGED
@@ -615,18 +615,18 @@ export class TrellisServiceRuntime extends Trellis {
615
615
  }
616
616
  async stop() {
617
617
  __classPrivateFieldSet(this, _TrellisServiceRuntime_stopPromise, __classPrivateFieldGet(this, _TrellisServiceRuntime_stopPromise, "f") ?? (async () => {
618
- if (this.natsConnection.isClosed()) {
618
+ if (this.nats.isClosed()) {
619
619
  return;
620
620
  }
621
621
  try {
622
- await this.natsConnection.drain();
622
+ await this.nats.drain();
623
623
  }
624
624
  catch (cause) {
625
625
  if (!(cause instanceof Error) ||
626
626
  cause.name !== "DrainingConnectionError") {
627
627
  throw cause;
628
628
  }
629
- await this.natsConnection.closed().catch(() => undefined);
629
+ await this.nats.closed().catch(() => undefined);
630
630
  }
631
631
  })(), "f");
632
632
  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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"}
@@ -12,7 +12,6 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
12
12
  var _MemoryOutboxRepository_messages, _MemoryInboxRepository_seen, _OutboxDispatcher_instances, _OutboxDispatcher_repository, _OutboxDispatcher_runtime, _OutboxDispatcher_options, _OutboxDispatcher_wakeTimer, _OutboxDispatcher_retryTimer, _OutboxDispatcher_idleTimer, _OutboxDispatcher_running, _OutboxDispatcher_pending, _OutboxDispatcher_retryDue, _OutboxDispatcher_stopped, _OutboxDispatcher_scheduleWakeup, _OutboxDispatcher_scheduleRetryWakeup, _OutboxDispatcher_scheduleIdleRetry, _OutboxDispatcher_run, _OutboxDispatcher_dispatchBatch, _OutboxDispatcher_retryDelayMs, _OutboxDispatcher_clearTimer;
13
13
  import { isErr } from "@qlever-llc/result";
14
14
  import { Type } from "typebox";
15
- import { TypedKV } from "../kv.js";
16
15
  import { recordTrellisError } from "../telemetry/mod.js";
17
16
  export const defaultSqlOutboxTables = Object.freeze({
18
17
  outbox: "trellis_outbox",
@@ -281,16 +280,6 @@ export class NatsKvOutboxRepository {
281
280
  value: kv
282
281
  });
283
282
  }
284
- /** Opens or creates the KV bucket used for durable outbox records. */
285
- static async open(nats, bucket = "trellis_outbox") {
286
- const opened = await TypedKV.open(nats, bucket, KvOutboxRecordSchema, {
287
- history: 1,
288
- });
289
- const value = opened.take();
290
- if (isErr(value))
291
- throw value.error;
292
- return new NatsKvOutboxRepository(value);
293
- }
294
283
  async enqueue(event) {
295
284
  const now = new Date().toISOString();
296
285
  const record = {
@@ -399,16 +388,6 @@ export class NatsKvInboxRepository {
399
388
  value: kv
400
389
  });
401
390
  }
402
- /** Opens or creates the KV bucket used for durable inbox records. */
403
- static async open(nats, bucket = "trellis_inbox") {
404
- const opened = await TypedKV.open(nats, bucket, KvInboxRecordSchema, {
405
- history: 1,
406
- });
407
- const value = opened.take();
408
- if (isErr(value))
409
- throw value.error;
410
- return new NatsKvInboxRepository(value);
411
- }
412
391
  async record(messageId, now = new Date()) {
413
392
  // Durable NATS KV dedupe is useful for event handlers without SQL state, but
414
393
  // 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,15 +1,14 @@
1
- import * as dntShim from "../_dnt.shims.js";
2
1
  // Shared telemetry code needs environment access without assuming Deno or Node.
3
2
  export function getEnv(key) {
4
- const deno = dntShim.dntGlobalThis;
5
- if (deno.Deno?.env?.get) {
3
+ const load = new Function("return globalThis");
4
+ const environmentGlobal = load();
5
+ if (environmentGlobal.Deno?.env?.get) {
6
6
  try {
7
- return deno.Deno.env.get(key);
7
+ return environmentGlobal.Deno.env.get(key);
8
8
  }
9
9
  catch {
10
10
  return undefined;
11
11
  }
12
12
  }
13
- const processGlobal = dntShim.dntGlobalThis;
14
- return processGlobal.process?.env?.[key];
13
+ return environmentGlobal.process?.env?.[key];
15
14
  }
@@ -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"}
package/esm/trellis.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type JetStreamClient } from "@nats-io/jetstream";
2
2
  import { type Msg, type NatsConnection } from "@nats-io/nats-core";
3
3
  import type { EventDesc, FeedDesc, InferSchemaType, TrellisAPI } from "./contracts.js";
4
- import { CONTRACT_JOBS_METADATA, CONTRACT_KV_METADATA, CONTRACT_STATE_METADATA, type ContractEventConsumers, type ContractJobsMetadata, type ContractKvMetadata, type EventConsumerResourceBinding } from "./contract_support/mod.js";
4
+ import { CONTRACT_JOBS_METADATA, CONTRACT_KV_METADATA, CONTRACT_STATE_METADATA, type ContractJobsMetadata, type ContractKvMetadata } from "./contract_support/mod.js";
5
5
  import type { StaticDecode } from "typebox";
6
6
  import { AuthRequestsValidateResponseSchema, AuthRequestsValidateSchema } from "./auth/protocol.js";
7
7
  import { AsyncResult, BaseError, type MaybeAsync, Result } from "@qlever-llc/result";
@@ -479,19 +479,6 @@ export type EventListenerContext = {
479
479
  /** JetStream sequence number, when available. */
480
480
  sequence?: number;
481
481
  };
482
- type RuntimeEventConsumers = {
483
- metadata?: ContractEventConsumers;
484
- bindings?: Record<string, EventConsumerResourceBinding>;
485
- };
486
- type TrellisInternalOpts<TA extends AnyTrellisAPI> = TrellisOpts<TA> & {
487
- eventConsumers?: RuntimeEventConsumers;
488
- };
489
- /**
490
- * Creates a Trellis runtime with bootstrap-resolved bindings.
491
- *
492
- * @internal
493
- */
494
- export declare function createTrellisInternal<TA extends AnyTrellisAPI = TrellisAPI, TMode extends TrellisMode = "client", TState extends RuntimeStateStores = RuntimeStateStores>(name: string, nats: NatsConnection, auth: TrellisAuth, opts?: TrellisInternalOpts<TA>): Trellis<TA, TMode, TState>;
495
482
  export type FeedSubscribeOpts = {
496
483
  signal?: AbortSignal;
497
484
  };
@@ -601,7 +588,6 @@ export type ClientTrellis<TA extends AnyTrellisAPI = TrellisAPI, TState extends
601
588
  readonly api: TA;
602
589
  readonly state: StateFacade<TState>;
603
590
  readonly connection: TrellisConnection;
604
- readonly natsConnection: NatsConnection;
605
591
  readonly rpc: ActiveRpcFacade<TA>;
606
592
  readonly event: ActiveEventFacade<TA>;
607
593
  readonly feed: ActiveFeedFacade<TA>;
@@ -662,10 +648,6 @@ export declare class Trellis<TA extends AnyTrellisAPI = TrellisAPI, TMode extend
662
648
  readonly api: TA;
663
649
  constructor(name: string, // Must be unique for a service
664
650
  nats: NatsConnection, auth: TrellisAuth, opts?: TrellisOpts<TA>);
665
- /**
666
- * Returns the underlying NATS connection.
667
- */
668
- get natsConnection(): NatsConnection;
669
651
  operationStoreHandle(): Promise<TypedKV<typeof DurableOperationRecordSchema>>;
670
652
  loadOperationRecord(operationId: string): Promise<DurableOperationRecord | null>;
671
653
  saveOperationRecord(runtime: RuntimeOperationRecord): Promise<void>;