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,61 @@
1
+ -- Add visibility + owning_agent_id columns to the routines table
2
+ -- (schema follow-up bundle, closing C U11 P2 residual).
3
+ --
4
+ -- Phase C U11 introduced the create_routine + routine_invoke MCP
5
+ -- tools with a visibility check that conflated `agent_id` (the
6
+ -- routine's primary execution agent) with "the agent that owns
7
+ -- this routine for invocation purposes". This migration splits the
8
+ -- two:
9
+ --
10
+ -- - `owning_agent_id`: the agent that authored / has stewardship.
11
+ -- - `visibility`: enum-by-string (kept lower-snake to match the
12
+ -- in-code 'agent_private' / 'tenant_shared' literals already
13
+ -- baked into admin-ops/checkRoutineVisibility).
14
+ --
15
+ -- Backfill rule:
16
+ -- * agent_id IS NOT NULL → owning_agent_id = agent_id,
17
+ -- visibility = 'agent_private'
18
+ -- * agent_id IS NULL → owning_agent_id = NULL,
19
+ -- visibility = 'tenant_shared'
20
+ --
21
+ -- This preserves the v0 conflated semantics — every existing routine
22
+ -- with an agent stays "private to that agent", every team-scoped
23
+ -- routine without an agent stays tenant-wide. The MCP visibility
24
+ -- helper switches to read these columns in the same PR so behavior
25
+ -- doesn't drift.
26
+ --
27
+ -- creates-column: public.routines.visibility
28
+ -- creates-column: public.routines.owning_agent_id
29
+
30
+ ALTER TABLE public.routines
31
+ ADD COLUMN IF NOT EXISTS visibility text NOT NULL DEFAULT 'agent_private';
32
+
33
+ ALTER TABLE public.routines
34
+ ADD COLUMN IF NOT EXISTS owning_agent_id uuid REFERENCES public.agents(id);
35
+
36
+ -- Backfill existing rows. The default 'agent_private' on the
37
+ -- visibility column already covers the agent-owned case; we only
38
+ -- need to flip rows without an agent to 'tenant_shared'.
39
+ UPDATE public.routines
40
+ SET owning_agent_id = agent_id
41
+ WHERE agent_id IS NOT NULL
42
+ AND owning_agent_id IS NULL;
43
+
44
+ UPDATE public.routines
45
+ SET visibility = 'tenant_shared'
46
+ WHERE agent_id IS NULL
47
+ AND visibility = 'agent_private';
48
+
49
+ -- Index for the routine_invoke visibility-check path: lookups go
50
+ -- (tenant_id, owning_agent_id) when filtering routines an agent
51
+ -- is allowed to invoke.
52
+ CREATE INDEX IF NOT EXISTS idx_routines_owning_agent_id
53
+ ON public.routines (tenant_id, owning_agent_id)
54
+ WHERE owning_agent_id IS NOT NULL;
55
+
56
+ -- CHECK constraint pins the visibility enum at the DB layer so
57
+ -- resolvers + the MCP tool can rely on it without joining or
58
+ -- re-validating client-side.
59
+ ALTER TABLE public.routines
60
+ ADD CONSTRAINT routines_visibility_enum
61
+ CHECK (visibility IN ('agent_private', 'tenant_shared'));
@@ -0,0 +1,29 @@
1
+ -- Routine executions: persist the ASL version row used for each run.
2
+ --
3
+ -- New manual Test Routine executions can then resolve the exact
4
+ -- routine_asl_versions row even when Step Functions execution metadata
5
+ -- does not provide a version ARN. Existing rows remain valid with null.
6
+ --
7
+ -- Plan:
8
+ -- docs/plans/2026-05-02-011-feat-routine-execution-aware-editing-plan.md
9
+ --
10
+ -- Apply manually:
11
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0061_routine_execution_asl_version_id.sql
12
+ --
13
+ -- creates-column: public.routine_executions.routine_asl_version_id
14
+ -- creates: public.idx_routine_executions_asl_version
15
+
16
+ \set ON_ERROR_STOP on
17
+
18
+ BEGIN;
19
+
20
+ SET LOCAL lock_timeout = '5s';
21
+ SET LOCAL statement_timeout = '120s';
22
+
23
+ ALTER TABLE public.routine_executions
24
+ ADD COLUMN IF NOT EXISTS routine_asl_version_id uuid REFERENCES public.routine_asl_versions(id);
25
+
26
+ CREATE INDEX IF NOT EXISTS idx_routine_executions_asl_version
27
+ ON public.routine_executions (routine_asl_version_id);
28
+
29
+ COMMIT;
@@ -0,0 +1,110 @@
1
+ -- Plan §005 U3 — retire AgentRuntimeType selector value `pi` → `flue`.
2
+ --
3
+ -- Hand-rolled (NOT registered in meta/_journal.json — applied via psql in
4
+ -- deploy.yml as a pre-Lambda-update step so the dispatcher never sees a
5
+ -- `pi` value it can't route after the API code update lands).
6
+ --
7
+ -- The `agents.runtime` and `agent_templates.runtime` columns are both
8
+ -- `text NOT NULL DEFAULT 'strands'` (no Postgres enum), so this is a
9
+ -- pure data migration. No DDL.
10
+ --
11
+ -- Marker for db:migrate-manual drift-reporter (see CLAUDE.md "Some
12
+ -- drizzle/*.sql files are hand-rolled..."): the reporter looks up the
13
+ -- declared columns and confirms they exist post-deploy. We're modifying
14
+ -- existing columns, not creating new ones, so we declare them with
15
+ -- creates-column to satisfy the gate.
16
+ -- creates-column: public.agents.runtime
17
+ -- creates-column: public.agent_templates.runtime
18
+
19
+ \echo '== plan §005 U3: agents.runtime + agent_templates.runtime backfill =='
20
+
21
+ -- Print affected rows BEFORE the update so a developer can recover their
22
+ -- pi-pinned configs if the rename was unexpected. No mutation in this step.
23
+ \echo '-- agents currently set to runtime = pi --'
24
+ SELECT
25
+ id,
26
+ tenant_id,
27
+ name,
28
+ runtime,
29
+ updated_at
30
+ FROM agents
31
+ WHERE runtime = 'pi';
32
+
33
+ \echo '-- agent_templates currently set to runtime = pi --'
34
+ SELECT
35
+ id,
36
+ name,
37
+ runtime,
38
+ updated_at
39
+ FROM agent_templates
40
+ WHERE runtime = 'pi';
41
+
42
+ -- Loosen the CHECK constraints on both runtime columns BEFORE the
43
+ -- UPDATE — the existing constraints only allow ('strands', 'pi'), so
44
+ -- setting runtime = 'flue' otherwise hits:
45
+ --
46
+ -- ERROR: new row for relation "agents" violates check constraint
47
+ -- "agents_runtime_check"
48
+ --
49
+ -- We allow the union {strands, flue, pi} during the migration so the
50
+ -- partial-fail rollback (--single-transaction) can leave the system in
51
+ -- a consistent state even if the UPDATE aborts mid-way. After the
52
+ -- post-migration verification (DO block below) confirms zero rows
53
+ -- remain on 'pi', the constraints could be tightened to
54
+ -- {strands, flue}; we keep 'pi' tolerated for one release cycle so
55
+ -- rollback to a pre-U3 dispatcher stays available.
56
+ \echo '-- loosening agents.runtime CHECK constraint to allow flue --'
57
+ ALTER TABLE agents DROP CONSTRAINT IF EXISTS agents_runtime_check;
58
+ ALTER TABLE agents
59
+ ADD CONSTRAINT agents_runtime_check
60
+ CHECK (runtime IN ('strands', 'flue', 'pi'));
61
+
62
+ \echo '-- loosening agent_templates.runtime CHECK constraint to allow flue --'
63
+ ALTER TABLE agent_templates DROP CONSTRAINT IF EXISTS agent_templates_runtime_check;
64
+ ALTER TABLE agent_templates
65
+ ADD CONSTRAINT agent_templates_runtime_check
66
+ CHECK (runtime IN ('strands', 'flue', 'pi'));
67
+
68
+ -- Apply the rename. Both updates run inside an implicit transaction
69
+ -- (psql --single-transaction) so a partial failure rolls the whole
70
+ -- migration back without leaving the system in mixed state.
71
+ \echo '-- updating agents.runtime: pi → flue --'
72
+ UPDATE agents
73
+ SET runtime = 'flue', updated_at = NOW()
74
+ WHERE runtime = 'pi';
75
+
76
+ \echo '-- updating agent_templates.runtime: pi → flue --'
77
+ UPDATE agent_templates
78
+ SET runtime = 'flue', updated_at = NOW()
79
+ WHERE runtime = 'pi';
80
+
81
+ -- Confirm zero rows remain on the old value. The DO block raises an
82
+ -- exception when any row survived, which (combined with psql's
83
+ -- ON_ERROR_STOP=1 + --single-transaction) aborts the migration and
84
+ -- rolls back the UPDATEs above. Without this gate, a stale row would
85
+ -- silently persist and the new dispatcher would map it to Strands via
86
+ -- the default branch in normalizeAgentRuntimeType.
87
+ \echo '-- post-migration verification: any rows still on pi? --'
88
+ DO $$
89
+ DECLARE
90
+ agents_remaining bigint;
91
+ templates_remaining bigint;
92
+ BEGIN
93
+ SELECT COUNT(*) INTO agents_remaining
94
+ FROM agents
95
+ WHERE runtime = 'pi';
96
+
97
+ SELECT COUNT(*) INTO templates_remaining
98
+ FROM agent_templates
99
+ WHERE runtime = 'pi';
100
+
101
+ RAISE NOTICE 'agents still on pi: %', agents_remaining;
102
+ RAISE NOTICE 'agent_templates still on pi: %', templates_remaining;
103
+
104
+ IF agents_remaining > 0 OR templates_remaining > 0 THEN
105
+ RAISE EXCEPTION
106
+ 'plan §005 U3 migration verification failed: % agents and % agent_templates still have runtime = ''pi''. Investigate before the dispatcher Lambda is updated — the new normalizer would silently coerce these rows to ''strands''.',
107
+ agents_remaining, templates_remaining;
108
+ END IF;
109
+ END
110
+ $$;
@@ -0,0 +1,23 @@
1
+ -- Plan §005 U4 — add `threads.session_data jsonb` for Pi's `SessionStore`.
2
+ --
3
+ -- Hand-rolled (NOT registered in meta/_journal.json — applied via psql in
4
+ -- deploy.yml as a pre-Terraform-apply step so the non-Strands runtime Lambda
5
+ -- never reads/writes a column the schema doesn't have).
6
+ --
7
+ -- The column is nullable: pre-Pi threads coexist with NULL. Pi's
8
+ -- AuroraSessionStore.delete() also sets the column to NULL rather than
9
+ -- dropping the thread row, so the post-state is the same as the pre-state
10
+ -- whenever the column is empty.
11
+ --
12
+ -- Marker for db:migrate-manual drift-reporter (see CLAUDE.md "Some
13
+ -- drizzle/*.sql files are hand-rolled..."):
14
+ -- creates-column: public.threads.session_data
15
+
16
+ \echo '== plan §005 U4: threads.session_data jsonb column =='
17
+
18
+ ALTER TABLE threads
19
+ ADD COLUMN IF NOT EXISTS session_data jsonb;
20
+
21
+ -- No index — Pi keys exclusively on `threads.id` (the PK) plus
22
+ -- `tenant_id` (existing `idx_threads_tenant_id`). Adding a GIN/BTREE index
23
+ -- on a jsonb column we never query inside is wasted write amplification.
@@ -0,0 +1,65 @@
1
+ -- Tenant-shared credential vault for routines and integrations.
2
+ --
3
+ -- Secret values live in AWS Secrets Manager. This table stores only
4
+ -- non-secret metadata, lifecycle state, and derived runtime references.
5
+ --
6
+ -- Plan:
7
+ -- docs/plans/2026-05-04-002-feat-tenant-credential-vault-routine-migration-plan.md
8
+ --
9
+ -- Apply manually:
10
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0064_tenant_credentials.sql
11
+ --
12
+ -- creates: public.tenant_credentials
13
+ -- creates: public.uq_tenant_credentials_slug
14
+ -- creates: public.idx_tenant_credentials_tenant
15
+ -- creates: public.idx_tenant_credentials_status
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
+ CREATE TABLE IF NOT EXISTS public.tenant_credentials (
25
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
26
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id),
27
+ display_name text NOT NULL,
28
+ slug text NOT NULL,
29
+ kind text NOT NULL,
30
+ status text NOT NULL DEFAULT 'active',
31
+ secret_ref text NOT NULL,
32
+ eventbridge_connection_arn text,
33
+ schema_json jsonb NOT NULL DEFAULT '{}'::jsonb,
34
+ metadata_json jsonb NOT NULL DEFAULT '{}'::jsonb,
35
+ last_used_at timestamp with time zone,
36
+ last_validated_at timestamp with time zone,
37
+ created_by_user_id uuid REFERENCES public.users(id),
38
+ deleted_at timestamp with time zone,
39
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
40
+ updated_at timestamp with time zone NOT NULL DEFAULT now(),
41
+ CONSTRAINT tenant_credentials_kind_enum CHECK (
42
+ kind IN (
43
+ 'api_key',
44
+ 'bearer_token',
45
+ 'basic_auth',
46
+ 'soap_partner',
47
+ 'webhook_signing_secret',
48
+ 'json'
49
+ )
50
+ ),
51
+ CONSTRAINT tenant_credentials_status_enum CHECK (
52
+ status IN ('active', 'disabled', 'deleted')
53
+ )
54
+ );
55
+
56
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_tenant_credentials_slug
57
+ ON public.tenant_credentials (tenant_id, slug);
58
+
59
+ CREATE INDEX IF NOT EXISTS idx_tenant_credentials_tenant
60
+ ON public.tenant_credentials (tenant_id);
61
+
62
+ CREATE INDEX IF NOT EXISTS idx_tenant_credentials_status
63
+ ON public.tenant_credentials (tenant_id, status);
64
+
65
+ COMMIT;
@@ -0,0 +1,174 @@
1
+ -- ThinkWork Computer phase-one data foundation.
2
+ --
3
+ -- Plan:
4
+ -- docs/plans/2026-05-06-005-feat-thinkwork-computer-phase-one-foundation-plan.md
5
+ --
6
+ -- Apply manually:
7
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0067_thinkwork_computers_phase_one.sql
8
+ --
9
+ -- creates-column: public.agent_templates.template_kind
10
+ -- creates-constraint: public.agent_templates.agent_templates_kind_allowed
11
+ -- creates: public.idx_agent_templates_kind
12
+ -- creates: public.computers
13
+ -- creates: public.computer_tasks
14
+ -- creates: public.computer_events
15
+ -- creates: public.computer_snapshots
16
+ -- creates: public.uq_computers_tenant_slug
17
+ -- creates: public.uq_computers_active_owner
18
+ -- creates: public.idx_computers_tenant_status
19
+ -- creates: public.idx_computers_owner
20
+ -- creates: public.idx_computers_template
21
+ -- creates: public.idx_computers_migrated_agent
22
+ -- creates: public.uq_computer_tasks_idempotency
23
+ -- creates: public.idx_computer_tasks_computer_status
24
+ -- creates: public.idx_computer_tasks_tenant_status
25
+ -- creates: public.idx_computer_events_computer_created
26
+ -- creates: public.idx_computer_events_task
27
+ -- creates: public.idx_computer_snapshots_computer_created
28
+
29
+ \set ON_ERROR_STOP on
30
+
31
+ BEGIN;
32
+
33
+ SET LOCAL lock_timeout = '5s';
34
+ SET LOCAL statement_timeout = '120s';
35
+
36
+ ALTER TABLE public.agent_templates
37
+ ADD COLUMN IF NOT EXISTS template_kind text NOT NULL DEFAULT 'agent';
38
+
39
+ ALTER TABLE public.agent_templates
40
+ DROP CONSTRAINT IF EXISTS agent_templates_kind_allowed;
41
+
42
+ ALTER TABLE public.agent_templates
43
+ ADD CONSTRAINT agent_templates_kind_allowed CHECK (
44
+ template_kind IN ('agent', 'computer')
45
+ );
46
+
47
+ CREATE INDEX IF NOT EXISTS idx_agent_templates_kind
48
+ ON public.agent_templates (template_kind);
49
+
50
+ CREATE TABLE IF NOT EXISTS public.computers (
51
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
52
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
53
+ owner_user_id uuid NOT NULL REFERENCES public.users(id) ON DELETE CASCADE,
54
+ template_id uuid NOT NULL REFERENCES public.agent_templates(id),
55
+ name text NOT NULL,
56
+ slug text NOT NULL,
57
+ status text NOT NULL DEFAULT 'active',
58
+ desired_runtime_status text NOT NULL DEFAULT 'running',
59
+ runtime_status text NOT NULL DEFAULT 'pending',
60
+ runtime_config jsonb,
61
+ live_workspace_root text,
62
+ efs_access_point_id text,
63
+ ecs_service_name text,
64
+ last_heartbeat_at timestamp with time zone,
65
+ last_active_at timestamp with time zone,
66
+ budget_monthly_cents integer,
67
+ spent_monthly_cents integer DEFAULT 0,
68
+ budget_paused_at timestamp with time zone,
69
+ budget_paused_reason text,
70
+ migrated_from_agent_id uuid REFERENCES public.agents(id),
71
+ migration_metadata jsonb,
72
+ created_by uuid REFERENCES public.users(id),
73
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
74
+ updated_at timestamp with time zone NOT NULL DEFAULT now(),
75
+ CONSTRAINT computers_status_allowed CHECK (
76
+ status IN ('active', 'provisioning', 'failed', 'archived')
77
+ ),
78
+ CONSTRAINT computers_desired_runtime_status_allowed CHECK (
79
+ desired_runtime_status IN ('running', 'stopped')
80
+ ),
81
+ CONSTRAINT computers_runtime_status_allowed CHECK (
82
+ runtime_status IN ('pending', 'starting', 'running', 'stopped', 'failed', 'unknown')
83
+ )
84
+ );
85
+
86
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_computers_tenant_slug
87
+ ON public.computers (tenant_id, slug);
88
+
89
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_computers_active_owner
90
+ ON public.computers (tenant_id, owner_user_id)
91
+ WHERE status <> 'archived';
92
+
93
+ CREATE INDEX IF NOT EXISTS idx_computers_tenant_status
94
+ ON public.computers (tenant_id, status);
95
+
96
+ CREATE INDEX IF NOT EXISTS idx_computers_owner
97
+ ON public.computers (owner_user_id);
98
+
99
+ CREATE INDEX IF NOT EXISTS idx_computers_template
100
+ ON public.computers (template_id);
101
+
102
+ CREATE INDEX IF NOT EXISTS idx_computers_migrated_agent
103
+ ON public.computers (migrated_from_agent_id);
104
+
105
+ CREATE TABLE IF NOT EXISTS public.computer_tasks (
106
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
107
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
108
+ computer_id uuid NOT NULL REFERENCES public.computers(id) ON DELETE CASCADE,
109
+ task_type text NOT NULL,
110
+ status text NOT NULL DEFAULT 'pending',
111
+ input jsonb,
112
+ output jsonb,
113
+ error jsonb,
114
+ idempotency_key text,
115
+ claimed_at timestamp with time zone,
116
+ completed_at timestamp with time zone,
117
+ created_by_user_id uuid REFERENCES public.users(id),
118
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
119
+ updated_at timestamp with time zone NOT NULL DEFAULT now(),
120
+ CONSTRAINT computer_tasks_status_allowed CHECK (
121
+ status IN ('pending', 'running', 'completed', 'failed', 'cancelled')
122
+ )
123
+ );
124
+
125
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_computer_tasks_idempotency
126
+ ON public.computer_tasks (tenant_id, computer_id, idempotency_key)
127
+ WHERE idempotency_key IS NOT NULL;
128
+
129
+ CREATE INDEX IF NOT EXISTS idx_computer_tasks_computer_status
130
+ ON public.computer_tasks (computer_id, status);
131
+
132
+ CREATE INDEX IF NOT EXISTS idx_computer_tasks_tenant_status
133
+ ON public.computer_tasks (tenant_id, status);
134
+
135
+ CREATE TABLE IF NOT EXISTS public.computer_events (
136
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
137
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
138
+ computer_id uuid NOT NULL REFERENCES public.computers(id) ON DELETE CASCADE,
139
+ task_id uuid REFERENCES public.computer_tasks(id) ON DELETE SET NULL,
140
+ event_type text NOT NULL,
141
+ level text NOT NULL DEFAULT 'info',
142
+ payload jsonb,
143
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
144
+ CONSTRAINT computer_events_level_allowed CHECK (
145
+ level IN ('debug', 'info', 'warn', 'error')
146
+ )
147
+ );
148
+
149
+ CREATE INDEX IF NOT EXISTS idx_computer_events_computer_created
150
+ ON public.computer_events (computer_id, created_at);
151
+
152
+ CREATE INDEX IF NOT EXISTS idx_computer_events_task
153
+ ON public.computer_events (task_id);
154
+
155
+ CREATE TABLE IF NOT EXISTS public.computer_snapshots (
156
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
157
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
158
+ computer_id uuid NOT NULL REFERENCES public.computers(id) ON DELETE CASCADE,
159
+ task_id uuid REFERENCES public.computer_tasks(id) ON DELETE SET NULL,
160
+ status text NOT NULL DEFAULT 'pending',
161
+ s3_prefix text NOT NULL,
162
+ manifest jsonb,
163
+ error jsonb,
164
+ completed_at timestamp with time zone,
165
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
166
+ CONSTRAINT computer_snapshots_status_allowed CHECK (
167
+ status IN ('pending', 'completed', 'failed')
168
+ )
169
+ );
170
+
171
+ CREATE INDEX IF NOT EXISTS idx_computer_snapshots_computer_created
172
+ ON public.computer_snapshots (computer_id, created_at);
173
+
174
+ COMMIT;
@@ -0,0 +1,115 @@
1
+ -- 0068_drop_system_workflows_and_activation.sql
2
+ --
3
+ -- Phase 2 U6 of the System Workflows revert. Final unit. Drops the 11
4
+ -- Postgres tables that backed the SW + Activation features:
5
+ -- - 4 activation tables (sessions, session_turns, apply_outbox, automation_candidates)
6
+ -- - 7 SW tables (definitions, configs, extension_bindings, runs, step_events,
7
+ -- evidence, change_events)
8
+ -- Plus all the indexes/constraints declared by the deleted create-migrations
9
+ -- (0038, 0039, 0041, 0059, 0060). DROP TABLE CASCADE handles the runtime
10
+ -- removal of indexes alongside their parent tables.
11
+ --
12
+ -- Plan reference:
13
+ -- docs/plans/2026-05-06-010-refactor-system-workflows-u6-postgres-schema-plan.md
14
+ -- docs/plans/2026-05-06-001-refactor-system-workflows-activation-removal-plan.md
15
+ --
16
+ -- Apply manually:
17
+ -- psql "$DATABASE_URL" -f packages/database-pg/drizzle/0068_drop_system_workflows_and_activation.sql
18
+ -- Then verify:
19
+ -- psql "$DATABASE_URL" -c "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_name IN ('activation_sessions','activation_session_turns','activation_apply_outbox','activation_automation_candidates','system_workflow_definitions','system_workflow_configs','system_workflow_extension_bindings','system_workflow_runs','system_workflow_step_events','system_workflow_evidence','system_workflow_change_events');"
20
+ -- (expect 0 rows)
21
+ --
22
+ -- Markers (consumed by scripts/db-migrate-manual.sh as the post-deploy drift gate):
23
+ -- This file declares no creates. The drops markers below probe ABSENCE
24
+ -- of each named object. Tables and indexes/constraints are dropped
25
+ -- together via CASCADE; markers are enumerated for full audit trail of
26
+ -- what disappears.
27
+ --
28
+ -- drops: public.activation_sessions
29
+ -- drops: public.activation_session_turns
30
+ -- drops: public.activation_apply_outbox
31
+ -- drops: public.activation_automation_candidates
32
+ -- drops: public.system_workflow_definitions
33
+ -- drops: public.system_workflow_configs
34
+ -- drops: public.system_workflow_extension_bindings
35
+ -- drops: public.system_workflow_runs
36
+ -- drops: public.system_workflow_step_events
37
+ -- drops: public.system_workflow_evidence
38
+ -- drops: public.system_workflow_change_events
39
+ -- drops: public.idx_activation_sessions_user_status
40
+ -- drops: public.idx_activation_sessions_tenant
41
+ -- drops: public.uq_activation_sessions_user_in_progress
42
+ -- drops: public.idx_activation_session_turns_session_order
43
+ -- drops: public.idx_activation_apply_outbox_status_created
44
+ -- drops: public.idx_activation_apply_outbox_session
45
+ -- drops: public.idx_activation_automation_candidates_session
46
+ -- drops: public.idx_activation_automation_candidates_user_status
47
+ -- drops: public.uq_activation_automation_candidates_active_duplicate
48
+ -- drops: public.idx_system_workflow_definitions_category
49
+ -- drops: public.idx_system_workflow_definitions_status
50
+ -- drops: public.idx_system_workflow_configs_tenant_workflow_version
51
+ -- drops: public.idx_system_workflow_configs_tenant_workflow_status
52
+ -- drops: public.idx_system_workflow_extension_bindings_tenant_workflow
53
+ -- drops: public.idx_system_workflow_extension_bindings_config
54
+ -- drops: public.idx_system_workflow_runs_sfn_arn
55
+ -- drops: public.idx_system_workflow_runs_tenant_workflow_started
56
+ -- drops: public.idx_system_workflow_runs_tenant_status
57
+ -- drops: public.idx_system_workflow_runs_domain_ref
58
+ -- drops: public.idx_system_workflow_step_events_run
59
+ -- drops: public.idx_system_workflow_step_events_dedup
60
+ -- drops: public.idx_system_workflow_step_events_tenant_step
61
+ -- drops: public.idx_system_workflow_evidence_run
62
+ -- drops: public.idx_system_workflow_evidence_tenant_type
63
+ -- drops: public.idx_system_workflow_evidence_dedup
64
+ -- drops: public.idx_system_workflow_change_events_tenant_workflow
65
+ -- drops: public.idx_system_workflow_change_events_run
66
+ -- drops: public.idx_system_workflow_runs_domain_ref_dedup
67
+
68
+ \set ON_ERROR_STOP on
69
+
70
+ BEGIN;
71
+
72
+ -- Fail fast on lock contention. The 11 tables have no live writers
73
+ -- (U2 deleted the GraphQL surface, U3 deleted the Lambda library, U5
74
+ -- destroyed the Step Functions module), so a 5s wait is more than
75
+ -- sufficient; if a stale connection holds a lock past that, abort
76
+ -- rather than wedge the cluster behind a long-held ACCESS EXCLUSIVE
77
+ -- lock. Mirrors the pattern from 0031_thread_cleanup_drops.sql.
78
+ SET LOCAL lock_timeout = '5s';
79
+ SET LOCAL statement_timeout = '60s';
80
+
81
+ -- Refuse to apply against an unexpected DB. The drop is irreversible
82
+ -- without RDS snapshot restore, so an in-script guard against stale
83
+ -- DATABASE_URL pointing at a localhost Postgres or a non-dev RDS is
84
+ -- cheap insurance.
85
+ DO $$
86
+ BEGIN
87
+ IF current_database() != 'thinkwork' THEN
88
+ RAISE EXCEPTION 'wrong database: %, expected thinkwork', current_database();
89
+ END IF;
90
+ END $$;
91
+
92
+ -- ---------------------------------------------------------------------------
93
+ -- Drop System Workflows tables (children before parents).
94
+ -- CASCADE removes incidental constraints + drops indexes alongside their
95
+ -- parent tables; the ordering here is belt-and-suspenders.
96
+ -- ---------------------------------------------------------------------------
97
+
98
+ DROP TABLE IF EXISTS public.system_workflow_change_events CASCADE;
99
+ DROP TABLE IF EXISTS public.system_workflow_evidence CASCADE;
100
+ DROP TABLE IF EXISTS public.system_workflow_step_events CASCADE;
101
+ DROP TABLE IF EXISTS public.system_workflow_runs CASCADE;
102
+ DROP TABLE IF EXISTS public.system_workflow_extension_bindings CASCADE;
103
+ DROP TABLE IF EXISTS public.system_workflow_configs CASCADE;
104
+ DROP TABLE IF EXISTS public.system_workflow_definitions CASCADE;
105
+
106
+ -- ---------------------------------------------------------------------------
107
+ -- Drop Activation tables (children before parents).
108
+ -- ---------------------------------------------------------------------------
109
+
110
+ DROP TABLE IF EXISTS public.activation_apply_outbox CASCADE;
111
+ DROP TABLE IF EXISTS public.activation_automation_candidates CASCADE;
112
+ DROP TABLE IF EXISTS public.activation_session_turns CASCADE;
113
+ DROP TABLE IF EXISTS public.activation_sessions CASCADE;
114
+
115
+ COMMIT;