@taodigital/database 0.0.0-stage → 1.2.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.
Files changed (173) hide show
  1. package/README.md +21 -2
  2. package/dist/index.d.ts +58 -0
  3. package/dist/index.js +209 -0
  4. package/package.json +29 -4
  5. package/prisma/migrations/0000_init/migration.sql +220 -0
  6. package/prisma/migrations/0001_tenant_isolation/migration.sql +43 -0
  7. package/prisma/migrations/0002_app_runtime_role/migration.sql +14 -0
  8. package/prisma/migrations/0003_skill_taxonomy/migration.sql +30 -0
  9. package/prisma/migrations/0004_extended_models/migration.sql +215 -0
  10. package/prisma/migrations/0005_enhanced_test_artifacts/migration.sql +24 -0
  11. package/prisma/migrations/0006_tenant_settings/migration.sql +28 -0
  12. package/prisma/migrations/0007_project_slug/migration.sql +11 -0
  13. package/prisma/migrations/0008_project_crawl_config/migration.sql +3 -0
  14. package/prisma/migrations/0009_tenant_slug/migration.sql +11 -0
  15. package/prisma/migrations/0010_user_password/migration.sql +3 -0
  16. package/prisma/migrations/0011_oauth_connections/migration.sql +78 -0
  17. package/prisma/migrations/0012_agent_webhooks/migration.sql +46 -0
  18. package/prisma/migrations/0013_project_artifacts/migration.sql +27 -0
  19. package/prisma/migrations/0014_knowledge_chunks/migration.sql +37 -0
  20. package/prisma/migrations/20260626022056_platform_job_migration/migration.sql +44 -0
  21. package/prisma/migrations/20260626053339_kag_schema_update/migration.sql +27 -0
  22. package/prisma/migrations/20260626053340_restore_bm25_index/migration.sql +13 -0
  23. package/prisma/migrations/20260626063704_token_optimisation/migration.sql +86 -0
  24. package/prisma/migrations/20260626080000_job_name/migration.sql +2 -0
  25. package/prisma/migrations/20260626090000_rls_missing_tables/migration.sql +39 -0
  26. package/prisma/migrations/20260626100000_token_budget/migration.sql +21 -0
  27. package/prisma/migrations/20260626110000_screen_groups/migration.sql +42 -0
  28. package/prisma/migrations/20260626120000_artifact_intelligence/migration.sql +5 -0
  29. package/prisma/migrations/20260626130000_notifications/migration.sql +34 -0
  30. package/prisma/migrations/20260627100000_element_viewport/migration.sql +2 -0
  31. package/prisma/migrations/20260627100000_screenshot_cloud_url/migration.sql +2 -0
  32. package/prisma/migrations/20260627110000_screenshot_index/migration.sql +2 -0
  33. package/prisma/migrations/20260627140000_artifact_storage_key/migration.sql +3 -0
  34. package/prisma/migrations/20260627150000_screen_lifecycle/migration.sql +5 -0
  35. package/prisma/migrations/20260627160000_native_app_support/migration.sql +41 -0
  36. package/prisma/migrations/20260627200000_rls_missing_tables/migration.sql +57 -0
  37. package/prisma/migrations/20260627210000_llmcalllog_tasktype/migration.sql +1 -0
  38. package/prisma/migrations/20260628100000_element_enrichment/migration.sql +7 -0
  39. package/prisma/migrations/20260628110000_element_hash/migration.sql +6 -0
  40. package/prisma/migrations/20260628120000_screen_diff/migration.sql +20 -0
  41. package/prisma/migrations/20260628130000_probe_observations/migration.sql +19 -0
  42. package/prisma/migrations/20260629100000_visual_baseline_masking/migration.sql +1 -0
  43. package/prisma/migrations/20260629110000_testcase_viewports/migration.sql +1 -0
  44. package/prisma/migrations/20260630100000_visual_baseline_element_snapshot/migration.sql +1 -0
  45. package/prisma/migrations/20260630110000_git_branched_baselines/migration.sql +11 -0
  46. package/prisma/migrations/20260630120000_testcase_viewport_constraint/migration.sql +1 -0
  47. package/prisma/migrations/20260630130000_test_case_runs/migration.sql +22 -0
  48. package/prisma/migrations/20260630140000_perf_env_comments/migration.sql +68 -0
  49. package/prisma/migrations/20260630150000_testcase_gen_at/migration.sql +2 -0
  50. package/prisma/migrations/20260630160000_rls_catchup_late_tables/migration.sql +41 -0
  51. package/prisma/migrations/20260701100000_skill_file_diff_approval/migration.sql +9 -0
  52. package/prisma/migrations/20260701200000_workspace_connector/migration.sql +20 -0
  53. package/prisma/migrations/20260701220000_screen_a11y_security/migration.sql +2 -0
  54. package/prisma/migrations/20260702100000_ci_threshold_root_cause/migration.sql +2 -0
  55. package/prisma/migrations/20260702120000_medium_priority_gaps/migration.sql +28 -0
  56. package/prisma/migrations/20260702140000_testcase_v2_technique/migration.sql +7 -0
  57. package/prisma/migrations/20260702150000_add_app_field/migration.sql +40 -0
  58. package/prisma/migrations/20260702160000_add_requirement_model/migration.sql +62 -0
  59. package/prisma/migrations/20260702180000_add_invitation_model/migration.sql +53 -0
  60. package/prisma/migrations/20260702190000_suite_hierarchy_artifact_trace/migration.sql +28 -0
  61. package/prisma/migrations/20260702200000_project_member_access/migration.sql +31 -0
  62. package/prisma/migrations/20260703000000_add_system_config/migration.sql +11 -0
  63. package/prisma/migrations/20260703000000_custom_roles/migration.sql +29 -0
  64. package/prisma/migrations/20260703100000_platform_admin/migration.sql +11 -0
  65. package/prisma/migrations/20260703110000_add_extension_models/migration.sql +106 -0
  66. package/prisma/migrations/20260703120000_project_restricted_column/migration.sql +1 -0
  67. package/prisma/migrations/20260703200000_system_config_category_index/migration.sql +1 -0
  68. package/prisma/migrations/20260703210000_workspace_layer/migration.sql +24 -0
  69. package/prisma/migrations/20260703230000_workspace_agent_tokens/migration.sql +2 -0
  70. package/prisma/migrations/20260704000000_requirement_rls_policy/migration.sql +35 -0
  71. package/prisma/migrations/20260704100000_fix_oauth_auditlog_cascade/migration.sql +9 -0
  72. package/prisma/migrations/20260704110000_skillfile_approval_status/migration.sql +2 -0
  73. package/prisma/migrations/20260704120000_scenario_suspect_workspace/migration.sql +35 -0
  74. package/prisma/migrations/20260704130000_testcase_traceto_suspect_indexes/migration.sql +5 -0
  75. package/prisma/migrations/20260704140000_workspace_rls/migration.sql +19 -0
  76. package/prisma/migrations/20260704150000_project_cascade_deletes/migration.sql +125 -0
  77. package/prisma/migrations/20260705100000_platform_job_worker_id/migration.sql +12 -0
  78. package/prisma/migrations/20260705110000_screen_discovery_method/migration.sql +7 -0
  79. package/prisma/migrations/20260705120000_webhook_delivery/migration.sql +32 -0
  80. package/prisma/migrations/20260705130000_tenant_feature_flags/migration.sql +23 -0
  81. package/prisma/migrations/20260705140000_auth_sessions/migration.sql +30 -0
  82. package/prisma/migrations/20260705150000_fix_rls_wrong_session_var/migration.sql +51 -0
  83. package/prisma/migrations/20260705160000_testcase_flaky_quarantine/migration.sql +14 -0
  84. package/prisma/migrations/20260705170000_testcaserun_browser/migration.sql +6 -0
  85. package/prisma/migrations/20260705180000_allow_custom_roles/migration.sql +22 -0
  86. package/prisma/migrations/20260706050000_screen_markdown_extraction/migration.sql +8 -0
  87. package/prisma/migrations/20260706090000_add_lighthouse_to_performance_snapshot/migration.sql +4 -0
  88. package/prisma/migrations/20260706100000_add_lighthouse_bp_and_job_index/migration.sql +5 -0
  89. package/prisma/migrations/20260706110000_add_visual_diff_ai_summary/migration.sql +2 -0
  90. package/prisma/migrations/20260707120000_script_bundles/migration.sql +25 -0
  91. package/prisma/migrations/20260707130000_requirement_source_section/migration.sql +4 -0
  92. package/prisma/migrations/20260707140000_structured_skill_metadata/migration.sql +8 -0
  93. package/prisma/migrations/20260707150000_crawler_platform_primitives/migration.sql +112 -0
  94. package/prisma/migrations/20260707160000_screen_group_versioning/migration.sql +9 -0
  95. package/prisma/migrations/20260707170000_add_mfa_fields/migration.sql +24 -0
  96. package/prisma/migrations/20260707180000_add_missing_tables/migration.sql +158 -0
  97. package/prisma/migrations/20260707190000_add_missing_columns/migration.sql +15 -0
  98. package/prisma/migrations/20260707200000_add_plan_sessions/migration.sql +1 -0
  99. package/prisma/migrations/20260708100000_missing_columns_comprehensive/migration.sql +15 -0
  100. package/prisma/migrations/20260708200000_testcase_dataset_column/migration.sql +16 -0
  101. package/prisma/migrations/20260709100000_add_filename_to_native_app_build/migration.sql +1 -0
  102. package/prisma/migrations/20260709200000_cloud_url_visual_artifacts/migration.sql +6 -0
  103. package/prisma/migrations/20260714200000_add_cached_scenarios_to_artifact/migration.sql +4 -0
  104. package/prisma/migrations/20260715200000_screen_markdown_content/migration.sql +2 -0
  105. package/prisma/migrations/20260716100000_github_repo_coverage_tables/migration.sql +114 -0
  106. package/prisma/migrations/20260716200000_github_pr_script_validation/migration.sql +48 -0
  107. package/prisma/migrations/20260716210000_s3_content_keys/migration.sql +20 -0
  108. package/prisma/migrations/20260717220000_ide_push_token/migration.sql +21 -0
  109. package/prisma/migrations/20260717230000_ide_push_script_ids/migration.sql +2 -0
  110. package/prisma/migrations/20260730040000_add_step_evidence_and_validation/migration.sql +93 -0
  111. package/prisma/migrations/20260803000000_add_tenantId_to_test_data_row/migration.sql +40 -0
  112. package/prisma/migrations/20260804000000_add_project_restricted/migration.sql +6 -0
  113. package/prisma/migrations/20260804000000_add_user_avatar_url/migration.sql +4 -0
  114. package/prisma/migrations/20260805000000_add_auditlog_ipaddress/migration.sql +2 -0
  115. package/prisma/migrations/20260807000000_add_test_data_classification/migration.sql +18 -0
  116. package/prisma/migrations/20260807000001_add_test_case_notes/migration.sql +5 -0
  117. package/prisma/migrations/20260807000002_add_visual_baseline_browser_structured_steps/migration.sql +11 -0
  118. package/prisma/migrations/20260807100000_add_tenant_plan_config/migration.sql +14 -0
  119. package/prisma/migrations/20260808000000_agent_token_missing_columns/migration.sql +22 -0
  120. package/prisma/migrations/20260808000001_visual_diff_image_and_threshold/migration.sql +8 -0
  121. package/prisma/migrations/20260808000002_ssoconfig_email_domains/migration.sql +7 -0
  122. package/prisma/migrations/20260808000003_project_status_description_updatedat/migration.sql +7 -0
  123. package/prisma/migrations/20260814000000_workspace_require_mfa/migration.sql +2 -0
  124. package/prisma/migrations/20260814000001_add_screenshot_dpr/migration.sql +2 -0
  125. package/prisma/migrations/20260818000000_add_content_hash_to_test_case/migration.sql +6 -0
  126. package/prisma/migrations/20260818000001_add_grounding_hash_to_test_case/migration.sql +3 -0
  127. package/prisma/migrations/20260819000000_coverage_mapping_cross_encoder_fields/migration.sql +3 -0
  128. package/prisma/migrations/20260820000000_add_locators_json_to_test_case/migration.sql +6 -0
  129. package/prisma/migrations/20260820000001_add_test_case_version/migration.sql +27 -0
  130. package/prisma/migrations/20260826000000_add_capture_step_screenshots/migration.sql +1 -0
  131. package/prisma/migrations/20260903000000_add_platform_job_dlq/migration.sql +10 -0
  132. package/prisma/migrations/20260903000002_add_versioning_tables/migration.sql +38 -0
  133. package/prisma/migrations/20260903000003_add_learning_models/migration.sql +71 -0
  134. package/prisma/migrations/20260903000004_add_workspace_agent_prompts/migration.sql +33 -0
  135. package/prisma/migrations/20260903000005_add_config_history/migration.sql +70 -0
  136. package/prisma/migrations/20260903000006_add_skill_file_config/migration.sql +24 -0
  137. package/prisma/migrations/20260904000000_add_agent_prompt_platform_table/migration.sql +23 -0
  138. package/prisma/migrations/20260904180424_rbac_role_configs_admin_roles/migration.sql +606 -0
  139. package/prisma/migrations/20260907000000_fix_testcase_timestamps/migration.sql +13 -0
  140. package/prisma/migrations/20260907000001_add_artifact_imported_suite_id/migration.sql +1 -0
  141. package/prisma/migrations/20260907000002_add_user_login_tracking/migration.sql +9 -0
  142. package/prisma/migrations/20260907000003_add_artifact_import_tracking/migration.sql +9 -0
  143. package/prisma/migrations/20260907000004_add_artifact_version_chain/migration.sql +18 -0
  144. package/prisma/migrations/20260908000000_add_project_vsa_enabled/migration.sql +2 -0
  145. package/prisma/migrations/20260908000001_rbac_migration_catchup/migration.sql +314 -0
  146. package/prisma/migrations/20260908000002_fix_role_configs_empty_permissions/migration.sql +22 -0
  147. package/prisma/migrations/20260908000003_sync_builtin_role_permissions/migration.sql +38 -0
  148. package/prisma/migrations/20260909000000_add_filepath_to_testscript/migration.sql +5 -0
  149. package/prisma/migrations/20260909000001_add_alignment_result_table/migration.sql +31 -0
  150. package/prisma/migrations/20260910000000_add_admin_mfa/migration.sql +35 -0
  151. package/prisma/migrations/20260910000000_add_dom_snapshot_cloud_url/migration.sql +2 -0
  152. package/prisma/migrations/20260910000001_add_requires_auth_to_screen/migration.sql +1 -0
  153. package/prisma/migrations/20260910000002_add_screen_requires_auth/migration.sql +2 -0
  154. package/prisma/migrations/20260910000003_add_admin_auth_sessions/migration.sql +17 -0
  155. package/prisma/migrations/20260916000001_add_admin_last_login/migration.sql +1 -0
  156. package/prisma/migrations/20260916000002_add_admin_failed_login/migration.sql +2 -0
  157. package/prisma/migrations/20260916000003_seed_system_tenant/migration.sql +6 -0
  158. package/prisma/migrations/20260918000000_fix_permissions_comprehensive/migration.sql +63 -0
  159. package/prisma/migrations/20260924000000_add_screen_role_access/migration.sql +2 -0
  160. package/prisma/migrations/20260928000000_add_navigation_graph/migration.sql +41 -0
  161. package/prisma/migrations/20260929000000_artifact_content_hash_suite_unique/migration.sql +25 -0
  162. package/prisma/migrations/20260929000000_navigation_graph_unique_constraint/migration.sql +5 -0
  163. package/prisma/migrations/20260929000001_add_membership_status/migration.sql +7 -0
  164. package/prisma/migrations/20260929000002_add_sso_config_scim_token_hash/migration.sql +8 -0
  165. package/prisma/migrations/20261005000001_jobs_workers_hardening/migration.sql +63 -0
  166. package/prisma/migrations/20261009000001_add_suite_category/migration.sql +2 -0
  167. package/prisma/migrations/20261009000002_add_testcase_approved_fields/migration.sql +3 -0
  168. package/prisma/migrations/20261012_auto_version_history/migration.sql +111 -0
  169. package/prisma/migrations/20261015000001_traceability_alignment_gaps/migration.sql +11 -0
  170. package/prisma/migrations/20261028000001_context_intelligence_p1_p7/migration.sql +76 -0
  171. package/prisma/migrations/migration_lock.toml +3 -0
  172. package/prisma/schema.prisma +2901 -0
  173. package/prisma/seed.ts +1262 -0
@@ -0,0 +1,71 @@
1
+ -- Learning / Onboarding models: UserContext, LearningJourney, LearningTask, TaskSubmission
2
+
3
+ CREATE TABLE IF NOT EXISTS "UserContext" (
4
+ "id" TEXT NOT NULL,
5
+ "userId" TEXT NOT NULL,
6
+ "dailyTasks" TEXT[] DEFAULT ARRAY[]::TEXT[],
7
+ "roles" TEXT[] DEFAULT ARRAY[]::TEXT[],
8
+ "responsibilities" TEXT[] DEFAULT ARRAY[]::TEXT[],
9
+ "toolsUsed" TEXT[] DEFAULT ARRAY[]::TEXT[],
10
+ "lastExtractedAt" TIMESTAMP(3),
11
+ CONSTRAINT "UserContext_pkey" PRIMARY KEY ("id")
12
+ );
13
+
14
+ CREATE TABLE IF NOT EXISTS "LearningJourney" (
15
+ "id" TEXT NOT NULL,
16
+ "userId" TEXT NOT NULL,
17
+ "tenantId" TEXT NOT NULL,
18
+ "level" INTEGER NOT NULL DEFAULT 1,
19
+ "status" TEXT NOT NULL DEFAULT 'ACTIVE',
20
+ CONSTRAINT "LearningJourney_pkey" PRIMARY KEY ("id")
21
+ );
22
+
23
+ CREATE TABLE IF NOT EXISTS "LearningTask" (
24
+ "id" TEXT NOT NULL,
25
+ "journeyId" TEXT NOT NULL,
26
+ "title" TEXT NOT NULL,
27
+ "description" TEXT NOT NULL,
28
+ "requiredArtifacts" TEXT[] DEFAULT ARRAY[]::TEXT[],
29
+ "status" TEXT NOT NULL DEFAULT 'ASSIGNED',
30
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
31
+ CONSTRAINT "LearningTask_pkey" PRIMARY KEY ("id")
32
+ );
33
+
34
+ CREATE TABLE IF NOT EXISTS "TaskSubmission" (
35
+ "id" TEXT NOT NULL,
36
+ "taskId" TEXT NOT NULL,
37
+ "textContent" TEXT,
38
+ "contentUrl" TEXT,
39
+ "submittedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
40
+ CONSTRAINT "TaskSubmission_pkey" PRIMARY KEY ("id")
41
+ );
42
+
43
+ CREATE UNIQUE INDEX IF NOT EXISTS "UserContext_userId_key" ON "UserContext"("userId");
44
+ CREATE UNIQUE INDEX IF NOT EXISTS "LearningJourney_userId_key" ON "LearningJourney"("userId");
45
+ CREATE INDEX IF NOT EXISTS "LearningJourney_tenantId_idx" ON "LearningJourney"("tenantId");
46
+ CREATE INDEX IF NOT EXISTS "LearningTask_journeyId_idx" ON "LearningTask"("journeyId");
47
+ CREATE INDEX IF NOT EXISTS "TaskSubmission_taskId_idx" ON "TaskSubmission"("taskId");
48
+
49
+ DO $$ BEGIN
50
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'UserContext_userId_fkey') THEN
51
+ ALTER TABLE "UserContext" ADD CONSTRAINT "UserContext_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
52
+ END IF;
53
+ END $$;
54
+
55
+ DO $$ BEGIN
56
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'LearningJourney_userId_fkey') THEN
57
+ ALTER TABLE "LearningJourney" ADD CONSTRAINT "LearningJourney_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
58
+ END IF;
59
+ END $$;
60
+
61
+ DO $$ BEGIN
62
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'LearningTask_journeyId_fkey') THEN
63
+ ALTER TABLE "LearningTask" ADD CONSTRAINT "LearningTask_journeyId_fkey" FOREIGN KEY ("journeyId") REFERENCES "LearningJourney"("id") ON DELETE CASCADE ON UPDATE CASCADE;
64
+ END IF;
65
+ END $$;
66
+
67
+ DO $$ BEGIN
68
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'TaskSubmission_taskId_fkey') THEN
69
+ ALTER TABLE "TaskSubmission" ADD CONSTRAINT "TaskSubmission_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "LearningTask"("id") ON DELETE CASCADE ON UPDATE CASCADE;
70
+ END IF;
71
+ END $$;
@@ -0,0 +1,33 @@
1
+ -- CreateTable
2
+ CREATE TABLE IF NOT EXISTS "WorkspaceAgentPrompt" (
3
+ "id" TEXT NOT NULL,
4
+ "tenantId" TEXT NOT NULL,
5
+ "agentKey" TEXT NOT NULL,
6
+ "passKey" TEXT,
7
+ "name" TEXT NOT NULL,
8
+ "body" TEXT NOT NULL,
9
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
10
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
11
+ "updatedAt" TIMESTAMP(3) NOT NULL,
12
+ "updatedBy" TEXT,
13
+
14
+ CONSTRAINT "WorkspaceAgentPrompt_pkey" PRIMARY KEY ("id")
15
+ );
16
+
17
+ -- CreateIndex
18
+ CREATE UNIQUE INDEX IF NOT EXISTS "WorkspaceAgentPrompt_tenantId_agentKey_passKey_key"
19
+ ON "WorkspaceAgentPrompt"("tenantId", "agentKey", "passKey");
20
+
21
+ -- CreateIndex
22
+ CREATE INDEX IF NOT EXISTS "WorkspaceAgentPrompt_tenantId_agentKey_isActive_idx"
23
+ ON "WorkspaceAgentPrompt"("tenantId", "agentKey", "isActive");
24
+
25
+ -- AddForeignKey
26
+ DO $$ BEGIN
27
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'WorkspaceAgentPrompt_tenantId_fkey') THEN
28
+ ALTER TABLE "WorkspaceAgentPrompt"
29
+ ADD CONSTRAINT "WorkspaceAgentPrompt_tenantId_fkey"
30
+ FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id")
31
+ ON DELETE CASCADE ON UPDATE CASCADE;
32
+ END IF;
33
+ END $$;
@@ -0,0 +1,70 @@
1
+ -- Migration: add_config_history
2
+ -- Adds immutable audit trail tables for:
3
+ -- SystemConfigHistory — admin config upsert/delete events
4
+ -- AgentPromptHistory — platform prompt body changes
5
+ -- WorkspaceAgentPromptHistory — tenant prompt override changes
6
+
7
+ -- -------------------------------------------------------------------
8
+ -- SystemConfigHistory
9
+ -- -------------------------------------------------------------------
10
+ CREATE TABLE IF NOT EXISTS "SystemConfigHistory" (
11
+ "id" TEXT NOT NULL,
12
+ "configKey" TEXT NOT NULL,
13
+ "category" TEXT NOT NULL,
14
+ "fieldKey" TEXT NOT NULL,
15
+ "oldValue" TEXT,
16
+ "newValue" TEXT,
17
+ "action" TEXT NOT NULL,
18
+ "sensitive" BOOLEAN NOT NULL DEFAULT false,
19
+ "adminId" TEXT,
20
+ "adminEmail" TEXT,
21
+ "changedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
22
+
23
+ CONSTRAINT "SystemConfigHistory_pkey" PRIMARY KEY ("id")
24
+ );
25
+
26
+ CREATE INDEX IF NOT EXISTS "SystemConfigHistory_configKey_changedAt_idx" ON "SystemConfigHistory"("configKey", "changedAt" DESC);
27
+ CREATE INDEX IF NOT EXISTS "SystemConfigHistory_category_changedAt_idx" ON "SystemConfigHistory"("category", "changedAt" DESC);
28
+ CREATE INDEX IF NOT EXISTS "SystemConfigHistory_adminId_idx" ON "SystemConfigHistory"("adminId");
29
+
30
+ -- -------------------------------------------------------------------
31
+ -- AgentPromptHistory
32
+ -- -------------------------------------------------------------------
33
+ CREATE TABLE IF NOT EXISTS "AgentPromptHistory" (
34
+ "id" TEXT NOT NULL,
35
+ "agentPromptId" TEXT NOT NULL,
36
+ "agentKey" TEXT NOT NULL,
37
+ "passKey" TEXT,
38
+ "oldBody" TEXT NOT NULL,
39
+ "newBody" TEXT NOT NULL,
40
+ "version" INTEGER NOT NULL,
41
+ "adminId" TEXT,
42
+ "adminEmail" TEXT,
43
+ "changedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
44
+
45
+ CONSTRAINT "AgentPromptHistory_pkey" PRIMARY KEY ("id")
46
+ );
47
+
48
+ CREATE INDEX IF NOT EXISTS "AgentPromptHistory_agentPromptId_changedAt_idx" ON "AgentPromptHistory"("agentPromptId", "changedAt" DESC);
49
+ CREATE INDEX IF NOT EXISTS "AgentPromptHistory_agentKey_changedAt_idx" ON "AgentPromptHistory"("agentKey", "changedAt" DESC);
50
+
51
+ -- -------------------------------------------------------------------
52
+ -- WorkspaceAgentPromptHistory
53
+ -- -------------------------------------------------------------------
54
+ CREATE TABLE IF NOT EXISTS "WorkspaceAgentPromptHistory" (
55
+ "id" TEXT NOT NULL,
56
+ "workspaceAgentPromptId" TEXT,
57
+ "tenantId" TEXT NOT NULL,
58
+ "agentKey" TEXT NOT NULL,
59
+ "passKey" TEXT,
60
+ "oldBody" TEXT,
61
+ "newBody" TEXT,
62
+ "action" TEXT NOT NULL,
63
+ "updatedBy" TEXT,
64
+ "changedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
65
+
66
+ CONSTRAINT "WorkspaceAgentPromptHistory_pkey" PRIMARY KEY ("id")
67
+ );
68
+
69
+ CREATE INDEX IF NOT EXISTS "WorkspaceAgentPromptHistory_tenantId_agentKey_changedAt_idx" ON "WorkspaceAgentPromptHistory"("tenantId", "agentKey", "changedAt" DESC);
70
+ CREATE INDEX IF NOT EXISTS "WorkspaceAgentPromptHistory_workspaceAgentPromptId_changedAt_idx" ON "WorkspaceAgentPromptHistory"("workspaceAgentPromptId", "changedAt" DESC);
@@ -0,0 +1,24 @@
1
+ -- Migration: add_skill_file_config
2
+ -- Adds SkillFileConfig table for per-project, per-kind skill file settings.
3
+ -- Allows platform admins to enable/disable generation, set intervals, require approval.
4
+
5
+ CREATE TABLE IF NOT EXISTS "SkillFileConfig" (
6
+ "id" TEXT NOT NULL,
7
+ "projectId" TEXT NOT NULL,
8
+ "tenantId" TEXT NOT NULL,
9
+ "kind" TEXT NOT NULL,
10
+ "enabled" BOOLEAN NOT NULL DEFAULT true,
11
+ "requireApproval" BOOLEAN NOT NULL DEFAULT false,
12
+ "autoGenIntervalMins" INTEGER,
13
+ "generationStrategy" TEXT NOT NULL DEFAULT 'AUTO',
14
+ "validationThresholds" JSONB,
15
+ "adminNotes" TEXT,
16
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
17
+ "updatedAt" TIMESTAMP(3) NOT NULL,
18
+
19
+ CONSTRAINT "SkillFileConfig_pkey" PRIMARY KEY ("id"),
20
+ CONSTRAINT "SkillFileConfig_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE
21
+ );
22
+
23
+ CREATE UNIQUE INDEX IF NOT EXISTS "SkillFileConfig_projectId_kind_key" ON "SkillFileConfig"("projectId", "kind");
24
+ CREATE INDEX IF NOT EXISTS "SkillFileConfig_tenantId_projectId_idx" ON "SkillFileConfig"("tenantId", "projectId");
@@ -0,0 +1,23 @@
1
+ -- CreateTable: Platform-wide agent prompt overrides managed via admin UI.
2
+ -- Resolution order: WorkspaceAgentPrompt (tenant) → AgentPrompt (platform) → hardcoded fallback.
3
+ CREATE TABLE IF NOT EXISTS "AgentPrompt" (
4
+ "id" TEXT NOT NULL,
5
+ "name" TEXT NOT NULL,
6
+ "agentKey" TEXT NOT NULL,
7
+ "passKey" TEXT,
8
+ "body" TEXT NOT NULL,
9
+ "version" INTEGER NOT NULL DEFAULT 1,
10
+ "isActive" BOOLEAN NOT NULL DEFAULT true,
11
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
12
+ "updatedAt" TIMESTAMP(3) NOT NULL,
13
+
14
+ CONSTRAINT "AgentPrompt_pkey" PRIMARY KEY ("id")
15
+ );
16
+
17
+ -- CreateIndex
18
+ CREATE UNIQUE INDEX IF NOT EXISTS "AgentPrompt_agentKey_passKey_isActive_key"
19
+ ON "AgentPrompt"("agentKey", "passKey", "isActive");
20
+
21
+ -- CreateIndex
22
+ CREATE INDEX IF NOT EXISTS "AgentPrompt_agentKey_isActive_idx"
23
+ ON "AgentPrompt"("agentKey", "isActive");