thinkwork-cli 0.12.16 → 0.12.17

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 (149) hide show
  1. package/dist/cli.js +517 -10403
  2. package/dist/commands/enterprise/templates/deploy-repo/docs/runbook.md +3 -8
  3. package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +1 -184
  4. package/dist/drizzle/0050_brain_v0_entity_subtype.sql +2 -2
  5. package/dist/drizzle/0051_brain_v0_tenant_entity_pages.sql +6 -6
  6. package/dist/drizzle/0052_brain_v0_external_refs.sql +2 -2
  7. package/dist/drizzle/0053_brain_v0_unresolved_mentions_subtype.sql +2 -2
  8. package/dist/drizzle/0145_knowledge_graph_thread_ingest.sql +14 -14
  9. package/dist/drizzle/0146_knowledge_graph_source_scope.sql +1 -1
  10. package/dist/drizzle/0157_knowledge_graph_observations_source.sql +2 -2
  11. package/dist/drizzle/0158_wiki_tenant_scope.sql +1 -1
  12. package/dist/drizzle/0165_plugin_premium_entitlements.sql +2 -2
  13. package/dist/drizzle/{0166_company_brain_substrate_contract.sql → 0166_brain_substrate_contract.sql} +9 -9
  14. package/dist/drizzle/{0167_company_brain_artifact_manifest_runtime.sql → 0167_brain_artifact_manifest_runtime.sql} +5 -5
  15. package/dist/drizzle/0168_eval_skill_gate.sql +1 -1
  16. package/dist/drizzle/0183_okf_artifact_manifests.sql +1 -1
  17. package/dist/drizzle/0200_eval_results_execution_tier.sql +40 -0
  18. package/dist/drizzle/0201_brain_dream_runs.sql +72 -0
  19. package/dist/drizzle/0202_backfill_thread_participants_from_senders.sql +110 -0
  20. package/dist/drizzle/0203_threads_mode_override.sql +61 -0
  21. package/dist/drizzle/0204_thread_turns_triggering_message_id.sql +48 -0
  22. package/dist/drizzle/0205_routines_git_python.sql +185 -0
  23. package/dist/drizzle/0206_agent_loop_versions_routine_actions.sql +40 -0
  24. package/dist/drizzle/0207_tenant_credentials_github_repo_kind.sql +52 -0
  25. package/dist/drizzle/0208_knowledge_graph_neutral_identifiers.sql +253 -0
  26. package/dist/drizzle/0209_living_artifacts_schema.sql +109 -0
  27. package/dist/drizzle/0210_think137_automations_additive_schema.sql +113 -0
  28. package/dist/drizzle/0211_backfill_agent_loop_versions_target_spec.sql +120 -0
  29. package/dist/drizzle/0212_fold_webhooks_into_automations.sql +312 -0
  30. package/dist/drizzle/0213_agent_loop_versions_judge_evidence_nullable.sql +63 -0
  31. package/dist/drizzle/0214_think137_drop_judge_evidence_roi.sql +99 -0
  32. package/dist/drizzle/0215_agent_loop_versions_goal_worker_policy_nullable.sql +70 -0
  33. package/dist/drizzle/0216_drop_agent_loop_versions_goal_worker_policy.sql +81 -0
  34. package/dist/drizzle/0217_agents_capability_folder_dispatch.sql +12 -0
  35. package/dist/drizzle/0218_document_plates.sql +30 -0
  36. package/dist/drizzle/0219_document_section_waivers.sql +29 -0
  37. package/dist/drizzle/0220_artifacts_created_by_user.sql +21 -0
  38. package/dist/drizzle/0221_artifact_shares.sql +29 -0
  39. package/dist/drizzle/0221_workflow_interpreter_thin_slice.sql +71 -0
  40. package/dist/drizzle/0222_compliance_drainer_select_audit_events.sql +21 -0
  41. package/dist/drizzle/0223_document_conformance_reports.sql +38 -0
  42. package/dist/drizzle/0224_artifact_refresh_state.sql +11 -0
  43. package/dist/drizzle/0225_think216_agent_loop_convergence.sql +21 -0
  44. package/dist/drizzle/0226_drop_n8n_agent_step_runs.sql +6 -0
  45. package/dist/drizzle/0227_analyst_reader_role.sql +1055 -0
  46. package/dist/drizzle/0228_tenant_credentials_rds_iam_kind.sql +62 -0
  47. package/dist/drizzle/0229_analyst_reader_rds_iam_grant.sql +79 -0
  48. package/dist/drizzle/0230_analyst_rls.sql +1613 -0
  49. package/dist/drizzle/0231_cost_events_cache_write_enforcement_exempt.sql +11 -0
  50. package/dist/plugins/catalog/package.json +0 -1
  51. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +0 -1
  52. package/dist/plugins/catalog/src/__tests__/catalog.test.ts +16 -8
  53. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +56 -0
  54. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +0 -2
  55. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +0 -5
  56. package/dist/plugins/catalog/src/contracts.ts +112 -0
  57. package/dist/plugins/catalog/src/registry/generated-first-party.ts +0 -6
  58. package/dist/plugins/n8n/README.md +4 -36
  59. package/dist/plugins/n8n/src/deployment/managed-app.ts +0 -17
  60. package/dist/plugins/n8n/src/manifest.ts +0 -5
  61. package/dist/plugins/n8n/terraform/n8n/main.tf +0 -26
  62. package/dist/plugins/n8n/terraform/n8n/outputs.tf +0 -5
  63. package/dist/plugins/n8n/terraform/n8n/variables.tf +0 -6
  64. package/dist/plugins/n8n/test/manifest.test.ts +0 -1
  65. package/dist/plugins/twenty/package.json +5 -0
  66. package/dist/plugins/twenty/scripts/lib/__tests__/load-records.test.ts +232 -0
  67. package/dist/plugins/twenty/scripts/lib/__tests__/mappers.test.ts +489 -0
  68. package/dist/plugins/twenty/scripts/lib/__tests__/members-ensure.test.ts +199 -0
  69. package/dist/plugins/twenty/scripts/lib/__tests__/provision-members-db.test.ts +43 -0
  70. package/dist/plugins/twenty/scripts/lib/__tests__/schema-ensure.test.ts +230 -0
  71. package/dist/plugins/twenty/scripts/lib/__tests__/twenty-client.test.ts +207 -0
  72. package/dist/plugins/twenty/scripts/lib/lastmile-reader.ts +282 -0
  73. package/dist/plugins/twenty/scripts/lib/load-attachments.ts +220 -0
  74. package/dist/plugins/twenty/scripts/lib/load-records.ts +680 -0
  75. package/dist/plugins/twenty/scripts/lib/mappers.ts +559 -0
  76. package/dist/plugins/twenty/scripts/lib/members-ensure.ts +381 -0
  77. package/dist/plugins/twenty/scripts/lib/provision-members-db.ts +191 -0
  78. package/dist/plugins/twenty/scripts/lib/schema-ensure.ts +425 -0
  79. package/dist/plugins/twenty/scripts/lib/twenty-client.ts +246 -0
  80. package/dist/plugins/twenty/scripts/migrate-lastmile.ts +610 -0
  81. package/dist/plugins/twenty/scripts/provision-twenty-members.ts +214 -0
  82. package/dist/plugins/twenty/src/manifest.ts +99 -0
  83. package/dist/plugins/twenty/terraform/twenty/README.md +1 -1
  84. package/dist/plugins/twenty/test/manifest.test.ts +12 -2
  85. package/dist/terraform/examples/greenfield/main.tf +90 -380
  86. package/dist/terraform/examples/greenfield/terraform.tfvars.example +0 -1
  87. package/dist/terraform/modules/app/agentcore-pi/README.md +1 -3
  88. package/dist/terraform/modules/app/agentcore-pi/main.tf +29 -38
  89. package/dist/terraform/modules/app/agentcore-pi/variables.tf +23 -15
  90. package/dist/terraform/modules/app/agentcore-runtime/main.tf +3 -3
  91. package/dist/terraform/modules/app/customer-domain/main.tf +16 -2
  92. package/dist/terraform/modules/app/deployment-control-plane/main.tf +5 -0
  93. package/dist/terraform/modules/app/deployment-control-plane/runner.py +85 -207
  94. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +56 -2
  95. package/dist/terraform/modules/app/hindsight-memory/main.tf +52 -4
  96. package/dist/terraform/modules/app/lambda-api/eval-fanout.tf +7 -0
  97. package/dist/terraform/modules/app/lambda-api/handlers.tf +493 -89
  98. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +215 -96
  99. package/dist/terraform/modules/app/lambda-api/main.tf +24 -5
  100. package/dist/terraform/modules/app/lambda-api/outputs.tf +19 -11
  101. package/dist/terraform/modules/app/lambda-api/variables.tf +94 -67
  102. package/dist/terraform/modules/app/ses-email/main.tf +14 -2
  103. package/dist/terraform/modules/app/workflow-interpreter-stepfunctions/main.tf +493 -0
  104. package/dist/terraform/modules/app/workflow-interpreter-stepfunctions/outputs.tf +34 -0
  105. package/dist/terraform/modules/app/workflow-interpreter-stepfunctions/variables.tf +32 -0
  106. package/dist/terraform/modules/data/aurora-postgres/main.tf +55 -0
  107. package/dist/terraform/modules/data/aurora-postgres/outputs.tf +15 -0
  108. package/dist/terraform/modules/data/s3-buckets/main.tf +26 -0
  109. package/dist/terraform/modules/thinkwork/README.md +0 -1
  110. package/dist/terraform/modules/thinkwork/main.tf +167 -446
  111. package/dist/terraform/modules/thinkwork/outputs.tf +2 -142
  112. package/dist/terraform/modules/thinkwork/variables.tf +55 -309
  113. package/dist/terraform/schema.graphql +4 -0
  114. package/dist/workspace-defaults/files/AGENTS.md +45 -31
  115. package/dist/workspace-defaults/files/CONTEXT.md +48 -4
  116. package/dist/workspace-defaults/files/GUARDRAILS.md +18 -0
  117. package/dist/workspace-defaults/files/MEMORY_GUIDE.md +32 -4
  118. package/dist/workspace-defaults/files/SPACE.md +34 -19
  119. package/dist/workspace-defaults/files/TOOLS.md +30 -0
  120. package/dist/workspace-defaults/files/skills/document-composer/SKILL.md +154 -0
  121. package/dist/workspace-defaults/files/skills/document-composer/references/authoring-rules.md +101 -0
  122. package/package.json +1 -1
  123. package/dist/plugins/company-brain/README.md +0 -37
  124. package/dist/plugins/company-brain/package.json +0 -33
  125. package/dist/plugins/company-brain/runtime/cognee/Dockerfile +0 -11
  126. package/dist/plugins/company-brain/smoke/cognee-managed-app-smoke.mjs +0 -458
  127. package/dist/plugins/company-brain/smoke/cognee-memory-cutover-smoke.mjs +0 -539
  128. package/dist/plugins/company-brain/smoke/company-brain-context-engine-smoke.mjs +0 -312
  129. package/dist/plugins/company-brain/smoke/company-brain-operations-smoke.mjs +0 -449
  130. package/dist/plugins/company-brain/smoke/company-brain-plugin-smoke.mjs +0 -655
  131. package/dist/plugins/company-brain/smoke/hindsight-memory-isolation-smoke.mjs +0 -474
  132. package/dist/plugins/company-brain/src/api/cognee-client.ts +0 -896
  133. package/dist/plugins/company-brain/src/api/cognee-cluster-identity.ts +0 -49
  134. package/dist/plugins/company-brain/src/api/cognee-memory-scope.ts +0 -84
  135. package/dist/plugins/company-brain/src/api/context-engine-provider.ts +0 -888
  136. package/dist/plugins/company-brain/src/api/migration.ts +0 -665
  137. package/dist/plugins/company-brain/src/deployment/cognee-managed-app.ts +0 -396
  138. package/dist/plugins/company-brain/src/index.ts +0 -62
  139. package/dist/plugins/company-brain/src/manifest.ts +0 -112
  140. package/dist/plugins/company-brain/terraform/cognee/README.md +0 -263
  141. package/dist/plugins/company-brain/terraform/cognee/main.tf +0 -766
  142. package/dist/plugins/company-brain/terraform/cognee/outputs.tf +0 -144
  143. package/dist/plugins/company-brain/terraform/cognee/variables.tf +0 -402
  144. package/dist/plugins/company-brain/test/api/cognee-client.test.ts +0 -562
  145. package/dist/plugins/company-brain/test/api/cognee-memory-scope.test.ts +0 -74
  146. package/dist/plugins/company-brain/test/api/context-engine-provider.test.ts +0 -447
  147. package/dist/plugins/company-brain/test/api/migration.test.ts +0 -465
  148. package/dist/plugins/company-brain/test/manifest.test.ts +0 -95
  149. package/dist/plugins/company-brain/tsconfig.json +0 -8
@@ -93,264 +93,23 @@ variable "database_engine" {
93
93
  default = "aurora-serverless"
94
94
  }
95
95
 
96
- variable "enable_hindsight" {
97
- 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."
98
- type = bool
99
- default = true
100
- }
101
-
102
- variable "memory_engine" {
103
- description = "Active long-term memory engine. Empty selects Hindsight when enable_hindsight = true. Use 'agentcore' only for explicit low-cost/development managed-memory deployments; 'cognee' is legacy diagnostic compatibility, not the supported user/Space memory path."
104
- type = string
105
- default = ""
106
- }
107
-
108
- variable "enable_cognee" {
109
- description = "Enable Cognee as optional ThinkWork Brain ontology/knowledge-graph infrastructure. Disabled by default."
110
- type = bool
111
- default = false
112
- }
113
-
114
- variable "cognee_image_uri" {
115
- description = "Cognee container image URI pinned to an immutable sha256 digest. Required when enable_cognee = true."
116
- type = string
117
- default = ""
118
- }
119
-
120
- variable "cognee_db_username" {
121
- description = "Dedicated PostgreSQL username for Cognee metadata storage."
122
- type = string
123
- default = "thinkwork_cognee"
124
- }
125
-
126
- variable "cognee_db_name" {
127
- description = "Dedicated PostgreSQL database name for Cognee metadata storage."
128
- type = string
129
- default = "thinkwork_cognee"
130
- }
131
-
132
- variable "cognee_db_password_secret_arn" {
133
- description = "Secrets Manager ARN containing a JSON password field for the dedicated Cognee PostgreSQL user. Required when enable_cognee = true."
134
- type = string
135
- default = ""
136
- }
137
-
138
- variable "cognee_allowed_internal_cidr_blocks" {
139
- description = "CIDR blocks allowed to reach the internal Cognee ALB."
140
- type = list(string)
141
- default = []
142
- }
143
-
144
- variable "cognee_allowed_internal_security_group_ids" {
145
- description = "Security group IDs allowed to reach the internal Cognee ALB."
146
- type = list(string)
147
- default = []
148
- }
149
-
150
- variable "cognee_backend_mode" {
151
- description = "Cognee backend mode. dogfood uses EFS-backed local stores; remote requires graph/vector URLs."
152
- type = string
153
- default = "dogfood"
154
- }
155
-
156
- variable "cognee_desired_count" {
157
- description = "Desired Cognee task count. Dogfood mode must stay at 1."
158
- type = number
159
- default = 1
160
- }
161
-
162
- variable "cognee_brain_tenant_id" {
163
- description = "Tenant ID for a tenant-scoped Company Brain substrate instance. Empty preserves legacy stage-wide Cognee names."
164
- type = string
165
- default = ""
166
- }
167
-
168
- variable "cognee_brain_instance_key" {
169
- description = "Stable tenant-scoped Brain instance key used to derive resource names."
170
- type = string
171
- default = ""
172
- }
173
-
174
- variable "cognee_brain_storage_tier" {
175
- description = "Company Brain storage tier: default or production."
176
- type = string
177
- default = "default"
178
- }
179
-
180
- variable "cognee_brain_s3_artifact_root" {
181
- description = "Canonical Company Brain S3 root URI for source artifacts."
182
- type = string
183
- default = ""
184
- }
185
-
186
- variable "cognee_brain_s3_manifest_root" {
187
- description = "Canonical Company Brain S3 root URI for ingestion manifests."
188
- type = string
189
- default = ""
190
- }
191
-
192
- variable "cognee_brain_s3_vault_projection_root" {
193
- description = "Canonical Company Brain S3 root URI for vault/materialized projections."
194
- type = string
195
- default = ""
196
- }
197
-
198
- variable "cognee_brain_artifacts_bucket_arn" {
199
- description = "Optional canonical Company Brain artifacts bucket ARN for scoped task-role access."
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."
200
98
  type = string
201
99
  default = ""
202
100
  }
203
101
 
204
- variable "cognee_brain_artifacts_prefixes" {
205
- description = "Tenant/stage prefixes inside cognee_brain_artifacts_bucket_arn the Brain task may access."
206
- type = list(string)
207
- default = []
208
- }
209
-
210
- variable "cognee_private_substrate_mode" {
211
- description = "Whether the Company Brain substrate is private/internal-only."
102
+ 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."
212
104
  type = bool
213
105
  default = true
214
106
  }
215
107
 
216
- variable "cognee_require_authentication" {
217
- description = "Passed to Cognee REQUIRE_AUTHENTICATION."
218
- type = bool
219
- default = false
220
- }
221
-
222
- variable "cognee_enable_backend_access_control" {
223
- description = "Passed to Cognee ENABLE_BACKEND_ACCESS_CONTROL."
224
- type = bool
225
- default = false
226
- }
227
-
228
- variable "cognee_cors_allowed_origins" {
229
- description = "Passed to Cognee CORS_ALLOWED_ORIGINS."
230
- type = string
231
- default = ""
232
- }
233
-
234
- variable "cognee_llm_provider" {
235
- description = "Cognee LLM provider."
236
- type = string
237
- default = "bedrock"
238
- }
239
-
240
- variable "cognee_llm_model" {
241
- description = "Cognee LLM model. Must handle tool-use structured extraction reliably — nova-lite repeatedly produced invalid ToolUse sequences on observation documents, and Haiku is rate-limited on this account. Kimi K2.5 is ON_DEMAND (no inference profile needed)."
242
- type = string
243
- default = "bedrock/moonshotai.kimi-k2.5"
244
- }
245
-
246
- variable "cognee_llm_api_key_secret_arn" {
247
- description = "Optional Secrets Manager ARN for non-Bedrock Cognee LLM provider API key."
248
- type = string
249
- default = ""
250
- }
251
-
252
- variable "cognee_embedding_provider" {
253
- description = "Cognee embedding provider."
254
- type = string
255
- default = "bedrock"
256
- }
257
-
258
- variable "cognee_embedding_model" {
259
- description = "Cognee embedding model."
260
- type = string
261
- default = "amazon.titan-embed-text-v2:0"
262
- }
263
-
264
- variable "cognee_embedding_dimensions" {
265
- description = "Cognee embedding dimensions."
266
- type = number
267
- default = 1024
268
- }
269
-
270
- variable "cognee_embedding_api_key_secret_arn" {
271
- description = "Optional Secrets Manager ARN for non-Bedrock Cognee embedding provider API key."
272
- type = string
273
- default = ""
274
- }
275
-
276
- variable "cognee_vector_db_provider" {
277
- description = "Cognee vector store provider."
278
- type = string
279
- default = "lancedb"
280
- }
281
-
282
- variable "cognee_vector_db_url" {
283
- description = "Cognee vector store URL. Empty uses the dogfood local default."
284
- type = string
285
- default = ""
286
- }
287
-
288
- variable "cognee_vector_db_key_secret_arn" {
289
- description = "Optional Secrets Manager ARN for remote Cognee vector store credentials."
290
- type = string
291
- default = ""
292
- }
293
-
294
- variable "cognee_graph_database_provider" {
295
- description = "Cognee graph store provider."
296
- type = string
297
- default = "kuzu"
298
- }
299
-
300
- variable "cognee_graph_database_url" {
301
- description = "Cognee graph store URL. Empty uses the dogfood local default."
302
- type = string
303
- default = ""
304
- }
305
-
306
- variable "cognee_graph_database_username" {
307
- description = "Optional Cognee graph store username."
308
- type = string
309
- default = ""
310
- }
311
-
312
- variable "cognee_graph_database_password_secret_arn" {
313
- description = "Optional Secrets Manager ARN for remote Cognee graph store password."
314
- type = string
315
- default = ""
316
- }
317
-
318
- variable "cognee_neptune_graph_id" {
319
- description = "Neptune Analytics graph ID used by the production Brain tier."
320
- type = string
321
- default = ""
322
- }
323
-
324
- variable "cognee_neptune_graph_arn" {
325
- description = "Optional Neptune Analytics graph ARN for scoped task-role access."
326
- type = string
327
- default = ""
328
- }
329
-
330
- variable "cognee_neptune_endpoint" {
331
- description = "Neptune Analytics endpoint used by the production Brain tier."
332
- type = string
333
- default = ""
334
- }
335
-
336
- variable "cognee_production_posture" {
337
- description = "Operator evidence string for production-tier approval/readiness posture."
108
+ variable "memory_engine" {
109
+ description = "Active long-term memory engine. Empty selects Hindsight when enable_hindsight = true. Use 'agentcore' only for explicit low-cost/development managed-memory deployments."
338
110
  type = string
339
111
  default = ""
340
112
  }
341
-
342
- variable "cognee_bedrock_model_resource_arns" {
343
- description = "Explicit Bedrock model ARNs Cognee may invoke when a Bedrock provider is selected."
344
- type = list(string)
345
- default = []
346
- }
347
-
348
- variable "cognee_kms_key_arns" {
349
- description = "Optional KMS key ARNs needed to decrypt Cognee-injected secrets."
350
- type = list(string)
351
- default = []
352
- }
353
-
354
113
  variable "twenty_provisioned" {
355
114
  description = "Provision the retained Twenty CRM managed-app substrate. Runtime can be parked independently with twenty_runtime_enabled."
356
115
  type = bool
@@ -477,11 +236,6 @@ variable "n8n_service_credential_secret_arn" {
477
236
  default = ""
478
237
  }
479
238
 
480
- variable "n8n_agent_step_bridge_credential_secret_arn" {
481
- description = "Secrets Manager ARN containing the inbound credential used by n8n workflows to call the ThinkWork agent-step bridge."
482
- type = string
483
- default = ""
484
- }
485
239
 
486
240
  variable "n8n_storage_bucket_name" {
487
241
  description = "S3 bucket name used for n8n managed artifacts and optional storage mode objects."
@@ -656,15 +410,21 @@ variable "requester_memory_dreaming_schedule_expression" {
656
410
  default = "cron(30 4 * * ? *)"
657
411
  }
658
412
 
413
+ variable "brain_dream_state_enabled" {
414
+ description = "Enable the recurring Brain dream-state consolidation schedule (THINK-261 #5). Manual invokes work regardless via event.manual."
415
+ type = bool
416
+ default = false
417
+ }
418
+
659
419
  variable "requester_memory_dreaming_model_id" {
660
420
  description = "Bedrock Converse model id for requester memory REM reflection."
661
421
  type = string
662
422
  default = "openai.gpt-oss-120b-1:0"
663
423
  }
664
424
 
665
- variable "company_brain_source_agent_model_id" {
425
+ variable "brain_source_agent_model_id" {
666
426
  description = <<-EOT
667
- Bedrock model id the GraphQL Company Brain source-agent runtime uses
427
+ Bedrock model id the GraphQL Brain source-agent runtime uses
668
428
  for JSON tool/action turns. Defaults to Claude Haiku 4.5 for reliable
669
429
  action JSON while wiki compile can stay on gpt-oss for throughput.
670
430
  EOT
@@ -672,6 +432,34 @@ variable "company_brain_source_agent_model_id" {
672
432
  default = "us.anthropic.claude-haiku-4-5-20251001-v1:0"
673
433
  }
674
434
 
435
+ variable "knowledge_graph_observations_ingest_enabled" {
436
+ 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)."
437
+ type = bool
438
+ default = false
439
+ }
440
+
441
+ variable "wiki_source" {
442
+ description = "Wiki compile pipeline source: 'planner' (LLM compile) or 'graph' (deterministic graph->wiki materializer). Dev flips first per THINK-133 U8/KTD-4; the default flips for all stages only after dev comparison evidence holds."
443
+ type = string
444
+ default = "planner"
445
+
446
+ validation {
447
+ condition = contains(["planner", "graph"], var.wiki_source)
448
+ error_message = "wiki_source must be 'planner' or 'graph'."
449
+ }
450
+ }
451
+
452
+ variable "analyst_policy_source" {
453
+ 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."
454
+ type = string
455
+ default = "row"
456
+
457
+ validation {
458
+ condition = contains(["row", "sidecar"], var.analyst_policy_source)
459
+ error_message = "analyst_policy_source must be 'row' or 'sidecar'."
460
+ }
461
+ }
462
+
675
463
  variable "wiki_aggregation_pass_enabled" {
676
464
  description = <<-EOT
677
465
  Feature flag for the wiki aggregation pass — the second LLM call
@@ -958,90 +746,49 @@ module "thinkwork" {
958
746
 
959
747
  plugin_catalog_github_token_secret_arn = var.plugin_catalog_github_token_secret_arn
960
748
 
961
- db_password = var.db_password
962
- database_engine = var.database_engine
963
- enable_hindsight = var.enable_hindsight
964
- memory_engine = var.memory_engine
965
- enable_cognee = var.enable_cognee
966
- cognee_image_uri = var.cognee_image_uri
967
- cognee_db_username = var.cognee_db_username
968
- cognee_db_name = var.cognee_db_name
969
- cognee_db_password_secret_arn = var.cognee_db_password_secret_arn
970
- cognee_allowed_internal_cidr_blocks = var.cognee_allowed_internal_cidr_blocks
971
- cognee_allowed_internal_security_group_ids = var.cognee_allowed_internal_security_group_ids
972
- cognee_backend_mode = var.cognee_backend_mode
973
- cognee_desired_count = var.cognee_desired_count
974
- cognee_brain_tenant_id = var.cognee_brain_tenant_id
975
- cognee_brain_instance_key = var.cognee_brain_instance_key
976
- cognee_brain_storage_tier = var.cognee_brain_storage_tier
977
- cognee_brain_s3_artifact_root = var.cognee_brain_s3_artifact_root
978
- cognee_brain_s3_manifest_root = var.cognee_brain_s3_manifest_root
979
- cognee_brain_s3_vault_projection_root = var.cognee_brain_s3_vault_projection_root
980
- cognee_brain_artifacts_bucket_arn = var.cognee_brain_artifacts_bucket_arn
981
- cognee_brain_artifacts_prefixes = var.cognee_brain_artifacts_prefixes
982
- cognee_private_substrate_mode = var.cognee_private_substrate_mode
983
- cognee_require_authentication = var.cognee_require_authentication
984
- cognee_enable_backend_access_control = var.cognee_enable_backend_access_control
985
- cognee_cors_allowed_origins = var.cognee_cors_allowed_origins
986
- cognee_llm_provider = var.cognee_llm_provider
987
- cognee_llm_model = var.cognee_llm_model
988
- cognee_llm_api_key_secret_arn = var.cognee_llm_api_key_secret_arn
989
- cognee_embedding_provider = var.cognee_embedding_provider
990
- cognee_embedding_model = var.cognee_embedding_model
991
- cognee_embedding_dimensions = var.cognee_embedding_dimensions
992
- cognee_embedding_api_key_secret_arn = var.cognee_embedding_api_key_secret_arn
993
- cognee_vector_db_provider = var.cognee_vector_db_provider
994
- cognee_vector_db_url = var.cognee_vector_db_url
995
- cognee_vector_db_key_secret_arn = var.cognee_vector_db_key_secret_arn
996
- cognee_graph_database_provider = var.cognee_graph_database_provider
997
- cognee_graph_database_url = var.cognee_graph_database_url
998
- cognee_graph_database_username = var.cognee_graph_database_username
999
- cognee_graph_database_password_secret_arn = var.cognee_graph_database_password_secret_arn
1000
- cognee_neptune_graph_id = var.cognee_neptune_graph_id
1001
- cognee_neptune_graph_arn = var.cognee_neptune_graph_arn
1002
- cognee_neptune_endpoint = var.cognee_neptune_endpoint
1003
- cognee_production_posture = var.cognee_production_posture
1004
- cognee_bedrock_model_resource_arns = var.cognee_bedrock_model_resource_arns
1005
- cognee_kms_key_arns = var.cognee_kms_key_arns
1006
- twenty_provisioned = var.twenty_provisioned
1007
- twenty_runtime_enabled = var.twenty_runtime_enabled
1008
- twenty_image_uri = var.twenty_image_uri
1009
- twenty_db_username = var.twenty_db_username
1010
- twenty_db_name = var.twenty_db_name
1011
- twenty_db_url_secret_arn = var.twenty_db_url_secret_arn
1012
- twenty_encryption_key_secret_arn = var.twenty_encryption_key_secret_arn
1013
- twenty_email_from_address = var.twenty_email_from_address
1014
- twenty_email_from_name = var.twenty_email_from_name
1015
- twenty_public_url = local.twenty_url
1016
- twenty_certificate_arn = var.twenty_certificate_arn != "" ? var.twenty_certificate_arn : (local.twenty_managed_certificate_enabled ? aws_acm_certificate_validation.twenty[0].certificate_arn : "")
1017
- n8n_provisioned = var.n8n_provisioned
1018
- n8n_runtime_enabled = var.n8n_runtime_enabled
1019
- n8n_image_uri = var.n8n_image_uri
1020
- n8n_database_admin_secret_arn = var.n8n_database_admin_secret_arn
1021
- n8n_database_url_secret_arn = var.n8n_database_url_secret_arn
1022
- n8n_database_username = var.n8n_database_username
1023
- n8n_database_name = var.n8n_database_name
1024
- n8n_encryption_key_secret_arn = var.n8n_encryption_key_secret_arn
1025
- n8n_operator_secret_arn = var.n8n_operator_secret_arn
1026
- n8n_service_credential_secret_arn = var.n8n_service_credential_secret_arn
1027
- n8n_agent_step_bridge_credential_secret_arn = var.n8n_agent_step_bridge_credential_secret_arn
1028
- n8n_storage_bucket_name = var.n8n_storage_bucket_name
1029
- n8n_container_port = var.n8n_container_port
1030
- n8n_cache_engine = var.n8n_cache_engine
1031
- n8n_domain = local.n8n_domain
1032
- n8n_public_url = local.n8n_url
1033
- n8n_certificate_arn = var.n8n_certificate_arn != "" ? var.n8n_certificate_arn : (local.n8n_managed_certificate_enabled ? aws_acm_certificate_validation.n8n[0].certificate_arn : "")
1034
- google_oauth_client_id = var.google_oauth_client_id
1035
- google_oauth_client_secret = var.google_oauth_client_secret
1036
- pre_signup_lambda_zip = var.pre_signup_lambda_zip
1037
- cognito_custom_auth_lambda_zip = var.cognito_custom_auth_lambda_zip
1038
- lambda_zips_dir = var.lambda_zips_dir
1039
- lambda_artifact_bucket = var.lambda_artifact_bucket
1040
- lambda_artifact_prefix = var.lambda_artifact_prefix
1041
- require_lambda_artifacts = var.require_lambda_artifacts
1042
- enable_workspace_orchestration = var.enable_workspace_orchestration
1043
- api_auth_secret = var.api_auth_secret
1044
- platform_operator_emails = var.platform_operator_emails
749
+ db_password = var.db_password
750
+ database_engine = var.database_engine
751
+ enable_hindsight = var.enable_hindsight
752
+ hindsight_database_name = var.hindsight_database_name
753
+ memory_engine = var.memory_engine
754
+ twenty_provisioned = var.twenty_provisioned
755
+ twenty_runtime_enabled = var.twenty_runtime_enabled
756
+ twenty_image_uri = var.twenty_image_uri
757
+ twenty_db_username = var.twenty_db_username
758
+ twenty_db_name = var.twenty_db_name
759
+ twenty_db_url_secret_arn = var.twenty_db_url_secret_arn
760
+ twenty_encryption_key_secret_arn = var.twenty_encryption_key_secret_arn
761
+ twenty_email_from_address = var.twenty_email_from_address
762
+ twenty_email_from_name = var.twenty_email_from_name
763
+ twenty_public_url = local.twenty_url
764
+ twenty_certificate_arn = var.twenty_certificate_arn != "" ? var.twenty_certificate_arn : (local.twenty_managed_certificate_enabled ? aws_acm_certificate_validation.twenty[0].certificate_arn : "")
765
+ n8n_provisioned = var.n8n_provisioned
766
+ n8n_runtime_enabled = var.n8n_runtime_enabled
767
+ n8n_image_uri = var.n8n_image_uri
768
+ n8n_database_admin_secret_arn = var.n8n_database_admin_secret_arn
769
+ n8n_database_url_secret_arn = var.n8n_database_url_secret_arn
770
+ n8n_database_username = var.n8n_database_username
771
+ n8n_database_name = var.n8n_database_name
772
+ n8n_encryption_key_secret_arn = var.n8n_encryption_key_secret_arn
773
+ n8n_operator_secret_arn = var.n8n_operator_secret_arn
774
+ n8n_service_credential_secret_arn = var.n8n_service_credential_secret_arn
775
+ n8n_storage_bucket_name = var.n8n_storage_bucket_name
776
+ n8n_container_port = var.n8n_container_port
777
+ n8n_cache_engine = var.n8n_cache_engine
778
+ n8n_domain = local.n8n_domain
779
+ n8n_public_url = local.n8n_url
780
+ n8n_certificate_arn = var.n8n_certificate_arn != "" ? var.n8n_certificate_arn : (local.n8n_managed_certificate_enabled ? aws_acm_certificate_validation.n8n[0].certificate_arn : "")
781
+ google_oauth_client_id = var.google_oauth_client_id
782
+ google_oauth_client_secret = var.google_oauth_client_secret
783
+ pre_signup_lambda_zip = var.pre_signup_lambda_zip
784
+ cognito_custom_auth_lambda_zip = var.cognito_custom_auth_lambda_zip
785
+ lambda_zips_dir = var.lambda_zips_dir
786
+ lambda_artifact_bucket = var.lambda_artifact_bucket
787
+ lambda_artifact_prefix = var.lambda_artifact_prefix
788
+ require_lambda_artifacts = var.require_lambda_artifacts
789
+ enable_workspace_orchestration = var.enable_workspace_orchestration
790
+ api_auth_secret = var.api_auth_secret
791
+ platform_operator_emails = var.platform_operator_emails
1045
792
 
1046
793
  # Public website custom domain (optional — wired only when www_domain is set)
1047
794
  www_domain = var.www_domain
@@ -1080,13 +827,17 @@ module "thinkwork" {
1080
827
  # don't wipe the Bedrock model or the aggregation flag back to
1081
828
  # whatever the Lambda env defaults to.
1082
829
  wiki_compile_model_id = var.wiki_compile_model_id
1083
- company_brain_source_agent_model_id = var.company_brain_source_agent_model_id
830
+ brain_source_agent_model_id = var.brain_source_agent_model_id
1084
831
  wiki_aggregation_pass_enabled = var.wiki_aggregation_pass_enabled
832
+ wiki_source = var.wiki_source
833
+ analyst_policy_source = var.analyst_policy_source
834
+ knowledge_graph_observations_ingest_enabled = var.knowledge_graph_observations_ingest_enabled
1085
835
  wiki_deterministic_linking_enabled = var.wiki_deterministic_linking_enabled
1086
836
  google_places_api_key = var.google_places_api_key
1087
837
  requester_idle_memory_learning_enabled = var.requester_idle_memory_learning_enabled
1088
838
  requester_memory_dreaming_enabled = var.requester_memory_dreaming_enabled
1089
839
  requester_memory_dreaming_schedule_expression = var.requester_memory_dreaming_schedule_expression
840
+ brain_dream_state_enabled = var.brain_dream_state_enabled
1090
841
  requester_memory_dreaming_model_id = var.requester_memory_dreaming_model_id
1091
842
  agentcore_code_interpreter_id = var.agentcore_code_interpreter_id
1092
843
  agentcore_memory_id = var.agentcore_memory_id
@@ -1305,42 +1056,6 @@ output "hindsight_endpoint" {
1305
1056
  description = "Hindsight API endpoint (null when enable_hindsight = false)"
1306
1057
  value = module.thinkwork.hindsight_endpoint
1307
1058
  }
1308
-
1309
- output "cognee_enabled" {
1310
- description = "Whether the Cognee ontology/KG add-on is enabled"
1311
- value = module.thinkwork.cognee_enabled
1312
- }
1313
-
1314
- output "cognee_endpoint" {
1315
- description = "Internal Cognee API endpoint (null when enable_cognee = false)"
1316
- value = module.thinkwork.cognee_endpoint
1317
- }
1318
-
1319
- output "cognee_log_group_name" {
1320
- description = "CloudWatch log group for Cognee (null when enable_cognee = false)"
1321
- value = module.thinkwork.cognee_log_group_name
1322
- }
1323
-
1324
- output "cognee_brain_storage_tier" {
1325
- description = "Company Brain storage tier (null when enable_cognee = false)"
1326
- value = module.thinkwork.cognee_brain_storage_tier
1327
- }
1328
-
1329
- output "cognee_brain_instance_key" {
1330
- description = "Tenant-scoped Company Brain instance key (null for legacy stage-wide instances)"
1331
- value = module.thinkwork.cognee_brain_instance_key
1332
- }
1333
-
1334
- output "cognee_s3_artifact_root" {
1335
- description = "Canonical Company Brain S3 source artifact root"
1336
- value = module.thinkwork.cognee_s3_artifact_root
1337
- }
1338
-
1339
- output "cognee_neptune_graph_id" {
1340
- description = "Neptune Analytics graph ID for production Company Brain"
1341
- value = module.thinkwork.cognee_neptune_graph_id
1342
- }
1343
-
1344
1059
  output "twenty_provisioned" {
1345
1060
  description = "Whether the Twenty CRM retained managed-app substrate is provisioned"
1346
1061
  value = module.thinkwork.twenty_provisioned
@@ -1431,11 +1146,6 @@ output "n8n_service_credential_secret_arn" {
1431
1146
  value = module.thinkwork.n8n_service_credential_secret_arn
1432
1147
  }
1433
1148
 
1434
- output "n8n_agent_step_bridge_credential_secret_arn" {
1435
- description = "Secrets Manager ARN used for the inbound n8n agent-step bridge credential (null when n8n_provisioned = false)"
1436
- value = module.thinkwork.n8n_agent_step_bridge_credential_secret_arn
1437
- }
1438
-
1439
1149
  output "agentcore_memory_id" {
1440
1150
  description = "AgentCore Memory resource ID used for automatic retention"
1441
1151
  value = module.thinkwork.agentcore_memory_id
@@ -59,7 +59,6 @@ database_engine = "rds-postgres"
59
59
  # n8n_encryption_key_secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:thinkwork/dev/n8n/encryption-key-..."
60
60
  # n8n_operator_secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:thinkwork/dev/n8n/operator-..."
61
61
  # n8n_service_credential_secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:thinkwork/dev/n8n/service-credential-..."
62
- # n8n_agent_step_bridge_credential_secret_arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:thinkwork/dev/n8n/agent-step-bridge-credential-..."
63
62
  # n8n_storage_bucket_name = "thinkwork-dev-n8n"
64
63
  # n8n_container_port = 5678
65
64
  # n8n_cache_engine = "valkey"
@@ -8,7 +8,7 @@ This module owns the dedicated Pi Lambda + log group + IAM role + event-invoke c
8
8
 
9
9
  - `aws_iam_role.agentcore_pi` (`thinkwork-${stage}-agentcore-pi-role`) — assumed by Lambda + Bedrock AgentCore Runtime principals.
10
10
  - `aws_iam_role_policy.agentcore_pi` — baseline permissions (S3 skill catalog, Bedrock model invoke, AgentCore Memory + Code Interpreter, CloudWatch Logs, X-Ray ingestion, ECR pull, SSM parameter access, memory-retain Lambda invoke). Forward-compat additions for U4-U8: Aurora Data API + Secrets Manager scoped to `thinkwork-${stage}-*`.
11
- - `aws_iam_role_policy_attachment.agentcore_pi_vpc_access` — attached when Pi needs private-network access for Company Brain/Cognee direct MCP or the OKF EFS mount.
11
+ - `aws_iam_role_policy_attachment.agentcore_pi_vpc_access` — attached when Pi needs private-network access for the OKF EFS mount.
12
12
  - `aws_iam_role_policy.agentcore_pi_dlq_send` — `sqs:SendMessage` against the shared async DLQ (injected via `var.async_dlq_arn`).
13
13
  - `aws_cloudwatch_log_group.agentcore_pi` (`/thinkwork/${stage}/agentcore-pi`).
14
14
  - `aws_lambda_function.agentcore_pi` (`thinkwork-${stage}-agentcore-pi`) — `package_type = "Image"`, pulls `${ecr_repository_url}:pi-latest`.
@@ -48,8 +48,6 @@ The Lambda function name changes from `thinkwork-${stage}-agentcore-flue` to `th
48
48
  | `api_endpoint` | no | API Gateway base URL for the `/api/skills/complete` callback. |
49
49
  | `api_auth_secret` | no | Service-auth bearer for the same callback. |
50
50
  | `memory_engine` | no | `hindsight` or `agentcore`; surfaced as `MEMORY_ENGINE` env var. |
51
- | `cognee_subnet_ids` | no | Private subnets for direct Company Brain/Cognee MCP access. |
52
- | `cognee_security_group_ids` | no | Security groups allowed to reach the internal Company Brain/Cognee endpoint. |
53
51
 
54
52
  ## Outputs
55
53