thinkwork-cli 0.12.12 → 0.12.16

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 (475) hide show
  1. package/README.md +42 -38
  2. package/dist/{api-client-ASJWIG3Z.js → api-client-JUBCQQDF.js} +1 -1
  3. package/dist/{chunk-JEHV35EU.js → chunk-STY44FQO.js} +353 -30
  4. package/dist/cli.js +23823 -10151
  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/0197_rcm_context_columns.sql +28 -0
  218. package/dist/drizzle/0198_eval_runs_unstable.sql +27 -0
  219. package/dist/drizzle/0199_eval_runs_cost_partial.sql +27 -0
  220. package/dist/drizzle/meta/_journal.json +160 -0
  221. package/dist/plugins/README.md +162 -0
  222. package/dist/plugins/catalog/package.json +40 -0
  223. package/dist/plugins/catalog/scripts/build-catalog.ts +120 -0
  224. package/dist/plugins/catalog/scripts/generate-plugin-registry.ts +144 -0
  225. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +86 -0
  226. package/dist/plugins/catalog/src/__tests__/catalog.test.ts +308 -0
  227. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +861 -0
  228. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +124 -0
  229. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +120 -0
  230. package/dist/plugins/catalog/src/catalog.ts +434 -0
  231. package/dist/plugins/catalog/src/contracts.ts +1498 -0
  232. package/dist/plugins/catalog/src/index.ts +4 -0
  233. package/dist/plugins/catalog/src/plugin-package.ts +171 -0
  234. package/dist/plugins/catalog/src/registry/generated-first-party.ts +76 -0
  235. package/dist/plugins/catalog/src/registry/index.ts +1 -0
  236. package/dist/plugins/catalog/tsconfig.json +8 -0
  237. package/dist/plugins/company-brain/README.md +37 -0
  238. package/dist/plugins/company-brain/package.json +33 -0
  239. package/dist/plugins/company-brain/runtime/cognee/Dockerfile +11 -0
  240. package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +458 -0
  241. package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +539 -0
  242. package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +312 -0
  243. package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +449 -0
  244. package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +655 -0
  245. package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +474 -0
  246. package/dist/plugins/company-brain/src/api/cognee-client.ts +896 -0
  247. package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +49 -0
  248. package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +84 -0
  249. package/dist/plugins/company-brain/src/api/context-engine-provider.ts +888 -0
  250. package/dist/plugins/company-brain/src/api/migration.ts +665 -0
  251. package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +396 -0
  252. package/dist/plugins/company-brain/src/index.ts +62 -0
  253. package/dist/plugins/company-brain/src/manifest.ts +112 -0
  254. package/dist/plugins/company-brain/terraform/cognee/README.md +263 -0
  255. package/dist/plugins/company-brain/terraform/cognee/main.tf +766 -0
  256. package/dist/plugins/company-brain/terraform/cognee/outputs.tf +144 -0
  257. package/dist/plugins/company-brain/terraform/cognee/variables.tf +402 -0
  258. package/dist/plugins/company-brain/test/api/cognee-client.test.ts +562 -0
  259. package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +74 -0
  260. package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +447 -0
  261. package/dist/plugins/company-brain/test/api/migration.test.ts +465 -0
  262. package/dist/plugins/company-brain/test/manifest.test.ts +95 -0
  263. package/dist/plugins/company-brain/tsconfig.json +8 -0
  264. package/dist/plugins/company-data/README.md +49 -0
  265. package/dist/plugins/company-data/package.json +21 -0
  266. package/dist/plugins/company-data/src/index.ts +30 -0
  267. package/dist/plugins/company-data/src/manifest.ts +26 -0
  268. package/dist/plugins/company-data/test/manifest.test.ts +116 -0
  269. package/dist/plugins/company-data/tsconfig.json +8 -0
  270. package/dist/plugins/company-etl/README.md +46 -0
  271. package/dist/plugins/company-etl/package.json +21 -0
  272. package/dist/plugins/company-etl/src/index.ts +29 -0
  273. package/dist/plugins/company-etl/src/manifest.ts +26 -0
  274. package/dist/plugins/company-etl/test/manifest.test.ts +108 -0
  275. package/dist/plugins/company-etl/tsconfig.json +8 -0
  276. package/dist/plugins/email-channel/README.md +41 -0
  277. package/dist/plugins/email-channel/package.json +22 -0
  278. package/dist/plugins/email-channel/src/index.ts +36 -0
  279. package/dist/plugins/email-channel/src/manifest.ts +44 -0
  280. package/dist/plugins/email-channel/src/provider-contract.ts +36 -0
  281. package/dist/plugins/email-channel/test/manifest.test.ts +119 -0
  282. package/dist/plugins/email-channel/tsconfig.json +8 -0
  283. package/dist/plugins/lastmile/README.md +50 -0
  284. package/dist/plugins/lastmile/package.json +23 -0
  285. package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +661 -0
  286. package/dist/plugins/lastmile/src/api/tasks-adapter.ts +572 -0
  287. package/dist/plugins/lastmile/src/discovery.fixture.ts +64 -0
  288. package/dist/plugins/lastmile/src/index.ts +46 -0
  289. package/dist/plugins/lastmile/src/manifest.ts +139 -0
  290. package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +266 -0
  291. package/dist/plugins/lastmile/test/discovery.test.ts +88 -0
  292. package/dist/plugins/lastmile/tsconfig.json +8 -0
  293. package/dist/plugins/n8n/README.md +201 -0
  294. package/dist/plugins/n8n/n8n-app/README.md +33 -0
  295. package/dist/plugins/n8n/n8n-app/package.json +23 -0
  296. package/dist/plugins/n8n/n8n-app/src/application-config.ts +45 -0
  297. package/dist/plugins/n8n/n8n-app/src/front-components/thinkwork-workflows.front-component.tsx +970 -0
  298. package/dist/plugins/n8n/n8n-app/src/lib/n8n-app-data.ts +190 -0
  299. package/dist/plugins/n8n/n8n-app/src/vite-env.d.ts +7 -0
  300. package/dist/plugins/n8n/n8n-app/tsconfig.json +15 -0
  301. package/dist/plugins/n8n/package.json +35 -0
  302. package/dist/plugins/n8n/runtime/Dockerfile +18 -0
  303. package/dist/plugins/n8n/runtime/n8n-task-runners.json +14 -0
  304. package/dist/plugins/n8n/runtime/n8n-task-runners.json.template +14 -0
  305. package/dist/plugins/n8n/runtime/package-lock.json +13 -0
  306. package/dist/plugins/n8n/runtime/package.json +7 -0
  307. package/dist/plugins/n8n/scripts/sync-thinkwork-app.mjs +268 -0
  308. package/dist/plugins/n8n/smoke/README.md +95 -0
  309. package/dist/plugins/n8n/smoke/n8n-agent-step-bridge-smoke.mjs +866 -0
  310. package/dist/plugins/n8n/smoke/n8n-integrated-app-smoke.mjs +262 -0
  311. package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +409 -0
  312. package/dist/plugins/n8n/smoke/n8n-mcp-smoke.mjs +624 -0
  313. package/dist/plugins/n8n/src/deployment/image-build.ts +172 -0
  314. package/dist/plugins/n8n/src/deployment/managed-app.ts +429 -0
  315. package/dist/plugins/n8n/src/index.ts +79 -0
  316. package/dist/plugins/n8n/src/manifest.ts +403 -0
  317. package/dist/plugins/n8n/src/package-config.ts +186 -0
  318. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/SKILL.md +76 -0
  319. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
  320. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
  321. package/dist/plugins/n8n/src/skills/n8n-workflow-operator/references/workflow-authoring.md +45 -0
  322. package/dist/plugins/n8n/terraform/n8n/README.md +113 -0
  323. package/dist/plugins/n8n/terraform/n8n/main.tf +918 -0
  324. package/dist/plugins/n8n/terraform/n8n/outputs.tf +124 -0
  325. package/dist/plugins/n8n/terraform/n8n/scripts/sync-database.py +250 -0
  326. package/dist/plugins/n8n/terraform/n8n/scripts/test_sync_database.py +55 -0
  327. package/dist/plugins/n8n/terraform/n8n/variables.tf +354 -0
  328. package/dist/plugins/n8n/test/image-build.test.ts +118 -0
  329. package/dist/plugins/n8n/test/integrated-app-contract.test.ts +353 -0
  330. package/dist/plugins/n8n/test/manifest.test.ts +278 -0
  331. package/dist/plugins/n8n/test/package-config.test.ts +57 -0
  332. package/dist/plugins/n8n/tsconfig.json +8 -0
  333. package/dist/plugins/sendgrid/README.md +30 -0
  334. package/dist/plugins/sendgrid/package.json +22 -0
  335. package/dist/plugins/sendgrid/src/index.ts +36 -0
  336. package/dist/plugins/sendgrid/src/manifest.ts +37 -0
  337. package/dist/plugins/sendgrid/src/provider-contract.ts +14 -0
  338. package/dist/plugins/sendgrid/test/manifest.test.ts +80 -0
  339. package/dist/plugins/sendgrid/tsconfig.json +8 -0
  340. package/dist/plugins/twenty/README.md +78 -0
  341. package/dist/plugins/twenty/package.json +27 -0
  342. package/dist/plugins/twenty/scripts/__tests__/sync-thinkwork-app.test.mjs +67 -0
  343. package/dist/plugins/twenty/scripts/sync-thinkwork-app.mjs +185 -0
  344. package/dist/plugins/twenty/scripts/wire-thinkwork-workflow.mjs +658 -0
  345. package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +359 -0
  346. package/dist/plugins/twenty/smoke/twenty-mcp-oauth-smoke.mjs +574 -0
  347. package/dist/plugins/twenty/src/api/cutover.ts +209 -0
  348. package/dist/plugins/twenty/src/deployment/managed-app.ts +253 -0
  349. package/dist/plugins/twenty/src/index.ts +55 -0
  350. package/dist/plugins/twenty/src/manifest.ts +259 -0
  351. package/dist/plugins/twenty/terraform/twenty/README.md +97 -0
  352. package/dist/plugins/twenty/terraform/twenty/main.tf +829 -0
  353. package/dist/plugins/twenty/terraform/twenty/outputs.tf +79 -0
  354. package/dist/plugins/twenty/terraform/twenty/variables.tf +268 -0
  355. package/dist/plugins/twenty/test/api/cutover.test.ts +183 -0
  356. package/dist/plugins/twenty/test/manifest.test.ts +463 -0
  357. package/dist/plugins/twenty/tsconfig.json +9 -0
  358. package/dist/plugins/twenty/twenty-app/.nvmrc +1 -0
  359. package/dist/plugins/twenty/twenty-app/README.md +148 -0
  360. package/dist/plugins/twenty/twenty-app/package.json +30 -0
  361. package/dist/plugins/twenty/twenty-app/src/application-config.ts +44 -0
  362. package/dist/plugins/twenty/twenty-app/src/constants/universal-identifiers.ts +18 -0
  363. package/dist/plugins/twenty/twenty-app/src/default-role.ts +24 -0
  364. package/dist/plugins/twenty/twenty-app/src/front-components/thinkwork-settings.front-component.tsx +299 -0
  365. package/dist/plugins/twenty/twenty-app/src/logic-functions/thinkwork-webhook.logic-function.ts +354 -0
  366. package/dist/plugins/twenty/twenty-app/tsconfig.json +14 -0
  367. package/dist/plugins/twenty/twenty-app/yarn.lock +4144 -0
  368. package/dist/plugins/workos-auth/package.json +22 -0
  369. package/dist/plugins/workos-auth/src/index.ts +30 -0
  370. package/dist/plugins/workos-auth/src/manifest.ts +40 -0
  371. package/dist/plugins/workos-auth/src/provider-contract.ts +39 -0
  372. package/dist/plugins/workos-auth/test/manifest.test.ts +94 -0
  373. package/dist/plugins/workos-auth/tsconfig.json +8 -0
  374. package/dist/scripts/bootstrap-workspace.sh +162 -0
  375. package/dist/scripts/post-deploy.sh +290 -0
  376. package/dist/terraform/examples/greenfield/main.tf +903 -75
  377. package/dist/terraform/examples/greenfield/terraform.tfvars.example +67 -8
  378. package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +2 -2
  379. package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +8 -9
  380. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +227 -0
  381. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +277 -0
  382. package/dist/terraform/modules/app/agentcore-memory/README.md +6 -6
  383. package/dist/terraform/modules/app/agentcore-memory/main.tf +1 -1
  384. package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +40 -9
  385. package/dist/terraform/modules/app/agentcore-pi/README.md +61 -0
  386. package/dist/terraform/modules/app/agentcore-pi/main.tf +466 -0
  387. package/dist/terraform/modules/app/agentcore-pi/outputs.tf +38 -0
  388. package/dist/terraform/modules/app/agentcore-pi/variables.tf +145 -0
  389. package/dist/terraform/modules/app/agentcore-platform/main.tf +83 -0
  390. package/dist/terraform/modules/app/agentcore-runtime/main.tf +9 -11
  391. package/dist/terraform/modules/app/appsync-subscriptions/main.tf +5 -1
  392. package/dist/terraform/modules/app/customer-domain/main.tf +483 -0
  393. package/dist/terraform/modules/app/deployment-control-plane/README.md +47 -0
  394. package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +24 -0
  395. package/dist/terraform/modules/app/deployment-control-plane/main.tf +614 -0
  396. package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +54 -0
  397. package/dist/terraform/modules/app/deployment-control-plane/runner.py +4720 -0
  398. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +3026 -0
  399. package/dist/terraform/modules/app/deployment-control-plane/variables.tf +96 -0
  400. package/dist/terraform/modules/app/hindsight-memory/README.md +25 -23
  401. package/dist/terraform/modules/app/hindsight-memory/main.tf +26 -2
  402. package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +17 -50
  403. package/dist/terraform/modules/app/lambda-api/handlers.tf +1290 -679
  404. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +933 -0
  405. package/dist/terraform/modules/app/lambda-api/main.tf +14 -527
  406. package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +3 -19
  407. package/dist/terraform/modules/app/lambda-api/outputs.tf +50 -6
  408. package/dist/terraform/modules/app/lambda-api/runtime-config.tf +163 -0
  409. package/dist/terraform/modules/app/lambda-api/slack-app-secrets.tf +3 -1
  410. package/dist/terraform/modules/app/lambda-api/stripe-secrets.tf +3 -1
  411. package/dist/terraform/modules/app/lambda-api/variables.tf +240 -53
  412. package/dist/terraform/modules/app/lambda-api/workspace-events.tf +2 -25
  413. package/dist/terraform/modules/app/ses-email/main.tf +143 -30
  414. package/dist/terraform/modules/app/static-site/main.tf +4 -3
  415. package/dist/terraform/modules/app/www-dns/main.tf +45 -5
  416. package/dist/terraform/modules/app/www-dns/outputs.tf +10 -0
  417. package/dist/terraform/modules/app/www-dns/variables.tf +24 -0
  418. package/dist/terraform/modules/data/aurora-postgres/main.tf +15 -1
  419. package/dist/terraform/modules/data/compliance-exports-bucket/main.tf +1 -1
  420. package/dist/terraform/modules/data/compliance-exports-bucket/variables.tf +6 -0
  421. package/dist/terraform/modules/foundation/cognito/main.tf +167 -11
  422. package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
  423. package/dist/terraform/modules/foundation/cognito/variables.tf +110 -0
  424. package/dist/terraform/modules/foundation/vpc/main.tf +45 -3
  425. package/dist/terraform/modules/foundation/vpc/outputs.tf +20 -0
  426. package/dist/terraform/modules/foundation/vpc/variables.tf +18 -0
  427. package/dist/terraform/modules/thinkwork/README.md +71 -0
  428. package/dist/terraform/modules/thinkwork/main.tf +1325 -174
  429. package/dist/terraform/modules/thinkwork/outputs.tf +457 -24
  430. package/dist/terraform/modules/thinkwork/variables.tf +1169 -93
  431. package/dist/terraform/schema.graphql +82 -9
  432. package/dist/workspace-defaults/files/AGENTS.md +344 -0
  433. package/dist/workspace-defaults/files/CONTEXT.md +8 -0
  434. package/dist/workspace-defaults/files/GUARDRAILS.md +51 -0
  435. package/dist/workspace-defaults/files/MEMORY_GUIDE.md +65 -0
  436. package/dist/workspace-defaults/files/ROUTER.md +24 -0
  437. package/dist/workspace-defaults/files/SPACE.md +62 -0
  438. package/dist/workspace-defaults/files/TOOLS.md +65 -0
  439. package/dist/workspace-defaults/files/USER.md +40 -0
  440. package/dist/workspace-defaults/files/mcp.json +3 -0
  441. package/dist/workspace-defaults/files/memory/contacts.md +13 -0
  442. package/dist/workspace-defaults/files/memory/lessons.md +13 -0
  443. package/dist/workspace-defaults/files/memory/preferences.md +12 -0
  444. package/dist/workspace-defaults/files/skills/.gitkeep +1 -0
  445. package/dist/workspace-defaults/files/skills/artifact-builder/SKILL.md +79 -0
  446. package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +166 -0
  447. package/dist/workspace-defaults/files/skills/automation-loop-designer/SKILL.md +120 -0
  448. package/dist/workspace-defaults/files/skills/skill-creator/LICENSE.txt +202 -0
  449. package/dist/workspace-defaults/files/skills/skill-creator/SKILL.md +485 -0
  450. package/dist/workspace-defaults/files/skills/skill-creator/UPSTREAM.json +124 -0
  451. package/dist/workspace-defaults/files/skills/skill-creator/agents/analyzer.md +274 -0
  452. package/dist/workspace-defaults/files/skills/skill-creator/agents/comparator.md +202 -0
  453. package/dist/workspace-defaults/files/skills/skill-creator/agents/grader.md +223 -0
  454. package/dist/workspace-defaults/files/skills/skill-creator/assets/eval_review.html +146 -0
  455. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  456. package/dist/workspace-defaults/files/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  457. package/dist/workspace-defaults/files/skills/skill-creator/references/schemas.md +430 -0
  458. package/dist/workspace-defaults/files/skills/skill-creator/scripts/__init__.py +0 -0
  459. package/dist/workspace-defaults/files/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  460. package/dist/workspace-defaults/files/skills/skill-creator/scripts/generate_report.py +326 -0
  461. package/dist/workspace-defaults/files/skills/skill-creator/scripts/improve_description.py +247 -0
  462. package/dist/workspace-defaults/files/skills/skill-creator/scripts/package_skill.py +136 -0
  463. package/dist/workspace-defaults/files/skills/skill-creator/scripts/quick_validate.py +103 -0
  464. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_eval.py +310 -0
  465. package/dist/workspace-defaults/files/skills/skill-creator/scripts/run_loop.py +328 -0
  466. package/dist/workspace-defaults/files/skills/skill-creator/scripts/utils.py +47 -0
  467. package/package.json +2 -1
  468. package/dist/terraform/modules/app/agentcore-flue/README.md +0 -58
  469. package/dist/terraform/modules/app/agentcore-flue/main.tf +0 -323
  470. package/dist/terraform/modules/app/agentcore-flue/outputs.tf +0 -23
  471. package/dist/terraform/modules/app/agentcore-flue/variables.tf +0 -97
  472. package/dist/terraform/modules/app/computer-runtime/README.md +0 -15
  473. package/dist/terraform/modules/app/computer-runtime/main.tf +0 -406
  474. package/dist/terraform/modules/app/computer-runtime/outputs.tf +0 -75
  475. package/dist/terraform/modules/app/computer-runtime/variables.tf +0 -66
@@ -0,0 +1,99 @@
1
+ -- Rename persisted Data Integrations plugin keys to Company ETL.
2
+ -- Plan: THNK-71 U3, Rename Data Integrations plugin to Company ETL.
3
+ --
4
+ -- Apply through deploy.yml before the GraphQL Lambda serving the renamed
5
+ -- catalog is deployed:
6
+ -- psql "$DATABASE_URL" -v ON_ERROR_STOP=1 --single-transaction -f packages/database-pg/drizzle/0188_company_etl_plugin_rename.sql
7
+ --
8
+ -- Drift detection:
9
+ -- bash scripts/db-migrate-manual.sh packages/database-pg/drizzle/0188_company_etl_plugin_rename.sql
10
+ --
11
+ -- Pre-flight:
12
+ -- SELECT to_regclass('public.plugin_installs') AS plugin_installs;
13
+ -- SELECT to_regclass('public.plugin_entitlements') AS plugin_entitlements;
14
+ -- SELECT to_regclass('public.plugin_install_keys') AS plugin_install_keys;
15
+ --
16
+ -- creates: public.view_company_etl_plugin_rename_0188
17
+
18
+ DO $$
19
+ BEGIN
20
+ IF to_regclass('public.plugin_installs') IS NULL THEN
21
+ RAISE EXCEPTION 'plugin_installs not found; apply application plugin migrations first';
22
+ END IF;
23
+ IF to_regclass('public.plugin_entitlements') IS NULL THEN
24
+ RAISE EXCEPTION 'plugin_entitlements not found; apply premium plugin migrations first';
25
+ END IF;
26
+ IF to_regclass('public.plugin_install_keys') IS NULL THEN
27
+ RAISE EXCEPTION 'plugin_install_keys not found; apply premium plugin migrations first';
28
+ END IF;
29
+ END $$;
30
+
31
+ DO $$
32
+ BEGIN
33
+ IF EXISTS (
34
+ SELECT 1
35
+ FROM public.plugin_installs
36
+ WHERE plugin_key IN ('data-integrations', 'company-etl')
37
+ GROUP BY tenant_id
38
+ HAVING COUNT(DISTINCT plugin_key) = 2
39
+ ) THEN
40
+ RAISE EXCEPTION 'company-etl rename conflict: tenant has both data-integrations and company-etl plugin_installs rows';
41
+ END IF;
42
+
43
+ IF EXISTS (
44
+ SELECT 1
45
+ FROM public.plugin_entitlements
46
+ WHERE plugin_key IN ('data-integrations', 'company-etl')
47
+ AND status = 'active'
48
+ GROUP BY tenant_id
49
+ HAVING COUNT(DISTINCT plugin_key) = 2
50
+ ) THEN
51
+ RAISE EXCEPTION 'company-etl rename conflict: tenant has both active data-integrations and company-etl plugin_entitlements rows';
52
+ END IF;
53
+ END $$;
54
+
55
+ UPDATE public.plugin_installs
56
+ SET
57
+ plugin_key = 'company-etl',
58
+ pinned_payload_sha256 = '49681471c865d81257872da252538f84345f42b43299c27764fc2714bb2e8abf',
59
+ updated_at = now()
60
+ WHERE plugin_key = 'data-integrations';
61
+
62
+ UPDATE public.plugin_entitlements
63
+ SET
64
+ plugin_key = 'company-etl',
65
+ entitlement_product_key = CASE
66
+ WHEN entitlement_product_key = 'data-integrations' THEN 'company-etl'
67
+ ELSE entitlement_product_key
68
+ END,
69
+ updated_at = now()
70
+ WHERE plugin_key = 'data-integrations';
71
+
72
+ UPDATE public.plugin_install_keys
73
+ SET
74
+ plugin_key = 'company-etl',
75
+ entitlement_product_key = CASE
76
+ WHEN entitlement_product_key = 'data-integrations' THEN 'company-etl'
77
+ ELSE entitlement_product_key
78
+ END,
79
+ updated_at = now()
80
+ WHERE plugin_key = 'data-integrations';
81
+
82
+ CREATE OR REPLACE VIEW public.view_company_etl_plugin_rename_0188 AS
83
+ SELECT
84
+ NOT EXISTS (
85
+ SELECT 1 FROM public.plugin_installs WHERE plugin_key = 'data-integrations'
86
+ ) AS plugin_installs_migrated,
87
+ NOT EXISTS (
88
+ SELECT 1 FROM public.plugin_entitlements WHERE plugin_key = 'data-integrations'
89
+ ) AS plugin_entitlements_migrated,
90
+ NOT EXISTS (
91
+ SELECT 1 FROM public.plugin_install_keys WHERE plugin_key = 'data-integrations'
92
+ ) AS plugin_install_keys_migrated,
93
+ NOT EXISTS (
94
+ SELECT 1
95
+ FROM public.plugin_installs
96
+ WHERE plugin_key = 'company-etl'
97
+ AND pinned_version = '0.1.0'
98
+ AND pinned_payload_sha256 <> '49681471c865d81257872da252538f84345f42b43299c27764fc2714bb2e8abf'
99
+ ) AS company_etl_pinned_payload_digest_current;
@@ -0,0 +1,247 @@
1
+ -- Trusted trace and cost accounting substrate.
2
+ -- Plan: docs/plans/2026-06-25-003-feat-trace-cost-substrate-plan.md (U1).
3
+ --
4
+ -- creates: public.trace_runs
5
+ -- creates: public.trace_events
6
+ -- creates: public.trace_source_evidence
7
+ -- creates: public.trace_cost_reconciliation_facts
8
+ -- creates: public.trace_runs_tenant_trace_uidx
9
+ -- creates: public.trace_runs_thread_turn_idx
10
+ -- creates: public.trace_runs_thread_idx
11
+ -- creates: public.trace_runs_agent_created_idx
12
+ -- creates: public.trace_events_run_observed_idx
13
+ -- creates: public.trace_events_parent_idx
14
+ -- creates: public.trace_events_request_idx
15
+ -- creates: public.trace_events_turn_type_idx
16
+ -- creates: public.trace_source_evidence_run_idx
17
+ -- creates: public.trace_source_evidence_event_idx
18
+ -- creates: public.trace_source_evidence_source_idx
19
+ -- creates: public.trace_cost_recon_facts_cost_event_idx
20
+ -- creates: public.trace_cost_recon_facts_trace_event_idx
21
+ -- creates: public.trace_cost_recon_facts_state_idx
22
+ -- creates: public.trace_cost_recon_facts_request_idx
23
+ -- creates-column: public.cost_events.trace_event_id
24
+ -- creates-column: public.cost_events.reconciliation_state
25
+ -- creates-column: public.cost_events.reconciliation_source
26
+ -- creates-column: public.cost_events.reconciliation_at
27
+ -- creates-column: public.cost_events.source_evidence_ref
28
+
29
+ DO $$
30
+ BEGIN
31
+ IF to_regclass('public.tenants') IS NULL THEN
32
+ RAISE EXCEPTION 'tenants not found; apply core tenant migrations first';
33
+ END IF;
34
+ IF to_regclass('public.users') IS NULL THEN
35
+ RAISE EXCEPTION 'users not found; apply core user migrations first';
36
+ END IF;
37
+ IF to_regclass('public.agents') IS NULL THEN
38
+ RAISE EXCEPTION 'agents not found; apply agent migrations first';
39
+ END IF;
40
+ IF to_regclass('public.thread_turns') IS NULL THEN
41
+ RAISE EXCEPTION 'thread_turns not found; apply scheduled job execution migrations first';
42
+ END IF;
43
+ IF to_regclass('public.cost_events') IS NULL THEN
44
+ RAISE EXCEPTION 'cost_events not found; apply cost event migrations first';
45
+ END IF;
46
+ END $$;
47
+
48
+ CREATE TABLE IF NOT EXISTS public.trace_runs (
49
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
50
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
51
+ trace_id text NOT NULL,
52
+ thread_id uuid,
53
+ thread_turn_id uuid REFERENCES public.thread_turns(id) ON DELETE SET NULL,
54
+ agent_id uuid REFERENCES public.agents(id) ON DELETE SET NULL,
55
+ user_id uuid REFERENCES public.users(id) ON DELETE SET NULL,
56
+ runtime_type text,
57
+ runtime_session_id text,
58
+ status text NOT NULL DEFAULT 'open',
59
+ started_at timestamp with time zone,
60
+ finished_at timestamp with time zone,
61
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
62
+ updated_at timestamp with time zone NOT NULL DEFAULT now()
63
+ );
64
+
65
+ CREATE UNIQUE INDEX IF NOT EXISTS trace_runs_tenant_trace_uidx
66
+ ON public.trace_runs (tenant_id, trace_id);
67
+ CREATE INDEX IF NOT EXISTS trace_runs_thread_turn_idx
68
+ ON public.trace_runs (thread_turn_id);
69
+ CREATE INDEX IF NOT EXISTS trace_runs_thread_idx
70
+ ON public.trace_runs (tenant_id, thread_id);
71
+ CREATE INDEX IF NOT EXISTS trace_runs_agent_created_idx
72
+ ON public.trace_runs (agent_id, created_at);
73
+
74
+ CREATE TABLE IF NOT EXISTS public.trace_events (
75
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
76
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
77
+ trace_run_id uuid NOT NULL REFERENCES public.trace_runs(id) ON DELETE CASCADE,
78
+ parent_event_id uuid REFERENCES public.trace_events(id) ON DELETE SET NULL,
79
+ thread_turn_id uuid REFERENCES public.thread_turns(id) ON DELETE SET NULL,
80
+ request_id text,
81
+ parent_request_id text,
82
+ event_type text NOT NULL,
83
+ event_status text,
84
+ observed_at timestamp with time zone NOT NULL DEFAULT now(),
85
+ duration_ms integer,
86
+ payload_summary jsonb NOT NULL DEFAULT '{}'::jsonb,
87
+ source_evidence_ref jsonb NOT NULL DEFAULT '{}'::jsonb,
88
+ metadata jsonb NOT NULL DEFAULT '{}'::jsonb,
89
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
90
+ CONSTRAINT trace_events_type_check CHECK (
91
+ event_type IN (
92
+ 'turn',
93
+ 'runtime_phase',
94
+ 'model_invocation',
95
+ 'tool_invocation',
96
+ 'memory_context_lookup',
97
+ 'workspace_hydration',
98
+ 'response_finalization',
99
+ 'agent_profile_run',
100
+ 'sub_agent_lane',
101
+ 'cost_observation'
102
+ )
103
+ )
104
+ );
105
+
106
+ CREATE INDEX IF NOT EXISTS trace_events_run_observed_idx
107
+ ON public.trace_events (trace_run_id, observed_at);
108
+ CREATE INDEX IF NOT EXISTS trace_events_parent_idx
109
+ ON public.trace_events (parent_event_id);
110
+ CREATE INDEX IF NOT EXISTS trace_events_request_idx
111
+ ON public.trace_events (tenant_id, request_id);
112
+ CREATE INDEX IF NOT EXISTS trace_events_turn_type_idx
113
+ ON public.trace_events (thread_turn_id, event_type);
114
+
115
+ CREATE TABLE IF NOT EXISTS public.trace_source_evidence (
116
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
117
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
118
+ trace_run_id uuid REFERENCES public.trace_runs(id) ON DELETE CASCADE,
119
+ trace_event_id uuid REFERENCES public.trace_events(id) ON DELETE CASCADE,
120
+ source_type text NOT NULL,
121
+ source_system text NOT NULL,
122
+ source_id text,
123
+ uri text,
124
+ observed_at timestamp with time zone,
125
+ summary jsonb NOT NULL DEFAULT '{}'::jsonb,
126
+ redaction_state text NOT NULL DEFAULT 'summary_only',
127
+ retention_expires_at timestamp with time zone,
128
+ metadata jsonb NOT NULL DEFAULT '{}'::jsonb,
129
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
130
+ CONSTRAINT trace_source_evidence_source_type_check CHECK (
131
+ source_type IN (
132
+ 'runtime',
133
+ 'agentcore_span',
134
+ 'bedrock_invocation_log',
135
+ 'aws_cur',
136
+ 'operator',
137
+ 'backfill'
138
+ )
139
+ )
140
+ );
141
+
142
+ CREATE INDEX IF NOT EXISTS trace_source_evidence_run_idx
143
+ ON public.trace_source_evidence (trace_run_id);
144
+ CREATE INDEX IF NOT EXISTS trace_source_evidence_event_idx
145
+ ON public.trace_source_evidence (trace_event_id);
146
+ CREATE INDEX IF NOT EXISTS trace_source_evidence_source_idx
147
+ ON public.trace_source_evidence (tenant_id, source_type, source_id);
148
+
149
+ CREATE TABLE IF NOT EXISTS public.trace_cost_reconciliation_facts (
150
+ id bigserial PRIMARY KEY,
151
+ tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
152
+ trace_run_id uuid REFERENCES public.trace_runs(id) ON DELETE CASCADE,
153
+ trace_event_id uuid REFERENCES public.trace_events(id) ON DELETE SET NULL,
154
+ cost_event_id uuid REFERENCES public.cost_events(id) ON DELETE SET NULL,
155
+ source_evidence_id uuid REFERENCES public.trace_source_evidence(id) ON DELETE SET NULL,
156
+ reconciliation_state text NOT NULL,
157
+ reconciliation_scope text NOT NULL,
158
+ provider text,
159
+ model text,
160
+ request_id text,
161
+ attribution_level text,
162
+ runtime_input_tokens integer,
163
+ runtime_output_tokens integer,
164
+ runtime_cached_read_tokens integer,
165
+ provider_input_tokens integer,
166
+ provider_output_tokens integer,
167
+ provider_cached_read_tokens integer,
168
+ runtime_amount_usd numeric(12, 6),
169
+ provider_amount_usd numeric(12, 6),
170
+ billed_amount_usd numeric(12, 6),
171
+ variance_usd numeric(12, 6),
172
+ metadata jsonb NOT NULL DEFAULT '{}'::jsonb,
173
+ reconciled_at timestamp with time zone NOT NULL DEFAULT now(),
174
+ created_at timestamp with time zone NOT NULL DEFAULT now(),
175
+ CONSTRAINT trace_cost_recon_facts_state_check CHECK (
176
+ reconciliation_state IN (
177
+ 'runtime-reported',
178
+ 'invocation-reconciled',
179
+ 'bill-reconciled',
180
+ 'mismatch',
181
+ 'unreconciled/error'
182
+ )
183
+ ),
184
+ CONSTRAINT trace_cost_recon_facts_scope_check CHECK (
185
+ reconciliation_scope IN (
186
+ 'runtime',
187
+ 'invocation',
188
+ 'bill',
189
+ 'aggregate',
190
+ 'operator_resolution'
191
+ )
192
+ )
193
+ );
194
+
195
+ CREATE INDEX IF NOT EXISTS trace_cost_recon_facts_cost_event_idx
196
+ ON public.trace_cost_reconciliation_facts (cost_event_id);
197
+ CREATE INDEX IF NOT EXISTS trace_cost_recon_facts_trace_event_idx
198
+ ON public.trace_cost_reconciliation_facts (trace_event_id);
199
+ CREATE INDEX IF NOT EXISTS trace_cost_recon_facts_state_idx
200
+ ON public.trace_cost_reconciliation_facts (
201
+ tenant_id,
202
+ reconciliation_state,
203
+ reconciled_at
204
+ );
205
+ CREATE INDEX IF NOT EXISTS trace_cost_recon_facts_request_idx
206
+ ON public.trace_cost_reconciliation_facts (tenant_id, provider, request_id);
207
+
208
+ ALTER TABLE public.cost_events
209
+ ADD COLUMN IF NOT EXISTS trace_event_id uuid,
210
+ ADD COLUMN IF NOT EXISTS reconciliation_state text NOT NULL DEFAULT 'runtime-reported',
211
+ ADD COLUMN IF NOT EXISTS reconciliation_source text,
212
+ ADD COLUMN IF NOT EXISTS reconciliation_at timestamp with time zone,
213
+ ADD COLUMN IF NOT EXISTS source_evidence_ref jsonb;
214
+
215
+ CREATE INDEX IF NOT EXISTS idx_cost_events_trace_event
216
+ ON public.cost_events (trace_event_id);
217
+ CREATE INDEX IF NOT EXISTS idx_cost_events_reconciliation_state
218
+ ON public.cost_events (tenant_id, reconciliation_state, created_at);
219
+
220
+ DO $$
221
+ BEGIN
222
+ IF NOT EXISTS (
223
+ SELECT 1
224
+ FROM pg_constraint
225
+ WHERE conname = 'cost_events_reconciliation_state_check'
226
+ ) THEN
227
+ ALTER TABLE public.cost_events
228
+ ADD CONSTRAINT cost_events_reconciliation_state_check CHECK (
229
+ reconciliation_state IN (
230
+ 'runtime-reported',
231
+ 'invocation-reconciled',
232
+ 'bill-reconciled',
233
+ 'mismatch',
234
+ 'unreconciled/error'
235
+ )
236
+ );
237
+ END IF;
238
+ END $$;
239
+
240
+ COMMENT ON TABLE public.trace_runs IS
241
+ 'Canonical trace run identity for ThinkWork agent execution evidence.';
242
+ COMMENT ON TABLE public.trace_events IS
243
+ 'Append-only canonical trace event and observation records.';
244
+ COMMENT ON TABLE public.trace_source_evidence IS
245
+ 'Safe references and summaries for provider/runtime/billing source evidence.';
246
+ COMMENT ON TABLE public.trace_cost_reconciliation_facts IS
247
+ 'Append-only facts that reconcile runtime usage, provider invocation evidence, and billing exports.';
@@ -0,0 +1,101 @@
1
+ -- creates: public.billing_export_imports
2
+ -- creates: public.billing_export_line_items
3
+ -- creates-column: public.cost_events.billing_account_id
4
+ -- creates-column: public.cost_events.billing_service_code
5
+ -- creates-column: public.cost_events.billing_operation
6
+ -- creates-column: public.cost_events.billing_period_start
7
+ -- creates-column: public.cost_events.billing_period_end
8
+ -- creates-column: public.cost_events.billing_attribution_level
9
+
10
+ ALTER TABLE "cost_events"
11
+ ADD COLUMN IF NOT EXISTS "billing_account_id" text,
12
+ ADD COLUMN IF NOT EXISTS "billing_service_code" text,
13
+ ADD COLUMN IF NOT EXISTS "billing_operation" text,
14
+ ADD COLUMN IF NOT EXISTS "billing_period_start" timestamp with time zone,
15
+ ADD COLUMN IF NOT EXISTS "billing_period_end" timestamp with time zone,
16
+ ADD COLUMN IF NOT EXISTS "billing_attribution_level" text;
17
+
18
+ CREATE INDEX IF NOT EXISTS "idx_cost_events_billing_period"
19
+ ON "cost_events" ("tenant_id", "billing_service_code", "billing_period_start");
20
+
21
+ CREATE TABLE IF NOT EXISTS "billing_export_imports" (
22
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
23
+ "provider" text DEFAULT 'aws' NOT NULL,
24
+ "source_type" text DEFAULT 'aws_cur' NOT NULL,
25
+ "manifest_bucket" text NOT NULL,
26
+ "manifest_key" text NOT NULL,
27
+ "billing_period_start" timestamp with time zone NOT NULL,
28
+ "billing_period_end" timestamp with time zone NOT NULL,
29
+ "status" text DEFAULT 'imported' NOT NULL,
30
+ "row_count" integer DEFAULT 0 NOT NULL,
31
+ "error_count" integer DEFAULT 0 NOT NULL,
32
+ "error_summary" text,
33
+ "metadata" jsonb DEFAULT '{}'::jsonb NOT NULL,
34
+ "imported_at" timestamp with time zone DEFAULT now() NOT NULL,
35
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
36
+ CONSTRAINT "billing_export_imports_status_check"
37
+ CHECK ("status" IN ('imported', 'imported_with_errors', 'failed'))
38
+ );
39
+
40
+ CREATE UNIQUE INDEX IF NOT EXISTS "billing_export_imports_manifest_uidx"
41
+ ON "billing_export_imports" ("provider", "manifest_bucket", "manifest_key");
42
+
43
+ CREATE INDEX IF NOT EXISTS "billing_export_imports_period_idx"
44
+ ON "billing_export_imports" (
45
+ "provider",
46
+ "billing_period_start",
47
+ "billing_period_end"
48
+ );
49
+
50
+ CREATE TABLE IF NOT EXISTS "billing_export_line_items" (
51
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
52
+ "import_id" uuid NOT NULL REFERENCES "billing_export_imports"("id") ON DELETE cascade,
53
+ "tenant_id" uuid REFERENCES "tenants"("id") ON DELETE set null,
54
+ "provider" text DEFAULT 'aws' NOT NULL,
55
+ "line_item_id" text NOT NULL,
56
+ "usage_account_id" text,
57
+ "service_code" text NOT NULL,
58
+ "operation" text NOT NULL,
59
+ "line_item_type" text,
60
+ "usage_start" timestamp with time zone NOT NULL,
61
+ "usage_end" timestamp with time zone NOT NULL,
62
+ "billing_period_start" timestamp with time zone NOT NULL,
63
+ "billing_period_end" timestamp with time zone NOT NULL,
64
+ "amount_usd" numeric(12, 6) NOT NULL,
65
+ "usage_amount" numeric(20, 6),
66
+ "currency" text DEFAULT 'USD' NOT NULL,
67
+ "model" text DEFAULT 'unknown' NOT NULL,
68
+ "region" text,
69
+ "resource_id" text,
70
+ "attribution_level" text NOT NULL,
71
+ "attribution_key" text NOT NULL,
72
+ "source_uri" text NOT NULL,
73
+ "raw_row" jsonb DEFAULT '{}'::jsonb NOT NULL,
74
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
75
+ CONSTRAINT "billing_export_line_items_attribution_check"
76
+ CHECK ("attribution_level" IN ('tenant', 'account', 'service_window'))
77
+ );
78
+
79
+ CREATE UNIQUE INDEX IF NOT EXISTS "billing_export_line_items_import_line_uidx"
80
+ ON "billing_export_line_items" ("import_id", "line_item_id");
81
+
82
+ CREATE INDEX IF NOT EXISTS "billing_export_line_items_period_idx"
83
+ ON "billing_export_line_items" (
84
+ "provider",
85
+ "billing_period_start",
86
+ "billing_period_end"
87
+ );
88
+
89
+ CREATE INDEX IF NOT EXISTS "billing_export_line_items_tenant_idx"
90
+ ON "billing_export_line_items" (
91
+ "tenant_id",
92
+ "service_code",
93
+ "billing_period_start"
94
+ );
95
+
96
+ CREATE INDEX IF NOT EXISTS "billing_export_line_items_attribution_idx"
97
+ ON "billing_export_line_items" (
98
+ "provider",
99
+ "attribution_level",
100
+ "attribution_key"
101
+ );
@@ -0,0 +1,66 @@
1
+ -- Add Open Engine queue state to native Work Items.
2
+ --
3
+ -- Work Items are the persisted queue substrate for ThinkWork Open Engine:
4
+ -- agents can discover eligible items by queue key, claim them with expiring
5
+ -- leases, and respect human holds independently of generic blocked state.
6
+ --
7
+ -- creates-column: public.work_items.open_engine_enabled
8
+ -- creates-column: public.work_items.open_engine_queue_key
9
+ -- creates-column: public.work_items.open_engine_claimed_by_agent_id
10
+ -- creates-column: public.work_items.open_engine_claimed_at
11
+ -- creates-column: public.work_items.open_engine_claim_expires_at
12
+ -- creates-column: public.work_items.open_engine_human_hold
13
+ -- creates-column: public.work_items.open_engine_human_hold_reason
14
+ -- creates-column: public.work_items.open_engine_scheduled_at
15
+ -- creates-column: public.work_items.open_engine_dependency_state
16
+ -- creates-column: public.work_items.open_engine_routing
17
+ -- creates: public.idx_work_items_open_engine_ready
18
+ -- creates: public.idx_work_items_open_engine_claim
19
+ -- creates-constraint: public.work_items.work_items_open_engine_dependency_state_allowed
20
+
21
+ ALTER TABLE public.work_items
22
+ ADD COLUMN IF NOT EXISTS open_engine_enabled boolean DEFAULT false NOT NULL,
23
+ ADD COLUMN IF NOT EXISTS open_engine_queue_key text,
24
+ ADD COLUMN IF NOT EXISTS open_engine_claimed_by_agent_id uuid REFERENCES public.agents(id) ON DELETE set null,
25
+ ADD COLUMN IF NOT EXISTS open_engine_claimed_at timestamp with time zone,
26
+ ADD COLUMN IF NOT EXISTS open_engine_claim_expires_at timestamp with time zone,
27
+ ADD COLUMN IF NOT EXISTS open_engine_human_hold boolean DEFAULT false NOT NULL,
28
+ ADD COLUMN IF NOT EXISTS open_engine_human_hold_reason text,
29
+ ADD COLUMN IF NOT EXISTS open_engine_scheduled_at timestamp with time zone,
30
+ ADD COLUMN IF NOT EXISTS open_engine_dependency_state text DEFAULT 'ready' NOT NULL,
31
+ ADD COLUMN IF NOT EXISTS open_engine_routing jsonb;
32
+
33
+ DO $$
34
+ BEGIN
35
+ IF NOT EXISTS (
36
+ SELECT 1
37
+ FROM pg_constraint
38
+ WHERE conname = 'work_items_open_engine_dependency_state_allowed'
39
+ AND conrelid = 'public.work_items'::regclass
40
+ ) THEN
41
+ ALTER TABLE public.work_items
42
+ ADD CONSTRAINT work_items_open_engine_dependency_state_allowed
43
+ CHECK (open_engine_dependency_state IN ('ready', 'waiting'));
44
+ END IF;
45
+ END $$;
46
+
47
+ CREATE INDEX IF NOT EXISTS idx_work_items_open_engine_ready
48
+ ON public.work_items (
49
+ tenant_id,
50
+ open_engine_queue_key,
51
+ open_engine_scheduled_at,
52
+ open_engine_claim_expires_at,
53
+ updated_at
54
+ )
55
+ WHERE open_engine_enabled = true
56
+ AND archived_at IS NULL
57
+ AND open_engine_human_hold = false
58
+ AND blocked = false
59
+ AND open_engine_dependency_state = 'ready';
60
+
61
+ CREATE INDEX IF NOT EXISTS idx_work_items_open_engine_claim
62
+ ON public.work_items (
63
+ tenant_id,
64
+ open_engine_claimed_by_agent_id,
65
+ open_engine_claim_expires_at
66
+ );
@@ -0,0 +1,44 @@
1
+ -- creates: public.work_item_labels
2
+ -- creates: public.work_item_label_assignments
3
+ -- creates: public.uq_work_item_labels_tenant_slug
4
+ -- creates: public.idx_work_item_labels_tenant_active
5
+ -- creates: public.uq_work_item_label_assignments_pair
6
+ -- creates: public.idx_work_item_label_assignments_label
7
+ -- creates: public.idx_work_item_label_assignments_item
8
+
9
+ CREATE TABLE IF NOT EXISTS "work_item_labels" (
10
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
11
+ "tenant_id" uuid NOT NULL REFERENCES "tenants"("id") ON DELETE cascade,
12
+ "name" text NOT NULL,
13
+ "slug" text NOT NULL,
14
+ "color" text,
15
+ "description" text,
16
+ "created_by_user_id" uuid REFERENCES "users"("id") ON DELETE set null,
17
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
18
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
19
+ "archived_at" timestamp with time zone
20
+ );
21
+
22
+ CREATE UNIQUE INDEX IF NOT EXISTS "uq_work_item_labels_tenant_slug"
23
+ ON "work_item_labels" ("tenant_id", "slug");
24
+
25
+ CREATE INDEX IF NOT EXISTS "idx_work_item_labels_tenant_active"
26
+ ON "work_item_labels" ("tenant_id", "archived_at", "name");
27
+
28
+ CREATE TABLE IF NOT EXISTS "work_item_label_assignments" (
29
+ "tenant_id" uuid NOT NULL REFERENCES "tenants"("id") ON DELETE cascade,
30
+ "work_item_id" uuid NOT NULL REFERENCES "work_items"("id") ON DELETE cascade,
31
+ "label_id" uuid NOT NULL REFERENCES "work_item_labels"("id") ON DELETE cascade,
32
+ "created_by_user_id" uuid REFERENCES "users"("id") ON DELETE set null,
33
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
34
+ );
35
+
36
+ CREATE UNIQUE INDEX IF NOT EXISTS "uq_work_item_label_assignments_pair"
37
+ ON "work_item_label_assignments" ("tenant_id", "work_item_id", "label_id");
38
+
39
+ CREATE INDEX IF NOT EXISTS "idx_work_item_label_assignments_label"
40
+ ON "work_item_label_assignments" ("tenant_id", "label_id", "work_item_id");
41
+
42
+ CREATE INDEX IF NOT EXISTS "idx_work_item_label_assignments_item"
43
+ ON "work_item_label_assignments" ("tenant_id", "work_item_id");
44
+
@@ -0,0 +1,31 @@
1
+ -- Work Item Documents: tenant-scoped S3-backed document metadata.
2
+ -- creates: public.work_item_documents
3
+ -- creates: public.idx_work_item_documents_item_active
4
+ -- creates: public.idx_work_item_documents_tenant_kind
5
+ -- creates-constraint: public.work_item_documents.work_item_documents_kind_allowed
6
+
7
+ CREATE TABLE IF NOT EXISTS work_item_documents (
8
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
9
+ tenant_id uuid NOT NULL REFERENCES tenants(id) ON DELETE CASCADE,
10
+ work_item_id uuid NOT NULL REFERENCES work_items(id) ON DELETE CASCADE,
11
+ kind text NOT NULL DEFAULT 'note',
12
+ title text NOT NULL,
13
+ content_type text NOT NULL DEFAULT 'text/markdown',
14
+ s3_key text NOT NULL,
15
+ size_bytes integer NOT NULL DEFAULT 0,
16
+ checksum_sha256 text,
17
+ metadata jsonb,
18
+ created_by_user_id uuid REFERENCES users(id) ON DELETE SET NULL,
19
+ created_by_agent_id uuid REFERENCES agents(id) ON DELETE SET NULL,
20
+ created_at timestamptz NOT NULL DEFAULT now(),
21
+ updated_at timestamptz NOT NULL DEFAULT now(),
22
+ archived_at timestamptz,
23
+ CONSTRAINT work_item_documents_kind_allowed
24
+ CHECK (kind IN ('plan','progress','spec','evidence','handoff','note','other'))
25
+ );
26
+
27
+ CREATE INDEX IF NOT EXISTS idx_work_item_documents_item_active
28
+ ON work_item_documents (tenant_id, work_item_id, archived_at, updated_at);
29
+
30
+ CREATE INDEX IF NOT EXISTS idx_work_item_documents_tenant_kind
31
+ ON work_item_documents (tenant_id, kind, archived_at);