spine-framework 0.3.124 → 0.3.126

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 (319) hide show
  1. package/.framework/cli/commands/agents.ts +35 -37
  2. package/.framework/cli/commands/auth.ts +35 -34
  3. package/.framework/cli/commands/create-app.ts +104 -40
  4. package/.framework/cli/commands/dev.ts +104 -69
  5. package/.framework/cli/commands/doctor.ts +179 -69
  6. package/.framework/cli/commands/generate.ts +83 -143
  7. package/.framework/cli/commands/init.ts +72 -34
  8. package/.framework/cli/commands/install-app.ts +260 -125
  9. package/.framework/cli/commands/items.ts +33 -44
  10. package/.framework/cli/commands/migrate.ts +122 -40
  11. package/.framework/cli/commands/migrations.ts +33 -40
  12. package/.framework/cli/commands/pipelines.ts +31 -39
  13. package/.framework/cli/commands/status.ts +47 -23
  14. package/.framework/cli/commands/system.ts +47 -37
  15. package/.framework/cli/commands/test.ts +112 -68
  16. package/.framework/cli/commands/validate-app.ts +215 -121
  17. package/.framework/cli/context.ts +112 -130
  18. package/.framework/cli/env-loader.ts +47 -18
  19. package/.framework/cli/index.ts +81 -42
  20. package/.framework/docs/runtime-types.md +1024 -0
  21. package/.framework/functions/_shared/agent-runner.ts +1296 -961
  22. package/.framework/functions/_shared/app-manifest.ts +82 -68
  23. package/.framework/functions/_shared/audit.ts +135 -83
  24. package/.framework/functions/_shared/{cil-state.ts → cil.ts} +158 -56
  25. package/.framework/functions/_shared/db.ts +80 -126
  26. package/.framework/functions/_shared/hash-api-key.ts +63 -0
  27. package/.framework/functions/_shared/index.ts +224 -335
  28. package/.framework/functions/_shared/kb.ts +319 -0
  29. package/.framework/functions/_shared/llm.ts +92 -0
  30. package/.framework/functions/_shared/logging.ts +288 -0
  31. package/.framework/functions/_shared/middleware.ts +329 -365
  32. package/.framework/functions/_shared/outcomes.ts +36 -0
  33. package/.framework/functions/_shared/permissions.ts +359 -643
  34. package/.framework/functions/_shared/pipeline-runner.ts +243 -316
  35. package/.framework/functions/_shared/principal.ts +376 -468
  36. package/.framework/functions/_shared/resolve-credentials.ts +102 -0
  37. package/.framework/functions/_shared/resolve-ids.ts +188 -16
  38. package/.framework/functions/_shared/retry-deliveries.ts +104 -0
  39. package/.framework/functions/_shared/schema-utils.ts +611 -373
  40. package/.framework/functions/_shared/testing.ts +207 -137
  41. package/.framework/functions/_shared/tracing.ts +276 -0
  42. package/.framework/functions/_shared/trigger-engine.ts +159 -211
  43. package/.framework/functions/_shared/webhook-registration.ts +95 -81
  44. package/.framework/functions/_shared/webhook-registry.ts +153 -75
  45. package/.framework/functions/account-nodes.ts +31 -53
  46. package/.framework/functions/adapters/generic-webhook-inbound.ts +56 -0
  47. package/.framework/functions/adapters/generic-webhook-outbound.ts +43 -0
  48. package/.framework/functions/adapters/openai-outbound.ts +40 -0
  49. package/.framework/functions/admin-data.ts +685 -537
  50. package/.framework/functions/admin-funnel.ts +31 -20
  51. package/.framework/functions/admin-install-funnel.ts +47 -28
  52. package/.framework/functions/admin-signals.ts +47 -29
  53. package/.framework/functions/ai-agents.ts +122 -147
  54. package/.framework/functions/ai-interactions.ts +180 -90
  55. package/.framework/functions/api-keys.ts +250 -192
  56. package/.framework/functions/apps.ts +203 -197
  57. package/.framework/functions/auth.ts +98 -91
  58. package/.framework/functions/cil-agent-ingest.ts +773 -0
  59. package/.framework/functions/cil-agent.ts +592 -0
  60. package/.framework/functions/cil-callmap.ts +1227 -0
  61. package/.framework/functions/cil-config.ts +583 -0
  62. package/.framework/functions/cil-context.ts +445 -0
  63. package/.framework/functions/cil-doc.ts +1752 -0
  64. package/.framework/functions/cil-embeddings.ts +1202 -0
  65. package/.framework/functions/cil-graph.ts +585 -0
  66. package/.framework/functions/cil-ingest.ts +2416 -0
  67. package/.framework/functions/cil-pipeline.ts +318 -0
  68. package/.framework/functions/cil-project.ts +499 -0
  69. package/.framework/functions/cil-validate.ts +469 -0
  70. package/.framework/functions/debug-auth.ts +73 -53
  71. package/.framework/functions/deliveries.ts +117 -0
  72. package/.framework/functions/embeddings.ts +528 -516
  73. package/.framework/functions/eval-harness.ts +158 -106
  74. package/.framework/functions/integration-outbound.ts +311 -0
  75. package/.framework/functions/integration-routes.ts +240 -466
  76. package/.framework/functions/integrations.ts +132 -140
  77. package/.framework/functions/invites.ts +401 -201
  78. package/.framework/functions/item-progress.ts +113 -53
  79. package/.framework/functions/kb.ts +28 -0
  80. package/.framework/functions/logs.ts +239 -222
  81. package/.framework/functions/observability.ts +308 -259
  82. package/.framework/functions/pipeline-executions.ts +179 -235
  83. package/.framework/functions/pipelines.ts +163 -205
  84. package/.framework/functions/prompt-configs.ts +109 -156
  85. package/.framework/functions/roles.ts +97 -147
  86. package/.framework/functions/system-cron.ts +132 -218
  87. package/.framework/functions/system.ts +112 -52
  88. package/.framework/functions/tests.ts +32 -28
  89. package/.framework/functions/timers.ts +162 -210
  90. package/.framework/functions/triggers.ts +282 -346
  91. package/.framework/functions/types.ts +283 -400
  92. package/.framework/migrations/001_core_schema.sql +630 -0
  93. package/.framework/migrations/002_core_rls_and_functions.sql +532 -0
  94. package/.framework/migrations/{003_system_data.sql → 003_core_system_data.sql} +26 -153
  95. package/.framework/migrations/004_core_rpc_and_broker.sql +421 -0
  96. package/.framework/migrations/005_core_observability.sql +598 -0
  97. package/.framework/migrations/006_security_hardening_rls.sql +97 -0
  98. package/.framework/migrations/007_kb_article_list.sql +237 -0
  99. package/.framework/migrations/008_items_target.sql +8 -0
  100. package/.framework/migrations/009_roles_slug_unique.sql +11 -0
  101. package/.framework/public/spine.config.json +91 -0
  102. package/.framework/scripts/app-install-cli.ts +112 -98
  103. package/.framework/src/App.tsx +67 -20
  104. package/.framework/src/apps/admin/index.tsx +97 -27
  105. package/.framework/src/components/AppWrapper.tsx +50 -11
  106. package/.framework/src/components/CustomAppLoader.tsx +131 -22
  107. package/.framework/src/components/admin/AdminListPage.tsx +75 -8
  108. package/.framework/src/components/admin/AdminSidebar.tsx +148 -36
  109. package/.framework/src/components/admin/AdminStatsCard.tsx +48 -29
  110. package/.framework/src/components/admin/PageInstructions.tsx +49 -0
  111. package/.framework/src/components/admin/SortableTableHeader.tsx +49 -2
  112. package/.framework/src/components/app-shell/GenericAppShell.tsx +69 -11
  113. package/.framework/src/components/app-shell/GenericDetailPage.tsx +55 -10
  114. package/.framework/src/components/app-shell/GenericListPage.tsx +76 -9
  115. package/.framework/src/components/app-sidebar.tsx +50 -3
  116. package/.framework/src/components/auth/ProtectedRoute.tsx +53 -45
  117. package/.framework/src/components/kb/KBArticleEditor.tsx +409 -0
  118. package/.framework/src/components/kb/KBArticleList.tsx +557 -0
  119. package/.framework/src/components/layout/AppShell.tsx +54 -16
  120. package/.framework/src/components/layout/Header.tsx +50 -38
  121. package/.framework/src/components/layout/Layout.tsx +48 -32
  122. package/.framework/src/components/layout/Sidebar.tsx +167 -16
  123. package/.framework/src/components/runtime/DataDetailHeader.tsx +33 -1
  124. package/.framework/src/components/runtime/DataDetailPage.tsx +289 -4
  125. package/.framework/src/components/runtime/DataFilters.tsx +78 -1
  126. package/.framework/src/components/runtime/DataHeader.tsx +32 -29
  127. package/.framework/src/components/runtime/DataListPage.tsx +161 -2
  128. package/.framework/src/components/runtime/DataStats.tsx +48 -1
  129. package/.framework/src/components/runtime/DataTable.tsx +153 -1
  130. package/.framework/src/components/runtime/SchemaDetailForm.tsx +77 -46
  131. package/.framework/src/components/runtime/index.ts +16 -9
  132. package/.framework/src/components/search-form.tsx +33 -1
  133. package/.framework/src/components/shared/AgentView.tsx +48 -51
  134. package/.framework/src/components/shared/FieldRenderer.tsx +84 -67
  135. package/.framework/src/components/shared/InviteManager.tsx +113 -52
  136. package/.framework/src/components/shared/MemberList.tsx +182 -0
  137. package/.framework/src/components/shared/SchemaFields.tsx +96 -78
  138. package/.framework/src/components/ui/DataTable.tsx +86 -56
  139. package/.framework/src/components/ui/Form.tsx +188 -109
  140. package/.framework/src/components/ui/ItemCard.tsx +86 -58
  141. package/.framework/src/components/ui/ItemListView.tsx +88 -61
  142. package/.framework/src/components/ui/LoadingSpinner.tsx +52 -27
  143. package/.framework/src/components/ui/Modal.tsx +81 -4
  144. package/.framework/src/components/ui/RichTextEditor.tsx +101 -9
  145. package/.framework/src/components/ui/accordion.tsx +97 -5
  146. package/.framework/src/components/ui/alert-dialog.tsx +225 -13
  147. package/.framework/src/components/ui/alert.tsx +113 -6
  148. package/.framework/src/components/ui/aspect-ratio.tsx +49 -2
  149. package/.framework/src/components/ui/avatar.tsx +129 -7
  150. package/.framework/src/components/ui/badge.tsx +65 -3
  151. package/.framework/src/components/ui/breadcrumb.tsx +145 -8
  152. package/.framework/src/components/ui/button-group.tsx +81 -4
  153. package/.framework/src/components/ui/button.tsx +49 -2
  154. package/.framework/src/components/ui/calendar.tsx +65 -3
  155. package/.framework/src/components/ui/card.tsx +145 -8
  156. package/.framework/src/components/ui/carousel.tsx +129 -7
  157. package/.framework/src/components/ui/chart.tsx +161 -10
  158. package/.framework/src/components/ui/checkbox.tsx +49 -2
  159. package/.framework/src/components/ui/collapsible.tsx +81 -5
  160. package/.framework/src/components/ui/combobox.tsx +305 -20
  161. package/.framework/src/components/ui/command.tsx +177 -11
  162. package/.framework/src/components/ui/context-menu.tsx +273 -17
  163. package/.framework/src/components/ui/dialog.tsx +209 -27
  164. package/.framework/src/components/ui/direction.tsx +64 -4
  165. package/.framework/src/components/ui/drawer.tsx +193 -12
  166. package/.framework/src/components/ui/dropdown-menu.tsx +273 -18
  167. package/.framework/src/components/ui/empty.tsx +145 -9
  168. package/.framework/src/components/ui/field.tsx +209 -14
  169. package/.framework/src/components/ui/hover-card.tsx +81 -4
  170. package/.framework/src/components/ui/input-group.tsx +162 -10
  171. package/.framework/src/components/ui/input-otp.tsx +98 -5
  172. package/.framework/src/components/ui/input.tsx +49 -2
  173. package/.framework/src/components/ui/item.tsx +225 -13
  174. package/.framework/src/components/ui/kbd.tsx +65 -3
  175. package/.framework/src/components/ui/label.tsx +49 -2
  176. package/.framework/src/components/ui/menubar.tsx +289 -17
  177. package/.framework/src/components/ui/native-select.tsx +97 -5
  178. package/.framework/src/components/ui/navigation-menu.tsx +177 -10
  179. package/.framework/src/components/ui/pagination.tsx +161 -9
  180. package/.framework/src/components/ui/popover.tsx +145 -8
  181. package/.framework/src/components/ui/progress.tsx +49 -2
  182. package/.framework/src/components/ui/radio-group.tsx +65 -3
  183. package/.framework/src/components/ui/resizable.tsx +82 -4
  184. package/.framework/src/components/ui/scroll-area.tsx +65 -3
  185. package/.framework/src/components/ui/select.tsx +193 -11
  186. package/.framework/src/components/ui/separator.tsx +49 -2
  187. package/.framework/src/components/ui/sheet.tsx +193 -11
  188. package/.framework/src/components/ui/sidebar.tsx +481 -38
  189. package/.framework/src/components/ui/skeleton.tsx +49 -2
  190. package/.framework/src/components/ui/slider.tsx +49 -2
  191. package/.framework/src/components/ui/sonner.tsx +49 -2
  192. package/.framework/src/components/ui/spinner.tsx +49 -2
  193. package/.framework/src/components/ui/switch.tsx +49 -2
  194. package/.framework/src/components/ui/table-primitives.tsx +160 -33
  195. package/.framework/src/components/ui/table.tsx +161 -9
  196. package/.framework/src/components/ui/tabs.tsx +113 -6
  197. package/.framework/src/components/ui/textarea.tsx +49 -2
  198. package/.framework/src/components/ui/toggle-group.tsx +81 -4
  199. package/.framework/src/components/ui/toggle.tsx +65 -3
  200. package/.framework/src/components/ui/tooltip.tsx +97 -5
  201. package/.framework/src/contexts/AppContext.tsx +129 -45
  202. package/.framework/src/contexts/AuthContext.tsx +187 -144
  203. package/.framework/src/hooks/use-mobile.ts +48 -2
  204. package/.framework/src/hooks/useApi.ts +208 -159
  205. package/.framework/src/hooks/useAppPath.ts +32 -23
  206. package/.framework/src/hooks/useApps.ts +51 -20
  207. package/.framework/src/hooks/useEntityList.ts +32 -78
  208. package/.framework/src/hooks/useEntityRecord.ts +35 -96
  209. package/.framework/src/hooks/useForm.ts +32 -92
  210. package/.framework/src/hooks/useListSchema.ts +49 -78
  211. package/.framework/src/hooks/useSchemaRecord.ts +114 -105
  212. package/.framework/src/lib/api.ts +195 -116
  213. package/.framework/src/lib/supabase.ts +98 -64
  214. package/.framework/src/lib/utils.ts +287 -151
  215. package/.framework/src/main.tsx +49 -3
  216. package/.framework/src/pages/DashboardPage.tsx +52 -29
  217. package/.framework/src/pages/NotFoundPage.tsx +32 -10
  218. package/.framework/src/pages/SetupPage.tsx +32 -12
  219. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +119 -10
  220. package/.framework/src/pages/admin/AIAgentsPage.tsx +48 -19
  221. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +187 -17
  222. package/.framework/src/pages/admin/APIKeysPage.tsx +98 -22
  223. package/.framework/src/pages/admin/AlertsConfigPage.tsx +113 -26
  224. package/.framework/src/pages/admin/AppDetailPage.tsx +125 -8
  225. package/.framework/src/pages/admin/AppsPage.tsx +49 -2
  226. package/.framework/src/pages/admin/DeliveriesPage.tsx +196 -0
  227. package/.framework/src/pages/admin/DesignedPage.tsx +32 -18
  228. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +215 -484
  229. package/.framework/src/pages/admin/EmbeddingsPage.tsx +116 -319
  230. package/.framework/src/pages/admin/ExtendedShadcnTestPage.tsx +34 -9
  231. package/.framework/src/pages/admin/IncrementalShadcnTestPage.tsx +34 -9
  232. package/.framework/src/pages/admin/IntegratedDashboard.tsx +32 -16
  233. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +183 -26
  234. package/.framework/src/pages/admin/IntegrationsPage.tsx +48 -19
  235. package/.framework/src/pages/admin/InvitesPage.tsx +48 -14
  236. package/.framework/src/pages/admin/LogsPage.tsx +422 -75
  237. package/.framework/src/pages/admin/MinimalShadcnTestPage.tsx +34 -9
  238. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +113 -24
  239. package/.framework/src/pages/admin/PipelineDetailPage.tsx +206 -34
  240. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +50 -17
  241. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -21
  242. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +378 -88
  243. package/.framework/src/pages/admin/PromptConfigsPage.tsx +125 -16
  244. package/.framework/src/pages/admin/ProperlyDesignedPage.tsx +49 -10
  245. package/.framework/src/pages/admin/RoleDetailPage.tsx +130 -10
  246. package/.framework/src/pages/admin/RolesPage.tsx +171 -18
  247. package/.framework/src/pages/admin/SelectTestPage.tsx +34 -9
  248. package/.framework/src/pages/admin/ShadcnTestPage.tsx +49 -11
  249. package/.framework/src/pages/admin/SimpleDashboard.tsx +49 -10
  250. package/.framework/src/pages/admin/TestRunDetailPage.tsx +49 -4
  251. package/.framework/src/pages/admin/TestingDashboard.tsx +98 -28
  252. package/.framework/src/pages/admin/TimerDetailPage.tsx +143 -33
  253. package/.framework/src/pages/admin/TimersPage.tsx +48 -20
  254. package/.framework/src/pages/admin/TriggerDetailPage.tsx +118 -30
  255. package/.framework/src/pages/admin/TriggersPage.tsx +64 -19
  256. package/.framework/src/pages/admin/TypeDetailPage.tsx +138 -15
  257. package/.framework/src/pages/admin/TypesPage.tsx +48 -20
  258. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +465 -0
  259. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +787 -0
  260. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +699 -0
  261. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +647 -0
  262. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +616 -0
  263. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +1402 -0
  264. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +614 -0
  265. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +571 -0
  266. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +731 -0
  267. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +64 -0
  268. package/.framework/src/pages/auth/AuthConfirmPage.tsx +52 -51
  269. package/.framework/src/pages/auth/ForgotPasswordPage.tsx +31 -22
  270. package/.framework/src/pages/auth/LoginPage.tsx +50 -23
  271. package/.framework/src/pages/auth/PendingApprovalPage.tsx +31 -15
  272. package/.framework/src/pages/auth/RegisterPage.tsx +281 -317
  273. package/.framework/src/pages/spine-framework/APIPage.tsx +33 -0
  274. package/.framework/src/pages/spine-framework/CLIPage.tsx +33 -0
  275. package/.framework/src/types/auth.ts +128 -71
  276. package/.framework/src/types/types.ts +373 -157
  277. package/custom/.devin/skills/spine-workbench-discovery/SKILL.md +39 -0
  278. package/custom/.devin/skills/spine-workbench-idea/SKILL.md +36 -0
  279. package/custom/.devin/skills/spine-workbench-implement/SKILL.md +46 -0
  280. package/custom/.devin/skills/spine-workbench-initiative/SKILL.md +28 -0
  281. package/custom/.devin/skills/spine-workbench-plan/SKILL.md +38 -0
  282. package/docs/README.md +9 -130
  283. package/netlify.toml +5 -2
  284. package/package.json +13 -25
  285. package/scripts/kb-ingest-docs.ts +203 -0
  286. package/spine.config.json +65 -4
  287. package/.framework/migrations/001_schema.sql +0 -425
  288. package/.framework/migrations/002_rls_and_functions.sql +0 -763
  289. package/.framework/migrations/004_enhancements.sql +0 -43
  290. package/.framework/migrations/005_auth_user_trigger.sql +0 -105
  291. package/.framework/migrations/006_fix_current_actor_id.sql +0 -21
  292. package/.framework/migrations/016_invites.sql +0 -27
  293. package/.framework/migrations/017_fix_get_account_apps.sql +0 -78
  294. package/.framework/migrations/018_apps_required_roles.sql +0 -17
  295. package/.framework/migrations/019_triggers_unique_constraint.sql +0 -13
  296. package/.framework/migrations/020_get_account_apps_role_filter.sql +0 -117
  297. package/.framework/migrations/021_app_domains.sql +0 -112
  298. package/.framework/migrations/022_route_prefix_domain_unique.sql +0 -21
  299. package/.framework/migrations/023_match_embeddings_rpc.sql +0 -78
  300. package/.framework/migrations/024_messages_account_id.sql +0 -9
  301. package/.framework/migrations/025_retype_threads_messages.sql +0 -240
  302. package/.framework/migrations/026_fix_rls_policies.sql +0 -47
  303. package/.framework/migrations/027_embedding_lifecycle.sql +0 -176
  304. package/.framework/migrations/028_fix_message_data_permissions.sql +0 -49
  305. package/.framework/migrations/029_tighten_support_triage_prompt.sql +0 -41
  306. package/.framework/migrations/030_messages_updated_by.sql +0 -6
  307. package/.framework/migrations/031_seed_upsert_constraints.sql +0 -35
  308. package/docs/APPS.md +0 -232
  309. package/docs/ARCHITECTURE.md +0 -246
  310. package/docs/INSTALL.md +0 -155
  311. package/docs/design-schema-spec.md +0 -1837
  312. package/docs/dev-guides/01-create-an-app.md +0 -183
  313. package/docs/dev-guides/02-create-a-function.md +0 -178
  314. package/docs/dev-guides/03-create-a-component.md +0 -178
  315. package/docs/dev-guides/04-webhook-handlers.md +0 -129
  316. package/docs/dev-guides/05-testing.md +0 -168
  317. package/docs/dev-guides/README.md +0 -40
  318. package/docs/npm-packages-plan.md +0 -288
  319. package/docs/spine-core--api-reference.md +0 -822
@@ -0,0 +1,532 @@
1
+ -- Spine v2 consolidated RLS and functions
2
+ -- Auth/RLS helper functions, foreign keys, and tenant-isolation policies.
3
+
4
+ CREATE OR REPLACE FUNCTION public.get_accessible_accounts(actor_id uuid)
5
+ RETURNS TABLE (account_id uuid) AS $$
6
+ BEGIN
7
+ IF EXISTS (
8
+ SELECT 1 FROM public.people p
9
+ JOIN public.roles r ON p.role_id = r.id
10
+ WHERE p.id = actor_id AND r.slug = 'system_admin'
11
+ ) THEN
12
+ RETURN QUERY SELECT a.id FROM public.accounts a;
13
+ RETURN;
14
+ END IF;
15
+ RETURN QUERY
16
+ WITH RECURSIVE account_tree AS (
17
+ SELECT p.account_id as id FROM public.people p WHERE p.id = actor_id
18
+ UNION ALL
19
+ SELECT ap.descendant_id
20
+ FROM public.account_paths ap
21
+ JOIN account_tree at ON ap.ancestor_id = at.id
22
+ )
23
+ SELECT id FROM account_tree;
24
+ END;
25
+ $$ LANGUAGE plpgsql SECURITY DEFINER;
26
+ CREATE OR REPLACE FUNCTION public.current_actor_id()
27
+ RETURNS uuid AS $$
28
+ DECLARE
29
+ v_auth_id UUID;
30
+ v_person_id UUID;
31
+ BEGIN
32
+ v_auth_id := auth.uid();
33
+
34
+ SELECT p.id INTO v_person_id
35
+ FROM public.people p
36
+ WHERE p.auth_uid = v_auth_id AND p.is_active = true
37
+ LIMIT 1;
38
+
39
+ RETURN v_person_id;
40
+ END;
41
+ $$ LANGUAGE plpgsql SECURITY DEFINER STABLE;
42
+ CREATE OR REPLACE FUNCTION public.person_is_system_admin(person_uuid uuid)
43
+ RETURNS boolean AS $$
44
+ BEGIN
45
+ RETURN EXISTS (
46
+ SELECT 1 FROM public.people p
47
+ JOIN public.roles r ON p.role_id = r.id
48
+ WHERE p.id = person_uuid AND r.slug = 'system_admin'
49
+ );
50
+ END;
51
+ $$ LANGUAGE plpgsql STABLE;
52
+ CREATE OR REPLACE FUNCTION public.update_account_paths()
53
+ RETURNS TRIGGER AS $$
54
+ BEGIN
55
+ IF TG_OP = 'INSERT' THEN
56
+ IF NEW.parent_id IS NOT NULL THEN
57
+ INSERT INTO public.account_paths (ancestor_id, descendant_id, depth)
58
+ SELECT ancestor_id, NEW.id, depth + 1 FROM public.account_paths WHERE descendant_id = NEW.parent_id;
59
+ INSERT INTO public.account_paths (ancestor_id, descendant_id, depth) VALUES (NEW.parent_id, NEW.id, 1);
60
+ END IF;
61
+ RETURN NEW;
62
+ END IF;
63
+ IF TG_OP = 'UPDATE' AND OLD.parent_id IS DISTINCT FROM NEW.parent_id THEN
64
+ DELETE FROM public.account_paths WHERE descendant_id = NEW.id;
65
+ IF NEW.parent_id IS NOT NULL THEN
66
+ INSERT INTO public.account_paths (ancestor_id, descendant_id, depth)
67
+ SELECT ancestor_id, NEW.id, depth + 1 FROM public.account_paths WHERE descendant_id = NEW.parent_id;
68
+ INSERT INTO public.account_paths (ancestor_id, descendant_id, depth) VALUES (NEW.parent_id, NEW.id, 1);
69
+ END IF;
70
+ RETURN NEW;
71
+ END IF;
72
+ IF TG_OP = 'DELETE' THEN
73
+ DELETE FROM public.account_paths WHERE descendant_id = OLD.id;
74
+ RETURN OLD;
75
+ END IF;
76
+ RETURN NULL;
77
+ END;
78
+ $$ LANGUAGE plpgsql;
79
+ DROP TRIGGER IF EXISTS account_paths_trigger ON public.accounts;
80
+ CREATE TRIGGER account_paths_trigger
81
+ AFTER INSERT OR UPDATE OR DELETE ON public.accounts
82
+ FOR EACH ROW EXECUTE FUNCTION public.update_account_paths();
83
+ CREATE OR REPLACE FUNCTION public.set_updated_at()
84
+ RETURNS TRIGGER AS $$
85
+ BEGIN
86
+ NEW.updated_at = now();
87
+ RETURN NEW;
88
+ END;
89
+ $$ LANGUAGE plpgsql;
90
+ ALTER TABLE public.accounts ADD CONSTRAINT fk_accounts_parent
91
+ FOREIGN KEY (parent_id) REFERENCES public.accounts(id) ON DELETE SET NULL;
92
+ ALTER TABLE public.accounts ADD CONSTRAINT fk_accounts_type
93
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
94
+ ALTER TABLE public.accounts ADD CONSTRAINT fk_accounts_app
95
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
96
+ ALTER TABLE public.accounts ADD CONSTRAINT fk_accounts_created_by
97
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
98
+ ALTER TABLE public.accounts ADD CONSTRAINT fk_accounts_updated_by
99
+ FOREIGN KEY (updated_by) REFERENCES public.people(id) ON DELETE SET NULL;
100
+ ALTER TABLE public.people ADD CONSTRAINT people_account_id_fkey
101
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
102
+ ALTER TABLE public.people ADD CONSTRAINT people_app_id_fkey
103
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
104
+ ALTER TABLE public.people ADD CONSTRAINT people_role_id_fkey
105
+ FOREIGN KEY (role_id) REFERENCES public.roles(id) ON DELETE SET NULL;
106
+ ALTER TABLE public.people ADD CONSTRAINT people_type_id_fkey
107
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
108
+ ALTER TABLE public.people ADD CONSTRAINT people_created_by_fkey
109
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
110
+ ALTER TABLE public.types ADD CONSTRAINT fk_types_app
111
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
112
+ ALTER TABLE public.apps ADD CONSTRAINT fk_apps_account
113
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE SET NULL;
114
+ ALTER TABLE public.apps ADD CONSTRAINT fk_apps_owner_account
115
+ FOREIGN KEY (owner_account_id) REFERENCES public.accounts(id) ON DELETE SET NULL;
116
+ ALTER TABLE public.roles ADD CONSTRAINT fk_roles_app
117
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE CASCADE;
118
+ ALTER TABLE public.roles ADD CONSTRAINT fk_roles_account
119
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
120
+ ALTER TABLE public.items ADD CONSTRAINT fk_items_type
121
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
122
+ ALTER TABLE public.items ADD CONSTRAINT fk_items_account
123
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
124
+ ALTER TABLE public.items ADD CONSTRAINT fk_items_app
125
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
126
+ ALTER TABLE public.items ADD CONSTRAINT fk_items_created_by
127
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
128
+ ALTER TABLE public.items ADD CONSTRAINT fk_items_updated_by
129
+ FOREIGN KEY (updated_by) REFERENCES public.people(id) ON DELETE SET NULL;
130
+ ALTER TABLE public.threads ADD CONSTRAINT fk_threads_type
131
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
132
+ ALTER TABLE public.threads ADD CONSTRAINT fk_threads_account
133
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
134
+ ALTER TABLE public.threads ADD CONSTRAINT fk_threads_created_by
135
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
136
+ ALTER TABLE public.threads ADD CONSTRAINT fk_threads_updated_by
137
+ FOREIGN KEY (updated_by) REFERENCES public.people(id) ON DELETE SET NULL;
138
+ ALTER TABLE public.messages ADD CONSTRAINT fk_messages_type
139
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
140
+ ALTER TABLE public.messages ADD CONSTRAINT fk_messages_account
141
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
142
+ ALTER TABLE public.messages ADD CONSTRAINT fk_messages_thread
143
+ FOREIGN KEY (thread_id) REFERENCES public.threads(id) ON DELETE CASCADE;
144
+ ALTER TABLE public.messages ADD CONSTRAINT fk_messages_created_by
145
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
146
+ ALTER TABLE public.prompt_configs ADD CONSTRAINT fk_prompt_configs_type
147
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
148
+ ALTER TABLE public.prompt_configs ADD CONSTRAINT fk_prompt_configs_account
149
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
150
+ ALTER TABLE public.prompt_configs ADD CONSTRAINT fk_prompt_configs_app
151
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
152
+ ALTER TABLE public.prompt_configs ADD CONSTRAINT fk_prompt_configs_created_by
153
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
154
+ ALTER TABLE public.prompt_configs ADD CONSTRAINT fk_prompt_configs_updated_by
155
+ FOREIGN KEY (updated_by) REFERENCES public.people(id) ON DELETE SET NULL;
156
+ ALTER TABLE public.pipeline_executions ADD CONSTRAINT fk_pipeline_executions_pipeline
157
+ FOREIGN KEY (pipeline_id) REFERENCES public.pipelines(id) ON DELETE CASCADE;
158
+ ALTER TABLE public.pipeline_executions ADD CONSTRAINT fk_pipeline_executions_account
159
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
160
+ ALTER TABLE public.pipeline_executions ADD CONSTRAINT fk_pipeline_executions_app
161
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
162
+ ALTER TABLE public.pipeline_executions ADD CONSTRAINT fk_pipeline_executions_created_by
163
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
164
+ ALTER TABLE public.test_runs ADD CONSTRAINT fk_test_runs_pipeline_execution
165
+ FOREIGN KEY (pipeline_execution_id) REFERENCES public.pipeline_executions(id) ON DELETE CASCADE;
166
+ ALTER TABLE public.test_runs ADD CONSTRAINT fk_test_runs_account
167
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
168
+ ALTER TABLE public.test_runs ADD CONSTRAINT fk_test_runs_app
169
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
170
+ ALTER TABLE public.test_runs ADD CONSTRAINT fk_test_runs_created_by
171
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
172
+ ALTER TABLE public.invites ADD CONSTRAINT fk_invites_type
173
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
174
+ ALTER TABLE public.invites ADD CONSTRAINT fk_invites_account
175
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
176
+ ALTER TABLE public.invites ADD CONSTRAINT fk_invites_app
177
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
178
+ ALTER TABLE public.invites ADD CONSTRAINT fk_invites_created_by
179
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
180
+ ALTER TABLE public.api_keys ADD CONSTRAINT fk_api_keys_type
181
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
182
+ ALTER TABLE public.api_keys ADD CONSTRAINT fk_api_keys_account
183
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
184
+ ALTER TABLE public.api_keys ADD CONSTRAINT fk_api_keys_app
185
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
186
+ ALTER TABLE public.api_keys ADD CONSTRAINT fk_api_keys_created_by
187
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
188
+ ALTER TABLE public.integrations ADD CONSTRAINT fk_integrations_type
189
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
190
+ ALTER TABLE public.integrations ADD CONSTRAINT fk_integrations_account
191
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
192
+ ALTER TABLE public.integrations ADD CONSTRAINT fk_integrations_app
193
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
194
+ ALTER TABLE public.integrations ADD CONSTRAINT fk_integrations_created_by
195
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
196
+ ALTER TABLE public.ai_agents ADD CONSTRAINT fk_ai_agents_type
197
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
198
+ ALTER TABLE public.ai_agents ADD CONSTRAINT fk_ai_agents_account
199
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
200
+ ALTER TABLE public.ai_agents ADD CONSTRAINT fk_ai_agents_app
201
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
202
+ ALTER TABLE public.ai_agents ADD CONSTRAINT fk_ai_agents_created_by
203
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
204
+ ALTER TABLE public.item_progress ADD CONSTRAINT fk_item_progress_item
205
+ FOREIGN KEY (item_id) REFERENCES public.items(id) ON DELETE CASCADE;
206
+ ALTER TABLE public.item_progress ADD CONSTRAINT fk_item_progress_account
207
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
208
+ ALTER TABLE public.item_progress ADD CONSTRAINT fk_item_progress_app
209
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
210
+ ALTER TABLE public.item_progress ADD CONSTRAINT fk_item_progress_created_by
211
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
212
+ ALTER TABLE public.logs ADD CONSTRAINT fk_logs_type
213
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
214
+ ALTER TABLE public.logs ADD CONSTRAINT fk_logs_account
215
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
216
+ ALTER TABLE public.logs ADD CONSTRAINT fk_logs_app
217
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
218
+ ALTER TABLE public.logs ADD CONSTRAINT fk_logs_created_by
219
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
220
+ ALTER TABLE public.observability ADD CONSTRAINT fk_observability_type
221
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
222
+ ALTER TABLE public.observability ADD CONSTRAINT fk_observability_account
223
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
224
+ ALTER TABLE public.observability ADD CONSTRAINT fk_observability_app
225
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
226
+ ALTER TABLE public.observability ADD CONSTRAINT fk_observability_created_by
227
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
228
+ ALTER TABLE public.timers ADD CONSTRAINT fk_timers_type
229
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
230
+ ALTER TABLE public.timers ADD CONSTRAINT fk_timers_account
231
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
232
+ ALTER TABLE public.timers ADD CONSTRAINT fk_timers_app
233
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
234
+ ALTER TABLE public.timers ADD CONSTRAINT fk_timers_created_by
235
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
236
+ ALTER TABLE public.triggers ADD CONSTRAINT fk_triggers_type
237
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
238
+ ALTER TABLE public.triggers ADD CONSTRAINT fk_triggers_account
239
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
240
+ ALTER TABLE public.triggers ADD CONSTRAINT fk_triggers_app
241
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
242
+ ALTER TABLE public.triggers ADD CONSTRAINT fk_triggers_created_by
243
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
244
+ ALTER TABLE public.roles ADD CONSTRAINT fk_roles_type
245
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
246
+ ALTER TABLE public.roles ADD CONSTRAINT fk_roles_created_by
247
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
248
+ ALTER TABLE public.pipelines ADD CONSTRAINT fk_pipelines_type
249
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE RESTRICT;
250
+ ALTER TABLE public.pipelines ADD CONSTRAINT fk_pipelines_account
251
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE CASCADE;
252
+ ALTER TABLE public.pipelines ADD CONSTRAINT fk_pipelines_app
253
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
254
+ ALTER TABLE public.pipelines ADD CONSTRAINT fk_pipelines_created_by
255
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
256
+ ALTER TABLE public.people ADD CONSTRAINT people_role_id_fkey
257
+ FOREIGN KEY (role_id) REFERENCES public.roles(id) ON DELETE SET NULL;
258
+ ALTER TABLE public.accounts ADD CONSTRAINT accounts_app_id_fkey
259
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
260
+ ALTER TABLE public.accounts ADD CONSTRAINT accounts_type_id_fkey
261
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE SET NULL;
262
+ ALTER TABLE public.people ADD CONSTRAINT people_app_id_fkey
263
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
264
+ ALTER TABLE public.people ADD CONSTRAINT people_type_id_fkey
265
+ FOREIGN KEY (type_id) REFERENCES public.types(id) ON DELETE SET NULL;
266
+ ALTER TABLE public.types ADD CONSTRAINT types_app_id_fkey
267
+ FOREIGN KEY (app_id) REFERENCES public.apps(id) ON DELETE SET NULL;
268
+ ALTER TABLE public.apps ADD CONSTRAINT apps_account_id_fkey
269
+ FOREIGN KEY (account_id) REFERENCES public.accounts(id) ON DELETE SET NULL;
270
+ ALTER TABLE public.apps ADD CONSTRAINT apps_owner_account_id_fkey
271
+ FOREIGN KEY (owner_account_id) REFERENCES public.accounts(id) ON DELETE SET NULL;
272
+ ALTER TABLE public.items ADD CONSTRAINT items_created_by_fkey
273
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
274
+ ALTER TABLE public.items ADD CONSTRAINT items_updated_by_fkey
275
+ FOREIGN KEY (updated_by) REFERENCES public.people(id) ON DELETE SET NULL;
276
+ ALTER TABLE public.threads ADD CONSTRAINT threads_created_by_fkey
277
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
278
+ ALTER TABLE public.threads ADD CONSTRAINT threads_updated_by_fkey
279
+ FOREIGN KEY (updated_by) REFERENCES public.people(id) ON DELETE SET NULL;
280
+ ALTER TABLE public.messages ADD CONSTRAINT messages_created_by_fkey
281
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
282
+ ALTER TABLE public.prompt_configs ADD CONSTRAINT prompt_configs_created_by_fkey
283
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
284
+ ALTER TABLE public.prompt_configs ADD CONSTRAINT prompt_configs_updated_by_fkey
285
+ FOREIGN KEY (updated_by) REFERENCES public.people(id) ON DELETE SET NULL;
286
+ ALTER TABLE public.pipeline_executions ADD CONSTRAINT pipeline_executions_created_by_fkey
287
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
288
+ ALTER TABLE public.test_runs ADD CONSTRAINT test_runs_created_by_fkey
289
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
290
+ ALTER TABLE public.invites ADD CONSTRAINT invites_created_by_fkey
291
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
292
+ ALTER TABLE public.api_keys ADD CONSTRAINT api_keys_created_by_fkey
293
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
294
+ ALTER TABLE public.integrations ADD CONSTRAINT integrations_created_by_fkey
295
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
296
+ ALTER TABLE public.ai_agents ADD CONSTRAINT ai_agents_created_by_fkey
297
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
298
+ ALTER TABLE public.item_progress ADD CONSTRAINT item_progress_created_by_fkey
299
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
300
+ ALTER TABLE public.logs ADD CONSTRAINT logs_created_by_fkey
301
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
302
+ ALTER TABLE public.observability ADD CONSTRAINT observability_created_by_fkey
303
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
304
+ ALTER TABLE public.timers ADD CONSTRAINT timers_created_by_fkey
305
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
306
+ ALTER TABLE public.triggers ADD CONSTRAINT triggers_created_by_fkey
307
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
308
+ ALTER TABLE public.roles ADD CONSTRAINT roles_created_by_fkey
309
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
310
+ ALTER TABLE public.pipelines ADD CONSTRAINT pipelines_created_by_fkey
311
+ FOREIGN KEY (created_by) REFERENCES public.people(id) ON DELETE SET NULL;
312
+ DROP TRIGGER IF EXISTS set_updated_at_accounts ON public.accounts;
313
+ CREATE TRIGGER set_updated_at_accounts
314
+ BEFORE UPDATE ON public.accounts
315
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
316
+
317
+ DROP TRIGGER IF EXISTS set_updated_at_people ON public.people;
318
+ CREATE TRIGGER set_updated_at_people
319
+ BEFORE UPDATE ON public.people
320
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
321
+
322
+ DROP TRIGGER IF EXISTS set_updated_at_types ON public.types;
323
+ CREATE TRIGGER set_updated_at_types
324
+ BEFORE UPDATE ON public.types
325
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
326
+
327
+ DROP TRIGGER IF EXISTS set_updated_at_apps ON public.apps;
328
+ CREATE TRIGGER set_updated_at_apps
329
+ BEFORE UPDATE ON public.apps
330
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
331
+
332
+ DROP TRIGGER IF EXISTS set_updated_at_items ON public.items;
333
+ CREATE TRIGGER set_updated_at_items
334
+ BEFORE UPDATE ON public.items
335
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
336
+
337
+ DROP TRIGGER IF EXISTS set_updated_at_threads ON public.threads;
338
+ CREATE TRIGGER set_updated_at_threads
339
+ BEFORE UPDATE ON public.threads
340
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
341
+
342
+ DROP TRIGGER IF EXISTS set_updated_at_messages ON public.messages;
343
+ CREATE TRIGGER set_updated_at_messages
344
+ BEFORE UPDATE ON public.messages
345
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
346
+
347
+ DROP TRIGGER IF EXISTS set_updated_at_prompt_configs ON public.prompt_configs;
348
+ CREATE TRIGGER set_updated_at_prompt_configs
349
+ BEFORE UPDATE ON public.prompt_configs
350
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
351
+
352
+ DROP TRIGGER IF EXISTS set_updated_at_pipeline_executions ON public.pipeline_executions;
353
+ CREATE TRIGGER set_updated_at_pipeline_executions
354
+ BEFORE UPDATE ON public.pipeline_executions
355
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
356
+
357
+ DROP TRIGGER IF EXISTS set_updated_at_test_runs ON public.test_runs;
358
+ CREATE TRIGGER set_updated_at_test_runs
359
+ BEFORE UPDATE ON public.test_runs
360
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
361
+
362
+ DROP TRIGGER IF EXISTS set_updated_at_invites ON public.invites;
363
+ CREATE TRIGGER set_updated_at_invites
364
+ BEFORE UPDATE ON public.invites
365
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
366
+
367
+ DROP TRIGGER IF EXISTS set_updated_at_api_keys ON public.api_keys;
368
+ CREATE TRIGGER set_updated_at_api_keys
369
+ BEFORE UPDATE ON public.api_keys
370
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
371
+
372
+ DROP TRIGGER IF EXISTS set_updated_at_integrations ON public.integrations;
373
+ CREATE TRIGGER set_updated_at_integrations
374
+ BEFORE UPDATE ON public.integrations
375
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
376
+
377
+ DROP TRIGGER IF EXISTS set_updated_at_ai_agents ON public.ai_agents;
378
+ CREATE TRIGGER set_updated_at_ai_agents
379
+ BEFORE UPDATE ON public.ai_agents
380
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
381
+
382
+ DROP TRIGGER IF EXISTS set_updated_at_item_progress ON public.item_progress;
383
+ CREATE TRIGGER set_updated_at_item_progress
384
+ BEFORE UPDATE ON public.item_progress
385
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
386
+
387
+ DROP TRIGGER IF EXISTS set_updated_at_logs ON public.logs;
388
+ CREATE TRIGGER set_updated_at_logs
389
+ BEFORE UPDATE ON public.logs
390
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
391
+
392
+ DROP TRIGGER IF EXISTS set_updated_at_observability ON public.observability;
393
+ CREATE TRIGGER set_updated_at_observability
394
+ BEFORE UPDATE ON public.observability
395
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
396
+
397
+ DROP TRIGGER IF EXISTS set_updated_at_timers ON public.timers;
398
+ CREATE TRIGGER set_updated_at_timers
399
+ BEFORE UPDATE ON public.timers
400
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
401
+
402
+ DROP TRIGGER IF EXISTS set_updated_at_triggers ON public.triggers;
403
+ CREATE TRIGGER set_updated_at_triggers
404
+ BEFORE UPDATE ON public.triggers
405
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
406
+
407
+ DROP TRIGGER IF EXISTS set_updated_at_roles ON public.roles;
408
+ CREATE TRIGGER set_updated_at_roles
409
+ BEFORE UPDATE ON public.roles
410
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
411
+
412
+ DROP TRIGGER IF EXISTS set_updated_at_pipelines ON public.pipelines;
413
+ CREATE TRIGGER set_updated_at_pipelines
414
+ BEFORE UPDATE ON public.pipelines
415
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
416
+
417
+ DROP TRIGGER IF EXISTS set_updated_at_account_paths ON public.account_paths;
418
+ CREATE TRIGGER set_updated_at_account_paths
419
+ BEFORE UPDATE ON public.account_paths
420
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
421
+
422
+ DROP TRIGGER IF EXISTS set_updated_at_people_roles ON public.people_roles;
423
+ CREATE TRIGGER set_updated_at_people_roles
424
+ BEFORE UPDATE ON public.people_roles
425
+ FOR EACH ROW EXECUTE FUNCTION public.set_updated_at();
426
+
427
+ -- RLS policies
428
+
429
+ CREATE POLICY accounts_access ON public.accounts FOR ALL
430
+ USING (id IN (SELECT public.get_accessible_accounts(public.current_actor_id()))
431
+ );
432
+
433
+ CREATE POLICY people_access ON public.people FOR ALL
434
+ USING (account_id IN (SELECT public.get_accessible_accounts(public.current_actor_id()))
435
+ );
436
+
437
+ CREATE POLICY types_access ON public.types FOR ALL
438
+ USING (public.current_actor_id() IS NOT NULL OR true);
439
+
440
+ CREATE POLICY apps_access ON public.apps FOR ALL
441
+ USING (is_system = true OR owner_account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
442
+ );
443
+
444
+ CREATE POLICY roles_read ON public.roles FOR SELECT USING (true);
445
+
446
+ CREATE POLICY roles_modify ON public.roles FOR ALL
447
+ USING ((is_system = true AND public.person_is_system_admin(public.current_actor_id()))
448
+ OR is_system = false );
449
+
450
+ CREATE POLICY items_access ON public.items FOR ALL
451
+ USING (account_id IN (SELECT public.get_accessible_accounts(public.current_actor_id()))
452
+ );
453
+
454
+ CREATE POLICY threads_access ON public.threads FOR ALL
455
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
456
+ );
457
+
458
+ CREATE POLICY messages_access ON public.messages FOR ALL
459
+ USING (EXISTS (SELECT 1 FROM public.threads t
460
+ WHERE t.id = messages.thread_id
461
+ AND t.account_id IN (SELECT public.get_accessible_accounts(auth.uid())))
462
+ );
463
+
464
+ CREATE POLICY links_access ON public.links FOR ALL
465
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
466
+ );
467
+
468
+ CREATE POLICY attachments_access ON public.attachments FOR ALL
469
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
470
+ );
471
+
472
+ CREATE POLICY watchers_access ON public.watchers FOR ALL
473
+ USING (auth.uid() IS NOT NULL OR true);
474
+
475
+ CREATE POLICY link_types_access ON public.link_types FOR ALL
476
+ USING (app_id IS NULL
477
+ OR EXISTS (SELECT 1 FROM public.apps a WHERE a.id = link_types.app_id
478
+ AND a.owner_account_id IN (SELECT public.get_accessible_accounts(auth.uid())))
479
+ );
480
+
481
+ CREATE POLICY pipelines_access ON public.pipelines FOR ALL
482
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
483
+ );
484
+
485
+ CREATE POLICY pe_access ON public.pipeline_executions FOR ALL
486
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
487
+ );
488
+
489
+ CREATE POLICY triggers_access ON public.triggers FOR ALL
490
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
491
+ );
492
+
493
+ CREATE POLICY te_access ON public.trigger_executions FOR ALL
494
+ USING (EXISTS (SELECT 1 FROM public.triggers t
495
+ WHERE t.id = trigger_executions.trigger_id
496
+ AND t.account_id IN (SELECT public.get_accessible_accounts(auth.uid())))
497
+ );
498
+
499
+ CREATE POLICY timers_access ON public.timers FOR ALL
500
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
501
+ );
502
+
503
+ CREATE POLICY ai_agents_access ON public.ai_agents FOR ALL
504
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
505
+ );
506
+
507
+ CREATE POLICY embeddings_access ON public.embeddings FOR ALL
508
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
509
+ );
510
+
511
+ CREATE POLICY integrations_access ON public.integrations FOR ALL
512
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
513
+ );
514
+
515
+ CREATE POLICY prompt_configs_access ON public.prompt_configs FOR ALL
516
+ USING ((app_id IS NULL OR EXISTS (SELECT 1 FROM public.apps a
517
+ WHERE a.id = prompt_configs.app_id
518
+ AND (a.is_system = true
519
+ OR a.owner_account_id IN (SELECT public.get_accessible_accounts(auth.uid())))))
520
+ );
521
+
522
+ CREATE POLICY api_keys_access ON public.api_keys FOR ALL
523
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
524
+ OR id = auth.uid() );
525
+
526
+ CREATE POLICY akul_access ON public.api_key_usage_logs FOR ALL
527
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
528
+ );
529
+
530
+ CREATE POLICY logs_access ON public.logs FOR ALL
531
+ USING (account_id IN (SELECT public.get_accessible_accounts(auth.uid()))
532
+ );