@cotal-ai/core 0.48.2 → 0.50.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 (125) hide show
  1. package/dist/agent-file.d.ts +34 -0
  2. package/dist/agent-file.d.ts.map +1 -1
  3. package/dist/agent-file.js +94 -2
  4. package/dist/agent-file.js.map +1 -1
  5. package/dist/auth-provider.d.ts +25 -1
  6. package/dist/auth-provider.d.ts.map +1 -1
  7. package/dist/auth-provider.js.map +1 -1
  8. package/dist/connector.d.ts +4 -0
  9. package/dist/connector.d.ts.map +1 -1
  10. package/dist/connector.js.map +1 -1
  11. package/dist/endpoint-action.d.ts +1 -0
  12. package/dist/endpoint-action.d.ts.map +1 -1
  13. package/dist/endpoint-action.js +1 -1
  14. package/dist/endpoint-action.js.map +1 -1
  15. package/dist/endpoint-binding.d.ts +6 -0
  16. package/dist/endpoint-binding.d.ts.map +1 -1
  17. package/dist/endpoint-binding.js +17 -0
  18. package/dist/endpoint-binding.js.map +1 -1
  19. package/dist/endpoint-envelope.d.ts +1 -1
  20. package/dist/endpoint-envelope.d.ts.map +1 -1
  21. package/dist/endpoint-envelope.js +1 -1
  22. package/dist/endpoint-envelope.js.map +1 -1
  23. package/dist/endpoint-error.d.ts +10 -1
  24. package/dist/endpoint-error.d.ts.map +1 -1
  25. package/dist/endpoint-error.js +12 -0
  26. package/dist/endpoint-error.js.map +1 -1
  27. package/dist/endpoint-grants.d.ts.map +1 -1
  28. package/dist/endpoint-grants.js +34 -12
  29. package/dist/endpoint-grants.js.map +1 -1
  30. package/dist/endpoint-invoke.d.ts.map +1 -1
  31. package/dist/endpoint-invoke.js +16 -51
  32. package/dist/endpoint-invoke.js.map +1 -1
  33. package/dist/endpoint-publish-denial.d.ts +35 -0
  34. package/dist/endpoint-publish-denial.d.ts.map +1 -0
  35. package/dist/endpoint-publish-denial.js +56 -0
  36. package/dist/endpoint-publish-denial.js.map +1 -0
  37. package/dist/endpoint-serve-kv.d.ts +16 -0
  38. package/dist/endpoint-serve-kv.d.ts.map +1 -1
  39. package/dist/endpoint-serve-kv.js +29 -0
  40. package/dist/endpoint-serve-kv.js.map +1 -1
  41. package/dist/endpoint-serve.d.ts.map +1 -1
  42. package/dist/endpoint-serve.js +9 -4
  43. package/dist/endpoint-serve.js.map +1 -1
  44. package/dist/endpoint-service.d.ts +21 -0
  45. package/dist/endpoint-service.d.ts.map +1 -1
  46. package/dist/endpoint-service.js +150 -15
  47. package/dist/endpoint-service.js.map +1 -1
  48. package/dist/endpoint-subjects.d.ts +34 -0
  49. package/dist/endpoint-subjects.d.ts.map +1 -1
  50. package/dist/endpoint-subjects.js +87 -18
  51. package/dist/endpoint-subjects.js.map +1 -1
  52. package/dist/endpoint-verbs.d.ts +4 -2
  53. package/dist/endpoint-verbs.d.ts.map +1 -1
  54. package/dist/endpoint-verbs.js +23 -8
  55. package/dist/endpoint-verbs.js.map +1 -1
  56. package/dist/endpoint.d.ts +309 -8
  57. package/dist/endpoint.d.ts.map +1 -1
  58. package/dist/endpoint.js +888 -61
  59. package/dist/endpoint.js.map +1 -1
  60. package/dist/index.d.ts +4 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +8 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/issued-authority.d.ts +168 -0
  65. package/dist/issued-authority.d.ts.map +1 -0
  66. package/dist/issued-authority.js +497 -0
  67. package/dist/issued-authority.js.map +1 -0
  68. package/dist/issuer-session.d.ts +30 -0
  69. package/dist/issuer-session.d.ts.map +1 -0
  70. package/dist/issuer-session.js +51 -0
  71. package/dist/issuer-session.js.map +1 -0
  72. package/dist/lease.d.ts +22 -0
  73. package/dist/lease.d.ts.map +1 -1
  74. package/dist/lease.js +14 -1
  75. package/dist/lease.js.map +1 -1
  76. package/dist/lifecycle-state.d.ts +9 -2
  77. package/dist/lifecycle-state.d.ts.map +1 -1
  78. package/dist/lifecycle-state.js +11 -2
  79. package/dist/lifecycle-state.js.map +1 -1
  80. package/dist/membership-feed.d.ts +24 -1
  81. package/dist/membership-feed.d.ts.map +1 -1
  82. package/dist/membership-feed.js +61 -3
  83. package/dist/membership-feed.js.map +1 -1
  84. package/dist/provision.d.ts +24 -14
  85. package/dist/provision.d.ts.map +1 -1
  86. package/dist/provision.js +149 -15
  87. package/dist/provision.js.map +1 -1
  88. package/dist/remote-manager-authority.d.ts +126 -1
  89. package/dist/remote-manager-authority.d.ts.map +1 -1
  90. package/dist/remote-manager-authority.js +21 -0
  91. package/dist/remote-manager-authority.js.map +1 -1
  92. package/dist/run-admission.d.ts +88 -0
  93. package/dist/run-admission.d.ts.map +1 -0
  94. package/dist/run-admission.js +193 -0
  95. package/dist/run-admission.js.map +1 -0
  96. package/dist/run-driver-grants.d.ts +10 -0
  97. package/dist/run-driver-grants.d.ts.map +1 -1
  98. package/dist/run-driver-grants.js +21 -0
  99. package/dist/run-driver-grants.js.map +1 -1
  100. package/dist/run-host.d.ts +7 -1
  101. package/dist/run-host.d.ts.map +1 -1
  102. package/dist/run-host.js.map +1 -1
  103. package/dist/run-journal.d.ts +4 -0
  104. package/dist/run-journal.d.ts.map +1 -1
  105. package/dist/run-journal.js +80 -17
  106. package/dist/run-journal.js.map +1 -1
  107. package/dist/runtime.d.ts +31 -3
  108. package/dist/runtime.d.ts.map +1 -1
  109. package/dist/secret-fs.d.ts +25 -0
  110. package/dist/secret-fs.d.ts.map +1 -1
  111. package/dist/secret-fs.js +136 -3
  112. package/dist/secret-fs.js.map +1 -1
  113. package/dist/secret-store.d.ts +44 -0
  114. package/dist/secret-store.d.ts.map +1 -1
  115. package/dist/secret-store.js +60 -1
  116. package/dist/secret-store.js.map +1 -1
  117. package/dist/streams.d.ts +23 -75
  118. package/dist/streams.d.ts.map +1 -1
  119. package/dist/streams.js +65 -85
  120. package/dist/streams.js.map +1 -1
  121. package/dist/subjects.d.ts +11 -1
  122. package/dist/subjects.d.ts.map +1 -1
  123. package/dist/subjects.js +11 -1
  124. package/dist/subjects.js.map +1 -1
  125. package/package.json +1 -1
@@ -9,7 +9,7 @@
9
9
  export interface RemoteManagerAuthorityRequest {
10
10
  v: 1;
11
11
  kind: "manager-service-authority";
12
- operation: "prepare" | "activate" | "renew" | "session";
12
+ operation: "prepare" | "activate" | "renew" | "session" | "retire";
13
13
  space: string;
14
14
  /** The interactive ledger actor authenticating the request (normally `cli`). */
15
15
  actor: string;
@@ -27,6 +27,18 @@ export interface RemoteManagerAuthorityRequest {
27
27
  epoch: number;
28
28
  exp: number;
29
29
  };
30
+ /** Retire only: one fresh requester nkey plus the exact terminal operation. The opId is stable
31
+ * across retries but is never bearer authority; the target is what the returned grant confines. */
32
+ retirement?: {
33
+ id: string;
34
+ target: {
35
+ owner: string;
36
+ actor: string;
37
+ lifecycleUid: string;
38
+ };
39
+ opId: string;
40
+ serveEpoch: number;
41
+ };
30
42
  /** Activate only: the manager's canonical contract artifacts, already content-addressed by the
31
43
  * client. The host publishes exactly these after re-hashing and derives the registered surface;
32
44
  * arbitrary extra contracts are refused by closed artifact count/digest checks. */
@@ -75,6 +87,7 @@ export interface RemoteManagerAuthorityMaterial {
75
87
  lifecycleUid: string;
76
88
  requestId: string;
77
89
  registrationProof?: string;
90
+ retirement?: RemoteManagerAuthorityRequest["retirement"];
78
91
  issuedAt: number;
79
92
  expiresAt: number;
80
93
  actors: RemoteManagerActors;
@@ -90,7 +103,119 @@ export interface RemoteManagerAuthorityMaterial {
90
103
  goalWriter: RemoteManagerCredential;
91
104
  sessionLedger: RemoteManagerCredential;
92
105
  sessionServing: RemoteManagerCredential;
106
+ retirementRequester: RemoteManagerCredential;
93
107
  }>;
94
108
  }
109
+ /**
110
+ * Closed request for a remote manager to revalidate one retained managed agent on its host.
111
+ *
112
+ * The actor token and sentinel credential are existing per-agent material, not new authority. They
113
+ * cross only the authenticated manager-authority HTTPS exchange and are consumed by the host's
114
+ * current provider state. The host returns no credential or secret, only the current non-secret
115
+ * ledger authority shape.
116
+ */
117
+ export interface RemoteRetainedAgentValidationRequest {
118
+ v: 1;
119
+ kind: "manager-retained-agent-validation";
120
+ space: string;
121
+ /** The interactive actor whose fresh `supervise` grant authorizes this manager lifecycle. */
122
+ actor: string;
123
+ instanceId: string;
124
+ managerLifecycleUid: string;
125
+ requestId: string;
126
+ registrationProof: string;
127
+ serveEpoch: number;
128
+ identities: RemoteManagerAuthorityRequest["identities"];
129
+ target: {
130
+ owner: string;
131
+ actor: string;
132
+ lifecycleUid: string;
133
+ };
134
+ actorToken: string;
135
+ sentinelCreds: string;
136
+ }
137
+ /** Exact non-secret answer to one retained-agent validation request. */
138
+ export interface RemoteRetainedAgentValidationResult {
139
+ v: 1;
140
+ kind: "manager-retained-agent-validation";
141
+ space: string;
142
+ owner: string;
143
+ actor: string;
144
+ instanceId: string;
145
+ managerLifecycleUid: string;
146
+ requestId: string;
147
+ registrationProof: string;
148
+ serveEpoch: number;
149
+ target: RemoteRetainedAgentValidationRequest["target"];
150
+ authority: import("./auth-provider.js").RetainedAgentAuthority;
151
+ }
152
+ /** Closed host-owned boot scan. The participant supplies no filter and receives parsed manager
153
+ * goal-index rows for its authenticated owner only, never a records credential or raw KV body. */
154
+ export interface RemoteManagerGoalIndexScanRequest {
155
+ v: 1;
156
+ kind: "manager-goal-index-scan";
157
+ space: string;
158
+ actor: string;
159
+ instanceId: string;
160
+ managerLifecycleUid: string;
161
+ requestId: string;
162
+ registrationProof: string;
163
+ serveEpoch: number;
164
+ identities: RemoteManagerAuthorityRequest["identities"];
165
+ }
166
+ export interface RemoteManagerGoalIndexScanResult {
167
+ v: 1;
168
+ kind: "manager-goal-index-scan";
169
+ space: string;
170
+ owner: string;
171
+ actor: string;
172
+ instanceId: string;
173
+ managerLifecycleUid: string;
174
+ requestId: string;
175
+ registrationProof: string;
176
+ serveEpoch: number;
177
+ entries: import("./endpoint-action.js").GoalIndexEntry[];
178
+ }
179
+ /** Closed, non-transferable serve-time admin decision for one exact endpoint caller. */
180
+ export interface RemoteManagerAdminAuthorizationRequest {
181
+ v: 1;
182
+ kind: "manager-admin-authorization";
183
+ space: string;
184
+ /** Interactive actor whose current `supervise` grant authorizes this manager lifecycle. */
185
+ actor: string;
186
+ instanceId: string;
187
+ managerLifecycleUid: string;
188
+ requestId: string;
189
+ registrationProof: string;
190
+ serveEpoch: number;
191
+ identities: RemoteManagerAuthorityRequest["identities"];
192
+ /** Registered manager relay of the broker-authenticated endpoint caller tuple. */
193
+ caller: {
194
+ owner: string;
195
+ actor: string;
196
+ lifecycleUid: string;
197
+ };
198
+ }
199
+ /** Exact echo plus one host-derived boolean. No scope or ledger row crosses the seam. */
200
+ export interface RemoteManagerAdminAuthorizationResult {
201
+ v: 1;
202
+ kind: "manager-admin-authorization";
203
+ space: string;
204
+ owner: string;
205
+ actor: string;
206
+ instanceId: string;
207
+ managerLifecycleUid: string;
208
+ requestId: string;
209
+ registrationProof: string;
210
+ serveEpoch: number;
211
+ identities: RemoteManagerAuthorityRequest["identities"];
212
+ caller: RemoteManagerAdminAuthorizationRequest["caller"];
213
+ authorized: boolean;
214
+ }
95
215
  export declare function remoteManagerActors(instanceId: string): RemoteManagerActors;
216
+ /** Deterministic proof binding one remote Manager lifecycle to its owner, identities, and artifacts. */
217
+ export declare function remoteManagerRegistrationProof(owner: string, request: RemoteManagerAuthorityRequest): string;
218
+ /** The one terminal operation identity for a managed lifecycle. It is derived, never selected:
219
+ * manager retries, hosted authority issuance, and the auth barrier therefore converge on one op. */
220
+ export declare function managedRetirementOpId(lifecycleUid: string): string;
96
221
  //# sourceMappingURL=remote-manager-authority.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-manager-authority.d.ts","sourceRoot":"","sources":["../src/remote-manager-authority.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,6BAA6B;IAC5C,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,2BAA2B,CAAC;IAClC,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB;yEACqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+FAA+F;IAC/F,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1F;;uFAEmF;IACnF,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC;IAC9B,UAAU,EAAE;QACV,UAAU,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3B,QAAQ,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACzB,KAAK,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QACtB,UAAU,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3B,aAAa,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/B,CAAC;CACH;AAED;8FAC8F;AAC9F,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,sGAAsG;AACtG,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,2EAA2E;AAC3E,MAAM,WAAW,8BAA8B;IAC7C,CAAC,EAAE,CAAC,CAAC;IACL,IAAI,EAAE,2BAA2B,CAAC;IAClC,SAAS,EAAE,6BAA6B,CAAC,WAAW,CAAC,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,6BAA6B,CAAC,YAAY,CAAC,CAAC;IACxD;iGAC6F;IAC7F,4FAA4F;IAC5F,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,uBAAuB,CAAC;QACpC,QAAQ,EAAE,uBAAuB,CAAC;QAClC,KAAK,EAAE,uBAAuB,CAAC;QAC/B,UAAU,EAAE,uBAAuB,CAAC;QACpC,aAAa,EAAE,uBAAuB,CAAC;QACvC,cAAc,EAAE,uBAAuB,CAAC;KACzC,CAAC,CAAC;CACJ;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAQ3E"}
1
+ {"version":3,"file":"remote-manager-authority.d.ts","sourceRoot":"","sources":["../src/remote-manager-authority.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { rawDigest } from "./canonical.js";
2
+ import { assertLifecycleToken } from "./subjects.js";
1
3
  export function remoteManagerActors(instanceId) {
2
4
  return {
3
5
  supervisor: `manager_${instanceId}`,
@@ -7,4 +9,23 @@ export function remoteManagerActors(instanceId) {
7
9
  sessionLedger: `manager_session_${instanceId}`,
8
10
  };
9
11
  }
12
+ /** Deterministic proof binding one remote Manager lifecycle to its owner, identities, and artifacts. */
13
+ export function remoteManagerRegistrationProof(owner, request) {
14
+ const artifactDigests = request.operation === "session" ? [] : (request.contractArtifacts ?? []).map((value) => rawDigest(JSON.stringify(value)));
15
+ return rawDigest(JSON.stringify({
16
+ v: 1,
17
+ space: request.space,
18
+ owner,
19
+ instanceId: request.instanceId,
20
+ lifecycleUid: request.managerLifecycleUid,
21
+ actors: remoteManagerActors(request.instanceId),
22
+ identities: request.identities,
23
+ artifactDigests,
24
+ }));
25
+ }
26
+ /** The one terminal operation identity for a managed lifecycle. It is derived, never selected:
27
+ * manager retries, hosted authority issuance, and the auth barrier therefore converge on one op. */
28
+ export function managedRetirementOpId(lifecycleUid) {
29
+ return rawDigest(`retire:${assertLifecycleToken(lifecycleUid)}`).slice("sha256:".length, "sha256:".length + 26);
30
+ }
10
31
  //# sourceMappingURL=remote-manager-authority.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-manager-authority.js","sourceRoot":"","sources":["../src/remote-manager-authority.ts"],"names":[],"mappings":"AAkFA,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO;QACL,UAAU,EAAE,WAAW,UAAU,EAAE;QACnC,QAAQ,EAAE,gBAAgB,UAAU,EAAE;QACtC,KAAK,EAAE,iBAAiB,UAAU,EAAE;QACpC,UAAU,EAAE,gBAAgB,UAAU,EAAE;QACxC,aAAa,EAAE,mBAAmB,UAAU,EAAE;KAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"remote-manager-authority.js","sourceRoot":"","sources":["../src/remote-manager-authority.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAsMrD,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO;QACL,UAAU,EAAE,WAAW,UAAU,EAAE;QACnC,QAAQ,EAAE,gBAAgB,UAAU,EAAE;QACtC,KAAK,EAAE,iBAAiB,UAAU,EAAE;QACpC,UAAU,EAAE,gBAAgB,UAAU,EAAE;QACxC,aAAa,EAAE,mBAAmB,UAAU,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,8BAA8B,CAAC,KAAa,EAAE,OAAsC;IAClG,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAClJ,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B,CAAC,EAAE,CAAC;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,mBAAmB;QACzC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC;QAC/C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,eAAe;KAChB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;oGACoG;AACpG,MAAM,UAAU,qBAAqB,CAAC,YAAoB;IACxD,OAAO,SAAS,CAAC,UAAU,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAClH,CAAC"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Run admission (SPEC 14.8): the immutable, manager-owned record of WHAT AUTHORITY a hosted
3
+ * workflow run was admitted under, beside the independent marker that revokes it.
4
+ *
5
+ * A hosted run acts on channels through the trusted mediator, whose credential is host-wide. The
6
+ * admission record is what confines that: it snapshots, at `run-start`, the caller's ISSUED
7
+ * ceiling (SPEC 13.15) as the run's channel ceiling, and every channel effect the host performs
8
+ * afterwards is checked against it. The record is created once, create-only, by a one-shot
9
+ * `run-admitter` credential the manager mints per run; the driver holds no grant on this store;
10
+ * the mediator reads it leader-served before each effect.
11
+ *
12
+ * Revocation is a SEPARATE create-only marker under its own key, so absence of revocation is a
13
+ * readable "no marker" on a store the reader can reach, never a missing record on a store it
14
+ * cannot. A failed read on either key is a refusal, not an absence.
15
+ *
16
+ * The store is its own bucket (`cotal_admission_<space>`, `allow_direct=false`): the driver-writable
17
+ * run/program/journal records and the registration-policy records are the wrong place for a
18
+ * record whose whole point is that the driver cannot influence it.
19
+ */
20
+ import type { JetStreamManager } from "@nats-io/jetstream";
21
+ import type { KV, Kvm } from "@nats-io/kv";
22
+ import { EpEnvelopeError } from "./endpoint-envelope.js";
23
+ import { type EpCaller } from "./endpoint-subjects.js";
24
+ import { type IssuedAuthorityRef, type IssuedSubjectPermissions } from "./issued-authority.js";
25
+ export declare function admissionBucket(space: string): string;
26
+ export declare function admissionKey(endpoint: string, runId: string): string;
27
+ export declare function revocationKey(endpoint: string, runId: string): string;
28
+ /** Where a run's authority came from. `issued` is the only shape a served `run-start` admits;
29
+ * `operator` is a local drive or an explicit migration, admitted from trusted operator evidence
30
+ * the operator names, never inferred from program text. */
31
+ export type RunAdmissionProvenance = {
32
+ readonly kind: "issued";
33
+ readonly ref: IssuedAuthorityRef;
34
+ readonly resolvedRevision: number;
35
+ } | {
36
+ readonly kind: "operator";
37
+ readonly by: string;
38
+ readonly reason: string;
39
+ };
40
+ export interface RunAdmission {
41
+ readonly version: 1;
42
+ readonly space: string;
43
+ readonly endpoint: string;
44
+ readonly runId: string;
45
+ /** The admitting manager instance. */
46
+ readonly instanceId: string;
47
+ /** The caller the run was admitted for: the issued triple, or the operator's principal. */
48
+ readonly caller: EpCaller;
49
+ /** The channel ceiling the run's effects are checked against: the caller's issued publish and
50
+ * subscribe ceilings, verbatim. Explicit `none` is deny-all. */
51
+ readonly ceiling: IssuedSubjectPermissions;
52
+ readonly provenance: RunAdmissionProvenance;
53
+ readonly admittedAt: number;
54
+ }
55
+ export interface RunRevocation {
56
+ readonly version: 1;
57
+ readonly runId: string;
58
+ readonly reason: string;
59
+ readonly by: string;
60
+ readonly revokedAt: number;
61
+ }
62
+ /** Validate a record at the consuming boundary: closed schema, version, coordinates. */
63
+ export declare function admissionSnapshot(value: unknown): RunAdmission;
64
+ export declare function revocationSnapshot(value: unknown, runId: string): RunRevocation;
65
+ /** Create the admission, create-only. A second create for the same run is a conflict: a run is
66
+ * admitted once, and a re-admission is a new run (a fork) or an explicit migration. */
67
+ export declare function createRunAdmission(kv: KV, admission: RunAdmission): Promise<number>;
68
+ /** Create the revocation marker, create-only and idempotent on an existing marker. */
69
+ export declare function revokeRunAdmission(kv: KV, endpoint: string, revocation: RunRevocation): Promise<void>;
70
+ export interface RunAdmissionView {
71
+ readonly admission: RunAdmission;
72
+ readonly revoked: RunRevocation | undefined;
73
+ }
74
+ /** The admission a host acts on: the record must exist, match its coordinates, and carry no
75
+ * revocation marker. Missing, unreadable, malformed, mismatched, or revoked all refuse. */
76
+ export declare function readRunAdmission(jsm: JetStreamManager, space: string, endpoint: string, runId: string): Promise<RunAdmissionView>;
77
+ /** The channel checks a host applies, over the admitted ceiling. Concrete channels only: a
78
+ * wildcard is not a channel a run can post to or await, and a generated name is checked after
79
+ * it is derived, by the same rule. */
80
+ export declare class RunAdmissionDenied extends EpEnvelopeError {
81
+ constructor(runId: string, what: string, channel: string);
82
+ }
83
+ export declare function assertAdmittedPublish(view: RunAdmissionView, channel: string, caller: EpCaller): void;
84
+ export declare function assertAdmittedSubscribe(view: RunAdmissionView, channel: string): void;
85
+ export declare function assertNotRevoked(view: RunAdmissionView): void;
86
+ /** Create-or-verify the admission store: `allow_direct=false`, file, no eviction. */
87
+ export declare function ensureAdmissionStore(jsm: JetStreamManager, kvm: Kvm, space: string): Promise<void>;
88
+ //# sourceMappingURL=run-admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-admission.d.ts","sourceRoot":"","sources":["../src/run-admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAgC,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAOL,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAG/B,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;4DAE4D;AAC5D,MAAM,MAAM,sBAAsB,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B;qEACiE;IACjE,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAoCD,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAoB9D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAM/E;AAsBD;wFACwF;AACxF,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAQzF;AAED,sFAAsF;AACtF,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3G;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;CAC7C;AAED;4FAC4F;AAC5F,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAevI;AAED;;uCAEuC;AACvC,qBAAa,kBAAmB,SAAQ,eAAe;gBACzC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIzD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,CAIrG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAG7D;AAED,qFAAqF;AACrF,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBxG"}
@@ -0,0 +1,193 @@
1
+ import { canonicalJson } from "./canonical.js";
2
+ import { EpEnvelopeError } from "./endpoint-envelope.js";
3
+ import { assertIdToken, endpointToken } from "./endpoint-subjects.js";
4
+ import { isCasLoss } from "./endpoint-records.js";
5
+ import { AUTHORITY_STORE_IMMUTABLE_FLAGS, WRITE_ONCE_PER_KEY, assertStoreShape, issuedPermitsPattern, issuedPermitsSubject, readIssuedSubjectPermissions, } from "./issued-authority.js";
6
+ import { chatSubject, token } from "./subjects.js";
7
+ export function admissionBucket(space) {
8
+ return `cotal_admission_${token(space)}`;
9
+ }
10
+ export function admissionKey(endpoint, runId) {
11
+ return `admission.v1.${endpointToken(endpoint)}.${assertIdToken(runId, "runId")}`;
12
+ }
13
+ export function revocationKey(endpoint, runId) {
14
+ return `revoked.v1.${endpointToken(endpoint)}.${assertIdToken(runId, "runId")}`;
15
+ }
16
+ function closed(value, keys, label) {
17
+ if (value === null || typeof value !== "object" || Array.isArray(value))
18
+ throw new Error(`${label} must be a plain record`);
19
+ for (const key of Object.keys(value))
20
+ if (!keys.includes(key))
21
+ throw new Error(`${label} carries an unsupported field ${key}`);
22
+ return value;
23
+ }
24
+ function callerSnapshot(value) {
25
+ const raw = closed(value, ["owner", "actor", "uid", "generation"], "admission caller");
26
+ if (typeof raw.owner !== "string" || typeof raw.actor !== "string" || typeof raw.uid !== "string"
27
+ || (raw.generation !== undefined && typeof raw.generation !== "string"))
28
+ throw new Error("admission caller is malformed");
29
+ return Object.freeze({ owner: raw.owner, actor: raw.actor, uid: raw.uid, ...(raw.generation !== undefined ? { generation: raw.generation } : {}) });
30
+ }
31
+ function provenanceSnapshot(value) {
32
+ const raw = closed(value, ["kind", "ref", "resolvedRevision", "by", "reason"], "admission provenance");
33
+ if (raw.kind === "issued") {
34
+ const ref = closed(raw.ref, ["space", "owner", "actor", "uid", "generation"], "admission issued ref");
35
+ if (!["space", "owner", "actor", "uid", "generation"].every((k) => typeof ref[k] === "string")
36
+ || typeof raw.resolvedRevision !== "number" || !Number.isSafeInteger(raw.resolvedRevision) || raw.resolvedRevision <= 0
37
+ || raw.by !== undefined || raw.reason !== undefined)
38
+ throw new Error("issued admission provenance is malformed");
39
+ const pinned = { space: ref.space, owner: ref.owner, actor: ref.actor, uid: ref.uid, generation: ref.generation };
40
+ return Object.freeze({ kind: "issued", ref: Object.freeze(pinned), resolvedRevision: raw.resolvedRevision });
41
+ }
42
+ if (raw.kind === "operator") {
43
+ if (typeof raw.by !== "string" || raw.by.length === 0 || typeof raw.reason !== "string" || raw.reason.length === 0
44
+ || raw.ref !== undefined || raw.resolvedRevision !== undefined)
45
+ throw new Error("operator admission provenance is malformed");
46
+ return Object.freeze({ kind: "operator", by: raw.by, reason: raw.reason });
47
+ }
48
+ throw new Error("unsupported admission provenance");
49
+ }
50
+ /** Validate a record at the consuming boundary: closed schema, version, coordinates. */
51
+ export function admissionSnapshot(value) {
52
+ const raw = closed(value, ["version", "space", "endpoint", "runId", "instanceId", "caller", "ceiling", "provenance", "admittedAt"], "run admission");
53
+ if (raw.version !== 1)
54
+ throw new Error(`unsupported run admission version ${String(raw.version)}`);
55
+ if (typeof raw.space !== "string" || typeof raw.endpoint !== "string" || typeof raw.runId !== "string" || typeof raw.instanceId !== "string"
56
+ || typeof raw.admittedAt !== "number" || !Number.isSafeInteger(raw.admittedAt) || raw.admittedAt <= 0)
57
+ throw new Error("run admission is malformed");
58
+ endpointToken(raw.space);
59
+ endpointToken(raw.endpoint);
60
+ assertIdToken(raw.runId, "runId");
61
+ const caller = callerSnapshot(raw.caller);
62
+ const provenance = provenanceSnapshot(raw.provenance);
63
+ if (provenance.kind === "issued") {
64
+ const r = provenance.ref;
65
+ if (r.space !== raw.space || r.owner !== caller.owner || r.actor !== caller.actor || r.uid !== caller.uid || caller.generation !== r.generation)
66
+ throw new Error("run admission's issued reference disagrees with its caller");
67
+ }
68
+ return Object.freeze({
69
+ version: 1, space: raw.space, endpoint: raw.endpoint, runId: raw.runId, instanceId: raw.instanceId,
70
+ caller, ceiling: readIssuedSubjectPermissions(raw.ceiling), provenance, admittedAt: raw.admittedAt,
71
+ });
72
+ }
73
+ export function revocationSnapshot(value, runId) {
74
+ const raw = closed(value, ["version", "runId", "reason", "by", "revokedAt"], "run revocation");
75
+ if (raw.version !== 1 || raw.runId !== runId || typeof raw.reason !== "string" || typeof raw.by !== "string"
76
+ || typeof raw.revokedAt !== "number" || !Number.isSafeInteger(raw.revokedAt) || raw.revokedAt <= 0)
77
+ throw new Error("run revocation is malformed");
78
+ return Object.freeze({ version: 1, runId, reason: raw.reason, by: raw.by, revokedAt: raw.revokedAt });
79
+ }
80
+ const enc = new TextEncoder();
81
+ const dec = new TextDecoder("utf-8", { fatal: true });
82
+ /** Leader-served point read of one admission-store key. Absence is `undefined`; a deletion
83
+ * marker or an unreadable value is a refusal. */
84
+ async function readLeader(jsm, space, key) {
85
+ const bucket = admissionBucket(space);
86
+ let m;
87
+ try {
88
+ m = await jsm.streams.getMessage(`KV_${bucket}`, { last_by_subj: `$KV.${bucket}.${key}` });
89
+ }
90
+ catch (e) {
91
+ if (e.code === 10037)
92
+ return undefined;
93
+ throw e;
94
+ }
95
+ if (!m)
96
+ return undefined;
97
+ if (m.header?.get("KV-Operation"))
98
+ throw new EpEnvelopeError("failed-precondition", `admission row ${key} carries a deletion marker; a deletion is never absence (SPEC 14.8)`);
99
+ return { value: JSON.parse(dec.decode(m.data)), revision: m.seq };
100
+ }
101
+ /** Create the admission, create-only. A second create for the same run is a conflict: a run is
102
+ * admitted once, and a re-admission is a new run (a fork) or an explicit migration. */
103
+ export async function createRunAdmission(kv, admission) {
104
+ const snap = admissionSnapshot(admission);
105
+ try {
106
+ return await kv.create(admissionKey(snap.endpoint, snap.runId), enc.encode(canonicalJson(snap)));
107
+ }
108
+ catch (e) {
109
+ if (isCasLoss(e))
110
+ throw new EpEnvelopeError("conflict", `run ${snap.runId} is already admitted; an admission is written once (SPEC 14.8)`);
111
+ throw e;
112
+ }
113
+ }
114
+ /** Create the revocation marker, create-only and idempotent on an existing marker. */
115
+ export async function revokeRunAdmission(kv, endpoint, revocation) {
116
+ const snap = revocationSnapshot(revocation, revocation.runId);
117
+ try {
118
+ await kv.create(revocationKey(endpoint, snap.runId), enc.encode(canonicalJson(snap)));
119
+ }
120
+ catch (e) {
121
+ if (!isCasLoss(e))
122
+ throw e;
123
+ }
124
+ }
125
+ /** The admission a host acts on: the record must exist, match its coordinates, and carry no
126
+ * revocation marker. Missing, unreadable, malformed, mismatched, or revoked all refuse. */
127
+ export async function readRunAdmission(jsm, space, endpoint, runId) {
128
+ const entry = await readLeader(jsm, space, admissionKey(endpoint, runId));
129
+ if (entry === undefined)
130
+ throw new EpEnvelopeError("permission-denied", `run ${runId} has no admission record on endpoint ${endpoint}; a run with no admission runs no channel effect (SPEC 14.8)`);
131
+ let admission;
132
+ try {
133
+ admission = admissionSnapshot(entry.value);
134
+ }
135
+ catch (e) {
136
+ throw new EpEnvelopeError("permission-denied", `run ${runId}'s admission record is unreadable (${e.message}); garbled trusted state never authorizes (SPEC 14.8)`);
137
+ }
138
+ if (admission.space !== space || admission.endpoint !== endpoint || admission.runId !== runId)
139
+ throw new EpEnvelopeError("permission-denied", `run ${runId}'s admission record names other coordinates (${admission.space}/${admission.endpoint}/${admission.runId}); refused (SPEC 14.8)`);
140
+ const marker = await readLeader(jsm, space, revocationKey(endpoint, runId));
141
+ const revoked = marker === undefined ? undefined : revocationSnapshot(marker.value, runId);
142
+ return Object.freeze({ admission, revoked });
143
+ }
144
+ /** The channel checks a host applies, over the admitted ceiling. Concrete channels only: a
145
+ * wildcard is not a channel a run can post to or await, and a generated name is checked after
146
+ * it is derived, by the same rule. */
147
+ export class RunAdmissionDenied extends EpEnvelopeError {
148
+ constructor(runId, what, channel) {
149
+ super("permission-denied", `run ${runId} is not admitted to ${what} channel "${channel}" (SPEC 14.8)`);
150
+ this.name = "RunAdmissionDenied";
151
+ }
152
+ }
153
+ export function assertAdmittedPublish(view, channel, caller) {
154
+ assertNotRevoked(view);
155
+ const subject = chatSubject(view.admission.space, caller.owner, caller.actor, channel);
156
+ if (!issuedPermitsSubject(view.admission.ceiling.publish, subject))
157
+ throw new RunAdmissionDenied(view.admission.runId, "publish to", channel);
158
+ }
159
+ export function assertAdmittedSubscribe(view, channel) {
160
+ assertNotRevoked(view);
161
+ const pattern = chatSubject(view.admission.space, "*", "*", channel);
162
+ if (!issuedPermitsPattern(view.admission.ceiling.subscribe, pattern))
163
+ throw new RunAdmissionDenied(view.admission.runId, "read", channel);
164
+ }
165
+ export function assertNotRevoked(view) {
166
+ if (view.revoked !== undefined)
167
+ throw new EpEnvelopeError("permission-denied", `run ${view.admission.runId} was revoked by ${view.revoked.by} (${view.revoked.reason}); no further channel effect runs (SPEC 14.8)`);
168
+ }
169
+ /** Create-or-verify the admission store: `allow_direct=false`, file, no eviction. */
170
+ export async function ensureAdmissionStore(jsm, kvm, space) {
171
+ const bucket = admissionBucket(space);
172
+ const stream = `KV_${bucket}`;
173
+ // WRITE-ONCE PER KEY, AT THE BROKER. Both rows are create-only and the marker is permanent
174
+ // (SPEC 14.8), and the create-only CAS enforces neither on its own: the `run-admitter` holds a
175
+ // `$KV.<bucket>.<key>` publish row, and that row carries a plain replacement of the value, a
176
+ // `Nats-Rollup` header (which replaces the row, or with `all` empties the bucket), a deletion
177
+ // marker, and a per-key purge. None of them is a CAS write, so none loses the CAS, and a
178
+ // replacement leaves no marker for the deletion-marker read to catch. The three immutability
179
+ // flags close rollup, message delete and purge; write-once closes the rest, so the admission a
180
+ // host reads is the one that was admitted, and each run and each marker still gets its one write.
181
+ const shape = { ...AUTHORITY_STORE_IMMUTABLE_FLAGS, ...WRITE_ONCE_PER_KEY };
182
+ if (await jsm.streams.info(stream).catch(() => undefined) === undefined) {
183
+ await kvm.create(bucket, { allow_direct: false });
184
+ const created = (await jsm.streams.info(stream)).config;
185
+ await jsm.streams.update(stream, { ...created, ...shape });
186
+ }
187
+ const cfg = (await jsm.streams.info(stream)).config;
188
+ if (cfg.allow_direct !== false || cfg.storage !== "file" || (cfg.max_age ?? 0) !== 0 || (cfg.max_msgs ?? -1) > 0 || (cfg.max_bytes ?? -1) > 0
189
+ || !Array.isArray(cfg.subjects) || cfg.subjects.length !== 1 || cfg.subjects[0] !== `$KV.${bucket}.>`)
190
+ throw new Error(`the run admission store ${bucket} has a drifted shape (allow_direct=${String(cfg.allow_direct)}); an authority store is never silently adopted - reprovision it (SPEC 14.8)`);
191
+ assertStoreShape(cfg, shape, bucket, "SPEC 14.8");
192
+ }
193
+ //# sourceMappingURL=run-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-admission.js","sourceRoot":"","sources":["../src/run-admission.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAiB,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,GAG7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,mBAAmB,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,KAAa;IAC1D,OAAO,gBAAgB,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,KAAa;IAC3D,OAAO,cAAc,aAAa,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;AAClF,CAAC;AAiCD,SAAS,MAAM,CAAC,KAAc,EAAE,IAAuB,EAAE,KAAa;IACpE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yBAAyB,CAAC,CAAC;IAC5H,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC/H,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACvF,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;WAC5F,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAa,CAAC;AAClK,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,sBAAsB,CAAC,CAAC;IACvG,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACtG,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;eACzF,OAAO,GAAG,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,gBAAgB,IAAI,CAAC;eACpH,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS;YACnD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAuB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAe,EAAE,KAAK,EAAE,GAAG,CAAC,KAAe,EAAE,KAAK,EAAE,GAAG,CAAC,KAAe,EAAE,GAAG,EAAE,GAAG,CAAC,GAAa,EAAE,UAAU,EAAE,GAAG,CAAC,UAAoB,EAAE,CAAC;QACxL,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/G,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5B,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;eAC7G,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,gBAAgB,KAAK,SAAS;YAC9D,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACtD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,CAAC;IACrJ,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnG,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ;WACvI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC;QACrG,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAK,MAAkC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAC1K,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU;QAClG,MAAM,EAAE,OAAO,EAAE,4BAA4B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU;KACnG,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAc,EAAE,KAAa;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC/F,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ;WACvG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AACxG,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAC9B,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAEtD;kDACkD;AAClD,KAAK,UAAU,UAAU,CAAC,GAAqB,EAAE,KAAa,EAAE,GAAW;IACzE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;IACN,IAAI,CAAC;QACH,CAAC,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAK,CAAwB,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QAC/D,MAAM,CAAC,CAAC;IACV,CAAC;IACD,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,cAAc,CAAC;QAC/B,MAAM,IAAI,eAAe,CAAC,qBAAqB,EAAE,iBAAiB,GAAG,qEAAqE,CAAC,CAAC;IAC9I,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;AACpE,CAAC;AAED;wFACwF;AACxF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAM,EAAE,SAAuB;IACtE,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,SAAS,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,KAAK,gEAAgE,CAAC,CAAC;QAC3I,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAM,EAAE,QAAgB,EAAE,UAAyB;IAC1F,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAOD;4FAC4F;AAC5F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAqB,EAAE,KAAa,EAAE,QAAgB,EAAE,KAAa;IAC1G,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC1E,IAAI,KAAK,KAAK,SAAS;QACrB,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,OAAO,KAAK,wCAAwC,QAAQ,8DAA8D,CAAC,CAAC;IAC7K,IAAI,SAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,OAAO,KAAK,sCAAuC,CAAW,CAAC,OAAO,uDAAuD,CAAC,CAAC;IAChL,CAAC;IACD,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,KAAK,KAAK;QAC3F,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,OAAO,KAAK,gDAAgD,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,wBAAwB,CAAC,CAAC;IAC/L,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3F,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;uCAEuC;AACvC,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACrD,YAAY,KAAa,EAAE,IAAY,EAAE,OAAe;QACtD,KAAK,CAAC,mBAAmB,EAAE,OAAO,KAAK,uBAAuB,IAAI,aAAa,OAAO,eAAe,CAAC,CAAC;QACvG,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAsB,EAAE,OAAe,EAAE,MAAgB;IAC7F,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAChJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAsB,EAAE,OAAe;IAC7E,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACrE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5I,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAsB;IACrD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAC5B,MAAM,IAAI,eAAe,CAAC,mBAAmB,EAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,mBAAmB,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,+CAA+C,CAAC,CAAC;AACzL,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAqB,EAAE,GAAQ,EAAE,KAAa;IACvF,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;IAC9B,2FAA2F;IAC3F,+FAA+F;IAC/F,6FAA6F;IAC7F,8FAA8F;IAC9F,yFAAyF;IACzF,6FAA6F;IAC7F,+FAA+F;IAC/F,kGAAkG;IAClG,MAAM,KAAK,GAAG,EAAE,GAAG,+BAA+B,EAAE,GAAG,kBAAkB,EAAE,CAAC;IAC5E,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QACxE,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACxD,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;WACxI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,OAAO,MAAM,IAAI;QACrG,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,sCAAsC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,8EAA8E,CAAC,CAAC;IACjM,gBAAgB,CAAC,GAAyC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1F,CAAC"}
@@ -18,11 +18,21 @@ export interface RunDriverGrantArgs {
18
18
  /** The driving instance's id and epoch: the coordinates its timer schedules are addressed by. */
19
19
  instanceId: string;
20
20
  epoch: number;
21
+ /** EXPLICIT PLACEMENT TARGET (#1616): the manager endpoint-instance the program named for a
22
+ * `cwd` spawn. The descriptor is the one the existing instance-dispatch API already accepts —
23
+ * `{ endpoint, instanceId }`, routed as `EpRoute { mode: "inst", instanceId }`
24
+ * (endpoint-invoke.ts) — not a new field. Absent ⇒ legacy cwd-omitted behavior, unchanged. */
25
+ placement?: {
26
+ instanceId: string;
27
+ };
21
28
  }
22
29
  export declare function runDriverGrants(space: string, args: RunDriverGrantArgs, connId: string): {
23
30
  publish: string[];
24
31
  subscribe: string[];
25
32
  };
33
+ /** The ONLY operations explicit placement adds reach for (#1616). `describe` is listed because the
34
+ * baseline describe row is class-rail only, so a PINNED resolve is broker-refused without it. */
35
+ export declare const PLACEMENT_COMMANDS: readonly string[];
26
36
  /** Trusted, per-run host connection. The endpoint-wide checkpoint writes and body-selected
27
37
  * records/fact/timer/chat reads are its residual authority. The runtime confines those verbs
28
38
  * behind journal-checked operations; this profile must never be given to the run driver.
@@ -1 +1 @@
1
- {"version":3,"file":"run-driver-grants.d.ts","sourceRoot":"","sources":["../src/run-driver-grants.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2E,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAYhI;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAGvD;AAED,mHAAmH;AACnH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAiBnI;AAED;;;gGAGgG;AAChG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CA0DrI;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;0CAGsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IACnB;;;iFAG6E;IAC7E,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAkBvI"}
1
+ {"version":3,"file":"run-driver-grants.d.ts","sourceRoot":"","sources":["../src/run-driver-grants.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2E,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAahI;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAGvD;AAED,mHAAmH;AACnH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,UAAU,EAAE,MAAM,CAAC;IACnB,iGAAiG;IACjG,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd;;;mGAG+F;IAC/F,SAAS,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACpC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAiBnI;AAED;kGACkG;AAClG,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAAwD,CAAC;AAEzG;;;gGAGgG;AAChG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAwErI;AAED,6DAA6D;AAC7D,MAAM,WAAW,oBAAoB;IACnC,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;0CAGsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;IACnB;;;iFAG6E;IAC7E,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAqBvI"}
@@ -7,6 +7,7 @@ import { createHash } from "node:crypto";
7
7
  import { spacePrefix, chatStream, presenceBucket, channelBucket, membersBucket, assertInboxConnId, DEV_OWNER } from "./subjects.js";
8
8
  import { endpointToken, assertIdToken, assertLifecycleToken, epCallerReplyFilter } from "./endpoint-subjects.js";
9
9
  import { recordsBucket } from "./endpoint-records.js";
10
+ import { admissionBucket } from "./run-admission.js";
10
11
  import { runDriverJournalGrants, runJournalReplayGrants, recordsKvStreamName, epfStreamName, eptStreamName, epcStreamName, } from "./endpoint-binding.js";
11
12
  import { epRequestGrantRows, epDescribeAllGrantRow, BASELINE_LIFECYCLE_ENDPOINT } from "./endpoint-grants.js";
12
13
  /**
@@ -40,6 +41,9 @@ export function runDriverGrants(space, args, connId) {
40
41
  subscribe: [`_INBOX_${assertInboxConnId(connId)}.>`],
41
42
  };
42
43
  }
44
+ /** The ONLY operations explicit placement adds reach for (#1616). `describe` is listed because the
45
+ * baseline describe row is class-rail only, so a PINNED resolve is broker-refused without it. */
46
+ export const PLACEMENT_COMMANDS = Object.freeze(["describe", "resolve-cwd", "spawn"]);
43
47
  /** Trusted, per-run host connection. The endpoint-wide checkpoint writes and body-selected
44
48
  * records/fact/timer/chat reads are its residual authority. The runtime confines those verbs
45
49
  * behind journal-checked operations; this profile must never be given to the run driver.
@@ -98,8 +102,22 @@ export function runMediatorGrants(space, args, connId) {
98
102
  ...epRequestGrantRows(space, { endpoint: BASELINE_LIFECYCLE_ENDPOINT, command: "spawn" }, caller),
99
103
  ...epRequestGrantRows(space, { endpoint: BASELINE_LIFECYCLE_ENDPOINT, command: "turn", target: { mode: "owner", tOwner: caller.owner } }, caller),
100
104
  ...epRequestGrantRows(space, { endpoint: BASELINE_LIFECYCLE_ENDPOINT, command: "despawn", target: { mode: "owner", tOwner: caller.owner } }, caller),
105
+ // #1616 TARGET-BOUND PLACEMENT REACH. Minted ONLY when the program named an explicit target,
106
+ // and then only for that ONE validated instance and only these three operations. `routes: []`
107
+ // suppresses the class `one` row entirely, so this adds NO anycast fallback and no wildcard:
108
+ // `epRequestGrantRows` emits the single `ep.inst.<endpoint>.<iid>.<command>` row per command.
109
+ // Issuance stays inside the delegating caller's authority — the rows are stamped with the run's
110
+ // own caller block, so naming a target in a program grants nothing the caller could not do.
111
+ ...(args.placement === undefined
112
+ ? []
113
+ : PLACEMENT_COMMANDS.flatMap((command) => epRequestGrantRows(space, {
114
+ endpoint: BASELINE_LIFECYCLE_ENDPOINT, command, routes: [], instanceId: args.placement.instanceId,
115
+ }, caller))),
101
116
  // The contract store fetch a resolve performs (the subject-scoped form every agent holds).
102
117
  `$JS.API.DIRECT.GET.${epcStreamName(space)}.${p}.epc.>`,
118
+ // The run's admission and revocation rows (SPEC 14.8): a leader-served read before every
119
+ // channel effect. READ only; the admitter writes them.
120
+ `$JS.API.STREAM.MSG.GET.KV_${admissionBucket(space)}`,
103
121
  "$JS.API.INFO",
104
122
  ];
105
123
  return { publish, subscribe: [epCallerReplyFilter(space, caller), `_INBOX_${assertInboxConnId(connId)}.>`] };
@@ -128,6 +146,9 @@ export function runOperatorGrants(space, args, connId) {
128
146
  // The run and program records of the endpoint, read through the leader-served point read and
129
147
  // the consumer-free walk.
130
148
  `$JS.API.STREAM.MSG.GET.${recordsKvStreamName(space)}`,
149
+ // The run's admission and revocation rows (SPEC 14.8): a resume, takeback or served read
150
+ // decides on them before any drive. READ only; the admitter writes them.
151
+ `$JS.API.STREAM.MSG.GET.KV_${admissionBucket(space)}`,
131
152
  // The named run's journal replay, read-only, under this call's own takeover id.
132
153
  ...(args.runId === undefined ? [] : runJournalReplayGrants(space, args.runId, args.takeoverId)),
133
154
  // An ANSWER of one pause: its answer record (create-only), the checkpoint status a settle
@@ -1 +1 @@
1
- {"version":3,"file":"run-driver-grants.js","sourceRoot":"","sources":["../src/run-driver-grants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-driver-grants.js","sourceRoot":"","sources":["../src/run-driver-grants.ts"],"names":[],"mappings":"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"}