thinkwork-cli 0.12.11 → 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 +22157 -9229
  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,48 @@
1
+ -- Retire composition-era primitive skills (pure-skill-spec cleanup).
2
+ --
3
+ -- Post plan §U6 the composition runner is gone, and every deliverable-shape
4
+ -- skill (sales-prep, account-health-review, renewal-prep, customer-onboarding-
5
+ -- reconciler) has been rewritten as a pure Claude-spec SKILL.md that inlines
6
+ -- framing + synthesis. The four workflow primitives that used to be invoked
7
+ -- between a deliverable's steps -- frame, synthesize, gather, compound -- no
8
+ -- longer have callers. This migration deletes them from every tenant + agent
9
+ -- install so the admin catalog, workspace-map generator, and session
10
+ -- allowlist stop listing stale slugs.
11
+ --
12
+ -- The YAML directories + S3 artifacts for those slugs are removed in the same
13
+ -- PR's commit. The sync-catalog-db.ts script also deletes retired builtin
14
+ -- rows on every deploy as a belt-and-suspenders invariant, but this migration
15
+ -- cleans them up explicitly on the stage that applies it first.
16
+ --
17
+ -- Apply manually (matches the 0018+ hand-rolled convention):
18
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0030_retire_composition_primitives.sql
19
+ --
20
+ -- Drift detection:
21
+ -- pnpm db:migrate-manual
22
+ --
23
+ -- Idempotency:
24
+ -- DELETEs are naturally idempotent; the marker view uses CREATE OR REPLACE.
25
+ --
26
+ -- creates: public.view_composition_primitives_retired
27
+
28
+ -- Drop any agent-level installs first so no agent keeps pointing at a slug
29
+ -- the catalog no longer exposes. agent_skills.skill_id is the slug text,
30
+ -- no FK -- direct DELETE is safe.
31
+ DELETE FROM agent_skills
32
+ WHERE skill_id IN ('frame', 'synthesize', 'gather', 'compound');
33
+
34
+ -- Tenant-level installs next.
35
+ DELETE FROM tenant_skills
36
+ WHERE skill_id IN ('frame', 'synthesize', 'gather', 'compound');
37
+
38
+ -- Finally drop the catalog rows themselves.
39
+ DELETE FROM skill_catalog
40
+ WHERE slug IN ('frame', 'synthesize', 'gather', 'compound');
41
+
42
+ -- Marker view — lets the db-migrate-manual drift reporter confirm this
43
+ -- migration applied. Cheap and isolated; the view returns the apply time
44
+ -- so operators can also audit when retirement happened on each stage.
45
+ CREATE OR REPLACE VIEW public.view_composition_primitives_retired AS
46
+ SELECT
47
+ NOW() AS retired_at,
48
+ ARRAY['frame', 'synthesize', 'gather', 'compound']::text[] AS retired_slugs;
@@ -0,0 +1,131 @@
1
+ -- U5 (narrowed): drop retired thread_comments table + two orphan indices.
2
+ --
3
+ -- Plan reference:
4
+ -- docs/plans/2026-04-24-002-refactor-thread-detail-pre-launch-cleanup-plan.md
5
+ -- (U5 destructive migration; original scope also listed `artifacts` and
6
+ -- `message_artifacts`, but a fresh survey found those tables are still
7
+ -- load-bearing — `Artifact` GraphQL type, full CRUD resolvers, and mobile
8
+ -- `Message.durableArtifact` rendering are all live. Narrowed scope here.)
9
+ --
10
+ -- What this drops:
11
+ -- 1. public.thread_comments — retired by U2 (escalateThread/delegateThread
12
+ -- refactored onto thread_turns kind=system_event). Live writes are
13
+ -- gone; tests assert no inserts; only retired-comment doc strings
14
+ -- remain in the resolvers.
15
+ -- 2. public.idx_threads_tenant_status — orphaned. Admin U7 retired the
16
+ -- list-view filter that used this index; no other call site reads it.
17
+ -- The `thread.status` column itself remains (Strands
18
+ -- `update_thread_status` skill still writes it).
19
+ -- 3. public.idx_threads_parent_id — orphaned. Parent/child thread
20
+ -- queries were retired with the GraphQL `Thread.parent` /
21
+ -- `Thread.children` fields; the `parent_id` column remains for now
22
+ -- (no consumer reads it but it's recoverable from row data if needed).
23
+ --
24
+ -- What this preserves:
25
+ -- - public.thread.status column (still mutated by the Strands skill).
26
+ -- - public.thread.parent_id column (orphan but cheap to keep).
27
+ -- - public.artifacts and public.message_artifacts tables and all their
28
+ -- CRUD resolvers + Drizzle declarations.
29
+ --
30
+ -- Recoverability:
31
+ -- Pre-drop, this migration uses `aws_s3.query_export_to_s3` to snapshot
32
+ -- `thread_comments` rows to s3://thinkwork-${stage}-backups/pre-drop/.
33
+ -- Provisioned by U13 (terraform/modules/data/s3-backups-bucket +
34
+ -- terraform/modules/data/aurora-postgres aws_s3 IAM role). The
35
+ -- `aws_s3` extension itself is enabled by drizzle/0028_aws_s3_extension.sql.
36
+ -- Required role association feature_name = "s3Export" must already be
37
+ -- attached (operator confirms via the post-deploy runbook before
38
+ -- applying this migration).
39
+ --
40
+ -- Apply manually (matches the 0018+ hand-rolled convention):
41
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0031_thread_cleanup_drops.sql
42
+ --
43
+ -- The `${stage}` literal in the S3 URI below must be substituted at
44
+ -- apply time (psql does not expand env vars in SQL literals). Replace
45
+ -- with the target deploy stage before running, or use psql variables:
46
+ -- psql "$DATABASE_URL" -v stage=dev -f .../0031_thread_cleanup_drops.sql
47
+ -- and reference `:'stage'` in the snapshot lines (see SET BLOCK below).
48
+ --
49
+ -- Drift detection:
50
+ -- pnpm db:migrate-manual reports `drops:` markers as DROPPED (target
51
+ -- table/index absent) or STILL_PRESENT (target still in DB). After
52
+ -- apply, the markers below should report DROPPED.
53
+ --
54
+ -- Pre-migration invariants:
55
+ -- - aws_s3 extension installed (\dx aws_s3).
56
+ -- - Aurora cluster has the `feature_name = "s3Export"` role association
57
+ -- to a role that grants s3:PutObject on
58
+ -- thinkwork-${stage}-backups/pre-drop/*.
59
+ -- - Caller has rds_superuser (required for cross-schema DROP CASCADE
60
+ -- paths and aws_s3 calls).
61
+ --
62
+ -- Rollback runbook:
63
+ -- 1. Recover thread_comments rows from
64
+ -- s3://thinkwork-${stage}-backups/pre-drop/thread_comments_<date>.csv.
65
+ -- 2. Recreate the table from the prior schema definition (see
66
+ -- packages/database-pg/src/schema/threads.ts at commit before this
67
+ -- migration; threadComments table block).
68
+ -- 3. `\copy public.thread_comments FROM '<csv>' WITH (FORMAT csv, HEADER true);`
69
+ -- 4. Re-add `idx_threads_tenant_status` and `idx_threads_parent_id`
70
+ -- with `CREATE INDEX CONCURRENTLY ...` if needed (rare — the
71
+ -- indices weren't read by any production path).
72
+ --
73
+ -- drops: public.thread_comments
74
+ -- drops: public.idx_threads_tenant_status
75
+ -- drops: public.idx_threads_parent_id
76
+
77
+ \set ON_ERROR_STOP on
78
+
79
+ -- Default stage to 'dev' so accidental copy/paste runs don't write to a
80
+ -- mis-named bucket. Override with `psql -v stage=prod ...`.
81
+ \if :{?stage}
82
+ \else
83
+ \set stage dev
84
+ \endif
85
+
86
+ BEGIN;
87
+
88
+ -- Fail fast on lock contention rather than wedging the cluster behind
89
+ -- long-held locks. thread_comments has no production traffic post-U2 so
90
+ -- a 5s wait is more than sufficient.
91
+ SET LOCAL lock_timeout = '5s';
92
+ SET LOCAL statement_timeout = '60s';
93
+
94
+ -- ---------------------------------------------------------------------------
95
+ -- Pre-drop snapshot to S3 (recoverable forever; lifecycle policy on the
96
+ -- bucket expires pre-drop/ objects after 90 days).
97
+ -- ---------------------------------------------------------------------------
98
+
99
+ SELECT aws_s3.query_export_to_s3(
100
+ 'SELECT * FROM public.thread_comments',
101
+ aws_commons.create_s3_uri(
102
+ 'thinkwork-' || :'stage' || '-backups',
103
+ 'pre-drop/thread_comments_2026_04_24.csv',
104
+ current_setting('cluster_region', true)
105
+ ),
106
+ options := 'format csv, header true'
107
+ );
108
+
109
+ -- ---------------------------------------------------------------------------
110
+ -- Drop the orphan indices first. DROP INDEX is metadata-only on Aurora
111
+ -- Postgres so it's nearly free; doing it before the table drop keeps the
112
+ -- transaction's order-of-operations explicit.
113
+ -- ---------------------------------------------------------------------------
114
+
115
+ DROP INDEX IF EXISTS public.idx_threads_tenant_status;
116
+ DROP INDEX IF EXISTS public.idx_threads_parent_id;
117
+
118
+ -- ---------------------------------------------------------------------------
119
+ -- Drop thread_comments. CASCADE removes any incidental FKs from other
120
+ -- tables that referenced thread_comments (none expected at this point —
121
+ -- the U2 refactor moved all callers off this table).
122
+ -- ---------------------------------------------------------------------------
123
+
124
+ DROP TABLE IF EXISTS public.thread_comments CASCADE;
125
+
126
+ COMMIT;
127
+
128
+ -- Post-apply verification (run as a separate statement, outside the txn):
129
+ -- \dt public.thread_comments -- should report no relation found
130
+ -- \d public.threads -- should not list idx_threads_tenant_status or idx_threads_parent_id
131
+ -- pnpm db:migrate-manual -- the three `drops:` markers above should report DROPPED
@@ -0,0 +1,24 @@
1
+ -- 0032_add_browser_automation_template_config.sql
2
+ -- Add template-level Browser Automation opt-in metadata and catalog entry.
3
+ --
4
+ -- Manual migration marker for drift reporter:
5
+ -- creates-column: public.agent_templates.browser
6
+
7
+ ALTER TABLE "agent_templates"
8
+ ADD COLUMN IF NOT EXISTS "browser" jsonb;
9
+
10
+ INSERT INTO "capability_catalog" ("slug", "type", "source", "implementation_ref", "spec")
11
+ VALUES
12
+ (
13
+ 'browser_automation', 'tool', 'builtin',
14
+ jsonb_build_object('module_path', 'browser_automation_tool', 'class_name', 'BrowserAutomationTool'),
15
+ jsonb_build_object(
16
+ 'display_name', 'Browser Automation',
17
+ 'description', 'Control a managed AgentCore Browser session with Nova Act for website workflows.'
18
+ )
19
+ )
20
+ ON CONFLICT ("type", "source", "slug") DO UPDATE
21
+ SET
22
+ "implementation_ref" = EXCLUDED."implementation_ref",
23
+ "spec" = EXCLUDED."spec",
24
+ "updated_at" = now();
@@ -0,0 +1,32 @@
1
+ -- Agent operation leases for fat-folder import/swap serialization.
2
+ -- creates: public.agent_operation_leases
3
+ -- creates: public.idx_agent_operation_leases_agent_expires
4
+ -- creates: public.idx_agent_operation_leases_kind
5
+ -- creates: public.folder_bundle_import_rate_limits
6
+
7
+ CREATE TABLE IF NOT EXISTS "agent_operation_leases" (
8
+ "agent_id" uuid NOT NULL REFERENCES "agents"("id") ON DELETE cascade,
9
+ "lease_id" uuid NOT NULL DEFAULT gen_random_uuid(),
10
+ "lease_kind" text NOT NULL,
11
+ "owner_kind" text NOT NULL,
12
+ "owner_id" text,
13
+ "acquired_at" timestamp with time zone NOT NULL DEFAULT now(),
14
+ "last_heartbeat_at" timestamp with time zone NOT NULL DEFAULT now(),
15
+ "expires_at" timestamp with time zone NOT NULL,
16
+ CONSTRAINT "agent_operation_leases_pkey" PRIMARY KEY ("agent_id", "lease_id"),
17
+ CONSTRAINT "agent_operation_leases_kind_check" CHECK ("lease_kind" IN ('shared', 'exclusive'))
18
+ );
19
+
20
+ CREATE INDEX IF NOT EXISTS "idx_agent_operation_leases_agent_expires"
21
+ ON "agent_operation_leases" ("agent_id", "expires_at");
22
+
23
+ CREATE INDEX IF NOT EXISTS "idx_agent_operation_leases_kind"
24
+ ON "agent_operation_leases" ("agent_id", "lease_kind");
25
+
26
+ CREATE TABLE IF NOT EXISTS "folder_bundle_import_rate_limits" (
27
+ "tenant_id" uuid NOT NULL REFERENCES "tenants"("id") ON DELETE cascade,
28
+ "utc_hour" timestamp with time zone NOT NULL,
29
+ "import_count" integer NOT NULL DEFAULT 0,
30
+ "updated_at" timestamp with time zone NOT NULL DEFAULT now(),
31
+ CONSTRAINT "folder_bundle_import_rate_limits_pkey" PRIMARY KEY ("tenant_id", "utc_hour")
32
+ );
@@ -0,0 +1,116 @@
1
+ -- creates: public.agent_workspace_runs
2
+ -- creates: public.agent_workspace_events
3
+ -- creates: public.agent_workspace_waits
4
+ -- creates-column: public.tenants.workspace_orchestration_enabled
5
+
6
+ ALTER TABLE public.tenants
7
+ ADD COLUMN IF NOT EXISTS workspace_orchestration_enabled boolean NOT NULL DEFAULT false;
8
+
9
+ CREATE TABLE IF NOT EXISTS public.agent_workspace_runs (
10
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
11
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id),
12
+ agent_id uuid NOT NULL REFERENCES public.agents(id),
13
+ target_path text NOT NULL DEFAULT '',
14
+ status text NOT NULL DEFAULT 'pending',
15
+ source_object_key text,
16
+ request_object_key text,
17
+ current_wakeup_request_id uuid REFERENCES public.agent_wakeup_requests(id),
18
+ current_thread_turn_id uuid REFERENCES public.thread_turns(id),
19
+ parent_run_id uuid REFERENCES public.agent_workspace_runs(id),
20
+ depth integer NOT NULL DEFAULT 0,
21
+ inbox_write_count integer NOT NULL DEFAULT 0,
22
+ wakeup_retry_count integer NOT NULL DEFAULT 0,
23
+ last_event_at timestamptz NOT NULL DEFAULT now(),
24
+ completed_at timestamptz,
25
+ created_at timestamptz NOT NULL DEFAULT now(),
26
+ updated_at timestamptz NOT NULL DEFAULT now(),
27
+ CONSTRAINT agent_workspace_runs_status_check CHECK (
28
+ status IN (
29
+ 'pending',
30
+ 'claimed',
31
+ 'processing',
32
+ 'completed',
33
+ 'failed',
34
+ 'awaiting_review',
35
+ 'awaiting_subrun',
36
+ 'cancelled',
37
+ 'expired'
38
+ )
39
+ )
40
+ );
41
+
42
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_runs_agent_target_status
43
+ ON public.agent_workspace_runs (tenant_id, agent_id, target_path, status);
44
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_runs_status_last_event
45
+ ON public.agent_workspace_runs (status, last_event_at);
46
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_runs_parent
47
+ ON public.agent_workspace_runs (parent_run_id);
48
+
49
+ CREATE TABLE IF NOT EXISTS public.agent_workspace_events (
50
+ id bigserial PRIMARY KEY,
51
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id),
52
+ agent_id uuid REFERENCES public.agents(id),
53
+ run_id uuid REFERENCES public.agent_workspace_runs(id),
54
+ event_type text NOT NULL,
55
+ idempotency_key text NOT NULL,
56
+ bucket text NOT NULL,
57
+ source_object_key text NOT NULL,
58
+ audit_object_key text,
59
+ object_etag text,
60
+ object_version_id text,
61
+ sequencer text NOT NULL,
62
+ mirror_status text NOT NULL DEFAULT 'ok',
63
+ reason text,
64
+ payload jsonb,
65
+ actor_type text,
66
+ actor_id text,
67
+ parent_event_id bigint REFERENCES public.agent_workspace_events(id),
68
+ created_at timestamptz NOT NULL DEFAULT now(),
69
+ CONSTRAINT agent_workspace_events_type_check CHECK (
70
+ event_type IN (
71
+ 'work.requested',
72
+ 'run.started',
73
+ 'run.blocked',
74
+ 'run.completed',
75
+ 'run.failed',
76
+ 'review.requested',
77
+ 'memory.changed',
78
+ 'event.rejected'
79
+ )
80
+ ),
81
+ CONSTRAINT agent_workspace_events_mirror_status_check CHECK (
82
+ mirror_status IN ('ok', 'failed')
83
+ )
84
+ );
85
+
86
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_agent_workspace_events_tenant_idempotency
87
+ ON public.agent_workspace_events (tenant_id, idempotency_key);
88
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_events_run_created
89
+ ON public.agent_workspace_events (run_id, created_at);
90
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_events_pending
91
+ ON public.agent_workspace_events (tenant_id, event_type, created_at);
92
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_events_parent
93
+ ON public.agent_workspace_events (parent_event_id);
94
+
95
+ CREATE TABLE IF NOT EXISTS public.agent_workspace_waits (
96
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
97
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id),
98
+ waiting_run_id uuid NOT NULL REFERENCES public.agent_workspace_runs(id),
99
+ wait_for_run_id uuid REFERENCES public.agent_workspace_runs(id),
100
+ wait_for_target_path text,
101
+ status text NOT NULL DEFAULT 'waiting',
102
+ created_at timestamptz NOT NULL DEFAULT now(),
103
+ satisfied_at timestamptz,
104
+ CONSTRAINT agent_workspace_waits_status_check CHECK (
105
+ status IN ('waiting', 'satisfied', 'cancelled', 'expired')
106
+ ),
107
+ CONSTRAINT agent_workspace_waits_single_wait_shape CHECK (
108
+ wait_for_run_id IS NOT NULL OR wait_for_target_path IS NOT NULL
109
+ )
110
+ );
111
+
112
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_waits_waiting
113
+ ON public.agent_workspace_waits (tenant_id, waiting_run_id, status);
114
+ CREATE INDEX IF NOT EXISTS idx_agent_workspace_waits_wait_for
115
+ ON public.agent_workspace_waits (tenant_id, wait_for_run_id, status);
116
+
@@ -0,0 +1,19 @@
1
+ -- creates-constraint: public.agent_workspace_events.agent_workspace_events_type_check
2
+
3
+ ALTER TABLE public.agent_workspace_events
4
+ DROP CONSTRAINT IF EXISTS agent_workspace_events_type_check;
5
+
6
+ ALTER TABLE public.agent_workspace_events
7
+ ADD CONSTRAINT agent_workspace_events_type_check CHECK (
8
+ event_type IN (
9
+ 'work.requested',
10
+ 'run.started',
11
+ 'run.blocked',
12
+ 'run.completed',
13
+ 'run.failed',
14
+ 'review.requested',
15
+ 'review.responded',
16
+ 'memory.changed',
17
+ 'event.rejected'
18
+ )
19
+ );
@@ -0,0 +1,152 @@
1
+ -- User-scoped memory/wiki migration.
2
+ --
3
+ -- Plan:
4
+ -- docs/plans/2026-04-24-001-refactor-user-scope-memory-and-hindsight-ingest-plan.md
5
+ --
6
+ -- Apply manually:
7
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0036_user_scoped_memory_wiki.sql
8
+ --
9
+ -- This is hand-rolled because ordering matters:
10
+ -- - validate user-owned threads can be backfilled from agents.human_pair_id
11
+ -- - add threads.user_id while keeping threads.agent_id
12
+ -- - truncate rebuildable wiki data before switching owner_id FKs
13
+ -- - skip that truncate on re-run once the old agent-owned FKs are gone
14
+ -- - add per-user external compile opt-in
15
+ --
16
+ -- creates-column: public.threads.user_id
17
+ -- creates-column: public.users.wiki_compile_external_enabled
18
+ -- creates: public.idx_threads_tenant_user
19
+ -- creates-constraint: public.threads.threads_user_id_users_id_fk
20
+ -- Wiki FK constraints below: schema/table paths updated post-0089. FK constraint
21
+ -- names retain their original 'wiki_<table>_owner_id_users_id_fk' form (0089 did not
22
+ -- rename FK constraints), but their pg_constraint namespace path moved to wiki.* when
23
+ -- their parent tables moved. Old `public.wiki_*` paths would report MISSING from the
24
+ -- drift reporter after 0089 applies.
25
+ -- creates-constraint: wiki.pages.wiki_pages_owner_id_users_id_fk
26
+ -- creates-constraint: wiki.unresolved_mentions.wiki_unresolved_mentions_owner_id_users_id_fk
27
+ -- creates-constraint: wiki.compile_jobs.wiki_compile_jobs_owner_id_users_id_fk
28
+ -- creates-constraint: wiki.compile_cursors.wiki_compile_cursors_owner_id_users_id_fk
29
+ -- creates-constraint: wiki.places.wiki_places_owner_id_users_id_fk
30
+
31
+ \set ON_ERROR_STOP on
32
+
33
+ BEGIN;
34
+
35
+ SET LOCAL lock_timeout = '5s';
36
+ SET LOCAL statement_timeout = '120s';
37
+
38
+ DO $$
39
+ DECLARE
40
+ orphan_count integer;
41
+ BEGIN
42
+ SELECT COUNT(*)
43
+ INTO orphan_count
44
+ FROM public.threads t
45
+ JOIN public.agents a ON a.id = t.agent_id
46
+ WHERE a.source = 'user'
47
+ AND a.human_pair_id IS NULL;
48
+
49
+ IF orphan_count > 0 THEN
50
+ RAISE EXCEPTION
51
+ 'Cannot backfill public.threads.user_id: % user-owned agent thread(s) lack agents.human_pair_id',
52
+ orphan_count;
53
+ END IF;
54
+ END $$;
55
+
56
+ ALTER TABLE public.threads
57
+ ADD COLUMN IF NOT EXISTS user_id uuid;
58
+
59
+ UPDATE public.threads t
60
+ SET user_id = a.human_pair_id
61
+ FROM public.agents a
62
+ WHERE a.id = t.agent_id
63
+ AND a.source = 'user'
64
+ AND t.user_id IS NULL;
65
+
66
+ ALTER TABLE public.threads
67
+ DROP CONSTRAINT IF EXISTS threads_user_id_users_id_fk;
68
+
69
+ ALTER TABLE public.threads
70
+ ADD CONSTRAINT threads_user_id_users_id_fk
71
+ FOREIGN KEY (user_id) REFERENCES public.users(id);
72
+
73
+ CREATE INDEX IF NOT EXISTS idx_threads_tenant_user
74
+ ON public.threads (tenant_id, user_id);
75
+
76
+ ALTER TABLE public.users
77
+ ADD COLUMN IF NOT EXISTS wiki_compile_external_enabled boolean NOT NULL DEFAULT false;
78
+
79
+ DO $$
80
+ DECLARE
81
+ old_wiki_owner_fk_count integer;
82
+ BEGIN
83
+ SELECT COUNT(*)
84
+ INTO old_wiki_owner_fk_count
85
+ FROM pg_catalog.pg_constraint c
86
+ JOIN pg_catalog.pg_class r ON r.oid = c.conrelid
87
+ JOIN pg_catalog.pg_namespace n ON n.oid = r.relnamespace
88
+ WHERE n.nspname = 'public'
89
+ AND c.conname IN (
90
+ 'wiki_pages_owner_id_agents_id_fk',
91
+ 'wiki_unresolved_mentions_owner_id_agents_id_fk',
92
+ 'wiki_compile_jobs_owner_id_agents_id_fk',
93
+ 'wiki_compile_cursors_owner_id_agents_id_fk',
94
+ 'wiki_places_owner_id_agents_id_fk'
95
+ );
96
+
97
+ IF old_wiki_owner_fk_count > 0 THEN
98
+ TRUNCATE TABLE
99
+ public.wiki_pages,
100
+ public.wiki_unresolved_mentions,
101
+ public.wiki_compile_jobs,
102
+ public.wiki_compile_cursors,
103
+ public.wiki_places
104
+ CASCADE;
105
+ END IF;
106
+ END $$;
107
+
108
+ ALTER TABLE public.wiki_pages
109
+ DROP CONSTRAINT IF EXISTS wiki_pages_owner_id_agents_id_fk;
110
+ ALTER TABLE public.wiki_unresolved_mentions
111
+ DROP CONSTRAINT IF EXISTS wiki_unresolved_mentions_owner_id_agents_id_fk;
112
+ ALTER TABLE public.wiki_compile_jobs
113
+ DROP CONSTRAINT IF EXISTS wiki_compile_jobs_owner_id_agents_id_fk;
114
+ ALTER TABLE public.wiki_compile_cursors
115
+ DROP CONSTRAINT IF EXISTS wiki_compile_cursors_owner_id_agents_id_fk;
116
+ ALTER TABLE public.wiki_places
117
+ DROP CONSTRAINT IF EXISTS wiki_places_owner_id_agents_id_fk;
118
+
119
+ ALTER TABLE public.wiki_pages
120
+ DROP CONSTRAINT IF EXISTS wiki_pages_owner_id_users_id_fk;
121
+ ALTER TABLE public.wiki_unresolved_mentions
122
+ DROP CONSTRAINT IF EXISTS wiki_unresolved_mentions_owner_id_users_id_fk;
123
+ ALTER TABLE public.wiki_compile_jobs
124
+ DROP CONSTRAINT IF EXISTS wiki_compile_jobs_owner_id_users_id_fk;
125
+ ALTER TABLE public.wiki_compile_cursors
126
+ DROP CONSTRAINT IF EXISTS wiki_compile_cursors_owner_id_users_id_fk;
127
+ ALTER TABLE public.wiki_places
128
+ DROP CONSTRAINT IF EXISTS wiki_places_owner_id_users_id_fk;
129
+
130
+ ALTER TABLE public.wiki_pages
131
+ ADD CONSTRAINT wiki_pages_owner_id_users_id_fk
132
+ FOREIGN KEY (owner_id) REFERENCES public.users(id);
133
+ ALTER TABLE public.wiki_unresolved_mentions
134
+ ADD CONSTRAINT wiki_unresolved_mentions_owner_id_users_id_fk
135
+ FOREIGN KEY (owner_id) REFERENCES public.users(id);
136
+ ALTER TABLE public.wiki_compile_jobs
137
+ ADD CONSTRAINT wiki_compile_jobs_owner_id_users_id_fk
138
+ FOREIGN KEY (owner_id) REFERENCES public.users(id);
139
+ ALTER TABLE public.wiki_compile_cursors
140
+ ADD CONSTRAINT wiki_compile_cursors_owner_id_users_id_fk
141
+ FOREIGN KEY (owner_id) REFERENCES public.users(id);
142
+ ALTER TABLE public.wiki_places
143
+ ADD CONSTRAINT wiki_places_owner_id_users_id_fk
144
+ FOREIGN KEY (owner_id) REFERENCES public.users(id);
145
+
146
+ COMMIT;
147
+
148
+ -- Post-apply verification:
149
+ -- SELECT COUNT(*) FROM public.threads t JOIN public.agents a ON a.id = t.agent_id
150
+ -- WHERE a.source = 'user' AND t.user_id IS NULL; -- should be 0
151
+ -- SELECT COUNT(*) FROM public.wiki_pages; -- should be 0 before journal reload
152
+ -- \d public.wiki_pages -- owner_id FK should reference users(id)
@@ -0,0 +1,34 @@
1
+ -- Activation Agent operating-model profile columns.
2
+ --
3
+ -- Plan:
4
+ -- docs/plans/2026-04-26-001-feat-agent-activation-operating-model-plan.md
5
+ --
6
+ -- Apply manually:
7
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0037_user_profile_operating_model.sql
8
+ --
9
+ -- Purely additive nullable/defaulted columns on user_profiles.
10
+ --
11
+ -- creates-column: public.user_profiles.operating_model
12
+ -- creates-column: public.user_profiles.operating_model_history
13
+
14
+ \set ON_ERROR_STOP on
15
+
16
+ BEGIN;
17
+
18
+ SET LOCAL lock_timeout = '5s';
19
+ SET LOCAL statement_timeout = '120s';
20
+
21
+ DO $$
22
+ BEGIN
23
+ IF to_regclass('public.user_profiles') IS NULL THEN
24
+ RAISE EXCEPTION 'public.user_profiles does not exist';
25
+ END IF;
26
+ END $$;
27
+
28
+ ALTER TABLE public.user_profiles
29
+ ADD COLUMN IF NOT EXISTS operating_model jsonb;
30
+
31
+ ALTER TABLE public.user_profiles
32
+ ADD COLUMN IF NOT EXISTS operating_model_history jsonb[] NOT NULL DEFAULT '{}'::jsonb[];
33
+
34
+ COMMIT;
@@ -0,0 +1,41 @@
1
+ -- Agent runtime selector for parallel AgentCore runtimes.
2
+ --
3
+ -- Plan:
4
+ -- docs/plans/2026-04-26-009-feat-pi-agent-runtime-parallel-substrate-plan.md
5
+ --
6
+ -- Apply manually:
7
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0042_agent_runtime_selector.sql
8
+ --
9
+ -- creates-column: public.agents.runtime
10
+ -- creates-column: public.agent_templates.runtime
11
+ -- creates-constraint: public.agents.agents_runtime_check
12
+ -- creates-constraint: public.agent_templates.agent_templates_runtime_check
13
+
14
+ \set ON_ERROR_STOP on
15
+
16
+ BEGIN;
17
+
18
+ SET LOCAL lock_timeout = '5s';
19
+ SET LOCAL statement_timeout = '120s';
20
+
21
+ ALTER TABLE public.agents
22
+ ADD COLUMN IF NOT EXISTS runtime text NOT NULL DEFAULT 'strands';
23
+
24
+ ALTER TABLE public.agent_templates
25
+ ADD COLUMN IF NOT EXISTS runtime text NOT NULL DEFAULT 'strands';
26
+
27
+ ALTER TABLE public.agents
28
+ DROP CONSTRAINT IF EXISTS agents_runtime_check;
29
+
30
+ ALTER TABLE public.agents
31
+ ADD CONSTRAINT agents_runtime_check
32
+ CHECK (runtime IN ('strands', 'pi'));
33
+
34
+ ALTER TABLE public.agent_templates
35
+ DROP CONSTRAINT IF EXISTS agent_templates_runtime_check;
36
+
37
+ ALTER TABLE public.agent_templates
38
+ ADD CONSTRAINT agent_templates_runtime_check
39
+ CHECK (runtime IN ('strands', 'pi'));
40
+
41
+ COMMIT;
@@ -0,0 +1,48 @@
1
+ -- Normalize wiki_pages.search_tsv tokenization for punctuation-separated terms.
2
+ --
3
+ -- Plan:
4
+ -- docs/plans/2026-04-27-001-fix-mobile-wiki-search-tsv-plan.md
5
+ --
6
+ -- Apply manually:
7
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0043_wiki_search_tsv_tokenization.sql
8
+ --
9
+ -- This is hand-rolled because generated column expressions cannot be changed
10
+ -- in place on all supported Postgres/Aurora versions. search_tsv is derived
11
+ -- data, so rebuilding the column and its GIN index is safe.
12
+ --
13
+ -- Schema/index paths updated post-0089 (wiki schema extraction renamed the column's
14
+ -- parent table to wiki.pages and renamed the index to idx_pages_search_tsv).
15
+ -- creates-column: wiki.pages.search_tsv
16
+ -- creates: wiki.idx_pages_search_tsv
17
+
18
+ \set ON_ERROR_STOP on
19
+
20
+ BEGIN;
21
+
22
+ SET LOCAL lock_timeout = '5s';
23
+ SET LOCAL statement_timeout = '120s';
24
+
25
+ DROP INDEX IF EXISTS public.idx_wiki_pages_search_tsv;
26
+
27
+ ALTER TABLE public.wiki_pages
28
+ DROP COLUMN IF EXISTS search_tsv;
29
+
30
+ ALTER TABLE public.wiki_pages
31
+ ADD COLUMN search_tsv tsvector
32
+ GENERATED ALWAYS AS (
33
+ to_tsvector(
34
+ 'english'::regconfig,
35
+ regexp_replace(
36
+ coalesce(title, '') || ' ' || coalesce(summary, '') || ' ' || coalesce(body_md, ''),
37
+ '[^[:alnum:]]+',
38
+ ' ',
39
+ 'g'
40
+ )
41
+ )
42
+ ) STORED;
43
+
44
+ CREATE INDEX idx_wiki_pages_search_tsv
45
+ ON public.wiki_pages
46
+ USING gin (search_tsv);
47
+
48
+ COMMIT;
@@ -0,0 +1,7 @@
1
+ -- creates-column: public.agent_templates.web_search
2
+ ALTER TABLE "agent_templates"
3
+ ADD COLUMN IF NOT EXISTS "web_search" jsonb DEFAULT '{"enabled": true}'::jsonb;
4
+
5
+ UPDATE "agent_templates"
6
+ SET "web_search" = '{"enabled": true}'::jsonb
7
+ WHERE "web_search" IS NULL;
@@ -0,0 +1,7 @@
1
+ -- creates-column: public.agent_templates.send_email
2
+ ALTER TABLE "agent_templates"
3
+ ADD COLUMN IF NOT EXISTS "send_email" jsonb DEFAULT '{"enabled": true}'::jsonb;
4
+
5
+ UPDATE "agent_templates"
6
+ SET "send_email" = '{"enabled": true}'::jsonb
7
+ WHERE "send_email" IS NULL;