@nylorun/runtime 0.15.2-beta → 0.16.0-beta

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 (219) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/README.md +33 -6
  3. package/dist/adapters/execution/restate.d.ts +9 -1
  4. package/dist/adapters/execution/restate.js +64 -5
  5. package/dist/adapters/sandbox/local.d.ts +10 -0
  6. package/dist/adapters/sandbox/local.js +195 -0
  7. package/dist/adapters/sandbox/virtual.js +36 -1
  8. package/dist/admin-openapi.json +37 -3
  9. package/dist/api/a2a/tasks.js +6 -1
  10. package/dist/api/ag-ui/history.js +6 -1
  11. package/dist/api/ag-ui/routes.js +5 -1
  12. package/dist/api/components.d.ts +2673 -655
  13. package/dist/api/components.js +17 -1
  14. package/dist/api/gate/keys.d.ts +4 -3
  15. package/dist/api/gate/routes.d.ts +19 -3
  16. package/dist/api/gate/routes.js +162 -53
  17. package/dist/api/http/app.js +4 -0
  18. package/dist/api/http/define.d.ts +10 -0
  19. package/dist/api/http/define.js +2 -1
  20. package/dist/api/http/routes/artifacts.d.ts +11 -0
  21. package/dist/api/http/routes/artifacts.js +518 -0
  22. package/dist/api/http/routes/sandboxes.d.ts +9 -0
  23. package/dist/api/http/routes/sandboxes.js +152 -0
  24. package/dist/api/http/routes/sessions.js +3 -1
  25. package/dist/api/http/routes/tenant.js +36 -2
  26. package/dist/artifacts/config.d.ts +23 -0
  27. package/dist/artifacts/config.js +27 -0
  28. package/dist/artifacts/export.d.ts +8 -0
  29. package/dist/artifacts/export.js +205 -0
  30. package/dist/artifacts/files.d.ts +36 -0
  31. package/dist/artifacts/files.js +45 -0
  32. package/dist/artifacts/folders.d.ts +60 -0
  33. package/dist/artifacts/folders.js +209 -0
  34. package/dist/artifacts/links.d.ts +28 -0
  35. package/dist/artifacts/links.js +92 -0
  36. package/dist/artifacts/media-types.d.ts +13 -0
  37. package/dist/artifacts/media-types.js +80 -0
  38. package/dist/artifacts/parts.d.ts +34 -0
  39. package/dist/artifacts/parts.js +38 -0
  40. package/dist/artifacts/service.d.ts +74 -0
  41. package/dist/artifacts/service.js +301 -0
  42. package/dist/artifacts/workspace.d.ts +60 -0
  43. package/dist/artifacts/workspace.js +57 -0
  44. package/dist/artifacts/zip.d.ts +10 -0
  45. package/dist/artifacts/zip.js +126 -0
  46. package/dist/blob/fs.d.ts +13 -0
  47. package/dist/blob/fs.js +194 -0
  48. package/dist/blob/index.d.ts +9 -0
  49. package/dist/blob/index.js +9 -0
  50. package/dist/blob/s3.d.ts +42 -0
  51. package/dist/blob/s3.js +366 -0
  52. package/dist/blob/types.d.ts +108 -0
  53. package/dist/blob/types.js +85 -0
  54. package/dist/core/sandbox-routes.d.ts +2 -2
  55. package/dist/core/sandbox-routes.js +4 -3
  56. package/dist/execution/memory.d.ts +11 -1
  57. package/dist/execution/memory.js +77 -3
  58. package/dist/execution/types.d.ts +54 -1
  59. package/dist/execution/types.js +31 -0
  60. package/dist/gates/contract.d.ts +14 -13
  61. package/dist/gates/contract.js +13 -12
  62. package/dist/gates/egress.d.ts +72 -0
  63. package/dist/gates/egress.js +319 -0
  64. package/dist/gates/handler.d.ts +3 -0
  65. package/dist/gates/handler.js +3 -2
  66. package/dist/gates/http-client.d.ts +3 -2
  67. package/dist/gates/http-client.js +17 -6
  68. package/dist/gates/in-process.d.ts +13 -1
  69. package/dist/gates/in-process.js +11 -0
  70. package/dist/gates/inflight.d.ts +23 -4
  71. package/dist/gates/inflight.js +18 -4
  72. package/dist/gates/model-gate.d.ts +6 -2
  73. package/dist/gates/tool-calls.d.ts +9 -5
  74. package/dist/gates/tool-calls.js +6 -6
  75. package/dist/gates/tool-client.d.ts +9 -2
  76. package/dist/gates/tool-client.js +56 -22
  77. package/dist/gates/tool-contract.d.ts +12 -7
  78. package/dist/gates/tool-contract.js +10 -4
  79. package/dist/gates/tool-gate.d.ts +1 -0
  80. package/dist/harness/calls.d.ts +52 -0
  81. package/dist/harness/calls.js +113 -0
  82. package/dist/harness/executors.d.ts +22 -0
  83. package/dist/harness/executors.js +96 -0
  84. package/dist/harness/main.d.ts +6 -0
  85. package/dist/harness/main.js +103 -0
  86. package/dist/harness/pod.d.ts +21 -0
  87. package/dist/harness/pod.js +119 -0
  88. package/dist/harness/run-tokens.d.ts +18 -0
  89. package/dist/harness/run-tokens.js +15 -0
  90. package/dist/harness/service.d.ts +46 -0
  91. package/dist/harness/service.js +179 -0
  92. package/dist/harness/ws-client.d.ts +43 -0
  93. package/dist/harness/ws-client.js +122 -0
  94. package/dist/harness/ws-port.d.ts +22 -0
  95. package/dist/harness/ws-port.js +78 -0
  96. package/dist/harness-api/in-process.d.ts +24 -0
  97. package/dist/harness-api/in-process.js +119 -0
  98. package/dist/harness-api/record.d.ts +44 -0
  99. package/dist/harness-api/record.js +250 -0
  100. package/dist/harness-api/renew.d.ts +37 -0
  101. package/dist/harness-api/renew.js +77 -0
  102. package/dist/harness-api/server.d.ts +104 -0
  103. package/dist/harness-api/server.js +408 -0
  104. package/dist/harness-api/start.d.ts +36 -0
  105. package/dist/harness-api/start.js +118 -0
  106. package/dist/harness-api/workspace.d.ts +53 -0
  107. package/dist/harness-api/workspace.js +201 -0
  108. package/dist/harness-api/ws-server.d.ts +34 -0
  109. package/dist/harness-api/ws-server.js +227 -0
  110. package/dist/host/app.js +23 -2
  111. package/dist/host/gates.d.ts +27 -2
  112. package/dist/host/gates.js +46 -1
  113. package/dist/host/http.d.ts +4 -1
  114. package/dist/host/http.js +6 -1
  115. package/dist/host/main.js +135 -27
  116. package/dist/host/stack-config.d.ts +101 -1
  117. package/dist/host/stack-config.js +199 -8
  118. package/dist/mcp/snapshot.d.ts +8 -1
  119. package/dist/mcp/snapshot.js +28 -0
  120. package/dist/media.d.ts +5 -24
  121. package/dist/media.js +5 -0
  122. package/dist/model/pi-model.d.ts +6 -2
  123. package/dist/model/pi-model.js +39 -22
  124. package/dist/node/index.d.ts +1 -1
  125. package/dist/node/index.js +1 -1
  126. package/dist/openapi.json +15245 -8850
  127. package/dist/record/index.d.ts +1 -0
  128. package/dist/record/index.js +1 -0
  129. package/dist/record/sandbox.d.ts +25 -0
  130. package/dist/record/sandbox.js +43 -0
  131. package/dist/sandbox/capability.d.ts +3 -0
  132. package/dist/sandbox/capability.js +10 -0
  133. package/dist/sandbox/egress-token.d.ts +26 -0
  134. package/dist/sandbox/egress-token.js +8 -0
  135. package/dist/sandbox/join.d.ts +37 -0
  136. package/dist/sandbox/join.js +165 -0
  137. package/dist/sandbox/manager.d.ts +99 -34
  138. package/dist/sandbox/manager.js +216 -84
  139. package/dist/sandbox/placement.d.ts +27 -0
  140. package/dist/sandbox/placement.js +44 -0
  141. package/dist/sandbox/pods/client.d.ts +90 -0
  142. package/dist/sandbox/pods/client.js +79 -0
  143. package/dist/sandbox/pods/lifecycle.d.ts +91 -0
  144. package/dist/sandbox/pods/lifecycle.js +178 -0
  145. package/dist/sandbox/pods/name.d.ts +1 -0
  146. package/dist/sandbox/pods/name.js +28 -0
  147. package/dist/sandbox/pods/network-gate.d.ts +25 -0
  148. package/dist/sandbox/pods/network-gate.js +71 -0
  149. package/dist/sandbox/pods/reconcile.d.ts +11 -0
  150. package/dist/sandbox/pods/reconcile.js +152 -0
  151. package/dist/sandbox/pods/spec.d.ts +45 -0
  152. package/dist/sandbox/pods/spec.js +62 -0
  153. package/dist/sandbox/records.d.ts +29 -0
  154. package/dist/sandbox/records.js +79 -0
  155. package/dist/sandbox/resolve.d.ts +5 -0
  156. package/dist/sandbox/resolve.js +3 -2
  157. package/dist/sandbox/session-sandbox.js +7 -5
  158. package/dist/sandbox/share.d.ts +11 -0
  159. package/dist/sandbox/share.js +10 -0
  160. package/dist/sandbox/tenant-config.d.ts +16 -1
  161. package/dist/sandbox/tenant-config.js +9 -0
  162. package/dist/sandbox/types.d.ts +29 -1
  163. package/dist/sandbox/types.js +13 -1
  164. package/dist/store/postgres/drizzle/0004_sandbox_resources.sql +20 -0
  165. package/dist/store/postgres/drizzle/0005_artifacts.sql +27 -0
  166. package/dist/store/postgres/drizzle/0006_folder_artifacts.sql +12 -0
  167. package/dist/store/postgres/drizzle/0007_sandbox_pods.sql +14 -0
  168. package/dist/store/postgres/drizzle/meta/_journal.json +28 -0
  169. package/dist/store/postgres/record-writer.d.ts +6 -1
  170. package/dist/store/postgres/record-writer.js +20 -2
  171. package/dist/store/postgres/schema.d.ts +894 -0
  172. package/dist/store/postgres/schema.js +130 -2
  173. package/dist/store/postgres/store.js +289 -4
  174. package/dist/store/types.d.ts +143 -6
  175. package/dist/streams/control.d.ts +2 -0
  176. package/dist/streams/control.js +5 -0
  177. package/dist/streams/types.d.ts +10 -1
  178. package/dist/tenant/advance.js +218 -160
  179. package/dist/tenant/artifact-tool.d.ts +5 -0
  180. package/dist/tenant/artifact-tool.js +119 -0
  181. package/dist/tenant/commands.js +30 -5
  182. package/dist/tenant/context.d.ts +64 -5
  183. package/dist/tenant/effects.d.ts +19 -13
  184. package/dist/tenant/effects.js +5 -382
  185. package/dist/tenant/history.d.ts +13 -23
  186. package/dist/tenant/history.js +14 -62
  187. package/dist/tenant/host-token.d.ts +92 -0
  188. package/dist/tenant/host-token.js +179 -0
  189. package/dist/tenant/module.js +1 -0
  190. package/dist/tenant/paths.d.ts +2 -1
  191. package/dist/tenant/paths.js +3 -1
  192. package/dist/tenant/reset.d.ts +5 -2
  193. package/dist/tenant/reset.js +22 -2
  194. package/dist/tenant/run-grants.d.ts +49 -0
  195. package/dist/tenant/run-grants.js +62 -0
  196. package/dist/tenant/run-token.d.ts +70 -0
  197. package/dist/tenant/run-token.js +138 -0
  198. package/dist/tenant/runtime.d.ts +38 -0
  199. package/dist/tenant/runtime.js +120 -32
  200. package/dist/tenant/sandboxes.d.ts +119 -0
  201. package/dist/tenant/sandboxes.js +551 -0
  202. package/dist/tenant/session.d.ts +2 -13
  203. package/dist/tenant/session.js +4 -28
  204. package/dist/tenant/sessions.d.ts +5 -0
  205. package/dist/tenant/sessions.js +28 -1
  206. package/dist/tenant/status.d.ts +8 -3
  207. package/dist/tenant/status.js +5 -0
  208. package/dist/tenant/streams.d.ts +7 -0
  209. package/dist/tenant/streams.js +24 -1
  210. package/dist/tenant/sweep.js +37 -4
  211. package/dist/tenant/tokens.js +9 -2
  212. package/dist/tenant/types.d.ts +18 -1
  213. package/dist/tenant/worker.d.ts +11 -5
  214. package/dist/tenant/worker.js +12 -6
  215. package/dist/version.d.ts +1 -1
  216. package/dist/version.js +1 -1
  217. package/package.json +13 -10
  218. package/dist/adapters/media.d.ts +0 -24
  219. package/dist/adapters/media.js +0 -111
@@ -458,6 +458,25 @@ export declare const sessions: import("drizzle-orm/pg-core").PgTableWithColumns<
458
458
  type: 'always';
459
459
  };
460
460
  }, {}, {}>;
461
+ sandboxId: import("drizzle-orm/pg-core").PgColumn<{
462
+ name: "sandboxId";
463
+ tableName: "sessions";
464
+ dataType: "string";
465
+ columnType: "PgText";
466
+ data: string;
467
+ driverParam: string;
468
+ notNull: false;
469
+ hasDefault: true;
470
+ isPrimaryKey: false;
471
+ isAutoincrement: false;
472
+ hasRuntimeDefault: false;
473
+ enumValues: [string, ...string[]];
474
+ baseColumn: never;
475
+ identity: undefined;
476
+ generated: {
477
+ type: 'always';
478
+ };
479
+ }, {}, {}>;
461
480
  };
462
481
  dialect: 'pg';
463
482
  }>;
@@ -2862,6 +2881,878 @@ export declare const toolCrossings: import("drizzle-orm/pg-core").PgTableWithCol
2862
2881
  };
2863
2882
  dialect: 'pg';
2864
2883
  }>;
2884
+ /**
2885
+ * A sandbox resource (blueprint D39, F7.1): its id, kind, the spec resolved against the
2886
+ * Tenant's limits when it was created, and the developer's labels. Sessions attach to it by id
2887
+ * (the session body's `sandboxId`). Not the `sandboxes` document table, which holds the virtual
2888
+ * backend's compute records, keyed by workspace key.
2889
+ */
2890
+ export declare const sandboxResources: import("drizzle-orm/pg-core").PgTableWithColumns<{
2891
+ name: "sandbox_resources";
2892
+ schema: "nylorun";
2893
+ columns: {
2894
+ id: import("drizzle-orm/pg-core").PgColumn<{
2895
+ name: "id";
2896
+ tableName: "sandbox_resources";
2897
+ dataType: "custom";
2898
+ columnType: "PgCustomColumn";
2899
+ data: string;
2900
+ driverParam: string;
2901
+ notNull: true;
2902
+ hasDefault: false;
2903
+ isPrimaryKey: true;
2904
+ isAutoincrement: false;
2905
+ hasRuntimeDefault: false;
2906
+ enumValues: undefined;
2907
+ baseColumn: never;
2908
+ identity: undefined;
2909
+ generated: undefined;
2910
+ }, {}, {
2911
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
2912
+ }>;
2913
+ kind: import("drizzle-orm/pg-core").PgColumn<{
2914
+ name: "kind";
2915
+ tableName: "sandbox_resources";
2916
+ dataType: "string";
2917
+ columnType: "PgText";
2918
+ data: "pod" | "virtual";
2919
+ driverParam: string;
2920
+ notNull: true;
2921
+ hasDefault: false;
2922
+ isPrimaryKey: false;
2923
+ isAutoincrement: false;
2924
+ hasRuntimeDefault: false;
2925
+ enumValues: ["virtual", "pod"];
2926
+ baseColumn: never;
2927
+ identity: undefined;
2928
+ generated: undefined;
2929
+ }, {}, {}>;
2930
+ spec: import("drizzle-orm/pg-core").PgColumn<{
2931
+ name: "spec";
2932
+ tableName: "sandbox_resources";
2933
+ dataType: "custom";
2934
+ columnType: "PgCustomColumn";
2935
+ data: unknown;
2936
+ driverParam: unknown;
2937
+ notNull: true;
2938
+ hasDefault: false;
2939
+ isPrimaryKey: false;
2940
+ isAutoincrement: false;
2941
+ hasRuntimeDefault: false;
2942
+ enumValues: undefined;
2943
+ baseColumn: never;
2944
+ identity: undefined;
2945
+ generated: undefined;
2946
+ }, {}, {
2947
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
2948
+ }>;
2949
+ labels: import("drizzle-orm/pg-core").PgColumn<{
2950
+ name: "labels";
2951
+ tableName: "sandbox_resources";
2952
+ dataType: "custom";
2953
+ columnType: "PgCustomColumn";
2954
+ data: unknown;
2955
+ driverParam: unknown;
2956
+ notNull: true;
2957
+ hasDefault: false;
2958
+ isPrimaryKey: false;
2959
+ isAutoincrement: false;
2960
+ hasRuntimeDefault: false;
2961
+ enumValues: undefined;
2962
+ baseColumn: never;
2963
+ identity: undefined;
2964
+ generated: undefined;
2965
+ }, {}, {
2966
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
2967
+ }>;
2968
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
2969
+ name: "createdAt";
2970
+ tableName: "sandbox_resources";
2971
+ dataType: "custom";
2972
+ columnType: "PgCustomColumn";
2973
+ data: string;
2974
+ driverParam: string;
2975
+ notNull: true;
2976
+ hasDefault: false;
2977
+ isPrimaryKey: false;
2978
+ isAutoincrement: false;
2979
+ hasRuntimeDefault: false;
2980
+ enumValues: undefined;
2981
+ baseColumn: never;
2982
+ identity: undefined;
2983
+ generated: undefined;
2984
+ }, {}, {
2985
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
2986
+ }>;
2987
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
2988
+ name: "updatedAt";
2989
+ tableName: "sandbox_resources";
2990
+ dataType: "custom";
2991
+ columnType: "PgCustomColumn";
2992
+ data: string;
2993
+ driverParam: string;
2994
+ notNull: true;
2995
+ hasDefault: false;
2996
+ isPrimaryKey: false;
2997
+ isAutoincrement: false;
2998
+ hasRuntimeDefault: false;
2999
+ enumValues: undefined;
3000
+ baseColumn: never;
3001
+ identity: undefined;
3002
+ generated: undefined;
3003
+ }, {}, {
3004
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3005
+ }>;
3006
+ k8sName: import("drizzle-orm/pg-core").PgColumn<{
3007
+ name: "k8sName";
3008
+ tableName: "sandbox_resources";
3009
+ dataType: "custom";
3010
+ columnType: "PgCustomColumn";
3011
+ data: string;
3012
+ driverParam: string;
3013
+ notNull: false;
3014
+ hasDefault: false;
3015
+ isPrimaryKey: false;
3016
+ isAutoincrement: false;
3017
+ hasRuntimeDefault: false;
3018
+ enumValues: undefined;
3019
+ baseColumn: never;
3020
+ identity: undefined;
3021
+ generated: undefined;
3022
+ }, {}, {
3023
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3024
+ }>;
3025
+ volumeGen: import("drizzle-orm/pg-core").PgColumn<{
3026
+ name: "volumeGen";
3027
+ tableName: "sandbox_resources";
3028
+ dataType: "number";
3029
+ columnType: "PgInteger";
3030
+ data: number;
3031
+ driverParam: string | number;
3032
+ notNull: true;
3033
+ hasDefault: true;
3034
+ isPrimaryKey: false;
3035
+ isAutoincrement: false;
3036
+ hasRuntimeDefault: false;
3037
+ enumValues: undefined;
3038
+ baseColumn: never;
3039
+ identity: undefined;
3040
+ generated: undefined;
3041
+ }, {}, {}>;
3042
+ desired: import("drizzle-orm/pg-core").PgColumn<{
3043
+ name: "desired";
3044
+ tableName: "sandbox_resources";
3045
+ dataType: "string";
3046
+ columnType: "PgText";
3047
+ data: "deleted" | "running" | "suspended";
3048
+ driverParam: string;
3049
+ notNull: false;
3050
+ hasDefault: false;
3051
+ isPrimaryKey: false;
3052
+ isAutoincrement: false;
3053
+ hasRuntimeDefault: false;
3054
+ enumValues: ["running", "suspended", "deleted"];
3055
+ baseColumn: never;
3056
+ identity: undefined;
3057
+ generated: undefined;
3058
+ }, {}, {}>;
3059
+ observed: import("drizzle-orm/pg-core").PgColumn<{
3060
+ name: "observed";
3061
+ tableName: "sandbox_resources";
3062
+ dataType: "string";
3063
+ columnType: "PgText";
3064
+ data: "creating" | "deleting" | "expired" | "failed" | "lost" | "running" | "suspended";
3065
+ driverParam: string;
3066
+ notNull: false;
3067
+ hasDefault: false;
3068
+ isPrimaryKey: false;
3069
+ isAutoincrement: false;
3070
+ hasRuntimeDefault: false;
3071
+ enumValues: ["creating", "running", "suspended", "expired", "lost", "failed", "deleting"];
3072
+ baseColumn: never;
3073
+ identity: undefined;
3074
+ generated: undefined;
3075
+ }, {}, {}>;
3076
+ podUid: import("drizzle-orm/pg-core").PgColumn<{
3077
+ name: "podUid";
3078
+ tableName: "sandbox_resources";
3079
+ dataType: "string";
3080
+ columnType: "PgText";
3081
+ data: string;
3082
+ driverParam: string;
3083
+ notNull: false;
3084
+ hasDefault: false;
3085
+ isPrimaryKey: false;
3086
+ isAutoincrement: false;
3087
+ hasRuntimeDefault: false;
3088
+ enumValues: [string, ...string[]];
3089
+ baseColumn: never;
3090
+ identity: undefined;
3091
+ generated: undefined;
3092
+ }, {}, {}>;
3093
+ hostEpoch: import("drizzle-orm/pg-core").PgColumn<{
3094
+ name: "hostEpoch";
3095
+ tableName: "sandbox_resources";
3096
+ dataType: "number";
3097
+ columnType: "PgInteger";
3098
+ data: number;
3099
+ driverParam: string | number;
3100
+ notNull: true;
3101
+ hasDefault: true;
3102
+ isPrimaryKey: false;
3103
+ isAutoincrement: false;
3104
+ hasRuntimeDefault: false;
3105
+ enumValues: undefined;
3106
+ baseColumn: never;
3107
+ identity: undefined;
3108
+ generated: undefined;
3109
+ }, {}, {}>;
3110
+ joinTokenHash: import("drizzle-orm/pg-core").PgColumn<{
3111
+ name: "joinTokenHash";
3112
+ tableName: "sandbox_resources";
3113
+ dataType: "string";
3114
+ columnType: "PgText";
3115
+ data: string;
3116
+ driverParam: string;
3117
+ notNull: false;
3118
+ hasDefault: false;
3119
+ isPrimaryKey: false;
3120
+ isAutoincrement: false;
3121
+ hasRuntimeDefault: false;
3122
+ enumValues: [string, ...string[]];
3123
+ baseColumn: never;
3124
+ identity: undefined;
3125
+ generated: undefined;
3126
+ }, {}, {}>;
3127
+ rev: import("drizzle-orm/pg-core").PgColumn<{
3128
+ name: "rev";
3129
+ tableName: "sandbox_resources";
3130
+ dataType: "number";
3131
+ columnType: "PgInteger";
3132
+ data: number;
3133
+ driverParam: string | number;
3134
+ notNull: true;
3135
+ hasDefault: true;
3136
+ isPrimaryKey: false;
3137
+ isAutoincrement: false;
3138
+ hasRuntimeDefault: false;
3139
+ enumValues: undefined;
3140
+ baseColumn: never;
3141
+ identity: undefined;
3142
+ generated: undefined;
3143
+ }, {}, {}>;
3144
+ lastActiveAt: import("drizzle-orm/pg-core").PgColumn<{
3145
+ name: "lastActiveAt";
3146
+ tableName: "sandbox_resources";
3147
+ dataType: "date";
3148
+ columnType: "PgTimestamp";
3149
+ data: Date;
3150
+ driverParam: string;
3151
+ notNull: false;
3152
+ hasDefault: false;
3153
+ isPrimaryKey: false;
3154
+ isAutoincrement: false;
3155
+ hasRuntimeDefault: false;
3156
+ enumValues: undefined;
3157
+ baseColumn: never;
3158
+ identity: undefined;
3159
+ generated: undefined;
3160
+ }, {}, {}>;
3161
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
3162
+ name: "expiresAt";
3163
+ tableName: "sandbox_resources";
3164
+ dataType: "date";
3165
+ columnType: "PgTimestamp";
3166
+ data: Date;
3167
+ driverParam: string;
3168
+ notNull: false;
3169
+ hasDefault: false;
3170
+ isPrimaryKey: false;
3171
+ isAutoincrement: false;
3172
+ hasRuntimeDefault: false;
3173
+ enumValues: undefined;
3174
+ baseColumn: never;
3175
+ identity: undefined;
3176
+ generated: undefined;
3177
+ }, {}, {}>;
3178
+ startedAt: import("drizzle-orm/pg-core").PgColumn<{
3179
+ name: "startedAt";
3180
+ tableName: "sandbox_resources";
3181
+ dataType: "date";
3182
+ columnType: "PgTimestamp";
3183
+ data: Date;
3184
+ driverParam: string;
3185
+ notNull: false;
3186
+ hasDefault: false;
3187
+ isPrimaryKey: false;
3188
+ isAutoincrement: false;
3189
+ hasRuntimeDefault: false;
3190
+ enumValues: undefined;
3191
+ baseColumn: never;
3192
+ identity: undefined;
3193
+ generated: undefined;
3194
+ }, {}, {}>;
3195
+ reason: import("drizzle-orm/pg-core").PgColumn<{
3196
+ name: "reason";
3197
+ tableName: "sandbox_resources";
3198
+ dataType: "string";
3199
+ columnType: "PgText";
3200
+ data: string;
3201
+ driverParam: string;
3202
+ notNull: false;
3203
+ hasDefault: false;
3204
+ isPrimaryKey: false;
3205
+ isAutoincrement: false;
3206
+ hasRuntimeDefault: false;
3207
+ enumValues: [string, ...string[]];
3208
+ baseColumn: never;
3209
+ identity: undefined;
3210
+ generated: undefined;
3211
+ }, {}, {}>;
3212
+ retiring: import("drizzle-orm/pg-core").PgColumn<{
3213
+ name: "retiring";
3214
+ tableName: "sandbox_resources";
3215
+ dataType: "custom";
3216
+ columnType: "PgCustomColumn";
3217
+ data: string;
3218
+ driverParam: string;
3219
+ notNull: false;
3220
+ hasDefault: false;
3221
+ isPrimaryKey: false;
3222
+ isAutoincrement: false;
3223
+ hasRuntimeDefault: false;
3224
+ enumValues: undefined;
3225
+ baseColumn: never;
3226
+ identity: undefined;
3227
+ generated: undefined;
3228
+ }, {}, {
3229
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3230
+ }>;
3231
+ volumeId: import("drizzle-orm/pg-core").PgColumn<{
3232
+ name: "volumeId";
3233
+ tableName: "sandbox_resources";
3234
+ dataType: "string";
3235
+ columnType: "PgText";
3236
+ data: string;
3237
+ driverParam: string;
3238
+ notNull: false;
3239
+ hasDefault: false;
3240
+ isPrimaryKey: false;
3241
+ isAutoincrement: false;
3242
+ hasRuntimeDefault: false;
3243
+ enumValues: [string, ...string[]];
3244
+ baseColumn: never;
3245
+ identity: undefined;
3246
+ generated: undefined;
3247
+ }, {}, {}>;
3248
+ };
3249
+ dialect: 'pg';
3250
+ }>;
3251
+ /**
3252
+ * Artifacts (blueprint D35, F8.1 and F8.2): an id, a name and numbered versions. The bytes are in
3253
+ * the Object store under each version's `blobKey` (a folder's: its manifest); a blob counts only
3254
+ * once its version row commits. `sessionId` is the session the artifact belongs to, or null for
3255
+ * a Tenant-wide one an application made. `latestVersion` is the newest version's number.
3256
+ */
3257
+ export declare const artifacts: import("drizzle-orm/pg-core").PgTableWithColumns<{
3258
+ name: "artifacts";
3259
+ schema: "nylorun";
3260
+ columns: {
3261
+ id: import("drizzle-orm/pg-core").PgColumn<{
3262
+ name: "id";
3263
+ tableName: "artifacts";
3264
+ dataType: "custom";
3265
+ columnType: "PgCustomColumn";
3266
+ data: string;
3267
+ driverParam: string;
3268
+ notNull: true;
3269
+ hasDefault: false;
3270
+ isPrimaryKey: true;
3271
+ isAutoincrement: false;
3272
+ hasRuntimeDefault: false;
3273
+ enumValues: undefined;
3274
+ baseColumn: never;
3275
+ identity: undefined;
3276
+ generated: undefined;
3277
+ }, {}, {
3278
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3279
+ }>;
3280
+ kind: import("drizzle-orm/pg-core").PgColumn<{
3281
+ name: "kind";
3282
+ tableName: "artifacts";
3283
+ dataType: "string";
3284
+ columnType: "PgText";
3285
+ data: "file" | "folder";
3286
+ driverParam: string;
3287
+ notNull: true;
3288
+ hasDefault: false;
3289
+ isPrimaryKey: false;
3290
+ isAutoincrement: false;
3291
+ hasRuntimeDefault: false;
3292
+ enumValues: ["file", "folder"];
3293
+ baseColumn: never;
3294
+ identity: undefined;
3295
+ generated: undefined;
3296
+ }, {}, {}>;
3297
+ name: import("drizzle-orm/pg-core").PgColumn<{
3298
+ name: "name";
3299
+ tableName: "artifacts";
3300
+ dataType: "string";
3301
+ columnType: "PgText";
3302
+ data: string;
3303
+ driverParam: string;
3304
+ notNull: true;
3305
+ hasDefault: false;
3306
+ isPrimaryKey: false;
3307
+ isAutoincrement: false;
3308
+ hasRuntimeDefault: false;
3309
+ enumValues: [string, ...string[]];
3310
+ baseColumn: never;
3311
+ identity: undefined;
3312
+ generated: undefined;
3313
+ }, {}, {}>;
3314
+ contentType: import("drizzle-orm/pg-core").PgColumn<{
3315
+ name: "contentType";
3316
+ tableName: "artifacts";
3317
+ dataType: "string";
3318
+ columnType: "PgText";
3319
+ data: string;
3320
+ driverParam: string;
3321
+ notNull: true;
3322
+ hasDefault: false;
3323
+ isPrimaryKey: false;
3324
+ isAutoincrement: false;
3325
+ hasRuntimeDefault: false;
3326
+ enumValues: [string, ...string[]];
3327
+ baseColumn: never;
3328
+ identity: undefined;
3329
+ generated: undefined;
3330
+ }, {}, {}>;
3331
+ sessionId: import("drizzle-orm/pg-core").PgColumn<{
3332
+ name: "sessionId";
3333
+ tableName: "artifacts";
3334
+ dataType: "custom";
3335
+ columnType: "PgCustomColumn";
3336
+ data: string;
3337
+ driverParam: string;
3338
+ notNull: false;
3339
+ hasDefault: false;
3340
+ isPrimaryKey: false;
3341
+ isAutoincrement: false;
3342
+ hasRuntimeDefault: false;
3343
+ enumValues: undefined;
3344
+ baseColumn: never;
3345
+ identity: undefined;
3346
+ generated: undefined;
3347
+ }, {}, {
3348
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3349
+ }>;
3350
+ latestVersion: import("drizzle-orm/pg-core").PgColumn<{
3351
+ name: "latestVersion";
3352
+ tableName: "artifacts";
3353
+ dataType: "number";
3354
+ columnType: "PgInteger";
3355
+ data: number;
3356
+ driverParam: string | number;
3357
+ notNull: true;
3358
+ hasDefault: false;
3359
+ isPrimaryKey: false;
3360
+ isAutoincrement: false;
3361
+ hasRuntimeDefault: false;
3362
+ enumValues: undefined;
3363
+ baseColumn: never;
3364
+ identity: undefined;
3365
+ generated: undefined;
3366
+ }, {}, {}>;
3367
+ labelsJson: import("drizzle-orm/pg-core").PgColumn<{
3368
+ name: "labelsJson";
3369
+ tableName: "artifacts";
3370
+ dataType: "string";
3371
+ columnType: "PgText";
3372
+ data: string;
3373
+ driverParam: string;
3374
+ notNull: false;
3375
+ hasDefault: false;
3376
+ isPrimaryKey: false;
3377
+ isAutoincrement: false;
3378
+ hasRuntimeDefault: false;
3379
+ enumValues: [string, ...string[]];
3380
+ baseColumn: never;
3381
+ identity: undefined;
3382
+ generated: undefined;
3383
+ }, {}, {}>;
3384
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
3385
+ name: "createdAt";
3386
+ tableName: "artifacts";
3387
+ dataType: "custom";
3388
+ columnType: "PgCustomColumn";
3389
+ data: string;
3390
+ driverParam: string;
3391
+ notNull: true;
3392
+ hasDefault: false;
3393
+ isPrimaryKey: false;
3394
+ isAutoincrement: false;
3395
+ hasRuntimeDefault: false;
3396
+ enumValues: undefined;
3397
+ baseColumn: never;
3398
+ identity: undefined;
3399
+ generated: undefined;
3400
+ }, {}, {
3401
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3402
+ }>;
3403
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
3404
+ name: "updatedAt";
3405
+ tableName: "artifacts";
3406
+ dataType: "string";
3407
+ columnType: "PgText";
3408
+ data: string;
3409
+ driverParam: string;
3410
+ notNull: true;
3411
+ hasDefault: false;
3412
+ isPrimaryKey: false;
3413
+ isAutoincrement: false;
3414
+ hasRuntimeDefault: false;
3415
+ enumValues: [string, ...string[]];
3416
+ baseColumn: never;
3417
+ identity: undefined;
3418
+ generated: undefined;
3419
+ }, {}, {}>;
3420
+ };
3421
+ dialect: 'pg';
3422
+ }>;
3423
+ /** The versions of an artifact, immutable once written. */
3424
+ export declare const artifactVersions: import("drizzle-orm/pg-core").PgTableWithColumns<{
3425
+ name: "artifact_versions";
3426
+ schema: "nylorun";
3427
+ columns: {
3428
+ artifactId: import("drizzle-orm/pg-core").PgColumn<{
3429
+ name: "artifactId";
3430
+ tableName: "artifact_versions";
3431
+ dataType: "custom";
3432
+ columnType: "PgCustomColumn";
3433
+ data: string;
3434
+ driverParam: string;
3435
+ notNull: true;
3436
+ hasDefault: false;
3437
+ isPrimaryKey: false;
3438
+ isAutoincrement: false;
3439
+ hasRuntimeDefault: false;
3440
+ enumValues: undefined;
3441
+ baseColumn: never;
3442
+ identity: undefined;
3443
+ generated: undefined;
3444
+ }, {}, {
3445
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3446
+ }>;
3447
+ version: import("drizzle-orm/pg-core").PgColumn<{
3448
+ name: "version";
3449
+ tableName: "artifact_versions";
3450
+ dataType: "number";
3451
+ columnType: "PgInteger";
3452
+ data: number;
3453
+ driverParam: string | number;
3454
+ notNull: true;
3455
+ hasDefault: false;
3456
+ isPrimaryKey: false;
3457
+ isAutoincrement: false;
3458
+ hasRuntimeDefault: false;
3459
+ enumValues: undefined;
3460
+ baseColumn: never;
3461
+ identity: undefined;
3462
+ generated: undefined;
3463
+ }, {}, {}>;
3464
+ blobKey: import("drizzle-orm/pg-core").PgColumn<{
3465
+ name: "blobKey";
3466
+ tableName: "artifact_versions";
3467
+ dataType: "string";
3468
+ columnType: "PgText";
3469
+ data: string;
3470
+ driverParam: string;
3471
+ notNull: true;
3472
+ hasDefault: false;
3473
+ isPrimaryKey: false;
3474
+ isAutoincrement: false;
3475
+ hasRuntimeDefault: false;
3476
+ enumValues: [string, ...string[]];
3477
+ baseColumn: never;
3478
+ identity: undefined;
3479
+ generated: undefined;
3480
+ }, {}, {}>;
3481
+ size: import("drizzle-orm/pg-core").PgColumn<{
3482
+ name: "size";
3483
+ tableName: "artifact_versions";
3484
+ dataType: "number";
3485
+ columnType: "PgBigInt53";
3486
+ data: number;
3487
+ driverParam: string | number;
3488
+ notNull: true;
3489
+ hasDefault: false;
3490
+ isPrimaryKey: false;
3491
+ isAutoincrement: false;
3492
+ hasRuntimeDefault: false;
3493
+ enumValues: undefined;
3494
+ baseColumn: never;
3495
+ identity: undefined;
3496
+ generated: undefined;
3497
+ }, {}, {}>;
3498
+ sha256: import("drizzle-orm/pg-core").PgColumn<{
3499
+ name: "sha256";
3500
+ tableName: "artifact_versions";
3501
+ dataType: "string";
3502
+ columnType: "PgText";
3503
+ data: string;
3504
+ driverParam: string;
3505
+ notNull: true;
3506
+ hasDefault: false;
3507
+ isPrimaryKey: false;
3508
+ isAutoincrement: false;
3509
+ hasRuntimeDefault: false;
3510
+ enumValues: [string, ...string[]];
3511
+ baseColumn: never;
3512
+ identity: undefined;
3513
+ generated: undefined;
3514
+ }, {}, {}>;
3515
+ contentType: import("drizzle-orm/pg-core").PgColumn<{
3516
+ name: "contentType";
3517
+ tableName: "artifact_versions";
3518
+ dataType: "string";
3519
+ columnType: "PgText";
3520
+ data: string;
3521
+ driverParam: string;
3522
+ notNull: true;
3523
+ hasDefault: false;
3524
+ isPrimaryKey: false;
3525
+ isAutoincrement: false;
3526
+ hasRuntimeDefault: false;
3527
+ enumValues: [string, ...string[]];
3528
+ baseColumn: never;
3529
+ identity: undefined;
3530
+ generated: undefined;
3531
+ }, {}, {}>;
3532
+ source: import("drizzle-orm/pg-core").PgColumn<{
3533
+ name: "source";
3534
+ tableName: "artifact_versions";
3535
+ dataType: "string";
3536
+ columnType: "PgText";
3537
+ data: "engine" | "export" | "upload";
3538
+ driverParam: string;
3539
+ notNull: true;
3540
+ hasDefault: false;
3541
+ isPrimaryKey: false;
3542
+ isAutoincrement: false;
3543
+ hasRuntimeDefault: false;
3544
+ enumValues: ["upload", "engine", "export"];
3545
+ baseColumn: never;
3546
+ identity: undefined;
3547
+ generated: undefined;
3548
+ }, {}, {}>;
3549
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
3550
+ name: "createdAt";
3551
+ tableName: "artifact_versions";
3552
+ dataType: "custom";
3553
+ columnType: "PgCustomColumn";
3554
+ data: string;
3555
+ driverParam: string;
3556
+ notNull: true;
3557
+ hasDefault: false;
3558
+ isPrimaryKey: false;
3559
+ isAutoincrement: false;
3560
+ hasRuntimeDefault: false;
3561
+ enumValues: undefined;
3562
+ baseColumn: never;
3563
+ identity: undefined;
3564
+ generated: undefined;
3565
+ }, {}, {
3566
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3567
+ }>;
3568
+ };
3569
+ dialect: 'pg';
3570
+ }>;
3571
+ /**
3572
+ * The content-addressed files each folder version references (F8.2), one row per distinct
3573
+ * SHA-256: the index that says which `blobs/sha256/<hex>` objects are still in use, so deleting
3574
+ * a folder removes only the files no other version names, and the Tenant total counts each file
3575
+ * once. The manifest itself stays the source of truth for paths.
3576
+ */
3577
+ export declare const artifactContent: import("drizzle-orm/pg-core").PgTableWithColumns<{
3578
+ name: "artifact_content";
3579
+ schema: "nylorun";
3580
+ columns: {
3581
+ artifactId: import("drizzle-orm/pg-core").PgColumn<{
3582
+ name: "artifactId";
3583
+ tableName: "artifact_content";
3584
+ dataType: "custom";
3585
+ columnType: "PgCustomColumn";
3586
+ data: string;
3587
+ driverParam: string;
3588
+ notNull: true;
3589
+ hasDefault: false;
3590
+ isPrimaryKey: false;
3591
+ isAutoincrement: false;
3592
+ hasRuntimeDefault: false;
3593
+ enumValues: undefined;
3594
+ baseColumn: never;
3595
+ identity: undefined;
3596
+ generated: undefined;
3597
+ }, {}, {
3598
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3599
+ }>;
3600
+ version: import("drizzle-orm/pg-core").PgColumn<{
3601
+ name: "version";
3602
+ tableName: "artifact_content";
3603
+ dataType: "number";
3604
+ columnType: "PgInteger";
3605
+ data: number;
3606
+ driverParam: string | number;
3607
+ notNull: true;
3608
+ hasDefault: false;
3609
+ isPrimaryKey: false;
3610
+ isAutoincrement: false;
3611
+ hasRuntimeDefault: false;
3612
+ enumValues: undefined;
3613
+ baseColumn: never;
3614
+ identity: undefined;
3615
+ generated: undefined;
3616
+ }, {}, {}>;
3617
+ sha256: import("drizzle-orm/pg-core").PgColumn<{
3618
+ name: "sha256";
3619
+ tableName: "artifact_content";
3620
+ dataType: "custom";
3621
+ columnType: "PgCustomColumn";
3622
+ data: string;
3623
+ driverParam: string;
3624
+ notNull: true;
3625
+ hasDefault: false;
3626
+ isPrimaryKey: false;
3627
+ isAutoincrement: false;
3628
+ hasRuntimeDefault: false;
3629
+ enumValues: undefined;
3630
+ baseColumn: never;
3631
+ identity: undefined;
3632
+ generated: undefined;
3633
+ }, {}, {
3634
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3635
+ }>;
3636
+ size: import("drizzle-orm/pg-core").PgColumn<{
3637
+ name: "size";
3638
+ tableName: "artifact_content";
3639
+ dataType: "number";
3640
+ columnType: "PgBigInt53";
3641
+ data: number;
3642
+ driverParam: string | number;
3643
+ notNull: true;
3644
+ hasDefault: false;
3645
+ isPrimaryKey: false;
3646
+ isAutoincrement: false;
3647
+ hasRuntimeDefault: false;
3648
+ enumValues: undefined;
3649
+ baseColumn: never;
3650
+ identity: undefined;
3651
+ generated: undefined;
3652
+ }, {}, {}>;
3653
+ };
3654
+ dialect: 'pg';
3655
+ }>;
3656
+ /**
3657
+ * Each sandbox's lifecycle stream (`nylorun.sandbox-event/1`), numbered from 0 per sandbox id.
3658
+ * Written only by the record module; not published to the stream relay.
3659
+ */
3660
+ export declare const sandboxEvents: import("drizzle-orm/pg-core").PgTableWithColumns<{
3661
+ name: "sandbox_events";
3662
+ schema: "nylorun_streams";
3663
+ columns: {
3664
+ sandboxId: import("drizzle-orm/pg-core").PgColumn<{
3665
+ name: "sandboxId";
3666
+ tableName: "sandbox_events";
3667
+ dataType: "custom";
3668
+ columnType: "PgCustomColumn";
3669
+ data: string;
3670
+ driverParam: string;
3671
+ notNull: true;
3672
+ hasDefault: false;
3673
+ isPrimaryKey: false;
3674
+ isAutoincrement: false;
3675
+ hasRuntimeDefault: false;
3676
+ enumValues: undefined;
3677
+ baseColumn: never;
3678
+ identity: undefined;
3679
+ generated: undefined;
3680
+ }, {}, {
3681
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3682
+ }>;
3683
+ seq: import("drizzle-orm/pg-core").PgColumn<{
3684
+ name: "seq";
3685
+ tableName: "sandbox_events";
3686
+ dataType: "number";
3687
+ columnType: "PgBigInt53";
3688
+ data: number;
3689
+ driverParam: string | number;
3690
+ notNull: true;
3691
+ hasDefault: false;
3692
+ isPrimaryKey: false;
3693
+ isAutoincrement: false;
3694
+ hasRuntimeDefault: false;
3695
+ enumValues: undefined;
3696
+ baseColumn: never;
3697
+ identity: undefined;
3698
+ generated: undefined;
3699
+ }, {}, {}>;
3700
+ type: import("drizzle-orm/pg-core").PgColumn<{
3701
+ name: "type";
3702
+ tableName: "sandbox_events";
3703
+ dataType: "string";
3704
+ columnType: "PgText";
3705
+ data: string;
3706
+ driverParam: string;
3707
+ notNull: true;
3708
+ hasDefault: false;
3709
+ isPrimaryKey: false;
3710
+ isAutoincrement: false;
3711
+ hasRuntimeDefault: false;
3712
+ enumValues: [string, ...string[]];
3713
+ baseColumn: never;
3714
+ identity: undefined;
3715
+ generated: undefined;
3716
+ }, {}, {}>;
3717
+ body: import("drizzle-orm/pg-core").PgColumn<{
3718
+ name: "body";
3719
+ tableName: "sandbox_events";
3720
+ dataType: "custom";
3721
+ columnType: "PgCustomColumn";
3722
+ data: unknown;
3723
+ driverParam: unknown;
3724
+ notNull: true;
3725
+ hasDefault: false;
3726
+ isPrimaryKey: false;
3727
+ isAutoincrement: false;
3728
+ hasRuntimeDefault: false;
3729
+ enumValues: undefined;
3730
+ baseColumn: never;
3731
+ identity: undefined;
3732
+ generated: undefined;
3733
+ }, {}, {
3734
+ pgColumnBuilderBrand: 'PgCustomColumnBuilderBrand';
3735
+ }>;
3736
+ committedAt: import("drizzle-orm/pg-core").PgColumn<{
3737
+ name: "committedAt";
3738
+ tableName: "sandbox_events";
3739
+ dataType: "string";
3740
+ columnType: "PgTimestampString";
3741
+ data: string;
3742
+ driverParam: string;
3743
+ notNull: true;
3744
+ hasDefault: true;
3745
+ isPrimaryKey: false;
3746
+ isAutoincrement: false;
3747
+ hasRuntimeDefault: false;
3748
+ enumValues: undefined;
3749
+ baseColumn: never;
3750
+ identity: undefined;
3751
+ generated: undefined;
3752
+ }, {}, {}>;
3753
+ };
3754
+ dialect: 'pg';
3755
+ }>;
2865
3756
  /** Each session's log head: the next seq and the basin generation its events go to. */
2866
3757
  export declare const sessionLogHeads: import("drizzle-orm/pg-core").PgTableWithColumns<{
2867
3758
  name: "session_log_heads";
@@ -3094,3 +3985,6 @@ export type PublishableKeyRow = typeof publishableKeys.$inferSelect;
3094
3985
  export type ModelUsageRow = typeof modelUsage.$inferSelect;
3095
3986
  export type ModelBudgetRow = typeof modelBudgets.$inferSelect;
3096
3987
  export type ToolCrossingRow = typeof toolCrossings.$inferSelect;
3988
+ export type SandboxResourceRow = typeof sandboxResources.$inferSelect;
3989
+ export type ArtifactRow = typeof artifacts.$inferSelect;
3990
+ export type ArtifactVersionRow = typeof artifactVersions.$inferSelect;