gencow 0.1.210 → 0.1.211
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.
|
@@ -36,6 +36,10 @@ function projectSchemaSourcePaths({
|
|
|
36
36
|
const missing = declared.filter((pathValue) => !existsSyncImpl(pathValue));
|
|
37
37
|
if (missing.length > 0) throw new Error("Configured schema source is missing from the project");
|
|
38
38
|
}
|
|
39
|
+
// An explicit schema list is the customer's immutable migration contract.
|
|
40
|
+
// Deploy codegen may materialize a compatibility auth schema later in the
|
|
41
|
+
// same workspace; it must not silently widen that declared contract.
|
|
42
|
+
if (config?.schema) return declared.filter((pathValue) => existsSyncImpl(pathValue));
|
|
39
43
|
return resolveDrizzleSchemaPaths(config ?? { rootDir: backendDir }, {
|
|
40
44
|
cwd,
|
|
41
45
|
existsSyncImpl,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gencow",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.211",
|
|
4
4
|
"description": "Gencow — AI Backend Engine",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"@types/node": "^25.9.5",
|
|
35
35
|
"better-auth": "^1.6.23",
|
|
36
36
|
"@gencow/core": "0.1.43",
|
|
37
|
-
"@gencow/
|
|
38
|
-
"@gencow/
|
|
37
|
+
"@gencow/react": "0.2.6",
|
|
38
|
+
"@gencow/client": "0.2.6"
|
|
39
39
|
},
|
|
40
40
|
"scripts": {
|
|
41
41
|
"prebuild": "pnpm --filter @gencow/migration-contract run build && pnpm --filter @gencow/server run build",
|
package/runtime/server.mjs
CHANGED
|
@@ -9660,7 +9660,13 @@ var init_deployment_executor_authority_contract = __esm({
|
|
|
9660
9660
|
objectAuthority("app_runtime_activity_state", ["SELECT", "INSERT", "UPDATE"]),
|
|
9661
9661
|
objectAuthority("app_runtime_activity_observers", ["SELECT", "INSERT", "UPDATE", "DELETE"]),
|
|
9662
9662
|
objectAuthority("app_runtime_activity_leases", ["SELECT", "INSERT", "UPDATE", "DELETE"]),
|
|
9663
|
-
|
|
9663
|
+
// runtime_stop_intents is owned by the public runtime role and references a
|
|
9664
|
+
// drain request. PostgreSQL's FK check takes a KEY SHARE lock, which needs
|
|
9665
|
+
// UPDATE authority on one referenced column. Constrain that capability to
|
|
9666
|
+
// the immutable drain-request identity.
|
|
9667
|
+
objectAuthority("runtime_drain_requests", ["SELECT"], {
|
|
9668
|
+
columnPrivileges: [{ columns: ["id"], privileges: ["UPDATE"] }]
|
|
9669
|
+
}),
|
|
9664
9670
|
// The public Platform owns node heartbeat, readiness, capacity admission,
|
|
9665
9671
|
// and authenticated node administration. These are system-plane data
|
|
9666
9672
|
// mutations, not lifecycle execution authority.
|
|
@@ -185372,7 +185378,8 @@ function fleetSelection() {
|
|
|
185372
185378
|
return {
|
|
185373
185379
|
...bindingSelection(),
|
|
185374
185380
|
authorityMode: appRuntimeDesiredState.authorityMode,
|
|
185375
|
-
desiredRuntimeState: appRuntimeDesiredState.desiredRuntimeState
|
|
185381
|
+
desiredRuntimeState: appRuntimeDesiredState.desiredRuntimeState,
|
|
185382
|
+
hasBackend: apps.hasBackend
|
|
185376
185383
|
};
|
|
185377
185384
|
}
|
|
185378
185385
|
function queryBindingRows(db) {
|
|
@@ -185424,6 +185431,7 @@ function fleetAuthorityDigest(rows4) {
|
|
|
185424
185431
|
row.appId,
|
|
185425
185432
|
row.appName,
|
|
185426
185433
|
row.authorityMode,
|
|
185434
|
+
row.hasBackend,
|
|
185427
185435
|
row.desiredActivationId,
|
|
185428
185436
|
row.desiredRuntimeState,
|
|
185429
185437
|
row.desiredActivationEpoch,
|
|
@@ -185483,7 +185491,7 @@ async function loadCanonicalTenantRouteFleetSnapshot(input) {
|
|
|
185483
185491
|
const removalTargets = [];
|
|
185484
185492
|
for (const appRows of grouped.values()) {
|
|
185485
185493
|
const desired = appRows[0];
|
|
185486
|
-
if (desired.desiredRuntimeState === "serving" && desired.desiredNodeId === input.nodeId) {
|
|
185494
|
+
if (desired.hasBackend && desired.desiredRuntimeState === "serving" && desired.desiredNodeId === input.nodeId) {
|
|
185487
185495
|
const joinedRows = appRows.filter((row) => row.instanceId !== null);
|
|
185488
185496
|
try {
|
|
185489
185497
|
bindings.push(bindingFromRows(joinedRows));
|
|
@@ -401291,7 +401299,7 @@ function requestLocalHealth(url2, init) {
|
|
|
401291
401299
|
},
|
|
401292
401300
|
(response) => {
|
|
401293
401301
|
const status = response.statusCode ?? 0;
|
|
401294
|
-
|
|
401302
|
+
resolve115({ ok: status >= 200 && status < 300 });
|
|
401295
401303
|
response.resume();
|
|
401296
401304
|
}
|
|
401297
401305
|
);
|