@opengeni/db 3.2.2 → 3.3.0
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/canonical-human-identities.js +3 -3
- package/dist/capability-reconciliation.js +2 -2
- package/dist/{chunk-V2X2NK7T.js → chunk-5MPQZI43.js} +2675 -2540
- package/dist/{chunk-V2X2NK7T.js.map → chunk-5MPQZI43.js.map} +1 -1
- package/dist/{chunk-L3NT43Z5.js → chunk-7K5AVQUZ.js} +3 -3
- package/dist/{chunk-JYPBOJ2Y.js → chunk-AAOKWNHE.js} +4 -4
- package/dist/{chunk-D7LTIG33.js → chunk-B4RMLA2X.js} +2 -2
- package/dist/{chunk-OXO32LTK.js → chunk-CEJ3NQ3B.js} +11 -1
- package/dist/chunk-CEJ3NQ3B.js.map +1 -0
- package/dist/{chunk-AYZC65QU.js → chunk-CGSINPLW.js} +2 -2
- package/dist/{chunk-VCJAYIPH.js → chunk-FX2PSMGH.js} +2 -2
- package/dist/{chunk-HMKUJ6NI.js → chunk-HQWXEF77.js} +57 -9
- package/dist/chunk-HQWXEF77.js.map +1 -0
- package/dist/{chunk-V22DUH4C.js → chunk-HWEHZKHA.js} +5 -5
- package/dist/{chunk-6UU7OVUN.js → chunk-JTBJGSUZ.js} +37 -7
- package/dist/chunk-JTBJGSUZ.js.map +1 -0
- package/dist/{chunk-YH4GWEDM.js → chunk-KPC7I5WG.js} +2 -2
- package/dist/{chunk-XQHABE23.js → chunk-OWM6XG55.js} +4 -4
- package/dist/{chunk-YWHG45TK.js → chunk-PNEJVKKV.js} +6 -6
- package/dist/{chunk-4BAKPTPG.js → chunk-S74WULCK.js} +3 -3
- package/dist/{chunk-K6NT66NP.js → chunk-SDKFRIAN.js} +4 -4
- package/dist/{chunk-RCDMYTLP.js → chunk-UWS5DJQ6.js} +2 -2
- package/dist/{chunk-LRRGVHAQ.js → chunk-VUR5U5B3.js} +2 -2
- package/dist/{chunk-IF63BST7.js → chunk-Y4ERASEM.js} +2 -2
- package/dist/{chunk-VBG4TW5C.js → chunk-ZZOEKHGU.js} +2 -2
- package/dist/connect-attempts.js +3 -3
- package/dist/database.d.ts +9 -0
- package/dist/editable-artifact-durable-export.js +2 -2
- package/dist/editable-artifacts.js +3 -3
- package/dist/index.d.ts +93 -22
- package/dist/index.js +31 -19
- package/dist/insights-site-usage.d.ts +10 -0
- package/dist/managed-auth-session-sets.js +3 -3
- package/dist/mcp-operations.js +2 -2
- package/dist/migrate.js +19 -19
- package/dist/organization-integration-policy.js +3 -3
- package/dist/provision-roles.js +1 -1
- package/dist/retained-provider-commands.js +6 -6
- package/dist/schema.d.ts +102 -0
- package/dist/schema.js +1 -1
- package/dist/session-background-commands.js +5 -5
- package/dist/session-command-output.js +5 -5
- package/dist/session-event-slices.js +3 -3
- package/dist/session-mcp-credential-rotation.js +6 -6
- package/dist/session-tenancy.js +6 -6
- package/dist/site-publishing.d.ts +11 -0
- package/dist/{subscription-core-codex-4G4CCOJU.js → subscription-core-codex-HIAP7CY2.js} +6 -6
- package/dist/{subscription-core-codex-compat-64ACIZVP.js → subscription-core-codex-compat-IBERN7DU.js} +8 -8
- package/dist/video-generation.js +3 -3
- package/dist/workspace-tool-defaults.js +5 -5
- package/drizzle/0793_private_site_sessions.sql +166 -0
- package/drizzle/0794_site_ai_insights.sql +175 -0
- package/drizzle/0795_site_lifecycle_cancellation.sql +121 -0
- package/package.json +9 -9
- package/src/database.ts +44 -3
- package/src/index.ts +142 -11
- package/src/insights-site-usage.ts +37 -0
- package/src/provision-roles.ts +15 -0
- package/src/runtime-posture.ts +76 -7
- package/src/schema.ts +10 -0
- package/src/site-publishing.ts +35 -0
- package/dist/chunk-6UU7OVUN.js.map +0 -1
- package/dist/chunk-HMKUJ6NI.js.map +0 -1
- package/dist/chunk-OXO32LTK.js.map +0 -1
- /package/dist/{chunk-L3NT43Z5.js.map → chunk-7K5AVQUZ.js.map} +0 -0
- /package/dist/{chunk-JYPBOJ2Y.js.map → chunk-AAOKWNHE.js.map} +0 -0
- /package/dist/{chunk-D7LTIG33.js.map → chunk-B4RMLA2X.js.map} +0 -0
- /package/dist/{chunk-AYZC65QU.js.map → chunk-CGSINPLW.js.map} +0 -0
- /package/dist/{chunk-VCJAYIPH.js.map → chunk-FX2PSMGH.js.map} +0 -0
- /package/dist/{chunk-V22DUH4C.js.map → chunk-HWEHZKHA.js.map} +0 -0
- /package/dist/{chunk-YH4GWEDM.js.map → chunk-KPC7I5WG.js.map} +0 -0
- /package/dist/{chunk-XQHABE23.js.map → chunk-OWM6XG55.js.map} +0 -0
- /package/dist/{chunk-YWHG45TK.js.map → chunk-PNEJVKKV.js.map} +0 -0
- /package/dist/{chunk-4BAKPTPG.js.map → chunk-S74WULCK.js.map} +0 -0
- /package/dist/{chunk-K6NT66NP.js.map → chunk-SDKFRIAN.js.map} +0 -0
- /package/dist/{chunk-RCDMYTLP.js.map → chunk-UWS5DJQ6.js.map} +0 -0
- /package/dist/{chunk-LRRGVHAQ.js.map → chunk-VUR5U5B3.js.map} +0 -0
- /package/dist/{chunk-IF63BST7.js.map → chunk-Y4ERASEM.js.map} +0 -0
- /package/dist/{chunk-VBG4TW5C.js.map → chunk-ZZOEKHGU.js.map} +0 -0
- /package/dist/{subscription-core-codex-4G4CCOJU.js.map → subscription-core-codex-HIAP7CY2.js.map} +0 -0
- /package/dist/{subscription-core-codex-compat-64ACIZVP.js.map → subscription-core-codex-compat-IBERN7DU.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
rawRows,
|
|
3
3
|
withWorkspaceSubjectRls
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JTBJGSUZ.js";
|
|
5
5
|
|
|
6
6
|
// src/connect-attempts.ts
|
|
7
7
|
import { createHash } from "crypto";
|
|
@@ -245,4 +245,4 @@ export {
|
|
|
245
245
|
claimConnectOperation,
|
|
246
246
|
finishConnectOperation
|
|
247
247
|
};
|
|
248
|
-
//# sourceMappingURL=chunk-
|
|
248
|
+
//# sourceMappingURL=chunk-CGSINPLW.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
setSubjectRlsContext,
|
|
3
3
|
withRlsContext
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JTBJGSUZ.js";
|
|
5
5
|
|
|
6
6
|
// src/connection-token-resolver.ts
|
|
7
7
|
import {
|
|
@@ -863,4 +863,4 @@ export {
|
|
|
863
863
|
refreshOAuthConnectionCredential,
|
|
864
864
|
isPrivateAddress
|
|
865
865
|
};
|
|
866
|
-
//# sourceMappingURL=chunk-
|
|
866
|
+
//# sourceMappingURL=chunk-FX2PSMGH.js.map
|
|
@@ -566,6 +566,12 @@ var SCHEDULED_PERSONAL_RESOURCE_CAPABILITY_PREDICATE_ROUTINE = "scheduled_person
|
|
|
566
566
|
var SCHEDULED_PERSONAL_RESOURCE_CAPABILITY_TABLE = "scheduled_personal_resource_capabilities";
|
|
567
567
|
var VARIABLE_SET_CAPABILITY_PREDICATE_ROUTINE = "variable_set_authority_capability_active(text)";
|
|
568
568
|
var VARIABLE_SET_CAPABILITY_TABLE = "variable_set_authority_capabilities";
|
|
569
|
+
var SITE_CANCELLATION_CAPABILITY_TABLE = "site_session_cancellation_capabilities";
|
|
570
|
+
var SITE_CANCELLATION_PREDICATE = "site_session_cancellation_capability_active(uuid, uuid, uuid, uuid)";
|
|
571
|
+
var SITE_CANCELLATION_PRIVATE_ROUTINES = [
|
|
572
|
+
"begin_site_session_cancellation(uuid, uuid, uuid, uuid)",
|
|
573
|
+
"end_site_session_cancellation(uuid)"
|
|
574
|
+
];
|
|
569
575
|
var PERSONAL_DOCUMENT_CAPABILITY_PREDICATE_ROUTINE = "personal_document_authority_capability_active(text)";
|
|
570
576
|
var PERSONAL_DOCUMENT_CAPABILITY_TABLE = "personal_document_authority_capabilities";
|
|
571
577
|
var PERSONAL_DOCUMENT_AUTHORITY_ROUTINES = [
|
|
@@ -2627,15 +2633,15 @@ async function inspectRuntimeDatabasePosture(db, options) {
|
|
|
2627
2633
|
-- Column-only grants on capability tables are also unsafe; a pin
|
|
2628
2634
|
-- table must remain EXECUTE-only even after column ACL drift.
|
|
2629
2635
|
(has_table_privilege(current_user, c.oid, 'SELECT') or
|
|
2630
|
-
((c.relname in ('modal_native_origin_read_capabilities','modal_inventory_read_capabilities','usage_allowance_capabilities','session_import_batches', ${ARTIFACT_PINS_TABLE}) or
|
|
2636
|
+
((c.relname in ('modal_native_origin_read_capabilities','modal_inventory_read_capabilities','usage_allowance_capabilities','session_import_batches', ${ARTIFACT_PINS_TABLE}, ${SITE_CANCELLATION_CAPABILITY_TABLE}) or
|
|
2631
2637
|
c.relname in (select jsonb_array_elements_text(${JSON.stringify([...RUNTIME_ALLOWANCE_PRIVATE_TABLES, ...RUNTIME_SESSION_USAGE_LIMIT_PRIVATE_TABLES, "session_usage_limit_capabilities"])}::jsonb))) and
|
|
2632
2638
|
has_any_column_privilege(current_user, c.oid, 'SELECT'))) as can_select,
|
|
2633
2639
|
(has_table_privilege(current_user, c.oid, 'INSERT') or
|
|
2634
|
-
((c.relname in ('modal_native_origin_read_capabilities','modal_inventory_read_capabilities','usage_allowance_capabilities','session_import_batches', ${ARTIFACT_PINS_TABLE}) or
|
|
2640
|
+
((c.relname in ('modal_native_origin_read_capabilities','modal_inventory_read_capabilities','usage_allowance_capabilities','session_import_batches', ${ARTIFACT_PINS_TABLE}, ${SITE_CANCELLATION_CAPABILITY_TABLE}) or
|
|
2635
2641
|
c.relname in (select jsonb_array_elements_text(${JSON.stringify([...RUNTIME_ALLOWANCE_PRIVATE_TABLES, ...RUNTIME_SESSION_USAGE_LIMIT_PRIVATE_TABLES, "session_usage_limit_capabilities"])}::jsonb))) and
|
|
2636
2642
|
has_any_column_privilege(current_user, c.oid, 'INSERT'))) as can_insert,
|
|
2637
2643
|
(has_table_privilege(current_user, c.oid, 'UPDATE') or
|
|
2638
|
-
((c.relname in ('modal_native_origin_read_capabilities','modal_inventory_read_capabilities','usage_allowance_capabilities','session_import_batches', ${ARTIFACT_PINS_TABLE}) or
|
|
2644
|
+
((c.relname in ('modal_native_origin_read_capabilities','modal_inventory_read_capabilities','usage_allowance_capabilities','session_import_batches', ${ARTIFACT_PINS_TABLE}, ${SITE_CANCELLATION_CAPABILITY_TABLE}) or
|
|
2639
2645
|
c.relname in (select jsonb_array_elements_text(${JSON.stringify([...RUNTIME_ALLOWANCE_PRIVATE_TABLES, ...RUNTIME_SESSION_USAGE_LIMIT_PRIVATE_TABLES, "session_usage_limit_capabilities"])}::jsonb))) and
|
|
2640
2646
|
has_any_column_privilege(current_user, c.oid, 'UPDATE'))) as can_update,
|
|
2641
2647
|
has_table_privilege(current_user, c.oid, 'DELETE') as can_delete,
|
|
@@ -2657,6 +2663,7 @@ async function inspectRuntimeDatabasePosture(db, options) {
|
|
|
2657
2663
|
${PERSONAL_RESOURCE_CAPABILITY_TABLE},
|
|
2658
2664
|
${SCHEDULED_PERSONAL_RESOURCE_CAPABILITY_TABLE},
|
|
2659
2665
|
${VARIABLE_SET_CAPABILITY_TABLE},
|
|
2666
|
+
${SITE_CANCELLATION_CAPABILITY_TABLE},
|
|
2660
2667
|
${VAULT_CAPABILITY_TABLE},
|
|
2661
2668
|
${PERSONAL_DOCUMENT_CAPABILITY_TABLE},
|
|
2662
2669
|
${DOCUMENT_MIGRATION_CAPABILITY_TABLE},
|
|
@@ -2721,7 +2728,8 @@ async function inspectRuntimeDatabasePosture(db, options) {
|
|
|
2721
2728
|
from aclexplode(coalesce(p.proacl, acldefault('f', p.proowner))) acl
|
|
2722
2729
|
where acl.grantee = 0 and acl.privilege_type = 'EXECUTE'
|
|
2723
2730
|
) as public_execute,
|
|
2724
|
-
p.prosecdef as security_definer
|
|
2731
|
+
p.prosecdef as security_definer,
|
|
2732
|
+
p.proconfig as configuration
|
|
2725
2733
|
from pg_proc p
|
|
2726
2734
|
join pg_namespace n on n.oid = p.pronamespace
|
|
2727
2735
|
where n.nspname = ${targetSchema}
|
|
@@ -2729,9 +2737,11 @@ async function inspectRuntimeDatabasePosture(db, options) {
|
|
|
2729
2737
|
and (p.proname || '(' || pg_catalog.oidvectortypes(p.proargtypes) || ')') = any(
|
|
2730
2738
|
array[
|
|
2731
2739
|
${sql.join(
|
|
2732
|
-
[
|
|
2733
|
-
|
|
2734
|
-
|
|
2740
|
+
[
|
|
2741
|
+
...targetSchemaCapabilityRoutines,
|
|
2742
|
+
...targetSchemaForbiddenRoutines,
|
|
2743
|
+
SITE_CANCELLATION_PREDICATE
|
|
2744
|
+
].map((name) => sql`${name}`),
|
|
2735
2745
|
sql`, `
|
|
2736
2746
|
)}
|
|
2737
2747
|
]::text[]
|
|
@@ -2743,7 +2753,8 @@ async function inspectRuntimeDatabasePosture(db, options) {
|
|
|
2743
2753
|
owner: row.owner,
|
|
2744
2754
|
execute: row.can_execute,
|
|
2745
2755
|
publicExecute: row.public_execute,
|
|
2746
|
-
securityDefiner: row.security_definer
|
|
2756
|
+
securityDefiner: row.security_definer,
|
|
2757
|
+
configuration: row.configuration
|
|
2747
2758
|
})).sort((left, right) => left.name.localeCompare(right.name));
|
|
2748
2759
|
const privateRoutines = resultRows(
|
|
2749
2760
|
await tx.execute(sql`
|
|
@@ -4626,6 +4637,28 @@ function evaluateRuntimeDatabasePosture(posture, options) {
|
|
|
4626
4637
|
violations.push("organization usage aggregate capability is missing or unsafe");
|
|
4627
4638
|
}
|
|
4628
4639
|
}
|
|
4640
|
+
const siteCancellation = posture.privateTables.find(
|
|
4641
|
+
(table) => table.name === SITE_CANCELLATION_CAPABILITY_TABLE
|
|
4642
|
+
);
|
|
4643
|
+
const siteCancellationPredicate = posture.targetRoutines.filter(
|
|
4644
|
+
(routine) => routine.name === SITE_CANCELLATION_PREDICATE
|
|
4645
|
+
);
|
|
4646
|
+
const siteCancellationRoutines = posture.privateRoutines.filter(
|
|
4647
|
+
(routine) => SITE_CANCELLATION_PRIVATE_ROUTINES.includes(routine.name)
|
|
4648
|
+
);
|
|
4649
|
+
if (!options.protectedTables || siteCancellation || siteCancellationPredicate.length || siteCancellationRoutines.length) {
|
|
4650
|
+
if (!siteCancellation || siteCancellation.owner === expectedRole || siteCancellation.owner !== tableByName.get("sessions")?.owner || siteCancellation.select || siteCancellation.insert || siteCancellation.update || siteCancellation.delete || siteCancellation.truncate || siteCancellation.references || siteCancellation.trigger)
|
|
4651
|
+
violations.push("Site cancellation capability ledger is missing or unsafe");
|
|
4652
|
+
const predicate = siteCancellationPredicate[0];
|
|
4653
|
+
if (siteCancellationPredicate.length !== 1 || !predicate?.securityDefiner || !predicate.execute || !predicate.publicExecute || predicate.owner !== siteCancellation?.owner || !predicate.configuration?.includes("search_path=pg_catalog"))
|
|
4654
|
+
violations.push("Site cancellation policy predicate is missing or unsafe");
|
|
4655
|
+
for (const name of SITE_CANCELLATION_PRIVATE_ROUTINES) {
|
|
4656
|
+
const matches = siteCancellationRoutines.filter((routine2) => routine2.name === name);
|
|
4657
|
+
const routine = matches[0];
|
|
4658
|
+
if (matches.length !== 1 || !routine?.securityDefiner || !routine.execute || routine.publicExecute || routine.owner !== siteCancellation?.owner || !(name.startsWith("end_") ? routine.configuration?.includes("search_path=pg_catalog") : safeSearchPath(routine)))
|
|
4659
|
+
violations.push(`Site cancellation routine ${name} is missing or unsafe`);
|
|
4660
|
+
}
|
|
4661
|
+
}
|
|
4629
4662
|
const modelCallFactsOwner = tableByName.get("model_call_facts")?.owner;
|
|
4630
4663
|
const modelFactCapabilityRoutines = new Set(
|
|
4631
4664
|
options.modelFactCapabilityRoutines ?? MODEL_FACT_CAPABILITY_ROUTINES.map(([name]) => name)
|
|
@@ -7086,6 +7119,21 @@ BEGIN
|
|
|
7086
7119
|
REVOKE ALL ON FUNCTION opengeni_private.insights_raw_amount_inputs(uuid,uuid,timestamptz,timestamptz) FROM PUBLIC;
|
|
7087
7120
|
REVOKE ALL ON FUNCTION opengeni_private.insights_usage_payer(text,text), opengeni_private.insights_usage_filter(jsonb,jsonb) FROM PUBLIC;
|
|
7088
7121
|
END IF;
|
|
7122
|
+
IF to_regprocedure('opengeni_private.insights_site_usage(uuid,uuid,timestamptz,timestamptz,text)') IS NOT NULL THEN
|
|
7123
|
+
REVOKE ALL ON FUNCTION opengeni_private.insights_site_usage(uuid,uuid,timestamptz,timestamptz,text) FROM PUBLIC;
|
|
7124
|
+
END IF;
|
|
7125
|
+
IF to_regclass('opengeni_private.site_session_cancellation_capabilities') IS NOT NULL THEN
|
|
7126
|
+
EXECUTE format('REVOKE ALL ON TABLE opengeni_private.site_session_cancellation_capabilities FROM %I', ${literal(role)});
|
|
7127
|
+
EXECUTE format('REVOKE ALL (%s) ON TABLE opengeni_private.site_session_cancellation_capabilities FROM %I',
|
|
7128
|
+
(SELECT string_agg(quote_ident(attname),',' ORDER BY attnum) FROM pg_attribute
|
|
7129
|
+
WHERE attrelid='opengeni_private.site_session_cancellation_capabilities'::regclass AND attnum>0 AND NOT attisdropped), ${literal(role)});
|
|
7130
|
+
REVOKE ALL ON TABLE opengeni_private.site_session_cancellation_capabilities FROM PUBLIC;
|
|
7131
|
+
EXECUTE format('REVOKE ALL (%s) ON TABLE opengeni_private.site_session_cancellation_capabilities FROM PUBLIC',
|
|
7132
|
+
(SELECT string_agg(quote_ident(attname),',' ORDER BY attnum) FROM pg_attribute
|
|
7133
|
+
WHERE attrelid='opengeni_private.site_session_cancellation_capabilities'::regclass AND attnum>0 AND NOT attisdropped));
|
|
7134
|
+
REVOKE ALL ON FUNCTION opengeni_private.begin_site_session_cancellation(uuid,uuid,uuid,uuid),
|
|
7135
|
+
opengeni_private.end_site_session_cancellation(uuid) FROM PUBLIC;
|
|
7136
|
+
END IF;
|
|
7089
7137
|
IF to_regclass('opengeni_private.usage_allowance_capabilities') IS NOT NULL THEN
|
|
7090
7138
|
EXECUTE format('REVOKE ALL ON TABLE opengeni_private.usage_allowance_capabilities FROM %I', ${literal(role)});
|
|
7091
7139
|
EXECUTE format('REVOKE ALL (backend_pid,transaction_id,data_schema,account_id,workspace_id) ON TABLE opengeni_private.usage_allowance_capabilities FROM %I', ${literal(role)});
|
|
@@ -7455,4 +7503,4 @@ export {
|
|
|
7455
7503
|
provisionRoles,
|
|
7456
7504
|
runProvisionRolesCli
|
|
7457
7505
|
};
|
|
7458
|
-
//# sourceMappingURL=chunk-
|
|
7506
|
+
//# sourceMappingURL=chunk-HQWXEF77.js.map
|