kadi-harness-runtime 0.1.8

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 (86) hide show
  1. package/README.md +20 -0
  2. package/dist/adapter-loader.d.ts +35 -0
  3. package/dist/adapter-loader.d.ts.map +1 -0
  4. package/dist/adapter-loader.js +109 -0
  5. package/dist/adapter-loader.js.map +1 -0
  6. package/dist/event-bus.d.ts +55 -0
  7. package/dist/event-bus.d.ts.map +1 -0
  8. package/dist/event-bus.js +170 -0
  9. package/dist/event-bus.js.map +1 -0
  10. package/dist/event-normalizer.d.ts +41 -0
  11. package/dist/event-normalizer.d.ts.map +1 -0
  12. package/dist/event-normalizer.js +68 -0
  13. package/dist/event-normalizer.js.map +1 -0
  14. package/dist/gateways/artifacts.d.ts +24 -0
  15. package/dist/gateways/artifacts.d.ts.map +1 -0
  16. package/dist/gateways/artifacts.js +128 -0
  17. package/dist/gateways/artifacts.js.map +1 -0
  18. package/dist/gateways/authorization.d.ts +38 -0
  19. package/dist/gateways/authorization.d.ts.map +1 -0
  20. package/dist/gateways/authorization.js +118 -0
  21. package/dist/gateways/authorization.js.map +1 -0
  22. package/dist/gateways/events.d.ts +31 -0
  23. package/dist/gateways/events.d.ts.map +1 -0
  24. package/dist/gateways/events.js +135 -0
  25. package/dist/gateways/events.js.map +1 -0
  26. package/dist/gateways/redaction.d.ts +2 -0
  27. package/dist/gateways/redaction.d.ts.map +1 -0
  28. package/dist/gateways/redaction.js +2 -0
  29. package/dist/gateways/redaction.js.map +1 -0
  30. package/dist/gateways/sessions.d.ts +27 -0
  31. package/dist/gateways/sessions.d.ts.map +1 -0
  32. package/dist/gateways/sessions.js +167 -0
  33. package/dist/gateways/sessions.js.map +1 -0
  34. package/dist/gateways/tools.d.ts +36 -0
  35. package/dist/gateways/tools.d.ts.map +1 -0
  36. package/dist/gateways/tools.js +135 -0
  37. package/dist/gateways/tools.js.map +1 -0
  38. package/dist/index.d.ts +82 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +27 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/lifecycle.d.ts +23 -0
  43. package/dist/lifecycle.d.ts.map +1 -0
  44. package/dist/lifecycle.js +63 -0
  45. package/dist/lifecycle.js.map +1 -0
  46. package/dist/policy/redaction.d.ts +10 -0
  47. package/dist/policy/redaction.d.ts.map +1 -0
  48. package/dist/policy/redaction.js +48 -0
  49. package/dist/policy/redaction.js.map +1 -0
  50. package/dist/protocol/context-client.d.ts +50 -0
  51. package/dist/protocol/context-client.d.ts.map +1 -0
  52. package/dist/protocol/context-client.js +49 -0
  53. package/dist/protocol/context-client.js.map +1 -0
  54. package/dist/protocol/context-server.d.ts +19 -0
  55. package/dist/protocol/context-server.d.ts.map +1 -0
  56. package/dist/protocol/context-server.js +103 -0
  57. package/dist/protocol/context-server.js.map +1 -0
  58. package/dist/registry.d.ts +42 -0
  59. package/dist/registry.d.ts.map +1 -0
  60. package/dist/registry.js +210 -0
  61. package/dist/registry.js.map +1 -0
  62. package/dist/run-coordinator.d.ts +47 -0
  63. package/dist/run-coordinator.d.ts.map +1 -0
  64. package/dist/run-coordinator.js +241 -0
  65. package/dist/run-coordinator.js.map +1 -0
  66. package/dist/runner/cli.d.ts +18 -0
  67. package/dist/runner/cli.d.ts.map +1 -0
  68. package/dist/runner/cli.js +54 -0
  69. package/dist/runner/cli.js.map +1 -0
  70. package/dist/runner/runner-service.d.ts +88 -0
  71. package/dist/runner/runner-service.d.ts.map +1 -0
  72. package/dist/runner/runner-service.js +138 -0
  73. package/dist/runner/runner-service.js.map +1 -0
  74. package/dist/runtime.d.ts +96 -0
  75. package/dist/runtime.d.ts.map +1 -0
  76. package/dist/runtime.js +330 -0
  77. package/dist/runtime.js.map +1 -0
  78. package/dist/scheduling/request-store.d.ts +71 -0
  79. package/dist/scheduling/request-store.d.ts.map +1 -0
  80. package/dist/scheduling/request-store.js +173 -0
  81. package/dist/scheduling/request-store.js.map +1 -0
  82. package/dist/scheduling/signing.d.ts +57 -0
  83. package/dist/scheduling/signing.d.ts.map +1 -0
  84. package/dist/scheduling/signing.js +142 -0
  85. package/dist/scheduling/signing.js.map +1 -0
  86. package/package.json +47 -0
@@ -0,0 +1,96 @@
1
+ import { type HarnessAdapter, type HarnessEvent, type HarnessServices, type RunHandle, type RunInput, type RunRequest, type RunResult, type ScheduleCreateRequest, type ScheduleReference, type ScopedSchedulingService, type ServiceCapabilities } from "@kadi.build/kadi-harness-contracts";
2
+ import type { RuntimeClient, RuntimeForkOptions, RuntimeHealth, RuntimeObserveOptions, RuntimeResumeOptions, RuntimeSessionQuery, RuntimeSessionSummary } from "./index.js";
3
+ import { AdapterLoader, type AdapterLoaderOptions, type AdapterPackageSource } from "./adapter-loader.js";
4
+ import { EventBus } from "./event-bus.js";
5
+ import { type AuthorizationPolicy } from "./gateways/authorization.js";
6
+ import { type ArtifactBackend } from "./gateways/artifacts.js";
7
+ import { type SessionStateBackend } from "./gateways/sessions.js";
8
+ import { type ToolRouterBackend } from "./gateways/tools.js";
9
+ import { AdapterRegistry } from "./registry.js";
10
+ import { RunCoordinator, type RunContextFactory, type RunCoordinatorOptions, type RunEventHandler, type RunStatusHandler } from "./run-coordinator.js";
11
+ import { ScheduleGateway } from "./runner/runner-service.js";
12
+ export interface RuntimeServiceFactoryInput {
13
+ readonly request: RunRequest;
14
+ readonly handle: RunHandle;
15
+ readonly correlationId: string;
16
+ readonly adapter: HarnessAdapter["identity"];
17
+ readonly signal: AbortSignal;
18
+ }
19
+ export type RuntimeServicesFactory = (input: RuntimeServiceFactoryInput) => HarnessServices | Promise<HarnessServices>;
20
+ export interface RuntimeServiceBackends {
21
+ readonly tools?: ToolRouterBackend;
22
+ readonly sessions?: SessionStateBackend;
23
+ readonly artifacts?: ArtifactBackend;
24
+ readonly scheduling?: ScopedSchedulingService;
25
+ readonly authorizationPolicy?: AuthorizationPolicy;
26
+ }
27
+ export interface KadiRuntimeOptions {
28
+ readonly contractVersion?: string;
29
+ readonly registry?: AdapterRegistry;
30
+ readonly adapters?: readonly HarnessAdapter[];
31
+ readonly adapterPackages?: readonly (string | AdapterPackageSource)[];
32
+ readonly adapterLoader?: AdapterLoader;
33
+ readonly adapterLoaderOptions?: Omit<AdapterLoaderOptions, "packages">;
34
+ readonly eventBus?: EventBus;
35
+ readonly services?: RuntimeServiceBackends;
36
+ readonly servicesFactory?: RuntimeServicesFactory;
37
+ readonly contextFactory?: RunContextFactory;
38
+ readonly coordinator?: RunCoordinator;
39
+ readonly coordinatorOptions?: Omit<RunCoordinatorOptions, "registry" | "contextFactory" | "onEvent" | "onStatus">;
40
+ readonly scheduleGateway?: Pick<ScheduleGateway, "schedule" | "unschedule">;
41
+ readonly steer?: (runId: string, input: RunInput) => Promise<void>;
42
+ readonly onEvent?: RunEventHandler;
43
+ readonly onStatus?: RunStatusHandler;
44
+ }
45
+ /** Composes scoped KADI service gateways for each adapter run. */
46
+ export declare class RuntimeServiceFacade {
47
+ private readonly backends;
48
+ private readonly eventBus;
49
+ private readonly contractVersion;
50
+ constructor(options: RuntimeServiceBackends & {
51
+ readonly eventBus: EventBus;
52
+ readonly contractVersion: string;
53
+ });
54
+ get capabilities(): ServiceCapabilities;
55
+ create(input: RuntimeServiceFactoryInput): Promise<HarnessServices>;
56
+ }
57
+ /** Concrete frontend-neutral KADI runtime assembled from explicit dependencies. */
58
+ export declare class KadiRuntime implements RuntimeClient {
59
+ private readonly coordinator;
60
+ private readonly registry;
61
+ private readonly eventBus;
62
+ private readonly facade;
63
+ private readonly scheduleGateway;
64
+ private readonly steerHandler;
65
+ private readonly contractVersion;
66
+ private readonly requests;
67
+ private readonly summaries;
68
+ private readonly events;
69
+ constructor(options: {
70
+ readonly registry: AdapterRegistry;
71
+ readonly eventBus: EventBus;
72
+ readonly coordinator: RunCoordinator;
73
+ readonly facade?: RuntimeServiceFacade;
74
+ readonly contractVersion: string;
75
+ readonly scheduleGateway?: Pick<ScheduleGateway, "schedule" | "unschedule">;
76
+ readonly steer?: KadiRuntimeOptions["steer"];
77
+ });
78
+ execute(request: RunRequest): Promise<RunHandle>;
79
+ observe(runId: string, options?: RuntimeObserveOptions): AsyncIterable<HarnessEvent>;
80
+ getRun(runId: string): Promise<RunHandle | RunResult>;
81
+ cancel(runId: string, request?: Parameters<RunCoordinator["cancel"]>[1]): Promise<void>;
82
+ steer(runId: string, input: RunInput): Promise<void>;
83
+ resume(sessionId: string, options?: RuntimeResumeOptions): Promise<RunHandle>;
84
+ fork(runId: string, options?: RuntimeForkOptions): Promise<RunHandle>;
85
+ listSessions(query?: RuntimeSessionQuery): Promise<readonly RuntimeSessionSummary[]>;
86
+ getSessionTimeline(sessionId: string, _options?: RuntimeObserveOptions): AsyncIterable<HarnessEvent>;
87
+ schedule(request: ScheduleCreateRequest): Promise<ScheduleReference>;
88
+ unschedule(scheduleId: string): Promise<void>;
89
+ listAdapters(): Promise<readonly HarnessAdapter["identity"][]>;
90
+ health(): Promise<RuntimeHealth>;
91
+ waitForResult(runId: string): Promise<RunResult>;
92
+ recordEvent(event: HarnessEvent): void;
93
+ recordStatus(handle: RunHandle): void;
94
+ }
95
+ export declare function createKadiRuntime(options?: KadiRuntimeOptions): Promise<KadiRuntime>;
96
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,330 @@
1
+ import { CONTRACT_VERSION, } from "@kadi.build/kadi-harness-contracts";
2
+ import { AdapterLoader } from "./adapter-loader.js";
3
+ import { EventBus } from "./event-bus.js";
4
+ import { createAuthorizationGateway } from "./gateways/authorization.js";
5
+ import { createArtifactGateway } from "./gateways/artifacts.js";
6
+ import { createEventGateway } from "./gateways/events.js";
7
+ import { createSessionGateway } from "./gateways/sessions.js";
8
+ import { createToolGateway } from "./gateways/tools.js";
9
+ import { AdapterRegistry } from "./registry.js";
10
+ import { RunCoordinator } from "./run-coordinator.js";
11
+ function error(code, category, message, details) {
12
+ const value = { code, category, message, retryable: false, ...(details === undefined ? {} : { details }) };
13
+ return Object.assign(new Error(message), { error: value });
14
+ }
15
+ function unsupported(operation) {
16
+ return {
17
+ ok: false,
18
+ error: {
19
+ code: "service_unavailable",
20
+ category: "service_failure",
21
+ message: `${operation} is not configured for this runtime`,
22
+ retryable: false,
23
+ },
24
+ };
25
+ }
26
+ class MemorySessionBackend {
27
+ snapshots = new Map();
28
+ timeline = new Map();
29
+ save(_scope, snapshot) {
30
+ this.snapshots.set(snapshot.sessionId, snapshot);
31
+ }
32
+ load(_scope, sessionId) {
33
+ return this.snapshots.get(sessionId);
34
+ }
35
+ appendTimeline(scope, entry) {
36
+ const entries = this.timeline.get(scope.sessionId) ?? [];
37
+ entries.push(entry);
38
+ this.timeline.set(scope.sessionId, entries);
39
+ }
40
+ }
41
+ class MemoryArtifactBackend {
42
+ values = new Map();
43
+ sequence = 0;
44
+ put(scope, request) {
45
+ const id = `artifact-${scope.runId}-${++this.sequence}`;
46
+ const reference = {
47
+ id,
48
+ kind: request.kind,
49
+ ...(request.name === undefined ? {} : { name: request.name }),
50
+ createdAt: new Date().toISOString(),
51
+ };
52
+ const value = { reference, ...(request.content === undefined ? {} : { content: request.content }) };
53
+ this.values.set(id, value);
54
+ return value;
55
+ }
56
+ get(_scope, reference) {
57
+ return this.values.get(reference.id);
58
+ }
59
+ list(_scope) {
60
+ return [...this.values.values()].map((value) => value.reference);
61
+ }
62
+ }
63
+ const EMPTY_TOOLS = {
64
+ getAvailableTools: () => [],
65
+ route: async () => ({
66
+ code: "tools_unavailable",
67
+ category: "service_failure",
68
+ message: "No tool router is configured for this runtime",
69
+ retryable: false,
70
+ }),
71
+ };
72
+ const EMPTY_SCHEDULING = {
73
+ create: async () => unsupported("scheduling.create"),
74
+ get: async () => unsupported("scheduling.get"),
75
+ cancel: async () => unsupported("scheduling.cancel"),
76
+ };
77
+ function capabilities(services) {
78
+ return {
79
+ tools: { available: services.tools !== undefined, operations: ["list", "invoke"], scopes: ["run"] },
80
+ events: { available: true, operations: ["publish", "subscribe"], scopes: ["run"] },
81
+ authorization: { available: true, operations: ["check"], scopes: ["run"] },
82
+ sessions: { available: services.sessions !== undefined, operations: ["load", "save", "appendTimeline"], scopes: ["session"] },
83
+ artifacts: { available: services.artifacts !== undefined, operations: ["put", "get", "list"], scopes: ["run"] },
84
+ scheduling: { available: services.scheduling !== undefined, operations: ["create", "get", "cancel"], scopes: ["session"] },
85
+ };
86
+ }
87
+ /** Composes scoped KADI service gateways for each adapter run. */
88
+ export class RuntimeServiceFacade {
89
+ backends;
90
+ eventBus;
91
+ contractVersion;
92
+ constructor(options) {
93
+ this.backends = {
94
+ ...options,
95
+ tools: options.tools ?? EMPTY_TOOLS,
96
+ sessions: options.sessions ?? new MemorySessionBackend(),
97
+ artifacts: options.artifacts ?? new MemoryArtifactBackend(),
98
+ };
99
+ this.eventBus = options.eventBus;
100
+ this.contractVersion = options.contractVersion;
101
+ }
102
+ get capabilities() {
103
+ return capabilities(this.backends);
104
+ }
105
+ async create(input) {
106
+ const scope = {
107
+ adapterId: input.adapter.id,
108
+ contractVersion: this.contractVersion,
109
+ correlationId: input.correlationId,
110
+ runId: input.handle.runId,
111
+ sessionId: input.handle.sessionId,
112
+ signal: input.signal,
113
+ };
114
+ const authorization = createAuthorizationGateway({
115
+ scope,
116
+ principal: input.request.principal,
117
+ policy: this.backends.authorizationPolicy,
118
+ });
119
+ const authorize = async (request) => {
120
+ const result = await authorization.check({
121
+ action: request.operation,
122
+ ...(request.toolName === undefined ? {} : { resource: request.toolName }),
123
+ ...(request.eventType === undefined ? {} : { metadata: { eventType: request.eventType } }),
124
+ });
125
+ if (!result.ok)
126
+ return result;
127
+ if (result.value.allowed)
128
+ return true;
129
+ return {
130
+ ok: false,
131
+ error: {
132
+ code: "authorization_denied",
133
+ category: "authorization",
134
+ message: result.value.reason ?? `Authorization denied for ${request.operation}`,
135
+ retryable: false,
136
+ correlationId: input.correlationId,
137
+ },
138
+ };
139
+ };
140
+ const eventBackend = {
141
+ publish: (event) => this.eventBus.publish(event),
142
+ subscribe: (runId, options) => this.eventBus.subscribe(runId, options),
143
+ };
144
+ const tools = createToolGateway({ scope, router: this.backends.tools ?? EMPTY_TOOLS, authorize });
145
+ const events = createEventGateway({ scope, backend: eventBackend, authorize });
146
+ const sessions = createSessionGateway({ scope, backend: this.backends.sessions, authorize });
147
+ const artifacts = createArtifactGateway({ scope, backend: this.backends.artifacts, authorize });
148
+ return {
149
+ capabilities: this.capabilities,
150
+ tools,
151
+ events,
152
+ authorization,
153
+ sessions,
154
+ artifacts,
155
+ scheduling: this.backends.scheduling ?? EMPTY_SCHEDULING,
156
+ };
157
+ }
158
+ }
159
+ /** Concrete frontend-neutral KADI runtime assembled from explicit dependencies. */
160
+ export class KadiRuntime {
161
+ coordinator;
162
+ registry;
163
+ eventBus;
164
+ facade;
165
+ scheduleGateway;
166
+ steerHandler;
167
+ contractVersion;
168
+ requests = new Map();
169
+ summaries = new Map();
170
+ events = new Map();
171
+ constructor(options) {
172
+ this.registry = options.registry;
173
+ this.eventBus = options.eventBus;
174
+ this.coordinator = options.coordinator;
175
+ this.facade = options.facade;
176
+ this.contractVersion = options.contractVersion;
177
+ this.scheduleGateway = options.scheduleGateway;
178
+ this.steerHandler = options.steer;
179
+ }
180
+ async execute(request) {
181
+ const handle = await this.coordinator.execute(request);
182
+ this.requests.set(handle.runId, request);
183
+ this.summaries.set(handle.sessionId, { sessionId: handle.sessionId, latestRunId: handle.runId, status: handle.status, metadata: request.input.metadata });
184
+ return handle;
185
+ }
186
+ observe(runId, options = {}) {
187
+ return this.eventBus.observe(runId, options);
188
+ }
189
+ getRun(runId) {
190
+ return this.coordinator.getRun(runId);
191
+ }
192
+ cancel(runId, request) {
193
+ return this.coordinator.cancel(runId, request);
194
+ }
195
+ async steer(runId, input) {
196
+ if (!this.steerHandler)
197
+ throw error("steering_unavailable", "unsupported_capability", `Steering is not configured for run '${runId}'`);
198
+ await this.steerHandler(runId, input);
199
+ }
200
+ async resume(sessionId, options = {}) {
201
+ const runId = options.runId ?? this.summaries.get(sessionId)?.latestRunId;
202
+ const previous = runId === undefined ? undefined : this.requests.get(runId);
203
+ if (!previous)
204
+ throw error("session_not_found", "validation", `No resumable run was found for session '${sessionId}'`);
205
+ return this.execute({
206
+ ...previous,
207
+ session: { id: sessionId, mode: "resume" },
208
+ input: { ...previous.input, ...(options.metadata === undefined ? {} : { metadata: options.metadata }) },
209
+ });
210
+ }
211
+ async fork(runId, options = {}) {
212
+ const previous = this.requests.get(runId);
213
+ if (!previous)
214
+ throw error("run_not_found", "validation", `Run '${runId}' is not available for forking`);
215
+ return this.execute({
216
+ ...previous,
217
+ session: { mode: "fork", parentRunId: runId },
218
+ input: options.input ?? previous.input,
219
+ });
220
+ }
221
+ async listSessions(query = {}) {
222
+ const limit = query.limit ?? 100;
223
+ return [...this.summaries.values()].sort((left, right) => left.sessionId.localeCompare(right.sessionId)).slice(0, limit);
224
+ }
225
+ getSessionTimeline(sessionId, _options = {}) {
226
+ const events = [...(this.events.get(sessionId) ?? [])];
227
+ return (async function* timeline() {
228
+ for (const event of events)
229
+ yield event;
230
+ })();
231
+ }
232
+ async schedule(request) {
233
+ if (!this.scheduleGateway)
234
+ throw error("scheduling_unavailable", "service_failure", "Scheduling is not configured for this runtime");
235
+ return this.scheduleGateway.schedule(request);
236
+ }
237
+ async unschedule(scheduleId) {
238
+ if (!this.scheduleGateway)
239
+ throw error("scheduling_unavailable", "service_failure", "Scheduling is not configured for this runtime");
240
+ await this.scheduleGateway.unschedule(scheduleId);
241
+ }
242
+ async listAdapters() {
243
+ return this.registry.list().map((descriptor) => descriptor.identity);
244
+ }
245
+ async health() {
246
+ const descriptors = this.registry.list();
247
+ const unavailable = descriptors.filter((descriptor) => descriptor.status !== "available").length;
248
+ const serviceCapabilities = this.facade?.capabilities ?? {
249
+ tools: { available: false, operations: [], scopes: [] },
250
+ events: { available: true, operations: ["publish", "subscribe"], scopes: ["run"] },
251
+ authorization: { available: true, operations: ["check"], scopes: ["run"] },
252
+ sessions: { available: false, operations: [], scopes: [] },
253
+ artifacts: { available: false, operations: [], scopes: [] },
254
+ scheduling: { available: false, operations: [], scopes: [] },
255
+ };
256
+ return {
257
+ status: descriptors.length === 0 ? "unavailable" : unavailable === 0 ? "healthy" : "degraded",
258
+ contractVersion: this.contractVersion,
259
+ adapterCount: descriptors.filter((descriptor) => descriptor.status === "available").length,
260
+ services: serviceCapabilities,
261
+ details: { unavailableAdapters: unavailable },
262
+ };
263
+ }
264
+ waitForResult(runId) {
265
+ return this.coordinator.waitForResult(runId);
266
+ }
267
+ recordEvent(event) {
268
+ const entries = this.events.get(event.sessionId) ?? [];
269
+ entries.push(event);
270
+ this.events.set(event.sessionId, entries);
271
+ }
272
+ recordStatus(handle) {
273
+ const existing = this.summaries.get(handle.sessionId);
274
+ this.summaries.set(handle.sessionId, {
275
+ sessionId: handle.sessionId,
276
+ latestRunId: handle.runId,
277
+ status: handle.status,
278
+ ...(existing?.metadata === undefined ? {} : { metadata: existing.metadata }),
279
+ });
280
+ }
281
+ }
282
+ export async function createKadiRuntime(options = {}) {
283
+ const contractVersion = options.contractVersion ?? CONTRACT_VERSION;
284
+ const registry = options.registry ?? new AdapterRegistry({ contractVersion });
285
+ for (const adapter of options.adapters ?? [])
286
+ registry.register(adapter, "explicit");
287
+ if (options.adapterPackages && options.adapterPackages.length > 0) {
288
+ const loader = options.adapterLoader ?? new AdapterLoader({ packages: options.adapterPackages, ...options.adapterLoaderOptions });
289
+ await registry.discover(loader);
290
+ }
291
+ const eventBus = options.eventBus ?? new EventBus({ contractVersion });
292
+ const services = options.services ?? {};
293
+ const facade = options.servicesFactory ? undefined : new RuntimeServiceFacade({ ...services, eventBus, contractVersion });
294
+ const contextFactory = options.contextFactory ?? (async (input) => {
295
+ const serviceSet = options.servicesFactory
296
+ ? await options.servicesFactory(input)
297
+ : await facade.create(input);
298
+ const context = {
299
+ contractVersion,
300
+ correlationId: input.correlationId,
301
+ principal: input.request.principal,
302
+ sessionId: input.handle.sessionId,
303
+ runId: input.handle.runId,
304
+ ...(input.request.workspace === undefined ? {} : { workspace: input.request.workspace }),
305
+ signal: input.signal,
306
+ ...serviceSet,
307
+ };
308
+ return context;
309
+ });
310
+ let runtime;
311
+ const onEvent = async (event, handle) => {
312
+ runtime.recordEvent(event);
313
+ await eventBus.publish(event);
314
+ await options.onEvent?.(event, handle);
315
+ };
316
+ const onStatus = async (handle) => {
317
+ runtime.recordStatus(handle);
318
+ await options.onStatus?.(handle);
319
+ };
320
+ const coordinator = options.coordinator ?? new RunCoordinator({
321
+ ...options.coordinatorOptions,
322
+ registry,
323
+ contextFactory,
324
+ onEvent,
325
+ onStatus,
326
+ });
327
+ runtime = new KadiRuntime({ registry, eventBus, coordinator, facade, contractVersion, scheduleGateway: options.scheduleGateway, steer: options.steer });
328
+ return runtime;
329
+ }
330
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { type RunRequest, type ScheduleTrigger } from "@kadi.build/kadi-harness-contracts";
2
+ /** Maximum size of the serialized request kept in the request store. */
3
+ export declare const MAX_REQUEST_PAYLOAD_BYTES: number;
4
+ export interface ScheduledRunSpec {
5
+ readonly scheduleId?: string;
6
+ readonly trigger: ScheduleTrigger;
7
+ readonly run: RunRequest;
8
+ readonly idempotencyPrefix: string;
9
+ readonly retry?: {
10
+ readonly count: number;
11
+ readonly delay?: string;
12
+ };
13
+ readonly concurrency?: "skip" | "queue" | "allow";
14
+ }
15
+ export interface StoredScheduledRequest {
16
+ readonly requestRef: string;
17
+ readonly canonicalPayload: string;
18
+ readonly payloadDigest: string;
19
+ readonly spec: ScheduledRunSpec;
20
+ readonly createdAt: string;
21
+ }
22
+ export interface RequestStorePutOptions {
23
+ readonly requestRef?: string;
24
+ readonly createdAt?: Date;
25
+ }
26
+ export interface ScheduledRequestStore {
27
+ put(spec: ScheduledRunSpec, options?: RequestStorePutOptions): Promise<StoredScheduledRequest>;
28
+ get(requestRef: string): Promise<StoredScheduledRequest | undefined>;
29
+ }
30
+ export declare class ScheduledRequestStoreError extends Error {
31
+ readonly code: "invalid_request" | "request_too_large" | "sensitive_data";
32
+ constructor(code: "invalid_request" | "request_too_large" | "sensitive_data", message: string);
33
+ }
34
+ /**
35
+ * Serialize JSON with recursively sorted object keys. This produces the same
36
+ * bytes across processes and languages for the same scheduled request.
37
+ */
38
+ export declare function canonicalizeJson(value: unknown): string;
39
+ export declare function sha256Digest(canonicalPayload: string): string;
40
+ /** In-memory reference store used by tests and embedders that provide a durable wrapper. */
41
+ export declare class InMemoryScheduledRequestStore implements ScheduledRequestStore {
42
+ private readonly records;
43
+ private readonly refFactory;
44
+ private readonly clock;
45
+ constructor(options?: {
46
+ readonly refFactory?: () => string;
47
+ readonly clock?: () => Date;
48
+ });
49
+ put(spec: ScheduledRunSpec, options?: RequestStorePutOptions): Promise<StoredScheduledRequest>;
50
+ get(requestRef: string): Promise<StoredScheduledRequest | undefined>;
51
+ }
52
+ export interface FileScheduledRequestStoreOptions {
53
+ readonly directory: string;
54
+ readonly refFactory?: () => string;
55
+ readonly clock?: () => Date;
56
+ }
57
+ /**
58
+ * Small durable request store for a runner host. Deployments can replace this
59
+ * with an encrypted KADI artifact/database implementation without changing
60
+ * signing or verification.
61
+ */
62
+ export declare class FileScheduledRequestStore implements ScheduledRequestStore {
63
+ private readonly directory;
64
+ private readonly refFactory;
65
+ private readonly clock;
66
+ constructor(options: FileScheduledRequestStoreOptions);
67
+ put(spec: ScheduledRunSpec, options?: RequestStorePutOptions): Promise<StoredScheduledRequest>;
68
+ get(requestRef: string): Promise<StoredScheduledRequest | undefined>;
69
+ private pathFor;
70
+ }
71
+ //# sourceMappingURL=request-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-store.d.ts","sourceRoot":"","sources":["../../src/scheduling/request-store.ts"],"names":[],"mappings":"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"}