thinkwork-cli 0.12.12 → 0.12.16

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 (475) hide show
  1. package/README.md +42 -38
  2. package/dist/{api-client-ASJWIG3Z.js → api-client-JUBCQQDF.js} +1 -1
  3. package/dist/{chunk-JEHV35EU.js → chunk-STY44FQO.js} +353 -30
  4. package/dist/cli.js +23823 -10151
  5. package/dist/commands/enterprise/templates/deploy-repo/.github/workflows/deploy.yml +17 -6
  6. package/dist/commands/enterprise/templates/deploy-repo/docs/runbook.md +81 -9
  7. package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +183 -21
  8. package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +1 -2
  9. package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +286 -0
  10. package/dist/drizzle/0000_petite_marvel_apes.sql +1188 -0
  11. package/dist/drizzle/0001_milky_surge.sql +103 -0
  12. package/dist/drizzle/0002_aberrant_mattie_franklin.sql +41 -0
  13. package/dist/drizzle/0003_exotic_ogun.sql +3 -0
  14. package/dist/drizzle/0004_glamorous_magneto.sql +2 -0
  15. package/dist/drizzle/0005_ancient_nocturne.sql +2 -0
  16. package/dist/drizzle/0006_new_colonel_america.sql +2 -0
  17. package/dist/drizzle/0007_unique_external_task_id.sql +31 -0
  18. package/dist/drizzle/0008_external_task_id_column.sql +43 -0
  19. package/dist/drizzle/0009_evaluations.sql +64 -0
  20. package/dist/drizzle/0010_eval_agent_template.sql +2 -0
  21. package/dist/drizzle/0011_eval_run_template.sql +2 -0
  22. package/dist/drizzle/0012_eval_seed_unique.sql +16 -0
  23. package/dist/drizzle/0013_motionless_white_queen.sql +140 -0
  24. package/dist/drizzle/0014_wiki_aggregation.sql +11 -0
  25. package/dist/drizzle/0015_pg_trgm_alias_title_indexes.sql +9 -0
  26. package/dist/drizzle/0016_wiki_schema_drops.sql +24 -0
  27. package/dist/drizzle/0017_wiki_places.sql +46 -0
  28. package/dist/drizzle/0018_agent_workspace_overlay.sql +26 -0
  29. package/dist/drizzle/0018_cool_firebird.sql +24 -0
  30. package/dist/drizzle/0018_skill_runs.sql +84 -0
  31. package/dist/drizzle/0019_condemned_dragon_man.sql +95 -0
  32. package/dist/drizzle/0019_webhook_skill_runs.sql +58 -0
  33. package/dist/drizzle/0020_crazy_the_anarchist.sql +9 -0
  34. package/dist/drizzle/0020_mutation_idempotency.sql +64 -0
  35. package/dist/drizzle/0021_crm_work_links.sql +76 -0
  36. package/dist/drizzle/0021_skill_runs_completion_hmac.sql +33 -0
  37. package/dist/drizzle/0022_add_billing_tables.sql +70 -0
  38. package/dist/drizzle/0022_seed_thinkwork_admin_permissions.sql +160 -0
  39. package/dist/drizzle/0022_stripe_billing_indexes.sql +48 -0
  40. package/dist/drizzle/0023_tenants_deactivation.sql +27 -0
  41. package/dist/drizzle/0024_tenant_mcp_admin_keys.sql +63 -0
  42. package/dist/drizzle/0025_v1_agent_architecture.sql +182 -0
  43. package/dist/drizzle/0026_thread_turns_add_kind.sql +28 -0
  44. package/dist/drizzle/0027_capability_catalog_and_manifests.sql +219 -0
  45. package/dist/drizzle/0028_aws_s3_extension.sql +26 -0
  46. package/dist/drizzle/0029_collapse_execution_types.sql +42 -0
  47. package/dist/drizzle/0030_retire_composition_primitives.sql +48 -0
  48. package/dist/drizzle/0031_thread_cleanup_drops.sql +131 -0
  49. package/dist/drizzle/0032_add_browser_automation_template_config.sql +24 -0
  50. package/dist/drizzle/0033_agent_operation_leases.sql +32 -0
  51. package/dist/drizzle/0034_agent_workspace_events.sql +116 -0
  52. package/dist/drizzle/0035_workspace_review_decisions.sql +19 -0
  53. package/dist/drizzle/0036_user_scoped_memory_wiki.sql +152 -0
  54. package/dist/drizzle/0037_user_profile_operating_model.sql +34 -0
  55. package/dist/drizzle/0042_agent_runtime_selector.sql +41 -0
  56. package/dist/drizzle/0043_wiki_search_tsv_tokenization.sql +48 -0
  57. package/dist/drizzle/0044_add_web_search_template_config.sql +7 -0
  58. package/dist/drizzle/0045_add_send_email_template_config.sql +7 -0
  59. package/dist/drizzle/0046_tenant_mcp_context_tools.sql +26 -0
  60. package/dist/drizzle/0047_add_context_engine_template_config.sql +7 -0
  61. package/dist/drizzle/0048_tenant_context_provider_settings.sql +22 -0
  62. package/dist/drizzle/0050_brain_v0_entity_subtype.sql +29 -0
  63. package/dist/drizzle/0051_brain_v0_tenant_entity_pages.sql +170 -0
  64. package/dist/drizzle/0052_brain_v0_external_refs.sql +41 -0
  65. package/dist/drizzle/0053_brain_v0_unresolved_mentions_subtype.sql +48 -0
  66. package/dist/drizzle/0054_wiki_compile_jobs_input.sql +28 -0
  67. package/dist/drizzle/0055_routines_stepfunctions_substrate.sql +202 -0
  68. package/dist/drizzle/0056_routine_step_events_dedup_idx.sql +25 -0
  69. package/dist/drizzle/0057_archive_legacy_python_routines.sql +36 -0
  70. package/dist/drizzle/0058_routines_visibility_and_owning_agent.sql +61 -0
  71. package/dist/drizzle/0061_routine_execution_asl_version_id.sql +29 -0
  72. package/dist/drizzle/0062_migrate_pi_to_flue.sql +110 -0
  73. package/dist/drizzle/0063_threads_session_data.sql +23 -0
  74. package/dist/drizzle/0064_tenant_credentials.sql +65 -0
  75. package/dist/drizzle/0067_thinkwork_computers_phase_one.sql +174 -0
  76. package/dist/drizzle/0068_drop_system_workflows_and_activation.sql +115 -0
  77. package/dist/drizzle/0069_compliance_schema.sql +364 -0
  78. package/dist/drizzle/0070_compliance_aurora_roles.sql +171 -0
  79. package/dist/drizzle/0072_threads_computer_ownership.sql +24 -0
  80. package/dist/drizzle/0073_compliance_tenant_anchor_state.sql +105 -0
  81. package/dist/drizzle/0074_compliance_event_hash_index.sql +49 -0
  82. package/dist/drizzle/0075_scheduled_jobs_computer_ownership.sql +27 -0
  83. package/dist/drizzle/0076_scheduled_jobs_marco_backfill.sql +69 -0
  84. package/dist/drizzle/0077_computers_primary_agent_id.sql +38 -0
  85. package/dist/drizzle/0078_tenant_customize_catalog.sql +46 -0
  86. package/dist/drizzle/0079_seed_tenant_customize_catalog.sql +53 -0
  87. package/dist/drizzle/0081_routines_catalog_slug.sql +42 -0
  88. package/dist/drizzle/0082_messages_parts_jsonb.sql +52 -0
  89. package/dist/drizzle/0083_computer_runbooks.sql +103 -0
  90. package/dist/drizzle/0084_artifacts_favorited_at.sql +32 -0
  91. package/dist/drizzle/0085_seed_thinkwork_computer_default_template.sql +46 -0
  92. package/dist/drizzle/0086_update_default_template_models.sql +19 -0
  93. package/dist/drizzle/0087_retire_oss_connectors.sql +77 -0
  94. package/dist/drizzle/0088_compliance_event_types_finance_pilot.sql +37 -0
  95. package/dist/drizzle/0089_remove_maniflow_eval_seeds.sql +81 -0
  96. package/dist/drizzle/0089_wiki_schema_extraction.sql +315 -0
  97. package/dist/drizzle/0090_brain_schema_extraction.sql +274 -0
  98. package/dist/drizzle/0091_drop_wiki_brain_compat_views.sql +118 -0
  99. package/dist/drizzle/0092_finish_oss_connector_retirement.sql +97 -0
  100. package/dist/drizzle/0093_eval_runs_scheduled_job_id.sql +23 -0
  101. package/dist/drizzle/0094_slack_workspace_app.sql +140 -0
  102. package/dist/drizzle/0095_eval_runs_computer_id.sql +22 -0
  103. package/dist/drizzle/0096_true_redteam_eval_seed_cleanup.sql +67 -0
  104. package/dist/drizzle/0097_shared_computers.sql +191 -0
  105. package/dist/drizzle/0098_business_ontology.sql +587 -0
  106. package/dist/drizzle/0099_thread_idle_learning.sql +145 -0
  107. package/dist/drizzle/0100_ontology_gated_brain_dynamic_subtypes.sql +7 -0
  108. package/dist/drizzle/0101_ontology_gated_unresolved_mentions_dynamic_subtypes.sql +7 -0
  109. package/dist/drizzle/0102_wiki_brain_owner_repair.sql +87 -0
  110. package/dist/drizzle/0103_brain_section_source_trigger_repair.sql +75 -0
  111. package/dist/drizzle/0104_expand_seed_ontology_for_user_memory.sql +166 -0
  112. package/dist/drizzle/0105_spaces_domain.sql +349 -0
  113. package/dist/drizzle/0106_expand_seed_ontology_for_triples.sql +173 -0
  114. package/dist/drizzle/0106_space_threads_participants.sql +197 -0
  115. package/dist/drizzle/0107_linked_task_mirror.sql +245 -0
  116. package/dist/drizzle/0108_message_mentions.sql +95 -0
  117. package/dist/drizzle/0109_space_owned_threads.sql +217 -0
  118. package/dist/drizzle/0110_thread_participant_read_state.sql +21 -0
  119. package/dist/drizzle/0111_agents_tenant_name_unique.sql +38 -0
  120. package/dist/drizzle/0112_recast_spaces_as_contextual_workrooms.sql +138 -0
  121. package/dist/drizzle/0113_agents_own_runtime_fields.sql +48 -0
  122. package/dist/drizzle/0114_migrate_templates_to_agents_and_spaces.sql +361 -0
  123. package/dist/drizzle/0115_remove_computer_eval_template_dependencies.sql +69 -0
  124. package/dist/drizzle/0116_backfill_thread_participants_access.sql +126 -0
  125. package/dist/drizzle/0117_space_access_mode.sql +40 -0
  126. package/dist/drizzle/0118_normalize_tenant_member_principal_type.sql +41 -0
  127. package/dist/drizzle/0119_space_knowledge_bases.sql +126 -0
  128. package/dist/drizzle/0120_space_automations.sql +58 -0
  129. package/dist/drizzle/0121_drop_computer_runbooks.sql +26 -0
  130. package/dist/drizzle/0122_space_email_triggers.sql +24 -0
  131. package/dist/drizzle/0123_single_platform_agent_and_overrides.sql +58 -0
  132. package/dist/drizzle/0124_thread_turns_finalized_at.sql +17 -0
  133. package/dist/drizzle/0125_drop_space_agent_assignments.sql +42 -0
  134. package/dist/drizzle/0126_migrate_flue_to_pi.sql +42 -0
  135. package/dist/drizzle/0127_runtime_type_observability.sql +28 -0
  136. package/dist/drizzle/0128_drop_eval_test_cases_agent_id.sql +37 -0
  137. package/dist/drizzle/0129_drop_code_factory_tables.sql +43 -0
  138. package/dist/drizzle/0129_eval_results_system_prompt.sql +30 -0
  139. package/dist/drizzle/0130_drop_teams_and_team_id_columns.sql +54 -0
  140. package/dist/drizzle/0131_drop_skill_catalog_and_tenant_skills.sql +33 -0
  141. package/dist/drizzle/0132_drop_computer_tables.sql +31 -0
  142. package/dist/drizzle/0133_drop_seed_view_tombstones.sql +79 -0
  143. package/dist/drizzle/0133_thread_turns_system_prompt.sql +22 -0
  144. package/dist/drizzle/0134_drop_dead_agent_runtime_tables.sql +53 -0
  145. package/dist/drizzle/0135_native_checklist_linked_tasks.sql +48 -0
  146. package/dist/drizzle/0136_goal_ledger.sql +55 -0
  147. package/dist/drizzle/0136_space_email_trigger_status.sql +66 -0
  148. package/dist/drizzle/0137_thread_participant_pins.sql +25 -0
  149. package/dist/drizzle/0138_users_cognito_sub.sql +30 -0
  150. package/dist/drizzle/0139_mobile_turn_client_id.sql +23 -0
  151. package/dist/drizzle/0140_workspace_folder_names.sql +36 -0
  152. package/dist/drizzle/0141_eval_runs_desktop_pi_provenance.sql +31 -0
  153. package/dist/drizzle/0142_pi_only_agent_runtime.sql +61 -0
  154. package/dist/drizzle/0143_add_web_extract_builtin_config.sql +28 -0
  155. package/dist/drizzle/0144_skill_catalog_index.sql +40 -0
  156. package/dist/drizzle/0145_knowledge_graph_thread_ingest.sql +512 -0
  157. package/dist/drizzle/0146_knowledge_graph_source_scope.sql +413 -0
  158. package/dist/drizzle/0147_knowledge_graph_scope_trigger_qualification.sql +211 -0
  159. package/dist/drizzle/0148_user_cost_attribution.sql +171 -0
  160. package/dist/drizzle/0149_managed_mcp_servers.sql +64 -0
  161. package/dist/drizzle/0149_user_model_approvals.sql +89 -0
  162. package/dist/drizzle/0150_bootstrap_first_admin_claim.sql +11 -0
  163. package/dist/drizzle/0151_managed_deployments.sql +91 -0
  164. package/dist/drizzle/0152_agent_profiles.sql +81 -0
  165. package/dist/drizzle/0153_message_mentions_agent_profile.sql +9 -0
  166. package/dist/drizzle/0154_customer_deployment_sessions.sql +61 -0
  167. package/dist/drizzle/0155_tenant_model_catalog.sql +152 -0
  168. package/dist/drizzle/0156_bootstrap_credential_leases.sql +52 -0
  169. package/dist/drizzle/0157_knowledge_graph_observations_source.sql +79 -0
  170. package/dist/drizzle/0158_pending_user_questions.sql +80 -0
  171. package/dist/drizzle/0158_wiki_tenant_scope.sql +38 -0
  172. package/dist/drizzle/0159_agent_profiles_space_local.sql +49 -0
  173. package/dist/drizzle/0159_application_plugins.sql +193 -0
  174. package/dist/drizzle/0159_eval_scoring_version.sql +46 -0
  175. package/dist/drizzle/0160_compliance_event_types_plugins.sql +37 -0
  176. package/dist/drizzle/0160_eval_datasets.sql +75 -0
  177. package/dist/drizzle/0160_eval_results_thread_turn.sql +35 -0
  178. package/dist/drizzle/0161_eval_run_pinning.sql +54 -0
  179. package/dist/drizzle/0161_tenant_mcp_servers_plugin_source.sql +62 -0
  180. package/dist/drizzle/0162_eval_result_override.sql +49 -0
  181. package/dist/drizzle/0163_eval_replay_tool_allowlist.sql +50 -0
  182. package/dist/drizzle/0164_eval_replay_tool_override_mode.sql +52 -0
  183. package/dist/drizzle/0165_plugin_premium_entitlements.sql +153 -0
  184. package/dist/drizzle/0166_company_brain_substrate_contract.sql +386 -0
  185. package/dist/drizzle/0167_company_brain_artifact_manifest_runtime.sql +85 -0
  186. package/dist/drizzle/0168_eval_skill_gate.sql +44 -0
  187. package/dist/drizzle/0169_release_update_jobs.sql +67 -0
  188. package/dist/drizzle/0170_email_channel_plugin.sql +291 -0
  189. package/dist/drizzle/0171_linked_task_external_providers.sql +30 -0
  190. package/dist/drizzle/0172_email_channel_sendgrid_provider.sql +8 -0
  191. package/dist/drizzle/0173_auth_provider_resources.sql +83 -0
  192. package/dist/drizzle/0174_workos_auth_bridges.sql +37 -0
  193. package/dist/drizzle/0175_workos_auth_sessions.sql +38 -0
  194. package/dist/drizzle/0176_n8n_agent_step_runs.sql +107 -0
  195. package/dist/drizzle/0177_workflow_control_plane.sql +281 -0
  196. package/dist/drizzle/0178_workflow_backfill_existing_routines.sql +525 -0
  197. package/dist/drizzle/0179_tenant_goal_budget_settings.sql +21 -0
  198. package/dist/drizzle/0180_skill_drafts.sql +89 -0
  199. package/dist/drizzle/0181_skill_draft_publish_status.sql +21 -0
  200. package/dist/drizzle/0182_agent_loops.sql +260 -0
  201. package/dist/drizzle/0183_okf_artifact_manifests.sql +52 -0
  202. package/dist/drizzle/0184_skill_catalog_trust_cache.sql +35 -0
  203. package/dist/drizzle/0185_agent_loop_space.sql +16 -0
  204. package/dist/drizzle/0186_tenant_mcp_runtime_metadata.sql +10 -0
  205. package/dist/drizzle/0187_native_work_items.sql +220 -0
  206. package/dist/drizzle/0188_company_etl_plugin_rename.sql +99 -0
  207. package/dist/drizzle/0189_trace_cost_substrate.sql +247 -0
  208. package/dist/drizzle/0190_billing_export_reconciliation.sql +101 -0
  209. package/dist/drizzle/0191_open_engine_work_item_queue.sql +66 -0
  210. package/dist/drizzle/0192_work_item_labels.sql +44 -0
  211. package/dist/drizzle/0193_work_item_documents.sql +31 -0
  212. package/dist/drizzle/0194_memory_retain_attempts.sql +103 -0
  213. package/dist/drizzle/0194_work_item_comments.sql +35 -0
  214. package/dist/drizzle/0195_plugin_app_overlays.sql +45 -0
  215. package/dist/drizzle/0196_pi_extensions.sql +118 -0
  216. package/dist/drizzle/0197_eval_profiles.sql +150 -0
  217. package/dist/drizzle/0197_rcm_context_columns.sql +28 -0
  218. package/dist/drizzle/0198_eval_runs_unstable.sql +27 -0
  219. package/dist/drizzle/0199_eval_runs_cost_partial.sql +27 -0
  220. package/dist/drizzle/meta/_journal.json +160 -0
  221. package/dist/plugins/README.md +162 -0
  222. package/dist/plugins/catalog/package.json +40 -0
  223. package/dist/plugins/catalog/scripts/build-catalog.ts +120 -0
  224. package/dist/plugins/catalog/scripts/generate-plugin-registry.ts +144 -0
  225. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +86 -0
  226. package/dist/plugins/catalog/src/__tests__/catalog.test.ts +308 -0
  227. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +861 -0
  228. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +124 -0
  229. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +120 -0
  230. package/dist/plugins/catalog/src/catalog.ts +434 -0
  231. package/dist/plugins/catalog/src/contracts.ts +1498 -0
  232. package/dist/plugins/catalog/src/index.ts +4 -0
  233. package/dist/plugins/catalog/src/plugin-package.ts +171 -0
  234. package/dist/plugins/catalog/src/registry/generated-first-party.ts +76 -0
  235. package/dist/plugins/catalog/src/registry/index.ts +1 -0
  236. package/dist/plugins/catalog/tsconfig.json +8 -0
  237. package/dist/plugins/company-brain/README.md +37 -0
  238. package/dist/plugins/company-brain/package.json +33 -0
  239. package/dist/plugins/company-brain/runtime/cognee/Dockerfile +11 -0
  240. package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +458 -0
  241. package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +539 -0
  242. package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +312 -0
  243. package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +449 -0
  244. package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +655 -0
  245. package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +474 -0
  246. package/dist/plugins/company-brain/src/api/cognee-client.ts +896 -0
  247. package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +49 -0
  248. package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +84 -0
  249. package/dist/plugins/company-brain/src/api/context-engine-provider.ts +888 -0
  250. package/dist/plugins/company-brain/src/api/migration.ts +665 -0
  251. package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +396 -0
  252. package/dist/plugins/company-brain/src/index.ts +62 -0
  253. package/dist/plugins/company-brain/src/manifest.ts +112 -0
  254. package/dist/plugins/company-brain/terraform/cognee/README.md +263 -0
  255. package/dist/plugins/company-brain/terraform/cognee/main.tf +766 -0
  256. package/dist/plugins/company-brain/terraform/cognee/outputs.tf +144 -0
  257. package/dist/plugins/company-brain/terraform/cognee/variables.tf +402 -0
  258. package/dist/plugins/company-brain/test/api/cognee-client.test.ts +562 -0
  259. package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +74 -0
  260. package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +447 -0
  261. package/dist/plugins/company-brain/test/api/migration.test.ts +465 -0
  262. package/dist/plugins/company-brain/test/manifest.test.ts +95 -0
  263. package/dist/plugins/company-brain/tsconfig.json +8 -0
  264. package/dist/plugins/company-data/README.md +49 -0
  265. package/dist/plugins/company-data/package.json +21 -0
  266. package/dist/plugins/company-data/src/index.ts +30 -0
  267. package/dist/plugins/company-data/src/manifest.ts +26 -0
  268. package/dist/plugins/company-data/test/manifest.test.ts +116 -0
  269. package/dist/plugins/company-data/tsconfig.json +8 -0
  270. package/dist/plugins/company-etl/README.md +46 -0
  271. package/dist/plugins/company-etl/package.json +21 -0
  272. package/dist/plugins/company-etl/src/index.ts +29 -0
  273. package/dist/plugins/company-etl/src/manifest.ts +26 -0
  274. package/dist/plugins/company-etl/test/manifest.test.ts +108 -0
  275. package/dist/plugins/company-etl/tsconfig.json +8 -0
  276. package/dist/plugins/email-channel/README.md +41 -0
  277. package/dist/plugins/email-channel/package.json +22 -0
  278. package/dist/plugins/email-channel/src/index.ts +36 -0
  279. package/dist/plugins/email-channel/src/manifest.ts +44 -0
  280. package/dist/plugins/email-channel/src/provider-contract.ts +36 -0
  281. package/dist/plugins/email-channel/test/manifest.test.ts +119 -0
  282. package/dist/plugins/email-channel/tsconfig.json +8 -0
  283. package/dist/plugins/lastmile/README.md +50 -0
  284. package/dist/plugins/lastmile/package.json +23 -0
  285. package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +661 -0
  286. package/dist/plugins/lastmile/src/api/tasks-adapter.ts +572 -0
  287. package/dist/plugins/lastmile/src/discovery.fixture.ts +64 -0
  288. package/dist/plugins/lastmile/src/index.ts +46 -0
  289. package/dist/plugins/lastmile/src/manifest.ts +139 -0
  290. package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +266 -0
  291. package/dist/plugins/lastmile/test/discovery.test.ts +88 -0
  292. package/dist/plugins/lastmile/tsconfig.json +8 -0
  293. package/dist/plugins/n8n/README.md +201 -0
  294. package/dist/plugins/n8n/n8n-app/README.md +33 -0
  295. package/dist/plugins/n8n/n8n-app/package.json +23 -0
  296. package/dist/plugins/n8n/n8n-app/src/application-config.ts +45 -0
  297. package/dist/plugins/n8n/n8n-app/src/front-components/thinkwork-workflows.front-component.tsx +970 -0
  298. package/dist/plugins/n8n/n8n-app/src/lib/n8n-app-data.ts +190 -0
  299. package/dist/plugins/n8n/n8n-app/src/vite-env.d.ts +7 -0
  300. package/dist/plugins/n8n/n8n-app/tsconfig.json +15 -0
  301. package/dist/plugins/n8n/package.json +35 -0
  302. package/dist/plugins/n8n/runtime/Dockerfile +18 -0
  303. package/dist/plugins/n8n/runtime/n8n-task-runners.json +14 -0
  304. package/dist/plugins/n8n/runtime/n8n-task-runners.json.template +14 -0
  305. package/dist/plugins/n8n/runtime/package-lock.json +13 -0
  306. package/dist/plugins/n8n/runtime/package.json +7 -0
  307. package/dist/plugins/n8n/scripts/sync-thinkwork-app.mjs +268 -0
  308. package/dist/plugins/n8n/smoke/README.md +95 -0
  309. package/dist/plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs +866 -0
  310. package/dist/plugins/n8n/smoke/n8n-integrated-app-smoke.mjs +262 -0
  311. package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +409 -0
  312. package/dist/plugins/n8n/smoke/n8n-mcp-smoke.mjs +624 -0
  313. package/dist/plugins/n8n/src/deployment/image-build.ts +172 -0
  314. package/dist/plugins/n8n/src/deployment/managed-app.ts +429 -0
  315. package/dist/plugins/n8n/src/index.ts +79 -0
  316. package/dist/plugins/n8n/src/manifest.ts +403 -0
  317. package/dist/plugins/n8n/src/package-config.ts +186 -0
  318. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/SKILL.md +76 -0
  319. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
  320. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
  321. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/workflow-authoring.md +45 -0
  322. package/dist/plugins/n8n/terraform/n8n/README.md +113 -0
  323. package/dist/plugins/n8n/terraform/n8n/main.tf +918 -0
  324. package/dist/plugins/n8n/terraform/n8n/outputs.tf +124 -0
  325. package/dist/plugins/n8n/terraform/n8n/scripts/sync-database.py +250 -0
  326. package/dist/plugins/n8n/terraform/n8n/scripts/test_sync_database.py +55 -0
  327. package/dist/plugins/n8n/terraform/n8n/variables.tf +354 -0
  328. package/dist/plugins/n8n/test/image-build.test.ts +118 -0
  329. package/dist/plugins/n8n/test/integrated-app-contract.test.ts +353 -0
  330. package/dist/plugins/n8n/test/manifest.test.ts +278 -0
  331. package/dist/plugins/n8n/test/package-config.test.ts +57 -0
  332. package/dist/plugins/n8n/tsconfig.json +8 -0
  333. package/dist/plugins/sendgrid/README.md +30 -0
  334. package/dist/plugins/sendgrid/package.json +22 -0
  335. package/dist/plugins/sendgrid/src/index.ts +36 -0
  336. package/dist/plugins/sendgrid/src/manifest.ts +37 -0
  337. package/dist/plugins/sendgrid/src/provider-contract.ts +14 -0
  338. package/dist/plugins/sendgrid/test/manifest.test.ts +80 -0
  339. package/dist/plugins/sendgrid/tsconfig.json +8 -0
  340. package/dist/plugins/twenty/README.md +78 -0
  341. package/dist/plugins/twenty/package.json +27 -0
  342. package/dist/plugins/twenty/scripts/__tests__/sync-thinkwork-app.test.mjs +67 -0
  343. package/dist/plugins/twenty/scripts/sync-thinkwork-app.mjs +185 -0
  344. package/dist/plugins/twenty/scripts/wire-thinkwork-workflow.mjs +658 -0
  345. package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +359 -0
  346. package/dist/plugins/twenty/smoke/twenty-mcp-oauth-smoke.mjs +574 -0
  347. package/dist/plugins/twenty/src/api/cutover.ts +209 -0
  348. package/dist/plugins/twenty/src/deployment/managed-app.ts +253 -0
  349. package/dist/plugins/twenty/src/index.ts +55 -0
  350. package/dist/plugins/twenty/src/manifest.ts +259 -0
  351. package/dist/plugins/twenty/terraform/twenty/README.md +97 -0
  352. package/dist/plugins/twenty/terraform/twenty/main.tf +829 -0
  353. package/dist/plugins/twenty/terraform/twenty/outputs.tf +79 -0
  354. package/dist/plugins/twenty/terraform/twenty/variables.tf +268 -0
  355. package/dist/plugins/twenty/test/api/cutover.test.ts +183 -0
  356. package/dist/plugins/twenty/test/manifest.test.ts +463 -0
  357. package/dist/plugins/twenty/tsconfig.json +9 -0
  358. package/dist/plugins/twenty/twenty-app/.nvmrc +1 -0
  359. package/dist/plugins/twenty/twenty-app/README.md +148 -0
  360. package/dist/plugins/twenty/twenty-app/package.json +30 -0
  361. package/dist/plugins/twenty/twenty-app/src/application-config.ts +44 -0
  362. package/dist/plugins/twenty/twenty-app/src/constants/universal-identifiers.ts +18 -0
  363. package/dist/plugins/twenty/twenty-app/src/default-role.ts +24 -0
  364. package/dist/plugins/twenty/twenty-app/src/front-components/thinkwork-settings.front-component.tsx +299 -0
  365. package/dist/plugins/twenty/twenty-app/src/logic-functions/thinkwork-webhook.logic-function.ts +354 -0
  366. package/dist/plugins/twenty/twenty-app/tsconfig.json +14 -0
  367. package/dist/plugins/twenty/twenty-app/yarn.lock +4144 -0
  368. package/dist/plugins/workos-auth/package.json +22 -0
  369. package/dist/plugins/workos-auth/src/index.ts +30 -0
  370. package/dist/plugins/workos-auth/src/manifest.ts +40 -0
  371. package/dist/plugins/workos-auth/src/provider-contract.ts +39 -0
  372. package/dist/plugins/workos-auth/test/manifest.test.ts +94 -0
  373. package/dist/plugins/workos-auth/tsconfig.json +8 -0
  374. package/dist/scripts/bootstrap-workspace.sh +162 -0
  375. package/dist/scripts/post-deploy.sh +290 -0
  376. package/dist/terraform/examples/greenfield/main.tf +903 -75
  377. package/dist/terraform/examples/greenfield/terraform.tfvars.example +67 -8
  378. package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +2 -2
  379. package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +8 -9
  380. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +227 -0
  381. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +277 -0
  382. package/dist/terraform/modules/app/agentcore-memory/README.md +6 -6
  383. package/dist/terraform/modules/app/agentcore-memory/main.tf +1 -1
  384. package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +40 -9
  385. package/dist/terraform/modules/app/agentcore-pi/README.md +61 -0
  386. package/dist/terraform/modules/app/agentcore-pi/main.tf +466 -0
  387. package/dist/terraform/modules/app/agentcore-pi/outputs.tf +38 -0
  388. package/dist/terraform/modules/app/agentcore-pi/variables.tf +145 -0
  389. package/dist/terraform/modules/app/agentcore-platform/main.tf +83 -0
  390. package/dist/terraform/modules/app/agentcore-runtime/main.tf +9 -11
  391. package/dist/terraform/modules/app/appsync-subscriptions/main.tf +5 -1
  392. package/dist/terraform/modules/app/customer-domain/main.tf +483 -0
  393. package/dist/terraform/modules/app/deployment-control-plane/README.md +47 -0
  394. package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +24 -0
  395. package/dist/terraform/modules/app/deployment-control-plane/main.tf +614 -0
  396. package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +54 -0
  397. package/dist/terraform/modules/app/deployment-control-plane/runner.py +4720 -0
  398. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +3026 -0
  399. package/dist/terraform/modules/app/deployment-control-plane/variables.tf +96 -0
  400. package/dist/terraform/modules/app/hindsight-memory/README.md +25 -23
  401. package/dist/terraform/modules/app/hindsight-memory/main.tf +26 -2
  402. package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +17 -50
  403. package/dist/terraform/modules/app/lambda-api/handlers.tf +1290 -679
  404. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +933 -0
  405. package/dist/terraform/modules/app/lambda-api/main.tf +14 -527
  406. package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +3 -19
  407. package/dist/terraform/modules/app/lambda-api/outputs.tf +50 -6
  408. package/dist/terraform/modules/app/lambda-api/runtime-config.tf +163 -0
  409. package/dist/terraform/modules/app/lambda-api/slack-app-secrets.tf +3 -1
  410. package/dist/terraform/modules/app/lambda-api/stripe-secrets.tf +3 -1
  411. package/dist/terraform/modules/app/lambda-api/variables.tf +240 -53
  412. package/dist/terraform/modules/app/lambda-api/workspace-events.tf +2 -25
  413. package/dist/terraform/modules/app/ses-email/main.tf +143 -30
  414. package/dist/terraform/modules/app/static-site/main.tf +4 -3
  415. package/dist/terraform/modules/app/www-dns/main.tf +45 -5
  416. package/dist/terraform/modules/app/www-dns/outputs.tf +10 -0
  417. package/dist/terraform/modules/app/www-dns/variables.tf +24 -0
  418. package/dist/terraform/modules/data/aurora-postgres/main.tf +15 -1
  419. package/dist/terraform/modules/data/compliance-exports-bucket/main.tf +1 -1
  420. package/dist/terraform/modules/data/compliance-exports-bucket/variables.tf +6 -0
  421. package/dist/terraform/modules/foundation/cognito/main.tf +167 -11
  422. package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
  423. package/dist/terraform/modules/foundation/cognito/variables.tf +110 -0
  424. package/dist/terraform/modules/foundation/vpc/main.tf +45 -3
  425. package/dist/terraform/modules/foundation/vpc/outputs.tf +20 -0
  426. package/dist/terraform/modules/foundation/vpc/variables.tf +18 -0
  427. package/dist/terraform/modules/thinkwork/README.md +71 -0
  428. package/dist/terraform/modules/thinkwork/main.tf +1325 -174
  429. package/dist/terraform/modules/thinkwork/outputs.tf +457 -24
  430. package/dist/terraform/modules/thinkwork/variables.tf +1169 -93
  431. package/dist/terraform/schema.graphql +82 -9
  432. package/dist/workspace-defaults/files/AGENTS.md +344 -0
  433. package/dist/workspace-defaults/files/CONTEXT.md +8 -0
  434. package/dist/workspace-defaults/files/GUARDRAILS.md +51 -0
  435. package/dist/workspace-defaults/files/MEMORY_GUIDE.md +65 -0
  436. package/dist/workspace-defaults/files/ROUTER.md +24 -0
  437. package/dist/workspace-defaults/files/SPACE.md +62 -0
  438. package/dist/workspace-defaults/files/TOOLS.md +65 -0
  439. package/dist/workspace-defaults/files/USER.md +40 -0
  440. package/dist/workspace-defaults/files/mcp.json +3 -0
  441. package/dist/workspace-defaults/files/memory/contacts.md +13 -0
  442. package/dist/workspace-defaults/files/memory/lessons.md +13 -0
  443. package/dist/workspace-defaults/files/memory/preferences.md +12 -0
  444. package/dist/workspace-defaults/files/skills/.gitkeep +1 -0
  445. package/dist/workspace-defaults/files/skills/artifact-builder/SKILL.md +79 -0
  446. package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +166 -0
  447. package/dist/workspace-defaults/files/skills/automation-loop-designer/SKILL.md +120 -0
  448. package/dist/workspace-defaults/files/skills/skill-creator/LICENSE.txt +202 -0
  449. package/dist/workspace-defaults/files/skills/skill-creator/SKILL.md +485 -0
  450. package/dist/workspace-defaults/files/skills/skill-creator/UPSTREAM.json +124 -0
  451. package/dist/workspace-defaults/files/skills/skill-creator/agents/analyzer.md +274 -0
  452. package/dist/workspace-defaults/files/skills/skill-creator/agents/comparator.md +202 -0
  453. package/dist/workspace-defaults/files/skills/skill-creator/agents/grader.md +223 -0
  454. package/dist/workspace-defaults/files/skills/skill-creator/assets/eval_review.html +146 -0
  455. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  456. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  457. package/dist/workspace-defaults/files/skills/skill-creator/references/schemas.md +430 -0
  458. package/dist/workspace-defaults/files/skills/skill-creator/scripts/__init__.py +0 -0
  459. package/dist/workspace-defaults/files/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  460. package/dist/workspace-defaults/files/skills/skill-creator/scripts/generate_report.py +326 -0
  461. package/dist/workspace-defaults/files/skills/skill-creator/scripts/improve_description.py +247 -0
  462. package/dist/workspace-defaults/files/skills/skill-creator/scripts/package_skill.py +136 -0
  463. package/dist/workspace-defaults/files/skills/skill-creator/scripts/quick_validate.py +103 -0
  464. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_eval.py +310 -0
  465. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_loop.py +328 -0
  466. package/dist/workspace-defaults/files/skills/skill-creator/scripts/utils.py +47 -0
  467. package/package.json +2 -1
  468. package/dist/terraform/modules/app/agentcore-flue/README.md +0 -58
  469. package/dist/terraform/modules/app/agentcore-flue/main.tf +0 -323
  470. package/dist/terraform/modules/app/agentcore-flue/outputs.tf +0 -23
  471. package/dist/terraform/modules/app/agentcore-flue/variables.tf +0 -97
  472. package/dist/terraform/modules/app/computer-runtime/README.md +0 -15
  473. package/dist/terraform/modules/app/computer-runtime/main.tf +0 -406
  474. package/dist/terraform/modules/app/computer-runtime/outputs.tf +0 -75
  475. package/dist/terraform/modules/app/computer-runtime/variables.tf +0 -66
@@ -0,0 +1,49 @@
1
+ -- 0074_compliance_event_hash_index.sql
2
+ --
3
+ -- Phase 3 U10 of the System Workflows revert + Compliance reframe.
4
+ -- Adds a single-column index on `compliance.audit_events(event_hash)`
5
+ -- to support the new `complianceEventByHash` GraphQL query introduced
6
+ -- in U10. Without this index, the chain-position panel's prev_hash
7
+ -- click-through devolves to a heap scan; with it, lookups are
8
+ -- index-served at O(log n).
9
+ --
10
+ -- Why hand-rolled (not Drizzle-generated):
11
+ -- The compliance migrations are intentionally hand-rolled so the
12
+ -- plan-time SQL exactly matches what Aurora executes. The
13
+ -- compliance schema in this repo has been hand-rolled since 0069;
14
+ -- keeping additions in the same form avoids mixed-mode confusion.
15
+ --
16
+ -- Why not in 0069's original schema:
17
+ -- The forward-walking chain semantics (compliance.audit_events
18
+ -- chained via prev_hash → previous row's event_hash) was originally
19
+ -- designed to be walked sequentially with the (tenant_id,
20
+ -- occurred_at DESC) index. The "look up an event by its hash"
21
+ -- access pattern was added in U10 to power the admin Compliance
22
+ -- detail page's prev_hash navigation. Different access pattern →
23
+ -- different index.
24
+ --
25
+ -- Operator pre-merge step:
26
+ -- This migration is not picked up by the drainer's drift-gate
27
+ -- reconciler automatically — it must be applied to dev via:
28
+ -- psql "$DATABASE_URL" \
29
+ -- -f packages/database-pg/drizzle/0074_compliance_event_hash_index.sql
30
+ -- BEFORE the merge-to-main pipeline runs the post-deploy drift
31
+ -- check. The PR body should surface this requirement; the U8a / U8b
32
+ -- PRs followed the same pattern.
33
+
34
+ -- creates: compliance.idx_audit_events_event_hash
35
+
36
+ BEGIN;
37
+
38
+ -- Single-column btree on event_hash. Primary access pattern:
39
+ -- "given a prev_hash, find the row whose event_hash matches it."
40
+ -- Tenant-scoped lookups still use the existing (tenant_id, occurred_at
41
+ -- DESC) index for ordered enumeration; this index supports unordered
42
+ -- lookup-by-hash only.
43
+ --
44
+ -- IF NOT EXISTS so the migration is idempotent — re-running on dev
45
+ -- after a partial apply doesn't error.
46
+ CREATE INDEX IF NOT EXISTS idx_audit_events_event_hash
47
+ ON compliance.audit_events (event_hash);
48
+
49
+ COMMIT;
@@ -0,0 +1,27 @@
1
+ -- Add nullable Computer ownership to Scheduled Jobs.
2
+ --
3
+ -- Mirrors `threads.computer_id` from drizzle/0072 — Computers are the
4
+ -- durable per-user workplace; agent_id stays as the runtime-firing key,
5
+ -- computer_id is the new ownership/filter key.
6
+ --
7
+ -- Apply manually:
8
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0075_scheduled_jobs_computer_ownership.sql
9
+ --
10
+ -- creates-column: public.scheduled_jobs.computer_id
11
+ -- creates: public.idx_scheduled_jobs_computer
12
+
13
+ \set ON_ERROR_STOP on
14
+
15
+ BEGIN;
16
+
17
+ SET LOCAL lock_timeout = '5s';
18
+ SET LOCAL statement_timeout = '120s';
19
+
20
+ ALTER TABLE public.scheduled_jobs
21
+ ADD COLUMN IF NOT EXISTS computer_id uuid REFERENCES public.computers(id);
22
+
23
+ CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_computer
24
+ ON public.scheduled_jobs (tenant_id, computer_id)
25
+ WHERE computer_id IS NOT NULL;
26
+
27
+ COMMIT;
@@ -0,0 +1,69 @@
1
+ -- Backfill: scheduled_jobs.computer_id for the two known Marco jobs (dev-only).
2
+ --
3
+ -- Resolves the target Computer UUID from a psql variable (no PII in the
4
+ -- committed file) and stage-guards against accidentally running on the
5
+ -- wrong database — if no Computer with the given id exists we RAISE
6
+ -- EXCEPTION rather than silently no-op or corrupt foreign tenant data.
7
+ --
8
+ -- Operator workflow (run from repo root with dev DATABASE_URL set):
9
+ --
10
+ -- COMPUTER_ID=$(psql "$DATABASE_URL" -tA -c \
11
+ -- "SELECT id FROM computers \
12
+ -- WHERE owner_user_id = (SELECT id FROM users WHERE email = '<owner-email>') \
13
+ -- AND status = 'active' \
14
+ -- LIMIT 1")
15
+ -- psql "$DATABASE_URL" \
16
+ -- -v computer_id="$COMPUTER_ID" \
17
+ -- -f packages/database-pg/drizzle/0076_scheduled_jobs_marco_backfill.sql
18
+ --
19
+ -- Idempotent: re-running with the same :computer_id is a no-op.
20
+ --
21
+ -- This is a data backfill, not a schema change — no creates: markers.
22
+
23
+ \set ON_ERROR_STOP on
24
+
25
+ -- Fail fast if the operator forgot to pass -v computer_id
26
+ \if :{?computer_id}
27
+ \else
28
+ \echo 'ERROR: -v computer_id=<uuid> is required'
29
+ \quit 1
30
+ \endif
31
+
32
+ BEGIN;
33
+
34
+ SET LOCAL lock_timeout = '5s';
35
+ SET LOCAL statement_timeout = '120s';
36
+
37
+ -- Stage guard: assert the target Computer actually exists in this DB.
38
+ -- A wrong-stage apply (staging/prod where the Marco Computer row
39
+ -- doesn't exist) raises here rather than silently affecting nothing or
40
+ -- corrupting tenant scoping on the two job rows.
41
+ --
42
+ -- psql -v variables don't expand inside dollar-quoted DO blocks, so we
43
+ -- pass the target id through a server-side custom GUC and read it back
44
+ -- with current_setting() inside the block.
45
+ SET LOCAL thinkwork.backfill_computer_id = :'computer_id';
46
+
47
+ DO $$
48
+ DECLARE
49
+ target_id uuid := current_setting('thinkwork.backfill_computer_id')::uuid;
50
+ BEGIN
51
+ IF NOT EXISTS (
52
+ SELECT 1 FROM public.computers WHERE id = target_id
53
+ ) THEN
54
+ RAISE EXCEPTION 'Computer % not found — wrong stage or wrong UUID', target_id;
55
+ END IF;
56
+ END $$;
57
+
58
+ UPDATE public.scheduled_jobs
59
+ SET computer_id = :'computer_id'::uuid,
60
+ updated_at = now()
61
+ WHERE id IN (
62
+ 'd8a56ed5-c504-4c62-b3c8-2152bc6fc7a1'::uuid,
63
+ 'e2429872-71ee-47fb-a084-431a302e4b35'::uuid
64
+ )
65
+ AND tenant_id = (
66
+ SELECT tenant_id FROM public.computers WHERE id = :'computer_id'::uuid
67
+ );
68
+
69
+ COMMIT;
@@ -0,0 +1,38 @@
1
+ -- Add the Customize-page anchor agent column on computers, plus a backfill
2
+ -- pass for existing rows. Greenfield Computer creation should set this
3
+ -- column at insert time; the backfill is a safety net for pre-existing
4
+ -- rows that were created before this column existed.
5
+ --
6
+ -- Plan:
7
+ -- docs/plans/2026-05-09-006-feat-computer-customization-page-plan.md
8
+ --
9
+ -- Apply manually:
10
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0077_computers_primary_agent_id.sql
11
+ --
12
+ -- creates-column: public.computers.primary_agent_id
13
+ -- creates: public.idx_computers_primary_agent
14
+
15
+ \set ON_ERROR_STOP on
16
+
17
+ BEGIN;
18
+
19
+ SET LOCAL lock_timeout = '5s';
20
+ SET LOCAL statement_timeout = '120s';
21
+
22
+ ALTER TABLE public.computers
23
+ ADD COLUMN IF NOT EXISTS primary_agent_id uuid REFERENCES public.agents(id) ON DELETE SET NULL;
24
+
25
+ CREATE INDEX IF NOT EXISTS idx_computers_primary_agent
26
+ ON public.computers (primary_agent_id)
27
+ WHERE primary_agent_id IS NOT NULL;
28
+
29
+ -- Backfill from migrated_from_agent_id where set. The fallback lookup
30
+ -- (single agent matching tenant_id + owner_user_id + template_id) is
31
+ -- handled in application code (primary-agent-resolver.ts) because it
32
+ -- requires conflict-aware error handling that doesn't fit a SQL backfill.
33
+ UPDATE public.computers
34
+ SET primary_agent_id = migrated_from_agent_id
35
+ WHERE primary_agent_id IS NULL
36
+ AND migrated_from_agent_id IS NOT NULL;
37
+
38
+ COMMIT;
@@ -0,0 +1,46 @@
1
+ -- Per-tenant catalog table backing the apps/computer Customize page's
2
+ -- Available / Discover sections for Workflows. Skills and MCP servers reuse
3
+ -- the existing `tenant_skills` and `tenant_mcp_servers` tables.
4
+ --
5
+ -- Plan:
6
+ -- docs/plans/2026-05-09-006-feat-computer-customization-page-plan.md
7
+ --
8
+ -- Apply manually:
9
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0078_tenant_customize_catalog.sql
10
+ --
11
+ -- creates: public.tenant_workflow_catalog
12
+ -- creates: public.uq_tenant_workflow_catalog_slug
13
+ -- creates: public.idx_tenant_workflow_catalog_tenant_status
14
+
15
+ \set ON_ERROR_STOP on
16
+
17
+ BEGIN;
18
+
19
+ SET LOCAL lock_timeout = '5s';
20
+ SET LOCAL statement_timeout = '120s';
21
+
22
+ CREATE TABLE IF NOT EXISTS public.tenant_workflow_catalog (
23
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
24
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
25
+ slug text NOT NULL,
26
+ display_name text NOT NULL,
27
+ description text,
28
+ category text,
29
+ icon text,
30
+ default_config jsonb NOT NULL DEFAULT '{}'::jsonb,
31
+ default_schedule text,
32
+ status text NOT NULL DEFAULT 'active',
33
+ enabled boolean NOT NULL DEFAULT true,
34
+ created_at timestamptz NOT NULL DEFAULT now(),
35
+ updated_at timestamptz NOT NULL DEFAULT now(),
36
+ CONSTRAINT tenant_workflow_catalog_status_enum
37
+ CHECK (status IN ('active','draft','archived'))
38
+ );
39
+
40
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_tenant_workflow_catalog_slug
41
+ ON public.tenant_workflow_catalog (tenant_id, slug);
42
+
43
+ CREATE INDEX IF NOT EXISTS idx_tenant_workflow_catalog_tenant_status
44
+ ON public.tenant_workflow_catalog (tenant_id, status);
45
+
46
+ COMMIT;
@@ -0,0 +1,53 @@
1
+ -- Seed every tenant's `tenant_workflow_catalog` with the v1 baseline catalog
2
+ -- so the apps/computer Customize page has real Available rows to render.
3
+ -- Idempotent via ON CONFLICT(tenant_id, slug) DO NOTHING — re-running this
4
+ -- script never duplicates.
5
+ --
6
+ -- Plan:
7
+ -- docs/plans/2026-05-09-006-feat-computer-customization-page-plan.md (U10)
8
+ --
9
+ -- Apply manually:
10
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0079_seed_tenant_customize_catalog.sql
11
+ --
12
+ -- The data mirrors the workflow fixture catalog that previously lived in
13
+ -- apps/computer/src/components/customize/customize-fixtures.ts so the live
14
+ -- queries (U4 / U6) render the same shape the user already saw on the
15
+ -- inert page. Per-tenant variation can be added by INSERTing rows with a
16
+ -- specific tenant_id; the SELECT-from-tenants below is the convenient
17
+ -- "every tenant gets the v1 baseline" path.
18
+
19
+ \set ON_ERROR_STOP on
20
+
21
+ BEGIN;
22
+
23
+ SET LOCAL lock_timeout = '5s';
24
+ SET LOCAL statement_timeout = '120s';
25
+
26
+ -- ─── Workflows ─────────────────────────────────────────────────────────────
27
+
28
+ WITH baseline_workflows(slug, display_name, description, category) AS (
29
+ VALUES
30
+ ('daily-standup-digest', 'Daily standup digest', 'Summarize yesterday''s work and today''s plan from assigned work sources.', 'Engineering'),
31
+ ('customer-health-refresh', 'Customer health refresh', 'Recompute health scores nightly across the active book of business.', 'Customer Success'),
32
+ ('renewal-pipeline-sweep', 'Renewal pipeline sweep', 'Surface upcoming renewals every Monday with risk callouts.', 'Sales'),
33
+ ('new-lead-triage', 'New lead triage', 'Score and route inbound leads to the right account exec.', 'Sales'),
34
+ ('weekly-sales-brief', 'Weekly sales brief', 'Friday wrap-up: pipeline movement, wins, blocked deals.', 'Sales'),
35
+ ('support-incident-postmortem', 'Support incident postmortem', 'Draft a postmortem after every P0/P1 support escalation.', 'Customer Success'),
36
+ ('weekly-product-changelog', 'Weekly product changelog', 'Generate a customer-facing changelog from merged PRs.', 'Product')
37
+ )
38
+ INSERT INTO public.tenant_workflow_catalog
39
+ (tenant_id, slug, display_name, description, category, default_config, status, enabled)
40
+ SELECT
41
+ t.id,
42
+ bw.slug,
43
+ bw.display_name,
44
+ bw.description,
45
+ bw.category,
46
+ '{}'::jsonb,
47
+ 'active',
48
+ true
49
+ FROM public.tenants t
50
+ CROSS JOIN baseline_workflows bw
51
+ ON CONFLICT (tenant_id, slug) DO NOTHING;
52
+
53
+ COMMIT;
@@ -0,0 +1,42 @@
1
+ -- Add a stable pointer from `routines` rows back to the
2
+ -- `tenant_workflow_catalog.slug` they represent, so the apps/computer
3
+ -- Customize Workflows tab (plan 010 U6) can match Connected items
4
+ -- unambiguously and the enableWorkflow / disableWorkflow mutations can
5
+ -- upsert idempotently.
6
+ --
7
+ -- Plan:
8
+ -- docs/plans/2026-05-09-010-feat-customize-workflows-live-plan.md (U6-1)
9
+ --
10
+ -- Apply manually:
11
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0081_routines_catalog_slug.sql
12
+ --
13
+ -- creates-column: public.routines.catalog_slug
14
+ -- creates: public.uq_routines_catalog_slug_per_agent
15
+
16
+ \set ON_ERROR_STOP on
17
+
18
+ BEGIN;
19
+
20
+ SET LOCAL lock_timeout = '5s';
21
+ SET LOCAL statement_timeout = '120s';
22
+
23
+ ALTER TABLE public.routines
24
+ ADD COLUMN IF NOT EXISTS catalog_slug text;
25
+
26
+ -- No backfill: unlike `connectors.type`, `routines.name` is free-form
27
+ -- user-authored text with no structural alignment to any catalog
28
+ -- display_name. Existing routines stay with catalog_slug=NULL and
29
+ -- remain invisible to the Customize bindings query (which filters
30
+ -- `catalog_slug IS NOT NULL`); they're still functional via their
31
+ -- existing schedule/triggers, just not surfaced on the Workflows tab.
32
+ -- New Customize-driven enables get catalog_slug populated by the
33
+ -- enableWorkflow resolver.
34
+
35
+ -- Partial unique index: at most one routines row per
36
+ -- (agent, catalog slug). Excludes legacy / user-authored rows where
37
+ -- agent_id IS NULL or catalog_slug IS NULL.
38
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_routines_catalog_slug_per_agent
39
+ ON public.routines (agent_id, catalog_slug)
40
+ WHERE agent_id IS NOT NULL AND catalog_slug IS NOT NULL;
41
+
42
+ COMMIT;
@@ -0,0 +1,52 @@
1
+ -- messages.parts — typed UIMessage parts persisted at turn-finalize.
2
+ --
3
+ -- Plan-012 U7 (docs/plans/2026-05-09-012-feat-computer-ai-elements-adoption-plan.md).
4
+ -- Contract: docs/specs/computer-ai-elements-contract-v1.md (§Persistence boundary).
5
+ --
6
+ -- For new Computer assistant messages, the writer persists the post-stream
7
+ -- UIMessage.parts array into this column at turn-finalize. The legacy
8
+ -- messages.content text column also continues to populate as a flattened
9
+ -- text representation (text-typed parts only) so internal callers that
10
+ -- still read `content` keep working.
11
+ --
12
+ -- Render-path precedence (locked in contract v1): `parts IS NOT NULL`
13
+ -- wins over `content`. Half-migrated rows with both populated are
14
+ -- expected and deliberate.
15
+ --
16
+ -- Why hand-rolled (not Drizzle codegen):
17
+ -- 1. We need the explicit `-- creates-column:` marker so the
18
+ -- pnpm db:migrate-manual drift gate (CLAUDE.md, the Aurora drift
19
+ -- reporter wired into deploy.yml) can confirm the column landed
20
+ -- after `psql -f` is applied to dev.
21
+ -- 2. The author runs `psql "$DATABASE_URL" -f
22
+ -- packages/database-pg/drizzle/0082_messages_parts_jsonb.sql`
23
+ -- against dev right after merge per
24
+ -- feedback_handrolled_migrations_apply_to_dev.
25
+ --
26
+ -- Apply:
27
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0082_messages_parts_jsonb.sql
28
+ --
29
+ -- Drift detection:
30
+ -- pnpm db:migrate-manual
31
+ --
32
+ -- Pre-migration invariants:
33
+ -- - public.messages exists (created by drizzle/0000_petite_marvel_apes.sql).
34
+ -- - public.messages.parts does not exist yet.
35
+ --
36
+ -- Post-migration invariants:
37
+ -- - public.messages.parts is jsonb NULL with no default.
38
+ -- - existing rows have parts IS NULL (no backfill).
39
+ -- - the legacy messages.content text column is unchanged.
40
+ --
41
+ -- Tenant scoping for the new field is the U7 P0 audit, documented in
42
+ -- the PR description: every read path that selects Message.parts must
43
+ -- scope by resolveCallerTenantId(ctx) (per
44
+ -- feedback_oauth_tenant_resolver) AND the same thread/computer
45
+ -- ownership gate already enforced on Message.content. The audit and
46
+ -- regression test live alongside the resolver in
47
+ -- packages/api/src/graphql/resolvers/messages/.
48
+ --
49
+ -- creates-column: public.messages.parts
50
+
51
+ ALTER TABLE "messages"
52
+ ADD COLUMN IF NOT EXISTS "parts" jsonb;
@@ -0,0 +1,103 @@
1
+ -- Computer runbook catalog and execution state.
2
+ -- creates: public.tenant_runbook_catalog
3
+ -- creates: public.computer_runbook_runs
4
+ -- creates: public.computer_runbook_tasks
5
+
6
+ CREATE TABLE IF NOT EXISTS public.tenant_runbook_catalog (
7
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
8
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
9
+ slug text NOT NULL,
10
+ source_version text NOT NULL,
11
+ display_name text NOT NULL,
12
+ description text NOT NULL,
13
+ category text NOT NULL,
14
+ status text NOT NULL DEFAULT 'active',
15
+ enabled boolean NOT NULL DEFAULT true,
16
+ definition jsonb NOT NULL,
17
+ operator_overrides jsonb,
18
+ created_at timestamptz NOT NULL DEFAULT now(),
19
+ updated_at timestamptz NOT NULL DEFAULT now(),
20
+ CONSTRAINT tenant_runbook_catalog_status_allowed
21
+ CHECK (status IN ('active','unavailable','archived'))
22
+ );
23
+
24
+ CREATE UNIQUE INDEX IF NOT EXISTS tenant_runbook_catalog_tenant_slug_uq
25
+ ON public.tenant_runbook_catalog (tenant_id, slug);
26
+
27
+ CREATE INDEX IF NOT EXISTS idx_tenant_runbook_catalog_tenant_status
28
+ ON public.tenant_runbook_catalog (tenant_id, status);
29
+
30
+ CREATE TABLE IF NOT EXISTS public.computer_runbook_runs (
31
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
32
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
33
+ computer_id uuid NOT NULL REFERENCES public.computers(id) ON DELETE CASCADE,
34
+ thread_id uuid REFERENCES public.threads(id) ON DELETE SET NULL,
35
+ catalog_id uuid REFERENCES public.tenant_runbook_catalog(id) ON DELETE SET NULL,
36
+ runbook_slug text NOT NULL,
37
+ runbook_version text NOT NULL,
38
+ status text NOT NULL DEFAULT 'awaiting_confirmation',
39
+ invocation_mode text NOT NULL DEFAULT 'auto',
40
+ selected_by_message_id uuid REFERENCES public.messages(id) ON DELETE SET NULL,
41
+ approved_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
42
+ rejected_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
43
+ cancelled_by_user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
44
+ definition_snapshot jsonb NOT NULL,
45
+ inputs jsonb NOT NULL DEFAULT '{}'::jsonb,
46
+ output jsonb,
47
+ error jsonb,
48
+ idempotency_key text,
49
+ approved_at timestamptz,
50
+ rejected_at timestamptz,
51
+ cancelled_at timestamptz,
52
+ started_at timestamptz,
53
+ completed_at timestamptz,
54
+ created_at timestamptz NOT NULL DEFAULT now(),
55
+ updated_at timestamptz NOT NULL DEFAULT now(),
56
+ CONSTRAINT computer_runbook_runs_status_allowed
57
+ CHECK (status IN ('awaiting_confirmation','queued','running','completed','failed','cancelled','rejected')),
58
+ CONSTRAINT computer_runbook_runs_invocation_mode_allowed
59
+ CHECK (invocation_mode IN ('auto','explicit','ad_hoc'))
60
+ );
61
+
62
+ CREATE INDEX IF NOT EXISTS idx_computer_runbook_runs_tenant_status
63
+ ON public.computer_runbook_runs (tenant_id, status);
64
+
65
+ CREATE INDEX IF NOT EXISTS idx_computer_runbook_runs_computer_created
66
+ ON public.computer_runbook_runs (computer_id, created_at);
67
+
68
+ CREATE UNIQUE INDEX IF NOT EXISTS computer_runbook_runs_tenant_computer_idempotency_uq
69
+ ON public.computer_runbook_runs (tenant_id, computer_id, idempotency_key)
70
+ WHERE idempotency_key IS NOT NULL;
71
+
72
+ CREATE TABLE IF NOT EXISTS public.computer_runbook_tasks (
73
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
74
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
75
+ run_id uuid NOT NULL REFERENCES public.computer_runbook_runs(id) ON DELETE CASCADE,
76
+ phase_id text NOT NULL,
77
+ phase_title text NOT NULL,
78
+ task_key text NOT NULL,
79
+ title text NOT NULL,
80
+ summary text,
81
+ status text NOT NULL DEFAULT 'pending',
82
+ depends_on jsonb NOT NULL DEFAULT '[]'::jsonb,
83
+ capability_roles jsonb NOT NULL DEFAULT '[]'::jsonb,
84
+ sort_order integer NOT NULL,
85
+ details jsonb,
86
+ output jsonb,
87
+ error jsonb,
88
+ started_at timestamptz,
89
+ completed_at timestamptz,
90
+ created_at timestamptz NOT NULL DEFAULT now(),
91
+ updated_at timestamptz NOT NULL DEFAULT now(),
92
+ CONSTRAINT computer_runbook_tasks_status_allowed
93
+ CHECK (status IN ('pending','running','completed','failed','skipped','cancelled'))
94
+ );
95
+
96
+ CREATE UNIQUE INDEX IF NOT EXISTS computer_runbook_tasks_run_task_key_uq
97
+ ON public.computer_runbook_tasks (run_id, task_key);
98
+
99
+ CREATE INDEX IF NOT EXISTS idx_computer_runbook_tasks_run_order
100
+ ON public.computer_runbook_tasks (run_id, sort_order);
101
+
102
+ CREATE INDEX IF NOT EXISTS idx_computer_runbook_tasks_tenant_status
103
+ ON public.computer_runbook_tasks (tenant_id, status);
@@ -0,0 +1,32 @@
1
+ -- Add `favorited_at` to artifacts so users can star artifacts and the
2
+ -- apps/computer sidebar can show a Favorites section.
3
+ --
4
+ -- Plan:
5
+ -- docs/plans/2026-05-10-005-feat-computer-ui-updates-plan.md (U3)
6
+ --
7
+ -- Apply manually:
8
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0084_artifacts_favorited_at.sql
9
+ --
10
+ -- creates-column: public.artifacts.favorited_at
11
+ -- creates: public.idx_artifacts_favorited_at
12
+
13
+ \set ON_ERROR_STOP on
14
+
15
+ BEGIN;
16
+
17
+ SET LOCAL lock_timeout = '5s';
18
+ SET LOCAL statement_timeout = '120s';
19
+
20
+ ALTER TABLE public.artifacts
21
+ ADD COLUMN IF NOT EXISTS favorited_at timestamptz;
22
+
23
+ -- Partial index covers the sidebar query
24
+ -- (favorited_at IS NOT NULL, ORDER BY favorited_at DESC) without
25
+ -- bloating the table-wide index footprint for the un-favorited common
26
+ -- case. Tenant_id leads so the same query stays fast under multi-tenant
27
+ -- access patterns.
28
+ CREATE INDEX IF NOT EXISTS idx_artifacts_favorited_at
29
+ ON public.artifacts (tenant_id, favorited_at DESC)
30
+ WHERE favorited_at IS NOT NULL;
31
+
32
+ COMMIT;
@@ -0,0 +1,46 @@
1
+ -- creates: public.view_thinkwork_computer_default_template_seeded
2
+ --
3
+ -- Seed the platform-default Computer template used by the shared Computer
4
+ -- creation dialog. Tenant-id NULL = platform-wide; every tenant can resolve it
5
+ -- because `requireComputerTemplate` accepts NULL-tenant rows.
6
+ --
7
+ -- See docs/plans/2026-05-11-003-feat-computer-admin-crud-plan.md (U1).
8
+ --
9
+ -- The marker view exists solely to give scripts/db-migrate-manual.sh
10
+ -- something to verify — the drift reporter cannot probe for data rows. The
11
+ -- view returns 1 row when the seed has been applied. Same pattern as
12
+ -- 0022_seed_thinkwork_admin_permissions.sql.
13
+ --
14
+ -- Apply manually (matches the 0019/0020/0022 convention):
15
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0085_seed_thinkwork_computer_default_template.sql
16
+ --
17
+ -- This file is frozen. If the default template's attributes need to change
18
+ -- (e.g., model upgrade), ship a new migration that UPDATEs the row — do not
19
+ -- edit this one.
20
+
21
+ -- Guarded insert. The unique index uq_agent_templates_tenant_slug is on
22
+ -- (tenant_id, slug), but Postgres treats NULL values as distinct in unique
23
+ -- indexes by default — so ON CONFLICT against a NULL tenant_id row will
24
+ -- never match. Use WHERE NOT EXISTS for idempotency instead.
25
+ INSERT INTO agent_templates (tenant_id, name, slug, template_kind, source, model, config)
26
+ SELECT
27
+ NULL,
28
+ 'Thinkwork Computer',
29
+ 'thinkwork-computer-default',
30
+ 'computer',
31
+ 'system',
32
+ 'us.anthropic.claude-sonnet-4-20250514-v1:0',
33
+ '{}'::jsonb
34
+ WHERE NOT EXISTS (
35
+ SELECT 1 FROM agent_templates
36
+ WHERE slug = 'thinkwork-computer-default'
37
+ AND tenant_id IS NULL
38
+ AND template_kind = 'computer'
39
+ );
40
+
41
+ CREATE OR REPLACE VIEW public.view_thinkwork_computer_default_template_seeded AS
42
+ SELECT id, slug, template_kind, source
43
+ FROM agent_templates
44
+ WHERE slug = 'thinkwork-computer-default'
45
+ AND tenant_id IS NULL
46
+ AND template_kind = 'computer';
@@ -0,0 +1,19 @@
1
+ -- creates: public.view_default_template_models_updated_0086
2
+ --
3
+ -- Move seeded platform/default templates off the dated Sonnet inference
4
+ -- profile that now fails Bedrock runtime access in dev AgentCore.
5
+ --
6
+ -- Apply manually:
7
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0086_update_default_template_models.sql
8
+
9
+ UPDATE agent_templates
10
+ SET model = 'us.anthropic.claude-sonnet-4-6',
11
+ updated_at = now()
12
+ WHERE slug IN ('thinkwork-computer-default', 'default')
13
+ AND model = 'us.anthropic.claude-sonnet-4-20250514-v1:0';
14
+
15
+ CREATE OR REPLACE VIEW public.view_default_template_models_updated_0086 AS
16
+ SELECT id, slug, template_kind, source, model
17
+ FROM agent_templates
18
+ WHERE slug IN ('thinkwork-computer-default', 'default')
19
+ AND model = 'us.anthropic.claude-sonnet-4-6';
@@ -0,0 +1,77 @@
1
+ -- Retire the OSS connector framework.
2
+ --
3
+ -- ⚠️ SUPERSEDED by 0090 + 0092. Do NOT apply this file directly anymore —
4
+ -- the ALTER TABLE public.tenant_entity_external_refs statements below
5
+ -- will fail because 0090 (brain schema extraction) moved that table to
6
+ -- brain.external_refs. 0090 absorbed this migration's tracker DELETE +
7
+ -- constraint work, and 0092_finish_oss_connector_retirement.sql does
8
+ -- the DROP TABLE portion. The markers below have been updated to point
9
+ -- at the post-0090 location so the drift reporter resolves cleanly.
10
+ --
11
+ -- Removes the connector data model now that the private extension runtime
12
+ -- is moving out of OSS Thinkwork. Workflow Customize catalog, OAuth
13
+ -- credentials, MCP state, Computers, and Threads remain.
14
+ --
15
+ -- Plan:
16
+ -- docs/plans/2026-05-14-001-refactor-retire-oss-symphony-connectors-plan.md
17
+ --
18
+ -- Apply manually: DO NOT APPLY DIRECTLY — see superseded note above.
19
+ -- Original command (now broken):
20
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0087_retire_oss_connectors.sql
21
+ --
22
+ -- drops: public.computer_delegations
23
+ -- drops: public.connector_executions
24
+ -- drops: public.connectors
25
+ -- drops: public.tenant_connector_catalog
26
+ -- drops: public.uq_connector_executions_active_external_ref
27
+ -- drops: public.idx_connector_executions_tenant_state
28
+ -- drops: public.idx_connector_executions_connector_started
29
+ -- drops: public.idx_connector_executions_state_machine_arn
30
+ -- drops: public.idx_connector_executions_external_ref
31
+ -- drops: public.uq_connectors_tenant_name
32
+ -- drops: public.idx_connectors_tenant_status
33
+ -- drops: public.idx_connectors_tenant_type
34
+ -- drops: public.idx_connectors_enabled
35
+ -- drops: public.uq_connectors_catalog_slug_per_computer
36
+ -- drops: public.uq_tenant_connector_catalog_slug
37
+ -- drops: public.idx_tenant_connector_catalog_tenant_status
38
+ -- drops: public.idx_computer_delegations_computer_status
39
+ -- drops: public.idx_computer_delegations_agent
40
+ -- Constraint location updated post-0090 (brain schema extraction moved the
41
+ -- table to brain.external_refs and renamed the constraint).
42
+ -- creates-constraint: brain.external_refs.external_refs_kind_allowed
43
+
44
+ \set ON_ERROR_STOP on
45
+
46
+ BEGIN;
47
+
48
+ SET LOCAL lock_timeout = '5s';
49
+ SET LOCAL statement_timeout = '120s';
50
+
51
+ DELETE FROM public.tenant_entity_external_refs
52
+ WHERE source_kind IN ('tracker_issue', 'tracker_ticket');
53
+
54
+ ALTER TABLE public.tenant_entity_external_refs
55
+ DROP CONSTRAINT IF EXISTS tenant_entity_external_refs_kind_allowed_v2;
56
+
57
+ ALTER TABLE public.tenant_entity_external_refs
58
+ DROP CONSTRAINT IF EXISTS tenant_entity_external_refs_kind_allowed;
59
+
60
+ ALTER TABLE public.tenant_entity_external_refs
61
+ ADD CONSTRAINT tenant_entity_external_refs_kind_allowed CHECK (
62
+ source_kind IN (
63
+ 'erp_customer',
64
+ 'crm_opportunity',
65
+ 'erp_order',
66
+ 'crm_person',
67
+ 'support_case',
68
+ 'bedrock_kb'
69
+ )
70
+ );
71
+
72
+ DROP TABLE IF EXISTS public.computer_delegations CASCADE;
73
+ DROP TABLE IF EXISTS public.connector_executions CASCADE;
74
+ DROP TABLE IF EXISTS public.connectors CASCADE;
75
+ DROP TABLE IF EXISTS public.tenant_connector_catalog CASCADE;
76
+
77
+ COMMIT;