@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.
- package/LICENSE +201 -0
- package/README.md +53 -0
- package/dist/adapter.d.ts +526 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +278 -0
- package/dist/adapter.js.map +1 -0
- package/dist/capabilities.d.ts +132 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +86 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/compatibility.d.ts +182 -0
- package/dist/compatibility.d.ts.map +1 -0
- package/dist/compatibility.js +243 -0
- package/dist/compatibility.js.map +1 -0
- package/dist/conformance.d.ts +14 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +73 -0
- package/dist/conformance.js.map +1 -0
- package/dist/discovery.d.ts +26 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +253 -0
- package/dist/discovery.js.map +1 -0
- package/dist/eligibility.d.ts +334 -0
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js +310 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/fixtures.d.ts +90 -0
- package/dist/fixtures.d.ts.map +1 -0
- package/dist/fixtures.js +48 -0
- package/dist/fixtures.js.map +1 -0
- package/dist/health.d.ts +182 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +441 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory.d.ts +21 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +33 -0
- package/dist/inventory.js.map +1 -0
- package/dist/mock.d.ts +24 -0
- package/dist/mock.d.ts.map +1 -0
- package/dist/mock.js +261 -0
- package/dist/mock.js.map +1 -0
- package/dist/models.d.ts +285 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +241 -0
- package/dist/models.js.map +1 -0
- package/dist/registry.d.ts +195 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +298 -0
- package/dist/registry.js.map +1 -0
- package/dist/routing.d.ts +408 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +314 -0
- package/dist/routing.js.map +1 -0
- package/dist/sessions.d.ts +251 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +411 -0
- package/dist/sessions.js.map +1 -0
- package/dist/transport.d.ts +55 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +73 -0
- package/dist/transport.js.map +1 -0
- package/package.json +53 -0
package/dist/sessions.js
ADDED
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
import { IdentifierSchemas } from '@control-plane/contracts';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { RuntimeCapabilityNameSchema } from './capabilities.js';
|
|
4
|
+
import { RuntimeEligibilityNodeStatusSchema } from './eligibility.js';
|
|
5
|
+
import { RuntimeConnectionSchema, RuntimeTimestampSchema, } from './models.js';
|
|
6
|
+
const SessionOperationCapabilitySchema = RuntimeCapabilityNameSchema.refine((name) => name.startsWith('session.'));
|
|
7
|
+
const NormalizedCodeSchema = z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.max(128)
|
|
11
|
+
.regex(/^[A-Z][A-Z0-9_]*$/);
|
|
12
|
+
const SafeDisplayNameSchema = z
|
|
13
|
+
.string()
|
|
14
|
+
.min(1)
|
|
15
|
+
.max(128)
|
|
16
|
+
.refine((value) => !value.includes('/') &&
|
|
17
|
+
!value.includes('\\') &&
|
|
18
|
+
!value.includes('://') &&
|
|
19
|
+
[...value].every((character) => {
|
|
20
|
+
const code = character.charCodeAt(0);
|
|
21
|
+
return code >= 32 && code !== 127;
|
|
22
|
+
}), 'Display names cannot contain paths, URLs, or control characters');
|
|
23
|
+
export const OpaqueNativeSessionIdSchema = z
|
|
24
|
+
.string()
|
|
25
|
+
.regex(/^nses_[0-9A-HJKMNP-TV-Z]{26}$/, 'Expected a canonical opaque native-session ID');
|
|
26
|
+
export const ExternalSessionCapabilitySnapshotSchema = z
|
|
27
|
+
.object({
|
|
28
|
+
version: z.number().int().positive(),
|
|
29
|
+
observedAt: RuntimeTimestampSchema,
|
|
30
|
+
expiresAt: RuntimeTimestampSchema,
|
|
31
|
+
operations: z
|
|
32
|
+
.array(SessionOperationCapabilitySchema)
|
|
33
|
+
.max(6)
|
|
34
|
+
.refine((operations) => new Set(operations).size === operations.length),
|
|
35
|
+
})
|
|
36
|
+
.strict()
|
|
37
|
+
.refine((snapshot) => Date.parse(snapshot.expiresAt) > Date.parse(snapshot.observedAt), 'Session capability expiry must follow its observation');
|
|
38
|
+
export const ExternalSessionSafeMetadataSchema = z
|
|
39
|
+
.object({
|
|
40
|
+
origin: z.enum(['native_discovery', 'created_through_control_plane']),
|
|
41
|
+
displayName: SafeDisplayNameSchema.optional(),
|
|
42
|
+
limitations: z
|
|
43
|
+
.array(NormalizedCodeSchema)
|
|
44
|
+
.max(32)
|
|
45
|
+
.refine((limitations) => new Set(limitations).size === limitations.length),
|
|
46
|
+
})
|
|
47
|
+
.strict();
|
|
48
|
+
export const ExternalSessionStateSchema = z.enum(['active', 'closed', 'removed', 'revoked']);
|
|
49
|
+
export const ExternalSessionSchema = z
|
|
50
|
+
.object({
|
|
51
|
+
externalSessionId: IdentifierSchemas.externalSessionId,
|
|
52
|
+
runtimeConnectionId: IdentifierSchemas.runtimeConnectionId,
|
|
53
|
+
opaqueNativeSessionId: OpaqueNativeSessionIdSchema,
|
|
54
|
+
workspaceId: IdentifierSchemas.workspaceId,
|
|
55
|
+
projectId: IdentifierSchemas.projectId.optional(),
|
|
56
|
+
state: ExternalSessionStateSchema,
|
|
57
|
+
ownership: z
|
|
58
|
+
.object({
|
|
59
|
+
authority: z.literal('external_runtime'),
|
|
60
|
+
imported: z.literal(false),
|
|
61
|
+
concurrentNativeUse: z.literal('allowed'),
|
|
62
|
+
})
|
|
63
|
+
.strict(),
|
|
64
|
+
capabilitySnapshot: ExternalSessionCapabilitySnapshotSchema,
|
|
65
|
+
safeMetadata: ExternalSessionSafeMetadataSchema,
|
|
66
|
+
lastObservedAt: RuntimeTimestampSchema,
|
|
67
|
+
version: z.number().int().positive(),
|
|
68
|
+
createdAt: RuntimeTimestampSchema,
|
|
69
|
+
updatedAt: RuntimeTimestampSchema,
|
|
70
|
+
})
|
|
71
|
+
.strict()
|
|
72
|
+
.superRefine((session, context) => {
|
|
73
|
+
if (Date.parse(session.capabilitySnapshot.observedAt) > Date.parse(session.lastObservedAt)) {
|
|
74
|
+
context.addIssue({
|
|
75
|
+
code: 'custom',
|
|
76
|
+
message: 'Capabilities cannot postdate session observation',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
if (Date.parse(session.updatedAt) < Date.parse(session.createdAt) ||
|
|
80
|
+
Date.parse(session.lastObservedAt) < Date.parse(session.createdAt)) {
|
|
81
|
+
context.addIssue({ code: 'custom', message: 'Session timestamps cannot regress' });
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
const ExternalSessionRegistrationSchema = z
|
|
85
|
+
.object({
|
|
86
|
+
externalSessionId: IdentifierSchemas.externalSessionId,
|
|
87
|
+
runtimeConnectionId: IdentifierSchemas.runtimeConnectionId,
|
|
88
|
+
opaqueNativeSessionId: OpaqueNativeSessionIdSchema,
|
|
89
|
+
workspaceId: IdentifierSchemas.workspaceId,
|
|
90
|
+
projectId: IdentifierSchemas.projectId.optional(),
|
|
91
|
+
state: ExternalSessionStateSchema,
|
|
92
|
+
ownership: ExternalSessionSchema.shape.ownership,
|
|
93
|
+
capabilitySnapshot: ExternalSessionCapabilitySnapshotSchema,
|
|
94
|
+
safeMetadata: ExternalSessionSafeMetadataSchema,
|
|
95
|
+
lastObservedAt: RuntimeTimestampSchema,
|
|
96
|
+
})
|
|
97
|
+
.strict();
|
|
98
|
+
const ExternalSessionUpdateSchema = z
|
|
99
|
+
.object({
|
|
100
|
+
externalSessionId: IdentifierSchemas.externalSessionId,
|
|
101
|
+
expectedVersion: z.number().int().positive(),
|
|
102
|
+
observedAt: RuntimeTimestampSchema,
|
|
103
|
+
state: ExternalSessionStateSchema.optional(),
|
|
104
|
+
capabilitySnapshot: ExternalSessionCapabilitySnapshotSchema.optional(),
|
|
105
|
+
safeMetadata: ExternalSessionSafeMetadataSchema.optional(),
|
|
106
|
+
})
|
|
107
|
+
.strict()
|
|
108
|
+
.refine((update) => update.state !== undefined ||
|
|
109
|
+
update.capabilitySnapshot !== undefined ||
|
|
110
|
+
update.safeMetadata !== undefined, 'Session update must change observed state');
|
|
111
|
+
const ExternalSessionListScopeSchema = z
|
|
112
|
+
.object({
|
|
113
|
+
workspaceId: IdentifierSchemas.workspaceId,
|
|
114
|
+
projectId: IdentifierSchemas.projectId.optional(),
|
|
115
|
+
runtimeConnectionId: IdentifierSchemas.runtimeConnectionId.optional(),
|
|
116
|
+
})
|
|
117
|
+
.strict();
|
|
118
|
+
export class InMemoryExternalSessionRepository {
|
|
119
|
+
#sessions = new Map();
|
|
120
|
+
async insert(session) {
|
|
121
|
+
if (this.#sessions.has(session.externalSessionId) ||
|
|
122
|
+
[...this.#sessions.values()].some((candidate) => candidate.runtimeConnectionId === session.runtimeConnectionId &&
|
|
123
|
+
candidate.opaqueNativeSessionId === session.opaqueNativeSessionId)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
this.#sessions.set(session.externalSessionId, clone(session));
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
async get(externalSessionId) {
|
|
130
|
+
return cloneOptional(this.#sessions.get(externalSessionId));
|
|
131
|
+
}
|
|
132
|
+
async findByNativeIdentity(runtimeConnectionId, opaqueNativeSessionId) {
|
|
133
|
+
return cloneOptional([...this.#sessions.values()].find((session) => session.runtimeConnectionId === runtimeConnectionId &&
|
|
134
|
+
session.opaqueNativeSessionId === opaqueNativeSessionId));
|
|
135
|
+
}
|
|
136
|
+
async list(scope) {
|
|
137
|
+
return [...this.#sessions.values()]
|
|
138
|
+
.filter((session) => session.workspaceId === scope.workspaceId &&
|
|
139
|
+
(scope.projectId === undefined || session.projectId === scope.projectId) &&
|
|
140
|
+
(scope.runtimeConnectionId === undefined ||
|
|
141
|
+
session.runtimeConnectionId === scope.runtimeConnectionId))
|
|
142
|
+
.sort((left, right) => left.externalSessionId.localeCompare(right.externalSessionId))
|
|
143
|
+
.map(clone);
|
|
144
|
+
}
|
|
145
|
+
async compareAndSet(expectedVersion, session) {
|
|
146
|
+
if (this.#sessions.get(session.externalSessionId)?.version !== expectedVersion)
|
|
147
|
+
return false;
|
|
148
|
+
this.#sessions.set(session.externalSessionId, clone(session));
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export class ExternalSessionRegistryError extends Error {
|
|
153
|
+
code;
|
|
154
|
+
currentVersion;
|
|
155
|
+
constructor(code, currentVersion) {
|
|
156
|
+
super(code);
|
|
157
|
+
this.code = code;
|
|
158
|
+
this.currentVersion = currentVersion;
|
|
159
|
+
this.name = 'ExternalSessionRegistryError';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export class ExternalSessionRegistry {
|
|
163
|
+
repository;
|
|
164
|
+
constructor(repository) {
|
|
165
|
+
this.repository = repository;
|
|
166
|
+
}
|
|
167
|
+
async register(inputValue) {
|
|
168
|
+
const input = normalizeRegistration(ExternalSessionRegistrationSchema.parse(inputValue));
|
|
169
|
+
const existing = await this.repository.findByNativeIdentity(input.runtimeConnectionId, input.opaqueNativeSessionId);
|
|
170
|
+
if (existing) {
|
|
171
|
+
if (sameRegistration(existing, input))
|
|
172
|
+
return existing;
|
|
173
|
+
fail('SESSION_IDENTITY_CONFLICT');
|
|
174
|
+
}
|
|
175
|
+
const session = ExternalSessionSchema.parse({
|
|
176
|
+
...input,
|
|
177
|
+
version: 1,
|
|
178
|
+
createdAt: input.lastObservedAt,
|
|
179
|
+
updatedAt: input.lastObservedAt,
|
|
180
|
+
});
|
|
181
|
+
if (!(await this.repository.insert(session))) {
|
|
182
|
+
const raced = await this.repository.findByNativeIdentity(input.runtimeConnectionId, input.opaqueNativeSessionId);
|
|
183
|
+
if (raced && sameRegistration(raced, input))
|
|
184
|
+
return raced;
|
|
185
|
+
fail('SESSION_IDENTITY_CONFLICT');
|
|
186
|
+
}
|
|
187
|
+
return session;
|
|
188
|
+
}
|
|
189
|
+
async get(externalSessionIdValue) {
|
|
190
|
+
const externalSessionId = IdentifierSchemas.externalSessionId.parse(externalSessionIdValue);
|
|
191
|
+
const session = await this.repository.get(externalSessionId);
|
|
192
|
+
if (!session)
|
|
193
|
+
fail('SESSION_MISSING');
|
|
194
|
+
return ExternalSessionSchema.parse(session);
|
|
195
|
+
}
|
|
196
|
+
async list(scopeValue) {
|
|
197
|
+
const scope = ExternalSessionListScopeSchema.parse(scopeValue);
|
|
198
|
+
return Promise.all((await this.repository.list(scope)).map((session) => Promise.resolve(ExternalSessionSchema.parse(session))));
|
|
199
|
+
}
|
|
200
|
+
async update(inputValue) {
|
|
201
|
+
const input = ExternalSessionUpdateSchema.parse(inputValue);
|
|
202
|
+
const current = await this.get(input.externalSessionId);
|
|
203
|
+
if (current.version !== input.expectedVersion) {
|
|
204
|
+
fail('STALE_SESSION_VERSION', current.version);
|
|
205
|
+
}
|
|
206
|
+
if (current.state === 'revoked' && input.state !== 'revoked')
|
|
207
|
+
fail('SESSION_REVOKED');
|
|
208
|
+
if (Date.parse(input.observedAt) < Date.parse(current.lastObservedAt)) {
|
|
209
|
+
fail('TIMESTAMP_REGRESSION');
|
|
210
|
+
}
|
|
211
|
+
const capabilitySnapshot = input.capabilitySnapshot === undefined
|
|
212
|
+
? undefined
|
|
213
|
+
: normalizeSnapshot(input.capabilitySnapshot);
|
|
214
|
+
if (capabilitySnapshot !== undefined) {
|
|
215
|
+
if (capabilitySnapshot.version < current.capabilitySnapshot.version ||
|
|
216
|
+
Date.parse(capabilitySnapshot.observedAt) <
|
|
217
|
+
Date.parse(current.capabilitySnapshot.observedAt)) {
|
|
218
|
+
fail('CAPABILITY_SNAPSHOT_REGRESSION');
|
|
219
|
+
}
|
|
220
|
+
if (capabilitySnapshot.version === current.capabilitySnapshot.version &&
|
|
221
|
+
JSON.stringify(capabilitySnapshot) !== JSON.stringify(current.capabilitySnapshot)) {
|
|
222
|
+
fail('CAPABILITY_SNAPSHOT_CONFLICT');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const next = ExternalSessionSchema.parse({
|
|
226
|
+
...current,
|
|
227
|
+
state: input.state ?? current.state,
|
|
228
|
+
capabilitySnapshot: capabilitySnapshot ?? current.capabilitySnapshot,
|
|
229
|
+
safeMetadata: input.safeMetadata === undefined
|
|
230
|
+
? current.safeMetadata
|
|
231
|
+
: normalizeSafeMetadata(input.safeMetadata),
|
|
232
|
+
lastObservedAt: input.observedAt,
|
|
233
|
+
version: current.version + 1,
|
|
234
|
+
updatedAt: input.observedAt,
|
|
235
|
+
});
|
|
236
|
+
if (!(await this.repository.compareAndSet(input.expectedVersion, next))) {
|
|
237
|
+
const latest = await this.repository.get(input.externalSessionId);
|
|
238
|
+
fail('STALE_SESSION_VERSION', latest?.version);
|
|
239
|
+
}
|
|
240
|
+
return next;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
export const ExternalSessionAssessmentStateSchema = z.enum([
|
|
244
|
+
'active',
|
|
245
|
+
'closed',
|
|
246
|
+
'stale',
|
|
247
|
+
'offline',
|
|
248
|
+
'runtime_missing',
|
|
249
|
+
'capability_changed',
|
|
250
|
+
'removed',
|
|
251
|
+
'revoked',
|
|
252
|
+
]);
|
|
253
|
+
export const ExternalSessionOperationUnavailableReasonSchema = z.enum([
|
|
254
|
+
'CAPABILITY_NOT_ADVERTISED',
|
|
255
|
+
'CAPABILITY_NO_LONGER_ADVERTISED',
|
|
256
|
+
'RUNTIME_MISSING',
|
|
257
|
+
'RUNTIME_OFFLINE',
|
|
258
|
+
'SESSION_CAPABILITIES_STALE',
|
|
259
|
+
'SESSION_CLOSED',
|
|
260
|
+
'SESSION_REMOVED',
|
|
261
|
+
'SESSION_REVOKED',
|
|
262
|
+
]);
|
|
263
|
+
const ExternalSessionOperationAvailabilitySchema = z.union([
|
|
264
|
+
z.object({ available: z.literal(true) }).strict(),
|
|
265
|
+
z
|
|
266
|
+
.object({
|
|
267
|
+
available: z.literal(false),
|
|
268
|
+
reason: ExternalSessionOperationUnavailableReasonSchema,
|
|
269
|
+
})
|
|
270
|
+
.strict(),
|
|
271
|
+
]);
|
|
272
|
+
export const ExternalSessionAssessmentSchema = z
|
|
273
|
+
.object({
|
|
274
|
+
state: ExternalSessionAssessmentStateSchema,
|
|
275
|
+
recoverable: z.boolean(),
|
|
276
|
+
evaluatedAt: RuntimeTimestampSchema.optional(),
|
|
277
|
+
operations: z
|
|
278
|
+
.object({
|
|
279
|
+
reference: ExternalSessionOperationAvailabilitySchema,
|
|
280
|
+
resume: ExternalSessionOperationAvailabilitySchema,
|
|
281
|
+
load: ExternalSessionOperationAvailabilitySchema,
|
|
282
|
+
close: ExternalSessionOperationAvailabilitySchema,
|
|
283
|
+
history: ExternalSessionOperationAvailabilitySchema,
|
|
284
|
+
})
|
|
285
|
+
.strict(),
|
|
286
|
+
})
|
|
287
|
+
.strict();
|
|
288
|
+
const ExternalSessionAssessmentContextSchema = z
|
|
289
|
+
.object({
|
|
290
|
+
connection: RuntimeConnectionSchema.optional(),
|
|
291
|
+
nodeStatus: RuntimeEligibilityNodeStatusSchema,
|
|
292
|
+
evaluatedAt: RuntimeTimestampSchema,
|
|
293
|
+
})
|
|
294
|
+
.strict()
|
|
295
|
+
.refine((context) => context.connection === undefined ||
|
|
296
|
+
(context.connection.connectionType === 'managed_cloud') ===
|
|
297
|
+
(context.nodeStatus === 'not_applicable'), 'Managed-cloud sessions must not invent RuntimeNode health');
|
|
298
|
+
export function assessExternalSession(sessionValue, contextValue) {
|
|
299
|
+
const session = ExternalSessionSchema.parse(sessionValue);
|
|
300
|
+
const context = ExternalSessionAssessmentContextSchema.parse(contextValue);
|
|
301
|
+
if (context.connection !== undefined &&
|
|
302
|
+
context.connection.runtimeConnectionId !== session.runtimeConnectionId) {
|
|
303
|
+
throw new Error('SESSION_RUNTIME_CONNECTION_MISMATCH');
|
|
304
|
+
}
|
|
305
|
+
const base = classifySessionState(session, context);
|
|
306
|
+
const operations = Object.fromEntries(['resume', 'load', 'close', 'history'].map((operation) => [
|
|
307
|
+
operation,
|
|
308
|
+
operationAvailability(session, context.connection, base.state, operation),
|
|
309
|
+
]));
|
|
310
|
+
return ExternalSessionAssessmentSchema.parse({
|
|
311
|
+
...base,
|
|
312
|
+
evaluatedAt: context.evaluatedAt,
|
|
313
|
+
operations: { reference: { available: true }, ...operations },
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
function classifySessionState(session, context) {
|
|
317
|
+
if (session.state === 'revoked')
|
|
318
|
+
return { state: 'revoked', recoverable: false };
|
|
319
|
+
if (session.state === 'removed')
|
|
320
|
+
return { state: 'removed', recoverable: true };
|
|
321
|
+
if (session.state === 'closed')
|
|
322
|
+
return { state: 'closed', recoverable: false };
|
|
323
|
+
const connection = context.connection;
|
|
324
|
+
if (!connection)
|
|
325
|
+
return { state: 'runtime_missing', recoverable: true };
|
|
326
|
+
if (connection.status === 'revoked' ||
|
|
327
|
+
connection.availabilityState === 'revoked' ||
|
|
328
|
+
context.nodeStatus === 'revoked') {
|
|
329
|
+
return { state: 'revoked', recoverable: false };
|
|
330
|
+
}
|
|
331
|
+
if (['offline', 'unknown'].includes(context.nodeStatus) ||
|
|
332
|
+
['disconnected', 'expired', 'unavailable'].includes(connection.status) ||
|
|
333
|
+
['offline', 'reconnecting', 'unknown', 'incompatible'].includes(connection.availabilityState ?? 'unknown')) {
|
|
334
|
+
return { state: 'offline', recoverable: true };
|
|
335
|
+
}
|
|
336
|
+
if (Date.parse(session.capabilitySnapshot.expiresAt) <= Date.parse(context.evaluatedAt) ||
|
|
337
|
+
connection.capabilitySnapshotExpiresAt === undefined ||
|
|
338
|
+
Date.parse(connection.capabilitySnapshotExpiresAt) <= Date.parse(context.evaluatedAt)) {
|
|
339
|
+
return { state: 'stale', recoverable: true };
|
|
340
|
+
}
|
|
341
|
+
const changed = session.capabilitySnapshot.operations.some((operation) => !runtimeAdvertises(connection, operation));
|
|
342
|
+
return changed
|
|
343
|
+
? { state: 'capability_changed', recoverable: true }
|
|
344
|
+
: { state: 'active', recoverable: true };
|
|
345
|
+
}
|
|
346
|
+
function operationAvailability(session, connection, state, operation) {
|
|
347
|
+
if (state === 'revoked')
|
|
348
|
+
return unavailable('SESSION_REVOKED');
|
|
349
|
+
if (state === 'removed')
|
|
350
|
+
return unavailable('SESSION_REMOVED');
|
|
351
|
+
if (state === 'runtime_missing')
|
|
352
|
+
return unavailable('RUNTIME_MISSING');
|
|
353
|
+
if (state === 'offline')
|
|
354
|
+
return unavailable('RUNTIME_OFFLINE');
|
|
355
|
+
if (state === 'stale')
|
|
356
|
+
return unavailable('SESSION_CAPABILITIES_STALE');
|
|
357
|
+
if (state === 'closed' && operation !== 'history')
|
|
358
|
+
return unavailable('SESSION_CLOSED');
|
|
359
|
+
const capability = `session.${operation}`;
|
|
360
|
+
if (!session.capabilitySnapshot.operations.includes(capability)) {
|
|
361
|
+
return unavailable('CAPABILITY_NOT_ADVERTISED');
|
|
362
|
+
}
|
|
363
|
+
if (!connection || !runtimeAdvertises(connection, capability)) {
|
|
364
|
+
return unavailable('CAPABILITY_NO_LONGER_ADVERTISED');
|
|
365
|
+
}
|
|
366
|
+
return { available: true };
|
|
367
|
+
}
|
|
368
|
+
function runtimeAdvertises(connection, operation) {
|
|
369
|
+
return connection.capabilities.some((capability) => capability.name === operation && capability.support !== 'unsupported');
|
|
370
|
+
}
|
|
371
|
+
function unavailable(reason) {
|
|
372
|
+
return { available: false, reason };
|
|
373
|
+
}
|
|
374
|
+
function normalizeRegistration(input) {
|
|
375
|
+
return {
|
|
376
|
+
...input,
|
|
377
|
+
capabilitySnapshot: normalizeSnapshot(input.capabilitySnapshot),
|
|
378
|
+
safeMetadata: normalizeSafeMetadata(input.safeMetadata),
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
function normalizeSnapshot(snapshot) {
|
|
382
|
+
return { ...snapshot, operations: [...snapshot.operations].sort() };
|
|
383
|
+
}
|
|
384
|
+
function normalizeSafeMetadata(metadata) {
|
|
385
|
+
return { ...metadata, limitations: [...metadata.limitations].sort() };
|
|
386
|
+
}
|
|
387
|
+
function sameRegistration(session, input) {
|
|
388
|
+
const registered = {
|
|
389
|
+
externalSessionId: session.externalSessionId,
|
|
390
|
+
runtimeConnectionId: session.runtimeConnectionId,
|
|
391
|
+
opaqueNativeSessionId: session.opaqueNativeSessionId,
|
|
392
|
+
workspaceId: session.workspaceId,
|
|
393
|
+
...(session.projectId === undefined ? {} : { projectId: session.projectId }),
|
|
394
|
+
state: session.state,
|
|
395
|
+
ownership: session.ownership,
|
|
396
|
+
capabilitySnapshot: session.capabilitySnapshot,
|
|
397
|
+
safeMetadata: session.safeMetadata,
|
|
398
|
+
lastObservedAt: session.lastObservedAt,
|
|
399
|
+
};
|
|
400
|
+
return JSON.stringify(registered) === JSON.stringify(input);
|
|
401
|
+
}
|
|
402
|
+
function fail(code, currentVersion) {
|
|
403
|
+
throw new ExternalSessionRegistryError(code, currentVersion);
|
|
404
|
+
}
|
|
405
|
+
function clone(value) {
|
|
406
|
+
return structuredClone(value);
|
|
407
|
+
}
|
|
408
|
+
function cloneOptional(value) {
|
|
409
|
+
return value === undefined ? undefined : clone(value);
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { RuntimeAdapter, RuntimeAdapterInspection, RuntimeApprovalRequest, RuntimeCancelRequest, RuntimeExecutionHandle, RuntimeExecutionProgress, RuntimeExecutionStatus, RuntimeInputRequest, RuntimeProgressOptions, RuntimeSessionOperation, RuntimeSessionResult, RuntimeStartRequest } from './adapter.js';
|
|
2
|
+
export type RuntimeTransportKind = 'direct-local' | 'remote-gateway';
|
|
3
|
+
/**
|
|
4
|
+
* Concrete runtime operations at the location where a harness executes.
|
|
5
|
+
* Drivers do not decide whether their caller is co-located or remote.
|
|
6
|
+
*/
|
|
7
|
+
export type RuntimeDriver = RuntimeAdapter;
|
|
8
|
+
/**
|
|
9
|
+
* Selects how normalized RuntimeAdapter operations reach a RuntimeDriver.
|
|
10
|
+
* Transport choice is topology metadata and never changes semantic payloads.
|
|
11
|
+
*/
|
|
12
|
+
export interface RuntimeTransport extends RuntimeAdapter {
|
|
13
|
+
readonly kind: RuntimeTransportKind;
|
|
14
|
+
}
|
|
15
|
+
export interface RuntimeAdapterWithTransport extends RuntimeAdapter {
|
|
16
|
+
readonly transportKind: RuntimeTransportKind;
|
|
17
|
+
}
|
|
18
|
+
declare abstract class DelegatingRuntimeAdapter implements RuntimeAdapter {
|
|
19
|
+
protected readonly driver: RuntimeDriver;
|
|
20
|
+
constructor(driver: RuntimeDriver);
|
|
21
|
+
inspect(requirements?: Parameters<RuntimeAdapter['inspect']>[0]): Promise<RuntimeAdapterInspection>;
|
|
22
|
+
start(request: RuntimeStartRequest): Promise<RuntimeExecutionHandle>;
|
|
23
|
+
progress(handle: RuntimeExecutionHandle, options?: RuntimeProgressOptions): AsyncIterable<RuntimeExecutionProgress>;
|
|
24
|
+
submitInput(handle: RuntimeExecutionHandle, request: RuntimeInputRequest): Promise<RuntimeExecutionStatus>;
|
|
25
|
+
submitApproval(handle: RuntimeExecutionHandle, request: RuntimeApprovalRequest): Promise<RuntimeExecutionStatus>;
|
|
26
|
+
cancel(handle: RuntimeExecutionHandle, request: RuntimeCancelRequest): Promise<RuntimeExecutionStatus>;
|
|
27
|
+
status(handle: RuntimeExecutionHandle): Promise<RuntimeExecutionStatus>;
|
|
28
|
+
reconcile(handle: RuntimeExecutionHandle): Promise<RuntimeExecutionStatus>;
|
|
29
|
+
session(operation: RuntimeSessionOperation): Promise<RuntimeSessionResult>;
|
|
30
|
+
cleanup(handle: RuntimeExecutionHandle): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
declare abstract class DelegatingRuntimeTransport extends DelegatingRuntimeAdapter implements RuntimeTransport {
|
|
33
|
+
abstract readonly kind: RuntimeTransportKind;
|
|
34
|
+
}
|
|
35
|
+
/** Adapter-side facade that records topology while preserving the driver's semantic surface. */
|
|
36
|
+
export declare class TransportedRuntimeAdapter extends DelegatingRuntimeAdapter implements RuntimeAdapterWithTransport {
|
|
37
|
+
protected readonly transport: RuntimeTransport;
|
|
38
|
+
readonly expectedAdapterName: string;
|
|
39
|
+
readonly transportKind: RuntimeTransportKind;
|
|
40
|
+
constructor(transport: RuntimeTransport, expectedAdapterName: string);
|
|
41
|
+
inspect(requirements?: Parameters<RuntimeAdapter['inspect']>[0]): Promise<RuntimeAdapterInspection>;
|
|
42
|
+
}
|
|
43
|
+
/** In-process/IPC-free transport for a co-located Local or Hosted runtime driver. */
|
|
44
|
+
export declare class DirectLocalRuntimeTransport extends DelegatingRuntimeTransport {
|
|
45
|
+
readonly kind: "direct-local";
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Semantic wrapper for a driver proxy backed by the authenticated Runtime Gateway.
|
|
49
|
+
* Wire delivery, reconnect, and command-ledger behavior remain in the proxy driver.
|
|
50
|
+
*/
|
|
51
|
+
export declare class RemoteRuntimeGatewayTransport extends DelegatingRuntimeTransport {
|
|
52
|
+
readonly kind: "remote-gateway";
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,cAAc,CAAA;AAGrB,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,CAAA;AAEpE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,cAAc,CAAA;AAE1C;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;CACpC;AAED,MAAM,WAAW,2BAA4B,SAAQ,cAAc;IACjE,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAA;CAC7C;AAED,uBAAe,wBAAyB,YAAW,cAAc;IACnD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa;gBAArB,MAAM,EAAE,aAAa;IAEpD,OAAO,CACL,YAAY,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GACtD,OAAO,CAAC,wBAAwB,CAAC;IAIpC,KAAK,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIpE,QAAQ,CACN,MAAM,EAAE,sBAAsB,EAC9B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,aAAa,CAAC,wBAAwB,CAAC;IAI1C,WAAW,CACT,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;IAIlC,cAAc,CACZ,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,sBAAsB,CAAC;IAIlC,MAAM,CACJ,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAIlC,MAAM,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIvE,SAAS,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1E,OAAO,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI1E,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvD;AAED,uBAAe,0BACb,SAAQ,wBACR,YAAW,gBAAgB;IAE3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;CAC7C;AAED,gGAAgG;AAChG,qBAAa,yBACX,SAAQ,wBACR,YAAW,2BAA2B;IAKpC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB;IAC9C,QAAQ,CAAC,mBAAmB,EAAE,MAAM;IAJtC,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAA;gBAGvB,SAAS,EAAE,gBAAgB,EACrC,mBAAmB,EAAE,MAAM;IAMvB,OAAO,CACpB,YAAY,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GACtD,OAAO,CAAC,wBAAwB,CAAC;CAYrC;AAED,qFAAqF;AACrF,qBAAa,2BAA4B,SAAQ,0BAA0B;IACzE,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAS;CACxC;AAED;;;GAGG;AACH,qBAAa,6BAA8B,SAAQ,0BAA0B;IAC3E,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAS;CAC1C"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { RuntimeAdapterInspectionSchema } from './adapter.js';
|
|
2
|
+
class DelegatingRuntimeAdapter {
|
|
3
|
+
driver;
|
|
4
|
+
constructor(driver) {
|
|
5
|
+
this.driver = driver;
|
|
6
|
+
}
|
|
7
|
+
inspect(requirements) {
|
|
8
|
+
return this.driver.inspect(requirements);
|
|
9
|
+
}
|
|
10
|
+
start(request) {
|
|
11
|
+
return this.driver.start(request);
|
|
12
|
+
}
|
|
13
|
+
progress(handle, options) {
|
|
14
|
+
return this.driver.progress(handle, options);
|
|
15
|
+
}
|
|
16
|
+
submitInput(handle, request) {
|
|
17
|
+
return this.driver.submitInput(handle, request);
|
|
18
|
+
}
|
|
19
|
+
submitApproval(handle, request) {
|
|
20
|
+
return this.driver.submitApproval(handle, request);
|
|
21
|
+
}
|
|
22
|
+
cancel(handle, request) {
|
|
23
|
+
return this.driver.cancel(handle, request);
|
|
24
|
+
}
|
|
25
|
+
status(handle) {
|
|
26
|
+
return this.driver.status(handle);
|
|
27
|
+
}
|
|
28
|
+
reconcile(handle) {
|
|
29
|
+
return this.driver.reconcile(handle);
|
|
30
|
+
}
|
|
31
|
+
session(operation) {
|
|
32
|
+
return this.driver.session(operation);
|
|
33
|
+
}
|
|
34
|
+
cleanup(handle) {
|
|
35
|
+
return this.driver.cleanup(handle);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
class DelegatingRuntimeTransport extends DelegatingRuntimeAdapter {
|
|
39
|
+
}
|
|
40
|
+
/** Adapter-side facade that records topology while preserving the driver's semantic surface. */
|
|
41
|
+
export class TransportedRuntimeAdapter extends DelegatingRuntimeAdapter {
|
|
42
|
+
transport;
|
|
43
|
+
expectedAdapterName;
|
|
44
|
+
transportKind;
|
|
45
|
+
constructor(transport, expectedAdapterName) {
|
|
46
|
+
super(transport);
|
|
47
|
+
this.transport = transport;
|
|
48
|
+
this.expectedAdapterName = expectedAdapterName;
|
|
49
|
+
this.transportKind = transport.kind;
|
|
50
|
+
}
|
|
51
|
+
async inspect(requirements) {
|
|
52
|
+
const inspection = RuntimeAdapterInspectionSchema.parse(await this.transport.inspect(requirements));
|
|
53
|
+
if (inspection.metadata.adapterName !== this.expectedAdapterName) {
|
|
54
|
+
throw new Error('RUNTIME_TRANSPORT_DRIVER_FAMILY_MISMATCH');
|
|
55
|
+
}
|
|
56
|
+
return RuntimeAdapterInspectionSchema.parse({
|
|
57
|
+
...inspection,
|
|
58
|
+
metadata: { ...inspection.metadata, transportKind: this.transportKind },
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/** In-process/IPC-free transport for a co-located Local or Hosted runtime driver. */
|
|
63
|
+
export class DirectLocalRuntimeTransport extends DelegatingRuntimeTransport {
|
|
64
|
+
kind = 'direct-local';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Semantic wrapper for a driver proxy backed by the authenticated Runtime Gateway.
|
|
68
|
+
* Wire delivery, reconnect, and command-ledger behavior remain in the proxy driver.
|
|
69
|
+
*/
|
|
70
|
+
export class RemoteRuntimeGatewayTransport extends DelegatingRuntimeTransport {
|
|
71
|
+
kind = 'remote-gateway';
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAsB7D,MAAe,wBAAwB;IACN;IAA/B,YAA+B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAExD,OAAO,CACL,YAAuD;QAEvD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,OAA4B;QAChC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IAED,QAAQ,CACN,MAA8B,EAC9B,OAAgC;QAEhC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAED,WAAW,CACT,MAA8B,EAC9B,OAA4B;QAE5B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,cAAc,CACZ,MAA8B,EAC9B,OAA+B;QAE/B,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,CACJ,MAA8B,EAC9B,OAA6B;QAE7B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAC,MAA8B;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,MAA8B;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED,OAAO,CAAC,SAAkC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,CAAC,MAA8B;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;CACF;AAED,MAAe,0BACb,SAAQ,wBAAwB;CAIjC;AAED,gGAAgG;AAChG,MAAM,OAAO,yBACX,SAAQ,wBAAwB;IAMX;IACV;IAJF,aAAa,CAAsB;IAE5C,YACqB,SAA2B,EACrC,mBAA2B;QAEpC,KAAK,CAAC,SAAS,CAAC,CAAA;QAHG,cAAS,GAAT,SAAS,CAAkB;QACrC,wBAAmB,GAAnB,mBAAmB,CAAQ;QAGpC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,CAAA;IACrC,CAAC;IAEQ,KAAK,CAAC,OAAO,CACpB,YAAuD;QAEvD,MAAM,UAAU,GAAG,8BAA8B,CAAC,KAAK,CACrD,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAC3C,CAAA;QACD,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,KAAK,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC7D,CAAC;QACD,OAAO,8BAA8B,CAAC,KAAK,CAAC;YAC1C,GAAG,UAAU;YACb,QAAQ,EAAE,EAAE,GAAG,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;SACxE,CAAC,CAAA;IACJ,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,OAAO,2BAA4B,SAAQ,0BAA0B;IAChE,IAAI,GAAG,cAAuB,CAAA;CACxC;AAED;;;GAGG;AACH,MAAM,OAAO,6BAA8B,SAAQ,0BAA0B;IAClE,IAAI,GAAG,gBAAyB,CAAA;CAC1C"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@adea-ai/runtime-sdk",
|
|
3
|
+
"version": "1.5.2",
|
|
4
|
+
"description": "SDK for building Control Plane runtimes: adapters, capabilities, conformance, discovery, eligibility, health, sessions, transport, and routing.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"adapter",
|
|
7
|
+
"agents",
|
|
8
|
+
"conformance",
|
|
9
|
+
"runtime",
|
|
10
|
+
"sdk"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/adea-ai/control-plane#readme",
|
|
13
|
+
"bugs": "https://github.com/adea-ai/control-plane/issues",
|
|
14
|
+
"license": "Apache-2.0",
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/adea-ai/control-plane.git",
|
|
18
|
+
"directory": "packages/runtime-sdk"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"type": "module",
|
|
24
|
+
"browser": false,
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"exports": {
|
|
27
|
+
".": {
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"node": "./dist/index.js",
|
|
30
|
+
"default": "./dist/index.js"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"publishConfig": {
|
|
34
|
+
"access": "public",
|
|
35
|
+
"provenance": true
|
|
36
|
+
},
|
|
37
|
+
"scripts": {
|
|
38
|
+
"build": "tsc -p tsconfig.json",
|
|
39
|
+
"compatibility:check": "bun scripts/compatibility.mjs --check",
|
|
40
|
+
"compatibility:generate": "bun scripts/compatibility.mjs",
|
|
41
|
+
"lint": "oxlint src",
|
|
42
|
+
"test": "bun test src"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@adea-ai/contracts": "^1.5.2",
|
|
46
|
+
"zod": "4.5.4"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=24 <25"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {},
|
|
52
|
+
"peerDependencies": {}
|
|
53
|
+
}
|