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,37 @@
1
+ -- Hand-rolled — apply manually to dev via:
2
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0088_compliance_event_types_finance_pilot.sql
3
+ --
4
+ -- See docs/solutions/workflow-issues/manually-applied-drizzle-migrations-drift-from-dev-2026-04-21.md
5
+ --
6
+ -- U6 of docs/plans/2026-05-14-002-feat-finance-analysis-pilot-plan.md.
7
+ -- Extends the event_type prefix CHECK constraints on compliance.audit_outbox
8
+ -- and compliance.audit_events to recognize three new finance-pilot event-type
9
+ -- families: attachment.*, skill.*, output.* — so attachment.received,
10
+ -- skill.activated, and output.artifact_produced can be inserted.
11
+ --
12
+ -- The new constraints are renamed *_v2 so the drift reporter at
13
+ -- scripts/db-migrate-manual.sh can verify application (probing by name).
14
+ -- The old *_prefix constraints are DROPped in the same transaction.
15
+ --
16
+ -- creates-constraint: compliance.audit_outbox.audit_outbox_event_type_prefix_v2
17
+ -- creates-constraint: compliance.audit_events.audit_events_event_type_prefix_v2
18
+
19
+ BEGIN;
20
+
21
+ ALTER TABLE compliance.audit_outbox
22
+ DROP CONSTRAINT IF EXISTS audit_outbox_event_type_prefix;
23
+
24
+ ALTER TABLE compliance.audit_outbox
25
+ ADD CONSTRAINT audit_outbox_event_type_prefix_v2 CHECK (
26
+ event_type ~ '^(auth|user|agent|mcp|workspace|data|policy|approval|attachment|skill|output)\.'
27
+ );
28
+
29
+ ALTER TABLE compliance.audit_events
30
+ DROP CONSTRAINT IF EXISTS audit_events_event_type_prefix;
31
+
32
+ ALTER TABLE compliance.audit_events
33
+ ADD CONSTRAINT audit_events_event_type_prefix_v2 CHECK (
34
+ event_type ~ '^(auth|user|agent|mcp|workspace|data|policy|approval|attachment|skill|output)\.'
35
+ );
36
+
37
+ COMMIT;
@@ -0,0 +1,81 @@
1
+ -- creates: public.view_eval_seed_maniflow_cleanup_0089
2
+ --
3
+ -- Removes maniflow-era yaml-seed evaluation test cases from deployed tenants.
4
+ --
5
+ -- Historical eval_results rows keep their run payloads but detach from the
6
+ -- deleted test case rows first because eval_results.test_case_id is nullable
7
+ -- and the FK is non-cascading.
8
+ --
9
+ -- Apply manually before deploy:
10
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0089_remove_maniflow_eval_seeds.sql
11
+
12
+ \set ON_ERROR_STOP on
13
+
14
+ BEGIN;
15
+
16
+ WITH old_seed_cases AS (
17
+ SELECT id
18
+ FROM eval_test_cases
19
+ WHERE source = 'yaml-seed'
20
+ AND category IN (
21
+ 'email-calendar',
22
+ 'knowledge-base',
23
+ 'mcp-gateway',
24
+ 'red-team',
25
+ 'sub-agents',
26
+ 'brain-onepager-citations',
27
+ 'brain-triage-routing',
28
+ 'brain-trust-gradient-promotion',
29
+ 'brain-write-back-capture',
30
+ 'thread-management',
31
+ 'tool-safety',
32
+ 'workspace-memory',
33
+ 'workspace-routing'
34
+ )
35
+ )
36
+ UPDATE eval_results
37
+ SET test_case_id = NULL
38
+ WHERE test_case_id IN (SELECT id FROM old_seed_cases);
39
+
40
+ DELETE FROM eval_test_cases
41
+ WHERE source = 'yaml-seed'
42
+ AND category IN (
43
+ 'email-calendar',
44
+ 'knowledge-base',
45
+ 'mcp-gateway',
46
+ 'red-team',
47
+ 'sub-agents',
48
+ 'brain-onepager-citations',
49
+ 'brain-triage-routing',
50
+ 'brain-trust-gradient-promotion',
51
+ 'brain-write-back-capture',
52
+ 'thread-management',
53
+ 'tool-safety',
54
+ 'workspace-memory',
55
+ 'workspace-routing'
56
+ );
57
+
58
+ CREATE OR REPLACE VIEW public.view_eval_seed_maniflow_cleanup_0089 AS
59
+ SELECT 1 AS applied
60
+ WHERE NOT EXISTS (
61
+ SELECT 1
62
+ FROM eval_test_cases
63
+ WHERE source = 'yaml-seed'
64
+ AND category IN (
65
+ 'email-calendar',
66
+ 'knowledge-base',
67
+ 'mcp-gateway',
68
+ 'red-team',
69
+ 'sub-agents',
70
+ 'brain-onepager-citations',
71
+ 'brain-triage-routing',
72
+ 'brain-trust-gradient-promotion',
73
+ 'brain-write-back-capture',
74
+ 'thread-management',
75
+ 'tool-safety',
76
+ 'workspace-memory',
77
+ 'workspace-routing'
78
+ )
79
+ );
80
+
81
+ COMMIT;
@@ -0,0 +1,315 @@
1
+ -- 0089_wiki_schema_extraction.sql
2
+ --
3
+ -- Phase A of the wiki + brain schema extraction (PR 1 of 3-PR arc).
4
+ -- Moves 9 wiki tables from public.* into the new `wiki.*` Postgres schema,
5
+ -- drops the redundant `wiki_` prefix from internal table names, renames
6
+ -- indexes/constraints to match, and creates compat views in public.* so old
7
+ -- bundled Lambda code keeps reading during the deploy bridge window.
8
+ --
9
+ -- Tables moved:
10
+ -- public.wiki_pages → wiki.pages
11
+ -- public.wiki_page_sections → wiki.page_sections
12
+ -- public.wiki_page_links → wiki.page_links
13
+ -- public.wiki_page_aliases → wiki.page_aliases
14
+ -- public.wiki_unresolved_mentions → wiki.unresolved_mentions
15
+ -- public.wiki_section_sources → wiki.section_sources
16
+ -- public.wiki_compile_jobs → wiki.compile_jobs
17
+ -- public.wiki_compile_cursors → wiki.compile_cursors
18
+ -- public.wiki_places → wiki.places
19
+ --
20
+ -- FK constraints follow their parent tables automatically (Postgres
21
+ -- preserves them across SET SCHEMA). Cross-schema FKs to public.tenants
22
+ -- and public.users continue to work — see Key Technical Decisions in the
23
+ -- plan for the rationale (compliance precedent stripped FKs for RTBF
24
+ -- isolation; wiki preserves them to honor 'keep functionality'). FK
25
+ -- constraint names retain their original 'wiki_<table>_*' prefix — a
26
+ -- cosmetic cleanup can come later. No FK-rename markers below.
27
+ --
28
+ -- Compat views: each table also gets a view in public.* aliasing the new
29
+ -- location. Old bundled Lambdas (graphql-http, wiki-compile,
30
+ -- wiki-bootstrap-import, memory-retain) continue reading via
31
+ -- `public.wiki_pages` during the deploy bridge window; new Lambdas read
32
+ -- `wiki.pages` directly. PR 3 (cleanup) drops the views once deploys
33
+ -- stabilize. Postgres simple views are auto-updatable, so any write paths
34
+ -- via the old names also work transparently.
35
+ --
36
+ -- Plan reference: docs/plans/2026-05-16-001-refactor-wiki-brain-schema-extraction-plan.md
37
+ -- Origin brainstorm: docs/brainstorms/2026-05-16-wiki-brain-schema-extraction-requirements.md
38
+ -- Pattern doc: docs/solutions/database-issues/feature-schema-extraction-pattern.md
39
+ --
40
+ -- Apply manually:
41
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0089_wiki_schema_extraction.sql
42
+ -- Then verify:
43
+ -- pnpm db:migrate-manual
44
+ -- psql -c "\dt wiki.*" -- 9 tables expected
45
+ -- psql -c "\dv public.wiki_*" -- 9 compat views expected
46
+ -- psql -c "\dt public.wiki_*" -- 0 tables expected
47
+ --
48
+ -- Inverse runbook (rollback): drop the views, then SET SCHEMA back, then
49
+ -- RENAME back. Indexes and constraints follow their parent table's schema
50
+ -- automatically. After SET SCHEMA moves the table to public, its indexes
51
+ -- live in public — so ALTER INDEX statements must qualify with `public.`,
52
+ -- not `wiki.`.
53
+ -- DROP VIEW IF EXISTS public.wiki_pages, public.wiki_page_sections, ...;
54
+ -- ALTER TABLE wiki.pages SET SCHEMA public; -- index moves to public too
55
+ -- ALTER TABLE public.pages RENAME TO wiki_pages;
56
+ -- ALTER INDEX public.idx_pages_owner RENAME TO idx_wiki_pages_owner; -- × 28 indexes
57
+ -- ... (× 9 tables, parent-last so FKs into pages are still valid through the move)
58
+ -- DROP SCHEMA wiki; -- last step; fails if any objects remain in wiki schema
59
+ --
60
+ -- Markers (consumed by scripts/db-migrate-manual.sh):
61
+ --
62
+ -- creates: wiki.pages
63
+ -- creates: wiki.page_sections
64
+ -- creates: wiki.page_links
65
+ -- creates: wiki.page_aliases
66
+ -- creates: wiki.unresolved_mentions
67
+ -- creates: wiki.section_sources
68
+ -- creates: wiki.compile_jobs
69
+ -- creates: wiki.compile_cursors
70
+ -- creates: wiki.places
71
+ -- creates: wiki.uq_pages_tenant_owner_type_slug
72
+ -- creates: wiki.idx_pages_tenant_owner_type_status
73
+ -- creates: wiki.idx_pages_owner
74
+ -- creates: wiki.idx_pages_last_compiled
75
+ -- creates: wiki.idx_pages_entity_subtype
76
+ -- creates: wiki.idx_pages_search_tsv
77
+ -- creates: wiki.idx_pages_parent
78
+ -- creates: wiki.idx_pages_place_id
79
+ -- creates: wiki.idx_pages_title_trgm
80
+ -- creates: wiki.uq_page_sections_page_slug
81
+ -- creates: wiki.idx_page_sections_page_position
82
+ -- creates: wiki.uq_page_links_from_to_kind
83
+ -- creates: wiki.idx_page_links_to
84
+ -- creates: wiki.idx_page_links_kind
85
+ -- creates: wiki.uq_page_aliases_page_alias
86
+ -- creates: wiki.idx_page_aliases_alias
87
+ -- creates: wiki.idx_page_aliases_alias_trgm
88
+ -- creates: wiki.uq_unresolved_mentions_scope_alias_status
89
+ -- creates: wiki.idx_unresolved_mentions_tenant_owner_status
90
+ -- creates: wiki.idx_unresolved_mentions_status_last_seen
91
+ -- creates: wiki.uq_section_sources_section_kind_ref
92
+ -- creates: wiki.idx_section_sources_kind_ref
93
+ -- creates: wiki.idx_compile_jobs_scope_status_created
94
+ -- creates: wiki.idx_compile_jobs_status_created
95
+ -- creates: wiki.idx_places_tenant_owner
96
+ -- creates: wiki.idx_places_parent
97
+ -- creates: wiki.uq_places_scope_google_place_id
98
+ -- creates-constraint: wiki.compile_cursors.compile_cursors_pkey
99
+ -- creates-constraint: wiki.unresolved_mentions.unresolved_mentions_entity_subtype_allowed
100
+ -- creates: wiki.compile_jobs_dedupe_key_unique
101
+ -- creates: public.wiki_pages
102
+ -- creates: public.wiki_page_sections
103
+ -- creates: public.wiki_page_links
104
+ -- creates: public.wiki_page_aliases
105
+ -- creates: public.wiki_unresolved_mentions
106
+ -- creates: public.wiki_section_sources
107
+ -- creates: public.wiki_compile_jobs
108
+ -- creates: public.wiki_compile_cursors
109
+ -- creates: public.wiki_places
110
+
111
+ \set ON_ERROR_STOP on
112
+
113
+ BEGIN;
114
+
115
+ -- Set timeouts BEFORE acquiring the advisory lock so the lock acquisition
116
+ -- itself is bounded. Without this ordering, a concurrent transaction holding
117
+ -- the same advisory lock would cause this migration to block indefinitely.
118
+ SET LOCAL lock_timeout = '30s';
119
+ SET LOCAL statement_timeout = '300s';
120
+
121
+ -- Serialize concurrent application attempts (two operators racing, automation
122
+ -- + operator overlap). Without the advisory lock, two transactions can both
123
+ -- pass the pre-flight invariants before either commits.
124
+ SELECT pg_advisory_xact_lock(hashtext('wiki_schema_extraction'));
125
+
126
+ -- Refuse to apply against an unexpected DB. Hand-rolled migrations are
127
+ -- applied by an operator and a stale DATABASE_URL pointing at a non-dev
128
+ -- target would create the schema in the wrong place.
129
+ DO $$
130
+ BEGIN
131
+ IF current_database() != 'thinkwork' THEN
132
+ RAISE EXCEPTION 'wrong database: %, expected thinkwork', current_database();
133
+ END IF;
134
+ END $$;
135
+
136
+ -- Pre-flight invariants: refuse to re-apply over a partially-completed
137
+ -- previous run. For each table, assert old name exists AND new name does
138
+ -- not. Symmetric checks across all 9 tables convert any partial-state
139
+ -- scenario into a clear pre-flight error rather than an opaque
140
+ -- mid-migration DDL crash.
141
+ DO $$
142
+ BEGIN
143
+ IF to_regclass('public.wiki_pages') IS NULL THEN
144
+ RAISE EXCEPTION 'pre-flight: public.wiki_pages does not exist';
145
+ END IF;
146
+ IF to_regclass('wiki.pages') IS NOT NULL THEN
147
+ RAISE EXCEPTION 'pre-flight: wiki.pages already exists — refusing to re-apply';
148
+ END IF;
149
+ IF to_regclass('public.wiki_page_sections') IS NULL THEN
150
+ RAISE EXCEPTION 'pre-flight: public.wiki_page_sections does not exist';
151
+ END IF;
152
+ IF to_regclass('wiki.page_sections') IS NOT NULL THEN
153
+ RAISE EXCEPTION 'pre-flight: wiki.page_sections already exists — refusing to re-apply';
154
+ END IF;
155
+ IF to_regclass('public.wiki_page_links') IS NULL THEN
156
+ RAISE EXCEPTION 'pre-flight: public.wiki_page_links does not exist';
157
+ END IF;
158
+ IF to_regclass('wiki.page_links') IS NOT NULL THEN
159
+ RAISE EXCEPTION 'pre-flight: wiki.page_links already exists — refusing to re-apply';
160
+ END IF;
161
+ IF to_regclass('public.wiki_page_aliases') IS NULL THEN
162
+ RAISE EXCEPTION 'pre-flight: public.wiki_page_aliases does not exist';
163
+ END IF;
164
+ IF to_regclass('wiki.page_aliases') IS NOT NULL THEN
165
+ RAISE EXCEPTION 'pre-flight: wiki.page_aliases already exists — refusing to re-apply';
166
+ END IF;
167
+ IF to_regclass('public.wiki_unresolved_mentions') IS NULL THEN
168
+ RAISE EXCEPTION 'pre-flight: public.wiki_unresolved_mentions does not exist';
169
+ END IF;
170
+ IF to_regclass('wiki.unresolved_mentions') IS NOT NULL THEN
171
+ RAISE EXCEPTION 'pre-flight: wiki.unresolved_mentions already exists — refusing to re-apply';
172
+ END IF;
173
+ IF to_regclass('public.wiki_section_sources') IS NULL THEN
174
+ RAISE EXCEPTION 'pre-flight: public.wiki_section_sources does not exist';
175
+ END IF;
176
+ IF to_regclass('wiki.section_sources') IS NOT NULL THEN
177
+ RAISE EXCEPTION 'pre-flight: wiki.section_sources already exists — refusing to re-apply';
178
+ END IF;
179
+ IF to_regclass('public.wiki_compile_jobs') IS NULL THEN
180
+ RAISE EXCEPTION 'pre-flight: public.wiki_compile_jobs does not exist';
181
+ END IF;
182
+ IF to_regclass('wiki.compile_jobs') IS NOT NULL THEN
183
+ RAISE EXCEPTION 'pre-flight: wiki.compile_jobs already exists — refusing to re-apply';
184
+ END IF;
185
+ IF to_regclass('public.wiki_compile_cursors') IS NULL THEN
186
+ RAISE EXCEPTION 'pre-flight: public.wiki_compile_cursors does not exist';
187
+ END IF;
188
+ IF to_regclass('wiki.compile_cursors') IS NOT NULL THEN
189
+ RAISE EXCEPTION 'pre-flight: wiki.compile_cursors already exists — refusing to re-apply';
190
+ END IF;
191
+ IF to_regclass('public.wiki_places') IS NULL THEN
192
+ RAISE EXCEPTION 'pre-flight: public.wiki_places does not exist';
193
+ END IF;
194
+ IF to_regclass('wiki.places') IS NOT NULL THEN
195
+ RAISE EXCEPTION 'pre-flight: wiki.places already exists — refusing to re-apply';
196
+ END IF;
197
+ END $$;
198
+
199
+ -- Schema creation.
200
+ CREATE SCHEMA IF NOT EXISTS wiki;
201
+ COMMENT ON SCHEMA wiki IS 'Compounding-memory wiki tables. Compiled pages, sections, links, aliases, places, and the compile-job ledger. Extracted from public.* on 2026-05-16.';
202
+
203
+ -- ── Move and rename tables ─────────────────────────────────────────────
204
+ -- FK-leaf-first ordering. Postgres preserves FKs across SET SCHEMA
205
+ -- automatically; ordering matters only for operator mental model.
206
+
207
+ ALTER TABLE public.wiki_compile_cursors SET SCHEMA wiki;
208
+ ALTER TABLE wiki.wiki_compile_cursors RENAME TO compile_cursors;
209
+
210
+ ALTER TABLE public.wiki_compile_jobs SET SCHEMA wiki;
211
+ ALTER TABLE wiki.wiki_compile_jobs RENAME TO compile_jobs;
212
+
213
+ ALTER TABLE public.wiki_section_sources SET SCHEMA wiki;
214
+ ALTER TABLE wiki.wiki_section_sources RENAME TO section_sources;
215
+
216
+ ALTER TABLE public.wiki_page_links SET SCHEMA wiki;
217
+ ALTER TABLE wiki.wiki_page_links RENAME TO page_links;
218
+
219
+ ALTER TABLE public.wiki_page_aliases SET SCHEMA wiki;
220
+ ALTER TABLE wiki.wiki_page_aliases RENAME TO page_aliases;
221
+
222
+ ALTER TABLE public.wiki_page_sections SET SCHEMA wiki;
223
+ ALTER TABLE wiki.wiki_page_sections RENAME TO page_sections;
224
+
225
+ ALTER TABLE public.wiki_unresolved_mentions SET SCHEMA wiki;
226
+ ALTER TABLE wiki.wiki_unresolved_mentions RENAME TO unresolved_mentions;
227
+
228
+ ALTER TABLE public.wiki_places SET SCHEMA wiki;
229
+ ALTER TABLE wiki.wiki_places RENAME TO places;
230
+
231
+ -- wiki_pages depends on wiki_places (FK place_id) and is depended on by
232
+ -- everything else; move it after its sibling-FK target (places) and before
233
+ -- its dependents are no longer needed.
234
+ ALTER TABLE public.wiki_pages SET SCHEMA wiki;
235
+ ALTER TABLE wiki.wiki_pages RENAME TO pages;
236
+
237
+ -- ── Rename indexes to drop wiki_ prefix ────────────────────────────────
238
+ -- Indexes move with their parent table via SET SCHEMA; only the names need
239
+ -- updating to match the new Drizzle source.
240
+
241
+ ALTER INDEX wiki.uq_wiki_pages_tenant_owner_type_slug RENAME TO uq_pages_tenant_owner_type_slug;
242
+ ALTER INDEX wiki.idx_wiki_pages_tenant_owner_type_status RENAME TO idx_pages_tenant_owner_type_status;
243
+ ALTER INDEX wiki.idx_wiki_pages_owner RENAME TO idx_pages_owner;
244
+ ALTER INDEX wiki.idx_wiki_pages_last_compiled RENAME TO idx_pages_last_compiled;
245
+ ALTER INDEX wiki.idx_wiki_pages_entity_subtype RENAME TO idx_pages_entity_subtype;
246
+ ALTER INDEX wiki.idx_wiki_pages_search_tsv RENAME TO idx_pages_search_tsv;
247
+ ALTER INDEX wiki.idx_wiki_pages_parent RENAME TO idx_pages_parent;
248
+ ALTER INDEX wiki.idx_wiki_pages_place_id RENAME TO idx_pages_place_id;
249
+ ALTER INDEX wiki.idx_wiki_pages_title_trgm RENAME TO idx_pages_title_trgm;
250
+
251
+ ALTER INDEX wiki.uq_wiki_page_sections_page_slug RENAME TO uq_page_sections_page_slug;
252
+ ALTER INDEX wiki.idx_wiki_page_sections_page_position RENAME TO idx_page_sections_page_position;
253
+
254
+ ALTER INDEX wiki.uq_wiki_page_links_from_to_kind RENAME TO uq_page_links_from_to_kind;
255
+ ALTER INDEX wiki.idx_wiki_page_links_to RENAME TO idx_page_links_to;
256
+ ALTER INDEX wiki.idx_wiki_page_links_kind RENAME TO idx_page_links_kind;
257
+
258
+ ALTER INDEX wiki.uq_wiki_page_aliases_page_alias RENAME TO uq_page_aliases_page_alias;
259
+ ALTER INDEX wiki.idx_wiki_page_aliases_alias RENAME TO idx_page_aliases_alias;
260
+ ALTER INDEX wiki.idx_wiki_page_aliases_alias_trgm RENAME TO idx_page_aliases_alias_trgm;
261
+
262
+ ALTER INDEX wiki.uq_wiki_unresolved_mentions_scope_alias_status RENAME TO uq_unresolved_mentions_scope_alias_status;
263
+ ALTER INDEX wiki.idx_wiki_unresolved_mentions_tenant_owner_status RENAME TO idx_unresolved_mentions_tenant_owner_status;
264
+ ALTER INDEX wiki.idx_wiki_unresolved_mentions_status_last_seen RENAME TO idx_unresolved_mentions_status_last_seen;
265
+
266
+ ALTER INDEX wiki.uq_wiki_section_sources_section_kind_ref RENAME TO uq_section_sources_section_kind_ref;
267
+ ALTER INDEX wiki.idx_wiki_section_sources_kind_ref RENAME TO idx_section_sources_kind_ref;
268
+
269
+ ALTER INDEX wiki.idx_wiki_compile_jobs_scope_status_created RENAME TO idx_compile_jobs_scope_status_created;
270
+ ALTER INDEX wiki.idx_wiki_compile_jobs_status_created RENAME TO idx_compile_jobs_status_created;
271
+
272
+ ALTER INDEX wiki.idx_wiki_places_tenant_owner RENAME TO idx_places_tenant_owner;
273
+ ALTER INDEX wiki.idx_wiki_places_parent RENAME TO idx_places_parent;
274
+ ALTER INDEX wiki.uq_wiki_places_scope_google_place_id RENAME TO uq_places_scope_google_place_id;
275
+
276
+ -- ── Rename named constraints to drop wiki_ prefix ──────────────────────
277
+
278
+ ALTER TABLE wiki.compile_cursors RENAME CONSTRAINT wiki_compile_cursors_pkey TO compile_cursors_pkey;
279
+ ALTER TABLE wiki.unresolved_mentions RENAME CONSTRAINT wiki_unresolved_mentions_entity_subtype_allowed TO unresolved_mentions_entity_subtype_allowed;
280
+
281
+ -- The auto-generated UNIQUE constraint on compile_jobs.dedupe_key. Drizzle
282
+ -- names this `<table>_<column>_unique` — the SET SCHEMA preserved its index
283
+ -- (named after the constraint), but the index name still has the wiki_
284
+ -- prefix. Rename to match the new naming.
285
+ ALTER INDEX wiki.wiki_compile_jobs_dedupe_key_unique RENAME TO compile_jobs_dedupe_key_unique;
286
+
287
+ -- ── Compat views in public.* ────────────────────────────────────────────
288
+ -- Old bundled Lambda code references public.wiki_*. The views resolve to
289
+ -- the new schema-qualified tables, keeping the deploy bridge window safe.
290
+ -- Postgres simple views are auto-updatable (writes pass through to the
291
+ -- underlying table), so any write paths via the old name continue to work
292
+ -- as well. PR 3 drops these.
293
+
294
+ -- wiki.pages has a `search_tsv` GENERATED ALWAYS column. A SELECT * compat
295
+ -- view exposes that column, which causes any old INSERT that explicitly
296
+ -- names it in the column list to fail with `column search_tsv is a
297
+ -- generated column`. Enumerating columns and omitting search_tsv makes the
298
+ -- view auto-update-safe: Postgres regenerates search_tsv from the
299
+ -- GENERATED ALWAYS expression on write through the view. Other 8 tables
300
+ -- have no generated columns and SELECT * is fine.
301
+ CREATE VIEW public.wiki_pages AS
302
+ SELECT id, tenant_id, owner_id, type, entity_subtype, slug, title,
303
+ summary, body_md, status, parent_page_id, place_id,
304
+ hubness_score, tags, last_compiled_at, created_at, updated_at
305
+ FROM wiki.pages;
306
+ CREATE VIEW public.wiki_page_sections AS SELECT * FROM wiki.page_sections;
307
+ CREATE VIEW public.wiki_page_links AS SELECT * FROM wiki.page_links;
308
+ CREATE VIEW public.wiki_page_aliases AS SELECT * FROM wiki.page_aliases;
309
+ CREATE VIEW public.wiki_unresolved_mentions AS SELECT * FROM wiki.unresolved_mentions;
310
+ CREATE VIEW public.wiki_section_sources AS SELECT * FROM wiki.section_sources;
311
+ CREATE VIEW public.wiki_compile_jobs AS SELECT * FROM wiki.compile_jobs;
312
+ CREATE VIEW public.wiki_compile_cursors AS SELECT * FROM wiki.compile_cursors;
313
+ CREATE VIEW public.wiki_places AS SELECT * FROM wiki.places;
314
+
315
+ COMMIT;