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,79 @@
1
+ -- 0133_drop_seed_view_tombstones.sql
2
+ --
3
+ -- Drops the 11 sentinel/invariant-check views left behind by historical
4
+ -- seed and repair migrations. Each view was created by its owning
5
+ -- migration as a saved "did this work land?" query — operator-facing
6
+ -- introspection sugar that was useful at the time those migrations
7
+ -- applied, but is now dead schema noise.
8
+ --
9
+ -- None of these views are read by application code (verified via grep
10
+ -- across packages/api, packages/lambda, apps/*, scripts/, and the
11
+ -- Python Strands runtime). The drift reporter does its work via the
12
+ -- `-- creates:` and `-- drops:` markers in migration headers, not by
13
+ -- reading view contents — so dropping these views does not weaken the
14
+ -- migration-verification regime.
15
+ --
16
+ -- Companion edit: the 11 original migrations have their now-stale
17
+ -- `-- creates: public.view_*` markers removed in this same PR so the
18
+ -- drift reporter stays clean. The view SQL bodies in those files are
19
+ -- left in place — replaying any of those migrations on a fresh DB
20
+ -- still recreates its view, after which 0133 cleans it up again.
21
+ --
22
+ -- Apply manually (AFTER merge + deploy, per
23
+ -- feedback_migration_deploy_ordering):
24
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0133_drop_seed_view_tombstones.sql
25
+ --
26
+ -- Then verify:
27
+ -- pnpm db:migrate-manual packages/database-pg/drizzle/0133_drop_seed_view_tombstones.sql
28
+ -- psql -c "\dv public.view_*" -- 0 views expected
29
+ --
30
+ -- Rollback: re-run each source migration's CREATE VIEW statement. See
31
+ -- the inverse SQL in each of:
32
+ -- 0022, 0030, 0085, 0086, 0089 (remove_maniflow_eval_seeds),
33
+ -- 0096, 0102, 0103, 0104, 0106, 0116
34
+ --
35
+ -- Markers (consumed by scripts/db-migrate-manual.sh):
36
+ --
37
+ -- drops: public.view_brain_section_source_trigger_repaired
38
+ -- drops: public.view_composition_primitives_retired
39
+ -- drops: public.view_default_template_models_updated_0086
40
+ -- drops: public.view_eval_seed_maniflow_cleanup_0089
41
+ -- drops: public.view_eval_seed_true_redteam_cleanup_0096
42
+ -- drops: public.view_seed_ontology_triples_expanded
43
+ -- drops: public.view_seed_ontology_user_memory_expanded
44
+ -- drops: public.view_thinkwork_admin_permissions_seeded
45
+ -- drops: public.view_thinkwork_computer_default_template_seeded
46
+ -- drops: public.view_thread_participants_access_backfilled
47
+ -- drops: public.view_wiki_brain_owner_repaired
48
+
49
+ \set ON_ERROR_STOP on
50
+
51
+ BEGIN;
52
+
53
+ SET LOCAL lock_timeout = '30s';
54
+ SET LOCAL statement_timeout = '60s';
55
+
56
+ -- Serialize concurrent application attempts.
57
+ SELECT pg_advisory_xact_lock(hashtext('drop_seed_view_tombstones'));
58
+
59
+ -- Refuse to apply against an unexpected DB.
60
+ DO $$
61
+ BEGIN
62
+ IF current_database() != 'thinkwork' THEN
63
+ RAISE EXCEPTION 'wrong database: %, expected thinkwork', current_database();
64
+ END IF;
65
+ END $$;
66
+
67
+ DROP VIEW IF EXISTS public.view_brain_section_source_trigger_repaired;
68
+ DROP VIEW IF EXISTS public.view_composition_primitives_retired;
69
+ DROP VIEW IF EXISTS public.view_default_template_models_updated_0086;
70
+ DROP VIEW IF EXISTS public.view_eval_seed_maniflow_cleanup_0089;
71
+ DROP VIEW IF EXISTS public.view_eval_seed_true_redteam_cleanup_0096;
72
+ DROP VIEW IF EXISTS public.view_seed_ontology_triples_expanded;
73
+ DROP VIEW IF EXISTS public.view_seed_ontology_user_memory_expanded;
74
+ DROP VIEW IF EXISTS public.view_thinkwork_admin_permissions_seeded;
75
+ DROP VIEW IF EXISTS public.view_thinkwork_computer_default_template_seeded;
76
+ DROP VIEW IF EXISTS public.view_thread_participants_access_backfilled;
77
+ DROP VIEW IF EXISTS public.view_wiki_brain_owner_repaired;
78
+
79
+ COMMIT;
@@ -0,0 +1,22 @@
1
+ -- 0133_thread_turns_system_prompt.sql
2
+ -- Store the composed system prompt captured for normal thread turns so the
3
+ -- admin Thread Detail view can audit the prompt used by the runtime.
4
+ --
5
+ -- Apply manually:
6
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0133_thread_turns_system_prompt.sql
7
+ -- Verify:
8
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0133_thread_turns_system_prompt.sql
9
+ --
10
+ -- creates-column: public.thread_turns.system_prompt
11
+
12
+ BEGIN;
13
+
14
+ SELECT pg_advisory_xact_lock(hashtext('add_thread_turns_system_prompt'));
15
+
16
+ ALTER TABLE public.thread_turns
17
+ ADD COLUMN IF NOT EXISTS system_prompt text;
18
+
19
+ COMMENT ON COLUMN public.thread_turns.system_prompt IS
20
+ 'Composed system prompt captured from the agent runtime for this turn.';
21
+
22
+ COMMIT;
@@ -0,0 +1,53 @@
1
+ -- 0134_drop_dead_agent_runtime_tables.sql
2
+ --
3
+ -- Drops three agent_* tables that were schema-only across the codebase
4
+ -- with zero rows in production:
5
+ --
6
+ -- - agent_runtime_state — declared but never written to
7
+ -- - agent_task_sessions — declared but never written to;
8
+ -- FKs to agent_runtime_state
9
+ -- - agent_workspace_waits — declared but only re-exported in
10
+ -- graphql/utils.ts; no SELECT/INSERT
11
+ -- from any handler or resolver
12
+ --
13
+ -- Pre-merge consumer survey (per feedback_grep_must_match_import_form):
14
+ -- grep across apps/, packages/api/src, packages/lambda,
15
+ -- packages/database-pg/src (excluding drizzle/ and the table's own
16
+ -- schema declaration), packages/agentcore-pi, and scripts/ returned only the schema definitions + the utils.ts
17
+ -- re-exports. The companion code commit removes those.
18
+ --
19
+ -- Order matters: agent_task_sessions has a FK to agent_runtime_state,
20
+ -- so it must drop first.
21
+ --
22
+ -- Apply manually AFTER merge+deploy per feedback_migration_deploy_ordering.
23
+ -- (Risk in practice is zero — no code reads these — but consistent
24
+ -- with the ordering rule.)
25
+ --
26
+ -- Markers (consumed by scripts/db-migrate-manual.sh):
27
+ --
28
+ -- drops: public.agent_task_sessions
29
+ -- drops: public.agent_runtime_state
30
+ -- drops: public.agent_workspace_waits
31
+
32
+ \set ON_ERROR_STOP on
33
+
34
+ BEGIN;
35
+
36
+ SET LOCAL lock_timeout = '30s';
37
+ SET LOCAL statement_timeout = '60s';
38
+
39
+ SELECT pg_advisory_xact_lock(hashtext('drop_dead_agent_runtime_tables'));
40
+
41
+ DO $$
42
+ BEGIN
43
+ IF current_database() != 'thinkwork' THEN
44
+ RAISE EXCEPTION 'wrong database: %, expected thinkwork', current_database();
45
+ END IF;
46
+ END $$;
47
+
48
+ -- Drop child first (FK to agent_runtime_state).
49
+ DROP TABLE IF EXISTS public.agent_task_sessions;
50
+ DROP TABLE IF EXISTS public.agent_runtime_state;
51
+ DROP TABLE IF EXISTS public.agent_workspace_waits;
52
+
53
+ COMMIT;
@@ -0,0 +1,48 @@
1
+ -- Purpose: allow ThinkWork-native checklist rows in linked task compatibility storage.
2
+ -- Plan: docs/plans/2026-05-25-004-feat-customer-onboarding-native-checklist-plan.md (U2)
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0135_native_checklist_linked_tasks.sql
4
+ -- creates-constraint: public.linked_tasks.linked_tasks_provider_allowed
5
+ -- creates-constraint: public.linked_tasks.linked_tasks_status_allowed
6
+ -- creates-constraint: public.linked_task_events.linked_task_events_provider_allowed
7
+ -- creates-constraint: public.linked_task_events.linked_task_events_type_allowed
8
+ -- creates-constraint: public.linked_task_events.linked_task_events_previous_status_allowed
9
+ -- creates-constraint: public.linked_task_events.linked_task_events_new_status_allowed
10
+
11
+ \set ON_ERROR_STOP on
12
+
13
+ BEGIN;
14
+
15
+ SET LOCAL lock_timeout = '5s';
16
+ SET LOCAL statement_timeout = '120s';
17
+
18
+ ALTER TABLE public.linked_tasks
19
+ DROP CONSTRAINT IF EXISTS linked_tasks_provider_allowed,
20
+ ADD CONSTRAINT linked_tasks_provider_allowed
21
+ CHECK (provider IN ('lastmile', 'thinkwork'));
22
+
23
+ ALTER TABLE public.linked_tasks
24
+ DROP CONSTRAINT IF EXISTS linked_tasks_status_allowed,
25
+ ADD CONSTRAINT linked_tasks_status_allowed
26
+ CHECK (status IN ('unknown', 'todo', 'in_progress', 'completed', 'blocked', 'cancelled', 'not_applicable'));
27
+
28
+ ALTER TABLE public.linked_task_events
29
+ DROP CONSTRAINT IF EXISTS linked_task_events_provider_allowed,
30
+ ADD CONSTRAINT linked_task_events_provider_allowed
31
+ CHECK (provider IN ('lastmile', 'thinkwork'));
32
+
33
+ ALTER TABLE public.linked_task_events
34
+ DROP CONSTRAINT IF EXISTS linked_task_events_type_allowed,
35
+ ADD CONSTRAINT linked_task_events_type_allowed
36
+ CHECK (event_type IN ('created', 'status_changed', 'completed', 'blocked', 'reassigned', 'due_date_changed', 'sync_failed', 'writeback_posted'));
37
+
38
+ ALTER TABLE public.linked_task_events
39
+ DROP CONSTRAINT IF EXISTS linked_task_events_previous_status_allowed,
40
+ ADD CONSTRAINT linked_task_events_previous_status_allowed
41
+ CHECK (previous_status IS NULL OR previous_status IN ('unknown', 'todo', 'in_progress', 'completed', 'blocked', 'cancelled', 'not_applicable'));
42
+
43
+ ALTER TABLE public.linked_task_events
44
+ DROP CONSTRAINT IF EXISTS linked_task_events_new_status_allowed,
45
+ ADD CONSTRAINT linked_task_events_new_status_allowed
46
+ CHECK (new_status IS NULL OR new_status IN ('unknown', 'todo', 'in_progress', 'completed', 'blocked', 'cancelled', 'not_applicable'));
47
+
48
+ COMMIT;
@@ -0,0 +1,55 @@
1
+ -- Purpose: add explicit Goal ledger rows for promoted Thread workflows.
2
+ -- Plan: docs/plans/2026-05-27-003-feat-folder-native-goals-plan.md
3
+ -- Apply manually (no CI migration runner):
4
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0136_goal_ledger.sql
5
+ -- Pre-flight:
6
+ -- SELECT to_regclass('public.goals');
7
+ -- SELECT to_regclass('public.uq_goals_thread_non_terminal');
8
+ -- creates: public.goals
9
+ -- creates: public.idx_goals_tenant_thread
10
+ -- creates: public.idx_goals_tenant_space_status
11
+ -- creates: public.idx_goals_folder_s3_prefix
12
+ -- creates: public.uq_goals_thread_non_terminal
13
+ -- creates-constraint: public.goals.goals_mode_allowed
14
+ -- creates-constraint: public.goals.goals_status_allowed
15
+
16
+ CREATE TABLE IF NOT EXISTS goals (
17
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
18
+ tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
19
+ space_id uuid NOT NULL REFERENCES spaces(id) ON DELETE CASCADE,
20
+ thread_id uuid NOT NULL REFERENCES threads(id) ON DELETE CASCADE,
21
+ template_key text,
22
+ outcome text NOT NULL,
23
+ owner_type text,
24
+ owner_id text,
25
+ mode text NOT NULL DEFAULT 'collaborate',
26
+ status text NOT NULL DEFAULT 'active',
27
+ progress_model text NOT NULL DEFAULT 'linked_tasks',
28
+ completion_rule jsonb,
29
+ review_policy jsonb,
30
+ folder_s3_prefix text NOT NULL,
31
+ reviewer_type text,
32
+ reviewer_id text,
33
+ started_at timestamptz NOT NULL DEFAULT now(),
34
+ reviewed_at timestamptz,
35
+ completed_at timestamptz,
36
+ cancelled_at timestamptz,
37
+ metadata jsonb,
38
+ created_at timestamptz NOT NULL DEFAULT now(),
39
+ updated_at timestamptz NOT NULL DEFAULT now(),
40
+ CONSTRAINT goals_mode_allowed CHECK (mode IN ('delegate','collaborate')),
41
+ CONSTRAINT goals_status_allowed CHECK (status IN ('active','in_review','completed','cancelled'))
42
+ );
43
+
44
+ CREATE INDEX IF NOT EXISTS idx_goals_tenant_thread
45
+ ON goals (tenant_id, thread_id);
46
+
47
+ CREATE INDEX IF NOT EXISTS idx_goals_tenant_space_status
48
+ ON goals (tenant_id, space_id, status);
49
+
50
+ CREATE INDEX IF NOT EXISTS idx_goals_folder_s3_prefix
51
+ ON goals (folder_s3_prefix);
52
+
53
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_goals_thread_non_terminal
54
+ ON goals (tenant_id, thread_id)
55
+ WHERE status IN ('active','in_review');
@@ -0,0 +1,66 @@
1
+ -- creates-column: public.spaces.email_trigger_status
2
+ -- creates-constraint: public.spaces.spaces_email_trigger_status_allowed
3
+ -- creates-function: public.sync_space_email_trigger_status
4
+ -- creates-trigger: public.spaces.spaces_email_trigger_status_sync
5
+
6
+ \set ON_ERROR_STOP on
7
+
8
+ BEGIN;
9
+
10
+ SET LOCAL lock_timeout = '5s';
11
+ SET LOCAL statement_timeout = '120s';
12
+
13
+ ALTER TABLE public.spaces
14
+ ADD COLUMN IF NOT EXISTS email_trigger_status text;
15
+
16
+ UPDATE public.spaces
17
+ SET email_trigger_status = CASE
18
+ WHEN email_triggers_enabled IS TRUE THEN 'enabled'
19
+ ELSE 'none'
20
+ END
21
+ WHERE email_trigger_status IS NULL;
22
+
23
+ ALTER TABLE public.spaces
24
+ ALTER COLUMN email_trigger_status SET DEFAULT 'none';
25
+
26
+ ALTER TABLE public.spaces
27
+ ALTER COLUMN email_trigger_status SET NOT NULL;
28
+
29
+ DO $$
30
+ BEGIN
31
+ IF NOT EXISTS (
32
+ SELECT 1
33
+ FROM pg_constraint
34
+ WHERE conname = 'spaces_email_trigger_status_allowed'
35
+ AND conrelid = 'public.spaces'::regclass
36
+ ) THEN
37
+ ALTER TABLE public.spaces
38
+ ADD CONSTRAINT spaces_email_trigger_status_allowed
39
+ CHECK (email_trigger_status IN ('none','disabled','enabled'));
40
+ END IF;
41
+ END $$;
42
+
43
+ CREATE OR REPLACE FUNCTION public.sync_space_email_trigger_status()
44
+ RETURNS trigger
45
+ LANGUAGE plpgsql
46
+ AS $$
47
+ BEGIN
48
+ IF NEW.email_trigger_status IS NOT DISTINCT FROM OLD.email_trigger_status
49
+ AND NEW.email_triggers_enabled IS DISTINCT FROM OLD.email_triggers_enabled THEN
50
+ NEW.email_trigger_status := CASE
51
+ WHEN NEW.email_triggers_enabled IS TRUE THEN 'enabled'
52
+ ELSE 'disabled'
53
+ END;
54
+ END IF;
55
+ RETURN NEW;
56
+ END;
57
+ $$;
58
+
59
+ DROP TRIGGER IF EXISTS spaces_email_trigger_status_sync ON public.spaces;
60
+
61
+ CREATE TRIGGER spaces_email_trigger_status_sync
62
+ BEFORE UPDATE OF email_triggers_enabled ON public.spaces
63
+ FOR EACH ROW
64
+ EXECUTE FUNCTION public.sync_space_email_trigger_status();
65
+
66
+ COMMIT;
@@ -0,0 +1,25 @@
1
+ -- Purpose: persist per-user saved Thread pins across Spaces clients.
2
+ -- Plan: docs/plans/2026-05-28-002-feat-server-thread-pins-plan.md (U1)
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0137_thread_participant_pins.sql
4
+ -- creates-column: public.thread_participants.pinned_at
5
+ -- creates-column: public.thread_participants.pin_order
6
+ -- creates: public.idx_thread_participants_user_pins
7
+
8
+ \set ON_ERROR_STOP on
9
+
10
+ BEGIN;
11
+
12
+ SET LOCAL lock_timeout = '5s';
13
+ SET LOCAL statement_timeout = '120s';
14
+
15
+ ALTER TABLE public.thread_participants
16
+ ADD COLUMN IF NOT EXISTS pinned_at timestamptz,
17
+ ADD COLUMN IF NOT EXISTS pin_order integer;
18
+
19
+ CREATE INDEX IF NOT EXISTS idx_thread_participants_user_pins
20
+ ON public.thread_participants (tenant_id, user_id, pin_order)
21
+ WHERE participant_type = 'user'
22
+ AND user_id IS NOT NULL
23
+ AND pinned_at IS NOT NULL;
24
+
25
+ COMMIT;
@@ -0,0 +1,30 @@
1
+ -- creates-column: public.users.cognito_sub
2
+ -- creates: public.idx_users_cognito_sub
3
+ --
4
+ -- Plan: docs/plans/2026-05-29-006-fix-google-federated-identity-resolution-plan.md (U1)
5
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0138_users_cognito_sub.sql
6
+ --
7
+ -- Durable identity link for Google-federated Cognito users. Native users have
8
+ -- users.id == Cognito sub; Google-federated users get a fresh-UUID id and were
9
+ -- linked only by the optional ID-token `email` claim, so a refreshed token that
10
+ -- drops `email` broke identity resolution. Storing the always-present, stable
11
+ -- Cognito `sub` here lets resolveCallerFromAuth resolve by sub first
12
+ -- (resolvers/core/resolve-auth-user.ts) instead of depending on `email`.
13
+ -- Nullable: existing rows have no sub yet (they self-heal via opportunistic
14
+ -- backfill, and bootstrapUser stamps it for new users). Postgres treats NULLs
15
+ -- as distinct in a unique index, so many un-backfilled rows coexist.
16
+
17
+ \set ON_ERROR_STOP on
18
+
19
+ BEGIN;
20
+
21
+ SET LOCAL lock_timeout = '5s';
22
+ SET LOCAL statement_timeout = '120s';
23
+
24
+ ALTER TABLE public.users
25
+ ADD COLUMN IF NOT EXISTS cognito_sub text;
26
+
27
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_users_cognito_sub
28
+ ON public.users (cognito_sub);
29
+
30
+ COMMIT;
@@ -0,0 +1,23 @@
1
+ -- creates: public.uq_thread_turns_mobile_client_turn
2
+ --
3
+ -- Plan: docs/plans/2026-05-31-001-feat-mobile-pi-agentcore-background-handoff-plan.md (U1)
4
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0139_mobile_turn_client_id.sql
5
+ --
6
+ -- Mobile Pi starts a durable thread_turn before local execution begins. The
7
+ -- clientTurnId is an idempotency token, not authorization, and is stored in
8
+ -- thread_turns.external_run_id. Scope the unique key narrowly to mobile Pi
9
+ -- turns so existing AgentCore/desktop uses of external_run_id are unchanged.
10
+
11
+ \set ON_ERROR_STOP on
12
+
13
+ BEGIN;
14
+
15
+ SET LOCAL lock_timeout = '5s';
16
+ SET LOCAL statement_timeout = '120s';
17
+
18
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_thread_turns_mobile_client_turn
19
+ ON public.thread_turns (tenant_id, thread_id, external_run_id)
20
+ WHERE invocation_source = 'mobile_pi'
21
+ AND external_run_id IS NOT NULL;
22
+
23
+ COMMIT;
@@ -0,0 +1,36 @@
1
+ -- creates-column: public.agents.workspace_folder_name
2
+ -- creates-column: public.spaces.workspace_folder_name
3
+ -- creates-column: public.users.workspace_folder_name
4
+ -- creates-column: public.threads.workspace_folder_name
5
+ -- creates-column: public.goals.workspace_folder_name
6
+ -- creates: public.uq_agents_tenant_workspace_folder_name
7
+ -- creates: public.uq_spaces_tenant_workspace_folder_name
8
+ -- creates: public.uq_users_tenant_workspace_folder_name
9
+ -- creates: public.uq_threads_tenant_workspace_folder_name
10
+ -- creates: public.uq_goals_tenant_workspace_folder_name
11
+
12
+ ALTER TABLE agents ADD COLUMN IF NOT EXISTS workspace_folder_name text;
13
+ ALTER TABLE spaces ADD COLUMN IF NOT EXISTS workspace_folder_name text;
14
+ ALTER TABLE users ADD COLUMN IF NOT EXISTS workspace_folder_name text;
15
+ ALTER TABLE threads ADD COLUMN IF NOT EXISTS workspace_folder_name text;
16
+ ALTER TABLE goals ADD COLUMN IF NOT EXISTS workspace_folder_name text;
17
+
18
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_agents_tenant_workspace_folder_name
19
+ ON agents (tenant_id, workspace_folder_name)
20
+ WHERE workspace_folder_name IS NOT NULL;
21
+
22
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_spaces_tenant_workspace_folder_name
23
+ ON spaces (tenant_id, workspace_folder_name)
24
+ WHERE workspace_folder_name IS NOT NULL;
25
+
26
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_users_tenant_workspace_folder_name
27
+ ON users (tenant_id, workspace_folder_name)
28
+ WHERE workspace_folder_name IS NOT NULL;
29
+
30
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_threads_tenant_workspace_folder_name
31
+ ON threads (tenant_id, workspace_folder_name)
32
+ WHERE workspace_folder_name IS NOT NULL;
33
+
34
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_goals_tenant_workspace_folder_name
35
+ ON goals (tenant_id, workspace_folder_name)
36
+ WHERE workspace_folder_name IS NOT NULL;
@@ -0,0 +1,31 @@
1
+ -- 0141_eval_runs_desktop_pi_provenance.sql
2
+ --
3
+ -- Adds provenance and explicit selection tracking for desktop-local Pi eval
4
+ -- runs. Existing cloud/AgentCore rows backfill to the default values so
5
+ -- historical dashboards continue to read as AgentCore-backed runs.
6
+ --
7
+ -- Plan: docs/plans/2026-06-01-004-feat-desktop-pi-redteam-evals-plan.md (U2)
8
+ --
9
+ -- creates-column: public.eval_runs.execution_target
10
+ -- creates-column: public.eval_runs.runtime_host
11
+ -- creates-column: public.eval_runs.selected_test_case_ids
12
+ -- creates: public.idx_eval_runs_tenant_execution_target_created
13
+
14
+ \set ON_ERROR_STOP on
15
+
16
+ BEGIN;
17
+
18
+ SET LOCAL lock_timeout = '30s';
19
+ SET LOCAL statement_timeout = '120s';
20
+
21
+ SELECT pg_advisory_xact_lock(hashtext('eval_runs_desktop_pi_provenance'));
22
+
23
+ ALTER TABLE public.eval_runs
24
+ ADD COLUMN IF NOT EXISTS execution_target text NOT NULL DEFAULT 'agentcore',
25
+ ADD COLUMN IF NOT EXISTS runtime_host text NOT NULL DEFAULT 'aws-agentcore',
26
+ ADD COLUMN IF NOT EXISTS selected_test_case_ids uuid[] NOT NULL DEFAULT '{}'::uuid[];
27
+
28
+ CREATE INDEX IF NOT EXISTS idx_eval_runs_tenant_execution_target_created
29
+ ON public.eval_runs (tenant_id, execution_target, created_at);
30
+
31
+ COMMIT;
@@ -0,0 +1,61 @@
1
+ -- Retire legacy active Agent runtime values and make Pi the only stored runtime.
2
+ --
3
+ -- creates-constraint: public.agents.agents_runtime_check
4
+ -- creates-constraint: public.agent_templates.agent_templates_runtime_check
5
+
6
+ \set ON_ERROR_STOP on
7
+
8
+ BEGIN;
9
+
10
+ SET LOCAL lock_timeout = '30s';
11
+ SET LOCAL statement_timeout = '120s';
12
+
13
+ SELECT pg_advisory_xact_lock(hashtext('pi_only_agent_runtime'));
14
+
15
+ \echo '-- allowing legacy runtime values during backfill --'
16
+
17
+ ALTER TABLE public.agents DROP CONSTRAINT IF EXISTS agents_runtime_check;
18
+ ALTER TABLE public.agents
19
+ ADD CONSTRAINT agents_runtime_check
20
+ CHECK (runtime IN ('strands', 'pi', 'flue'));
21
+
22
+ ALTER TABLE public.agent_templates DROP CONSTRAINT IF EXISTS agent_templates_runtime_check;
23
+ ALTER TABLE public.agent_templates
24
+ ADD CONSTRAINT agent_templates_runtime_check
25
+ CHECK (runtime IN ('strands', 'pi', 'flue'));
26
+
27
+ \echo '-- backfilling agents.runtime to pi --'
28
+
29
+ UPDATE public.agents
30
+ SET runtime = 'pi',
31
+ updated_at = NOW()
32
+ WHERE runtime IN ('strands', 'flue');
33
+
34
+ \echo '-- backfilling agent_templates.runtime to pi --'
35
+
36
+ UPDATE public.agent_templates
37
+ SET runtime = 'pi',
38
+ updated_at = NOW()
39
+ WHERE runtime IN ('strands', 'flue');
40
+
41
+ \echo '-- setting pi runtime defaults --'
42
+
43
+ ALTER TABLE public.agents
44
+ ALTER COLUMN runtime SET DEFAULT 'pi';
45
+
46
+ ALTER TABLE public.agent_templates
47
+ ALTER COLUMN runtime SET DEFAULT 'pi';
48
+
49
+ \echo '-- tightening runtime CHECK constraints to pi-only --'
50
+
51
+ ALTER TABLE public.agents DROP CONSTRAINT IF EXISTS agents_runtime_check;
52
+ ALTER TABLE public.agents
53
+ ADD CONSTRAINT agents_runtime_check
54
+ CHECK (runtime = 'pi');
55
+
56
+ ALTER TABLE public.agent_templates DROP CONSTRAINT IF EXISTS agent_templates_runtime_check;
57
+ ALTER TABLE public.agent_templates
58
+ ADD CONSTRAINT agent_templates_runtime_check
59
+ CHECK (runtime = 'pi');
60
+
61
+ COMMIT;
@@ -0,0 +1,28 @@
1
+ -- Purpose: add Firecrawl-backed Web Extraction opt-in fields for agents and templates.
2
+ -- Plan: docs/plans/2026-06-04-002-feat-firecrawl-web-extraction-plan.md (U1)
3
+ -- Apply manually: psql "$DATABASE_URL" -v ON_ERROR_STOP=1 -f packages/database-pg/drizzle/0143_add_web_extract_builtin_config.sql
4
+ -- creates-column: public.agents.web_extract
5
+ -- creates-column: public.agent_templates.web_extract
6
+
7
+ \set ON_ERROR_STOP on
8
+
9
+ BEGIN;
10
+
11
+ SET LOCAL lock_timeout = '5s';
12
+ SET LOCAL statement_timeout = '120s';
13
+
14
+ ALTER TABLE public.agents
15
+ ADD COLUMN IF NOT EXISTS web_extract jsonb DEFAULT '{"enabled": true}'::jsonb;
16
+
17
+ ALTER TABLE public.agent_templates
18
+ ADD COLUMN IF NOT EXISTS web_extract jsonb DEFAULT '{"enabled": true}'::jsonb;
19
+
20
+ UPDATE public.agents
21
+ SET web_extract = '{"enabled": true}'::jsonb
22
+ WHERE web_extract IS NULL;
23
+
24
+ UPDATE public.agent_templates
25
+ SET web_extract = '{"enabled": true}'::jsonb
26
+ WHERE web_extract IS NULL;
27
+
28
+ COMMIT;
@@ -0,0 +1,40 @@
1
+ -- Purpose: re-add a per-tenant index of the S3 skill catalog so the Skills
2
+ -- settings list reads one query instead of scanning S3 + reading every file.
3
+ -- Derived read cache; S3 stays source of truth. Per-tenant (the dropped
4
+ -- global skill_catalog from 0131 was not tenant-scoped).
5
+ -- Plan: docs/plans/2026-06-04-002-feat-skills-catalog-db-index-plan.md U1
6
+ -- Apply manually (no CI migration runner):
7
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0144_skill_catalog_index.sql
8
+ -- Pre-flight:
9
+ -- SELECT to_regclass('public.skill_catalog');
10
+ -- SELECT to_regclass('public.uq_skill_catalog_tenant_slug');
11
+ -- creates: public.skill_catalog
12
+ -- creates: public.uq_skill_catalog_tenant_slug
13
+ -- creates: public.idx_skill_catalog_tenant
14
+ -- creates-constraint: public.skill_catalog.skill_catalog_tenant_id_fkey
15
+
16
+ BEGIN;
17
+
18
+ SELECT pg_advisory_xact_lock(hashtext('migration:0144_skill_catalog_index'));
19
+
20
+ CREATE TABLE IF NOT EXISTS skill_catalog (
21
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
22
+ tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
23
+ slug text NOT NULL,
24
+ display_name text,
25
+ description text,
26
+ category text,
27
+ icon text,
28
+ tags text[],
29
+ content_sha text NOT NULL,
30
+ created_at timestamptz NOT NULL DEFAULT now(),
31
+ updated_at timestamptz NOT NULL DEFAULT now()
32
+ );
33
+
34
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_skill_catalog_tenant_slug
35
+ ON skill_catalog (tenant_id, slug);
36
+
37
+ CREATE INDEX IF NOT EXISTS idx_skill_catalog_tenant
38
+ ON skill_catalog (tenant_id);
39
+
40
+ COMMIT;