@serve.zone/interfaces 31.8.0 → 32.0.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 (215) hide show
  1. package/.smartconfig.json +1 -0
  2. package/changelog.md +512 -0
  3. package/dist_ts/00_commitinfo_data.js +3 -3
  4. package/dist_ts/appstore/types.d.ts +4 -6
  5. package/dist_ts/appstore/types.js +5 -5
  6. package/dist_ts/data/backup.d.ts +3 -26
  7. package/dist_ts/data/cluster.d.ts +36 -11
  8. package/dist_ts/data/cluster.js +33 -22
  9. package/dist_ts/data/clusteringress.d.ts +8 -0
  10. package/dist_ts/data/clusteringress.js +13 -8
  11. package/dist_ts/data/clusternode.d.ts +121 -74
  12. package/dist_ts/data/clusternode.js +109 -132
  13. package/dist_ts/data/clusterruntime.d.ts +39 -0
  14. package/dist_ts/data/clusterruntime.js +11 -0
  15. package/dist_ts/data/coremail.d.ts +3 -7
  16. package/dist_ts/data/coremail.js +2 -2
  17. package/dist_ts/data/coremail.runtime.d.ts +0 -1
  18. package/dist_ts/data/coremail.runtime.js +5 -22
  19. package/dist_ts/data/deploymentadoption.d.ts +0 -2
  20. package/dist_ts/data/deploymentadoption.js +40 -6
  21. package/dist_ts/data/deploymentoperation.js +16 -3
  22. package/dist_ts/data/deploymentpreflight.d.ts +0 -2
  23. package/dist_ts/data/deploymentpreflight.js +1 -1
  24. package/dist_ts/data/immutableimage.d.ts +38 -21
  25. package/dist_ts/data/immutableimage.js +45 -5
  26. package/dist_ts/data/index.d.ts +5 -1
  27. package/dist_ts/data/index.js +5 -1
  28. package/dist_ts/data/isolatedrestore.d.ts +139 -21
  29. package/dist_ts/data/isolatedrestore.golden.d.ts +0 -1
  30. package/dist_ts/data/isolatedrestore.golden.js +6 -9
  31. package/dist_ts/data/isolatedrestore.js +176 -40
  32. package/dist_ts/data/mail.d.ts +1 -1
  33. package/dist_ts/data/networkaddressplan.d.ts +78 -0
  34. package/dist_ts/data/networkaddressplan.js +114 -0
  35. package/dist_ts/data/networkauthority.d.ts +20 -22
  36. package/dist_ts/data/networkauthority.js +29 -43
  37. package/dist_ts/data/networkcredential.d.ts +10 -10
  38. package/dist_ts/data/networkcredential.js +16 -16
  39. package/dist_ts/data/networkdelivery.d.ts +18 -18
  40. package/dist_ts/data/networkdelivery.js +16 -16
  41. package/dist_ts/data/networklease.d.ts +18 -7
  42. package/dist_ts/data/networklease.js +29 -7
  43. package/dist_ts/data/networknode.d.ts +37 -0
  44. package/dist_ts/data/networknode.js +6 -0
  45. package/dist_ts/data/networkprojection.d.ts +59 -60
  46. package/dist_ts/data/networkprojection.js +53 -57
  47. package/dist_ts/data/networkprotection.d.ts +27 -28
  48. package/dist_ts/data/networkprotection.js +36 -36
  49. package/dist_ts/data/networkrouter.d.ts +11 -11
  50. package/dist_ts/data/networkrouter.js +1 -1
  51. package/dist_ts/data/networksigning.d.ts +16 -18
  52. package/dist_ts/data/networksigning.js +20 -21
  53. package/dist_ts/data/nodecredential.d.ts +4 -6
  54. package/dist_ts/data/nodeenrollment.d.ts +35 -40
  55. package/dist_ts/data/nodeenrollment.js +57 -72
  56. package/dist_ts/data/privatenetwork.d.ts +21 -24
  57. package/dist_ts/data/privatenetwork.js +39 -54
  58. package/dist_ts/data/runtimeassignment.d.ts +50 -34
  59. package/dist_ts/data/runtimeassignment.js +79 -45
  60. package/dist_ts/data/runtimeconfig.d.ts +21 -22
  61. package/dist_ts/data/runtimeconfig.js +37 -100
  62. package/dist_ts/data/runtimesession.d.ts +100 -62
  63. package/dist_ts/data/runtimesession.js +98 -79
  64. package/dist_ts/data/runtimeterminalreceipt.d.ts +28 -29
  65. package/dist_ts/data/runtimeterminalreceipt.js +42 -42
  66. package/dist_ts/data/secret.d.ts +18 -25
  67. package/dist_ts/data/secret.js +12 -52
  68. package/dist_ts/data/servicecredential.d.ts +14 -16
  69. package/dist_ts/data/servicecredential.js +17 -28
  70. package/dist_ts/data/serviceruntime.d.ts +128 -0
  71. package/dist_ts/data/serviceruntime.js +92 -0
  72. package/dist_ts/data/sparknodereport.d.ts +27 -14
  73. package/dist_ts/data/sparknodereport.js +35 -28
  74. package/dist_ts/data/webpush.d.ts +0 -1
  75. package/dist_ts/index.d.ts +2 -1
  76. package/dist_ts/index.js +3 -2
  77. package/dist_ts/platform/objectstorageretention.d.ts +21 -24
  78. package/dist_ts/platform/objectstorageretention.js +6 -18
  79. package/dist_ts/platform/storage.d.ts +1 -3
  80. package/dist_ts/platform/storagemigration.d.ts +0 -7
  81. package/dist_ts/platform/storagemigration.golden.d.ts +0 -1
  82. package/dist_ts/platform/storagemigration.golden.js +8 -12
  83. package/dist_ts/platform/storagemigration.js +6 -51
  84. package/dist_ts/platform/types.d.ts +2 -2
  85. package/dist_ts/private/canonicaljson.d.ts +9 -1
  86. package/dist_ts/private/canonicaljson.js +14 -2
  87. package/dist_ts/private/dataproperties.d.ts +62 -0
  88. package/dist_ts/private/dataproperties.js +117 -0
  89. package/dist_ts/private/networkcontract.d.ts +14 -10
  90. package/dist_ts/private/networkcontract.js +15 -1
  91. package/dist_ts/private/producercontract.d.ts +11 -0
  92. package/dist_ts/private/producercontract.js +21 -0
  93. package/dist_ts/private/releaseversion.d.ts +37 -0
  94. package/dist_ts/private/releaseversion.js +48 -0
  95. package/dist_ts/private/runtimepolicy.d.ts +31 -0
  96. package/dist_ts/private/runtimepolicy.js +90 -0
  97. package/dist_ts/private/tokenlist.d.ts +9 -0
  98. package/dist_ts/private/tokenlist.js +23 -0
  99. package/dist_ts/protocol.d.ts +137 -0
  100. package/dist_ts/protocol.js +255 -0
  101. package/dist_ts/requests/admin.d.ts +8 -8
  102. package/dist_ts/requests/backup.d.ts +102 -112
  103. package/dist_ts/requests/cluster.d.ts +47 -10
  104. package/dist_ts/requests/cluster.js +1 -1
  105. package/dist_ts/requests/clusteringress.d.ts +9 -0
  106. package/dist_ts/requests/clusteringress.js +1 -1
  107. package/dist_ts/requests/config.d.ts +3 -3
  108. package/dist_ts/requests/corestore.d.ts +0 -3
  109. package/dist_ts/requests/corestore.js +5 -9
  110. package/dist_ts/requests/network.d.ts +87 -31
  111. package/dist_ts/requests/node.d.ts +15 -28
  112. package/dist_ts/requests/pallet.d.ts +13 -13
  113. package/dist_ts/requests/runtimesession.d.ts +53 -41
  114. package/dist_ts/requests/secret.d.ts +4 -5
  115. package/dist_ts/requests/secret.js +1 -5
  116. package/dist_ts/requests/service.d.ts +60 -0
  117. package/dist_ts/runtime.corestore.d.ts +56 -74
  118. package/dist_ts/runtime.corestore.databaseexportpackage.d.ts +30 -36
  119. package/dist_ts/runtime.corestore.databaseexportpackage.golden.d.ts +11 -12
  120. package/dist_ts/runtime.corestore.databaseexportpackage.golden.js +54 -71
  121. package/dist_ts/runtime.corestore.databaseexportpackage.js +9 -25
  122. package/dist_ts/runtime.corestore.js +35 -135
  123. package/dist_ts/runtime.corestore.relay.js +2 -7
  124. package/dist_ts/runtime.d.ts +38 -48
  125. package/dist_ts/runtime.js +20 -77
  126. package/dist_ts/runtime.networkprojection.d.ts +4 -4
  127. package/dist_ts/runtime.networkprojection.js +18 -18
  128. package/dist_ts/runtime.workloadinit.d.ts +23 -24
  129. package/dist_ts/runtime.workloadinit.js +6 -13
  130. package/package.json +2 -2
  131. package/readme.md +540 -269
  132. package/ts/00_commitinfo_data.ts +3 -3
  133. package/ts/appstore/types.ts +4 -6
  134. package/ts/data/backup.ts +3 -38
  135. package/ts/data/cluster.ts +51 -34
  136. package/ts/data/clusteringress.ts +12 -12
  137. package/ts/data/clusternode.ts +204 -232
  138. package/ts/data/clusterruntime.ts +45 -0
  139. package/ts/data/coremail.runtime.ts +4 -21
  140. package/ts/data/coremail.ts +3 -7
  141. package/ts/data/deploymentadoption.ts +46 -4
  142. package/ts/data/deploymentoperation.ts +16 -1
  143. package/ts/data/deploymentpreflight.ts +0 -2
  144. package/ts/data/immutableimage.ts +71 -24
  145. package/ts/data/index.ts +5 -1
  146. package/ts/data/isolatedrestore.golden.ts +5 -9
  147. package/ts/data/isolatedrestore.ts +339 -54
  148. package/ts/data/mail.ts +1 -1
  149. package/ts/data/networkaddressplan.ts +175 -0
  150. package/ts/data/networkauthority.ts +45 -61
  151. package/ts/data/networkcredential.ts +24 -24
  152. package/ts/data/networkdelivery.ts +27 -27
  153. package/ts/data/networklease.ts +40 -13
  154. package/ts/data/networknode.ts +37 -0
  155. package/ts/data/networkprojection.ts +119 -124
  156. package/ts/data/networkprotection.ts +54 -55
  157. package/ts/data/networkrouter.ts +14 -14
  158. package/ts/data/networksigning.ts +29 -32
  159. package/ts/data/nodecredential.ts +4 -6
  160. package/ts/data/nodeenrollment.ts +96 -114
  161. package/ts/data/privatenetwork.ts +58 -74
  162. package/ts/data/runtimeassignment.ts +143 -94
  163. package/ts/data/runtimeconfig.ts +62 -122
  164. package/ts/data/runtimesession.ts +185 -138
  165. package/ts/data/runtimeterminalreceipt.ts +72 -73
  166. package/ts/data/secret.ts +28 -76
  167. package/ts/data/servicecredential.ts +33 -43
  168. package/ts/data/serviceruntime.ts +208 -0
  169. package/ts/data/sparknodereport.ts +48 -36
  170. package/ts/data/webpush.ts +0 -1
  171. package/ts/index.ts +2 -0
  172. package/ts/platform/objectstorageretention.ts +36 -55
  173. package/ts/platform/storage.ts +1 -3
  174. package/ts/platform/storagemigration.golden.ts +7 -11
  175. package/ts/platform/storagemigration.ts +5 -55
  176. package/ts/platform/types.ts +2 -2
  177. package/ts/private/canonicaljson.ts +13 -1
  178. package/ts/private/dataproperties.ts +139 -0
  179. package/ts/private/networkcontract.ts +23 -9
  180. package/ts/private/producercontract.ts +19 -0
  181. package/ts/private/releaseversion.ts +70 -0
  182. package/ts/private/runtimepolicy.ts +105 -0
  183. package/ts/private/tokenlist.ts +30 -0
  184. package/ts/protocol.ts +364 -0
  185. package/ts/requests/admin.ts +11 -11
  186. package/ts/requests/backup.ts +112 -117
  187. package/ts/requests/cluster.ts +58 -13
  188. package/ts/requests/clusteringress.ts +9 -0
  189. package/ts/requests/config.ts +3 -3
  190. package/ts/requests/corestore.ts +4 -16
  191. package/ts/requests/network.ts +90 -41
  192. package/ts/requests/node.ts +21 -38
  193. package/ts/requests/pallet.ts +17 -17
  194. package/ts/requests/runtimesession.ts +63 -51
  195. package/ts/requests/secret.ts +5 -10
  196. package/ts/requests/service.ts +81 -0
  197. package/ts/runtime.corestore.databaseexportpackage.golden.ts +77 -95
  198. package/ts/runtime.corestore.databaseexportpackage.ts +51 -73
  199. package/ts/runtime.corestore.relay.ts +1 -10
  200. package/ts/runtime.corestore.ts +118 -268
  201. package/ts/runtime.networkprojection.ts +30 -30
  202. package/ts/runtime.ts +83 -158
  203. package/ts/runtime.workloadinit.ts +36 -48
  204. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.d.ts +0 -902
  205. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.d.ts +0 -35
  206. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.golden.js +0 -315
  207. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.js +0 -3315
  208. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.d.ts +0 -291
  209. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.d.ts +0 -30
  210. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.js +0 -408
  211. package/dist_ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.js +0 -1126
  212. package/ts/runtime.cloudlylegacydeploymentsettlement.golden.ts +0 -421
  213. package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.golden.ts +0 -510
  214. package/ts/runtime.cloudlylegacydeploymentsettlement.offlineexport.ts +0 -2470
  215. package/ts/runtime.cloudlylegacydeploymentsettlement.ts +0 -6630
@@ -1,27 +1,19 @@
1
1
  import { buildDigestPinnedImageReference, isSha256Digest, validateImmutableContainerInvocation, verifyImmutableContainerInvocationDigest, } from './immutableimage.js';
2
- import { snapshotRuntimeAssignmentV1, validateRuntimeAssignmentV1 } from './runtimeassignment.js';
2
+ import { snapshotRuntimeAssignment, validateRuntimeAssignment } from './runtimeassignment.js';
3
3
  import { canonicalizeStrictJson, createCanonicalJsonSha256Hex } from '../private/canonicaljson.js';
4
- export const runtimeConfigV1Contract = Object.freeze({
5
- digestDomain: 'serve.zone/runtime-config-v1',
4
+ import { assertRuntimeReadiness, isBoundedInteger, isExactRecord, isRuntimeCpuMillis, isRuntimeIdentityNumber, isRuntimeLogPolicy, isRuntimeMemoryBytes, isRuntimePortName, runtimePolicyLimits, } from '../private/runtimepolicy.js';
5
+ export const runtimeConfigContract = Object.freeze({
6
+ digestDomain: 'serve.zone/runtime-config',
6
7
  maximumCanonicalBytes: 262_144,
7
8
  maximumEnvironmentEntries: 128,
8
9
  maximumTargetPorts: 64,
9
- maximumReadinessDurationMs: 3_600_000,
10
- maximumLogRetentionMs: 31_536_000_000,
10
+ maximumReadinessDurationMs: runtimePolicyLimits.maximumReadinessDurationMs,
11
+ maximumLogRetentionMs: runtimePolicyLimits.maximumLogRetentionMs,
11
12
  });
12
13
  const fail = (messageArg) => { throw new Error(messageArg); };
13
14
  const encoder = new TextEncoder();
14
- const isInteger = (valueArg, minimumArg, maximumArg) => typeof valueArg === 'number' && Number.isSafeInteger(valueArg) && !Object.is(valueArg, -0)
15
- && valueArg >= minimumArg && valueArg <= maximumArg;
16
15
  const isIdentifier = (valueArg) => typeof valueArg === 'string' && /^[A-Za-z0-9][A-Za-z0-9:._-]{0,199}$/.test(valueArg);
17
16
  const isDigest = (valueArg) => typeof valueArg === 'string' && isSha256Digest(valueArg);
18
- const isPortName = (valueArg) => typeof valueArg === 'string' && /^[a-z0-9][a-z0-9_.-]{0,62}$/.test(valueArg);
19
- const isExactRecord = (valueArg, keysArg) => {
20
- if (!valueArg || typeof valueArg !== 'object' || Array.isArray(valueArg))
21
- return false;
22
- const keys = Object.keys(valueArg);
23
- return keys.length === keysArg.length && keys.every((keyArg) => keysArg.includes(keyArg));
24
- };
25
17
  /**
26
18
  * Bound traversal before canonicalization and copy descriptor values so input
27
19
  * getters/toJSON never run. The canonical helper supplies scalar Unicode and
@@ -32,10 +24,10 @@ const snapshotBoundedJson = (valueArg) => {
32
24
  let stringBytes = 0;
33
25
  const ancestors = new Set();
34
26
  const accountString = (value) => {
35
- if (value.length > runtimeConfigV1Contract.maximumCanonicalBytes)
27
+ if (value.length > runtimeConfigContract.maximumCanonicalBytes)
36
28
  fail('runtime config string is oversized');
37
29
  stringBytes += encoder.encode(value).byteLength;
38
- if (stringBytes > runtimeConfigV1Contract.maximumCanonicalBytes)
30
+ if (stringBytes > runtimeConfigContract.maximumCanonicalBytes)
39
31
  fail('runtime config is oversized');
40
32
  };
41
33
  const copy = (value, depth) => {
@@ -64,7 +56,7 @@ const snapshotBoundedJson = (valueArg) => {
64
56
  if (array) {
65
57
  const lengthDescriptor = Object.getOwnPropertyDescriptor(value, 'length');
66
58
  const length = lengthDescriptor?.value;
67
- if (!isInteger(length, 0, 256) || keys.length !== length + 1) {
59
+ if (!isBoundedInteger(length, 0, 256) || keys.length !== length + 1) {
68
60
  fail('runtime config requires bounded dense arrays');
69
61
  }
70
62
  const result = [];
@@ -95,71 +87,20 @@ const snapshotBoundedJson = (valueArg) => {
95
87
  }
96
88
  };
97
89
  const canonical = canonicalizeStrictJson(copy(valueArg, 0), fail);
98
- if (encoder.encode(canonical).byteLength > runtimeConfigV1Contract.maximumCanonicalBytes) {
90
+ if (encoder.encode(canonical).byteLength > runtimeConfigContract.maximumCanonicalBytes) {
99
91
  fail('runtime config canonical JSON is oversized');
100
92
  }
101
93
  return JSON.parse(canonical);
102
94
  };
103
- const timingKeys = ['initialDelayMs', 'startupGraceMs', 'intervalMs', 'timeoutMs',
104
- 'successThreshold', 'failureThreshold'];
105
- const assertReadiness = (valueArg, portsArg) => {
106
- if (!valueArg || typeof valueArg !== 'object')
107
- fail('runtime config readiness is required');
108
- const value = valueArg;
109
- const keys = value.kind === 'process' ? ['kind', ...timingKeys]
110
- : value.kind === 'tcp' ? ['kind', ...timingKeys, 'targetPort', 'port']
111
- : value.kind === 'http' ? ['kind', ...timingKeys, 'targetPort', 'port',
112
- 'scheme', 'host', 'path', 'expectedStatusCodes', 'followRedirects'] : [];
113
- if (keys.length === 0 || !isExactRecord(value, keys)
114
- || !isInteger(value.initialDelayMs, 0, runtimeConfigV1Contract.maximumReadinessDurationMs)
115
- || !isInteger(value.startupGraceMs, 0, runtimeConfigV1Contract.maximumReadinessDurationMs)
116
- || !isInteger(value.intervalMs, 100, runtimeConfigV1Contract.maximumReadinessDurationMs)
117
- || !isInteger(value.timeoutMs, 1, 60_000)
118
- || !isInteger(value.successThreshold, 1, 100)
119
- || !isInteger(value.failureThreshold, 1, 100)
120
- || value.timeoutMs > value.intervalMs || value.initialDelayMs > value.startupGraceMs) {
121
- fail('runtime config readiness must use explicit bounded timing and exact schema');
122
- }
123
- if (value.kind === 'process')
124
- return;
125
- const target = portsArg.find((portArg) => portArg.name === value.targetPort);
126
- if (!isPortName(value.targetPort) || !target || target.protocol !== 'tcp'
127
- || !isInteger(value.port, target.port, target.portEnd)) {
128
- fail('runtime config readiness must select a declared TCP target and port');
129
- }
130
- if (value.kind === 'tcp')
131
- return;
132
- if ((value.scheme !== 'http' && value.scheme !== 'https') || value.followRedirects !== false
133
- || typeof value.host !== 'string' || value.host.length > 253
134
- || !/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/.test(value.host)
135
- || typeof value.path !== 'string' || value.path.length > 4096
136
- || !value.path.startsWith('/') || value.path.startsWith('//')
137
- || /[^\x21-\x7e]|[\\#]/.test(value.path)
138
- || /%(?![0-9A-F]{2})/.test(value.path)
139
- || !Array.isArray(value.expectedStatusCodes) || value.expectedStatusCodes.length === 0
140
- || value.expectedStatusCodes.length > 32) {
141
- fail('runtime config HTTP readiness must use an exact bounded request policy');
142
- }
143
- const parsed = new URL(value.path, 'http://runtime.invalid');
144
- if (`${parsed.pathname}${parsed.search}` !== value.path)
145
- fail('runtime config HTTP path must be canonical');
146
- let previousCode = 0;
147
- for (const code of value.expectedStatusCodes) {
148
- if (!isInteger(code, 200, 599) || code <= previousCode) {
149
- fail('runtime config HTTP status expectations must be sorted unique final codes');
150
- }
151
- previousCode = code;
152
- }
153
- };
154
95
  const assertConfig = (valueArg) => {
155
- if (!isExactRecord(valueArg, ['schemaVersion', 'id', 'generation', 'organizationId', 'serviceId',
96
+ if (!isExactRecord(valueArg, ['id', 'generation', 'organizationId', 'serviceId',
156
97
  'image', 'environment', 'workingDirectory', 'cpuMillis', 'memoryBytes', 'readonlyRootfs',
157
98
  'runAsUser', 'runAsGroup', 'targetPorts', 'readiness', 'logs', 'digest'])
158
- || valueArg.schemaVersion !== 1 || !isIdentifier(valueArg.id)
159
- || !isInteger(valueArg.generation, 1, Number.MAX_SAFE_INTEGER)
99
+ || !isIdentifier(valueArg.id)
100
+ || !isBoundedInteger(valueArg.generation, 1, Number.MAX_SAFE_INTEGER)
160
101
  || !isIdentifier(valueArg.organizationId) || !isIdentifier(valueArg.serviceId)
161
102
  || !isDigest(valueArg.digest))
162
- fail('runtime config must use its exact v1 schema');
103
+ fail('runtime config must use its exact schema');
163
104
  const image = valueArg.image;
164
105
  if (!isExactRecord(image, ['registryHost', 'repository', 'imageDigest', 'invocation'])
165
106
  || typeof image.registryHost !== 'string' || image.registryHost.length > 253
@@ -171,7 +112,7 @@ const assertConfig = (valueArg) => {
171
112
  buildDigestPinnedImageReference(image.registryHost, image.repository, image.imageDigest);
172
113
  const environment = valueArg.environment;
173
114
  if (!environment || typeof environment !== 'object' || Array.isArray(environment)
174
- || Object.keys(environment).length > runtimeConfigV1Contract.maximumEnvironmentEntries) {
115
+ || Object.keys(environment).length > runtimeConfigContract.maximumEnvironmentEntries) {
175
116
  fail('runtime config requires an explicit bounded nonsecret environment');
176
117
  }
177
118
  for (const [key, value] of Object.entries(environment)) {
@@ -184,23 +125,23 @@ const assertConfig = (valueArg) => {
184
125
  if (typeof directory !== 'string' || !directory.startsWith('/')
185
126
  || encoder.encode(directory).byteLength > 4096 || /[\u0000-\u001f\u007f]/.test(directory)
186
127
  || (directory !== '/' && directory.split('/').slice(1).some((partArg) => !partArg || partArg === '.' || partArg === '..'))
187
- || !(valueArg.cpuMillis === null || isInteger(valueArg.cpuMillis, 1, 1_000_000))
188
- || !isInteger(valueArg.memoryBytes, 16 * 1024 * 1024, 2 ** 50)
128
+ || !isRuntimeCpuMillis(valueArg.cpuMillis)
129
+ || !isRuntimeMemoryBytes(valueArg.memoryBytes)
189
130
  || typeof valueArg.readonlyRootfs !== 'boolean'
190
131
  || !((valueArg.runAsUser === null && valueArg.runAsGroup === null)
191
- || (isInteger(valueArg.runAsUser, 0, 2 ** 31 - 1) && isInteger(valueArg.runAsGroup, 0, 2 ** 31 - 1)))) {
132
+ || (isRuntimeIdentityNumber(valueArg.runAsUser) && isRuntimeIdentityNumber(valueArg.runAsGroup)))) {
192
133
  fail('runtime config requires canonical directory and explicit resource and identity policies');
193
134
  }
194
135
  const ports = valueArg.targetPorts;
195
- if (!Array.isArray(ports) || ports.length > runtimeConfigV1Contract.maximumTargetPorts) {
136
+ if (!Array.isArray(ports) || ports.length > runtimeConfigContract.maximumTargetPorts) {
196
137
  fail('runtime config target ports must be a bounded array');
197
138
  }
198
139
  let previousName = '';
199
140
  const validatedPorts = [];
200
141
  for (const port of ports) {
201
142
  if (!isExactRecord(port, ['name', 'port', 'portEnd', 'protocol'])
202
- || !isPortName(port.name) || port.name <= previousName
203
- || !isInteger(port.port, 1, 65535) || !isInteger(port.portEnd, port.port, 65535)
143
+ || !isRuntimePortName(port.name) || port.name <= previousName
144
+ || !isBoundedInteger(port.port, 1, 65535) || !isBoundedInteger(port.portEnd, port.port, 65535)
204
145
  || (port.protocol !== 'tcp' && port.protocol !== 'udp')
205
146
  || validatedPorts.some((previousArg) => previousArg.protocol === port.protocol
206
147
  && port.port <= previousArg.portEnd && port.portEnd >= previousArg.port)) {
@@ -209,13 +150,9 @@ const assertConfig = (valueArg) => {
209
150
  previousName = port.name;
210
151
  validatedPorts.push(port);
211
152
  }
212
- assertReadiness(valueArg.readiness, validatedPorts);
213
- const logs = valueArg.logs;
214
- if (!isExactRecord(logs, ['maximumLineBytes', 'maximumBufferedBytes', 'retentionMs'])
215
- || !isInteger(logs.maximumLineBytes, 1, 1_048_576)
216
- || !isInteger(logs.maximumBufferedBytes, 1, 67_108_864)
217
- || logs.maximumBufferedBytes < logs.maximumLineBytes
218
- || !isInteger(logs.retentionMs, 1, runtimeConfigV1Contract.maximumLogRetentionMs)) {
153
+ assertRuntimeReadiness(valueArg.readiness, (targetPortArg, portArg) => validatedPorts.some((targetArg) => targetArg.name === targetPortArg && targetArg.protocol === 'tcp'
154
+ && portArg >= targetArg.port && portArg <= targetArg.portEnd), fail);
155
+ if (!isRuntimeLogPolicy(valueArg.logs)) {
219
156
  fail('runtime config logs require explicit bounded line, buffer and retention limits');
220
157
  }
221
158
  return valueArg;
@@ -224,27 +161,27 @@ const assertConfig = (valueArg) => {
224
161
  * Detached exact-schema snapshot for synchronous persistence assertions. Digest
225
162
  * integrity, scope authorization, admission and runtime readiness are not implied.
226
163
  */
227
- export const snapshotRuntimeConfigV1 = (valueArg) => assertConfig(snapshotBoundedJson(valueArg));
164
+ export const snapshotRuntimeConfig = (valueArg) => assertConfig(snapshotBoundedJson(valueArg));
228
165
  /** Domain-separated canonical JSON excludes only the config's own digest. */
229
- export const computeRuntimeConfigV1Digest = async (configArg) => {
230
- const { digest: _digest, ...payload } = snapshotRuntimeConfigV1(configArg);
166
+ export const computeRuntimeConfigDigest = async (configArg) => {
167
+ const { digest: _digest, ...payload } = snapshotRuntimeConfig(configArg);
231
168
  return `sha256:${await createCanonicalJsonSha256Hex(canonicalizeStrictJson({
232
- domain: runtimeConfigV1Contract.digestDomain, payload,
169
+ domain: runtimeConfigContract.digestDomain, payload,
233
170
  }, fail), fail)}`;
234
171
  };
235
172
  const validateSnapshot = async (configArg) => {
236
173
  if (!await verifyImmutableContainerInvocationDigest(configArg.image.invocation)) {
237
174
  return ['runtime config immutable invocation digest does not match'];
238
175
  }
239
- return configArg.digest === await computeRuntimeConfigV1Digest(configArg)
176
+ return configArg.digest === await computeRuntimeConfigDigest(configArg)
240
177
  ? [] : ['runtime config digest does not match'];
241
178
  };
242
- export const validateRuntimeConfigV1 = async (valueArg) => {
179
+ export const validateRuntimeConfig = async (valueArg) => {
243
180
  try {
244
- return await validateSnapshot(snapshotRuntimeConfigV1(valueArg));
181
+ return await validateSnapshot(snapshotRuntimeConfig(valueArg));
245
182
  }
246
183
  catch {
247
- return ['runtime config must use its exact canonical v1 schema'];
184
+ return ['runtime config must use its exact canonical schema'];
248
185
  }
249
186
  };
250
187
  /**
@@ -254,11 +191,11 @@ export const validateRuntimeConfigV1 = async (valueArg) => {
254
191
  * controller, durably admit the attempt, resolve other owner references, and
255
192
  * verify runtime and readiness evidence before effects or route publication.
256
193
  */
257
- export const bindRuntimeConfigV1ToAssignment = async (configArg, assignmentArg) => {
258
- const config = snapshotRuntimeConfigV1(configArg);
259
- const assignment = snapshotRuntimeAssignmentV1(snapshotBoundedJson(assignmentArg));
194
+ export const bindRuntimeConfigToAssignment = async (configArg, assignmentArg) => {
195
+ const config = snapshotRuntimeConfig(configArg);
196
+ const assignment = snapshotRuntimeAssignment(snapshotBoundedJson(assignmentArg));
260
197
  if ((await validateSnapshot(config)).length !== 0
261
- || (await validateRuntimeAssignmentV1(assignment)).length !== 0) {
198
+ || (await validateRuntimeAssignment(assignment)).length !== 0) {
262
199
  fail('runtime config binding requires valid config, invocation and assignment digests');
263
200
  }
264
201
  const reference = assignment.workload.config;
@@ -275,4 +212,4 @@ export const bindRuntimeConfigV1ToAssignment = async (configArg, assignmentArg)
275
212
  fail('runtime config lacks exact assignment platform evidence');
276
213
  return { config, assignment, platformEvidence };
277
214
  };
278
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2RhdGEvcnVudGltZWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGNBQWMsRUFDZCxvQ0FBb0MsRUFDcEMsd0NBQXdDLEdBQ3pDLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFnSG5HLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDbkQsWUFBWSxFQUFFLDhCQUE4QjtJQUM1QyxxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLHlCQUF5QixFQUFFLEdBQUc7SUFDOUIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QiwwQkFBMEIsRUFBRSxTQUFTO0lBQ3JDLHFCQUFxQixFQUFFLGNBQWM7Q0FDN0IsQ0FBQyxDQUFDO0FBRVosTUFBTSxJQUFJLEdBQWtDLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdGLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFpQixFQUFFLFVBQWtCLEVBQUUsVUFBa0IsRUFBc0IsRUFBRSxDQUNsRyxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO09BQ3ZGLFFBQVEsSUFBSSxVQUFVLElBQUksUUFBUSxJQUFJLFVBQVUsQ0FBQztBQUN0RCxNQUFN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
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2RhdGEvcnVudGltZWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLGNBQWMsRUFDZCxvQ0FBb0MsRUFDcEMsd0NBQXdDLEdBQ3pDLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkcsT0FBTyxFQUNMLHNCQUFzQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFDcEcsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEdBQ2pGLE1BQU0sNkJBQTZCLENBQUM7QUErR3JDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDakQsWUFBWSxFQUFFLDJCQUEyQjtJQUN6QyxxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLHlCQUF5QixFQUFFLEdBQUc7SUFDOUIsa0JBQWtCLEVBQUUsRUFBRTtJQUN0QiwwQkFBMEIsRUFBRSxtQkFBbUIsQ0FBQywwQkFBMEI7SUFDMUUscUJBQXFCLEVBQUUsbUJBQW1CLENBQUMscUJBQXFCO0NBQ3hELENBQUMsQ0FBQztBQUVaLE1BQU0sSUFBSSxHQUFrQyxDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3RixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xDLE1BQU0sWUFBWSxHQUFHLENBQUMsUUFBaUIsRUFBc0IsRUFBRSxDQUM3RCxPQUFPLFFBQVEsS0FBSyxRQUFR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
@@ -1,25 +1,24 @@
1
1
  import type { IIdentityCredential } from './user.js';
2
- import type { IRuntimeAssignmentObservationV1, IRuntimeAssignmentReferenceV1, IRuntimeAssignmentV1, IRuntimeControllerV1 } from './runtimeassignment.js';
3
- import type { IRuntimeConfigV1 } from './runtimeconfig.js';
2
+ import type { IRuntimeAssignmentObservation, IRuntimeAssignmentReference, IRuntimeAssignment, IRuntimeController, TRuntimeWorkloadAuthority } from './runtimeassignment.js';
3
+ import { type IProtocolOffer } from '../protocol.js';
4
+ import type { IRuntimeConfig } from './runtimeconfig.js';
4
5
  /**
5
6
  * Server-issued public binding for the current authenticated physical connection.
6
7
  * It contains no bearer, peer ID or client-selected authority. A serialized binding
7
8
  * is not authentication: every receiver must compare it with its live peer context.
8
9
  * Onebox local execution uses the same shape with its own authenticated IPC owner.
9
10
  */
10
- export interface IRuntimeSessionBindingV1 {
11
- schemaVersion: 1;
11
+ export interface IRuntimeSessionBinding {
12
12
  reporterSessionId: string;
13
13
  nodeId: string;
14
14
  credentialGeneration: number;
15
15
  sessionEpoch: number;
16
16
  controllerInstanceId: string;
17
- controller: IRuntimeControllerV1;
17
+ controller: IRuntimeController;
18
18
  runtimeNamespace: string;
19
19
  }
20
20
  /** Pallet-initiated WSS on its configured Cloudly HTTPS origin; never HTTP RPC. */
21
- export interface IRegisterPalletRuntimeSessionRequestV1 {
22
- schemaVersion: 1;
21
+ export interface IRegisterPalletRuntimeSessionRequest {
23
22
  nodeId: string;
24
23
  credentialGeneration: number;
25
24
  /** Sensitive ephemeral input; exclude the complete request from hooks and logs. */
@@ -29,69 +28,103 @@ export interface IRegisterPalletRuntimeSessionRequestV1 {
29
28
  * registration. It proves which node process is registering when the transport cannot:
30
29
  * one relay socket carries many nodes, so the physical peer no longer distinguishes a
31
30
  * node restart from a replay. It is not a secret and it grants no authority; the bearer
32
- * still authenticates. Absent only from legacy senders, which a controller may accept
33
- * exclusively from a directly connected node.
31
+ * still authenticates.
34
32
  */
35
- nodeInstanceNonce?: string;
33
+ nodeInstanceNonce: string;
34
+ /**
35
+ * What this node can resolve for a workload, sorted and duplicate-free.
36
+ *
37
+ * It states a capability of the build that is registering, not a permission: the controller
38
+ * refuses an assignment whose `requiredWorkloadAuthorities` this list does not cover, instead
39
+ * of a node accepting work it cannot carry out. It is not part of the registration identity —
40
+ * a changed build is a new process and therefore a new `nodeInstanceNonce` — so a replay of one
41
+ * registration with different authorities is a conflict rather than an update.
42
+ */
43
+ resolvedAuthorities: TRuntimeWorkloadAuthority[];
44
+ /** Read and negotiated before anything else on this body; see `runtimeSessionContract`. */
45
+ protocol: IProtocolOffer;
46
+ }
47
+ /**
48
+ * What the controller answers an accepted registration with.
49
+ *
50
+ * The offer travels beside the binding rather than inside it: the binding is embedded in every
51
+ * session-scoped request and compared as a whole, so an offer in it would make two builds of one
52
+ * controller produce two bindings for one session.
53
+ */
54
+ export interface IRegisterPalletRuntimeSessionResponse {
55
+ session: IRuntimeSessionBinding;
56
+ protocol: IProtocolOffer;
36
57
  }
37
- export interface IApplyRuntimeAssignmentRequestV1 {
38
- session: IRuntimeSessionBindingV1;
39
- assignment: IRuntimeAssignmentV1;
40
- config: IRuntimeConfigV1;
58
+ export interface IApplyRuntimeAssignmentRequest {
59
+ session: IRuntimeSessionBinding;
60
+ assignment: IRuntimeAssignment;
61
+ config: IRuntimeConfig;
41
62
  /** Exact removed incumbent for a new attempt; not assignment.previous. */
42
- predecessor: IRuntimeAssignmentReferenceV1 | null;
63
+ predecessor: IRuntimeAssignmentReference | null;
43
64
  }
44
65
  /** Durable admission acknowledgement only; it asserts neither effects nor readiness. */
45
- export interface IApplyRuntimeAssignmentResponseV1 {
66
+ export interface IApplyRuntimeAssignmentResponse {
46
67
  status: 'accepted' | 'replay' | 'historical';
47
- assignment: IRuntimeAssignmentReferenceV1;
68
+ assignment: IRuntimeAssignmentReference;
48
69
  }
49
- export interface IReportRuntimeAssignmentObservationRequestV1 {
70
+ export interface IReportRuntimeAssignmentObservationRequest {
50
71
  /** Always the CURRENT authenticated connection, including after credential rotation. */
51
- session: IRuntimeSessionBindingV1;
72
+ session: IRuntimeSessionBinding;
52
73
  /** Exact durable outbox body. Never rewrite reporterSessionId, digest or sequence. */
53
- observation: IRuntimeAssignmentObservationV1;
74
+ observation: IRuntimeAssignmentObservation;
54
75
  }
55
- export type TRuntimeObservationAuthorityUseV1 = 'current-session' | 'historical-recovery';
76
+ export type TRuntimeObservationAuthorityUse = 'current-session' | 'historical-recovery';
56
77
  /** Content comparison result only; all supplied authority must come from its trusted owner. */
57
- export interface IRuntimeReporterSessionBindingV1 {
58
- session: IRuntimeSessionBindingV1;
59
- assignment: IRuntimeAssignmentV1;
60
- reporterHistory: IRuntimeSessionBindingV1;
61
- authorityUse: TRuntimeObservationAuthorityUseV1;
78
+ export interface IRuntimeReporterSessionBinding {
79
+ session: IRuntimeSessionBinding;
80
+ assignment: IRuntimeAssignment;
81
+ reporterHistory: IRuntimeSessionBinding;
82
+ authorityUse: TRuntimeObservationAuthorityUse;
62
83
  }
63
- export interface IReportRuntimeAssignmentObservationResponseV1 {
84
+ export interface IReportRuntimeAssignmentObservationResponse {
64
85
  /** Exact request body after a durable sequence/receipt transaction. */
65
- observation: IRuntimeAssignmentObservationV1;
86
+ observation: IRuntimeAssignmentObservation;
66
87
  /**
67
88
  * Historical recovery can advance the durable counter and ACK only. It must not
68
89
  * update active readiness, routing or liveness; those require a fresh report
69
90
  * from the current session. Neither classification is proof of writer fencing.
70
91
  */
71
- authorityUse: TRuntimeObservationAuthorityUseV1;
92
+ authorityUse: TRuntimeObservationAuthorityUse;
72
93
  }
73
- export interface IGetRuntimeRegistryCredentialRequestV1 {
74
- session: IRuntimeSessionBindingV1;
94
+ export interface IGetRuntimeRegistryCredentialRequest {
95
+ session: IRuntimeSessionBinding;
75
96
  /** The server must authorize this exact CURRENT assignment, including its node. */
76
- assignment: IRuntimeAssignmentReferenceV1;
97
+ assignment: IRuntimeAssignmentReference;
77
98
  }
78
99
  /** Sensitive ephemeral material; never persist, hash, log or include in diagnostics. */
79
- export interface IGetRuntimeRegistryCredentialResponseV1 {
100
+ export interface IGetRuntimeRegistryCredentialResponse {
80
101
  username: string;
81
102
  password: string;
82
103
  expiresAt: number;
83
104
  }
84
105
  /** Cloudly human/machine JWT registration on a physical TypedSocket; reject HTTP. */
85
- export interface IRegisterCloudlyClientSessionRequestV1 {
86
- schemaVersion: 1;
106
+ export interface IRegisterCloudlyClientSessionRequest {
87
107
  /** Authenticate the current JWT server-side; do not accept client identity claims. */
88
108
  identity: IIdentityCredential;
109
+ /** Read and negotiated before the identity is authenticated; see `runtimeSessionContract`. */
110
+ protocol: IProtocolOffer;
89
111
  }
90
- export interface IRegisterCloudlyClientSessionResponseV1 {
112
+ export interface IRegisterCloudlyClientSessionResponse {
91
113
  /** Server-owned identity tagging completed; never trust a client-authored tag. */
92
114
  registered: true;
115
+ /** The controller's offer, so an accepted client can judge the session it just opened. */
116
+ protocol: IProtocolOffer;
93
117
  }
94
- export declare const runtimeSessionV1Contract: Readonly<{
118
+ /**
119
+ * The rules every runtime session registration is judged by.
120
+ *
121
+ * Every carrier here is judged in the one server order `protocol.readProtocolOffer` states,
122
+ * against this session kind's own offer, so the snapshots below see a body whose offer this
123
+ * controller already accepted. For a node that order is also what keeps a refused registration
124
+ * from touching its packet access: the refusal is named before `networkVpn` is asked to mutate
125
+ * anything.
126
+ */
127
+ export declare const runtimeSessionContract: Readonly<{
95
128
  readonly maximumWireCanonicalBytes: 327680;
96
129
  readonly maximumCredentialBytes: 16384;
97
130
  readonly maximumRegistryPasswordBytes: 8192;
@@ -100,33 +133,38 @@ export declare const runtimeSessionV1Contract: Readonly<{
100
133
  readonly nodeInstanceNonceFormat: "canonical-lowercase-uuid-per-node-process";
101
134
  /** The registration a controller must treat as one: a change in any part is a new session. */
102
135
  readonly registrationIdentity: "node-id-and-credential-generation-and-node-instance-nonce";
103
- /** A relay socket carries many nodes, so its transport cannot prove a node process. */
104
- readonly relayRegistrationRequiresNodeInstanceNonce: true;
105
136
  readonly error: "Runtime session contract rejected.";
106
137
  }>;
107
138
  /** Synchronous detached structural assertion only; never an authentication check. */
108
- export declare const snapshotRuntimeSessionBindingV1: (valueArg: unknown) => IRuntimeSessionBindingV1;
109
- export declare const snapshotRegisterPalletRuntimeSessionRequestV1: (valueArg: unknown) => IRegisterPalletRuntimeSessionRequestV1;
110
- export declare const snapshotApplyRuntimeAssignmentRequestV1: (valueArg: unknown) => IApplyRuntimeAssignmentRequestV1;
111
- export declare const snapshotApplyRuntimeAssignmentResponseV1: (valueArg: unknown) => IApplyRuntimeAssignmentResponseV1;
112
- export declare const snapshotReportRuntimeAssignmentObservationRequestV1: (valueArg: unknown) => IReportRuntimeAssignmentObservationRequestV1;
113
- export declare const snapshotReportRuntimeAssignmentObservationResponseV1: (valueArg: unknown) => IReportRuntimeAssignmentObservationResponseV1;
114
- export declare const snapshotGetRuntimeRegistryCredentialRequestV1: (valueArg: unknown) => IGetRuntimeRegistryCredentialRequestV1;
115
- export declare const snapshotGetRuntimeRegistryCredentialResponseV1: (valueArg: unknown) => IGetRuntimeRegistryCredentialResponseV1;
116
- export declare const snapshotRegisterCloudlyClientSessionRequestV1: (valueArg: unknown) => IRegisterCloudlyClientSessionRequestV1;
117
- export declare const snapshotRegisterCloudlyClientSessionResponseV1: (valueArg: unknown) => IRegisterCloudlyClientSessionResponseV1;
118
- /** Bind the authenticated Cloudly registration reply to the node and credential sent. */
119
- export declare const bindRegisterPalletRuntimeSessionResponseV1: (valueArg: unknown, requestArg: unknown) => IRuntimeSessionBindingV1;
139
+ export declare const snapshotRuntimeSessionBinding: (valueArg: unknown) => IRuntimeSessionBinding;
140
+ export declare const snapshotRegisterPalletRuntimeSessionRequest: (valueArg: unknown) => IRegisterPalletRuntimeSessionRequest;
141
+ export declare const snapshotRegisterPalletRuntimeSessionResponse: (valueArg: unknown) => IRegisterPalletRuntimeSessionResponse;
142
+ export declare const snapshotApplyRuntimeAssignmentRequest: (valueArg: unknown) => IApplyRuntimeAssignmentRequest;
143
+ export declare const snapshotApplyRuntimeAssignmentResponse: (valueArg: unknown) => IApplyRuntimeAssignmentResponse;
144
+ export declare const snapshotReportRuntimeAssignmentObservationRequest: (valueArg: unknown) => IReportRuntimeAssignmentObservationRequest;
145
+ export declare const snapshotReportRuntimeAssignmentObservationResponse: (valueArg: unknown) => IReportRuntimeAssignmentObservationResponse;
146
+ export declare const snapshotGetRuntimeRegistryCredentialRequest: (valueArg: unknown) => IGetRuntimeRegistryCredentialRequest;
147
+ export declare const snapshotGetRuntimeRegistryCredentialResponse: (valueArg: unknown) => IGetRuntimeRegistryCredentialResponse;
148
+ export declare const snapshotRegisterCloudlyClientSessionRequest: (valueArg: unknown) => IRegisterCloudlyClientSessionRequest;
149
+ export declare const snapshotRegisterCloudlyClientSessionResponse: (valueArg: unknown) => IRegisterCloudlyClientSessionResponse;
150
+ /**
151
+ * Bind the authenticated Cloudly registration reply to the node, credential and offer sent.
152
+ *
153
+ * The client negotiates the answered offer against the one it sent: acceptance by a controller is
154
+ * that controller's judgement, and a node that cannot serve the session it was given must not open
155
+ * it. Both offers were read from the two bodies, so this compares what was actually exchanged.
156
+ */
157
+ export declare const bindRegisterPalletRuntimeSessionResponse: (valueArg: unknown, requestArg: unknown) => IRegisterPalletRuntimeSessionResponse;
120
158
  /** Reject already expired material; issuance policy and current assignment authority remain server-owned. */
121
- export declare const bindGetRuntimeRegistryCredentialResponseV1: (valueArg: unknown, nowArg: number) => IGetRuntimeRegistryCredentialResponseV1;
159
+ export declare const bindGetRuntimeRegistryCredentialResponse: (valueArg: unknown, nowArg: number) => IGetRuntimeRegistryCredentialResponse;
122
160
  /**
123
161
  * Capture every input before awaiting digest verification. trustedSessionArg must
124
162
  * come from the receiving live connection, never from another request field.
125
163
  * This binds content only; durable CAS, slot admission and authority remain owners.
126
164
  */
127
- export declare const bindApplyRuntimeAssignmentRequestV1: (valueArg: unknown, trustedSessionArg: unknown) => Promise<IApplyRuntimeAssignmentRequestV1>;
165
+ export declare const bindApplyRuntimeAssignmentRequest: (valueArg: unknown, trustedSessionArg: unknown) => Promise<IApplyRuntimeAssignmentRequest>;
128
166
  /** Match an admission acknowledgement to the exact sent revision, including historical replies. */
129
- export declare const bindApplyRuntimeAssignmentResponseV1: (valueArg: unknown, requestArg: unknown) => IApplyRuntimeAssignmentResponseV1;
167
+ export declare const bindApplyRuntimeAssignmentResponse: (valueArg: unknown, requestArg: unknown) => IApplyRuntimeAssignmentResponse;
130
168
  /**
131
169
  * Synchronous detached content binding, not authentication. trustedSessionArg must
132
170
  * be the CURRENT authenticated physical peer; reporterHistoryArg must be immutable
@@ -134,23 +172,23 @@ export declare const bindApplyRuntimeAssignmentResponseV1: (valueArg: unknown, r
134
172
  * The owning transaction must recheck current credential/peer authority. Assignment
135
173
  * digest validation and report-specific authority remain the caller's responsibility.
136
174
  */
137
- export declare const bindRuntimeReporterSessionV1: (sessionArg: unknown, reporterSessionIdArg: string, assignmentArg: unknown, trustedSessionArg: unknown, reporterHistoryArg: unknown) => IRuntimeReporterSessionBindingV1;
175
+ export declare const bindRuntimeReporterSession: (sessionArg: unknown, reporterSessionIdArg: string, assignmentArg: unknown, trustedSessionArg: unknown, reporterHistoryArg: unknown) => IRuntimeReporterSessionBinding;
138
176
  /**
139
177
  * trustedSessionArg is the CURRENT authenticated physical peer. reporterHistoryArg
140
178
  * must be server-indexed immutable session history, obtained by the original
141
- * observation's reporterSessionId; never accept caller-supplied history. All V1
142
- * runtime sessions are Pallet-purpose sessions, so Spark history cannot qualify.
179
+ * observation's reporterSessionId; never accept caller-supplied history. Every
180
+ * runtime session is a Pallet-purpose session, so Spark history cannot qualify.
143
181
  *
144
182
  * This verifies content and classifies recovery, not authentication, history
145
183
  * provenance, sequence admission or current authority. The server must transact
146
184
  * receipt/counter acceptance under current credential and peer authority. A
147
185
  * historical result MUST NOT restore active readiness, routes or liveness.
148
186
  */
149
- export declare const bindReportRuntimeAssignmentObservationRequestV1: (valueArg: unknown, assignmentArg: unknown, trustedSessionArg: unknown, reporterHistoryArg: unknown) => Promise<{
150
- request: IReportRuntimeAssignmentObservationRequestV1;
151
- authorityUse: TRuntimeObservationAuthorityUseV1;
187
+ export declare const bindReportRuntimeAssignmentObservationRequest: (valueArg: unknown, assignmentArg: unknown, trustedSessionArg: unknown, reporterHistoryArg: unknown) => Promise<{
188
+ request: IReportRuntimeAssignmentObservationRequest;
189
+ authorityUse: TRuntimeObservationAuthorityUse;
152
190
  }>;
153
191
  /** Reject body rewriting and a historical receipt mislabeled as current authority. */
154
- export declare const bindReportRuntimeAssignmentObservationResponseV1: (valueArg: unknown, requestArg: unknown) => IReportRuntimeAssignmentObservationResponseV1;
192
+ export declare const bindReportRuntimeAssignmentObservationResponse: (valueArg: unknown, requestArg: unknown) => IReportRuntimeAssignmentObservationResponse;
155
193
  /** Current assignment lookup and live peer authorization remain mandatory server-owned inputs. */
156
- export declare const bindGetRuntimeRegistryCredentialRequestV1: (valueArg: unknown, assignmentArg: unknown, trustedSessionArg: unknown) => Promise<IGetRuntimeRegistryCredentialRequestV1>;
194
+ export declare const bindGetRuntimeRegistryCredentialRequest: (valueArg: unknown, assignmentArg: unknown, trustedSessionArg: unknown) => Promise<IGetRuntimeRegistryCredentialRequest>;