thinkwork-cli 0.12.12 → 0.12.15

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 (474) hide show
  1. package/README.md +42 -38
  2. package/dist/{api-client-ASJWIG3Z.js → api-client-4VT3FWOH.js} +1 -1
  3. package/dist/{chunk-JEHV35EU.js → chunk-H7AB42ES.js} +340 -30
  4. package/dist/cli.js +22123 -9219
  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/0198_eval_runs_unstable.sql +27 -0
  218. package/dist/drizzle/0199_eval_runs_cost_partial.sql +27 -0
  219. package/dist/drizzle/meta/_journal.json +160 -0
  220. package/dist/plugins/README.md +162 -0
  221. package/dist/plugins/catalog/package.json +40 -0
  222. package/dist/plugins/catalog/scripts/build-catalog.ts +120 -0
  223. package/dist/plugins/catalog/scripts/generate-plugin-registry.ts +144 -0
  224. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +86 -0
  225. package/dist/plugins/catalog/src/__tests__/catalog.test.ts +308 -0
  226. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +861 -0
  227. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +124 -0
  228. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +120 -0
  229. package/dist/plugins/catalog/src/catalog.ts +434 -0
  230. package/dist/plugins/catalog/src/contracts.ts +1498 -0
  231. package/dist/plugins/catalog/src/index.ts +4 -0
  232. package/dist/plugins/catalog/src/plugin-package.ts +171 -0
  233. package/dist/plugins/catalog/src/registry/generated-first-party.ts +76 -0
  234. package/dist/plugins/catalog/src/registry/index.ts +1 -0
  235. package/dist/plugins/catalog/tsconfig.json +8 -0
  236. package/dist/plugins/company-brain/README.md +37 -0
  237. package/dist/plugins/company-brain/package.json +33 -0
  238. package/dist/plugins/company-brain/runtime/cognee/Dockerfile +11 -0
  239. package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +458 -0
  240. package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +539 -0
  241. package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +312 -0
  242. package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +449 -0
  243. package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +655 -0
  244. package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +474 -0
  245. package/dist/plugins/company-brain/src/api/cognee-client.ts +896 -0
  246. package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +49 -0
  247. package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +84 -0
  248. package/dist/plugins/company-brain/src/api/context-engine-provider.ts +888 -0
  249. package/dist/plugins/company-brain/src/api/migration.ts +665 -0
  250. package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +396 -0
  251. package/dist/plugins/company-brain/src/index.ts +62 -0
  252. package/dist/plugins/company-brain/src/manifest.ts +112 -0
  253. package/dist/plugins/company-brain/terraform/cognee/README.md +263 -0
  254. package/dist/plugins/company-brain/terraform/cognee/main.tf +766 -0
  255. package/dist/plugins/company-brain/terraform/cognee/outputs.tf +144 -0
  256. package/dist/plugins/company-brain/terraform/cognee/variables.tf +402 -0
  257. package/dist/plugins/company-brain/test/api/cognee-client.test.ts +562 -0
  258. package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +74 -0
  259. package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +447 -0
  260. package/dist/plugins/company-brain/test/api/migration.test.ts +465 -0
  261. package/dist/plugins/company-brain/test/manifest.test.ts +95 -0
  262. package/dist/plugins/company-brain/tsconfig.json +8 -0
  263. package/dist/plugins/company-data/README.md +49 -0
  264. package/dist/plugins/company-data/package.json +21 -0
  265. package/dist/plugins/company-data/src/index.ts +30 -0
  266. package/dist/plugins/company-data/src/manifest.ts +26 -0
  267. package/dist/plugins/company-data/test/manifest.test.ts +116 -0
  268. package/dist/plugins/company-data/tsconfig.json +8 -0
  269. package/dist/plugins/company-etl/README.md +46 -0
  270. package/dist/plugins/company-etl/package.json +21 -0
  271. package/dist/plugins/company-etl/src/index.ts +29 -0
  272. package/dist/plugins/company-etl/src/manifest.ts +26 -0
  273. package/dist/plugins/company-etl/test/manifest.test.ts +108 -0
  274. package/dist/plugins/company-etl/tsconfig.json +8 -0
  275. package/dist/plugins/email-channel/README.md +41 -0
  276. package/dist/plugins/email-channel/package.json +22 -0
  277. package/dist/plugins/email-channel/src/index.ts +36 -0
  278. package/dist/plugins/email-channel/src/manifest.ts +44 -0
  279. package/dist/plugins/email-channel/src/provider-contract.ts +36 -0
  280. package/dist/plugins/email-channel/test/manifest.test.ts +119 -0
  281. package/dist/plugins/email-channel/tsconfig.json +8 -0
  282. package/dist/plugins/lastmile/README.md +50 -0
  283. package/dist/plugins/lastmile/package.json +23 -0
  284. package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +661 -0
  285. package/dist/plugins/lastmile/src/api/tasks-adapter.ts +572 -0
  286. package/dist/plugins/lastmile/src/discovery.fixture.ts +64 -0
  287. package/dist/plugins/lastmile/src/index.ts +46 -0
  288. package/dist/plugins/lastmile/src/manifest.ts +139 -0
  289. package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +266 -0
  290. package/dist/plugins/lastmile/test/discovery.test.ts +88 -0
  291. package/dist/plugins/lastmile/tsconfig.json +8 -0
  292. package/dist/plugins/n8n/README.md +201 -0
  293. package/dist/plugins/n8n/n8n-app/README.md +33 -0
  294. package/dist/plugins/n8n/n8n-app/package.json +23 -0
  295. package/dist/plugins/n8n/n8n-app/src/application-config.ts +45 -0
  296. package/dist/plugins/n8n/n8n-app/src/front-components/thinkwork-workflows.front-component.tsx +970 -0
  297. package/dist/plugins/n8n/n8n-app/src/lib/n8n-app-data.ts +190 -0
  298. package/dist/plugins/n8n/n8n-app/src/vite-env.d.ts +7 -0
  299. package/dist/plugins/n8n/n8n-app/tsconfig.json +15 -0
  300. package/dist/plugins/n8n/package.json +35 -0
  301. package/dist/plugins/n8n/runtime/Dockerfile +18 -0
  302. package/dist/plugins/n8n/runtime/n8n-task-runners.json +14 -0
  303. package/dist/plugins/n8n/runtime/n8n-task-runners.json.template +14 -0
  304. package/dist/plugins/n8n/runtime/package-lock.json +13 -0
  305. package/dist/plugins/n8n/runtime/package.json +7 -0
  306. package/dist/plugins/n8n/scripts/sync-thinkwork-app.mjs +268 -0
  307. package/dist/plugins/n8n/smoke/README.md +95 -0
  308. package/dist/plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs +866 -0
  309. package/dist/plugins/n8n/smoke/n8n-integrated-app-smoke.mjs +262 -0
  310. package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +409 -0
  311. package/dist/plugins/n8n/smoke/n8n-mcp-smoke.mjs +624 -0
  312. package/dist/plugins/n8n/src/deployment/image-build.ts +172 -0
  313. package/dist/plugins/n8n/src/deployment/managed-app.ts +429 -0
  314. package/dist/plugins/n8n/src/index.ts +79 -0
  315. package/dist/plugins/n8n/src/manifest.ts +403 -0
  316. package/dist/plugins/n8n/src/package-config.ts +186 -0
  317. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/SKILL.md +76 -0
  318. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
  319. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
  320. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/workflow-authoring.md +45 -0
  321. package/dist/plugins/n8n/terraform/n8n/README.md +113 -0
  322. package/dist/plugins/n8n/terraform/n8n/main.tf +918 -0
  323. package/dist/plugins/n8n/terraform/n8n/outputs.tf +124 -0
  324. package/dist/plugins/n8n/terraform/n8n/scripts/sync-database.py +250 -0
  325. package/dist/plugins/n8n/terraform/n8n/scripts/test_sync_database.py +55 -0
  326. package/dist/plugins/n8n/terraform/n8n/variables.tf +354 -0
  327. package/dist/plugins/n8n/test/image-build.test.ts +118 -0
  328. package/dist/plugins/n8n/test/integrated-app-contract.test.ts +353 -0
  329. package/dist/plugins/n8n/test/manifest.test.ts +278 -0
  330. package/dist/plugins/n8n/test/package-config.test.ts +57 -0
  331. package/dist/plugins/n8n/tsconfig.json +8 -0
  332. package/dist/plugins/sendgrid/README.md +30 -0
  333. package/dist/plugins/sendgrid/package.json +22 -0
  334. package/dist/plugins/sendgrid/src/index.ts +36 -0
  335. package/dist/plugins/sendgrid/src/manifest.ts +37 -0
  336. package/dist/plugins/sendgrid/src/provider-contract.ts +14 -0
  337. package/dist/plugins/sendgrid/test/manifest.test.ts +80 -0
  338. package/dist/plugins/sendgrid/tsconfig.json +8 -0
  339. package/dist/plugins/twenty/README.md +78 -0
  340. package/dist/plugins/twenty/package.json +27 -0
  341. package/dist/plugins/twenty/scripts/__tests__/sync-thinkwork-app.test.mjs +67 -0
  342. package/dist/plugins/twenty/scripts/sync-thinkwork-app.mjs +185 -0
  343. package/dist/plugins/twenty/scripts/wire-thinkwork-workflow.mjs +658 -0
  344. package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +359 -0
  345. package/dist/plugins/twenty/smoke/twenty-mcp-oauth-smoke.mjs +574 -0
  346. package/dist/plugins/twenty/src/api/cutover.ts +209 -0
  347. package/dist/plugins/twenty/src/deployment/managed-app.ts +253 -0
  348. package/dist/plugins/twenty/src/index.ts +55 -0
  349. package/dist/plugins/twenty/src/manifest.ts +259 -0
  350. package/dist/plugins/twenty/terraform/twenty/README.md +97 -0
  351. package/dist/plugins/twenty/terraform/twenty/main.tf +829 -0
  352. package/dist/plugins/twenty/terraform/twenty/outputs.tf +79 -0
  353. package/dist/plugins/twenty/terraform/twenty/variables.tf +268 -0
  354. package/dist/plugins/twenty/test/api/cutover.test.ts +183 -0
  355. package/dist/plugins/twenty/test/manifest.test.ts +463 -0
  356. package/dist/plugins/twenty/tsconfig.json +9 -0
  357. package/dist/plugins/twenty/twenty-app/.nvmrc +1 -0
  358. package/dist/plugins/twenty/twenty-app/README.md +148 -0
  359. package/dist/plugins/twenty/twenty-app/package.json +30 -0
  360. package/dist/plugins/twenty/twenty-app/src/application-config.ts +44 -0
  361. package/dist/plugins/twenty/twenty-app/src/constants/universal-identifiers.ts +18 -0
  362. package/dist/plugins/twenty/twenty-app/src/default-role.ts +24 -0
  363. package/dist/plugins/twenty/twenty-app/src/front-components/thinkwork-settings.front-component.tsx +299 -0
  364. package/dist/plugins/twenty/twenty-app/src/logic-functions/thinkwork-webhook.logic-function.ts +354 -0
  365. package/dist/plugins/twenty/twenty-app/tsconfig.json +14 -0
  366. package/dist/plugins/twenty/twenty-app/yarn.lock +4144 -0
  367. package/dist/plugins/workos-auth/package.json +22 -0
  368. package/dist/plugins/workos-auth/src/index.ts +30 -0
  369. package/dist/plugins/workos-auth/src/manifest.ts +40 -0
  370. package/dist/plugins/workos-auth/src/provider-contract.ts +39 -0
  371. package/dist/plugins/workos-auth/test/manifest.test.ts +94 -0
  372. package/dist/plugins/workos-auth/tsconfig.json +8 -0
  373. package/dist/scripts/bootstrap-workspace.sh +162 -0
  374. package/dist/scripts/post-deploy.sh +290 -0
  375. package/dist/terraform/examples/greenfield/main.tf +903 -75
  376. package/dist/terraform/examples/greenfield/terraform.tfvars.example +67 -8
  377. package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +2 -2
  378. package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +8 -9
  379. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +227 -0
  380. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +277 -0
  381. package/dist/terraform/modules/app/agentcore-memory/README.md +6 -6
  382. package/dist/terraform/modules/app/agentcore-memory/main.tf +1 -1
  383. package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +40 -9
  384. package/dist/terraform/modules/app/agentcore-pi/README.md +61 -0
  385. package/dist/terraform/modules/app/agentcore-pi/main.tf +453 -0
  386. package/dist/terraform/modules/app/agentcore-pi/outputs.tf +38 -0
  387. package/dist/terraform/modules/app/agentcore-pi/variables.tf +145 -0
  388. package/dist/terraform/modules/app/agentcore-platform/main.tf +83 -0
  389. package/dist/terraform/modules/app/agentcore-runtime/main.tf +9 -11
  390. package/dist/terraform/modules/app/appsync-subscriptions/main.tf +5 -1
  391. package/dist/terraform/modules/app/customer-domain/main.tf +483 -0
  392. package/dist/terraform/modules/app/deployment-control-plane/README.md +47 -0
  393. package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +24 -0
  394. package/dist/terraform/modules/app/deployment-control-plane/main.tf +614 -0
  395. package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +54 -0
  396. package/dist/terraform/modules/app/deployment-control-plane/runner.py +4720 -0
  397. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +3026 -0
  398. package/dist/terraform/modules/app/deployment-control-plane/variables.tf +96 -0
  399. package/dist/terraform/modules/app/hindsight-memory/README.md +25 -23
  400. package/dist/terraform/modules/app/hindsight-memory/main.tf +26 -2
  401. package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +17 -50
  402. package/dist/terraform/modules/app/lambda-api/handlers.tf +1290 -679
  403. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +933 -0
  404. package/dist/terraform/modules/app/lambda-api/main.tf +14 -527
  405. package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +3 -19
  406. package/dist/terraform/modules/app/lambda-api/outputs.tf +50 -6
  407. package/dist/terraform/modules/app/lambda-api/runtime-config.tf +163 -0
  408. package/dist/terraform/modules/app/lambda-api/slack-app-secrets.tf +3 -1
  409. package/dist/terraform/modules/app/lambda-api/stripe-secrets.tf +3 -1
  410. package/dist/terraform/modules/app/lambda-api/variables.tf +240 -53
  411. package/dist/terraform/modules/app/lambda-api/workspace-events.tf +2 -25
  412. package/dist/terraform/modules/app/ses-email/main.tf +143 -30
  413. package/dist/terraform/modules/app/static-site/main.tf +4 -3
  414. package/dist/terraform/modules/app/www-dns/main.tf +45 -5
  415. package/dist/terraform/modules/app/www-dns/outputs.tf +10 -0
  416. package/dist/terraform/modules/app/www-dns/variables.tf +24 -0
  417. package/dist/terraform/modules/data/aurora-postgres/main.tf +15 -1
  418. package/dist/terraform/modules/data/compliance-exports-bucket/main.tf +1 -1
  419. package/dist/terraform/modules/data/compliance-exports-bucket/variables.tf +6 -0
  420. package/dist/terraform/modules/foundation/cognito/main.tf +167 -11
  421. package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
  422. package/dist/terraform/modules/foundation/cognito/variables.tf +110 -0
  423. package/dist/terraform/modules/foundation/vpc/main.tf +45 -3
  424. package/dist/terraform/modules/foundation/vpc/outputs.tf +20 -0
  425. package/dist/terraform/modules/foundation/vpc/variables.tf +18 -0
  426. package/dist/terraform/modules/thinkwork/README.md +71 -0
  427. package/dist/terraform/modules/thinkwork/main.tf +1325 -174
  428. package/dist/terraform/modules/thinkwork/outputs.tf +457 -24
  429. package/dist/terraform/modules/thinkwork/variables.tf +1169 -93
  430. package/dist/terraform/schema.graphql +82 -9
  431. package/dist/workspace-defaults/files/AGENTS.md +344 -0
  432. package/dist/workspace-defaults/files/CONTEXT.md +8 -0
  433. package/dist/workspace-defaults/files/GUARDRAILS.md +51 -0
  434. package/dist/workspace-defaults/files/MEMORY_GUIDE.md +65 -0
  435. package/dist/workspace-defaults/files/ROUTER.md +24 -0
  436. package/dist/workspace-defaults/files/SPACE.md +62 -0
  437. package/dist/workspace-defaults/files/TOOLS.md +65 -0
  438. package/dist/workspace-defaults/files/USER.md +40 -0
  439. package/dist/workspace-defaults/files/mcp.json +3 -0
  440. package/dist/workspace-defaults/files/memory/contacts.md +13 -0
  441. package/dist/workspace-defaults/files/memory/lessons.md +13 -0
  442. package/dist/workspace-defaults/files/memory/preferences.md +12 -0
  443. package/dist/workspace-defaults/files/skills/.gitkeep +1 -0
  444. package/dist/workspace-defaults/files/skills/artifact-builder/SKILL.md +79 -0
  445. package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +166 -0
  446. package/dist/workspace-defaults/files/skills/automation-loop-designer/SKILL.md +120 -0
  447. package/dist/workspace-defaults/files/skills/skill-creator/LICENSE.txt +202 -0
  448. package/dist/workspace-defaults/files/skills/skill-creator/SKILL.md +485 -0
  449. package/dist/workspace-defaults/files/skills/skill-creator/UPSTREAM.json +124 -0
  450. package/dist/workspace-defaults/files/skills/skill-creator/agents/analyzer.md +274 -0
  451. package/dist/workspace-defaults/files/skills/skill-creator/agents/comparator.md +202 -0
  452. package/dist/workspace-defaults/files/skills/skill-creator/agents/grader.md +223 -0
  453. package/dist/workspace-defaults/files/skills/skill-creator/assets/eval_review.html +146 -0
  454. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  455. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  456. package/dist/workspace-defaults/files/skills/skill-creator/references/schemas.md +430 -0
  457. package/dist/workspace-defaults/files/skills/skill-creator/scripts/__init__.py +0 -0
  458. package/dist/workspace-defaults/files/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  459. package/dist/workspace-defaults/files/skills/skill-creator/scripts/generate_report.py +326 -0
  460. package/dist/workspace-defaults/files/skills/skill-creator/scripts/improve_description.py +247 -0
  461. package/dist/workspace-defaults/files/skills/skill-creator/scripts/package_skill.py +136 -0
  462. package/dist/workspace-defaults/files/skills/skill-creator/scripts/quick_validate.py +103 -0
  463. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_eval.py +310 -0
  464. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_loop.py +328 -0
  465. package/dist/workspace-defaults/files/skills/skill-creator/scripts/utils.py +47 -0
  466. package/package.json +1 -1
  467. package/dist/terraform/modules/app/agentcore-flue/README.md +0 -58
  468. package/dist/terraform/modules/app/agentcore-flue/main.tf +0 -323
  469. package/dist/terraform/modules/app/agentcore-flue/outputs.tf +0 -23
  470. package/dist/terraform/modules/app/agentcore-flue/variables.tf +0 -97
  471. package/dist/terraform/modules/app/computer-runtime/README.md +0 -15
  472. package/dist/terraform/modules/app/computer-runtime/main.tf +0 -406
  473. package/dist/terraform/modules/app/computer-runtime/outputs.tf +0 -75
  474. package/dist/terraform/modules/app/computer-runtime/variables.tf +0 -66
@@ -0,0 +1,126 @@
1
+ -- Purpose: add Space-to-knowledge-base assignments for the admin Space Memory tab.
2
+ -- Plan: docs/plans/2026-05-21-005-feat-admin-space-studio-simplification-plan.md (U3)
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0119_space_knowledge_bases.sql
4
+ -- creates: public.space_knowledge_bases
5
+ -- creates: public.uq_space_kb
6
+ -- creates: public.idx_space_kbs_space
7
+ -- creates: public.idx_space_kbs_knowledge_base
8
+ -- creates-trigger: public.space_knowledge_bases.space_knowledge_bases_tenant_guard
9
+ -- creates-constraint: public.space_knowledge_bases.space_knowledge_bases_tenant_id_tenants_id_fk
10
+ -- creates-constraint: public.space_knowledge_bases.space_knowledge_bases_space_id_spaces_id_fk
11
+ -- creates-constraint: public.space_knowledge_bases.space_knowledge_bases_knowledge_base_id_knowledge_bases_id_fk
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
+ CREATE TABLE IF NOT EXISTS public.space_knowledge_bases (
21
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
22
+ tenant_id uuid NOT NULL,
23
+ space_id uuid NOT NULL,
24
+ knowledge_base_id uuid NOT NULL,
25
+ enabled boolean NOT NULL DEFAULT true,
26
+ search_config jsonb,
27
+ created_at timestamptz NOT NULL DEFAULT now(),
28
+ CONSTRAINT space_knowledge_bases_tenant_id_tenants_id_fk
29
+ FOREIGN KEY (tenant_id)
30
+ REFERENCES public.tenants(id)
31
+ ON DELETE CASCADE,
32
+ CONSTRAINT space_knowledge_bases_space_id_spaces_id_fk
33
+ FOREIGN KEY (space_id)
34
+ REFERENCES public.spaces(id)
35
+ ON DELETE CASCADE,
36
+ CONSTRAINT space_knowledge_bases_knowledge_base_id_knowledge_bases_id_fk
37
+ FOREIGN KEY (knowledge_base_id)
38
+ REFERENCES public.knowledge_bases(id)
39
+ );
40
+
41
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_space_kb
42
+ ON public.space_knowledge_bases (space_id, knowledge_base_id);
43
+
44
+ CREATE INDEX IF NOT EXISTS idx_space_kbs_space
45
+ ON public.space_knowledge_bases (tenant_id, space_id);
46
+
47
+ CREATE INDEX IF NOT EXISTS idx_space_kbs_knowledge_base
48
+ ON public.space_knowledge_bases (tenant_id, knowledge_base_id);
49
+
50
+ CREATE OR REPLACE FUNCTION public.enforce_space_child_tenant()
51
+ RETURNS trigger
52
+ LANGUAGE plpgsql
53
+ AS $$
54
+ DECLARE
55
+ target_tenant_id uuid;
56
+ BEGIN
57
+ SELECT tenant_id INTO target_tenant_id
58
+ FROM public.spaces
59
+ WHERE id = NEW.space_id;
60
+
61
+ IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
62
+ RAISE EXCEPTION 'space child tenant mismatch for space %', NEW.space_id
63
+ USING ERRCODE = '23514';
64
+ END IF;
65
+
66
+ IF TG_TABLE_NAME = 'space_members' THEN
67
+ SELECT tenant_id INTO target_tenant_id
68
+ FROM public.users
69
+ WHERE id = NEW.user_id;
70
+
71
+ IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
72
+ RAISE EXCEPTION 'space member tenant mismatch for user %', NEW.user_id
73
+ USING ERRCODE = '23514';
74
+ END IF;
75
+ ELSIF TG_TABLE_NAME = 'space_agent_assignments' THEN
76
+ SELECT tenant_id INTO target_tenant_id
77
+ FROM public.agents
78
+ WHERE id = NEW.agent_id;
79
+
80
+ IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
81
+ RAISE EXCEPTION 'space agent assignment tenant mismatch for agent %', NEW.agent_id
82
+ USING ERRCODE = '23514';
83
+ END IF;
84
+ ELSIF TG_TABLE_NAME = 'space_checklist_items' THEN
85
+ SELECT tenant_id INTO target_tenant_id
86
+ FROM public.space_checklist_templates
87
+ WHERE id = NEW.template_id;
88
+
89
+ IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
90
+ RAISE EXCEPTION 'space checklist item tenant mismatch for template %', NEW.template_id
91
+ USING ERRCODE = '23514';
92
+ END IF;
93
+ ELSIF TG_TABLE_NAME = 'space_mcp_servers' THEN
94
+ SELECT tenant_id INTO target_tenant_id
95
+ FROM public.tenant_mcp_servers
96
+ WHERE id = NEW.mcp_server_id;
97
+
98
+ IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
99
+ RAISE EXCEPTION 'space MCP server tenant mismatch for MCP server %', NEW.mcp_server_id
100
+ USING ERRCODE = '23514';
101
+ END IF;
102
+ ELSIF TG_TABLE_NAME = 'space_knowledge_bases' THEN
103
+ SELECT tenant_id INTO target_tenant_id
104
+ FROM public.knowledge_bases
105
+ WHERE id = NEW.knowledge_base_id;
106
+
107
+ IF target_tenant_id IS NULL OR target_tenant_id <> NEW.tenant_id THEN
108
+ RAISE EXCEPTION 'space knowledge base tenant mismatch for knowledge base %', NEW.knowledge_base_id
109
+ USING ERRCODE = '23514';
110
+ END IF;
111
+ END IF;
112
+
113
+ RETURN NEW;
114
+ END;
115
+ $$;
116
+
117
+ DROP TRIGGER IF EXISTS space_knowledge_bases_tenant_guard
118
+ ON public.space_knowledge_bases;
119
+
120
+ CREATE TRIGGER space_knowledge_bases_tenant_guard
121
+ BEFORE INSERT OR UPDATE
122
+ ON public.space_knowledge_bases
123
+ FOR EACH ROW
124
+ EXECUTE FUNCTION public.enforce_space_child_tenant();
125
+
126
+ COMMIT;
@@ -0,0 +1,58 @@
1
+ -- Purpose: scope scheduled jobs and webhooks to Spaces for the admin Space Automations tab.
2
+ -- Plan: docs/plans/2026-05-21-005-feat-admin-space-studio-simplification-plan.md (U5)
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0120_space_automations.sql
4
+ -- creates-column: public.scheduled_jobs.space_id
5
+ -- creates-column: public.webhooks.space_id
6
+ -- creates: public.idx_scheduled_jobs_space
7
+ -- creates: public.idx_webhooks_space
8
+ -- creates-constraint: public.scheduled_jobs.scheduled_jobs_space_id_spaces_id_fk
9
+ -- creates-constraint: public.webhooks.webhooks_space_id_spaces_id_fk
10
+
11
+ \set ON_ERROR_STOP on
12
+
13
+ BEGIN;
14
+
15
+ SET LOCAL lock_timeout = '5s';
16
+ SET LOCAL statement_timeout = '120s';
17
+
18
+ ALTER TABLE public.scheduled_jobs
19
+ ADD COLUMN IF NOT EXISTS space_id uuid;
20
+
21
+ ALTER TABLE public.webhooks
22
+ ADD COLUMN IF NOT EXISTS space_id uuid;
23
+
24
+ DO $$
25
+ BEGIN
26
+ IF NOT EXISTS (
27
+ SELECT 1
28
+ FROM pg_constraint
29
+ WHERE conname = 'scheduled_jobs_space_id_spaces_id_fk'
30
+ AND conrelid = 'public.scheduled_jobs'::regclass
31
+ ) THEN
32
+ ALTER TABLE public.scheduled_jobs
33
+ ADD CONSTRAINT scheduled_jobs_space_id_spaces_id_fk
34
+ FOREIGN KEY (space_id)
35
+ REFERENCES public.spaces(id);
36
+ END IF;
37
+
38
+ IF NOT EXISTS (
39
+ SELECT 1
40
+ FROM pg_constraint
41
+ WHERE conname = 'webhooks_space_id_spaces_id_fk'
42
+ AND conrelid = 'public.webhooks'::regclass
43
+ ) THEN
44
+ ALTER TABLE public.webhooks
45
+ ADD CONSTRAINT webhooks_space_id_spaces_id_fk
46
+ FOREIGN KEY (space_id)
47
+ REFERENCES public.spaces(id);
48
+ END IF;
49
+ END;
50
+ $$;
51
+
52
+ CREATE INDEX IF NOT EXISTS idx_scheduled_jobs_space
53
+ ON public.scheduled_jobs (tenant_id, space_id);
54
+
55
+ CREATE INDEX IF NOT EXISTS idx_webhooks_space
56
+ ON public.webhooks (tenant_id, space_id);
57
+
58
+ COMMIT;
@@ -0,0 +1,26 @@
1
+ -- Drop the computer-runbook tables introduced in 0083_computer_runbooks.sql.
2
+ -- Runbooks are being retired as a platform feature — the runbook-shaped
3
+ -- skills (crm-dashboard, research-dashboard, map-artifact) have been
4
+ -- rewritten as regular agentskills.io skills that compose with the
5
+ -- platform artifact-builder skill, and the runbook orchestration
6
+ -- machinery in the runtime + the API resolvers + legacy runbook code paths
7
+ -- have all been removed.
8
+ -- See refactor commit "drop runbook functionality entirely (L3)".
9
+ --
10
+ -- The dev tenant has no production data in these tables that needs
11
+ -- preserving; this is a destructive drop. The indexes drop with the
12
+ -- tables via CASCADE-on-drop-table.
13
+ --
14
+ -- drops: public.tenant_runbook_catalog
15
+ -- drops: public.computer_runbook_runs
16
+ -- drops: public.computer_runbook_tasks
17
+
18
+ \set ON_ERROR_STOP on
19
+
20
+ BEGIN;
21
+
22
+ DROP TABLE IF EXISTS public.computer_runbook_tasks;
23
+ DROP TABLE IF EXISTS public.computer_runbook_runs;
24
+ DROP TABLE IF EXISTS public.tenant_runbook_catalog;
25
+
26
+ COMMIT;
@@ -0,0 +1,24 @@
1
+ -- Purpose: add per-Space cold-contact email trigger opt-in.
2
+ -- Plan: docs/plans/2026-05-22-002-feat-spaces-runtime-renderer-and-channels-plan.md (U4)
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0122_space_email_triggers.sql
4
+ -- creates-column: public.spaces.email_triggers_enabled
5
+
6
+ \set ON_ERROR_STOP on
7
+
8
+ BEGIN;
9
+
10
+ SET LOCAL lock_timeout = '5s';
11
+ SET LOCAL statement_timeout = '120s';
12
+
13
+ ALTER TABLE public.spaces
14
+ ADD COLUMN IF NOT EXISTS email_triggers_enabled boolean;
15
+
16
+ UPDATE public.spaces
17
+ SET email_triggers_enabled = false
18
+ WHERE email_triggers_enabled IS NULL;
19
+
20
+ ALTER TABLE public.spaces
21
+ ALTER COLUMN email_triggers_enabled SET DEFAULT false,
22
+ ALTER COLUMN email_triggers_enabled SET NOT NULL;
23
+
24
+ COMMIT;
@@ -0,0 +1,58 @@
1
+ -- Purpose: add the single-platform-agent marker and typed per-Space runtime override columns.
2
+ -- Plan: docs/plans/2026-05-22-005-refactor-single-platform-agent-and-space-runtime-overrides-plan.md (U1a)
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0123_single_platform_agent_and_overrides.sql
4
+ -- creates-column: public.agents.is_platform_default
5
+ -- creates: public.uq_agents_platform_default_per_tenant
6
+ -- creates-column: public.spaces.model_override
7
+ -- creates-column: public.spaces.guardrail_id_override
8
+ -- creates-column: public.spaces.budget_monthly_cents_override
9
+ -- creates-column: public.spaces.budget_paused_override
10
+ -- creates-column: public.spaces.sandbox_override
11
+ -- creates-constraint: public.spaces.spaces_guardrail_id_override_guardrails_id_fk
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.agents
21
+ ADD COLUMN IF NOT EXISTS is_platform_default boolean;
22
+
23
+ UPDATE public.agents
24
+ SET is_platform_default = false
25
+ WHERE is_platform_default IS NULL;
26
+
27
+ ALTER TABLE public.agents
28
+ ALTER COLUMN is_platform_default SET DEFAULT false,
29
+ ALTER COLUMN is_platform_default SET NOT NULL;
30
+
31
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_agents_platform_default_per_tenant
32
+ ON public.agents (tenant_id)
33
+ WHERE is_platform_default IS TRUE;
34
+
35
+ ALTER TABLE public.spaces
36
+ ADD COLUMN IF NOT EXISTS model_override text,
37
+ ADD COLUMN IF NOT EXISTS guardrail_id_override uuid,
38
+ ADD COLUMN IF NOT EXISTS budget_monthly_cents_override integer,
39
+ ADD COLUMN IF NOT EXISTS budget_paused_override boolean,
40
+ ADD COLUMN IF NOT EXISTS sandbox_override boolean;
41
+
42
+ DO $$
43
+ BEGIN
44
+ IF NOT EXISTS (
45
+ SELECT 1
46
+ FROM pg_constraint
47
+ WHERE conname = 'spaces_guardrail_id_override_guardrails_id_fk'
48
+ AND conrelid = 'public.spaces'::regclass
49
+ ) THEN
50
+ ALTER TABLE public.spaces
51
+ ADD CONSTRAINT spaces_guardrail_id_override_guardrails_id_fk
52
+ FOREIGN KEY (guardrail_id_override)
53
+ REFERENCES public.guardrails(id);
54
+ END IF;
55
+ END;
56
+ $$;
57
+
58
+ COMMIT;
@@ -0,0 +1,17 @@
1
+ -- creates-column: public.thread_turns.finalized_at
2
+ --
3
+ -- chat-agent-invoke direct-callback finalize architecture (plan
4
+ -- 2026-05-22-006). The new chat-agent-finalize Lambda handler keys on
5
+ -- thread_turns.finalized_at to enforce idempotency: when the Strands runtime
6
+ -- POSTs the same turn_id twice (transient network failure → retry), the
7
+ -- second call detects finalized_at IS NOT NULL and returns
8
+ -- {idempotent: true} without re-running the cost / message-insert /
9
+ -- notify side-effects.
10
+
11
+ \set ON_ERROR_STOP on
12
+ BEGIN;
13
+
14
+ ALTER TABLE public.thread_turns
15
+ ADD COLUMN IF NOT EXISTS finalized_at TIMESTAMPTZ;
16
+
17
+ COMMIT;
@@ -0,0 +1,42 @@
1
+ -- 0125_drop_space_agent_assignments.sql
2
+ --
3
+ -- Drops the retired Space-agent assignment table after the platform-agent
4
+ -- collapse and GraphQL/admin consumer rewrites have shipped.
5
+ --
6
+ -- Plan: docs/plans/2026-05-22-005-refactor-single-platform-agent-and-space-runtime-overrides-plan.md (U1b)
7
+ -- Dependencies:
8
+ -- - U3 merged: cold-contact no longer resolves agents through assignments.
9
+ -- - U5/U7 merged: GraphQL/admin/API consumers no longer read assignments.
10
+ -- - U6 merged: legacy email paths no longer need assignment-era agent email state.
11
+ --
12
+ -- Apply manually:
13
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0125_drop_space_agent_assignments.sql
14
+ -- Then verify:
15
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0125_drop_space_agent_assignments.sql
16
+ --
17
+ -- The table's local_instructions values were backfilled into spaces.prompt
18
+ -- by the U2 collapse migration before this drop. The remaining columns
19
+ -- (local_role, auto_subscribe, allowed_capabilities, allowed_tools, status)
20
+ -- are retired with the per-Space agent assignment model.
21
+ --
22
+ -- drops: public.space_agent_assignments
23
+ -- drops: public.uq_space_agent_assignments_agent
24
+ -- drops: public.idx_space_agent_assignments_agent
25
+ -- drops: public.idx_space_agent_assignments_space
26
+ -- drops-constraint: public.space_agent_assignments.space_agent_assignments_tenant_id_tenants_id_fk
27
+ -- drops-constraint: public.space_agent_assignments.space_agent_assignments_space_id_spaces_id_fk
28
+ -- drops-constraint: public.space_agent_assignments.space_agent_assignments_agent_id_agents_id_fk
29
+ -- drops-constraint: public.space_agent_assignments.space_agent_assignments_status_allowed
30
+
31
+ \set ON_ERROR_STOP on
32
+
33
+ BEGIN;
34
+
35
+ SET LOCAL lock_timeout = '30s';
36
+ SET LOCAL statement_timeout = '60s';
37
+
38
+ SELECT pg_advisory_xact_lock(hashtext('drop_space_agent_assignments'));
39
+
40
+ DROP TABLE IF EXISTS public.space_agent_assignments CASCADE;
41
+
42
+ COMMIT;
@@ -0,0 +1,42 @@
1
+ -- Runtime selector rename: flue -> pi.
2
+ --
3
+ -- creates-constraint: public.agents.agents_runtime_check
4
+ -- creates-constraint: public.agent_templates.agent_templates_runtime_check
5
+
6
+ \echo '== runtime selector rename: flue -> pi =='
7
+
8
+ \echo '-- allowing strands, pi, and legacy flue during backfill --'
9
+
10
+ ALTER TABLE agents DROP CONSTRAINT IF EXISTS agents_runtime_check;
11
+ ALTER TABLE agents
12
+ ADD CONSTRAINT agents_runtime_check
13
+ CHECK (runtime IN ('strands', 'pi', 'flue'));
14
+
15
+ ALTER TABLE agent_templates DROP CONSTRAINT IF EXISTS agent_templates_runtime_check;
16
+ ALTER TABLE agent_templates
17
+ ADD CONSTRAINT agent_templates_runtime_check
18
+ CHECK (runtime IN ('strands', 'pi', 'flue'));
19
+
20
+ \echo '-- updating agents.runtime: flue -> pi --'
21
+
22
+ UPDATE agents
23
+ SET runtime = 'pi', updated_at = NOW()
24
+ WHERE runtime = 'flue';
25
+
26
+ \echo '-- updating agent_templates.runtime: flue -> pi --'
27
+
28
+ UPDATE agent_templates
29
+ SET runtime = 'pi', updated_at = NOW()
30
+ WHERE runtime = 'flue';
31
+
32
+ \echo '-- tightening runtime CHECK constraints to strands/pi --'
33
+
34
+ ALTER TABLE agents DROP CONSTRAINT IF EXISTS agents_runtime_check;
35
+ ALTER TABLE agents
36
+ ADD CONSTRAINT agents_runtime_check
37
+ CHECK (runtime IN ('strands', 'pi'));
38
+
39
+ ALTER TABLE agent_templates DROP CONSTRAINT IF EXISTS agent_templates_runtime_check;
40
+ ALTER TABLE agent_templates
41
+ ADD CONSTRAINT agent_templates_runtime_check
42
+ CHECK (runtime IN ('strands', 'pi'));
@@ -0,0 +1,28 @@
1
+ -- Runtime observability for thread turns and usage/cost events.
2
+ --
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0127_runtime_type_observability.sql
4
+ -- creates-column: public.thread_turns.runtime_type
5
+ -- creates: public.idx_thread_turns_runtime
6
+ -- creates-column: public.cost_events.runtime_type
7
+ -- creates: public.idx_cost_events_runtime
8
+
9
+ \set ON_ERROR_STOP on
10
+
11
+ BEGIN;
12
+
13
+ SET LOCAL lock_timeout = '5s';
14
+ SET LOCAL statement_timeout = '120s';
15
+
16
+ ALTER TABLE public.thread_turns
17
+ ADD COLUMN IF NOT EXISTS runtime_type text;
18
+
19
+ CREATE INDEX IF NOT EXISTS idx_thread_turns_runtime
20
+ ON public.thread_turns (tenant_id, runtime_type);
21
+
22
+ ALTER TABLE public.cost_events
23
+ ADD COLUMN IF NOT EXISTS runtime_type text;
24
+
25
+ CREATE INDEX IF NOT EXISTS idx_cost_events_runtime
26
+ ON public.cost_events (tenant_id, runtime_type);
27
+
28
+ COMMIT;
@@ -0,0 +1,37 @@
1
+ -- 0128_drop_eval_test_cases_agent_id.sql
2
+ --
3
+ -- Drops the per-case Agent override column on eval_test_cases. Under the
4
+ -- one-platform-agent model, evals always run against the tenant's
5
+ -- is_platform_default=true row; a per-test-case agent target has no
6
+ -- meaning. The matching GraphQL fields (EvalTestCase.agentId,
7
+ -- CreateEvalTestCaseInput.agentId, UpdateEvalTestCaseInput.agentId) were
8
+ -- removed in the same PR set; this drops the underlying column once the
9
+ -- resolver no longer reads or writes it.
10
+ --
11
+ -- Plan: docs/plans/2026-05-23-006-refactor-evaluations-tenant-platform-agent-plan.md (U3)
12
+ -- Dependencies:
13
+ -- - U1 merged: every eval call site resolves through resolveTenantPlatformAgent.
14
+ -- - U2 merged: GraphQL surface no longer exposes per-case agentId; resolver
15
+ -- no longer reads or writes the column.
16
+ --
17
+ -- Apply manually:
18
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0128_drop_eval_test_cases_agent_id.sql
19
+ -- Then verify:
20
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0128_drop_eval_test_cases_agent_id.sql
21
+ --
22
+ -- drops-column: public.eval_test_cases.agent_id
23
+ -- drops-constraint: public.eval_test_cases.eval_test_cases_agent_id_agents_id_fk
24
+
25
+ \set ON_ERROR_STOP on
26
+
27
+ BEGIN;
28
+
29
+ SET LOCAL lock_timeout = '30s';
30
+ SET LOCAL statement_timeout = '60s';
31
+
32
+ SELECT pg_advisory_xact_lock(hashtext('drop_eval_test_cases_agent_id'));
33
+
34
+ ALTER TABLE public.eval_test_cases
35
+ DROP COLUMN IF EXISTS agent_id;
36
+
37
+ COMMIT;
@@ -0,0 +1,43 @@
1
+ -- 0129_drop_code_factory_tables.sql
2
+ --
3
+ -- Drops the three code_factory_* tables and their indexes.
4
+ --
5
+ -- Origin: docs/brainstorms/2026-05-24-codebase-and-database-simplification-cleanup-requirements.md
6
+ -- Plan: docs/plans/2026-05-24-002-refactor-p0-zombie-sweep-cleanup-plan.md (T8 — Code Factory)
7
+ --
8
+ -- Context: code_factory was an OSS feature shipped alongside the retired
9
+ -- Symphony connectors. The Lambda handlers (code-factory.ts, github-repos.ts),
10
+ -- mobile settings screen (code-factory-repos.tsx), agent-detail UI blocks, and
11
+ -- create-hosted-agent-modal "code_factory" runtime profile are removed in the
12
+ -- same PR as this migration. github-app-webhook.ts retains its workspace-sync
13
+ -- skeleton but the tenant-slug lookup that depended on code_factory_repos now
14
+ -- always returns null until a replacement mapping is wired.
15
+ --
16
+ -- All three tables are 0 rows in dev. No inbound FKs from non-code_factory
17
+ -- tables (verified via pg_constraint query). CASCADE handles internal FK
18
+ -- ordering between code_factory_runs → code_factory_jobs → code_factory_repos.
19
+ --
20
+ -- Apply manually after merge:
21
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0129_drop_code_factory_tables.sql
22
+ -- Then verify:
23
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0129_drop_code_factory_tables.sql
24
+ --
25
+ -- drops: public.code_factory_jobs
26
+ -- drops: public.code_factory_repos
27
+ -- drops: public.code_factory_runs
28
+ -- drops: public.uq_code_factory_repos_owner_repo
29
+
30
+ \set ON_ERROR_STOP on
31
+
32
+ BEGIN;
33
+
34
+ SET LOCAL lock_timeout = '30s';
35
+ SET LOCAL statement_timeout = '60s';
36
+
37
+ SELECT pg_advisory_xact_lock(hashtext('drop_code_factory_tables'));
38
+
39
+ DROP TABLE IF EXISTS public.code_factory_runs CASCADE;
40
+ DROP TABLE IF EXISTS public.code_factory_jobs CASCADE;
41
+ DROP TABLE IF EXISTS public.code_factory_repos CASCADE;
42
+
43
+ COMMIT;
@@ -0,0 +1,30 @@
1
+ -- 0129_eval_results_system_prompt.sql
2
+ --
3
+ -- Adds a nullable text column capturing the system prompt the agent loop
4
+ -- ran against during an eval invocation. Populated by the eval-worker from
5
+ -- the Pi runtime's `composed_system_prompt` response field; surfaced in the
6
+ -- admin "View System Prompt" sheet on the eval result detail.
7
+ --
8
+ -- Plan: docs/plans/2026-05-23-006-refactor-evaluations-tenant-platform-agent-plan.md
9
+ -- (post-merge feature follow-up from ce-debug session 2026-05-24)
10
+ --
11
+ -- Apply manually:
12
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0129_eval_results_system_prompt.sql
13
+ -- Then verify:
14
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0129_eval_results_system_prompt.sql
15
+ --
16
+ -- creates-column: public.eval_results.system_prompt
17
+
18
+ \set ON_ERROR_STOP on
19
+
20
+ BEGIN;
21
+
22
+ SET LOCAL lock_timeout = '30s';
23
+ SET LOCAL statement_timeout = '60s';
24
+
25
+ SELECT pg_advisory_xact_lock(hashtext('add_eval_results_system_prompt'));
26
+
27
+ ALTER TABLE public.eval_results
28
+ ADD COLUMN IF NOT EXISTS system_prompt text;
29
+
30
+ COMMIT;
@@ -0,0 +1,54 @@
1
+ -- 0130_drop_teams_and_team_id_columns.sql
2
+ --
3
+ -- Drops the teams feature end-to-end.
4
+ --
5
+ -- Origin: docs/brainstorms/2026-05-24-codebase-and-database-simplification-cleanup-requirements.md
6
+ --
7
+ -- Removes the three team tables (teams, team_users, team_agents) and the
8
+ -- four orphan team_id columns left on routines/scheduled_jobs/workflow_configs/
9
+ -- cost_events after the teams feature was retired in this PR. The
10
+ -- computer_assignments.team_id column is intentionally NOT dropped here —
11
+ -- computer_assignments goes away entirely in the P3 Computer-residual sweep,
12
+ -- and dropping the column requires invalidating the multi-CHECK constraint
13
+ -- that distinguishes user vs team subject types. Cleanup of that column
14
+ -- ships with T4.
15
+ --
16
+ -- Apply manually after merge:
17
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0130_drop_teams_and_team_id_columns.sql
18
+ -- Then verify:
19
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0130_drop_teams_and_team_id_columns.sql
20
+ --
21
+ -- drops: public.teams
22
+ -- drops: public.team_users
23
+ -- drops: public.team_agents
24
+ -- drops-column: public.routines.team_id
25
+ -- drops-column: public.scheduled_jobs.team_id
26
+ -- drops-column: public.workflow_configs.team_id
27
+ -- drops-column: public.cost_events.team_id
28
+
29
+ \set ON_ERROR_STOP on
30
+
31
+ BEGIN;
32
+
33
+ SET LOCAL lock_timeout = '30s';
34
+ SET LOCAL statement_timeout = '60s';
35
+
36
+ SELECT pg_advisory_xact_lock(hashtext('drop_teams_and_team_id_columns'));
37
+
38
+ -- Drop the workflow_configs team index that referenced team_id
39
+ DROP INDEX IF EXISTS public.workflow_configs_tenant_team_idx;
40
+
41
+ -- Drop team_id columns from alive tables
42
+ ALTER TABLE public.routines DROP COLUMN IF EXISTS team_id;
43
+ ALTER TABLE public.scheduled_jobs DROP COLUMN IF EXISTS team_id;
44
+ ALTER TABLE public.workflow_configs DROP COLUMN IF EXISTS team_id;
45
+ ALTER TABLE public.cost_events DROP COLUMN IF EXISTS team_id;
46
+
47
+ -- Drop the teams tables themselves. CASCADE handles any incidental FKs
48
+ -- (the only internal FKs are team_users.team_id and team_agents.team_id
49
+ -- pointing back at teams, which CASCADE removes implicitly via table drop).
50
+ DROP TABLE IF EXISTS public.team_users CASCADE;
51
+ DROP TABLE IF EXISTS public.team_agents CASCADE;
52
+ DROP TABLE IF EXISTS public.teams CASCADE;
53
+
54
+ COMMIT;
@@ -0,0 +1,33 @@
1
+ -- 0131_drop_skill_catalog_and_tenant_skills.sql
2
+ --
3
+ -- Drops the retired database-backed skill catalog tables.
4
+ --
5
+ -- Origin: docs/plans/2026-05-24-003-feat-pi-skill-catalog-and-workspace-install-plan.md
6
+ --
7
+ -- Context: skills are now cataloged in S3 under
8
+ -- tenants/<tenant_slug>/skill-catalog/<skill_slug>/ and installed by copying
9
+ -- skill folders into agent/Space workspace `skills/` directories. U15 retired
10
+ -- the GraphQL customize skill surface and U16a retired the remaining REST,
11
+ -- runtime, plugin-install, bootstrap, and tenant-inventory table consumers.
12
+ --
13
+ -- Apply manually after merge:
14
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0131_drop_skill_catalog_and_tenant_skills.sql
15
+ -- Then verify:
16
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0131_drop_skill_catalog_and_tenant_skills.sql
17
+ --
18
+ -- drops: public.tenant_skills
19
+ -- drops: public.skill_catalog
20
+
21
+ \set ON_ERROR_STOP on
22
+
23
+ BEGIN;
24
+
25
+ SET LOCAL lock_timeout = '30s';
26
+ SET LOCAL statement_timeout = '60s';
27
+
28
+ SELECT pg_advisory_xact_lock(hashtext('drop_skill_catalog_and_tenant_skills'));
29
+
30
+ DROP TABLE IF EXISTS public.tenant_skills CASCADE;
31
+ DROP TABLE IF EXISTS public.skill_catalog CASCADE;
32
+
33
+ COMMIT;
@@ -0,0 +1,31 @@
1
+ -- 0131_drop_computer_tables.sql
2
+ -- drops: public.computer_events
3
+ -- drops: public.computer_tasks
4
+ -- drops: public.computer_assignments
5
+ -- drops: public.computer_snapshots
6
+ -- drops: public.computers
7
+ --
8
+ -- Kill the legacy Computer feature. All product surfaces (admin, Spaces,
9
+ -- mobile, CLI), Lambda handlers (computer-runtime, computer-manager,
10
+ -- computer-runtime-reconciler, computer-terminal-start, slack-dispatch,
11
+ -- workspace-files-efs, migrate-agents-to-computers), GraphQL resolvers,
12
+ -- and Terraform modules for the Computer concept are removed in this
13
+ -- same PR. After this migration applies, the 5 tables drop and ~2.6 GB
14
+ -- of dead data is reclaimed.
15
+ --
16
+ -- Order: child tables first to satisfy FK chains.
17
+ -- computer_events.task_id → computer_tasks.id
18
+ -- computer_tasks.computer_id → computers.id
19
+ -- computer_assignments.computer_id → computers.id
20
+ -- computer_snapshots.computer_id → computers.id
21
+ --
22
+ -- Apply AFTER merge + deploy of this PR so the live Lambda functions
23
+ -- have already shipped without computer_* reads/writes. Applying before
24
+ -- the deploy will crash chat-agent, scheduled jobs, and admin queries
25
+ -- with PG 42P01 (relation does not exist).
26
+
27
+ DROP TABLE IF EXISTS public.computer_events CASCADE;
28
+ DROP TABLE IF EXISTS public.computer_tasks CASCADE;
29
+ DROP TABLE IF EXISTS public.computer_assignments CASCADE;
30
+ DROP TABLE IF EXISTS public.computer_snapshots CASCADE;
31
+ DROP TABLE IF EXISTS public.computers CASCADE;