@run402/runtime-kernel 0.1.2 → 0.1.4

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/dist/ports.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { PortableReleaseState } from "@run402/release";
1
+ import type { ContentRefHex, MaterializedRoutes, PortableReleaseState, StaticManifest } from "@run402/release";
2
2
  import type { RuntimeCapabilityDocument } from "./capabilities.js";
3
+ import type { CoreFunctionApplyEffects, CoreFunctionBundleMetadata, CoreFunctionInvocationInput, CoreFunctionInvocationResult, CoreFunctionInvocationRecord, CoreFunctionLogEntry, CoreFunctionSecretMetadata } from "./functions-runtime.js";
3
4
  export interface CoreProject {
4
5
  project_id: string;
5
6
  schema_slot: string;
@@ -9,6 +10,7 @@ export interface CoreProject {
9
10
  endpoints: {
10
11
  rest_url: string;
11
12
  static_base_url: string;
13
+ storage_base_url?: string;
12
14
  };
13
15
  active_release_id: string | null;
14
16
  capabilities: RuntimeCapabilityDocument;
@@ -41,6 +43,8 @@ export interface CoreApplyPlan {
41
43
  base_release_id: string | null;
42
44
  target_release_id: string;
43
45
  target_release_digest: string;
46
+ storage_effects?: CoreStorageApplyEffects;
47
+ function_effects?: CoreFunctionApplyEffects;
44
48
  noop: boolean;
45
49
  status: "planned" | "committed";
46
50
  created_at: string;
@@ -55,6 +59,8 @@ export interface CoreApplyCommitContext {
55
59
  release_id: string;
56
60
  release_digest: string;
57
61
  target_release: PortableReleaseState;
62
+ storage_effects?: CoreStorageApplyEffects;
63
+ function_effects?: CoreFunctionApplyEffects;
58
64
  }
59
65
  export interface CoreApplyDeferredResult {
60
66
  status: "deferred";
@@ -92,6 +98,278 @@ export interface ContentStorePort {
92
98
  bytes: Uint8Array;
93
99
  contentType: string;
94
100
  } | null>;
101
+ putCas?(input: {
102
+ sha256: string;
103
+ bytes: Uint8Array;
104
+ contentType: string;
105
+ }): Promise<void>;
106
+ readCas?(sha256: string): Promise<{
107
+ bytes: Uint8Array;
108
+ contentType: string;
109
+ } | null>;
110
+ putUploadBytes?(input: {
111
+ projectId: string;
112
+ uploadId: string;
113
+ bytes: Uint8Array;
114
+ }): Promise<{
115
+ size_bytes: number;
116
+ }>;
117
+ promoteUpload?(input: {
118
+ projectId: string;
119
+ uploadId: string;
120
+ ref: ContentRefHex;
121
+ }): Promise<{
122
+ sha256: string;
123
+ size_bytes: number;
124
+ content_type: string;
125
+ }>;
126
+ deleteUploadBytes?(input: {
127
+ projectId: string;
128
+ uploadId: string;
129
+ }): Promise<void>;
130
+ }
131
+ export type StorageObjectVisibility = "public" | "private";
132
+ export type UploadSessionStatus = "active" | "uploaded" | "completed" | "aborted";
133
+ export interface CoreStorageObject {
134
+ project_id: string;
135
+ key: string;
136
+ sha256: string;
137
+ size_bytes: number;
138
+ content_type: string;
139
+ visibility: StorageObjectVisibility;
140
+ immutable: boolean;
141
+ created_at: string;
142
+ updated_at: string;
143
+ public_url?: string;
144
+ immutable_url?: string;
145
+ }
146
+ export interface CoreImmutableObjectVersion {
147
+ project_id: string;
148
+ key: string;
149
+ sha256: string;
150
+ version_id: string;
151
+ size_bytes: number;
152
+ content_type: string;
153
+ visibility: StorageObjectVisibility;
154
+ public_url_key: string;
155
+ created_at: string;
156
+ retained_until: string | null;
157
+ public_url?: string;
158
+ }
159
+ export interface CoreUploadSession {
160
+ upload_id: string;
161
+ project_id: string;
162
+ key: string;
163
+ declared_size: number;
164
+ declared_sha256: string;
165
+ content_type: string;
166
+ visibility: StorageObjectVisibility;
167
+ immutable: boolean;
168
+ status: UploadSessionStatus;
169
+ upload_url: string;
170
+ bytes_written: number;
171
+ expires_at: string;
172
+ completed_at: string | null;
173
+ aborted_at: string | null;
174
+ created_at: string;
175
+ }
176
+ export interface CoreStorageObjectList {
177
+ objects: CoreStorageObject[];
178
+ next_cursor: string | null;
179
+ }
180
+ export interface CoreAssetPut {
181
+ key: string;
182
+ sha256: string;
183
+ size_bytes: number;
184
+ content_type: string;
185
+ visibility: StorageObjectVisibility;
186
+ immutable: boolean;
187
+ }
188
+ export interface CoreAssetSyncPrunePlan {
189
+ prefix: string;
190
+ base_revision: string;
191
+ delete_set_digest: string;
192
+ planned_delete_keys: string[];
193
+ }
194
+ export interface CoreStorageApplyEffects {
195
+ puts: CoreAssetPut[];
196
+ deletes: string[];
197
+ sync_prune: CoreAssetSyncPrunePlan | null;
198
+ noop: boolean;
199
+ }
200
+ export interface RouteStaticResponse {
201
+ status: 200;
202
+ sha256: string;
203
+ content_type: string;
204
+ content_length: number;
205
+ etag: string;
206
+ cache_control: string;
207
+ bytes: Uint8Array;
208
+ }
209
+ export interface CoreRouteManifest {
210
+ project_id: string;
211
+ release_id: string | null;
212
+ route_manifest_sha256: string | null;
213
+ static_manifest_sha256: string | null;
214
+ routes: MaterializedRoutes;
215
+ static_manifest: StaticManifest | null;
216
+ }
217
+ export interface CleanupResult {
218
+ removed_uploads: number;
219
+ removed_objects: number;
220
+ removed_versions: number;
221
+ removed_cas_objects: number;
222
+ removed_function_bundles?: number;
223
+ removed_function_logs?: number;
224
+ retained_live_sha256: string[];
225
+ }
226
+ export interface FunctionRuntimePort {
227
+ stageBundles(input: {
228
+ projectId: string;
229
+ releaseId: string;
230
+ bundles: CoreFunctionBundleMetadata[];
231
+ }): Promise<void>;
232
+ activateRelease(input: {
233
+ projectId: string;
234
+ releaseId: string;
235
+ expectedBaseReleaseId: string | null;
236
+ effects: CoreFunctionApplyEffects;
237
+ }): Promise<void>;
238
+ invoke(input: CoreFunctionInvocationInput): Promise<CoreFunctionInvocationResult>;
239
+ listLogs(input: {
240
+ projectId: string;
241
+ functionName?: string;
242
+ requestId?: string;
243
+ since?: string;
244
+ tail?: number;
245
+ }): Promise<CoreFunctionLogEntry[]>;
246
+ listSecrets(input: {
247
+ projectId: string;
248
+ functionName?: string;
249
+ }): Promise<CoreFunctionSecretMetadata[]>;
250
+ cleanup(projectId?: string): Promise<{
251
+ removed_function_bundles: number;
252
+ removed_function_logs: number;
253
+ retained_live_sha256: string[];
254
+ }>;
255
+ }
256
+ export interface FunctionSecretPort {
257
+ setSecret(input: {
258
+ projectId: string;
259
+ name: string;
260
+ value: string;
261
+ scope?: "project" | "release" | "function";
262
+ functionName?: string | null;
263
+ }): Promise<CoreFunctionSecretMetadata>;
264
+ listSecrets(input: {
265
+ projectId: string;
266
+ functionName?: string;
267
+ }): Promise<CoreFunctionSecretMetadata[]>;
268
+ getSecretValues(input: {
269
+ projectId: string;
270
+ functionName: string;
271
+ names: string[];
272
+ }): Promise<Record<string, string>>;
273
+ }
274
+ export interface FunctionLogPort {
275
+ recordInvocation(input: {
276
+ invocation: CoreFunctionInvocationRecord;
277
+ logs: CoreFunctionLogEntry[];
278
+ retention?: {
279
+ maxAgeMs?: number;
280
+ maxBytes?: number;
281
+ };
282
+ }): Promise<void>;
283
+ listLogs(input: {
284
+ projectId: string;
285
+ functionName?: string;
286
+ requestId?: string;
287
+ since?: string;
288
+ tail?: number;
289
+ }): Promise<CoreFunctionLogEntry[]>;
290
+ }
291
+ export interface StoragePort {
292
+ createUploadSession(input: {
293
+ projectId: string;
294
+ key: string;
295
+ sizeBytes: number;
296
+ sha256: string;
297
+ contentType: string;
298
+ visibility: StorageObjectVisibility;
299
+ immutable: boolean;
300
+ ttlSeconds?: number;
301
+ }): Promise<CoreUploadSession>;
302
+ getUploadSession(input: {
303
+ projectId: string;
304
+ uploadId: string;
305
+ }): Promise<CoreUploadSession | null>;
306
+ markUploadBytesStored(input: {
307
+ projectId: string;
308
+ uploadId: string;
309
+ sizeBytes: number;
310
+ }): Promise<CoreUploadSession>;
311
+ completeUploadSession(input: {
312
+ projectId: string;
313
+ uploadId: string;
314
+ }): Promise<CoreStorageObject>;
315
+ abortUploadSession(input: {
316
+ projectId: string;
317
+ uploadId: string;
318
+ }): Promise<CoreUploadSession>;
319
+ getObject(input: {
320
+ projectId: string;
321
+ key: string;
322
+ }): Promise<CoreStorageObject | null>;
323
+ listObjects(input: {
324
+ projectId: string;
325
+ prefix?: string;
326
+ limit?: number;
327
+ cursor?: string;
328
+ }): Promise<CoreStorageObjectList>;
329
+ inventoryRevision(input: {
330
+ projectId: string;
331
+ prefix: string;
332
+ }): Promise<{
333
+ keys: string[];
334
+ revision: string;
335
+ }>;
336
+ commitAssetPlan(input: {
337
+ projectId: string;
338
+ effects: CoreStorageApplyEffects;
339
+ }): Promise<void>;
340
+ deleteObject(input: {
341
+ projectId: string;
342
+ key: string;
343
+ }): Promise<boolean>;
344
+ getImmutableVersion(input: {
345
+ projectId: string;
346
+ key: string;
347
+ sha256: string;
348
+ }): Promise<CoreImmutableObjectVersion | null>;
349
+ }
350
+ export interface SignedReadPort {
351
+ signRead(input: {
352
+ projectId: string;
353
+ key: string;
354
+ ttlSeconds?: number;
355
+ sha256?: string | null;
356
+ }): Promise<{
357
+ expires_at: string;
358
+ signed_url: string;
359
+ }>;
360
+ verifyRead(input: {
361
+ projectId: string;
362
+ key: string;
363
+ expiresAtEpochSeconds: number;
364
+ signature: string;
365
+ sha256?: string | null;
366
+ }): Promise<boolean>;
367
+ }
368
+ export interface RouteManifestPort {
369
+ getActiveRouteManifest(projectId: string): Promise<CoreRouteManifest | null>;
370
+ }
371
+ export interface CleanupPort {
372
+ sweep(projectId?: string): Promise<CleanupResult>;
95
373
  }
96
374
  export interface MigrationPort {
97
375
  check(projectId: string, migrationId: string): Promise<{
@@ -124,6 +402,12 @@ export interface RuntimeKernelPorts {
124
402
  releases: ReleaseStatePort;
125
403
  plans: ApplyPlanStorePort;
126
404
  content: ContentStorePort;
405
+ storage?: StoragePort;
406
+ signedReads?: SignedReadPort;
407
+ routes?: RouteManifestPort;
408
+ cleanup?: CleanupPort;
409
+ functions?: FunctionRuntimePort;
410
+ secrets?: FunctionSecretPort;
127
411
  migrations: MigrationPort;
128
412
  lifecycle?: ApplyLifecyclePort;
129
413
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../src/ports.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export declare const CORE_STORAGE_KEY_MAX_LENGTH = 1024;
2
+ export declare const DEFAULT_SIGNED_READ_TTL_SECONDS: number;
3
+ export declare const MAX_SIGNED_READ_TTL_SECONDS: number;
4
+ export declare class StorageValidationError extends Error {
5
+ readonly code: string;
6
+ readonly details: Record<string, unknown>;
7
+ readonly status = 400;
8
+ constructor(code: string, message: string, details?: Record<string, unknown>);
9
+ }
10
+ export declare function storageErrorEnvelope(error: StorageValidationError): {
11
+ error: string;
12
+ message: string;
13
+ details?: Record<string, unknown>;
14
+ };
15
+ export declare function normalizeStorageKey(value: unknown): string;
16
+ export declare function normalizeStoragePrefix(value: unknown): string;
17
+ export declare function encodeStorageKeyPath(key: string): string;
18
+ export declare function normalizeStorageVisibility(value: unknown): "public" | "private";
19
+ export declare function normalizeStorageContentType(value: unknown): string;
20
+ export declare function normalizeSha256Hex(value: unknown): string;
21
+ export declare function normalizeStorageSize(value: unknown, maxBytes: number): number;
22
+ export declare function clampSignedReadTtlSeconds(value: unknown): number;
23
+ export declare function createStorageReadSignature(input: {
24
+ secret: string;
25
+ projectId: string;
26
+ key: string;
27
+ expiresAtEpochSeconds: number;
28
+ sha256?: string | null;
29
+ }): string;
30
+ export declare function verifyStorageReadSignature(input: {
31
+ secret: string;
32
+ projectId: string;
33
+ key: string;
34
+ expiresAtEpochSeconds: number;
35
+ signature: string;
36
+ nowEpochSeconds?: number;
37
+ sha256?: string | null;
38
+ }): boolean;
39
+ export declare function computeStorageInventoryRevision(keys: readonly string[]): string;
40
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAChD,eAAO,MAAM,+BAA+B,QAAU,CAAC;AACvD,eAAO,MAAM,2BAA2B,QAAe,CAAC;AAOxD,qBAAa,sBAAuB,SAAQ,KAAK;IAI7C,QAAQ,CAAC,IAAI,EAAE,MAAM;IAErB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAL3C,QAAQ,CAAC,MAAM,OAAO;gBAGX,IAAI,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACN,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAKjD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,sBAAsB,GAAG;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAMA;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAwD1D;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAY7D;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAI/E;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUlE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU7E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMhE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB,EAAE,MAAM,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,MAAM,CAGT;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,OAAO,CASV;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAG/E"}
@@ -0,0 +1,167 @@
1
+ import { createHmac, timingSafeEqual } from "node:crypto";
2
+ export const CORE_STORAGE_KEY_MAX_LENGTH = 1024;
3
+ export const DEFAULT_SIGNED_READ_TTL_SECONDS = 15 * 60;
4
+ export const MAX_SIGNED_READ_TTL_SECONDS = 24 * 60 * 60;
5
+ const CONTROL_RE = /[\x00-\x1f\x7f]/;
6
+ const SHA256_RE = /^[a-f0-9]{64}$/;
7
+ const ENCODED_SEPARATOR_RE = /%(?:2f|5c)/i;
8
+ const SAFE_KEY_RE = /^[a-zA-Z0-9._/\-]+$/;
9
+ export class StorageValidationError extends Error {
10
+ code;
11
+ details;
12
+ status = 400;
13
+ constructor(code, message, details = {}) {
14
+ super(message);
15
+ this.code = code;
16
+ this.details = details;
17
+ this.name = "StorageValidationError";
18
+ }
19
+ }
20
+ export function storageErrorEnvelope(error) {
21
+ return {
22
+ error: error.code,
23
+ message: error.message,
24
+ ...(Object.keys(error.details).length > 0 ? { details: error.details } : {}),
25
+ };
26
+ }
27
+ export function normalizeStorageKey(value) {
28
+ if (typeof value !== "string") {
29
+ throw new StorageValidationError("invalid_storage_key", "Storage key must be a string.");
30
+ }
31
+ if (value.length === 0) {
32
+ throw new StorageValidationError("invalid_storage_key", "Storage key must be non-empty.");
33
+ }
34
+ if (value.length > CORE_STORAGE_KEY_MAX_LENGTH) {
35
+ throw new StorageValidationError("invalid_storage_key", "Storage key is too long.", {
36
+ max_length: CORE_STORAGE_KEY_MAX_LENGTH,
37
+ });
38
+ }
39
+ if (value.startsWith("/") || value.endsWith("/")) {
40
+ throw new StorageValidationError("invalid_storage_key", "Storage key must not start or end with '/'.");
41
+ }
42
+ if (value.includes("\\") || ENCODED_SEPARATOR_RE.test(value)) {
43
+ throw new StorageValidationError("invalid_storage_key", "Storage key must not contain slash or backslash escapes.");
44
+ }
45
+ if (CONTROL_RE.test(value)) {
46
+ throw new StorageValidationError("invalid_storage_key", "Storage key must not contain control characters.");
47
+ }
48
+ let decoded;
49
+ try {
50
+ decoded = decodeURIComponent(value);
51
+ }
52
+ catch {
53
+ throw new StorageValidationError("invalid_storage_key", "Storage key contains malformed percent encoding.");
54
+ }
55
+ const normalized = decoded.normalize("NFC");
56
+ if (normalized.includes("\\") || CONTROL_RE.test(normalized)) {
57
+ throw new StorageValidationError("invalid_storage_key", "Storage key decodes to an unsafe path.");
58
+ }
59
+ if (!SAFE_KEY_RE.test(normalized)) {
60
+ throw new StorageValidationError("invalid_storage_key", "Storage key may only contain alphanumerics, '.', '_', '-', and '/'.");
61
+ }
62
+ const segments = normalized.split("/");
63
+ if (segments.some((segment) => segment.length === 0)) {
64
+ throw new StorageValidationError("invalid_storage_key", "Storage key must not contain empty path segments.");
65
+ }
66
+ if (segments.some((segment) => segment === "." || segment === "..")) {
67
+ throw new StorageValidationError("invalid_storage_key", "Storage key must not contain dot segments.");
68
+ }
69
+ if (normalized === "_cas" ||
70
+ normalized.startsWith("_cas/") ||
71
+ normalized === "_staging" ||
72
+ normalized.startsWith("_staging/") ||
73
+ normalized === "_run402" ||
74
+ normalized.startsWith("_run402/")) {
75
+ throw new StorageValidationError("invalid_storage_key", "Storage key uses an internal Run402 namespace.");
76
+ }
77
+ return normalized;
78
+ }
79
+ export function normalizeStoragePrefix(value) {
80
+ if (value === undefined || value === null || value === "")
81
+ return "";
82
+ if (typeof value !== "string") {
83
+ throw new StorageValidationError("invalid_storage_prefix", "Storage prefix must be a string.");
84
+ }
85
+ if (value.startsWith("/")) {
86
+ throw new StorageValidationError("invalid_storage_prefix", "Storage prefix must not start with '/'.");
87
+ }
88
+ if (value.endsWith("/")) {
89
+ return `${normalizeStorageKey(`${value}__run402_prefix_probe__`).slice(0, -"__run402_prefix_probe__".length)}`;
90
+ }
91
+ return normalizeStorageKey(value);
92
+ }
93
+ export function encodeStorageKeyPath(key) {
94
+ return key.split("/").map((segment) => encodeURIComponent(segment)).join("/");
95
+ }
96
+ export function normalizeStorageVisibility(value) {
97
+ if (value === undefined || value === null)
98
+ return "public";
99
+ if (value === "public" || value === "private")
100
+ return value;
101
+ throw new StorageValidationError("invalid_visibility", "Storage visibility must be 'public' or 'private'.");
102
+ }
103
+ export function normalizeStorageContentType(value) {
104
+ if (value === undefined || value === null || value === "")
105
+ return "application/octet-stream";
106
+ if (typeof value !== "string") {
107
+ throw new StorageValidationError("invalid_content_type", "Content type must be a string.");
108
+ }
109
+ const trimmed = value.trim();
110
+ if (!trimmed || CONTROL_RE.test(trimmed) || !trimmed.includes("/")) {
111
+ throw new StorageValidationError("invalid_content_type", "Content type must be a MIME type.");
112
+ }
113
+ return trimmed;
114
+ }
115
+ export function normalizeSha256Hex(value) {
116
+ if (typeof value !== "string" || !SHA256_RE.test(value)) {
117
+ throw new StorageValidationError("invalid_sha256", "SHA-256 must be lowercase 64-character hex.");
118
+ }
119
+ return value;
120
+ }
121
+ export function normalizeStorageSize(value, maxBytes) {
122
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0) {
123
+ throw new StorageValidationError("invalid_size", "size_bytes must be a positive integer.");
124
+ }
125
+ if (value > maxBytes) {
126
+ throw new StorageValidationError("size_too_large", "Object exceeds the local Core upload limit.", {
127
+ max_bytes: maxBytes,
128
+ });
129
+ }
130
+ return value;
131
+ }
132
+ export function clampSignedReadTtlSeconds(value) {
133
+ if (value === undefined || value === null)
134
+ return DEFAULT_SIGNED_READ_TTL_SECONDS;
135
+ if (typeof value !== "number" || !Number.isFinite(value) || value < 1) {
136
+ throw new StorageValidationError("invalid_ttl", "ttl_seconds must be a positive number.");
137
+ }
138
+ return Math.min(Math.floor(value), MAX_SIGNED_READ_TTL_SECONDS);
139
+ }
140
+ export function createStorageReadSignature(input) {
141
+ const payload = storageSignaturePayload(input);
142
+ return createHmac("sha256", input.secret).update(payload).digest("base64url");
143
+ }
144
+ export function verifyStorageReadSignature(input) {
145
+ const now = input.nowEpochSeconds ?? Math.floor(Date.now() / 1000);
146
+ if (!Number.isFinite(input.expiresAtEpochSeconds) || input.expiresAtEpochSeconds < now) {
147
+ return false;
148
+ }
149
+ const expected = createStorageReadSignature(input);
150
+ const expectedBytes = Buffer.from(expected);
151
+ const actualBytes = Buffer.from(input.signature);
152
+ return expectedBytes.length === actualBytes.length && timingSafeEqual(expectedBytes, actualBytes);
153
+ }
154
+ export function computeStorageInventoryRevision(keys) {
155
+ const canonical = JSON.stringify([...keys].sort());
156
+ return createHmac("sha256", "run402-core-storage-inventory-v1").update(canonical).digest("hex");
157
+ }
158
+ function storageSignaturePayload(input) {
159
+ return [
160
+ "run402-core-storage-read-v1",
161
+ input.projectId,
162
+ input.key,
163
+ input.sha256 ?? "",
164
+ String(input.expiresAtEpochSeconds),
165
+ ].join("\n");
166
+ }
167
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@run402/runtime-kernel",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Public Run402 Core runtime kernel contracts, capabilities, and application services.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,6 +26,7 @@
26
26
  "node": ">=22"
27
27
  },
28
28
  "dependencies": {
29
+ "@run402/functions": "3.5.1",
29
30
  "@run402/release": "0.1.1"
30
31
  },
31
32
  "repository": {
@@ -43,6 +44,8 @@
43
44
  "runtime",
44
45
  "postgres",
45
46
  "postgrest",
47
+ "storage",
48
+ "routing",
46
49
  "ai-agent"
47
50
  ],
48
51
  "publishConfig": {