thinkwork-cli 0.12.12 → 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 +22123 -9219
  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
@@ -23,6 +23,11 @@ output "identity_pool_id" {
23
23
  value = module.cognito.identity_pool_id
24
24
  }
25
25
 
26
+ output "identity_provider_names" {
27
+ description = "Supported Cognito identity providers for created app clients."
28
+ value = module.cognito.identity_provider_names
29
+ }
30
+
26
31
  output "kms_key_arn" {
27
32
  value = module.kms.key_arn
28
33
  }
@@ -50,6 +55,16 @@ output "bucket_name" {
50
55
  value = module.s3.bucket_name
51
56
  }
52
57
 
58
+ output "billing_export_bucket_name" {
59
+ description = "Configured AWS billing export bucket consumed by the bill reconciler, or empty when not configured."
60
+ value = module.api.billing_export_bucket_name
61
+ }
62
+
63
+ output "billing_export_manifest_key" {
64
+ description = "Configured AWS billing export manifest key consumed by the bill reconciler, or empty when not configured."
65
+ value = module.api.billing_export_manifest_key
66
+ }
67
+
53
68
  output "backups_bucket_name" {
54
69
  description = "S3 bucket for operational backups (pre-drop snapshots from destructive migrations, via the aws_s3 Aurora extension)."
55
70
  value = module.s3_backups.bucket_name
@@ -102,14 +117,64 @@ output "auth_domain" {
102
117
  value = module.cognito.auth_domain
103
118
  }
104
119
 
120
+ output "deployment_control_plane_enabled" {
121
+ description = "Whether the AWS-native deployment control plane is enabled."
122
+ value = var.enable_deployment_control_plane
123
+ }
124
+
125
+ output "deployment_state_machine_arn" {
126
+ description = "Deployment orchestration Step Functions state machine ARN."
127
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].state_machine_arn : (var.deployment_state_machine_arn != "" ? var.deployment_state_machine_arn : null)
128
+ }
129
+
130
+ output "deployment_state_machine_name" {
131
+ description = "Deployment orchestration Step Functions state machine name."
132
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].state_machine_name : null
133
+ }
134
+
135
+ output "deployment_runner_project_name" {
136
+ description = "CodeBuild project name for the deployment runner."
137
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].codebuild_project_name : null
138
+ }
139
+
140
+ output "deployment_runner_project_arn" {
141
+ description = "CodeBuild project ARN for the deployment runner."
142
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].codebuild_project_arn : null
143
+ }
144
+
145
+ output "deployment_evidence_bucket_name" {
146
+ description = "S3 bucket for deployment evidence artifacts."
147
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].evidence_bucket_name : (var.deployment_evidence_bucket != "" ? var.deployment_evidence_bucket : null)
148
+ }
149
+
150
+ output "deployment_ssm_prefix" {
151
+ description = "SSM parameter prefix for deployment control-plane metadata."
152
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].ssm_prefix : null
153
+ }
154
+
155
+ output "deployment_appconfig_application_id" {
156
+ description = "AppConfig application ID for deployment configuration."
157
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].appconfig_application_id : null
158
+ }
159
+
160
+ output "deployment_appconfig_environment_id" {
161
+ description = "AppConfig environment ID for deployment configuration."
162
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].appconfig_environment_id : null
163
+ }
164
+
165
+ output "deployment_appconfig_configuration_profile_id" {
166
+ description = "AppConfig configuration profile ID for deployment configuration."
167
+ value = var.enable_deployment_control_plane ? module.deployment_control_plane[0].appconfig_configuration_profile_id : null
168
+ }
169
+
105
170
  output "mapbox_public_token" {
106
- description = "Mapbox public token used by apps/computer MapView. Surfaced for scripts/build-computer.sh to inline as VITE_MAPBOX_PUBLIC_TOKEN at build time. MapView falls back to OSM tiles when this is empty."
171
+ description = "Mapbox public token used by apps/web MapView. Surfaced for scripts/build-web.sh to inline as VITE_MAPBOX_PUBLIC_TOKEN at build time. MapView falls back to OSM tiles when this is empty."
107
172
  value = var.mapbox_public_token
108
173
  sensitive = true
109
174
  }
110
175
 
111
176
  output "ecr_repository_url" {
112
- value = module.agentcore.ecr_repository_url
177
+ value = module.agentcore_platform.ecr_repository_url
113
178
  }
114
179
 
115
180
  output "agentcore_memory_id" {
@@ -118,7 +183,7 @@ output "agentcore_memory_id" {
118
183
  }
119
184
 
120
185
  output "hindsight_enabled" {
121
- description = "Whether the Hindsight add-on is enabled"
186
+ description = "Whether Hindsight canonical memory is enabled"
122
187
  value = local.hindsight_enabled
123
188
  }
124
189
 
@@ -127,32 +192,356 @@ output "hindsight_endpoint" {
127
192
  value = local.hindsight_enabled ? module.hindsight[0].hindsight_endpoint : null
128
193
  }
129
194
 
130
- # Admin static site
131
- output "admin_distribution_id" {
132
- description = "CloudFront distribution ID for the admin app"
133
- value = module.admin_site.distribution_id
195
+ output "cognee_enabled" {
196
+ description = "Whether the Cognee ontology/knowledge-graph add-on is enabled"
197
+ value = local.cognee_enabled
198
+ }
199
+
200
+ output "cognee_endpoint" {
201
+ description = "Internal Cognee API endpoint (null when enable_cognee = false)"
202
+ value = local.cognee_enabled ? module.cognee[0].cognee_endpoint : null
203
+ }
204
+
205
+ output "cognee_log_group_name" {
206
+ description = "CloudWatch log group for Cognee (null when enable_cognee = false)"
207
+ value = local.cognee_enabled ? module.cognee[0].cognee_log_group_name : null
208
+ }
209
+
210
+ output "cognee_task_role_arn" {
211
+ description = "IAM role assumed by the Cognee ECS task (null when enable_cognee = false)"
212
+ value = local.cognee_enabled ? module.cognee[0].cognee_task_role_arn : null
213
+ }
214
+
215
+ output "cognee_execution_role_arn" {
216
+ description = "IAM role used by ECS to pull the Cognee image and inject secrets (null when enable_cognee = false)"
217
+ value = local.cognee_enabled ? module.cognee[0].cognee_execution_role_arn : null
218
+ }
219
+
220
+ output "cognee_backend_mode" {
221
+ description = "Selected Cognee backend mode (null when enable_cognee = false)"
222
+ value = local.cognee_enabled ? module.cognee[0].cognee_backend_mode : null
223
+ }
224
+
225
+ output "cognee_brain_instance_key" {
226
+ description = "Tenant-scoped Company Brain instance key (null when enable_cognee = false or legacy stage-wide mode)."
227
+ value = local.cognee_enabled ? module.cognee[0].cognee_brain_instance_key : null
228
+ }
229
+
230
+ output "cognee_brain_tenant_id" {
231
+ description = "Tenant ID owning this Company Brain substrate instance (null when enable_cognee = false or legacy stage-wide mode)."
232
+ value = local.cognee_enabled ? module.cognee[0].cognee_brain_tenant_id : null
233
+ }
234
+
235
+ output "cognee_brain_storage_tier" {
236
+ description = "Company Brain storage tier (null when enable_cognee = false)."
237
+ value = local.cognee_enabled ? module.cognee[0].cognee_brain_storage_tier : null
238
+ }
239
+
240
+ output "cognee_graph_database_provider" {
241
+ description = "Cognee graph provider selected for Company Brain (null when enable_cognee = false)."
242
+ value = local.cognee_enabled ? module.cognee[0].cognee_graph_database_provider : null
134
243
  }
135
244
 
136
- output "admin_distribution_domain" {
137
- description = "CloudFront domain for the admin app"
138
- value = module.admin_site.distribution_domain
245
+ output "cognee_vector_db_provider" {
246
+ description = "Cognee vector provider selected for Company Brain (null when enable_cognee = false)."
247
+ value = local.cognee_enabled ? module.cognee[0].cognee_vector_db_provider : null
139
248
  }
140
249
 
141
- output "admin_bucket_name" {
142
- description = "S3 bucket for admin app assets"
143
- value = module.admin_site.bucket_name
250
+ output "cognee_embedding_model" {
251
+ description = "Embedding model selected for Company Brain (null when enable_cognee = false)."
252
+ value = local.cognee_enabled ? module.cognee[0].cognee_embedding_model : null
253
+ }
254
+
255
+ output "cognee_embedding_dimensions" {
256
+ description = "Embedding vector dimension selected for Company Brain (null when enable_cognee = false)."
257
+ value = local.cognee_enabled ? module.cognee[0].cognee_embedding_dimensions : null
258
+ }
259
+
260
+ output "cognee_cluster_arn" {
261
+ description = "Company Brain ECS cluster ARN hosting the Cognee service (null when enable_cognee = false)"
262
+ value = local.cognee_enabled ? module.cognee[0].cognee_cluster_arn : null
263
+ }
264
+
265
+ output "cognee_service_name" {
266
+ description = "ECS service name for Cognee (null when enable_cognee = false)"
267
+ value = local.cognee_enabled ? module.cognee[0].cognee_service_name : null
268
+ }
269
+
270
+ output "cognee_security_group_id" {
271
+ description = "Security group ID for the Cognee ECS task (null when enable_cognee = false)"
272
+ value = local.cognee_enabled ? module.cognee[0].cognee_security_group_id : null
273
+ }
274
+
275
+ output "cognee_worker_security_group_id" {
276
+ description = "Security group ID attached to the Knowledge Graph ingest worker Lambda (null when enable_cognee = false)"
277
+ value = local.cognee_enabled ? aws_security_group.cognee_worker[0].id : null
278
+ }
279
+
280
+ output "knowledge_graph_thread_ingest_fn_name" {
281
+ description = "Knowledge Graph thread ingest worker Lambda function name"
282
+ value = module.api.knowledge_graph_thread_ingest_fn_name
283
+ }
284
+
285
+ output "knowledge_graph_thread_ingest_fn_arn" {
286
+ description = "Knowledge Graph thread ingest worker Lambda ARN"
287
+ value = module.api.knowledge_graph_thread_ingest_fn_arn
288
+ }
289
+
290
+ output "brain_artifacts_bucket_name" {
291
+ description = "Canonical Company Brain S3 bucket for source artifacts, ingestion manifests, migration snapshots, vault projections, and exports."
292
+ value = module.api.brain_artifacts_bucket_name
293
+ }
294
+
295
+ output "brain_artifacts_bucket_arn" {
296
+ description = "ARN of the canonical Company Brain artifact bucket."
297
+ value = module.api.brain_artifacts_bucket_arn
298
+ }
299
+
300
+ output "okf_wiki_efs_enabled" {
301
+ description = "Whether the OKF Wiki Navigator EFS current-view substrate is provisioned and wired."
302
+ value = var.okf_wiki_efs_enabled
303
+ }
304
+
305
+ output "okf_wiki_efs_file_system_id" {
306
+ description = "EFS file system ID for the OKF wiki current view, or null when disabled."
307
+ value = var.okf_wiki_efs_enabled ? aws_efs_file_system.okf_wiki[0].id : null
308
+ }
309
+
310
+ output "okf_wiki_refresh_access_point_arn" {
311
+ description = "EFS access point ARN used by the okf-efs-refresh hydrator, or null when disabled."
312
+ value = var.okf_wiki_efs_enabled ? aws_efs_access_point.okf_wiki_refresh[0].arn : null
313
+ }
314
+
315
+ output "okf_wiki_pi_read_access_point_arn" {
316
+ description = "EFS access point ARN mounted by Pi for read-only OKF wiki traversal, or null when disabled."
317
+ value = var.okf_wiki_efs_enabled ? aws_efs_access_point.okf_wiki_pi_read[0].arn : null
318
+ }
319
+
320
+ output "okf_efs_refresh_fn_name" {
321
+ description = "OKF EFS refresh Lambda function name."
322
+ value = module.api.okf_efs_refresh_fn_name
323
+ }
324
+
325
+ output "okf_efs_refresh_fn_arn" {
326
+ description = "OKF EFS refresh Lambda ARN."
327
+ value = module.api.okf_efs_refresh_fn_arn
328
+ }
329
+
330
+ output "cognee_storage_file_system_id" {
331
+ description = "EFS file system ID backing Cognee writable data/system directories (null when enable_cognee = false)"
332
+ value = local.cognee_enabled ? module.cognee[0].cognee_storage_file_system_id : null
333
+ }
334
+
335
+ output "cognee_s3_artifact_root" {
336
+ description = "Canonical Company Brain S3 source artifact root (null when enable_cognee = false)."
337
+ value = local.cognee_enabled ? module.cognee[0].cognee_s3_artifact_root : null
338
+ }
339
+
340
+ output "cognee_s3_manifest_root" {
341
+ description = "Canonical Company Brain S3 ingestion manifest root (null when enable_cognee = false)."
342
+ value = local.cognee_enabled ? module.cognee[0].cognee_s3_manifest_root : null
343
+ }
344
+
345
+ output "cognee_s3_vault_projection_root" {
346
+ description = "Canonical Company Brain S3 vault projection root (null when enable_cognee = false)."
347
+ value = local.cognee_enabled ? module.cognee[0].cognee_s3_vault_projection_root : null
348
+ }
349
+
350
+ output "cognee_neptune_graph_id" {
351
+ description = "Neptune Analytics graph ID for production Company Brain (null when enable_cognee = false)."
352
+ value = local.cognee_enabled ? module.cognee[0].cognee_neptune_graph_id : null
353
+ }
354
+
355
+ output "cognee_neptune_endpoint" {
356
+ description = "Neptune Analytics endpoint for production Company Brain (null when enable_cognee = false)."
357
+ value = local.cognee_enabled ? module.cognee[0].cognee_neptune_endpoint : null
358
+ }
359
+
360
+ output "cognee_private_substrate_mode" {
361
+ description = "Whether Company Brain substrate is private/internal-only (null when enable_cognee = false)."
362
+ value = local.cognee_enabled ? module.cognee[0].cognee_private_substrate_mode : null
363
+ }
364
+
365
+ output "cognee_production_posture" {
366
+ description = "Operator evidence string for production-tier approval/readiness posture (null when enable_cognee = false)."
367
+ value = local.cognee_enabled ? module.cognee[0].cognee_production_posture : null
368
+ }
369
+
370
+ output "twenty_provisioned" {
371
+ description = "Whether the Twenty CRM retained managed-app substrate is provisioned"
372
+ value = local.twenty_provisioned
373
+ }
374
+
375
+ output "twenty_runtime_enabled" {
376
+ description = "Whether the Twenty CRM server/worker runtime is enabled"
377
+ value = local.twenty_runtime_enabled
378
+ }
379
+
380
+ output "twenty_url" {
381
+ description = "Public Twenty CRM URL (null when twenty_provisioned = false)"
382
+ value = local.twenty_provisioned ? module.twenty[0].twenty_url : null
383
+ }
384
+
385
+ output "twenty_alb_dns_name" {
386
+ description = "Public ALB DNS name for Twenty CRM (null when twenty_provisioned = false)"
387
+ value = local.twenty_provisioned ? module.twenty[0].twenty_alb_dns_name : null
388
+ }
389
+
390
+ output "twenty_alb_arn" {
391
+ description = "Public ALB ARN for Twenty CRM (null when twenty_provisioned = false)"
392
+ value = local.twenty_provisioned ? module.twenty[0].twenty_alb_arn : null
393
+ }
394
+
395
+ output "twenty_target_group_arn" {
396
+ description = "Target group ARN for Twenty CRM server (null when twenty_provisioned = false)"
397
+ value = local.twenty_provisioned ? module.twenty[0].twenty_target_group_arn : null
398
+ }
399
+
400
+ output "twenty_cluster_arn" {
401
+ description = "ECS cluster ARN for Twenty CRM (null when twenty_provisioned = false)"
402
+ value = local.twenty_provisioned ? module.twenty[0].twenty_cluster_arn : null
403
+ }
404
+
405
+ output "twenty_server_service_name" {
406
+ description = "ECS service name for the Twenty server (null when twenty_provisioned = false)"
407
+ value = local.twenty_provisioned ? module.twenty[0].twenty_server_service_name : null
408
+ }
409
+
410
+ output "twenty_worker_service_name" {
411
+ description = "ECS service name for the Twenty worker (null when twenty_provisioned = false)"
412
+ value = local.twenty_provisioned ? module.twenty[0].twenty_worker_service_name : null
413
+ }
414
+
415
+ output "twenty_server_log_group_name" {
416
+ description = "CloudWatch log group for the Twenty server (null when twenty_provisioned = false)"
417
+ value = local.twenty_provisioned ? module.twenty[0].twenty_server_log_group_name : null
418
+ }
419
+
420
+ output "twenty_worker_log_group_name" {
421
+ description = "CloudWatch log group for the Twenty worker (null when twenty_provisioned = false)"
422
+ value = local.twenty_provisioned ? module.twenty[0].twenty_worker_log_group_name : null
423
+ }
424
+
425
+ output "twenty_cache_endpoint" {
426
+ description = "ElastiCache primary endpoint for Twenty CRM (null when twenty_provisioned = false)"
427
+ value = local.twenty_provisioned ? module.twenty[0].twenty_cache_endpoint : null
428
+ }
429
+
430
+ output "twenty_storage_file_system_id" {
431
+ description = "EFS file system ID backing Twenty CRM local storage (null when twenty_provisioned = false)"
432
+ value = local.twenty_provisioned ? module.twenty[0].twenty_storage_file_system_id : null
433
+ }
434
+
435
+ output "n8n_provisioned" {
436
+ description = "Whether the retained n8n substrate is provisioned"
437
+ value = local.n8n_provisioned
438
+ }
439
+
440
+ output "n8n_runtime_enabled" {
441
+ description = "Whether n8n ECS services are configured to run"
442
+ value = local.n8n_runtime_enabled
443
+ }
444
+
445
+ output "n8n_url" {
446
+ description = "Public n8n URL (null when n8n_provisioned = false)"
447
+ value = local.n8n_provisioned ? module.n8n[0].n8n_url : null
448
+ }
449
+
450
+ output "n8n_alb_dns_name" {
451
+ description = "Public ALB DNS name for n8n (null when n8n_provisioned = false)"
452
+ value = local.n8n_provisioned ? module.n8n[0].n8n_alb_dns_name : null
453
+ }
454
+
455
+ output "n8n_alb_arn" {
456
+ description = "Public ALB ARN for n8n (null when n8n_provisioned = false)"
457
+ value = local.n8n_provisioned ? module.n8n[0].n8n_alb_arn : null
458
+ }
459
+
460
+ output "n8n_target_group_arn" {
461
+ description = "Target group ARN for the n8n main service (null when n8n_provisioned = false)"
462
+ value = local.n8n_provisioned ? module.n8n[0].n8n_target_group_arn : null
463
+ }
464
+
465
+ output "n8n_cluster_arn" {
466
+ description = "ECS cluster ARN for n8n (null when n8n_provisioned = false)"
467
+ value = local.n8n_provisioned ? module.n8n[0].n8n_cluster_arn : null
468
+ }
469
+
470
+ output "n8n_main_service_name" {
471
+ description = "ECS service name for the n8n main service (null when n8n_provisioned = false)"
472
+ value = local.n8n_provisioned ? module.n8n[0].n8n_main_service_name : null
473
+ }
474
+
475
+ output "n8n_worker_service_name" {
476
+ description = "ECS service name for the n8n worker service (null when n8n_provisioned = false)"
477
+ value = local.n8n_provisioned ? module.n8n[0].n8n_worker_service_name : null
478
+ }
479
+
480
+ output "n8n_main_log_group_name" {
481
+ description = "CloudWatch log group for the n8n main service (null when n8n_provisioned = false)"
482
+ value = local.n8n_provisioned ? module.n8n[0].n8n_main_log_group_name : null
483
+ }
484
+
485
+ output "n8n_worker_log_group_name" {
486
+ description = "CloudWatch log group for the n8n worker service (null when n8n_provisioned = false)"
487
+ value = local.n8n_provisioned ? module.n8n[0].n8n_worker_log_group_name : null
488
+ }
489
+
490
+ output "n8n_database_name" {
491
+ description = "Dedicated n8n database name (null when n8n_provisioned = false)"
492
+ value = local.n8n_provisioned ? module.n8n[0].n8n_database_name : null
493
+ }
494
+
495
+ output "n8n_database_secret_arn" {
496
+ description = "Secrets Manager ARN used for n8n database runtime credentials (null when n8n_provisioned = false)"
497
+ value = local.n8n_provisioned ? module.n8n[0].n8n_database_secret_arn : null
498
+ }
499
+
500
+ output "n8n_valkey_endpoint" {
501
+ description = "ElastiCache primary endpoint for n8n queue mode (null when n8n_provisioned = false)"
502
+ value = local.n8n_provisioned ? module.n8n[0].n8n_valkey_endpoint : null
503
+ }
504
+
505
+ output "n8n_storage_bucket_name" {
506
+ description = "S3 bucket name used for n8n managed artifacts (null when n8n_provisioned = false)"
507
+ value = local.n8n_provisioned ? module.n8n[0].n8n_storage_bucket_name : null
508
+ }
509
+
510
+ output "n8n_storage_prefix" {
511
+ description = "S3 prefix reserved for n8n managed artifacts (null when n8n_provisioned = false)"
512
+ value = local.n8n_provisioned ? module.n8n[0].n8n_storage_prefix : null
513
+ }
514
+
515
+ output "n8n_image_digest" {
516
+ description = "Immutable digest extracted from the n8n wrapper image URI (null when n8n_provisioned = false)"
517
+ value = local.n8n_provisioned ? module.n8n[0].n8n_image_digest : null
518
+ }
519
+
520
+ output "n8n_package_config_digest" {
521
+ description = "Digest of the reviewed n8n custom-package configuration (null when n8n_provisioned = false)"
522
+ value = local.n8n_provisioned ? module.n8n[0].n8n_package_config_digest : null
523
+ }
524
+
525
+ output "n8n_service_credential_secret_arn" {
526
+ description = "Secrets Manager ARN used for the n8n MCP tenant service credential (null when n8n_provisioned = false)"
527
+ value = local.n8n_provisioned ? module.n8n[0].n8n_service_credential_secret_arn : null
528
+ }
529
+
530
+ output "n8n_agent_step_bridge_credential_secret_arn" {
531
+ description = "Secrets Manager ARN used for the inbound n8n agent-step bridge credential (null when n8n_provisioned = false)"
532
+ value = local.n8n_provisioned ? module.n8n[0].n8n_agent_step_bridge_credential_secret_arn : null
144
533
  }
145
534
 
146
535
  output "admin_url" {
147
- description = "Public URL for the admin app (custom domain when set, CloudFront default otherwise)"
148
- value = var.admin_domain != "" ? "https://${var.admin_domain}" : "https://${module.admin_site.distribution_domain}"
536
+ description = "Deprecated compatibility alias for app_url"
537
+ value = local.end_user_app_url
149
538
  }
150
539
 
151
540
  locals {
152
541
  end_user_app_url = local.end_user_app_domain != "" ? "https://${local.end_user_app_domain}" : "https://${module.computer_site.distribution_domain}"
153
542
  }
154
543
 
155
- # End-user app static site (apps/computer — internal package name retained)
544
+ # End-user app static site (apps/web).
156
545
  output "app_distribution_id" {
157
546
  description = "CloudFront distribution ID for the end-user app"
158
547
  value = module.computer_site.distribution_id
@@ -169,12 +558,46 @@ output "app_bucket_name" {
169
558
  }
170
559
 
171
560
  output "app_url" {
172
- description = "Public URL for the end-user app (custom app domain when set, CloudFront default otherwise)"
561
+ description = "Public URL for the end-user app (delegated customer domain first, then custom app domain, CloudFront default otherwise)"
173
562
  value = local.end_user_app_url
174
563
  }
175
564
 
565
+ # Customer domain (<name>.thinkwork.ai). Zone outputs are populated as soon
566
+ # as customer_domain is set; the certificate output waits for the
567
+ # customer_domain_delegated gate. The name servers are the phase-two input
568
+ # for the namespace claim tool's `claim --set-targets <ns...>`.
569
+ output "customer_domain" {
570
+ description = "Customer domain configured for this deployment (empty when none)"
571
+ value = var.customer_domain
572
+ }
573
+
574
+ output "customer_domain_zone_id" {
575
+ description = "Route53 hosted zone ID for the customer domain (empty when no customer domain is configured)"
576
+ value = module.customer_domain.zone_id
577
+ }
578
+
579
+ output "customer_domain_name_servers" {
580
+ description = "The four Route53 name servers for the customer-domain zone — publish these via the claim tool's `claim --set-targets` to delegate (empty when no customer domain is configured)"
581
+ value = module.customer_domain.name_servers
582
+ }
583
+
584
+ output "customer_domain_certificate_arn" {
585
+ description = "Validated ACM certificate ARN for the customer domain (us-east-1; empty until customer_domain_delegated is true)"
586
+ value = module.customer_domain.certificate_arn
587
+ }
588
+
589
+ output "customer_domain_ses_identity_arn" {
590
+ description = "SES domain identity ARN for the customer domain (empty when no customer domain is configured). Candidate cognito_email_source_arn value — switching Cognito email to it is an operator action taken only after the identity verifies and SES production access is granted (R11), never automatic."
591
+ value = module.customer_domain.ses_identity_arn
592
+ }
593
+
594
+ output "customer_domain_ses_rule_set_name" {
595
+ description = "SES receipt rule set name owned by the customer-domain module (empty when no customer domain is configured). Active only when the ses-email module is disabled in this account — KTD6."
596
+ value = module.customer_domain.rule_set_name
597
+ }
598
+
176
599
  # Deprecated compatibility aliases. Keep these stable for existing scripts and
177
- # external callers while the source package remains apps/computer.
600
+ # external callers while the source path is apps/web.
178
601
  output "computer_distribution_id" {
179
602
  description = "Deprecated alias for app_distribution_id"
180
603
  value = module.computer_site.distribution_id
@@ -197,7 +620,7 @@ output "computer_url" {
197
620
 
198
621
  # Computer sandbox subdomain (plan-012 U3 / U11.5 — iframe-isolated
199
622
  # fragment substrate). Provisioned only when var.computer_sandbox_domain
200
- # is set. scripts/build-computer.sh reads these to sync the iframe-shell
623
+ # is set. scripts/build-web.sh reads these to sync the iframe-shell
201
624
  # bundle and invalidate the sandbox distribution.
202
625
  output "computer_sandbox_distribution_id" {
203
626
  description = "CloudFront distribution ID for the iframe-isolated sandbox subdomain (empty when not provisioned)"
@@ -220,8 +643,8 @@ output "computer_sandbox_url" {
220
643
  }
221
644
 
222
645
  output "computer_sandbox_allowed_parent_origins" {
223
- description = "Comma-separated list of trusted parent origins for the iframe-shell. Mirrors the CSP frame-ancestors directive on the sandbox distribution and is wired into the iframe-shell's __ALLOWED_PARENT_ORIGINS__ Vite define at build time."
224
- value = var.computer_sandbox_allowed_parent_origins
646
+ description = "Comma-separated list of trusted parent origins for the iframe-shell, including desktop custom-protocol origins. Mirrors the CSP frame-ancestors directive on the sandbox distribution and is wired into the iframe-shell's __ALLOWED_PARENT_ORIGINS__ Vite define at build time."
647
+ value = local.computer_sandbox_allowed_parent_origins_effective
225
648
  }
226
649
 
227
650
  # Docs static site
@@ -257,18 +680,28 @@ output "www_bucket_name" {
257
680
  }
258
681
 
259
682
  # SES inbound email
683
+ output "ses_inbound_zone_ids" {
684
+ description = "Route53 hosted zone IDs for tenant email subdomains, keyed by tenant slug"
685
+ value = module.ses.zone_ids
686
+ }
687
+
260
688
  output "ses_inbound_zone_id" {
261
- description = "Route53 hosted zone ID for the email subdomain (null when ses_inbound_domain is not set)"
689
+ description = "Route53 hosted zone ID for the legacy email subdomain (null when ses_inbound_domain is not set)"
262
690
  value = module.ses.zone_id
263
691
  }
264
692
 
693
+ output "ses_tenant_name_servers" {
694
+ description = "Name servers for delegated tenant email subzones, keyed by tenant slug. Publish each set as NS records at the parent domain host before SES can verify."
695
+ value = module.ses.tenant_name_servers
696
+ }
697
+
265
698
  output "ses_inbound_name_servers" {
266
- description = "Name servers for the delegated email subzone. Paste these as NS records at the registrar that hosts the parent domain (e.g. Google Domains) before SES can verify."
699
+ description = "Name servers for the legacy delegated email subzone. Keep until legacy-address retirement notices are no longer needed."
267
700
  value = module.ses.name_servers
268
701
  }
269
702
 
270
703
  output "ses_inbound_mx_target" {
271
- description = "MX target host for the email subdomain. Terraform already writes this into the subzone — this output is informational."
704
+ description = "MX target host for tenant email subdomains. Terraform already writes this into each subzone — this output is informational."
272
705
  value = module.ses.mx_target
273
706
  }
274
707