@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,310 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { IdentifierSchemas } from '@control-plane/contracts';
3
+ import { z } from 'zod';
4
+ import { CapabilityRequirementSetSchema, RuntimeCapabilityNameSchema, evaluateCapabilities, } from './capabilities.js';
5
+ import { RuntimeNodeHealthStatusSchema } from './health.js';
6
+ import { RuntimeConnectionLocationSchema, RuntimeConnectionSchema, RuntimeTimestampSchema, } from './models.js';
7
+ const DigestSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
8
+ const RuntimeFamilySchema = z
9
+ .string()
10
+ .min(1)
11
+ .max(64)
12
+ .regex(/^[a-z][a-z0-9-]*$/);
13
+ const PolicyReasonCodeSchema = z
14
+ .string()
15
+ .min(1)
16
+ .max(128)
17
+ .regex(/^[A-Z][A-Z0-9_]*$/);
18
+ export const RuntimeEligibilityNodeStatusSchema = z.union([
19
+ RuntimeNodeHealthStatusSchema,
20
+ z.literal('not_applicable'),
21
+ ]);
22
+ export const RuntimeEligibilityInputSchema = z
23
+ .object({
24
+ eligibilityVersion: z.literal(1),
25
+ evaluatedAt: RuntimeTimestampSchema,
26
+ executionPlan: z
27
+ .object({
28
+ executionPlanId: IdentifierSchemas.executionPlanId,
29
+ contentDigest: DigestSchema,
30
+ runtimeRequirements: CapabilityRequirementSetSchema,
31
+ })
32
+ .strict(),
33
+ candidate: z
34
+ .object({
35
+ family: RuntimeFamilySchema,
36
+ nodeStatus: RuntimeEligibilityNodeStatusSchema,
37
+ connection: RuntimeConnectionSchema,
38
+ })
39
+ .strict(),
40
+ policy: z
41
+ .object({
42
+ snapshot: z
43
+ .object({
44
+ policyId: z.string().min(1).max(128),
45
+ version: z.number().int().positive(),
46
+ digest: DigestSchema,
47
+ })
48
+ .strict(),
49
+ allowedFamilies: z.array(RuntimeFamilySchema).min(1).max(64),
50
+ allowedLocations: z.array(RuntimeConnectionLocationSchema).min(1).max(8),
51
+ deniedRuntimeConnectionIds: z.array(IdentifierSchemas.runtimeConnectionId).max(256),
52
+ requireVerifiedCapabilities: z.boolean(),
53
+ security: z
54
+ .object({
55
+ status: z.enum(['allowed', 'denied']),
56
+ reasonCode: PolicyReasonCodeSchema.optional(),
57
+ })
58
+ .strict(),
59
+ })
60
+ .strict(),
61
+ localProjectGrant: z
62
+ .object({
63
+ required: z.boolean(),
64
+ status: z.enum(['not_required', 'granted', 'missing', 'revoked']),
65
+ grantRef: z
66
+ .string()
67
+ .min(1)
68
+ .max(256)
69
+ .regex(/^grant:[A-Za-z0-9._:-]+$/)
70
+ .optional(),
71
+ })
72
+ .strict(),
73
+ entitlement: z
74
+ .object({
75
+ status: z.enum(['allowed', 'denied', 'unknown']),
76
+ class: z.string().min(1).max(64),
77
+ })
78
+ .strict(),
79
+ preference: z
80
+ .object({
81
+ runtimeConnectionId: IdentifierSchemas.runtimeConnectionId.optional(),
82
+ family: RuntimeFamilySchema.optional(),
83
+ })
84
+ .strict()
85
+ .optional(),
86
+ })
87
+ .strict()
88
+ .superRefine((input, context) => {
89
+ const managedCloud = input.candidate.connection.connectionType === 'managed_cloud';
90
+ if (managedCloud !== (input.candidate.nodeStatus === 'not_applicable')) {
91
+ context.addIssue({
92
+ code: 'custom',
93
+ path: ['candidate', 'nodeStatus'],
94
+ message: 'Managed-cloud candidates must not invent RuntimeNode health',
95
+ });
96
+ }
97
+ });
98
+ export const RuntimeEligibilityReasonCodeSchema = z.enum([
99
+ 'CAPABILITY_SNAPSHOT_MISSING',
100
+ 'CAPABILITY_SNAPSHOT_STALE',
101
+ 'CAPABILITY_SNAPSHOT_UNVERIFIED',
102
+ 'ENTITLEMENT_DENIED',
103
+ 'ENTITLEMENT_UNKNOWN',
104
+ 'LOCAL_PROJECT_GRANT_MISSING',
105
+ 'LOCAL_PROJECT_GRANT_REVOKED',
106
+ 'REQUIRED_CAPABILITY_INSUFFICIENT',
107
+ 'REQUIRED_CAPABILITY_MISSING',
108
+ 'RUNTIME_CONNECTION_POLICY_DENIED',
109
+ 'RUNTIME_EXPIRED',
110
+ 'RUNTIME_FAMILY_POLICY_DENIED',
111
+ 'RUNTIME_INCOMPATIBLE',
112
+ 'RUNTIME_LOCATION_POLICY_DENIED',
113
+ 'RUNTIME_NODE_OFFLINE',
114
+ 'RUNTIME_NODE_REVOKED',
115
+ 'RUNTIME_NODE_UNKNOWN',
116
+ 'RUNTIME_OFFLINE',
117
+ 'RUNTIME_REVOKED',
118
+ 'RUNTIME_STALE',
119
+ 'RUNTIME_UNAVAILABLE',
120
+ 'SECURITY_POLICY_DENIED',
121
+ ]);
122
+ export const RuntimeEligibilityDegradationCodeSchema = z.enum([
123
+ 'COMPATIBILITY_DEGRADED',
124
+ 'COMPATIBILITY_UNTESTED',
125
+ 'OPTIONAL_CAPABILITY_DEGRADED',
126
+ 'OPTIONAL_CAPABILITY_MISSING',
127
+ 'RUNTIME_HEALTH_DEGRADED',
128
+ ]);
129
+ const RuntimeEligibilityReasonSchema = z
130
+ .object({
131
+ code: RuntimeEligibilityReasonCodeSchema,
132
+ capability: RuntimeCapabilityNameSchema.optional(),
133
+ })
134
+ .strict();
135
+ const RuntimeEligibilityDegradationSchema = z
136
+ .object({
137
+ code: RuntimeEligibilityDegradationCodeSchema,
138
+ capability: RuntimeCapabilityNameSchema.optional(),
139
+ })
140
+ .strict();
141
+ export const RuntimeEligibilityDecisionSchema = z
142
+ .object({
143
+ eligible: z.boolean(),
144
+ mode: z.enum(['full', 'degraded', 'ineligible']),
145
+ reasons: z.array(RuntimeEligibilityReasonSchema),
146
+ degradations: z.array(RuntimeEligibilityDegradationSchema),
147
+ audit: z
148
+ .object({
149
+ eligibilityVersion: z.literal(1),
150
+ executionPlanId: IdentifierSchemas.executionPlanId,
151
+ runtimeConnectionId: IdentifierSchemas.runtimeConnectionId,
152
+ policySnapshot: z
153
+ .object({
154
+ policyId: z.string().min(1).max(128),
155
+ version: z.number().int().positive(),
156
+ digest: DigestSchema,
157
+ })
158
+ .strict(),
159
+ evaluatedAt: RuntimeTimestampSchema,
160
+ inputDigest: DigestSchema,
161
+ })
162
+ .strict(),
163
+ })
164
+ .strict();
165
+ export function evaluateRuntimeEligibility(inputValue) {
166
+ const input = RuntimeEligibilityInputSchema.parse(inputValue);
167
+ const connection = input.candidate.connection;
168
+ const reasons = [];
169
+ const degradations = [];
170
+ const reason = (code, capability) => reasons.push({ code, ...(capability === undefined ? {} : { capability }) });
171
+ const degradation = (code, capability) => degradations.push({ code, ...(capability === undefined ? {} : { capability }) });
172
+ if (input.candidate.nodeStatus === 'offline')
173
+ reason('RUNTIME_NODE_OFFLINE');
174
+ if (input.candidate.nodeStatus === 'unknown')
175
+ reason('RUNTIME_NODE_UNKNOWN');
176
+ if (input.candidate.nodeStatus === 'revoked')
177
+ reason('RUNTIME_NODE_REVOKED');
178
+ if (connection.status === 'revoked' || connection.availabilityState === 'revoked') {
179
+ reason('RUNTIME_REVOKED');
180
+ }
181
+ else if (connection.status === 'expired') {
182
+ reason('RUNTIME_EXPIRED');
183
+ }
184
+ else if (connection.status === 'disconnected' ||
185
+ connection.availabilityState === 'offline' ||
186
+ connection.availabilityState === 'reconnecting') {
187
+ reason('RUNTIME_OFFLINE');
188
+ }
189
+ else if (connection.availabilityState === 'stale') {
190
+ reason('RUNTIME_STALE');
191
+ }
192
+ else if (connection.compatibilityState === 'incompatible' ||
193
+ connection.availabilityState === 'incompatible') {
194
+ reason('RUNTIME_INCOMPATIBLE');
195
+ }
196
+ else if (connection.status === 'unavailable' || connection.availabilityState === 'unknown') {
197
+ reason('RUNTIME_UNAVAILABLE');
198
+ }
199
+ if (connection.compatibilityState === 'revoked')
200
+ reason('RUNTIME_REVOKED');
201
+ if (!input.policy.allowedFamilies.includes(input.candidate.family)) {
202
+ reason('RUNTIME_FAMILY_POLICY_DENIED');
203
+ }
204
+ if (!input.policy.allowedLocations.includes(connection.location)) {
205
+ reason('RUNTIME_LOCATION_POLICY_DENIED');
206
+ }
207
+ if (input.policy.deniedRuntimeConnectionIds.includes(connection.runtimeConnectionId)) {
208
+ reason('RUNTIME_CONNECTION_POLICY_DENIED');
209
+ }
210
+ if (input.policy.security.status === 'denied')
211
+ reason('SECURITY_POLICY_DENIED');
212
+ if (input.localProjectGrant.required) {
213
+ if (input.localProjectGrant.status === 'missing')
214
+ reason('LOCAL_PROJECT_GRANT_MISSING');
215
+ if (input.localProjectGrant.status === 'revoked')
216
+ reason('LOCAL_PROJECT_GRANT_REVOKED');
217
+ if (input.localProjectGrant.status === 'not_required')
218
+ reason('LOCAL_PROJECT_GRANT_MISSING');
219
+ }
220
+ if (input.entitlement.status === 'denied')
221
+ reason('ENTITLEMENT_DENIED');
222
+ if (input.entitlement.status === 'unknown')
223
+ reason('ENTITLEMENT_UNKNOWN');
224
+ const snapshotVersion = connection.capabilitySnapshotVersion;
225
+ const snapshotObservedAt = connection.capabilitySnapshotObservedAt;
226
+ const snapshotExpiresAt = connection.capabilitySnapshotExpiresAt;
227
+ const snapshotVerification = connection.capabilityVerification;
228
+ const snapshotComplete = snapshotVersion !== undefined &&
229
+ snapshotObservedAt !== undefined &&
230
+ snapshotExpiresAt !== undefined &&
231
+ snapshotVerification !== undefined;
232
+ if (!snapshotComplete) {
233
+ reason('CAPABILITY_SNAPSHOT_MISSING');
234
+ }
235
+ else {
236
+ if (Date.parse(snapshotExpiresAt) <= Date.parse(input.evaluatedAt)) {
237
+ reason('CAPABILITY_SNAPSHOT_STALE');
238
+ }
239
+ if (input.policy.requireVerifiedCapabilities &&
240
+ connection.capabilityVerification !== 'verified') {
241
+ reason('CAPABILITY_SNAPSHOT_UNVERIFIED');
242
+ }
243
+ }
244
+ const capabilities = evaluateCapabilities(connection.capabilities, input.executionPlan.runtimeRequirements);
245
+ for (const capability of capabilities.missingRequired) {
246
+ reason('REQUIRED_CAPABILITY_MISSING', capability);
247
+ }
248
+ for (const capability of capabilities.insufficientRequired) {
249
+ reason('REQUIRED_CAPABILITY_INSUFFICIENT', capability);
250
+ }
251
+ for (const capability of capabilities.missingOptional) {
252
+ degradation('OPTIONAL_CAPABILITY_MISSING', capability);
253
+ }
254
+ for (const capability of capabilities.degradedOptional) {
255
+ degradation('OPTIONAL_CAPABILITY_DEGRADED', capability);
256
+ }
257
+ if (connection.health === 'degraded')
258
+ degradation('RUNTIME_HEALTH_DEGRADED');
259
+ if (connection.compatibilityState === 'degraded')
260
+ degradation('COMPATIBILITY_DEGRADED');
261
+ if (connection.compatibilityState === 'untested')
262
+ degradation('COMPATIBILITY_UNTESTED');
263
+ const normalizedReasons = uniqueSorted(reasons);
264
+ const normalizedDegradations = uniqueSorted(degradations);
265
+ const eligible = normalizedReasons.length === 0;
266
+ return RuntimeEligibilityDecisionSchema.parse({
267
+ eligible,
268
+ mode: eligible ? (normalizedDegradations.length > 0 ? 'degraded' : 'full') : 'ineligible',
269
+ reasons: normalizedReasons,
270
+ degradations: normalizedDegradations,
271
+ audit: {
272
+ eligibilityVersion: input.eligibilityVersion,
273
+ executionPlanId: input.executionPlan.executionPlanId,
274
+ runtimeConnectionId: connection.runtimeConnectionId,
275
+ policySnapshot: input.policy.snapshot,
276
+ evaluatedAt: input.evaluatedAt,
277
+ inputDigest: digestEligibilityInput(input),
278
+ },
279
+ });
280
+ }
281
+ function uniqueSorted(values) {
282
+ const unique = new Map(values.map((value) => [`${value.code}:${value.capability ?? ''}`, value]));
283
+ return [...unique.values()].sort((left, right) => `${left.code}:${left.capability ?? ''}`.localeCompare(`${right.code}:${right.capability ?? ''}`));
284
+ }
285
+ function digestEligibilityInput(input) {
286
+ const normalized = {
287
+ ...input,
288
+ executionPlan: {
289
+ ...input.executionPlan,
290
+ runtimeRequirements: [...input.executionPlan.runtimeRequirements].sort((left, right) => left.capability.localeCompare(right.capability)),
291
+ },
292
+ candidate: {
293
+ ...input.candidate,
294
+ connection: {
295
+ ...input.candidate.connection,
296
+ capabilities: [...input.candidate.connection.capabilities].sort((left, right) => left.name.localeCompare(right.name)),
297
+ limitations: [...input.candidate.connection.limitations].sort(),
298
+ diagnostics: [...(input.candidate.connection.diagnostics ?? [])].sort(),
299
+ },
300
+ },
301
+ policy: {
302
+ ...input.policy,
303
+ allowedFamilies: [...input.policy.allowedFamilies].sort(),
304
+ allowedLocations: [...input.policy.allowedLocations].sort(),
305
+ deniedRuntimeConnectionIds: [...input.policy.deniedRuntimeConnectionIds].sort(),
306
+ },
307
+ };
308
+ return `sha256:${createHash('sha256').update(JSON.stringify(normalized)).digest('hex')}`;
309
+ }
310
+ //# sourceMappingURL=eligibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eligibility.js","sourceRoot":"","sources":["../src/eligibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ export declare const RuntimeFixtures: Readonly<{
2
+ mock: {
3
+ runtimeDefinitionId: import("@control-plane/contracts").OpaqueIdentifier<"runtime-definition ID">;
4
+ family: string;
5
+ adapterVersion: string;
6
+ driverVersion: string;
7
+ harnessVersion: string;
8
+ location: "local_device" | "remote_host" | "agent_hq_cloud";
9
+ health: "degraded" | "healthy" | "unavailable";
10
+ lifecycle: "active" | "deprecated" | "revoked";
11
+ capabilities: {
12
+ name: "stream.output" | "stream.events" | "tool.call" | "tool.parallel" | "output.structured" | "filesystem.read" | "filesystem.write" | "project.read" | "project.write" | "execution.cancel" | "interaction.user-input" | "interaction.approval" | "session.create" | "session.list" | "session.resume" | "session.close" | "session.history" | "session.load" | "model.select" | "execution.child";
13
+ support: "supported" | "degraded" | "unsupported";
14
+ limitations?: string[] | undefined;
15
+ }[];
16
+ compatibility: {
17
+ status: "tested" | "untested" | "incompatible";
18
+ testedVersions: {
19
+ contractVersion: {
20
+ major: number;
21
+ minor: number;
22
+ };
23
+ adapterVersion: string;
24
+ driverVersion: string;
25
+ harnessVersion: string;
26
+ };
27
+ limitations: string[];
28
+ reason?: string | undefined;
29
+ };
30
+ };
31
+ futurePi: {
32
+ runtimeDefinitionId: import("@control-plane/contracts").OpaqueIdentifier<"runtime-definition ID">;
33
+ family: string;
34
+ adapterVersion: string;
35
+ driverVersion: string;
36
+ harnessVersion: string;
37
+ location: "local_device" | "remote_host" | "agent_hq_cloud";
38
+ health: "degraded" | "healthy" | "unavailable";
39
+ lifecycle: "active" | "deprecated" | "revoked";
40
+ capabilities: {
41
+ name: "stream.output" | "stream.events" | "tool.call" | "tool.parallel" | "output.structured" | "filesystem.read" | "filesystem.write" | "project.read" | "project.write" | "execution.cancel" | "interaction.user-input" | "interaction.approval" | "session.create" | "session.list" | "session.resume" | "session.close" | "session.history" | "session.load" | "model.select" | "execution.child";
42
+ support: "supported" | "degraded" | "unsupported";
43
+ limitations?: string[] | undefined;
44
+ }[];
45
+ compatibility: {
46
+ status: "tested" | "untested" | "incompatible";
47
+ testedVersions: {
48
+ contractVersion: {
49
+ major: number;
50
+ minor: number;
51
+ };
52
+ adapterVersion: string;
53
+ driverVersion: string;
54
+ harnessVersion: string;
55
+ };
56
+ limitations: string[];
57
+ reason?: string | undefined;
58
+ };
59
+ };
60
+ futureAcp: {
61
+ runtimeDefinitionId: import("@control-plane/contracts").OpaqueIdentifier<"runtime-definition ID">;
62
+ family: string;
63
+ adapterVersion: string;
64
+ driverVersion: string;
65
+ harnessVersion: string;
66
+ location: "local_device" | "remote_host" | "agent_hq_cloud";
67
+ health: "degraded" | "healthy" | "unavailable";
68
+ lifecycle: "active" | "deprecated" | "revoked";
69
+ capabilities: {
70
+ name: "stream.output" | "stream.events" | "tool.call" | "tool.parallel" | "output.structured" | "filesystem.read" | "filesystem.write" | "project.read" | "project.write" | "execution.cancel" | "interaction.user-input" | "interaction.approval" | "session.create" | "session.list" | "session.resume" | "session.close" | "session.history" | "session.load" | "model.select" | "execution.child";
71
+ support: "supported" | "degraded" | "unsupported";
72
+ limitations?: string[] | undefined;
73
+ }[];
74
+ compatibility: {
75
+ status: "tested" | "untested" | "incompatible";
76
+ testedVersions: {
77
+ contractVersion: {
78
+ major: number;
79
+ minor: number;
80
+ };
81
+ adapterVersion: string;
82
+ driverVersion: string;
83
+ harnessVersion: string;
84
+ };
85
+ limitations: string[];
86
+ reason?: string | undefined;
87
+ };
88
+ };
89
+ }>;
90
+ //# sourceMappingURL=fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB1B,CAAA"}
@@ -0,0 +1,48 @@
1
+ import { RuntimeDefinitionSchema } from './models.js';
2
+ const testedVersions = {
3
+ contractVersion: { major: 1, minor: 0 },
4
+ adapterVersion: '1.0.0',
5
+ driverVersion: '1.0.0',
6
+ harnessVersion: '1.0.0',
7
+ };
8
+ export const RuntimeFixtures = Object.freeze({
9
+ mock: runtime('rtd_01JABCDEF0123456789ABCDEFG', 'mock', [
10
+ capability('stream.output'),
11
+ capability('output.structured'),
12
+ capability('session.create'),
13
+ ]),
14
+ futurePi: runtime('rtd_01JBBCDEF0123456789ABCDEFG', 'pi', [
15
+ capability('stream.output'),
16
+ capability('tool.call'),
17
+ capability('session.create'),
18
+ capability('session.list'),
19
+ capability('session.resume'),
20
+ capability('session.close'),
21
+ capability('session.history', 'degraded', ['History may be truncated']),
22
+ ]),
23
+ futureAcp: runtime('rtd_01JZBCDEF0123456789ABCDEFG', 'acp', [
24
+ capability('stream.output'),
25
+ capability('tool.call'),
26
+ capability('session.list'),
27
+ capability('session.resume'),
28
+ capability('session.load'),
29
+ ]),
30
+ });
31
+ function runtime(runtimeDefinitionId, family, capabilities) {
32
+ return RuntimeDefinitionSchema.parse({
33
+ runtimeDefinitionId,
34
+ family,
35
+ adapterVersion: '1.0.0',
36
+ driverVersion: '1.0.0',
37
+ harnessVersion: '1.0.0',
38
+ location: 'local_device',
39
+ health: 'healthy',
40
+ lifecycle: 'active',
41
+ capabilities,
42
+ compatibility: { status: 'tested', testedVersions, limitations: [] },
43
+ });
44
+ }
45
+ function capability(name, support = 'supported', limitations) {
46
+ return { name, support, ...(limitations === undefined ? {} : { limitations: [...limitations] }) };
47
+ }
48
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../src/fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA0B,MAAM,aAAa,CAAA;AAE7E,MAAM,cAAc,GAAG;IACrB,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;IACvC,cAAc,EAAE,OAAO;IACvB,aAAa,EAAE,OAAO;IACtB,cAAc,EAAE,OAAO;CACf,CAAA;AAEV,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,OAAO,CAAC,gCAAgC,EAAE,MAAM,EAAE;QACtD,UAAU,CAAC,eAAe,CAAC;QAC3B,UAAU,CAAC,mBAAmB,CAAC;QAC/B,UAAU,CAAC,gBAAgB,CAAC;KAC7B,CAAC;IACF,QAAQ,EAAE,OAAO,CAAC,gCAAgC,EAAE,IAAI,EAAE;QACxD,UAAU,CAAC,eAAe,CAAC;QAC3B,UAAU,CAAC,WAAW,CAAC;QACvB,UAAU,CAAC,gBAAgB,CAAC;QAC5B,UAAU,CAAC,cAAc,CAAC;QAC1B,UAAU,CAAC,gBAAgB,CAAC;QAC5B,UAAU,CAAC,eAAe,CAAC;QAC3B,UAAU,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,0BAA0B,CAAC,CAAC;KACxE,CAAC;IACF,SAAS,EAAE,OAAO,CAAC,gCAAgC,EAAE,KAAK,EAAE;QAC1D,UAAU,CAAC,eAAe,CAAC;QAC3B,UAAU,CAAC,WAAW,CAAC;QACvB,UAAU,CAAC,cAAc,CAAC;QAC1B,UAAU,CAAC,gBAAgB,CAAC;QAC5B,UAAU,CAAC,cAAc,CAAC;KAC3B,CAAC;CACH,CAAC,CAAA;AAEF,SAAS,OAAO,CACd,mBAA2B,EAC3B,MAAc,EACd,YAA+C;IAE/C,OAAO,uBAAuB,CAAC,KAAK,CAAC;QACnC,mBAAmB;QACnB,MAAM;QACN,cAAc,EAAE,OAAO;QACvB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,OAAO;QACvB,QAAQ,EAAE,cAAc;QACxB,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,QAAQ;QACnB,YAAY;QACZ,aAAa,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,EAAE,EAAE;KACrE,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,UAAU,CACjB,IAAuD,EACvD,UAAgE,WAAW,EAC3E,WAA+B;IAE/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,EAAE,CAAA;AACnG,CAAC"}
@@ -0,0 +1,182 @@
1
+ import { z } from 'zod';
2
+ import { type RuntimeAvailabilityState, type RuntimeConnection } from './models.js';
3
+ import { RuntimeConnectionRegistry } from './registry.js';
4
+ export declare const RuntimeNodeHealthStatusSchema: z.ZodEnum<{
5
+ unknown: "unknown";
6
+ revoked: "revoked";
7
+ online: "online";
8
+ offline: "offline";
9
+ }>;
10
+ export declare const RuntimeReportedStateSchema: z.ZodEnum<{
11
+ degraded: "degraded";
12
+ unknown: "unknown";
13
+ healthy: "healthy";
14
+ offline: "offline";
15
+ reconnecting: "reconnecting";
16
+ }>;
17
+ export declare const RuntimeHealthReportSchema: z.ZodObject<{
18
+ runtimeConnectionId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"runtime-connection ID">, string>>;
19
+ reportSequence: z.ZodNumber;
20
+ observedAt: z.ZodISODateTime;
21
+ discoveredAt: z.ZodISODateTime;
22
+ nodeStatus: z.ZodEnum<{
23
+ unknown: "unknown";
24
+ revoked: "revoked";
25
+ online: "online";
26
+ offline: "offline";
27
+ }>;
28
+ runtimeState: z.ZodEnum<{
29
+ degraded: "degraded";
30
+ unknown: "unknown";
31
+ healthy: "healthy";
32
+ offline: "offline";
33
+ reconnecting: "reconnecting";
34
+ }>;
35
+ versions: z.ZodObject<{
36
+ adapter: z.ZodString;
37
+ driver: z.ZodString;
38
+ harness: z.ZodString;
39
+ protocol: z.ZodString;
40
+ }, z.core.$strict>;
41
+ capabilitySnapshot: z.ZodObject<{
42
+ version: z.ZodNumber;
43
+ observedAt: z.ZodISODateTime;
44
+ ttlMs: z.ZodNumber;
45
+ verification: z.ZodEnum<{
46
+ verified: "verified";
47
+ unverified: "unverified";
48
+ }>;
49
+ source: z.ZodEnum<{
50
+ adapter_driver_negotiation: "adapter_driver_negotiation";
51
+ runtime_declaration: "runtime_declaration";
52
+ }>;
53
+ capabilities: z.ZodArray<z.ZodObject<{
54
+ name: z.ZodEnum<{
55
+ "stream.output": "stream.output";
56
+ "stream.events": "stream.events";
57
+ "tool.call": "tool.call";
58
+ "tool.parallel": "tool.parallel";
59
+ "output.structured": "output.structured";
60
+ "filesystem.read": "filesystem.read";
61
+ "filesystem.write": "filesystem.write";
62
+ "project.read": "project.read";
63
+ "project.write": "project.write";
64
+ "execution.cancel": "execution.cancel";
65
+ "interaction.user-input": "interaction.user-input";
66
+ "interaction.approval": "interaction.approval";
67
+ "session.create": "session.create";
68
+ "session.list": "session.list";
69
+ "session.resume": "session.resume";
70
+ "session.close": "session.close";
71
+ "session.history": "session.history";
72
+ "session.load": "session.load";
73
+ "model.select": "model.select";
74
+ "execution.child": "execution.child";
75
+ }>;
76
+ support: z.ZodEnum<{
77
+ supported: "supported";
78
+ degraded: "degraded";
79
+ unsupported: "unsupported";
80
+ }>;
81
+ limitations: z.ZodOptional<z.ZodArray<z.ZodString>>;
82
+ }, z.core.$strip>>;
83
+ }, z.core.$strict>;
84
+ limitations: z.ZodArray<z.ZodString>;
85
+ diagnostics: z.ZodArray<z.ZodString>;
86
+ }, z.core.$strict>;
87
+ export declare const RuntimeAvailabilityAssessmentSchema: z.ZodObject<{
88
+ nodeStatus: z.ZodEnum<{
89
+ unknown: "unknown";
90
+ revoked: "revoked";
91
+ online: "online";
92
+ offline: "offline";
93
+ }>;
94
+ availabilityState: z.ZodEnum<{
95
+ degraded: "degraded";
96
+ unknown: "unknown";
97
+ healthy: "healthy";
98
+ revoked: "revoked";
99
+ incompatible: "incompatible";
100
+ offline: "offline";
101
+ reconnecting: "reconnecting";
102
+ stale: "stale";
103
+ }>;
104
+ executable: z.ZodBoolean;
105
+ capabilitySnapshotExpiresAt: z.ZodOptional<z.ZodISODateTime>;
106
+ diagnostics: z.ZodArray<z.ZodString>;
107
+ }, z.core.$strict>;
108
+ export declare const RuntimeAvailabilityChangeSchema: z.ZodObject<{
109
+ type: z.ZodLiteral<"runtime.availability_changed">;
110
+ runtimeConnectionId: z.ZodPipe<z.ZodString, z.ZodTransform<import("@control-plane/contracts").OpaqueIdentifier<"runtime-connection ID">, string>>;
111
+ nodeStatus: z.ZodEnum<{
112
+ unknown: "unknown";
113
+ revoked: "revoked";
114
+ online: "online";
115
+ offline: "offline";
116
+ }>;
117
+ previousState: z.ZodEnum<{
118
+ degraded: "degraded";
119
+ unknown: "unknown";
120
+ healthy: "healthy";
121
+ revoked: "revoked";
122
+ incompatible: "incompatible";
123
+ offline: "offline";
124
+ reconnecting: "reconnecting";
125
+ stale: "stale";
126
+ }>;
127
+ currentState: z.ZodEnum<{
128
+ degraded: "degraded";
129
+ unknown: "unknown";
130
+ healthy: "healthy";
131
+ revoked: "revoked";
132
+ incompatible: "incompatible";
133
+ offline: "offline";
134
+ reconnecting: "reconnecting";
135
+ stale: "stale";
136
+ }>;
137
+ occurredAt: z.ZodISODateTime;
138
+ diagnostics: z.ZodArray<z.ZodString>;
139
+ }, z.core.$strict>;
140
+ export type RuntimeHealthReport = z.output<typeof RuntimeHealthReportSchema>;
141
+ export type RuntimeAvailabilityAssessment = z.output<typeof RuntimeAvailabilityAssessmentSchema>;
142
+ export type RuntimeAvailabilityChange = z.output<typeof RuntimeAvailabilityChangeSchema>;
143
+ export interface RuntimeAvailabilityChangePublisher {
144
+ publish(change: RuntimeAvailabilityChange): Promise<void>;
145
+ }
146
+ export declare class RecordingRuntimeAvailabilityChangePublisher implements RuntimeAvailabilityChangePublisher {
147
+ readonly events: RuntimeAvailabilityChange[];
148
+ publish(changeInput: RuntimeAvailabilityChange): Promise<void>;
149
+ }
150
+ export interface RuntimeHealthIngestionPolicy {
151
+ readonly adapterMajor: number;
152
+ readonly driverMajor: number;
153
+ readonly harnessMajor: number;
154
+ readonly protocolMajor: number;
155
+ readonly healthTtlMs: number;
156
+ readonly maximumCapabilityTtlMs: number;
157
+ }
158
+ export interface RuntimeHealthIngestionOptions {
159
+ readonly registry: RuntimeConnectionRegistry;
160
+ readonly changes: RuntimeAvailabilityChangePublisher;
161
+ readonly policy: RuntimeHealthIngestionPolicy;
162
+ }
163
+ export type RuntimeHealthIngestionIgnoreReason = 'replayed_report' | 'stale_report' | 'no_health_report' | 'already_current';
164
+ export interface RuntimeHealthIngestionResult {
165
+ readonly applied: boolean;
166
+ readonly reason?: RuntimeHealthIngestionIgnoreReason;
167
+ readonly connection: RuntimeConnection;
168
+ readonly assessment: RuntimeAvailabilityAssessment;
169
+ }
170
+ export type RuntimeHealthIngestionErrorCode = 'HEALTH_REPORT_CONFLICT' | 'CAPABILITY_SNAPSHOT_CONFLICT' | 'CONNECTION_MISSING' | 'INGESTION_CONCURRENCY_EXHAUSTED';
171
+ export declare class RuntimeHealthIngestionError extends Error {
172
+ readonly code: RuntimeHealthIngestionErrorCode;
173
+ constructor(code: RuntimeHealthIngestionErrorCode);
174
+ }
175
+ export declare class RuntimeHealthIngestionService {
176
+ #private;
177
+ constructor(options: RuntimeHealthIngestionOptions);
178
+ ingest(reportInput: unknown, evaluatedAtInput: string, attempt?: number): Promise<RuntimeHealthIngestionResult>;
179
+ refresh(input: unknown): Promise<RuntimeHealthIngestionResult>;
180
+ }
181
+ export declare function runtimeAvailabilityIsExecutable(state: RuntimeAvailabilityState): boolean;
182
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAML,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,yBAAyB,EAG1B,MAAM,eAAe,CAAA;AAiBtB,eAAO,MAAM,6BAA6B;;;;;EAAsD,CAAA;AAChG,eAAO,MAAM,0BAA0B;;;;;;EAMrC,CAAA;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA2CnC,CAAA;AAEH,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;;;;;;kBAQrC,CAAA;AAEX,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAUjC,CAAA;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAC5E,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mCAAmC,CAAC,CAAA;AAChG,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,+BAA+B,CAAC,CAAA;AAExF,MAAM,WAAW,kCAAkC;IACjD,OAAO,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1D;AAED,qBAAa,2CAA4C,YAAW,kCAAkC;IACpG,QAAQ,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAK;IAE3C,OAAO,CAAC,WAAW,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrE;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;CACxC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAA;IAC5C,QAAQ,CAAC,OAAO,EAAE,kCAAkC,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;CAC9C;AAED,MAAM,MAAM,kCAAkC,GAC1C,iBAAiB,GACjB,cAAc,GACd,kBAAkB,GAClB,iBAAiB,CAAA;AAErB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,kCAAkC,CAAA;IACpD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;IACtC,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAA;CACnD;AAED,MAAM,MAAM,+BAA+B,GACvC,wBAAwB,GACxB,8BAA8B,GAC9B,oBAAoB,GACpB,iCAAiC,CAAA;AAErC,qBAAa,2BAA4B,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,+BAA+B;gBAArC,IAAI,EAAE,+BAA+B;CAI3D;AAED,qBAAa,6BAA6B;;gBAK5B,OAAO,EAAE,6BAA6B;IAM5C,MAAM,CACV,WAAW,EAAE,OAAO,EACpB,gBAAgB,EAAE,MAAM,EACxB,OAAO,SAAI,GACV,OAAO,CAAC,4BAA4B,CAAC;IA4ElC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAkErE;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAExF"}