@voltro/runtime 0.86.0 → 0.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +5321 -0
  2. package/README.md +43 -0
  3. package/THIRD-PARTY-NOTICES.md +860 -221
  4. package/dist/analyticsSink.js +8 -14
  5. package/dist/apiKeys.js +82 -78
  6. package/dist/apiRoleBucketSampler.js +64 -0
  7. package/dist/apiRoleWorkloadHistory.js +56 -0
  8. package/dist/apiRoleWorkloadMetrics.js +78 -0
  9. package/dist/apiRoleWorkloadStorage.js +95 -0
  10. package/dist/approvals.js +67 -74
  11. package/dist/authMiddlewareLayer.js +7 -6
  12. package/dist/bindEvent.js +48 -28
  13. package/dist/bootListener.js +106 -39
  14. package/dist/bootStoreCodec.js +38 -37
  15. package/dist/circuitBreaker.js +1 -72
  16. package/dist/composeAnalytics.js +31 -10
  17. package/dist/computedQueryCache.js +231 -0
  18. package/dist/connectionsFacade.js +32 -30
  19. package/dist/coordinatedSchedule.js +84 -78
  20. package/dist/dataStore.js +154 -121
  21. package/dist/declaredTablesGuard.js +2 -1
  22. package/dist/dispatcher.js +403 -328
  23. package/dist/effectStore.js +2 -2
  24. package/dist/engineClients.js +24 -0
  25. package/dist/externalizedTasks.js +19 -6
  26. package/dist/fieldCipher.js +109 -40
  27. package/dist/fieldKeyRegistry.js +295 -0
  28. package/dist/fieldKeyRekey.js +286 -0
  29. package/dist/fieldKeyScan.js +136 -0
  30. package/dist/fieldKeyring.js +77 -0
  31. package/dist/hot.d.ts +56 -0
  32. package/dist/hot.js +3 -0
  33. package/dist/hotDataStore.js +148 -0
  34. package/dist/hotDataStoreSnapshot.js +98 -0
  35. package/dist/hotDataStoreTables.js +18 -0
  36. package/dist/http-range.d.ts +53 -0
  37. package/dist/http-range.js +52 -0
  38. package/dist/httpClientSsrf.js +12 -37
  39. package/dist/httpClientTracing.js +12 -9
  40. package/dist/httpCompression.js +17 -17
  41. package/dist/httpInputStream.js +82 -0
  42. package/dist/httpRouteMounts.js +1 -0
  43. package/dist/idempotencyStore.js +92 -52
  44. package/dist/index.d.ts +1164 -451
  45. package/dist/index.js +143 -132
  46. package/dist/kvFacade.js +23 -17
  47. package/dist/memoryQueryJoins.js +16 -16
  48. package/dist/memorySetOperations.js +43 -0
  49. package/dist/metrics.js +38 -24
  50. package/dist/outbox.js +1 -1
  51. package/dist/readRecorder.js +35 -34
  52. package/dist/readScopePredicate.js +12 -0
  53. package/dist/replicatedDataStore.js +22 -4
  54. package/dist/rowFilter.js +56 -39
  55. package/dist/rpcConnections.js +8 -8
  56. package/dist/rpcServer.js +522 -449
  57. package/dist/rpcWorkloadAdmission.js +50 -0
  58. package/dist/rywPositionStore.js +82 -47
  59. package/dist/scheduler.js +6 -1
  60. package/dist/servePipeline.js +215 -146
  61. package/dist/setReadScopes.js +28 -0
  62. package/dist/snapshotValueCodec.js +46 -0
  63. package/dist/sourceResolution.js +34 -24
  64. package/dist/storeMiddleware.js +211 -209
  65. package/dist/subscriber.js +1 -0
  66. package/dist/tenantScope.js +8 -20
  67. package/dist/traceparent.js +8 -19
  68. package/dist/webSocketGatewayRuntime.js +111 -71
  69. package/dist/workflowRuntime.js +9 -9
  70. package/package.json +19 -7
package/README.md CHANGED
@@ -20,7 +20,50 @@ Installation, guides, the full API reference, and examples all live in the
20
20
  **[Voltro documentation](https://docs.voltro.dev/docs/intro/getting-started)** — the single source of truth. This README is
21
21
  deliberately short so there is nothing here to drift out of date.
22
22
 
23
+ ## Transactional API-key checks
24
+
25
+ `lockApiKeyById(store, id, tenantId)` reads a key within its expected tenant
26
+ with a native locking query and the regular API-key codec. Supply an existing
27
+ write transaction after the application's lifecycle fences. The helper returns
28
+ an internal row; the caller still verifies the bearer and current ownership,
29
+ expiry, revocation and scopes. See the
30
+ [API-key guide](https://docs.voltro.dev/docs/configuration/api-keys#transactional-key-checks).
31
+
23
32
  ## License
24
33
 
25
34
  Proprietary. © 2026 Voltro UG. Your use is governed by the
26
35
  [Terms of Service](https://voltro.cloud/legal/terms). See the bundled `LICENSE`.
36
+
37
+
38
+ Mutation replay codecs validate the stored wire output against the declared
39
+ current schema. They never return raw values after a codec failure or attach the
40
+ stored payload to decoding errors. If a successful executor cannot encode its
41
+ output, the binder records a completed refusal receipt without that payload;
42
+ replay refuses instead of rerunning the effect to reconstruct output. This does
43
+ not make business writes and idempotency persistence one atomic transaction.
44
+
45
+ RPC and REST retain the original claim identity through receipt settlement.
46
+ Late renewal, completion or cleanup cannot affect a replacement claim or delete
47
+ an already completed receipt. Receipt ownership does not stop a prior remote
48
+ business operation; durable intent and resource fencing remain necessary.
49
+
50
+ Keyed mutations capture their actual declared input schema before waiting and
51
+ bind receipts to that input plus authenticated identity. A changed or missing
52
+ binding refuses without reconstructing business effects. MutationCodec and
53
+ makeMutationCodec(inputSchema, outputSchema, admit) provide the shared contract. This
54
+ binding does not replace current resource authorization or durable business intent.
55
+
56
+ Persisted receipt metadata is decoded strictly before replay or lease expiry.
57
+ Unknown states, invalid timestamps/fingerprints and inconsistent response states
58
+ refuse without deleting the receipt or reconstructing the operation. Completed
59
+ Void responses may omit their encoded body. This is corruption refusal, not
60
+ proof of safe recovery or current authorization.
61
+
62
+ Native RPC receipt admission refreshes authentication and declared guards before
63
+ lookup and after its wait. Supply `makeMutationReplayAdmission(procedure, kind,
64
+ { defaultDeny, bindReplayAuthority })` as the codec's required third argument.
65
+ Pure plugin refresher bindings do not execute business interceptors on replay.
66
+ Fresh runners recheck after interceptor waits and build context from the fresh
67
+ subject. Successful fresh self-revocation is acknowledged without a subsequent
68
+ reauthentication that would discard its result. REST uses the same pure authority composer and guard primitives around its
69
+ rate-limit/storage waits. Handler-only policies remain domain responsibilities.