@opengeni/db 0.28.9 → 0.36.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/attached-browser-devices.d.ts +42 -0
- package/dist/attempt-tool-catalogs.d.ts +16 -0
- package/dist/browser-auth.d.ts +299 -0
- package/dist/browser-downloads.d.ts +51 -0
- package/dist/browser-identities.d.ts +137 -0
- package/dist/browser-sessions.d.ts +354 -0
- package/dist/browser-state-artifacts.d.ts +91 -0
- package/dist/canonical-human-identities.d.ts +48 -0
- package/dist/canonical-human-identities.js +28 -0
- package/dist/canonical-human-identities.js.map +1 -0
- package/dist/capability-components.d.ts +37 -0
- package/dist/capability-integrations.d.ts +194 -0
- package/dist/chunk-5KTIEDX7.js +13200 -0
- package/dist/chunk-5KTIEDX7.js.map +1 -0
- package/dist/chunk-CQZ4QSP5.js +995 -0
- package/dist/chunk-CQZ4QSP5.js.map +1 -0
- package/dist/chunk-F32YT7MP.js +117 -0
- package/dist/chunk-F32YT7MP.js.map +1 -0
- package/dist/chunk-JC5QPLUM.js +666 -0
- package/dist/chunk-JC5QPLUM.js.map +1 -0
- package/dist/chunk-P3RE4D2B.js +3535 -0
- package/dist/chunk-P3RE4D2B.js.map +1 -0
- package/dist/chunk-TAUTWOS5.js +259 -0
- package/dist/chunk-TAUTWOS5.js.map +1 -0
- package/dist/chunk-VKLB2ZGI.js +2389 -0
- package/dist/chunk-VKLB2ZGI.js.map +1 -0
- package/dist/codemode-operations.d.ts +117 -0
- package/dist/codex-token-resolver.d.ts +2 -2
- package/dist/company-profile-schema.d.ts +798 -0
- package/dist/company-profile.d.ts +268 -0
- package/dist/computer-sessions.d.ts +109 -0
- package/dist/connection-token-resolver.d.ts +9 -4
- package/dist/database.d.ts +57 -3
- package/dist/editable-artifact-durable-export.d.ts +153 -0
- package/dist/editable-artifact-durable-export.js +788 -0
- package/dist/editable-artifact-durable-export.js.map +1 -0
- package/dist/editable-artifact-materialization.d.ts +123 -0
- package/dist/editable-artifacts-schema.d.ts +4152 -0
- package/dist/editable-artifacts.d.ts +610 -0
- package/dist/editable-artifacts.js +26 -0
- package/dist/editable-artifacts.js.map +1 -0
- package/dist/generated-images.d.ts +139 -0
- package/dist/index.d.ts +1122 -126
- package/dist/index.js +42329 -18407
- package/dist/index.js.map +1 -1
- package/dist/insights.d.ts +73 -10
- package/dist/integration-bindings.d.ts +70 -0
- package/dist/integration-facets.d.ts +99 -0
- package/dist/interaction-revisions.d.ts +14 -0
- package/dist/interaction-schema.d.ts +6036 -0
- package/dist/knowledge-source-sync-schema.d.ts +1679 -0
- package/dist/knowledge-source-sync.d.ts +274 -0
- package/dist/memory-governance.d.ts +2 -2
- package/dist/memory-slack-delivery.d.ts +101 -0
- package/dist/new-session-drafts.d.ts +2 -2
- package/dist/pack-components.d.ts +76 -0
- package/dist/pack-installations.d.ts +86 -0
- package/dist/persistence-errors.d.ts +3 -3
- package/dist/plugin-packages.d.ts +126 -0
- package/dist/preference-registry.d.ts +1 -1
- package/dist/provision-roles.d.ts +9 -1
- package/dist/provision-roles.js +1 -1
- package/dist/runtime-posture.d.ts +19 -6
- package/dist/schema.d.ts +22654 -9359
- package/dist/schema.js +209 -3
- package/dist/scoped-knowledge.d.ts +97 -1
- package/dist/session-control.d.ts +33 -7
- package/dist/session-queue-commands.d.ts +19 -11
- package/dist/session-realtime-context.d.ts +2 -2
- package/dist/session-realtime-ledger.d.ts +4 -4
- package/dist/session-realtime-mirror.d.ts +2 -2
- package/dist/session-realtime-state.d.ts +1 -1
- package/dist/session-realtime-terminal.d.ts +1 -1
- package/dist/session-realtime.d.ts +7 -7
- package/dist/session-tenancy.d.ts +44 -0
- package/dist/session-tenancy.js +16 -0
- package/dist/session-tenancy.js.map +1 -0
- package/dist/session-tool-call-settlement.d.ts +1 -1
- package/dist/slack-task-policy-schema.d.ts +847 -0
- package/dist/slack-task-policy.d.ts +65 -0
- package/dist/slack-user-link-access.d.ts +54 -0
- package/dist/task-notes-schema.d.ts +924 -0
- package/dist/task-notes.d.ts +85 -0
- package/dist/transcription-recordings.d.ts +2 -2
- package/dist/turn-initiator.d.ts +2 -2
- package/dist/video-generation.d.ts +225 -0
- package/dist/video-generation.js +68 -0
- package/dist/video-generation.js.map +1 -0
- package/dist/workspace-artifacts.d.ts +1 -1
- package/dist/workspace-instruction-policies.d.ts +1 -1
- package/dist/workspace-learning-policy-schema.d.ts +932 -0
- package/dist/workspace-learning-policy.d.ts +161 -0
- package/dist/xai-subscription.d.ts +326 -0
- package/drizzle/0183_model_call_provider_cost_estimates.sql +39 -0
- package/drizzle/0184_sandbox_drain_teardown_fence.sql +682 -0
- package/drizzle/0185_temporal_schedule_cleanup_outbox.sql +168 -0
- package/drizzle/0186_sandbox_capture_provider_contract.sql +400 -0
- package/drizzle/0187_generated_image_artifacts.sql +173 -0
- package/drizzle/0188_image_generation_retention_failure.sql +25 -0
- package/drizzle/0189_retained_session_image_formats.sql +13 -0
- package/drizzle/0190_timeline_annotations.sql +31 -0
- package/drizzle/0191_editable_artifact_engine.sql +3853 -0
- package/drizzle/0192_editable_artifact_live_tickets.sql +338 -0
- package/drizzle/0193_editable_artifact_authorization.sql +190 -0
- package/drizzle/0194_editable_artifact_durable_exports.sql +160 -0
- package/drizzle/0195_editable_artifact_import_authorization.sql +203 -0
- package/drizzle/0196_rig_provider_images.sql +152 -0
- package/drizzle/0197_knowledge_source_sync_schedules.sql +523 -0
- package/drizzle/0198_memory_slack_publication_delivery.sql +393 -0
- package/drizzle/0199_workspace_learning_policy.sql +980 -0
- package/drizzle/0201_company_profile_authority.sql +849 -0
- package/drizzle/0202_document_index_checkpoints.sql +85 -0
- package/drizzle/0203_durable_video_generation.sql +353 -0
- package/drizzle/0204_video_generation_funding.sql +44 -0
- package/drizzle/0205_attempt_tool_catalogs.sql +230 -0
- package/drizzle/0206_browser_sessions.sql +646 -0
- package/drizzle/0207_browser_identities.sql +379 -0
- package/drizzle/0208_attached_browser_devices.sql +165 -0
- package/drizzle/0209_computer_sessions.sql +575 -0
- package/drizzle/0210_browser_auth_network_interventions.sql +441 -0
- package/drizzle/0211_editable_artifact_session_links.sql +58 -0
- package/drizzle/0212_browser_state_transfer_hardening.sql +560 -0
- package/drizzle/0212_slack_installation_bindings.sql +348 -0
- package/drizzle/0213_browser_interaction_authority.sql +67 -0
- package/drizzle/0213_slack_user_link_access_requests.sql +177 -0
- package/drizzle/0214_browser_download_saves.sql +34 -0
- package/drizzle/0214_session_activity_commit_gate.sql +262 -0
- package/drizzle/0215_browser_controller_host.sql +385 -0
- package/drizzle/0215_capabilities_platform.sql +980 -0
- package/drizzle/0216_browser_auth_health_evidence.sql +137 -0
- package/drizzle/0216_pack_component_ownership.sql +235 -0
- package/drizzle/0217_capability_definition_delete_authority.sql +32 -0
- package/drizzle/0217_external_browser_auth_operations.sql +22 -0
- package/drizzle/0218_organization_tenancy_foundation.sql +299 -0
- package/drizzle/0219_organization_tenancy_managed_human_provisioning.sql +317 -0
- package/drizzle/0219_site_auth_maintenance_sessions.sql +234 -0
- package/drizzle/0220_memory_slack_append_only_cascade.sql +38 -0
- package/drizzle/0220_session_channels.sql +54 -0
- package/drizzle/0221_sessions_channel_index.sql +5 -0
- package/drizzle/0222_session_visibility_authority_epochs.sql +158 -0
- package/drizzle/0222_sessions_channel_fk.sql +89 -0
- package/drizzle/0223_pending_tool_event_output.sql +55 -0
- package/drizzle/0223_sessions_channel_fk_validate.sql +118 -0
- package/drizzle/0224_slack_post_outcome_reconciliation.sql +123 -0
- package/drizzle/0225_session_visibility_fork_activation.sql +1363 -0
- package/drizzle/0226_personal_codex_authority_foundation.sql +365 -0
- package/drizzle/0227_slack_native_actions.sql +145 -0
- package/drizzle/0228_interaction_controller_data_plane.sql +14 -0
- package/drizzle/0228_slack_task_policy.sql +400 -0
- package/drizzle/0229_slack_inbox_file_fact.sql +10 -0
- package/drizzle/0230_user_scoped_variable_sets_rigs.sql +84 -0
- package/drizzle/0231_integration_definition_identity_cutover.sql +271 -0
- package/drizzle/0232_integration_facet_authority_cutover.sql +610 -0
- package/drizzle/0233_skill_and_integration_authority_cutover.sql +1162 -0
- package/drizzle/0234_xai_subscription_authority.sql +1139 -0
- package/drizzle/0235_canonical_human_login_bindings.sql +920 -0
- package/drizzle/0236_browser_identity_lifecycle.sql +39 -0
- package/drizzle/0236_session_visibility_slack_policy.sql +72 -0
- package/drizzle/0237_interaction_transition_reaper.sql +263 -0
- package/drizzle/0238_goal_persistence_policy.sql +471 -0
- package/drizzle/0238_supergrok_realtime_model.sql +29 -0
- package/drizzle/0239_supergrok_video_funding.sql +50 -0
- package/drizzle/0239_task_tree_notes.sql +990 -0
- package/package.json +26 -5
- package/src/attached-browser-devices.ts +371 -0
- package/src/attempt-tool-catalogs.ts +131 -0
- package/src/browser-auth.ts +4373 -0
- package/src/browser-downloads.ts +517 -0
- package/src/browser-identities.ts +1385 -0
- package/src/browser-sessions.ts +2294 -0
- package/src/browser-state-artifacts.ts +449 -0
- package/src/canonical-human-identities.ts +317 -0
- package/src/capability-components.ts +166 -0
- package/src/capability-integrations.ts +1571 -0
- package/src/codemode-operations.ts +674 -0
- package/src/company-profile-schema.ts +143 -0
- package/src/company-profile.ts +968 -0
- package/src/computer-sessions.ts +1130 -0
- package/src/connection-token-resolver.ts +270 -25
- package/src/database.ts +468 -24
- package/src/editable-artifact-durable-export.ts +1201 -0
- package/src/editable-artifact-materialization.ts +893 -0
- package/src/editable-artifacts-schema.ts +879 -0
- package/src/editable-artifacts.ts +5404 -0
- package/src/generated-images.ts +740 -0
- package/src/index.ts +9963 -1465
- package/src/insights.ts +251 -23
- package/src/integration-bindings.ts +455 -0
- package/src/integration-facets.ts +862 -0
- package/src/interaction-revisions.ts +70 -0
- package/src/interaction-schema.ts +1606 -0
- package/src/knowledge-source-sync-schema.ts +192 -0
- package/src/knowledge-source-sync.ts +1922 -0
- package/src/memory-slack-delivery.ts +801 -0
- package/src/pack-components.ts +954 -0
- package/src/pack-installations.ts +886 -0
- package/src/persistence-errors.ts +4 -7
- package/src/plugin-packages.ts +1186 -0
- package/src/provision-roles.ts +534 -1
- package/src/runtime-posture-cli.ts +9 -0
- package/src/runtime-posture.ts +721 -5
- package/src/schema.ts +6270 -3159
- package/src/scoped-knowledge-schema.ts +1 -1
- package/src/scoped-knowledge.ts +655 -3
- package/src/session-control.ts +130 -42
- package/src/session-queue-commands.ts +265 -15
- package/src/session-realtime-context.ts +2 -2
- package/src/session-realtime-ledger.ts +3 -3
- package/src/session-realtime.ts +7 -7
- package/src/session-tenancy.ts +188 -0
- package/src/session-tool-call-settlement.ts +18 -3
- package/src/slack-task-policy-schema.ts +130 -0
- package/src/slack-task-policy.ts +341 -0
- package/src/slack-user-link-access.ts +702 -0
- package/src/task-notes-schema.ts +135 -0
- package/src/task-notes.ts +178 -0
- package/src/video-generation.ts +1530 -0
- package/src/workspace-artifacts.ts +1 -1
- package/src/workspace-learning-policy-schema.ts +139 -0
- package/src/workspace-learning-policy.ts +595 -0
- package/src/xai-subscription.ts +1887 -0
- package/dist/chunk-P6CUHXQZ.js +0 -7248
- package/dist/chunk-P6CUHXQZ.js.map +0 -1
- package/dist/chunk-VHBFHMPC.js +0 -1219
- package/dist/chunk-VHBFHMPC.js.map +0 -1
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
-- deployment-mode: maintenance
|
|
2
|
+
-- Replace the provider-preset / nullable integration identity with one
|
|
3
|
+
-- mandatory Integration Definition identity across immutable manifests,
|
|
4
|
+
-- compiled revisions, and provider-OAuth Connection metadata. This is a
|
|
5
|
+
-- one-way protocol cutover: all opengeni_app sessions must be stopped.
|
|
6
|
+
|
|
7
|
+
SET LOCAL lock_timeout = '5s';
|
|
8
|
+
SET LOCAL statement_timeout = '30min';
|
|
9
|
+
|
|
10
|
+
DO $maintenance_preflight_guard$
|
|
11
|
+
BEGIN
|
|
12
|
+
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app')
|
|
13
|
+
AND EXISTS (
|
|
14
|
+
SELECT 1
|
|
15
|
+
FROM pg_stat_activity
|
|
16
|
+
WHERE datname = current_database()
|
|
17
|
+
AND usename = 'opengeni_app'
|
|
18
|
+
AND pid <> pg_backend_pid()
|
|
19
|
+
)
|
|
20
|
+
THEN
|
|
21
|
+
RAISE EXCEPTION
|
|
22
|
+
'Integration Definition identity activation requires all opengeni_app sessions to be stopped'
|
|
23
|
+
USING ERRCODE = '55000';
|
|
24
|
+
END IF;
|
|
25
|
+
END
|
|
26
|
+
$maintenance_preflight_guard$;
|
|
27
|
+
|
|
28
|
+
LOCK TABLE capability_plugin_versions IN ACCESS EXCLUSIVE MODE;
|
|
29
|
+
LOCK TABLE integration_spec_revisions IN ACCESS EXCLUSIVE MODE;
|
|
30
|
+
LOCK TABLE connections IN ACCESS EXCLUSIVE MODE;
|
|
31
|
+
|
|
32
|
+
DO $maintenance_guard$
|
|
33
|
+
BEGIN
|
|
34
|
+
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app')
|
|
35
|
+
AND EXISTS (
|
|
36
|
+
SELECT 1
|
|
37
|
+
FROM pg_stat_activity
|
|
38
|
+
WHERE datname = current_database()
|
|
39
|
+
AND usename = 'opengeni_app'
|
|
40
|
+
AND pid <> pg_backend_pid()
|
|
41
|
+
)
|
|
42
|
+
THEN
|
|
43
|
+
RAISE EXCEPTION
|
|
44
|
+
'Integration Definition identity activation requires all opengeni_app sessions to be stopped'
|
|
45
|
+
USING ERRCODE = '55000';
|
|
46
|
+
END IF;
|
|
47
|
+
END
|
|
48
|
+
$maintenance_guard$;
|
|
49
|
+
|
|
50
|
+
CREATE OR REPLACE FUNCTION opengeni_private.integration_definition_canonical_json(value jsonb)
|
|
51
|
+
RETURNS text
|
|
52
|
+
LANGUAGE plpgsql
|
|
53
|
+
IMMUTABLE
|
|
54
|
+
STRICT
|
|
55
|
+
PARALLEL SAFE
|
|
56
|
+
AS $canonical_json$
|
|
57
|
+
DECLARE
|
|
58
|
+
rendered text;
|
|
59
|
+
BEGIN
|
|
60
|
+
CASE jsonb_typeof(value)
|
|
61
|
+
WHEN 'object' THEN
|
|
62
|
+
SELECT COALESCE(
|
|
63
|
+
'{' || string_agg(
|
|
64
|
+
to_jsonb(entry.key)::text || ':' ||
|
|
65
|
+
opengeni_private.integration_definition_canonical_json(entry.value),
|
|
66
|
+
',' ORDER BY entry.key COLLATE "C"
|
|
67
|
+
) || '}',
|
|
68
|
+
'{}'
|
|
69
|
+
)
|
|
70
|
+
INTO rendered
|
|
71
|
+
FROM jsonb_each(value) AS entry(key, value);
|
|
72
|
+
RETURN rendered;
|
|
73
|
+
WHEN 'array' THEN
|
|
74
|
+
SELECT COALESCE(
|
|
75
|
+
'[' || string_agg(
|
|
76
|
+
opengeni_private.integration_definition_canonical_json(entry.value),
|
|
77
|
+
',' ORDER BY entry.ordinality
|
|
78
|
+
) || ']',
|
|
79
|
+
'[]'
|
|
80
|
+
)
|
|
81
|
+
INTO rendered
|
|
82
|
+
FROM jsonb_array_elements(value) WITH ORDINALITY AS entry(value, ordinality);
|
|
83
|
+
RETURN rendered;
|
|
84
|
+
ELSE
|
|
85
|
+
RETURN value::text;
|
|
86
|
+
END CASE;
|
|
87
|
+
END
|
|
88
|
+
$canonical_json$;
|
|
89
|
+
|
|
90
|
+
DO $identity_precondition$
|
|
91
|
+
BEGIN
|
|
92
|
+
IF EXISTS (
|
|
93
|
+
SELECT 1
|
|
94
|
+
FROM capability_plugin_versions version
|
|
95
|
+
WHERE version.manifest ->> 'kind' = 'integration'
|
|
96
|
+
AND COALESCE(
|
|
97
|
+
NULLIF(version.manifest ->> 'definitionId', ''),
|
|
98
|
+
NULLIF(version.manifest ->> 'presetId', ''),
|
|
99
|
+
(
|
|
100
|
+
SELECT COALESCE(
|
|
101
|
+
NULLIF(revision.spec ->> 'definitionId', ''),
|
|
102
|
+
NULLIF(revision.spec ->> 'integrationId', '')
|
|
103
|
+
)
|
|
104
|
+
FROM capability_facets facet
|
|
105
|
+
JOIN capability_api_facets api ON api.facet_id = facet.id
|
|
106
|
+
JOIN integration_spec_revisions revision ON revision.api_facet_id = api.facet_id
|
|
107
|
+
WHERE facet.plugin_version_id = version.id
|
|
108
|
+
ORDER BY (revision.status = 'active') DESC, revision.revision DESC
|
|
109
|
+
LIMIT 1
|
|
110
|
+
)
|
|
111
|
+
) IS NULL
|
|
112
|
+
) THEN
|
|
113
|
+
RAISE EXCEPTION 'an Integration definition has no recoverable immutable identity'
|
|
114
|
+
USING ERRCODE = '23514';
|
|
115
|
+
END IF;
|
|
116
|
+
END
|
|
117
|
+
$identity_precondition$;
|
|
118
|
+
|
|
119
|
+
ALTER TABLE integration_spec_revisions DISABLE TRIGGER integration_spec_revisions_immutable;
|
|
120
|
+
ALTER TABLE capability_plugin_versions DISABLE TRIGGER capability_plugin_versions_restrict_update;
|
|
121
|
+
|
|
122
|
+
UPDATE integration_spec_revisions revision
|
|
123
|
+
SET spec = (revision.spec - 'integrationId') || jsonb_build_object(
|
|
124
|
+
'definitionId',
|
|
125
|
+
COALESCE(
|
|
126
|
+
NULLIF(version.manifest ->> 'definitionId', ''),
|
|
127
|
+
NULLIF(version.manifest ->> 'presetId', ''),
|
|
128
|
+
NULLIF(revision.spec ->> 'definitionId', ''),
|
|
129
|
+
NULLIF(revision.spec ->> 'integrationId', '')
|
|
130
|
+
)
|
|
131
|
+
)
|
|
132
|
+
FROM capability_api_facets api
|
|
133
|
+
JOIN capability_facets facet ON facet.id = api.facet_id
|
|
134
|
+
JOIN capability_plugin_versions version ON version.id = facet.plugin_version_id
|
|
135
|
+
WHERE revision.api_facet_id = api.facet_id
|
|
136
|
+
AND version.manifest ->> 'kind' = 'integration';
|
|
137
|
+
|
|
138
|
+
WITH migrated AS MATERIALIZED (
|
|
139
|
+
SELECT
|
|
140
|
+
version.id,
|
|
141
|
+
(version.manifest - 'presetId') || jsonb_build_object(
|
|
142
|
+
'definitionId',
|
|
143
|
+
COALESCE(
|
|
144
|
+
NULLIF(version.manifest ->> 'definitionId', ''),
|
|
145
|
+
NULLIF(version.manifest ->> 'presetId', ''),
|
|
146
|
+
(
|
|
147
|
+
SELECT NULLIF(revision.spec ->> 'definitionId', '')
|
|
148
|
+
FROM capability_facets facet
|
|
149
|
+
JOIN capability_api_facets api ON api.facet_id = facet.id
|
|
150
|
+
JOIN integration_spec_revisions revision ON revision.api_facet_id = api.facet_id
|
|
151
|
+
WHERE facet.plugin_version_id = version.id
|
|
152
|
+
ORDER BY (revision.status = 'active') DESC, revision.revision DESC
|
|
153
|
+
LIMIT 1
|
|
154
|
+
)
|
|
155
|
+
),
|
|
156
|
+
'definitionProvenance',
|
|
157
|
+
COALESCE(
|
|
158
|
+
NULLIF(version.manifest ->> 'definitionProvenance', ''),
|
|
159
|
+
CASE
|
|
160
|
+
WHEN NULLIF(version.manifest ->> 'presetId', '') IS NOT NULL THEN 'curated'
|
|
161
|
+
ELSE 'workspace'
|
|
162
|
+
END
|
|
163
|
+
)
|
|
164
|
+
) AS manifest
|
|
165
|
+
FROM capability_plugin_versions version
|
|
166
|
+
WHERE version.manifest ->> 'kind' = 'integration'
|
|
167
|
+
)
|
|
168
|
+
UPDATE capability_plugin_versions version
|
|
169
|
+
SET manifest = migrated.manifest,
|
|
170
|
+
manifest_digest = encode(
|
|
171
|
+
digest(
|
|
172
|
+
convert_to(
|
|
173
|
+
opengeni_private.integration_definition_canonical_json(migrated.manifest),
|
|
174
|
+
'UTF8'
|
|
175
|
+
),
|
|
176
|
+
'sha256'
|
|
177
|
+
),
|
|
178
|
+
'hex'
|
|
179
|
+
)
|
|
180
|
+
FROM migrated
|
|
181
|
+
WHERE version.id = migrated.id;
|
|
182
|
+
|
|
183
|
+
UPDATE connections
|
|
184
|
+
SET metadata = (metadata - 'authorizedPresetIds') || jsonb_build_object(
|
|
185
|
+
'authorizedDefinitionIds',
|
|
186
|
+
(
|
|
187
|
+
SELECT jsonb_agg(candidate.value ORDER BY candidate.value)
|
|
188
|
+
FROM (
|
|
189
|
+
SELECT DISTINCT value
|
|
190
|
+
FROM jsonb_array_elements_text(
|
|
191
|
+
COALESCE(metadata -> 'authorizedDefinitionIds', '[]'::jsonb) ||
|
|
192
|
+
COALESCE(metadata -> 'authorizedPresetIds', '[]'::jsonb)
|
|
193
|
+
) AS entry(value)
|
|
194
|
+
) AS candidate
|
|
195
|
+
)
|
|
196
|
+
)
|
|
197
|
+
WHERE metadata ->> 'credentialRole' = 'api_integration_oauth'
|
|
198
|
+
AND (
|
|
199
|
+
metadata ? 'authorizedPresetIds'
|
|
200
|
+
OR metadata ? 'authorizedDefinitionIds'
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
DO $identity_postcondition$
|
|
204
|
+
BEGIN
|
|
205
|
+
IF EXISTS (
|
|
206
|
+
SELECT 1
|
|
207
|
+
FROM capability_plugin_versions version
|
|
208
|
+
WHERE version.manifest ->> 'kind' = 'integration'
|
|
209
|
+
AND (
|
|
210
|
+
version.manifest ? 'presetId'
|
|
211
|
+
OR NULLIF(version.manifest ->> 'definitionId', '') IS NULL
|
|
212
|
+
OR version.manifest ->> 'definitionProvenance' NOT IN ('curated', 'workspace')
|
|
213
|
+
OR version.manifest_digest <> encode(
|
|
214
|
+
digest(
|
|
215
|
+
convert_to(
|
|
216
|
+
opengeni_private.integration_definition_canonical_json(version.manifest),
|
|
217
|
+
'UTF8'
|
|
218
|
+
),
|
|
219
|
+
'sha256'
|
|
220
|
+
),
|
|
221
|
+
'hex'
|
|
222
|
+
)
|
|
223
|
+
)
|
|
224
|
+
) THEN
|
|
225
|
+
RAISE EXCEPTION 'Integration Definition manifest migration did not converge'
|
|
226
|
+
USING ERRCODE = '23514';
|
|
227
|
+
END IF;
|
|
228
|
+
|
|
229
|
+
IF EXISTS (
|
|
230
|
+
SELECT 1
|
|
231
|
+
FROM integration_spec_revisions revision
|
|
232
|
+
JOIN capability_api_facets api ON api.facet_id = revision.api_facet_id
|
|
233
|
+
JOIN capability_facets facet ON facet.id = api.facet_id
|
|
234
|
+
JOIN capability_plugin_versions version ON version.id = facet.plugin_version_id
|
|
235
|
+
WHERE version.manifest ->> 'kind' = 'integration'
|
|
236
|
+
AND (
|
|
237
|
+
revision.spec ? 'integrationId'
|
|
238
|
+
OR NULLIF(revision.spec ->> 'definitionId', '') IS NULL
|
|
239
|
+
OR revision.spec ->> 'definitionId' <> version.manifest ->> 'definitionId'
|
|
240
|
+
)
|
|
241
|
+
) THEN
|
|
242
|
+
RAISE EXCEPTION 'Integration Definition revision migration did not converge'
|
|
243
|
+
USING ERRCODE = '23514';
|
|
244
|
+
END IF;
|
|
245
|
+
|
|
246
|
+
IF EXISTS (
|
|
247
|
+
SELECT 1
|
|
248
|
+
FROM connections
|
|
249
|
+
WHERE metadata ->> 'credentialRole' = 'api_integration_oauth'
|
|
250
|
+
AND (
|
|
251
|
+
metadata ? 'authorizedPresetIds'
|
|
252
|
+
OR jsonb_typeof(metadata -> 'authorizedDefinitionIds') <> 'array'
|
|
253
|
+
OR jsonb_array_length(metadata -> 'authorizedDefinitionIds') = 0
|
|
254
|
+
OR EXISTS (
|
|
255
|
+
SELECT 1
|
|
256
|
+
FROM jsonb_array_elements(metadata -> 'authorizedDefinitionIds') AS entry(value)
|
|
257
|
+
WHERE jsonb_typeof(entry.value) <> 'string'
|
|
258
|
+
OR btrim(entry.value #>> '{}') = ''
|
|
259
|
+
)
|
|
260
|
+
)
|
|
261
|
+
) THEN
|
|
262
|
+
RAISE EXCEPTION 'Integration Definition Connection metadata migration did not converge'
|
|
263
|
+
USING ERRCODE = '23514';
|
|
264
|
+
END IF;
|
|
265
|
+
END
|
|
266
|
+
$identity_postcondition$;
|
|
267
|
+
|
|
268
|
+
ALTER TABLE capability_plugin_versions ENABLE TRIGGER capability_plugin_versions_restrict_update;
|
|
269
|
+
ALTER TABLE integration_spec_revisions ENABLE TRIGGER integration_spec_revisions_immutable;
|
|
270
|
+
|
|
271
|
+
DROP FUNCTION opengeni_private.integration_definition_canonical_json(jsonb);
|