@adea-ai/runtime-sdk 1.5.2

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 (67) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +53 -0
  3. package/dist/adapter.d.ts +526 -0
  4. package/dist/adapter.d.ts.map +1 -0
  5. package/dist/adapter.js +278 -0
  6. package/dist/adapter.js.map +1 -0
  7. package/dist/capabilities.d.ts +132 -0
  8. package/dist/capabilities.d.ts.map +1 -0
  9. package/dist/capabilities.js +86 -0
  10. package/dist/capabilities.js.map +1 -0
  11. package/dist/compatibility.d.ts +182 -0
  12. package/dist/compatibility.d.ts.map +1 -0
  13. package/dist/compatibility.js +243 -0
  14. package/dist/compatibility.js.map +1 -0
  15. package/dist/conformance.d.ts +14 -0
  16. package/dist/conformance.d.ts.map +1 -0
  17. package/dist/conformance.js +73 -0
  18. package/dist/conformance.js.map +1 -0
  19. package/dist/discovery.d.ts +26 -0
  20. package/dist/discovery.d.ts.map +1 -0
  21. package/dist/discovery.js +253 -0
  22. package/dist/discovery.js.map +1 -0
  23. package/dist/eligibility.d.ts +334 -0
  24. package/dist/eligibility.d.ts.map +1 -0
  25. package/dist/eligibility.js +310 -0
  26. package/dist/eligibility.js.map +1 -0
  27. package/dist/fixtures.d.ts +90 -0
  28. package/dist/fixtures.d.ts.map +1 -0
  29. package/dist/fixtures.js +48 -0
  30. package/dist/fixtures.js.map +1 -0
  31. package/dist/health.d.ts +182 -0
  32. package/dist/health.d.ts.map +1 -0
  33. package/dist/health.js +441 -0
  34. package/dist/health.js.map +1 -0
  35. package/dist/index.d.ts +17 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +17 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/inventory.d.ts +21 -0
  40. package/dist/inventory.d.ts.map +1 -0
  41. package/dist/inventory.js +33 -0
  42. package/dist/inventory.js.map +1 -0
  43. package/dist/mock.d.ts +24 -0
  44. package/dist/mock.d.ts.map +1 -0
  45. package/dist/mock.js +261 -0
  46. package/dist/mock.js.map +1 -0
  47. package/dist/models.d.ts +285 -0
  48. package/dist/models.d.ts.map +1 -0
  49. package/dist/models.js +241 -0
  50. package/dist/models.js.map +1 -0
  51. package/dist/registry.d.ts +195 -0
  52. package/dist/registry.d.ts.map +1 -0
  53. package/dist/registry.js +298 -0
  54. package/dist/registry.js.map +1 -0
  55. package/dist/routing.d.ts +408 -0
  56. package/dist/routing.d.ts.map +1 -0
  57. package/dist/routing.js +314 -0
  58. package/dist/routing.js.map +1 -0
  59. package/dist/sessions.d.ts +251 -0
  60. package/dist/sessions.d.ts.map +1 -0
  61. package/dist/sessions.js +411 -0
  62. package/dist/sessions.js.map +1 -0
  63. package/dist/transport.d.ts +55 -0
  64. package/dist/transport.d.ts.map +1 -0
  65. package/dist/transport.js +73 -0
  66. package/dist/transport.js.map +1 -0
  67. package/package.json +53 -0
@@ -0,0 +1,314 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { IdentifierSchemas } from '@control-plane/contracts';
3
+ import { z } from 'zod';
4
+ import { RuntimeEligibilityDecisionSchema, RuntimeEligibilityReasonCodeSchema, } from './eligibility.js';
5
+ import { RuntimeTimestampSchema } from './models.js';
6
+ const DigestSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
7
+ const RuntimeFamilySchema = z
8
+ .string()
9
+ .min(1)
10
+ .max(64)
11
+ .regex(/^[a-z][a-z0-9-]*$/);
12
+ const WeightSchema = z.number().int().nonnegative().max(1_000_000);
13
+ export const RuntimeRoutingPolicySchema = z
14
+ .object({
15
+ policyId: z.string().min(1).max(128),
16
+ version: z.number().int().positive(),
17
+ digest: DigestSchema,
18
+ weights: z
19
+ .object({
20
+ explicitConnection: WeightSchema,
21
+ preferredFamily: WeightSchema,
22
+ preferredDeployment: WeightSchema,
23
+ locality: WeightSchema,
24
+ health: WeightSchema,
25
+ load: WeightSchema,
26
+ queue: WeightSchema,
27
+ entitlement: WeightSchema,
28
+ cost: WeightSchema,
29
+ })
30
+ .strict(),
31
+ })
32
+ .strict();
33
+ export const RuntimeRoutingCandidateSchema = z
34
+ .object({
35
+ runtimeConnectionId: IdentifierSchemas.runtimeConnectionId,
36
+ family: RuntimeFamilySchema,
37
+ deployment: z.enum(['managed', 'local']),
38
+ eligibility: RuntimeEligibilityDecisionSchema,
39
+ signals: z
40
+ .object({
41
+ locality: z.number().int().min(0).max(100),
42
+ health: z.number().int().min(0).max(100),
43
+ loadPermille: z.number().int().min(0).max(1_000),
44
+ queueDepth: z.number().int().nonnegative().max(1_000_000),
45
+ entitlementPriority: z.number().int().min(0).max(100),
46
+ costClass: z.enum(['low', 'medium', 'high', 'unknown']),
47
+ })
48
+ .strict(),
49
+ })
50
+ .strict()
51
+ .refine((candidate) => candidate.runtimeConnectionId === candidate.eligibility.audit.runtimeConnectionId, 'Candidate and eligibility runtime identities must agree');
52
+ export const RuntimeRoutingInputSchema = z
53
+ .object({
54
+ routingVersion: z.literal(1),
55
+ executionPlanId: IdentifierSchemas.executionPlanId,
56
+ evaluatedAt: RuntimeTimestampSchema,
57
+ policy: RuntimeRoutingPolicySchema,
58
+ preference: z
59
+ .object({
60
+ runtimeConnectionId: IdentifierSchemas.runtimeConnectionId.optional(),
61
+ family: RuntimeFamilySchema.optional(),
62
+ deployment: z.enum(['managed', 'local']).optional(),
63
+ })
64
+ .strict()
65
+ .refine((preference) => Object.values(preference).some((value) => value !== undefined))
66
+ .optional(),
67
+ candidates: z
68
+ .array(RuntimeRoutingCandidateSchema)
69
+ .max(1_000)
70
+ .refine((candidates) => new Set(candidates.map(({ runtimeConnectionId }) => runtimeConnectionId)).size ===
71
+ candidates.length, 'Routing candidate identities must be unique'),
72
+ })
73
+ .strict()
74
+ .refine((input) => input.candidates.every(({ eligibility }) => eligibility.audit.executionPlanId === input.executionPlanId), 'Routing candidates must share the requested ExecutionPlan');
75
+ export const RuntimeRoutingReasonCodeSchema = z.enum([
76
+ 'COST',
77
+ 'ENTITLEMENT',
78
+ 'EXPLICIT_CONNECTION',
79
+ 'HEALTH',
80
+ 'LOAD',
81
+ 'LOCALITY',
82
+ 'PREFERRED_DEPLOYMENT',
83
+ 'PREFERRED_FAMILY',
84
+ 'QUEUE',
85
+ ]);
86
+ const RuntimeRoutingReasonSchema = z
87
+ .object({
88
+ code: RuntimeRoutingReasonCodeSchema,
89
+ contribution: z.number().int().nonnegative(),
90
+ })
91
+ .strict();
92
+ const RankedRuntimeSchema = z
93
+ .object({
94
+ rank: z.number().int().positive(),
95
+ runtimeConnectionId: IdentifierSchemas.runtimeConnectionId,
96
+ score: z.number().int().nonnegative(),
97
+ eligibilityMode: z.enum(['full', 'degraded']),
98
+ reasons: z.array(RuntimeRoutingReasonSchema),
99
+ })
100
+ .strict();
101
+ const ExcludedRuntimeSchema = z
102
+ .object({
103
+ runtimeConnectionId: IdentifierSchemas.runtimeConnectionId,
104
+ eligibilityReasons: z.array(RuntimeEligibilityReasonCodeSchema),
105
+ })
106
+ .strict();
107
+ export const RuntimeRoutingDecisionSchema = z
108
+ .object({
109
+ outcome: z.enum([
110
+ 'selected',
111
+ 'preference_unavailable',
112
+ 'transient_unavailable',
113
+ 'no_candidate',
114
+ ]),
115
+ selected: RankedRuntimeSchema.optional(),
116
+ ranked: z.array(RankedRuntimeSchema),
117
+ excluded: z.array(ExcludedRuntimeSchema),
118
+ audit: z
119
+ .object({
120
+ routingVersion: z.literal(1),
121
+ executionPlanId: IdentifierSchemas.executionPlanId,
122
+ policy: z
123
+ .object({
124
+ policyId: z.string().min(1).max(128),
125
+ version: z.number().int().positive(),
126
+ digest: DigestSchema,
127
+ })
128
+ .strict(),
129
+ evaluatedAt: RuntimeTimestampSchema,
130
+ inputDigest: DigestSchema,
131
+ decisionDigest: DigestSchema,
132
+ })
133
+ .strict(),
134
+ })
135
+ .strict()
136
+ .superRefine((decision, context) => {
137
+ const hasSelection = decision.selected !== undefined;
138
+ if (hasSelection !== ['selected', 'preference_unavailable'].includes(decision.outcome)) {
139
+ context.addIssue({ code: 'custom', message: 'Routing outcome and selection must agree' });
140
+ }
141
+ if (hasSelection &&
142
+ decision.ranked[0]?.runtimeConnectionId !== decision.selected?.runtimeConnectionId) {
143
+ context.addIssue({ code: 'custom', message: 'Selected runtime must lead the ranking' });
144
+ }
145
+ });
146
+ export function routeRuntimeConnections(inputValue) {
147
+ const input = RuntimeRoutingInputSchema.parse(inputValue);
148
+ const eligible = input.candidates.filter(({ eligibility }) => eligibility.eligible);
149
+ const excluded = input.candidates
150
+ .filter(({ eligibility }) => !eligibility.eligible)
151
+ .map((candidate) => ({
152
+ runtimeConnectionId: candidate.runtimeConnectionId,
153
+ eligibilityReasons: candidate.eligibility.reasons.map(({ code }) => code).sort(),
154
+ }))
155
+ .sort((left, right) => left.runtimeConnectionId.localeCompare(right.runtimeConnectionId));
156
+ const ranked = eligible
157
+ .map((candidate) => scoreCandidate(input, candidate))
158
+ .sort((left, right) => right.score - left.score ||
159
+ left.runtimeConnectionId.localeCompare(right.runtimeConnectionId))
160
+ .map((candidate, index) => ({ ...candidate, rank: index + 1 }));
161
+ const preferenceUnavailable = input.preference !== undefined &&
162
+ ((input.preference.runtimeConnectionId !== undefined &&
163
+ !eligible.some(({ runtimeConnectionId }) => runtimeConnectionId === input.preference?.runtimeConnectionId)) ||
164
+ (input.preference.family !== undefined &&
165
+ !eligible.some(({ family }) => family === input.preference?.family)) ||
166
+ (input.preference.deployment !== undefined &&
167
+ !eligible.some(({ deployment }) => deployment === input.preference?.deployment)));
168
+ const selected = ranked[0];
169
+ const outcome = selected
170
+ ? preferenceUnavailable
171
+ ? 'preference_unavailable'
172
+ : 'selected'
173
+ : classifyEmptyOutcome(input, excluded);
174
+ const decisionWithoutDigest = {
175
+ outcome,
176
+ ...(selected === undefined ? {} : { selected }),
177
+ ranked,
178
+ excluded,
179
+ audit: {
180
+ routingVersion: input.routingVersion,
181
+ executionPlanId: input.executionPlanId,
182
+ policy: {
183
+ policyId: input.policy.policyId,
184
+ version: input.policy.version,
185
+ digest: input.policy.digest,
186
+ },
187
+ evaluatedAt: input.evaluatedAt,
188
+ inputDigest: digest(normalizeRoutingInput(input)),
189
+ },
190
+ };
191
+ return RuntimeRoutingDecisionSchema.parse({
192
+ ...decisionWithoutDigest,
193
+ audit: {
194
+ ...decisionWithoutDigest.audit,
195
+ decisionDigest: digest(decisionWithoutDigest),
196
+ },
197
+ });
198
+ }
199
+ export function toAttemptRoutingDecision(decisionValue) {
200
+ const decision = RuntimeRoutingDecisionSchema.parse(decisionValue);
201
+ if (!decision.selected)
202
+ throw new Error('ROUTING_SELECTION_REQUIRED');
203
+ const expectedDigest = digest({
204
+ outcome: decision.outcome,
205
+ selected: decision.selected,
206
+ ranked: decision.ranked,
207
+ excluded: decision.excluded,
208
+ audit: {
209
+ routingVersion: decision.audit.routingVersion,
210
+ executionPlanId: decision.audit.executionPlanId,
211
+ policy: decision.audit.policy,
212
+ evaluatedAt: decision.audit.evaluatedAt,
213
+ inputDigest: decision.audit.inputDigest,
214
+ },
215
+ });
216
+ if (expectedDigest !== decision.audit.decisionDigest) {
217
+ throw new Error('ROUTING_DECISION_DIGEST_MISMATCH');
218
+ }
219
+ return {
220
+ routingVersion: decision.audit.routingVersion,
221
+ policy: decision.audit.policy,
222
+ evaluatedAt: decision.audit.evaluatedAt,
223
+ inputDigest: decision.audit.inputDigest,
224
+ decisionDigest: decision.audit.decisionDigest,
225
+ selectedRank: decision.selected.rank,
226
+ candidateCount: decision.ranked.length,
227
+ reasonCodes: decision.selected.reasons.map(({ code }) => code).sort(),
228
+ };
229
+ }
230
+ function scoreCandidate(input, candidate) {
231
+ const { preference, policy } = input;
232
+ const costValue = { low: 3, medium: 2, high: 1, unknown: 0 }[candidate.signals.costClass];
233
+ const contributions = [
234
+ {
235
+ code: 'EXPLICIT_CONNECTION',
236
+ contribution: preference?.runtimeConnectionId === candidate.runtimeConnectionId
237
+ ? policy.weights.explicitConnection
238
+ : 0,
239
+ },
240
+ {
241
+ code: 'PREFERRED_FAMILY',
242
+ contribution: preference?.family === candidate.family ? policy.weights.preferredFamily : 0,
243
+ },
244
+ {
245
+ code: 'PREFERRED_DEPLOYMENT',
246
+ contribution: preference?.deployment === candidate.deployment ? policy.weights.preferredDeployment : 0,
247
+ },
248
+ {
249
+ code: 'LOCALITY',
250
+ contribution: candidate.signals.locality * policy.weights.locality,
251
+ },
252
+ { code: 'HEALTH', contribution: candidate.signals.health * policy.weights.health },
253
+ {
254
+ code: 'LOAD',
255
+ contribution: (1_000 - candidate.signals.loadPermille) * policy.weights.load,
256
+ },
257
+ {
258
+ code: 'QUEUE',
259
+ contribution: Math.max(0, 1_000 - Math.min(candidate.signals.queueDepth, 1_000)) * policy.weights.queue,
260
+ },
261
+ {
262
+ code: 'ENTITLEMENT',
263
+ contribution: candidate.signals.entitlementPriority * policy.weights.entitlement,
264
+ },
265
+ { code: 'COST', contribution: costValue * policy.weights.cost },
266
+ ].filter(({ contribution }) => contribution > 0);
267
+ return {
268
+ rank: 1,
269
+ runtimeConnectionId: candidate.runtimeConnectionId,
270
+ score: contributions.reduce((total, { contribution }) => total + contribution, 0),
271
+ eligibilityMode: candidate.eligibility.mode,
272
+ reasons: contributions,
273
+ };
274
+ }
275
+ const transientReasons = new Set([
276
+ 'CAPABILITY_SNAPSHOT_MISSING',
277
+ 'CAPABILITY_SNAPSHOT_STALE',
278
+ 'RUNTIME_EXPIRED',
279
+ 'RUNTIME_NODE_OFFLINE',
280
+ 'RUNTIME_NODE_UNKNOWN',
281
+ 'RUNTIME_OFFLINE',
282
+ 'RUNTIME_STALE',
283
+ 'RUNTIME_UNAVAILABLE',
284
+ ]);
285
+ function classifyEmptyOutcome(input, excluded) {
286
+ if (input.candidates.length === 0 || excluded.length === 0)
287
+ return 'no_candidate';
288
+ const reasons = excluded.flatMap(({ eligibilityReasons }) => eligibilityReasons);
289
+ return reasons.length > 0 && reasons.every((reason) => transientReasons.has(reason))
290
+ ? 'transient_unavailable'
291
+ : 'no_candidate';
292
+ }
293
+ function normalizeRoutingInput(input) {
294
+ return {
295
+ ...input,
296
+ candidates: [...input.candidates]
297
+ .map((candidate) => ({
298
+ ...candidate,
299
+ eligibility: {
300
+ ...candidate.eligibility,
301
+ reasons: [...candidate.eligibility.reasons].sort(compareCoded),
302
+ degradations: [...candidate.eligibility.degradations].sort(compareCoded),
303
+ },
304
+ }))
305
+ .sort((left, right) => left.runtimeConnectionId.localeCompare(right.runtimeConnectionId)),
306
+ };
307
+ }
308
+ function compareCoded(left, right) {
309
+ return `${left.code}:${left.capability ?? ''}`.localeCompare(`${right.code}:${right.capability ?? ''}`);
310
+ }
311
+ function digest(value) {
312
+ return `sha256:${createHash('sha256').update(JSON.stringify(value)).digest('hex')}`;
313
+ }
314
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,251 @@
1
+ import { z } from 'zod';
2
+ export declare const OpaqueNativeSessionIdSchema: z.ZodString;
3
+ export declare const ExternalSessionCapabilitySnapshotSchema: z.ZodObject<{
4
+ version: z.ZodNumber;
5
+ observedAt: z.ZodISODateTime;
6
+ expiresAt: z.ZodISODateTime;
7
+ operations: z.ZodArray<z.ZodEnum<{
8
+ "stream.output": "stream.output";
9
+ "stream.events": "stream.events";
10
+ "tool.call": "tool.call";
11
+ "tool.parallel": "tool.parallel";
12
+ "output.structured": "output.structured";
13
+ "filesystem.read": "filesystem.read";
14
+ "filesystem.write": "filesystem.write";
15
+ "project.read": "project.read";
16
+ "project.write": "project.write";
17
+ "execution.cancel": "execution.cancel";
18
+ "interaction.user-input": "interaction.user-input";
19
+ "interaction.approval": "interaction.approval";
20
+ "session.create": "session.create";
21
+ "session.list": "session.list";
22
+ "session.resume": "session.resume";
23
+ "session.close": "session.close";
24
+ "session.history": "session.history";
25
+ "session.load": "session.load";
26
+ "model.select": "model.select";
27
+ "execution.child": "execution.child";
28
+ }>>;
29
+ }, z.core.$strict>;
30
+ export declare const ExternalSessionSafeMetadataSchema: z.ZodObject<{
31
+ origin: z.ZodEnum<{
32
+ native_discovery: "native_discovery";
33
+ created_through_control_plane: "created_through_control_plane";
34
+ }>;
35
+ displayName: z.ZodOptional<z.ZodString>;
36
+ limitations: z.ZodArray<z.ZodString>;
37
+ }, z.core.$strict>;
38
+ export declare const ExternalSessionStateSchema: z.ZodEnum<{
39
+ active: "active";
40
+ closed: "closed";
41
+ revoked: "revoked";
42
+ removed: "removed";
43
+ }>;
44
+ export declare const ExternalSessionSchema: z.ZodObject<{
45
+ externalSessionId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"external-session ID">, string>>;
46
+ runtimeConnectionId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"runtime-connection ID">, string>>;
47
+ opaqueNativeSessionId: z.ZodString;
48
+ workspaceId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"workspace ID">, string>>;
49
+ projectId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"project ID">, string>>>;
50
+ state: z.ZodEnum<{
51
+ active: "active";
52
+ closed: "closed";
53
+ revoked: "revoked";
54
+ removed: "removed";
55
+ }>;
56
+ ownership: z.ZodObject<{
57
+ authority: z.ZodLiteral<"external_runtime">;
58
+ imported: z.ZodLiteral<false>;
59
+ concurrentNativeUse: z.ZodLiteral<"allowed">;
60
+ }, z.core.$strict>;
61
+ capabilitySnapshot: z.ZodObject<{
62
+ version: z.ZodNumber;
63
+ observedAt: z.ZodISODateTime;
64
+ expiresAt: z.ZodISODateTime;
65
+ operations: z.ZodArray<z.ZodEnum<{
66
+ "stream.output": "stream.output";
67
+ "stream.events": "stream.events";
68
+ "tool.call": "tool.call";
69
+ "tool.parallel": "tool.parallel";
70
+ "output.structured": "output.structured";
71
+ "filesystem.read": "filesystem.read";
72
+ "filesystem.write": "filesystem.write";
73
+ "project.read": "project.read";
74
+ "project.write": "project.write";
75
+ "execution.cancel": "execution.cancel";
76
+ "interaction.user-input": "interaction.user-input";
77
+ "interaction.approval": "interaction.approval";
78
+ "session.create": "session.create";
79
+ "session.list": "session.list";
80
+ "session.resume": "session.resume";
81
+ "session.close": "session.close";
82
+ "session.history": "session.history";
83
+ "session.load": "session.load";
84
+ "model.select": "model.select";
85
+ "execution.child": "execution.child";
86
+ }>>;
87
+ }, z.core.$strict>;
88
+ safeMetadata: z.ZodObject<{
89
+ origin: z.ZodEnum<{
90
+ native_discovery: "native_discovery";
91
+ created_through_control_plane: "created_through_control_plane";
92
+ }>;
93
+ displayName: z.ZodOptional<z.ZodString>;
94
+ limitations: z.ZodArray<z.ZodString>;
95
+ }, z.core.$strict>;
96
+ lastObservedAt: z.ZodISODateTime;
97
+ version: z.ZodNumber;
98
+ createdAt: z.ZodISODateTime;
99
+ updatedAt: z.ZodISODateTime;
100
+ }, z.core.$strict>;
101
+ declare const ExternalSessionListScopeSchema: z.ZodObject<{
102
+ workspaceId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"workspace ID">, string>>;
103
+ projectId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"project ID">, string>>>;
104
+ runtimeConnectionId: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"runtime-connection ID">, string>>>;
105
+ }, z.core.$strict>;
106
+ export type ExternalSession = z.output<typeof ExternalSessionSchema>;
107
+ export type ExternalSessionListScope = z.output<typeof ExternalSessionListScopeSchema>;
108
+ export interface ExternalSessionRepository {
109
+ insert(session: ExternalSession): Promise<boolean>;
110
+ get(externalSessionId: string): Promise<ExternalSession | undefined>;
111
+ findByNativeIdentity(runtimeConnectionId: string, opaqueNativeSessionId: string): Promise<ExternalSession | undefined>;
112
+ list(scope: ExternalSessionListScope): Promise<readonly ExternalSession[]>;
113
+ compareAndSet(expectedVersion: number, session: ExternalSession): Promise<boolean>;
114
+ }
115
+ export declare class InMemoryExternalSessionRepository implements ExternalSessionRepository {
116
+ #private;
117
+ insert(session: ExternalSession): Promise<boolean>;
118
+ get(externalSessionId: string): Promise<ExternalSession | undefined>;
119
+ findByNativeIdentity(runtimeConnectionId: string, opaqueNativeSessionId: string): Promise<ExternalSession | undefined>;
120
+ list(scope: ExternalSessionListScope): Promise<readonly ExternalSession[]>;
121
+ compareAndSet(expectedVersion: number, session: ExternalSession): Promise<boolean>;
122
+ }
123
+ export type ExternalSessionRegistryErrorCode = 'CAPABILITY_SNAPSHOT_CONFLICT' | 'CAPABILITY_SNAPSHOT_REGRESSION' | 'SESSION_IDENTITY_CONFLICT' | 'SESSION_MISSING' | 'SESSION_REVOKED' | 'STALE_SESSION_VERSION' | 'TIMESTAMP_REGRESSION';
124
+ export declare class ExternalSessionRegistryError extends Error {
125
+ readonly code: ExternalSessionRegistryErrorCode;
126
+ readonly currentVersion?: number | undefined;
127
+ constructor(code: ExternalSessionRegistryErrorCode, currentVersion?: number | undefined);
128
+ }
129
+ export declare class ExternalSessionRegistry {
130
+ readonly repository: ExternalSessionRepository;
131
+ constructor(repository: ExternalSessionRepository);
132
+ register(inputValue: unknown): Promise<ExternalSession>;
133
+ get(externalSessionIdValue: string): Promise<ExternalSession>;
134
+ list(scopeValue: unknown): Promise<readonly ExternalSession[]>;
135
+ update(inputValue: unknown): Promise<ExternalSession>;
136
+ }
137
+ export declare const ExternalSessionAssessmentStateSchema: z.ZodEnum<{
138
+ active: "active";
139
+ closed: "closed";
140
+ revoked: "revoked";
141
+ offline: "offline";
142
+ stale: "stale";
143
+ removed: "removed";
144
+ runtime_missing: "runtime_missing";
145
+ capability_changed: "capability_changed";
146
+ }>;
147
+ export declare const ExternalSessionOperationUnavailableReasonSchema: z.ZodEnum<{
148
+ RUNTIME_OFFLINE: "RUNTIME_OFFLINE";
149
+ SESSION_REVOKED: "SESSION_REVOKED";
150
+ CAPABILITY_NOT_ADVERTISED: "CAPABILITY_NOT_ADVERTISED";
151
+ CAPABILITY_NO_LONGER_ADVERTISED: "CAPABILITY_NO_LONGER_ADVERTISED";
152
+ RUNTIME_MISSING: "RUNTIME_MISSING";
153
+ SESSION_CAPABILITIES_STALE: "SESSION_CAPABILITIES_STALE";
154
+ SESSION_CLOSED: "SESSION_CLOSED";
155
+ SESSION_REMOVED: "SESSION_REMOVED";
156
+ }>;
157
+ export declare const ExternalSessionAssessmentSchema: z.ZodObject<{
158
+ state: z.ZodEnum<{
159
+ active: "active";
160
+ closed: "closed";
161
+ revoked: "revoked";
162
+ offline: "offline";
163
+ stale: "stale";
164
+ removed: "removed";
165
+ runtime_missing: "runtime_missing";
166
+ capability_changed: "capability_changed";
167
+ }>;
168
+ recoverable: z.ZodBoolean;
169
+ evaluatedAt: z.ZodOptional<z.ZodISODateTime>;
170
+ operations: z.ZodObject<{
171
+ reference: z.ZodUnion<readonly [z.ZodObject<{
172
+ available: z.ZodLiteral<true>;
173
+ }, z.core.$strict>, z.ZodObject<{
174
+ available: z.ZodLiteral<false>;
175
+ reason: z.ZodEnum<{
176
+ RUNTIME_OFFLINE: "RUNTIME_OFFLINE";
177
+ SESSION_REVOKED: "SESSION_REVOKED";
178
+ CAPABILITY_NOT_ADVERTISED: "CAPABILITY_NOT_ADVERTISED";
179
+ CAPABILITY_NO_LONGER_ADVERTISED: "CAPABILITY_NO_LONGER_ADVERTISED";
180
+ RUNTIME_MISSING: "RUNTIME_MISSING";
181
+ SESSION_CAPABILITIES_STALE: "SESSION_CAPABILITIES_STALE";
182
+ SESSION_CLOSED: "SESSION_CLOSED";
183
+ SESSION_REMOVED: "SESSION_REMOVED";
184
+ }>;
185
+ }, z.core.$strict>]>;
186
+ resume: z.ZodUnion<readonly [z.ZodObject<{
187
+ available: z.ZodLiteral<true>;
188
+ }, z.core.$strict>, z.ZodObject<{
189
+ available: z.ZodLiteral<false>;
190
+ reason: z.ZodEnum<{
191
+ RUNTIME_OFFLINE: "RUNTIME_OFFLINE";
192
+ SESSION_REVOKED: "SESSION_REVOKED";
193
+ CAPABILITY_NOT_ADVERTISED: "CAPABILITY_NOT_ADVERTISED";
194
+ CAPABILITY_NO_LONGER_ADVERTISED: "CAPABILITY_NO_LONGER_ADVERTISED";
195
+ RUNTIME_MISSING: "RUNTIME_MISSING";
196
+ SESSION_CAPABILITIES_STALE: "SESSION_CAPABILITIES_STALE";
197
+ SESSION_CLOSED: "SESSION_CLOSED";
198
+ SESSION_REMOVED: "SESSION_REMOVED";
199
+ }>;
200
+ }, z.core.$strict>]>;
201
+ load: z.ZodUnion<readonly [z.ZodObject<{
202
+ available: z.ZodLiteral<true>;
203
+ }, z.core.$strict>, z.ZodObject<{
204
+ available: z.ZodLiteral<false>;
205
+ reason: z.ZodEnum<{
206
+ RUNTIME_OFFLINE: "RUNTIME_OFFLINE";
207
+ SESSION_REVOKED: "SESSION_REVOKED";
208
+ CAPABILITY_NOT_ADVERTISED: "CAPABILITY_NOT_ADVERTISED";
209
+ CAPABILITY_NO_LONGER_ADVERTISED: "CAPABILITY_NO_LONGER_ADVERTISED";
210
+ RUNTIME_MISSING: "RUNTIME_MISSING";
211
+ SESSION_CAPABILITIES_STALE: "SESSION_CAPABILITIES_STALE";
212
+ SESSION_CLOSED: "SESSION_CLOSED";
213
+ SESSION_REMOVED: "SESSION_REMOVED";
214
+ }>;
215
+ }, z.core.$strict>]>;
216
+ close: z.ZodUnion<readonly [z.ZodObject<{
217
+ available: z.ZodLiteral<true>;
218
+ }, z.core.$strict>, z.ZodObject<{
219
+ available: z.ZodLiteral<false>;
220
+ reason: z.ZodEnum<{
221
+ RUNTIME_OFFLINE: "RUNTIME_OFFLINE";
222
+ SESSION_REVOKED: "SESSION_REVOKED";
223
+ CAPABILITY_NOT_ADVERTISED: "CAPABILITY_NOT_ADVERTISED";
224
+ CAPABILITY_NO_LONGER_ADVERTISED: "CAPABILITY_NO_LONGER_ADVERTISED";
225
+ RUNTIME_MISSING: "RUNTIME_MISSING";
226
+ SESSION_CAPABILITIES_STALE: "SESSION_CAPABILITIES_STALE";
227
+ SESSION_CLOSED: "SESSION_CLOSED";
228
+ SESSION_REMOVED: "SESSION_REMOVED";
229
+ }>;
230
+ }, z.core.$strict>]>;
231
+ history: z.ZodUnion<readonly [z.ZodObject<{
232
+ available: z.ZodLiteral<true>;
233
+ }, z.core.$strict>, z.ZodObject<{
234
+ available: z.ZodLiteral<false>;
235
+ reason: z.ZodEnum<{
236
+ RUNTIME_OFFLINE: "RUNTIME_OFFLINE";
237
+ SESSION_REVOKED: "SESSION_REVOKED";
238
+ CAPABILITY_NOT_ADVERTISED: "CAPABILITY_NOT_ADVERTISED";
239
+ CAPABILITY_NO_LONGER_ADVERTISED: "CAPABILITY_NO_LONGER_ADVERTISED";
240
+ RUNTIME_MISSING: "RUNTIME_MISSING";
241
+ SESSION_CAPABILITIES_STALE: "SESSION_CAPABILITIES_STALE";
242
+ SESSION_CLOSED: "SESSION_CLOSED";
243
+ SESSION_REMOVED: "SESSION_REMOVED";
244
+ }>;
245
+ }, z.core.$strict>]>;
246
+ }, z.core.$strict>;
247
+ }, z.core.$strict>;
248
+ export type ExternalSessionAssessment = z.output<typeof ExternalSessionAssessmentSchema>;
249
+ export declare function assessExternalSession(sessionValue: unknown, contextValue: unknown): ExternalSessionAssessment;
250
+ export {};
251
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}