@opengeni/db 0.18.1 → 0.21.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/chunk-NK2A36KP.js +5822 -0
- package/dist/chunk-NK2A36KP.js.map +1 -0
- package/dist/{chunk-T6RSJT6C.js → chunk-OTJHD33E.js} +109 -1
- package/dist/chunk-OTJHD33E.js.map +1 -0
- package/dist/index.d.ts +25 -1
- package/dist/index.js +5761 -2827
- package/dist/index.js.map +1 -1
- package/dist/memory-domain.d.ts +110 -1
- package/dist/memory-governance-schema.d.ts +562 -0
- package/dist/memory-governance.d.ts +41 -0
- package/dist/provision-roles.js +1 -1
- package/dist/runtime-posture.d.ts +3 -3
- package/dist/schema.d.ts +425 -0
- package/dist/schema.js +37 -1
- package/dist/scoped-knowledge-schema.d.ts +5341 -0
- package/dist/scoped-knowledge.d.ts +208 -0
- package/dist/session-queue-commands.d.ts +2 -1
- package/drizzle/0152_hierarchical_memory_foundation.sql +1589 -0
- package/drizzle/0153_mcp_personal_connection_delegations.sql +181 -0
- package/drizzle/0154_scoped_knowledge_foundation.sql +2292 -0
- package/package.json +3 -3
- package/src/connection-token-resolver.ts +3 -0
- package/src/index.ts +351 -12
- package/src/memory-domain.ts +360 -1
- package/src/memory-governance-schema.ts +162 -0
- package/src/memory-governance.ts +317 -0
- package/src/provision-roles.ts +72 -0
- package/src/runtime-posture.ts +36 -0
- package/src/schema.ts +87 -4
- package/src/scoped-knowledge-schema.ts +603 -0
- package/src/scoped-knowledge.ts +2891 -0
- package/src/session-queue-commands.ts +48 -0
- package/dist/chunk-T6RSJT6C.js.map +0 -1
- package/dist/chunk-YKWJ7QJ2.js +0 -5000
- package/dist/chunk-YKWJ7QJ2.js.map +0 -1
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
-- deployment-mode: rolling
|
|
2
|
+
-- Personal MCP authority is additive and frozen separately from causal initiators.
|
|
3
|
+
|
|
4
|
+
ALTER TABLE sessions
|
|
5
|
+
ADD COLUMN initial_personal_connection_delegations jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
6
|
+
ADD COLUMN parent_turn_id uuid,
|
|
7
|
+
ADD CONSTRAINT sessions_initial_personal_delegations_array_chk
|
|
8
|
+
CHECK (
|
|
9
|
+
jsonb_typeof(initial_personal_connection_delegations) = 'array'
|
|
10
|
+
AND jsonb_array_length(initial_personal_connection_delegations) <= 128
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
ALTER TABLE session_turns
|
|
14
|
+
ADD COLUMN personal_connection_delegations jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
15
|
+
ADD CONSTRAINT session_turns_personal_delegations_array_chk
|
|
16
|
+
CHECK (
|
|
17
|
+
jsonb_typeof(personal_connection_delegations) = 'array'
|
|
18
|
+
AND jsonb_array_length(personal_connection_delegations) <= 128
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
ALTER TABLE session_system_updates
|
|
22
|
+
ADD COLUMN personal_connection_delegations jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
23
|
+
ADD CONSTRAINT session_updates_personal_delegations_array_chk
|
|
24
|
+
CHECK (
|
|
25
|
+
jsonb_typeof(personal_connection_delegations) = 'array'
|
|
26
|
+
AND jsonb_array_length(personal_connection_delegations) <= 128
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
ALTER TABLE session_system_update_outbox
|
|
30
|
+
ADD COLUMN personal_connection_delegations jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
31
|
+
ADD CONSTRAINT session_update_outbox_personal_delegations_array_chk
|
|
32
|
+
CHECK (
|
|
33
|
+
jsonb_typeof(personal_connection_delegations) = 'array'
|
|
34
|
+
AND jsonb_array_length(personal_connection_delegations) <= 128
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
ALTER TABLE scheduled_tasks
|
|
38
|
+
ADD COLUMN created_by_kind text NOT NULL DEFAULT 'service',
|
|
39
|
+
ADD COLUMN created_by_subject_id text NOT NULL DEFAULT 'unattributed-legacy',
|
|
40
|
+
ADD COLUMN created_by_context jsonb NOT NULL DEFAULT '{"backfill":true}'::jsonb,
|
|
41
|
+
ADD COLUMN personal_connection_delegations jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
42
|
+
ADD CONSTRAINT scheduled_tasks_created_by_kind_check
|
|
43
|
+
CHECK (created_by_kind IN ('subject', 'service')),
|
|
44
|
+
ADD CONSTRAINT scheduled_tasks_created_by_subject_nonempty_check
|
|
45
|
+
CHECK (octet_length(btrim(created_by_subject_id)) BETWEEN 1 AND 512),
|
|
46
|
+
ADD CONSTRAINT scheduled_tasks_created_by_context_object_check
|
|
47
|
+
CHECK (jsonb_typeof(created_by_context) = 'object'),
|
|
48
|
+
ADD CONSTRAINT scheduled_tasks_personal_delegations_array_chk
|
|
49
|
+
CHECK (
|
|
50
|
+
jsonb_typeof(personal_connection_delegations) = 'array'
|
|
51
|
+
AND jsonb_array_length(personal_connection_delegations) <= 128
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
DROP FUNCTION opengeni_private.claim_session_system_update_outbox(integer);
|
|
55
|
+
CREATE FUNCTION opengeni_private.claim_session_system_update_outbox(p_limit integer)
|
|
56
|
+
RETURNS TABLE (
|
|
57
|
+
id uuid, account_id uuid, workspace_id uuid, source_session_id uuid,
|
|
58
|
+
target_session_id uuid, dedupe_key text, kind text, classification text,
|
|
59
|
+
source_id text, summary text, payload jsonb, lineage jsonb,
|
|
60
|
+
personal_connection_delegations jsonb
|
|
61
|
+
)
|
|
62
|
+
LANGUAGE plpgsql
|
|
63
|
+
SECURITY DEFINER
|
|
64
|
+
AS $$
|
|
65
|
+
BEGIN
|
|
66
|
+
RETURN QUERY
|
|
67
|
+
WITH claimed AS (
|
|
68
|
+
SELECT o.id FROM session_system_update_outbox o
|
|
69
|
+
WHERE o.status = 'pending'
|
|
70
|
+
ORDER BY o.created_at, o.id
|
|
71
|
+
FOR UPDATE SKIP LOCKED
|
|
72
|
+
LIMIT greatest(1, least(coalesce(p_limit, 100), 100))
|
|
73
|
+
)
|
|
74
|
+
UPDATE session_system_update_outbox o
|
|
75
|
+
SET attempts = o.attempts + 1, updated_at = now()
|
|
76
|
+
FROM claimed c WHERE o.id = c.id
|
|
77
|
+
RETURNING o.id, o.account_id, o.workspace_id, o.source_session_id,
|
|
78
|
+
o.target_session_id, o.dedupe_key, o.kind, o.classification,
|
|
79
|
+
o.source_id, o.summary, o.payload, o.lineage,
|
|
80
|
+
o.personal_connection_delegations;
|
|
81
|
+
END $$;
|
|
82
|
+
REVOKE ALL ON FUNCTION opengeni_private.claim_session_system_update_outbox(integer) FROM PUBLIC;
|
|
83
|
+
|
|
84
|
+
DO $$
|
|
85
|
+
BEGIN
|
|
86
|
+
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app') THEN
|
|
87
|
+
GRANT EXECUTE ON FUNCTION opengeni_private.claim_session_system_update_outbox(integer)
|
|
88
|
+
TO opengeni_app;
|
|
89
|
+
END IF;
|
|
90
|
+
END $$;
|
|
91
|
+
|
|
92
|
+
CREATE OR REPLACE FUNCTION opengeni_private.prevent_personal_connection_authority_mutation()
|
|
93
|
+
RETURNS trigger
|
|
94
|
+
LANGUAGE plpgsql
|
|
95
|
+
AS $$
|
|
96
|
+
BEGIN
|
|
97
|
+
IF TG_TABLE_NAME = 'sessions' THEN
|
|
98
|
+
IF NEW.initial_personal_connection_delegations IS DISTINCT FROM OLD.initial_personal_connection_delegations
|
|
99
|
+
OR NEW.parent_turn_id IS DISTINCT FROM OLD.parent_turn_id
|
|
100
|
+
THEN
|
|
101
|
+
RAISE EXCEPTION 'session initial personal MCP authority is immutable' USING ERRCODE = '23514';
|
|
102
|
+
END IF;
|
|
103
|
+
ELSIF NEW.personal_connection_delegations IS DISTINCT FROM OLD.personal_connection_delegations THEN
|
|
104
|
+
RAISE EXCEPTION '% personal MCP authority is immutable', TG_TABLE_NAME USING ERRCODE = '23514';
|
|
105
|
+
END IF;
|
|
106
|
+
RETURN NEW;
|
|
107
|
+
END;
|
|
108
|
+
$$;
|
|
109
|
+
|
|
110
|
+
CREATE OR REPLACE FUNCTION opengeni_private.validate_session_parent_turn()
|
|
111
|
+
RETURNS trigger
|
|
112
|
+
LANGUAGE plpgsql
|
|
113
|
+
AS $$
|
|
114
|
+
BEGIN
|
|
115
|
+
IF NEW.parent_turn_id IS NULL THEN
|
|
116
|
+
RETURN NEW;
|
|
117
|
+
END IF;
|
|
118
|
+
IF NEW.parent_session_id IS NULL OR NOT EXISTS (
|
|
119
|
+
SELECT 1
|
|
120
|
+
FROM session_turns parent_turn
|
|
121
|
+
WHERE parent_turn.id = NEW.parent_turn_id
|
|
122
|
+
AND parent_turn.workspace_id = NEW.workspace_id
|
|
123
|
+
AND parent_turn.session_id = NEW.parent_session_id
|
|
124
|
+
) THEN
|
|
125
|
+
RAISE EXCEPTION 'session parent turn must belong to its parent session and workspace'
|
|
126
|
+
USING ERRCODE = '23514';
|
|
127
|
+
END IF;
|
|
128
|
+
RETURN NEW;
|
|
129
|
+
END;
|
|
130
|
+
$$;
|
|
131
|
+
|
|
132
|
+
CREATE TRIGGER sessions_personal_authority_immutable
|
|
133
|
+
BEFORE UPDATE OF initial_personal_connection_delegations, parent_turn_id
|
|
134
|
+
ON sessions
|
|
135
|
+
FOR EACH ROW
|
|
136
|
+
EXECUTE FUNCTION opengeni_private.prevent_personal_connection_authority_mutation();
|
|
137
|
+
|
|
138
|
+
CREATE TRIGGER sessions_parent_turn_valid
|
|
139
|
+
BEFORE INSERT OR UPDATE OF parent_turn_id, parent_session_id, workspace_id
|
|
140
|
+
ON sessions
|
|
141
|
+
FOR EACH ROW
|
|
142
|
+
EXECUTE FUNCTION opengeni_private.validate_session_parent_turn();
|
|
143
|
+
|
|
144
|
+
CREATE TRIGGER session_turns_personal_authority_immutable
|
|
145
|
+
BEFORE UPDATE OF personal_connection_delegations
|
|
146
|
+
ON session_turns
|
|
147
|
+
FOR EACH ROW
|
|
148
|
+
EXECUTE FUNCTION opengeni_private.prevent_personal_connection_authority_mutation();
|
|
149
|
+
|
|
150
|
+
CREATE TRIGGER session_updates_personal_authority_immutable
|
|
151
|
+
BEFORE UPDATE OF personal_connection_delegations
|
|
152
|
+
ON session_system_updates
|
|
153
|
+
FOR EACH ROW
|
|
154
|
+
EXECUTE FUNCTION opengeni_private.prevent_personal_connection_authority_mutation();
|
|
155
|
+
|
|
156
|
+
CREATE TRIGGER session_update_outbox_personal_authority_immutable
|
|
157
|
+
BEFORE UPDATE OF personal_connection_delegations
|
|
158
|
+
ON session_system_update_outbox
|
|
159
|
+
FOR EACH ROW
|
|
160
|
+
EXECUTE FUNCTION opengeni_private.prevent_personal_connection_authority_mutation();
|
|
161
|
+
|
|
162
|
+
CREATE OR REPLACE FUNCTION opengeni_private.prevent_scheduled_task_creator_mutation()
|
|
163
|
+
RETURNS trigger
|
|
164
|
+
LANGUAGE plpgsql
|
|
165
|
+
AS $$
|
|
166
|
+
BEGIN
|
|
167
|
+
IF NEW.created_by_kind IS DISTINCT FROM OLD.created_by_kind
|
|
168
|
+
OR NEW.created_by_subject_id IS DISTINCT FROM OLD.created_by_subject_id
|
|
169
|
+
OR NEW.created_by_context IS DISTINCT FROM OLD.created_by_context
|
|
170
|
+
THEN
|
|
171
|
+
RAISE EXCEPTION 'scheduled task creator is immutable' USING ERRCODE = '23514';
|
|
172
|
+
END IF;
|
|
173
|
+
RETURN NEW;
|
|
174
|
+
END;
|
|
175
|
+
$$;
|
|
176
|
+
|
|
177
|
+
CREATE TRIGGER scheduled_tasks_creator_immutable
|
|
178
|
+
BEFORE UPDATE OF created_by_kind, created_by_subject_id, created_by_context
|
|
179
|
+
ON scheduled_tasks
|
|
180
|
+
FOR EACH ROW
|
|
181
|
+
EXECUTE FUNCTION opengeni_private.prevent_scheduled_task_creator_mutation();
|