thinkwork-cli 0.13.2 → 1.0.0

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 (231) hide show
  1. package/README.md +3 -14
  2. package/dist/{api-client-JYZXYQJR.js → api-client-4P4JZOBX.js} +1 -1
  3. package/dist/{chunk-Z2F6RJFR.js → chunk-4OMDWYZQ.js} +4 -5
  4. package/dist/{chunk-ILZKG5WV.js → chunk-AD2NIWB5.js} +434 -69
  5. package/dist/chunk-MWQ7RO76.js +137 -0
  6. package/dist/{chunk-DVPBI5HM.js → chunk-OLUQ4U2Z.js} +26 -26
  7. package/dist/{chunk-QOERT44A.js → chunk-YQCYD6NE.js} +57 -44
  8. package/dist/cli.js +4400 -16431
  9. package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +0 -1
  10. package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +0 -1
  11. package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +0 -14
  12. package/dist/{dist-es-CRV46D5B.js → dist-es-2OTNTL4N.js} +4 -4
  13. package/dist/{dist-es-ENBUC3JP.js → dist-es-2XVAH4BQ.js} +2 -2
  14. package/dist/{dist-es-DCY4IC3Y.js → dist-es-3DPDUJAH.js} +2 -2
  15. package/dist/{dist-es-G7PTG75M.js → dist-es-BNZTBBVC.js} +1 -1
  16. package/dist/{dist-es-GKDBE7E6.js → dist-es-CD2RBDAC.js} +1 -1
  17. package/dist/{dist-es-R7FGL2IB.js → dist-es-I4FW57PS.js} +1 -1
  18. package/dist/{dist-es-USORBXZ5.js → dist-es-KVFWJNDY.js} +4 -4
  19. package/dist/{dist-es-HY3535OI.js → dist-es-PS73DWNL.js} +2 -2
  20. package/dist/{dist-es-LDE437AM.js → dist-es-S3NZQFGT.js} +1 -1
  21. package/dist/{dist-es-G54LBMRN.js → dist-es-SGCA4P32.js} +1 -1
  22. package/dist/{dist-es-Q57SZXZ7.js → dist-es-WBM6J4RA.js} +2 -2
  23. package/dist/{dist-es-P26FWFLT.js → dist-es-ZGVADYIF.js} +8 -8
  24. package/dist/drizzle/0227_analyst_reader_role.sql +17 -26
  25. package/dist/drizzle/0230_analyst_rls.sql +28 -45
  26. package/dist/drizzle/0261_native_auth_control_plane.sql +7 -3
  27. package/dist/drizzle/0270_tool_execution_ledger.sql +115 -0
  28. package/dist/drizzle/0271_ontology_twin_declarations.sql +47 -0
  29. package/dist/drizzle/0272_identity_graph_projection_cursor.sql +23 -0
  30. package/dist/drizzle/0273_twin_materialization_suggestions.sql +29 -0
  31. package/dist/drizzle/0274_tenant_mcp_twin_keys.sql +59 -0
  32. package/dist/drizzle/0275_identity_bulk_rebuild_fence.sql +30 -0
  33. package/dist/drizzle/0276_tool_execution_ledger_allow_cascade_delete.sql +18 -0
  34. package/dist/drizzle/0277_knowledge_base_sources.sql +107 -0
  35. package/dist/drizzle/0278_kb_page_transcription.sql +55 -0
  36. package/dist/drizzle/0279_mcp_servers_off_plugin_provenance.sql +93 -0
  37. package/dist/drizzle/0280_work_item_external_refs_drop_plane_provider.sql +46 -0
  38. package/dist/drizzle/0281_tenant_mcp_twin_keys_expiry_suffix.sql +9 -0
  39. package/dist/drizzle/0282_tenant_mcp_twin_keys_grants.sql +24 -0
  40. package/dist/drizzle/0283_agents_agentcore_runtime_dispatch.sql +13 -0
  41. package/dist/drizzle/0284_user_brain_claims.sql +69 -0
  42. package/dist/drizzle/0285_tenant_mcp_twin_keys_trusted_subsystem.sql +30 -0
  43. package/dist/drizzle/0286_brain_analytics_key.sql +26 -0
  44. package/dist/drizzle/0287_brain_subject.sql +25 -0
  45. package/dist/drizzle/0288_multi_lane_identities.sql +25 -0
  46. package/dist/{loadSso-DJVB7BXE.js → loadSso-ETCXTR4I.js} +2 -2
  47. package/dist/{loadSso-JAMNA3WY.js → loadSso-UBD7KUHE.js} +2 -2
  48. package/dist/plugins/README.md +2 -2
  49. package/dist/plugins/catalog/package.json +0 -3
  50. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +6 -3
  51. package/dist/plugins/catalog/src/__tests__/catalog.test.ts +21 -21
  52. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +102 -25
  53. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +7 -6
  54. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +0 -15
  55. package/dist/plugins/catalog/src/contracts.ts +15 -0
  56. package/dist/plugins/catalog/src/registry/generated-first-party.ts +0 -18
  57. package/dist/plugins/n8n/test/integrated-app-contract.test.ts +1 -1
  58. package/dist/plugins/twenty/package.json +2 -1
  59. package/dist/plugins/twenty/scripts/LAMBDA_DEPLOY.md +114 -0
  60. package/dist/plugins/twenty/scripts/build-lambda.sh +29 -0
  61. package/dist/plugins/twenty/scripts/configure-product-views.ts +195 -0
  62. package/dist/plugins/twenty/scripts/lambda-handler.ts +49 -0
  63. package/dist/plugins/twenty/scripts/lib/__tests__/load-attachments.test.ts +38 -0
  64. package/dist/plugins/twenty/scripts/lib/__tests__/load-records.test.ts +145 -2
  65. package/dist/plugins/twenty/scripts/lib/__tests__/mappers.test.ts +397 -151
  66. package/dist/plugins/twenty/scripts/lib/__tests__/members-ensure.test.ts +28 -129
  67. package/dist/plugins/twenty/scripts/lib/__tests__/provision-members-db.test.ts +10 -0
  68. package/dist/plugins/twenty/scripts/lib/__tests__/schema-ensure.test.ts +13 -8
  69. package/dist/plugins/twenty/scripts/lib/lastmile-reader.ts +222 -2
  70. package/dist/plugins/twenty/scripts/lib/load-attachments.ts +29 -0
  71. package/dist/plugins/twenty/scripts/lib/load-records.ts +160 -43
  72. package/dist/plugins/twenty/scripts/lib/mappers.ts +368 -152
  73. package/dist/plugins/twenty/scripts/lib/members-ensure.ts +43 -268
  74. package/dist/plugins/twenty/scripts/lib/provision-members-db.ts +57 -0
  75. package/dist/plugins/twenty/scripts/lib/schema-ensure.ts +136 -31
  76. package/dist/plugins/twenty/scripts/migrate-lastmile.ts +254 -152
  77. package/dist/plugins/twenty/scripts/provision-twenty-members.ts +44 -1
  78. package/dist/plugins/twenty/scripts/purge-lastmile-import.ts +178 -0
  79. package/dist/plugins/twenty/scripts/restructure-products.ts +312 -0
  80. package/dist/plugins/twenty/scripts/retag-stage-values.ts +362 -0
  81. package/dist/plugins/twenty/test/manifest.test.ts +2 -4
  82. package/dist/scripts/post-deploy.sh +79 -1
  83. package/dist/{signin-UGDWTGS4.js → signin-5QZNRSOO.js} +2 -2
  84. package/dist/{sso-oidc-Q4VXANXY.js → sso-oidc-XK673P54.js} +2 -2
  85. package/dist/{sts-CWLSE3GH.js → sts-OXI2UALF.js} +6 -134
  86. package/dist/{sts-DNZLNVOV.js → sts-SQW4NBK3.js} +6 -134
  87. package/dist/terraform/examples/greenfield/main.tf +233 -175
  88. package/dist/terraform/examples/greenfield/terraform.tfvars.example +12 -8
  89. package/dist/terraform/modules/app/agentcore-admin/main.tf +47 -0
  90. package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +39 -47
  91. package/dist/terraform/modules/app/agentcore-code-interpreter/main.tf +13 -66
  92. package/dist/terraform/modules/app/agentcore-identity/main.tf +106 -26
  93. package/dist/terraform/modules/app/agentcore-identity/outputs.tf +6 -6
  94. package/dist/terraform/modules/app/agentcore-identity/scripts/bootstrap_twenty_oauth_client.sh +216 -99
  95. package/dist/terraform/modules/app/agentcore-identity/scripts/delete_identity.sh +6 -9
  96. package/dist/terraform/modules/app/agentcore-identity/scripts/delete_workload_identity.sh +19 -0
  97. package/dist/terraform/modules/app/agentcore-identity/scripts/ensure_workload_identity.sh +29 -0
  98. package/dist/terraform/modules/app/agentcore-identity/scripts/read_identity.sh +22 -7
  99. package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_identity.sh +17 -46
  100. package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_provider.mjs +65 -3
  101. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/after.tf +15 -0
  102. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/before.tf +7 -0
  103. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/identity-after.tf +8 -0
  104. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/identity-before.tf +9 -0
  105. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/thinkwork-after.tf +3 -0
  106. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/thinkwork-before.tf +3 -0
  107. package/dist/terraform/modules/app/agentcore-identity/variables.tf +6 -0
  108. package/dist/terraform/modules/app/agentcore-memory/README.md +46 -9
  109. package/dist/terraform/modules/app/agentcore-memory/main.tf +27 -10
  110. package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +156 -24
  111. package/dist/terraform/modules/app/agentcore-pi/README.md +1 -3
  112. package/dist/terraform/modules/app/agentcore-pi/main.tf +42 -52
  113. package/dist/terraform/modules/app/agentcore-pi/outputs.tf +3 -3
  114. package/dist/terraform/modules/app/agentcore-pi/scripts/reconcile_pi_runtime.mjs +175 -0
  115. package/dist/terraform/modules/app/agentcore-pi/variables.tf +35 -28
  116. package/dist/terraform/modules/app/agentcore-platform/main.tf +68 -0
  117. package/dist/terraform/modules/app/agentcore-runtime/main.tf +4 -20
  118. package/dist/terraform/modules/app/capability-broker/main.tf +2 -2
  119. package/dist/terraform/modules/app/capability-broker/variables.tf +11 -0
  120. package/dist/terraform/modules/app/deployment-control-plane/README.md +264 -0
  121. package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +4 -1
  122. package/dist/terraform/modules/app/deployment-control-plane/main.tf +94 -0
  123. package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +5 -0
  124. package/dist/terraform/modules/app/deployment-control-plane/runner.py +2641 -124
  125. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +2034 -154
  126. package/dist/terraform/modules/app/deployment-control-plane/variables.tf +33 -0
  127. package/dist/terraform/modules/app/lambda-api/auth-state.tf +72 -0
  128. package/dist/terraform/modules/app/lambda-api/chat-latency-observability.tf +466 -0
  129. package/dist/terraform/modules/app/lambda-api/dispatch-dlq.tf +55 -0
  130. package/dist/terraform/modules/app/lambda-api/handlers.tf +411 -723
  131. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +262 -198
  132. package/dist/terraform/modules/app/lambda-api/main.tf +51 -13
  133. package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +4 -181
  134. package/dist/terraform/modules/app/lambda-api/memory-alarms.tf +3 -28
  135. package/dist/terraform/modules/app/lambda-api/oauth-secrets.tf +1 -2
  136. package/dist/terraform/modules/app/lambda-api/outputs.tf +17 -45
  137. package/dist/terraform/modules/app/lambda-api/turn-assertion.tf +45 -0
  138. package/dist/terraform/modules/app/lambda-api/variables.tf +219 -126
  139. package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/README.md +1 -1
  140. package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/main.tf +18 -18
  141. package/dist/terraform/modules/app/sandbox-log-scrubber/README.md +11 -10
  142. package/dist/terraform/modules/app/sandbox-log-scrubber/main.tf +5 -5
  143. package/dist/terraform/modules/app/static-site/main.tf +1 -1
  144. package/dist/terraform/modules/app/www-dns/main.tf +9 -27
  145. package/dist/terraform/modules/app/www-dns/variables.tf +4 -10
  146. package/dist/terraform/modules/data/aurora-postgres/README.md +34 -0
  147. package/dist/terraform/modules/data/aurora-postgres/alarms.tf +82 -0
  148. package/dist/terraform/modules/data/aurora-postgres/main.tf +27 -57
  149. package/dist/terraform/modules/data/aurora-postgres/outputs.tf +0 -9
  150. package/dist/terraform/modules/data/aurora-postgres/variables.tf +41 -0
  151. package/dist/terraform/modules/data/s3-buckets/main.tf +5 -6
  152. package/dist/terraform/modules/foundation/cognito/main.tf +81 -8
  153. package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
  154. package/dist/terraform/modules/foundation/cognito/variables.tf +24 -12
  155. package/dist/terraform/modules/thinkwork/README.md +5 -1
  156. package/dist/terraform/modules/thinkwork/main.tf +376 -374
  157. package/dist/terraform/modules/thinkwork/outputs.tf +12 -158
  158. package/dist/terraform/modules/thinkwork/variables.tf +246 -89
  159. package/dist/workspace-defaults/files/INSTRUCTIONS.md +9 -11
  160. package/dist/workspace-defaults/files/MEMORY_GUIDE.md +38 -35
  161. package/dist/workspace-defaults/files/ROUTER.md +1 -1
  162. package/dist/workspace-defaults/files/TOOLS.md +9 -39
  163. package/dist/workspace-defaults/files/agents/analyst/INSTRUCTIONS.md +6 -3
  164. package/dist/workspace-defaults/files/catalog-skills/brain-brief-builder/SKILL.md +165 -0
  165. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/SKILL.md +75 -0
  166. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
  167. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
  168. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/workflow-authoring.md +46 -0
  169. package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +1 -1
  170. package/dist/workspace-defaults/files/skills/document-composer/SKILL.md +22 -3
  171. package/package.json +1 -1
  172. package/dist/drizzle/0261_managed_harness_multiplayer.sql +0 -313
  173. package/dist/drizzle/0262_parallel_harness_threads.sql +0 -9
  174. package/dist/drizzle/0264_harness_tool_execution_ledger.sql +0 -113
  175. package/dist/plugins/company-data/README.md +0 -49
  176. package/dist/plugins/company-data/package.json +0 -21
  177. package/dist/plugins/company-data/src/index.ts +0 -30
  178. package/dist/plugins/company-data/src/manifest.ts +0 -26
  179. package/dist/plugins/company-data/test/manifest.test.ts +0 -116
  180. package/dist/plugins/company-data/tsconfig.json +0 -8
  181. package/dist/plugins/company-etl/README.md +0 -46
  182. package/dist/plugins/company-etl/package.json +0 -21
  183. package/dist/plugins/company-etl/src/index.ts +0 -29
  184. package/dist/plugins/company-etl/src/manifest.ts +0 -26
  185. package/dist/plugins/company-etl/test/manifest.test.ts +0 -108
  186. package/dist/plugins/company-etl/tsconfig.json +0 -8
  187. package/dist/plugins/lastmile/README.md +0 -50
  188. package/dist/plugins/lastmile/package.json +0 -23
  189. package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +0 -661
  190. package/dist/plugins/lastmile/src/api/tasks-adapter.ts +0 -572
  191. package/dist/plugins/lastmile/src/discovery.fixture.ts +0 -64
  192. package/dist/plugins/lastmile/src/index.ts +0 -46
  193. package/dist/plugins/lastmile/src/manifest.ts +0 -139
  194. package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +0 -266
  195. package/dist/plugins/lastmile/test/discovery.test.ts +0 -88
  196. package/dist/plugins/lastmile/tsconfig.json +0 -8
  197. package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +0 -409
  198. package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +0 -359
  199. package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +0 -61
  200. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +0 -227
  201. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +0 -277
  202. package/dist/terraform/modules/app/agentcore-code-interpreter/scripts/build_and_push_sandbox_base.sh +0 -70
  203. package/dist/terraform/modules/app/agentcore-gateway/main.tf +0 -305
  204. package/dist/terraform/modules/app/agentcore-gateway/outputs.tf +0 -44
  205. package/dist/terraform/modules/app/agentcore-gateway/scripts/delete_gateway.sh +0 -93
  206. package/dist/terraform/modules/app/agentcore-gateway/scripts/read_gateway.sh +0 -33
  207. package/dist/terraform/modules/app/agentcore-gateway/scripts/reconcile_gateway.sh +0 -543
  208. package/dist/terraform/modules/app/agentcore-gateway/variables.tf +0 -70
  209. package/dist/terraform/modules/app/agentcore-harness/main.tf +0 -330
  210. package/dist/terraform/modules/app/agentcore-harness/outputs.tf +0 -72
  211. package/dist/terraform/modules/app/agentcore-harness/scripts/delete_harness.sh +0 -5
  212. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-lifecycle.mjs +0 -430
  213. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-readback.mjs +0 -180
  214. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-tool-contract.mjs +0 -193
  215. package/dist/terraform/modules/app/agentcore-harness/scripts/prune_harness.sh +0 -5
  216. package/dist/terraform/modules/app/agentcore-harness/scripts/read_harness.sh +0 -5
  217. package/dist/terraform/modules/app/agentcore-harness/scripts/reconcile_harness.sh +0 -5
  218. package/dist/terraform/modules/app/agentcore-harness/variables.tf +0 -96
  219. package/dist/terraform/modules/app/hindsight-memory/README.md +0 -89
  220. package/dist/terraform/modules/app/hindsight-memory/main.tf +0 -411
  221. package/dist/terraform/modules/app/lambda-api/agentcore-harness-alarms.tf +0 -88
  222. package/dist/terraform/modules/app/lambda-api/agentcore-identity-alarms.tf +0 -91
  223. package/dist/terraform/modules/data/bedrock-knowledge-base/main.tf +0 -102
  224. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/outputs.tf +0 -0
  225. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/scripts/sync-database.py +0 -0
  226. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/scripts/test_sync_database.py +0 -0
  227. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/variables.tf +0 -0
  228. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/README.md +0 -0
  229. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/main.tf +0 -0
  230. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/outputs.tf +0 -0
  231. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/variables.tf +0 -0
@@ -81,6 +81,24 @@ variable "plugin_catalog_github_token_secret_arn" {
81
81
  default = ""
82
82
  }
83
83
 
84
+ variable "brain_m2m_platform_agent_secret_arn" {
85
+ description = "Optional Secrets Manager ARN of the Company Brain platform-agent machine-lane secret (Cognito client-credentials blob, THINK-628). When set, the shared API Lambda role may read it so MCP config build can mint short-lived bearers for the Brain connector. Empty leaves the tkt_ lane untouched."
86
+ type = string
87
+ default = ""
88
+ }
89
+
90
+ variable "brain_ops_api_url" {
91
+ description = "Optional Company Brain ops-api base URL for the Send-to-the-Brain flag path (THINK-781). Empty disables the action."
92
+ type = string
93
+ default = ""
94
+ }
95
+
96
+ variable "brain_ops_m2m_secret_arn" {
97
+ description = "Optional Secrets Manager ARN of the Brain agent-identity m2m secret (ops-api operator pool, scope etl-agent/tasks) used by flagThreadToBrain to POST /flags (THINK-781)."
98
+ type = string
99
+ default = ""
100
+ }
101
+
84
102
  variable "db_password" {
85
103
  description = "Master password for the Aurora cluster"
86
104
  type = string
@@ -93,16 +111,16 @@ variable "database_engine" {
93
111
  default = "aurora-serverless"
94
112
  }
95
113
 
96
- variable "hindsight_database_name" {
97
- description = "Dedicated Hindsight database name (THINK-220 cutover flag). Empty keeps Hindsight in the hindsight schema of the primary database."
98
- type = string
99
- default = ""
100
- }
101
-
102
114
  variable "enable_hindsight" {
103
- description = "Enable Hindsight canonical user and Space memory. Full ThinkWork installs default this on; set false only for explicit low-cost/development AgentCore-only deployments."
115
+ description = "DEPRECATED (THINK-407): the Hindsight memory engine and its infrastructure were removed; this input is inert and ignored. Retained so existing tfvars keep working."
104
116
  type = bool
105
- default = true
117
+ default = false
118
+ }
119
+
120
+ variable "external_kb_source_arns" {
121
+ description = "DEPRECATED (THINK-402): Knowledge Bases were removed from the product; this input is inert and ignored. Retained so existing tfvars keep working."
122
+ type = list(string)
123
+ default = []
106
124
  }
107
125
 
108
126
  variable "enable_capability_broker" {
@@ -111,6 +129,18 @@ variable "enable_capability_broker" {
111
129
  default = false
112
130
  }
113
131
 
132
+ variable "auth_state_store" {
133
+ description = "THINK-643: backing store for short-lived auth-flow state (AppSync subscription tickets + connect rate-limit counters). \"postgres\" (default) keeps the Aurora auth_subscription_tickets path; \"dynamo\" provisions thinkwork-<stage>-auth-state and points the auth handlers at it. Ship-inert: dev opts in via the deploy workflow, customer stages on their own cadence."
134
+ type = string
135
+ default = "postgres"
136
+
137
+ validation {
138
+ condition = contains(["postgres", "dynamo"], var.auth_state_store)
139
+ error_message = "auth_state_store must be \"postgres\" or \"dynamo\"."
140
+ }
141
+ }
142
+
143
+
114
144
  variable "enable_agentcore_multiplayer_proof" {
115
145
  description = "Opt in to the non-production THINK-316 AgentCore Identity/Gateway proof substrate."
116
146
  type = bool
@@ -141,14 +171,44 @@ variable "agentcore_turn_assertion_active_key_version" {
141
171
  default = "v1"
142
172
  }
143
173
 
144
- variable "analyst_lambda_vpc_egress" {
145
- description = "VPC-attach the analyst data-path Lambdas so their egress rides the NAT gateway's stable EIP — required when an external analyst data source sits behind an IP allowlist. See the thinkwork module's analyst_egress_ip output for the IP to allowlist."
146
- type = bool
147
- default = false
174
+ variable "neptune_endpoint" {
175
+ type = string
176
+ default = ""
177
+ description = "Company Brain twin: Neptune writer endpoint (etl-platform neptune stack output; empty = twin disabled)"
178
+ }
179
+
180
+ variable "brain_mcp_url" {
181
+ type = string
182
+ default = ""
183
+ description = "Platform-served Brain MCP endpoint (consolidation U14); empty = legacy product-served /mcp/twin"
184
+ }
185
+
186
+ variable "neptune_cluster_resource_id" {
187
+ type = string
188
+ default = ""
189
+ description = "Company Brain twin: Neptune cluster resource id for IAM ARNs"
190
+ }
191
+
192
+ variable "neptune_client_security_group_id" {
193
+ type = string
194
+ default = ""
195
+ description = "Company Brain twin: neptune-client SG id for the identity-graph-projector"
196
+ }
197
+
198
+ variable "neptune_load_bucket" {
199
+ type = string
200
+ default = ""
201
+ description = "Company Brain twin: Neptune bulk-load staging bucket (empty = bulk-rebuild disabled)"
202
+ }
203
+
204
+ variable "neptune_loader_role_arn" {
205
+ type = string
206
+ default = ""
207
+ description = "Company Brain twin: IAM role the Neptune cluster assumes to read the load bucket"
148
208
  }
149
209
 
150
210
  variable "memory_engine" {
151
- description = "Active long-term memory engine. Empty selects Hindsight when enable_hindsight = true. Use 'agentcore' only for explicit low-cost/development managed-memory deployments."
211
+ description = "DEPRECATED (THINK-407): AgentCore managed memory is the only engine; this input is inert and ignored. Retained so existing tfvars keep working."
152
212
  type = string
153
213
  default = ""
154
214
  }
@@ -158,6 +218,12 @@ variable "twenty_provisioned" {
158
218
  default = false
159
219
  }
160
220
 
221
+ variable "release_image_mirror_principal_arns" {
222
+ description = "IAM principals allowed to push release runtime images into this stage's AgentCore ECR repository (THINK-616). ThinkWork-operated customer stages set [\"arn:aws:iam::487219502366:root\"] so the release workflow can mirror `<releaseVersion>-pi-arm64`; leave empty for self-hosted deployments."
223
+ type = list(string)
224
+ default = []
225
+ }
226
+
161
227
  variable "twenty_runtime_enabled" {
162
228
  description = "Run Twenty CRM server/worker tasks when the retained substrate is provisioned."
163
229
  type = bool
@@ -358,6 +424,24 @@ variable "tenant_entra_connections" {
358
424
  default = []
359
425
  }
360
426
 
427
+ variable "console_client_enabled" {
428
+ description = "Create the optional Company Brain console Cognito app client (U13). Default false = ship-inert."
429
+ type = bool
430
+ default = false
431
+ }
432
+
433
+ variable "console_callback_urls" {
434
+ description = "OAuth callback URLs for the console client — must include the console hosting URL BEFORE first login (redirect_mismatch otherwise)"
435
+ type = list(string)
436
+ default = []
437
+ }
438
+
439
+ variable "console_logout_urls" {
440
+ description = "OAuth logout URLs for the console client"
441
+ type = list(string)
442
+ default = []
443
+ }
444
+
361
445
  variable "pre_signup_lambda_zip" {
362
446
  description = "Path to the Cognito pre-signup Lambda zip"
363
447
  type = string
@@ -437,6 +521,41 @@ variable "platform_operator_emails" {
437
521
  default = ""
438
522
  }
439
523
 
524
+ # THINK-583 U3 — provisioned concurrency for chat-agent-invoke /
525
+ # workspace-renderer (KTD5: never the Pi Lambda). Default 0 = disabled;
526
+ # the `live` alias always exists so alias-qualified invokers work either
527
+ # way. Dev sets 1/1 via scripts/deploy/terraform-vars.sh; customer stages
528
+ # opt in through their runner-secrets tfvars on their release cadence.
529
+
530
+ variable "agentcore_runtime_dispatch_enabled" {
531
+ description = "THINK-585 U6: stage kill-switch for AgentCore Runtime chat dispatch."
532
+ type = bool
533
+ default = false
534
+ }
535
+
536
+ variable "agentcore_session_scope" {
537
+ description = "THINK-909/THINK-946 AgentCore runtime session scope. \"thread\" (default) keys the runtime session per thread; \"user\" keys it per (tenant, agent, user) so a user's NEW thread lands on their already-warm microVM and reuses its MCP connections and toolset. Set \"user\" only after the stage's Pi runtime image dual-accepts both session ids. mcpherson runs \"user\"; every other stage runs the default."
538
+ type = string
539
+ default = "thread"
540
+
541
+ validation {
542
+ condition = contains(["thread", "user"], var.agentcore_session_scope)
543
+ error_message = "agentcore_session_scope must be \"thread\" or \"user\"."
544
+ }
545
+ }
546
+
547
+ variable "chat_agent_invoke_provisioned_concurrency" {
548
+ description = "Provisioned concurrency on chat-agent-invoke's `live` alias. 0 = disabled (alias still exists)."
549
+ type = number
550
+ default = 0
551
+ }
552
+
553
+ variable "workspace_renderer_provisioned_concurrency" {
554
+ description = "Provisioned concurrency on workspace-renderer's `live` alias. 0 = disabled (alias still exists)."
555
+ type = number
556
+ default = 0
557
+ }
558
+
440
559
  variable "www_domain" {
441
560
  description = "Public website apex domain (e.g. thinkwork.ai). Leave empty to skip the custom domain and DNS wiring."
442
561
  type = string
@@ -473,21 +592,6 @@ variable "stripe_price_ids_json" {
473
592
  default = "{}"
474
593
  }
475
594
 
476
- variable "wiki_compile_model_id" {
477
- description = <<-EOT
478
- Bedrock model id the wiki-compile Lambda uses for the leaf planner,
479
- aggregation planner, and section writer. Any Converse-compatible
480
- model works; change without a code deploy.
481
-
482
- Default: openai.gpt-oss-120b-1:0 (strong output quality at a lower
483
- per-minute throttle risk than Claude Haiku 4.5 on shared dev
484
- accounts). Swap to us.anthropic.claude-haiku-4-5-20251001-v1:0 for
485
- Claude, or amazon.nova-micro-v1:0 for a low-cost spike.
486
- EOT
487
- type = string
488
- default = "openai.gpt-oss-120b-1:0"
489
- }
490
-
491
595
  variable "requester_idle_memory_learning_enabled" {
492
596
  description = "Enable requester-scoped 15-minute idle memory learning."
493
597
  type = bool
@@ -528,14 +632,20 @@ variable "brain_source_agent_model_id" {
528
632
  default = "us.anthropic.claude-haiku-4-5-20251001-v1:0"
529
633
  }
530
634
 
531
- variable "knowledge_graph_observations_ingest_enabled" {
532
- description = "Enable the Brain distillation schedule (observations -> knowledge graph). Ships disabled; flip on dev after a validated manual run (plan 2026-07-03-005 U4)."
635
+ variable "identity_drift_match_enabled" {
636
+ description = "Enable the recurring per-tenant identity drift match sweep (THINK-321 U7/KTD-7 R10). Ships disabled; enabled per stage once bootstrap matching has been proven there."
533
637
  type = bool
534
638
  default = false
535
639
  }
536
640
 
537
- variable "ontology_scan_sweep_enabled" {
538
- description = "Enable the recurring per-tenant ontology suggestion scan sweep (THINK-320 U4/KTD-3). Ships disabled; enabled per stage once the Living Map review surfaces land."
641
+ variable "vpc_interface_endpoint_services" {
642
+ description = "AWS services that get a private interface endpoint (null = legacy full set, [] = none). See modules/thinkwork. Cost review 2026-08-28."
643
+ type = list(string)
644
+ default = null
645
+ }
646
+
647
+ variable "vpc_interface_endpoint_single_az" {
648
+ description = "One ENI per interface endpoint instead of one per AZ. Cost review 2026-08-28."
539
649
  type = bool
540
650
  default = false
541
651
  }
@@ -551,23 +661,6 @@ variable "wiki_source" {
551
661
  }
552
662
  }
553
663
 
554
- variable "analyst_policy_source" {
555
- description = "THINK-229 KTD5 enforcement flip for the analyst connection policy source: 'row' (default — signed sidecar policy is shadow-only) or 'sidecar' (the sidecar block is authoritative). Flip only after clean shadow parity on live traffic."
556
- type = string
557
- default = "row"
558
-
559
- validation {
560
- condition = contains(["row", "sidecar"], var.analyst_policy_source)
561
- error_message = "analyst_policy_source must be 'row' or 'sidecar'."
562
- }
563
- }
564
-
565
- variable "capability_self_extension_tenants" {
566
- description = "Governed autonomy opt-in: comma/space-separated tenant ids allowed to autonomously self-extend capabilities (self_admit_connection / self_approve_routine). Empty (default) = NO tenant enabled; self-extension ships inert and fail-closed."
567
- type = string
568
- default = ""
569
- }
570
-
571
664
  variable "wiki_aggregation_pass_enabled" {
572
665
  description = <<-EOT
573
666
  Feature flag for the wiki aggregation pass — the second LLM call
@@ -582,23 +675,6 @@ variable "wiki_aggregation_pass_enabled" {
582
675
  default = "true"
583
676
  }
584
677
 
585
- variable "google_places_api_key" {
586
- description = <<-EOT
587
- Google Places API (New) key used by wiki-compile to enrich POI records
588
- with city/state/country hierarchy during compile. When empty, compile
589
- gracefully degrades to metadata-only place rows (no hierarchy, no
590
- backing pages), so this is opt-in. Stored as a SecureString at
591
- /thinkwork/<stage>/google-places/api-key — see
592
- terraform/modules/app/lambda-api/handlers.tf for the SSM resource.
593
-
594
- The parameter's value has lifecycle.ignore_changes set, so you can
595
- rotate via `aws ssm put-parameter --overwrite` without terraform
596
- fighting you on the next apply.
597
- EOT
598
- type = string
599
- default = ""
600
- sensitive = true
601
- }
602
678
 
603
679
  variable "mapbox_public_token" {
604
680
  description = <<-EOT
@@ -678,6 +754,30 @@ variable "customer_domain" {
678
754
  default = ""
679
755
  }
680
756
 
757
+ variable "deployment_runner_in_vpc" {
758
+ description = "Run the deployment runner CodeBuild inside the VPC and grant it tcp/5432 on the database security group instead of relying on the world-open DB ingress (THINK-1082). Also turns on the VPC NAT gateway. Default false = no networking change."
759
+ type = bool
760
+ default = false
761
+ }
762
+
763
+ variable "api_lambdas_in_vpc" {
764
+ description = "Run every database-connected Lambda (api handlers, agentcore-admin, Pi, broker) inside the VPC behind the api-lambda security group, granted tcp/5432 on the database security group (THINK-1082). Also turns on the VPC NAT gateway. Default false = no networking change."
765
+ type = bool
766
+ default = false
767
+ }
768
+
769
+ variable "db_publicly_accessible" {
770
+ description = "Aurora publicly_accessible (THINK-1082). Default true. Set false only after api_lambdas_in_vpc and deployment_runner_in_vpc are live."
771
+ type = bool
772
+ default = true
773
+ }
774
+
775
+ variable "db_public_ingress_cidrs" {
776
+ description = "tcp/5432 CIDR ingress seeded on a NEW database security group (THINK-1082). Default [\"0.0.0.0/0\"]; [] = none. Does not revoke a live rule — see modules/app/deployment-control-plane/README.md."
777
+ type = list(string)
778
+ default = ["0.0.0.0/0"]
779
+ }
780
+
681
781
  variable "customer_domain_delegated" {
682
782
  description = "Set true once the apex zone's NS records point at the customer zone (claim tool phase two). Gates the ACM certificate, the web alias records, and the customer-domain Cognito callback entries. Requires customer_domain."
683
783
  type = bool
@@ -690,9 +790,20 @@ variable "customer_domain_legacy_retired" {
690
790
  default = false
691
791
  }
692
792
 
793
+ variable "additional_admin_callback_urls" {
794
+ description = "Extra OAuth callback URLs appended to the web-family Cognito clients (e.g. a hosted Company Brain console origin). Supply both the bare origin and its /auth/callback variant. Empty leaves behavior unchanged."
795
+ type = list(string)
796
+ default = []
797
+ }
798
+
799
+ variable "additional_admin_logout_urls" {
800
+ description = "Extra OAuth logout URLs appended to the web-family Cognito clients (companion to additional_admin_callback_urls)."
801
+ type = list(string)
802
+ default = []
803
+ }
804
+
693
805
  locals {
694
806
  www_dns_enabled = var.www_domain != "" && var.cloudflare_zone_id != ""
695
- docs_domain = var.www_domain != "" ? "docs.${var.www_domain}" : ""
696
807
  app_domain = var.www_domain != "" ? "app.${var.www_domain}" : ""
697
808
  computer_domain = var.www_domain != "" ? "computer.${var.www_domain}" : ""
698
809
  sandbox_domain = var.www_domain != "" ? "sandbox.${var.www_domain}" : ""
@@ -853,19 +964,29 @@ module "thinkwork" {
853
964
  account_id = var.account_id
854
965
 
855
966
  plugin_catalog_github_token_secret_arn = var.plugin_catalog_github_token_secret_arn
967
+ brain_m2m_platform_agent_secret_arn = var.brain_m2m_platform_agent_secret_arn
968
+ brain_ops_api_url = var.brain_ops_api_url
969
+ brain_ops_m2m_secret_arn = var.brain_ops_m2m_secret_arn
856
970
 
857
971
  db_password = var.db_password
858
972
  database_engine = var.database_engine
859
973
  enable_hindsight = var.enable_hindsight
974
+ external_kb_source_arns = var.external_kb_source_arns
860
975
  enable_capability_broker = var.enable_capability_broker
976
+ auth_state_store = var.auth_state_store
861
977
  enable_agentcore_multiplayer_proof = var.enable_agentcore_multiplayer_proof
862
978
  agentcore_multiplayer_proof_tenant_slug = var.agentcore_multiplayer_proof_tenant_slug
863
979
  agentcore_multiplayer_proof_owner_allowlist = var.agentcore_multiplayer_proof_owner_allowlist
864
980
  agentcore_turn_assertion_key_versions = var.agentcore_turn_assertion_key_versions
865
981
  agentcore_turn_assertion_active_key_version = var.agentcore_turn_assertion_active_key_version
866
- analyst_lambda_vpc_egress = var.analyst_lambda_vpc_egress
867
- hindsight_database_name = var.hindsight_database_name
982
+ neptune_endpoint = var.neptune_endpoint
983
+ brain_mcp_url = var.brain_mcp_url
984
+ neptune_cluster_resource_id = var.neptune_cluster_resource_id
985
+ neptune_client_security_group_id = var.neptune_client_security_group_id
986
+ neptune_load_bucket = var.neptune_load_bucket
987
+ neptune_loader_role_arn = var.neptune_loader_role_arn
868
988
  memory_engine = var.memory_engine
989
+ release_image_mirror_principal_arns = var.release_image_mirror_principal_arns
869
990
  twenty_provisioned = var.twenty_provisioned
870
991
  twenty_runtime_enabled = var.twenty_runtime_enabled
871
992
  twenty_image_uri = var.twenty_image_uri
@@ -899,6 +1020,9 @@ module "thinkwork" {
899
1020
  microsoft_oauth_client_secret = var.microsoft_oauth_client_secret
900
1021
  microsoft_oauth_tenant = var.microsoft_oauth_tenant
901
1022
  tenant_entra_connections = var.tenant_entra_connections
1023
+ console_client_enabled = var.console_client_enabled
1024
+ console_callback_urls = var.console_callback_urls
1025
+ console_logout_urls = var.console_logout_urls
902
1026
  pre_signup_lambda_zip = var.pre_signup_lambda_zip
903
1027
  auth_retirement_phase = var.auth_retirement_phase
904
1028
  auth_migration_recovery_deadline = var.auth_migration_recovery_deadline
@@ -910,17 +1034,15 @@ module "thinkwork" {
910
1034
  enable_workspace_orchestration = var.enable_workspace_orchestration
911
1035
  api_auth_secret = var.api_auth_secret
912
1036
  platform_operator_emails = var.platform_operator_emails
1037
+ agentcore_runtime_dispatch_enabled = var.agentcore_runtime_dispatch_enabled
1038
+ agentcore_session_scope = var.agentcore_session_scope
1039
+ chat_agent_invoke_provisioned_concurrency = var.chat_agent_invoke_provisioned_concurrency
1040
+ workspace_renderer_provisioned_concurrency = var.workspace_renderer_provisioned_concurrency
913
1041
 
914
1042
  # Public website custom domain (optional — wired only when www_domain is set)
915
1043
  www_domain = var.www_domain
916
1044
  www_certificate_arn = local.www_dns_enabled ? module.www_dns[0].certificate_arn : ""
917
1045
 
918
- # Docs site custom domain (derived from www_domain — docs.<apex>). The
919
- # same ACM cert covers apex + www + docs + app/computer so every distribution
920
- # shares it.
921
- docs_domain = local.www_dns_enabled ? local.docs_domain : ""
922
- docs_certificate_arn = local.www_dns_enabled ? module.www_dns[0].certificate_arn : ""
923
-
924
1046
  # End-user app custom domain (derived from www_domain — app.<apex>).
925
1047
  # Same ACM cert covers it via the include_app SAN gate on www_dns.
926
1048
  app_domain = local.www_dns_enabled ? local.app_domain : ""
@@ -934,7 +1056,7 @@ module "thinkwork" {
934
1056
 
935
1057
  # Computer iframe sandbox (derived from www_domain — sandbox.<apex>).
936
1058
  # Uses its own ACM certificate so sandbox bootstrap/rotation cannot replace
937
- # the shared apex/www/docs/app/computer/api certificate.
1059
+ # the shared apex/www/app/computer/api certificate.
938
1060
  computer_sandbox_domain = local.www_dns_enabled ? local.sandbox_domain : ""
939
1061
  computer_sandbox_certificate_arn = local.www_dns_enabled ? aws_acm_certificate_validation.computer_sandbox[0].certificate_arn : ""
940
1062
  computer_sandbox_allowed_parent_origins = local.www_dns_enabled ? "https://${local.app_domain}" : ""
@@ -947,16 +1069,13 @@ module "thinkwork" {
947
1069
  # Wiki compile Lambda config. Pinned so unrelated terraform applies
948
1070
  # don't wipe the Bedrock model or the aggregation flag back to
949
1071
  # whatever the Lambda env defaults to.
950
- wiki_compile_model_id = var.wiki_compile_model_id
951
1072
  brain_source_agent_model_id = var.brain_source_agent_model_id
952
1073
  wiki_aggregation_pass_enabled = var.wiki_aggregation_pass_enabled
953
1074
  wiki_source = var.wiki_source
954
- analyst_policy_source = var.analyst_policy_source
955
- capability_self_extension_tenants = var.capability_self_extension_tenants
956
- knowledge_graph_observations_ingest_enabled = var.knowledge_graph_observations_ingest_enabled
957
- ontology_scan_sweep_enabled = var.ontology_scan_sweep_enabled
1075
+ vpc_interface_endpoint_services = var.vpc_interface_endpoint_services
1076
+ vpc_interface_endpoint_single_az = var.vpc_interface_endpoint_single_az
1077
+ identity_drift_match_enabled = var.identity_drift_match_enabled
958
1078
  wiki_deterministic_linking_enabled = var.wiki_deterministic_linking_enabled
959
- google_places_api_key = var.google_places_api_key
960
1079
  requester_idle_memory_learning_enabled = var.requester_idle_memory_learning_enabled
961
1080
  requester_memory_dreaming_enabled = var.requester_memory_dreaming_enabled
962
1081
  requester_memory_dreaming_schedule_expression = var.requester_memory_dreaming_schedule_expression
@@ -985,11 +1104,21 @@ module "thinkwork" {
985
1104
  customer_domain_delegated = var.customer_domain_delegated
986
1105
  customer_domain_legacy_retired = var.customer_domain_legacy_retired
987
1106
 
1107
+ # Deployment runner / API Lambdas inside the VPC + database exposure (THINK-1082)
1108
+ # — see modules/app/deployment-control-plane/README.md, "Closing the database port".
1109
+ deployment_runner_in_vpc = var.deployment_runner_in_vpc
1110
+ api_lambdas_in_vpc = var.api_lambdas_in_vpc
1111
+ db_publicly_accessible = var.db_publicly_accessible
1112
+ db_public_ingress_cidrs = var.db_public_ingress_cidrs
1113
+
1114
+ additional_admin_callback_urls = var.additional_admin_callback_urls
1115
+ additional_admin_logout_urls = var.additional_admin_logout_urls
1116
+
988
1117
  # Greenfield: create everything (all defaults are true)
989
1118
  }
990
1119
 
991
1120
  ################################################################################
992
- # Public Website DNS (Cloudflare zone, ACM cert, www→apex redirect, docs)
1121
+ # Public Website DNS (Cloudflare zone, ACM cert, www→apex redirect)
993
1122
  ################################################################################
994
1123
 
995
1124
  module "www_dns" {
@@ -1001,12 +1130,10 @@ module "www_dns" {
1001
1130
  cloudflare_zone_id = var.cloudflare_zone_id
1002
1131
  cloudfront_domain_name = module.thinkwork.www_distribution_domain
1003
1132
 
1004
- # Docs: include_docs is a plain bool (no output reference) so the
1005
- # ACM cert SAN list doesn't depend on the docs distribution output,
1006
- # which itself depends on the cert. docs_cloudfront_domain_name is
1007
- # read only after the cert is created, for the CNAME record.
1008
- include_docs = true
1009
- docs_cloudfront_domain_name = module.thinkwork.docs_distribution_domain
1133
+ # This stack predates THINK-702, so the shared cert still carries the
1134
+ # retired docs.<domain> SAN. Dropping it would force a cert replacement
1135
+ # that cycles against the thinkwork module — keep the dead SAN instead.
1136
+ retain_docs_san = true
1010
1137
 
1011
1138
  # End-user app: canonical app.<apex> host. The compatibility output names
1012
1139
  # still use computer_* while the source path is apps/web.
@@ -1154,6 +1281,11 @@ output "mobile_client_id" {
1154
1281
  value = module.thinkwork.mobile_client_id
1155
1282
  }
1156
1283
 
1284
+ output "console_client_id" {
1285
+ description = "Cognito app client ID for the Company Brain console (null while console_client_enabled = false)"
1286
+ value = module.thinkwork.console_client_id
1287
+ }
1288
+
1157
1289
  output "ecr_repository_url" {
1158
1290
  description = "ECR repository URL for the AgentCore container"
1159
1291
  value = module.thinkwork.ecr_repository_url
@@ -1179,15 +1311,6 @@ output "database_name" {
1179
1311
  value = module.thinkwork.database_name
1180
1312
  }
1181
1313
 
1182
- output "hindsight_enabled" {
1183
- description = "Whether Hindsight canonical memory is enabled"
1184
- value = module.thinkwork.hindsight_enabled
1185
- }
1186
-
1187
- output "hindsight_endpoint" {
1188
- description = "Hindsight API endpoint (null when enable_hindsight = false)"
1189
- value = module.thinkwork.hindsight_endpoint
1190
- }
1191
1314
  output "twenty_provisioned" {
1192
1315
  description = "Whether the Twenty CRM retained managed-app substrate is provisioned"
1193
1316
  value = module.thinkwork.twenty_provisioned
@@ -1363,21 +1486,6 @@ output "computer_sandbox_allowed_parent_origins" {
1363
1486
  value = module.thinkwork.computer_sandbox_allowed_parent_origins
1364
1487
  }
1365
1488
 
1366
- output "docs_url" {
1367
- description = "Docs site URL"
1368
- value = local.www_dns_enabled ? "https://${local.docs_domain}" : "https://${module.thinkwork.docs_distribution_domain}"
1369
- }
1370
-
1371
- output "docs_distribution_id" {
1372
- description = "CloudFront distribution ID for docs (for cache invalidation)"
1373
- value = module.thinkwork.docs_distribution_id
1374
- }
1375
-
1376
- output "docs_bucket_name" {
1377
- description = "S3 bucket for docs site assets"
1378
- value = module.thinkwork.docs_bucket_name
1379
- }
1380
-
1381
1489
  output "www_url" {
1382
1490
  description = "Public website URL"
1383
1491
  value = var.www_domain != "" ? "https://${var.www_domain}" : "https://${module.thinkwork.www_distribution_domain}"
@@ -1449,67 +1557,17 @@ output "customer_domain_name_servers" {
1449
1557
  value = module.thinkwork.customer_domain_name_servers
1450
1558
  }
1451
1559
 
1452
- output "analyst_egress_ip" {
1453
- description = "Stable NAT egress IP of the VPC-attached analyst data-path Lambdas (null unless analyst_lambda_vpc_egress is set)"
1454
- value = module.thinkwork.analyst_egress_ip
1455
- }
1560
+ # The original AgentCore Twenty reconciliation marker never owned external
1561
+ # cleanup, but an interrupted local-exec may have left it tainted. Forget it
1562
+ # from state without refresh or destroy provisioners — the child module owns
1563
+ # the replacement idempotent reconciliation marker under a new address. The
1564
+ # managed customer-update root (deployment-control-plane runner) carries the
1565
+ # same block; without it here, a dev push plans a delete the destructive-apply
1566
+ # guard rightly refuses.
1567
+ removed {
1568
+ from = module.thinkwork.module.agentcore_proof_identity.terraform_data.twenty_identity_lifecycle
1456
1569
 
1457
- output "agentcore_harness_proof_arn" {
1458
- description = "Deprecated: use agentcore_harness_arn."
1459
- value = module.thinkwork.agentcore_harness_proof_arn
1460
- }
1461
-
1462
- output "agentcore_harness_arn" {
1463
- description = "Managed tenant/profile AgentCore Harness ARN."
1464
- value = module.thinkwork.agentcore_harness_arn
1465
- }
1466
-
1467
- output "agentcore_harness_endpoint_name" {
1468
- description = "Named version-pinned managed AgentCore Harness qualifier."
1469
- value = module.thinkwork.agentcore_harness_endpoint_name
1470
- }
1471
-
1472
- output "agentcore_harness_version" {
1473
- description = "Attested immutable managed AgentCore Harness version."
1474
- value = module.thinkwork.agentcore_harness_version
1475
- }
1476
-
1477
- output "agentcore_harness_status" {
1478
- description = "Safe managed AgentCore Harness readiness state."
1479
- value = module.thinkwork.agentcore_harness_status
1480
- }
1481
-
1482
- output "agentcore_harness_proof_endpoint_name" {
1483
- description = "Deprecated: use agentcore_harness_endpoint_name."
1484
- value = module.thinkwork.agentcore_harness_proof_endpoint_name
1485
- }
1486
-
1487
- output "agentcore_harness_proof_version" {
1488
- description = "Deprecated: use agentcore_harness_version."
1489
- value = module.thinkwork.agentcore_harness_proof_version
1490
- }
1491
-
1492
- output "agentcore_harness_proof_status" {
1493
- description = "Deprecated: use agentcore_harness_status."
1494
- value = module.thinkwork.agentcore_harness_proof_status
1495
- }
1496
-
1497
- output "agentcore_turn_assertion_issuer" {
1498
- description = "Proof CUSTOM_JWT issuer used by deployed operator probes."
1499
- value = module.thinkwork.agentcore_turn_assertion_issuer
1500
- }
1501
-
1502
- output "agentcore_harness_audience" {
1503
- description = "Purpose-bound proof Harness audience."
1504
- value = module.thinkwork.agentcore_harness_audience
1505
- }
1506
-
1507
- output "agentcore_turn_assertion_active_key_arn" {
1508
- description = "Operator-only active proof signing key ARN."
1509
- value = module.thinkwork.agentcore_turn_assertion_active_key_arn
1510
- }
1511
-
1512
- output "agentcore_turn_assertion_active_kid" {
1513
- description = "Public JWKS key identifier for the active proof signing key."
1514
- value = module.thinkwork.agentcore_turn_assertion_active_kid
1570
+ lifecycle {
1571
+ destroy = false
1572
+ }
1515
1573
  }
@@ -13,12 +13,9 @@ account_id = "123456789012" # your AWS account ID
13
13
  database_engine = "rds-postgres"
14
14
 
15
15
  # Memory:
16
- # Hindsight is the canonical user and Space memory provider for full
17
- # ThinkWork installs and is enabled by default. Set enable_hindsight = false
18
- # and memory_engine = "agentcore" only for explicit low-cost/development
19
- # AgentCore-only deployments.
20
- # enable_hindsight = false
21
- # memory_engine = "agentcore"
16
+ # Bedrock AgentCore managed memory is the only engine. The legacy
17
+ # `enable_hindsight` / `memory_engine` inputs are deprecated no-ops that are
18
+ # still accepted so old tfvars keep applying.
22
19
 
23
20
  # Managed applications:
24
21
  # Twenty CRM is optional. First enable should set both booleans true after
@@ -74,7 +71,7 @@ db_password = "CHANGE_ME_strong_password_here"
74
71
  # google_oauth_client_secret = ""
75
72
  # microsoft_oauth_client_id = ""
76
73
  # microsoft_oauth_client_secret = "" # Supply securely; never commit a real value.
77
- # microsoft_oauth_tenant = "" # Entra directory GUID; organizations/common are not valid Cognito issuers.
74
+ # microsoft_oauth_tenant = "" # Entra directory GUID, or common/organizations/consumers (Cognito-supported aliases).
78
75
 
79
76
  # Tenant-specific Entra IdPs are reconciled by `thinkwork enterprise
80
77
  # identity-provider`; Terraform receives safe provider metadata only.
@@ -115,7 +112,6 @@ db_password = "CHANGE_ME_strong_password_here"
115
112
  # --name /thinkwork/<stage>/google-places/api-key --value <KEY>
116
113
  # (terraform's lifecycle.ignore_changes on the value keeps your manual
117
114
  # value from being overwritten on future applies.)
118
- # google_places_api_key = ""
119
115
 
120
116
  # Public website (apps/www) custom domain.
121
117
  # Leave www_domain empty to skip the custom domain and serve on the raw
@@ -137,3 +133,11 @@ db_password = "CHANGE_ME_strong_password_here"
137
133
  # ses_inbound_domain = "agents.thinkwork.ai"
138
134
  # ses_parent_domain = "thinkwork.ai"
139
135
  # tenant_slugs = ["dev"]
136
+
137
+ # Company Brain platform-agent machine lane (optional, THINK-628/THINK-710).
138
+ # Secrets Manager ARN of etl-platform/brain-mcp/m2m/platform-agent in this
139
+ # account. When set, the shared API Lambda role gets read on it so MCP config
140
+ # build can mint short-lived Cognito bearers for the Brain connector instead
141
+ # of using a stored tkt_ key. Leave empty until the lane's manifest entry is
142
+ # published (see the Brain repo's brain-mcp-m2m-migration runbook).
143
+ # brain_m2m_platform_agent_secret_arn = "arn:aws:secretsmanager:us-east-1:<account-id>:secret:etl-platform/brain-mcp/m2m/platform-agent-XXXXXX"