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.
- package/README.md +3 -14
- package/dist/{api-client-JYZXYQJR.js → api-client-4P4JZOBX.js} +1 -1
- package/dist/{chunk-Z2F6RJFR.js → chunk-4OMDWYZQ.js} +4 -5
- package/dist/{chunk-ILZKG5WV.js → chunk-AD2NIWB5.js} +434 -69
- package/dist/chunk-MWQ7RO76.js +137 -0
- package/dist/{chunk-DVPBI5HM.js → chunk-OLUQ4U2Z.js} +26 -26
- package/dist/{chunk-QOERT44A.js → chunk-YQCYD6NE.js} +57 -44
- package/dist/cli.js +4400 -16431
- package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +0 -1
- package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +0 -1
- package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +0 -14
- package/dist/{dist-es-CRV46D5B.js → dist-es-2OTNTL4N.js} +4 -4
- package/dist/{dist-es-ENBUC3JP.js → dist-es-2XVAH4BQ.js} +2 -2
- package/dist/{dist-es-DCY4IC3Y.js → dist-es-3DPDUJAH.js} +2 -2
- package/dist/{dist-es-G7PTG75M.js → dist-es-BNZTBBVC.js} +1 -1
- package/dist/{dist-es-GKDBE7E6.js → dist-es-CD2RBDAC.js} +1 -1
- package/dist/{dist-es-R7FGL2IB.js → dist-es-I4FW57PS.js} +1 -1
- package/dist/{dist-es-USORBXZ5.js → dist-es-KVFWJNDY.js} +4 -4
- package/dist/{dist-es-HY3535OI.js → dist-es-PS73DWNL.js} +2 -2
- package/dist/{dist-es-LDE437AM.js → dist-es-S3NZQFGT.js} +1 -1
- package/dist/{dist-es-G54LBMRN.js → dist-es-SGCA4P32.js} +1 -1
- package/dist/{dist-es-Q57SZXZ7.js → dist-es-WBM6J4RA.js} +2 -2
- package/dist/{dist-es-P26FWFLT.js → dist-es-ZGVADYIF.js} +8 -8
- package/dist/drizzle/0227_analyst_reader_role.sql +17 -26
- package/dist/drizzle/0230_analyst_rls.sql +28 -45
- package/dist/drizzle/0261_native_auth_control_plane.sql +7 -3
- package/dist/drizzle/0270_tool_execution_ledger.sql +115 -0
- package/dist/drizzle/0271_ontology_twin_declarations.sql +47 -0
- package/dist/drizzle/0272_identity_graph_projection_cursor.sql +23 -0
- package/dist/drizzle/0273_twin_materialization_suggestions.sql +29 -0
- package/dist/drizzle/0274_tenant_mcp_twin_keys.sql +59 -0
- package/dist/drizzle/0275_identity_bulk_rebuild_fence.sql +30 -0
- package/dist/drizzle/0276_tool_execution_ledger_allow_cascade_delete.sql +18 -0
- package/dist/drizzle/0277_knowledge_base_sources.sql +107 -0
- package/dist/drizzle/0278_kb_page_transcription.sql +55 -0
- package/dist/drizzle/0279_mcp_servers_off_plugin_provenance.sql +93 -0
- package/dist/drizzle/0280_work_item_external_refs_drop_plane_provider.sql +46 -0
- package/dist/drizzle/0281_tenant_mcp_twin_keys_expiry_suffix.sql +9 -0
- package/dist/drizzle/0282_tenant_mcp_twin_keys_grants.sql +24 -0
- package/dist/drizzle/0283_agents_agentcore_runtime_dispatch.sql +13 -0
- package/dist/drizzle/0284_user_brain_claims.sql +69 -0
- package/dist/drizzle/0285_tenant_mcp_twin_keys_trusted_subsystem.sql +30 -0
- package/dist/drizzle/0286_brain_analytics_key.sql +26 -0
- package/dist/drizzle/0287_brain_subject.sql +25 -0
- package/dist/drizzle/0288_multi_lane_identities.sql +25 -0
- package/dist/{loadSso-DJVB7BXE.js → loadSso-ETCXTR4I.js} +2 -2
- package/dist/{loadSso-JAMNA3WY.js → loadSso-UBD7KUHE.js} +2 -2
- package/dist/plugins/README.md +2 -2
- package/dist/plugins/catalog/package.json +0 -3
- package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +6 -3
- package/dist/plugins/catalog/src/__tests__/catalog.test.ts +21 -21
- package/dist/plugins/catalog/src/__tests__/contracts.test.ts +102 -25
- package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +7 -6
- package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +0 -15
- package/dist/plugins/catalog/src/contracts.ts +15 -0
- package/dist/plugins/catalog/src/registry/generated-first-party.ts +0 -18
- package/dist/plugins/n8n/test/integrated-app-contract.test.ts +1 -1
- package/dist/plugins/twenty/package.json +2 -1
- package/dist/plugins/twenty/scripts/LAMBDA_DEPLOY.md +114 -0
- package/dist/plugins/twenty/scripts/build-lambda.sh +29 -0
- package/dist/plugins/twenty/scripts/configure-product-views.ts +195 -0
- package/dist/plugins/twenty/scripts/lambda-handler.ts +49 -0
- package/dist/plugins/twenty/scripts/lib/__tests__/load-attachments.test.ts +38 -0
- package/dist/plugins/twenty/scripts/lib/__tests__/load-records.test.ts +145 -2
- package/dist/plugins/twenty/scripts/lib/__tests__/mappers.test.ts +397 -151
- package/dist/plugins/twenty/scripts/lib/__tests__/members-ensure.test.ts +28 -129
- package/dist/plugins/twenty/scripts/lib/__tests__/provision-members-db.test.ts +10 -0
- package/dist/plugins/twenty/scripts/lib/__tests__/schema-ensure.test.ts +13 -8
- package/dist/plugins/twenty/scripts/lib/lastmile-reader.ts +222 -2
- package/dist/plugins/twenty/scripts/lib/load-attachments.ts +29 -0
- package/dist/plugins/twenty/scripts/lib/load-records.ts +160 -43
- package/dist/plugins/twenty/scripts/lib/mappers.ts +368 -152
- package/dist/plugins/twenty/scripts/lib/members-ensure.ts +43 -268
- package/dist/plugins/twenty/scripts/lib/provision-members-db.ts +57 -0
- package/dist/plugins/twenty/scripts/lib/schema-ensure.ts +136 -31
- package/dist/plugins/twenty/scripts/migrate-lastmile.ts +254 -152
- package/dist/plugins/twenty/scripts/provision-twenty-members.ts +44 -1
- package/dist/plugins/twenty/scripts/purge-lastmile-import.ts +178 -0
- package/dist/plugins/twenty/scripts/restructure-products.ts +312 -0
- package/dist/plugins/twenty/scripts/retag-stage-values.ts +362 -0
- package/dist/plugins/twenty/test/manifest.test.ts +2 -4
- package/dist/scripts/post-deploy.sh +79 -1
- package/dist/{signin-UGDWTGS4.js → signin-5QZNRSOO.js} +2 -2
- package/dist/{sso-oidc-Q4VXANXY.js → sso-oidc-XK673P54.js} +2 -2
- package/dist/{sts-CWLSE3GH.js → sts-OXI2UALF.js} +6 -134
- package/dist/{sts-DNZLNVOV.js → sts-SQW4NBK3.js} +6 -134
- package/dist/terraform/examples/greenfield/main.tf +233 -175
- package/dist/terraform/examples/greenfield/terraform.tfvars.example +12 -8
- package/dist/terraform/modules/app/agentcore-admin/main.tf +47 -0
- package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +39 -47
- package/dist/terraform/modules/app/agentcore-code-interpreter/main.tf +13 -66
- package/dist/terraform/modules/app/agentcore-identity/main.tf +106 -26
- package/dist/terraform/modules/app/agentcore-identity/outputs.tf +6 -6
- package/dist/terraform/modules/app/agentcore-identity/scripts/bootstrap_twenty_oauth_client.sh +216 -99
- package/dist/terraform/modules/app/agentcore-identity/scripts/delete_identity.sh +6 -9
- package/dist/terraform/modules/app/agentcore-identity/scripts/delete_workload_identity.sh +19 -0
- package/dist/terraform/modules/app/agentcore-identity/scripts/ensure_workload_identity.sh +29 -0
- package/dist/terraform/modules/app/agentcore-identity/scripts/read_identity.sh +22 -7
- package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_identity.sh +17 -46
- package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_provider.mjs +65 -3
- package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/after.tf +15 -0
- package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/before.tf +7 -0
- package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/identity-after.tf +8 -0
- package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/identity-before.tf +9 -0
- package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/thinkwork-after.tf +3 -0
- package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/thinkwork-before.tf +3 -0
- package/dist/terraform/modules/app/agentcore-identity/variables.tf +6 -0
- package/dist/terraform/modules/app/agentcore-memory/README.md +46 -9
- package/dist/terraform/modules/app/agentcore-memory/main.tf +27 -10
- package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +156 -24
- package/dist/terraform/modules/app/agentcore-pi/README.md +1 -3
- package/dist/terraform/modules/app/agentcore-pi/main.tf +42 -52
- package/dist/terraform/modules/app/agentcore-pi/outputs.tf +3 -3
- package/dist/terraform/modules/app/agentcore-pi/scripts/reconcile_pi_runtime.mjs +175 -0
- package/dist/terraform/modules/app/agentcore-pi/variables.tf +35 -28
- package/dist/terraform/modules/app/agentcore-platform/main.tf +68 -0
- package/dist/terraform/modules/app/agentcore-runtime/main.tf +4 -20
- package/dist/terraform/modules/app/capability-broker/main.tf +2 -2
- package/dist/terraform/modules/app/capability-broker/variables.tf +11 -0
- package/dist/terraform/modules/app/deployment-control-plane/README.md +264 -0
- package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +4 -1
- package/dist/terraform/modules/app/deployment-control-plane/main.tf +94 -0
- package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +5 -0
- package/dist/terraform/modules/app/deployment-control-plane/runner.py +2641 -124
- package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +2034 -154
- package/dist/terraform/modules/app/deployment-control-plane/variables.tf +33 -0
- package/dist/terraform/modules/app/lambda-api/auth-state.tf +72 -0
- package/dist/terraform/modules/app/lambda-api/chat-latency-observability.tf +466 -0
- package/dist/terraform/modules/app/lambda-api/dispatch-dlq.tf +55 -0
- package/dist/terraform/modules/app/lambda-api/handlers.tf +411 -723
- package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +262 -198
- package/dist/terraform/modules/app/lambda-api/main.tf +51 -13
- package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +4 -181
- package/dist/terraform/modules/app/lambda-api/memory-alarms.tf +3 -28
- package/dist/terraform/modules/app/lambda-api/oauth-secrets.tf +1 -2
- package/dist/terraform/modules/app/lambda-api/outputs.tf +17 -45
- package/dist/terraform/modules/app/lambda-api/turn-assertion.tf +45 -0
- package/dist/terraform/modules/app/lambda-api/variables.tf +219 -126
- package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/README.md +1 -1
- package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/main.tf +18 -18
- package/dist/terraform/modules/app/sandbox-log-scrubber/README.md +11 -10
- package/dist/terraform/modules/app/sandbox-log-scrubber/main.tf +5 -5
- package/dist/terraform/modules/app/static-site/main.tf +1 -1
- package/dist/terraform/modules/app/www-dns/main.tf +9 -27
- package/dist/terraform/modules/app/www-dns/variables.tf +4 -10
- package/dist/terraform/modules/data/aurora-postgres/README.md +34 -0
- package/dist/terraform/modules/data/aurora-postgres/alarms.tf +82 -0
- package/dist/terraform/modules/data/aurora-postgres/main.tf +27 -57
- package/dist/terraform/modules/data/aurora-postgres/outputs.tf +0 -9
- package/dist/terraform/modules/data/aurora-postgres/variables.tf +41 -0
- package/dist/terraform/modules/data/s3-buckets/main.tf +5 -6
- package/dist/terraform/modules/foundation/cognito/main.tf +81 -8
- package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
- package/dist/terraform/modules/foundation/cognito/variables.tf +24 -12
- package/dist/terraform/modules/thinkwork/README.md +5 -1
- package/dist/terraform/modules/thinkwork/main.tf +376 -374
- package/dist/terraform/modules/thinkwork/outputs.tf +12 -158
- package/dist/terraform/modules/thinkwork/variables.tf +246 -89
- package/dist/workspace-defaults/files/INSTRUCTIONS.md +9 -11
- package/dist/workspace-defaults/files/MEMORY_GUIDE.md +38 -35
- package/dist/workspace-defaults/files/ROUTER.md +1 -1
- package/dist/workspace-defaults/files/TOOLS.md +9 -39
- package/dist/workspace-defaults/files/agents/analyst/INSTRUCTIONS.md +6 -3
- package/dist/workspace-defaults/files/catalog-skills/brain-brief-builder/SKILL.md +165 -0
- package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/SKILL.md +75 -0
- package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
- package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
- package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/workflow-authoring.md +46 -0
- package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +1 -1
- package/dist/workspace-defaults/files/skills/document-composer/SKILL.md +22 -3
- package/package.json +1 -1
- package/dist/drizzle/0261_managed_harness_multiplayer.sql +0 -313
- package/dist/drizzle/0262_parallel_harness_threads.sql +0 -9
- package/dist/drizzle/0264_harness_tool_execution_ledger.sql +0 -113
- package/dist/plugins/company-data/README.md +0 -49
- package/dist/plugins/company-data/package.json +0 -21
- package/dist/plugins/company-data/src/index.ts +0 -30
- package/dist/plugins/company-data/src/manifest.ts +0 -26
- package/dist/plugins/company-data/test/manifest.test.ts +0 -116
- package/dist/plugins/company-data/tsconfig.json +0 -8
- package/dist/plugins/company-etl/README.md +0 -46
- package/dist/plugins/company-etl/package.json +0 -21
- package/dist/plugins/company-etl/src/index.ts +0 -29
- package/dist/plugins/company-etl/src/manifest.ts +0 -26
- package/dist/plugins/company-etl/test/manifest.test.ts +0 -108
- package/dist/plugins/company-etl/tsconfig.json +0 -8
- package/dist/plugins/lastmile/README.md +0 -50
- package/dist/plugins/lastmile/package.json +0 -23
- package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +0 -661
- package/dist/plugins/lastmile/src/api/tasks-adapter.ts +0 -572
- package/dist/plugins/lastmile/src/discovery.fixture.ts +0 -64
- package/dist/plugins/lastmile/src/index.ts +0 -46
- package/dist/plugins/lastmile/src/manifest.ts +0 -139
- package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +0 -266
- package/dist/plugins/lastmile/test/discovery.test.ts +0 -88
- package/dist/plugins/lastmile/tsconfig.json +0 -8
- package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +0 -409
- package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +0 -359
- package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +0 -61
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +0 -227
- package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +0 -277
- package/dist/terraform/modules/app/agentcore-code-interpreter/scripts/build_and_push_sandbox_base.sh +0 -70
- package/dist/terraform/modules/app/agentcore-gateway/main.tf +0 -305
- package/dist/terraform/modules/app/agentcore-gateway/outputs.tf +0 -44
- package/dist/terraform/modules/app/agentcore-gateway/scripts/delete_gateway.sh +0 -93
- package/dist/terraform/modules/app/agentcore-gateway/scripts/read_gateway.sh +0 -33
- package/dist/terraform/modules/app/agentcore-gateway/scripts/reconcile_gateway.sh +0 -543
- package/dist/terraform/modules/app/agentcore-gateway/variables.tf +0 -70
- package/dist/terraform/modules/app/agentcore-harness/main.tf +0 -330
- package/dist/terraform/modules/app/agentcore-harness/outputs.tf +0 -72
- package/dist/terraform/modules/app/agentcore-harness/scripts/delete_harness.sh +0 -5
- package/dist/terraform/modules/app/agentcore-harness/scripts/harness-lifecycle.mjs +0 -430
- package/dist/terraform/modules/app/agentcore-harness/scripts/harness-readback.mjs +0 -180
- package/dist/terraform/modules/app/agentcore-harness/scripts/harness-tool-contract.mjs +0 -193
- package/dist/terraform/modules/app/agentcore-harness/scripts/prune_harness.sh +0 -5
- package/dist/terraform/modules/app/agentcore-harness/scripts/read_harness.sh +0 -5
- package/dist/terraform/modules/app/agentcore-harness/scripts/reconcile_harness.sh +0 -5
- package/dist/terraform/modules/app/agentcore-harness/variables.tf +0 -96
- package/dist/terraform/modules/app/hindsight-memory/README.md +0 -89
- package/dist/terraform/modules/app/hindsight-memory/main.tf +0 -411
- package/dist/terraform/modules/app/lambda-api/agentcore-harness-alarms.tf +0 -88
- package/dist/terraform/modules/app/lambda-api/agentcore-identity-alarms.tf +0 -91
- package/dist/terraform/modules/data/bedrock-knowledge-base/main.tf +0 -102
- /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/outputs.tf +0 -0
- /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/scripts/sync-database.py +0 -0
- /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/scripts/test_sync_database.py +0 -0
- /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/variables.tf +0 -0
- /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/README.md +0 -0
- /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/main.tf +0 -0
- /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/outputs.tf +0 -0
- /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/variables.tf +0 -0
|
@@ -64,13 +64,13 @@ variable "microsoft_oauth_client_secret" {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
variable "microsoft_oauth_tenant" {
|
|
67
|
-
description = "Microsoft Entra
|
|
67
|
+
description = "Microsoft Entra tenant for the deployment's default Microsoft login route: a directory GUID or one of the Cognito-supported multi-tenant aliases (common, organizations, consumers)."
|
|
68
68
|
type = string
|
|
69
69
|
default = ""
|
|
70
70
|
|
|
71
71
|
validation {
|
|
72
|
-
condition = var.microsoft_oauth_tenant == "" || can(regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", var.microsoft_oauth_tenant))
|
|
73
|
-
error_message = "microsoft_oauth_tenant must be an Entra directory GUID."
|
|
72
|
+
condition = var.microsoft_oauth_tenant == "" || contains(["common", "organizations", "consumers"], var.microsoft_oauth_tenant) || can(regex("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", var.microsoft_oauth_tenant))
|
|
73
|
+
error_message = "microsoft_oauth_tenant must be an Entra directory GUID or one of the Cognito-supported aliases: common, organizations, consumers."
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
@@ -133,26 +133,51 @@ variable "platform_operator_emails" {
|
|
|
133
133
|
default = ""
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
136
|
+
# THINK-583 U3 — provisioned concurrency for the two chat-critical zip
|
|
137
|
+
# Lambdas ONLY (KTD5: never the Pi Lambda). Safe default 0 = disabled;
|
|
138
|
+
# the `live` alias is still created so alias-qualified invokers work on
|
|
139
|
+
# every stage and customer stages opt in on their own release cadence.
|
|
140
|
+
# Dev enables 1/1 via scripts/deploy/terraform-vars.sh (deploy.yml is
|
|
141
|
+
# dev-only — same pattern as enable_capability_broker).
|
|
142
|
+
|
|
143
|
+
variable "chat_agent_invoke_provisioned_concurrency" {
|
|
144
|
+
description = "Provisioned concurrency on chat-agent-invoke's `live` alias. 0 = disabled (alias still exists)."
|
|
145
|
+
type = number
|
|
146
|
+
default = 0
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
variable "workspace_renderer_provisioned_concurrency" {
|
|
150
|
+
description = "Provisioned concurrency on workspace-renderer's `live` alias. 0 = disabled (alias still exists)."
|
|
151
|
+
type = number
|
|
152
|
+
default = 0
|
|
140
153
|
}
|
|
141
154
|
|
|
142
155
|
variable "okf_wiki_efs_enabled" {
|
|
143
|
-
description = "
|
|
156
|
+
description = "DEPRECATED (THINK-589): no-op, removal pending. The OKF wiki EFS feature is dead — no mount, access point, mount target, or client security group is created regardless of this value. It currently only retains the already-provisioned EFS filesystem (PR 2 deletes it behind the destructive-step gates) and, with okf_wiki_create_nat_gateway, the shared NAT egress that non-OKF VPC workloads still ride. Declaration retained so customer-stage passthroughs and tfvars keep working."
|
|
144
157
|
type = bool
|
|
145
158
|
default = true
|
|
146
159
|
}
|
|
147
160
|
|
|
148
161
|
variable "okf_wiki_create_vpc_endpoints" {
|
|
149
|
-
description = "
|
|
162
|
+
description = "DEPRECATED (THINK-589): no-op for OKF, removal pending. The OKF hydrator and Pi are no longer VPC-attached. The private VPC endpoints this gates are retained unchanged in PR 1 because their private DNS serves the whole VPC (Neptune twin Lambdas, Twenty); PR 2 re-homes or deletes them."
|
|
150
163
|
type = bool
|
|
151
164
|
default = true
|
|
152
165
|
}
|
|
153
166
|
|
|
167
|
+
variable "vpc_interface_endpoint_services" {
|
|
168
|
+
description = "AWS services that get a private interface endpoint in the VPC (service suffixes: secretsmanager, rds-data, bedrock-runtime, logs, ...). null = the legacy full set the stage was built with; [] = none. The private subnets are NAT-routed and the Lambda SGs allow 443 out, so an endpoint only keeps a call on AWS's network — it is a posture choice billed at ~$7.30/mo per ENI, not a reachability requirement. Cost review 2026-08-28."
|
|
169
|
+
type = list(string)
|
|
170
|
+
default = null
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
variable "vpc_interface_endpoint_single_az" {
|
|
174
|
+
description = "Place each interface endpoint in one private subnet instead of every one. Halves the hourly bill; the other AZ's callers cross AZs at $0.01/GB. Cost review 2026-08-28."
|
|
175
|
+
type = bool
|
|
176
|
+
default = false
|
|
177
|
+
}
|
|
178
|
+
|
|
154
179
|
variable "okf_wiki_create_nat_gateway" {
|
|
155
|
-
description = "
|
|
180
|
+
description = "DEPRECATED (THINK-589): removal pending. Pi no longer attaches to the VPC for OKF EFS. NAT egress is retained unchanged in PR 1 because Neptune twin Lambdas and other VPC-attached workloads route through it; PR 2 re-homes the gate onto the surviving VPC consumers."
|
|
156
181
|
type = bool
|
|
157
182
|
default = true
|
|
158
183
|
}
|
|
@@ -163,6 +188,30 @@ variable "enable_deployment_control_plane" {
|
|
|
163
188
|
default = true
|
|
164
189
|
}
|
|
165
190
|
|
|
191
|
+
variable "deployment_runner_in_vpc" {
|
|
192
|
+
description = "Run the deployment runner CodeBuild inside this VPC (private subnets, dedicated runner security group) and grant that group tcp/5432 on the database security group. Rationale (THINK-1082): the runner's psql schema step otherwise reaches Aurora over its public endpoint and depends on the world-open 0.0.0.0/0 -> 5432 rule the aurora-postgres module seeds; a customer that revokes that rule (deliberate lockdown) breaks every deploy at the psql step. Turning this on also turns on the VPC NAT gateway, which a VPC-attached CodeBuild needs to reach GitHub, apt/pip, STS, S3, and Secrets Manager. Ship-inert: default false leaves networking untouched. Applies to the control plane this module embeds (enable_deployment_control_plane); an externally bootstrapped control plane (thinkwork enterprise bootstrap) takes the same inputs through its own root."
|
|
193
|
+
type = bool
|
|
194
|
+
default = false
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
variable "api_lambdas_in_vpc" {
|
|
198
|
+
description = "Attach every database-connected Lambda of the agent (all lambda-api handlers incl. compliance-anchor / compliance-export-runner, the agentcore-admin Lambda, the agentcore-pi runtime, and the already-VPC-attached capability broker) to this VPC's private subnets behind a dedicated api-lambda security group, and grant that group tcp/5432 on the database security group. Rationale (THINK-1082): those functions carry a database connection and, with no vpc_config, reach Aurora only over its public endpoint through the world-open 0.0.0.0/0 -> 5432 rule the aurora-postgres module seeds. When a human revoked that rule on a live customer stage the whole app was down for two hours (auth-me -> DB timeout -> 401 'No tenant assigned'). With this on, the Lambdas reach the database privately and the public rule can be closed (db_public_ingress_cidrs / db_publicly_accessible). Turns on the VPC NAT gateway — VPC-attached Lambdas have no public IP and still need AWS APIs, Bedrock, Slack, GitHub, model providers; NAT data-processing charges apply to that egress. Ship-inert: default false leaves every function byte-identical."
|
|
199
|
+
type = bool
|
|
200
|
+
default = false
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
variable "db_publicly_accessible" {
|
|
204
|
+
description = "aurora-postgres publicly_accessible passthrough (THINK-1082). Default true = today's public endpoint. Set false only after api_lambdas_in_vpc and deployment_runner_in_vpc are live and verified."
|
|
205
|
+
type = bool
|
|
206
|
+
default = true
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
variable "db_public_ingress_cidrs" {
|
|
210
|
+
description = "aurora-postgres public_ingress_cidrs passthrough (THINK-1082): CIDRs seeded as tcp/5432 ingress on a NEW database security group. Default [\"0.0.0.0/0\"] = today's world-open rule; [] = none. The group ignores ingress drift, so shrinking this does not revoke a live rule — the operator revokes it by hand once the clients are in the VPC (see modules/app/deployment-control-plane/README.md, 'Closing the database port')."
|
|
211
|
+
type = list(string)
|
|
212
|
+
default = ["0.0.0.0/0"]
|
|
213
|
+
}
|
|
214
|
+
|
|
166
215
|
variable "deployment_state_machine_arn" {
|
|
167
216
|
description = "Existing deployment orchestration Step Functions ARN for environments whose controller is bootstrapped outside this app stack."
|
|
168
217
|
type = string
|
|
@@ -384,10 +433,16 @@ variable "database_engine" {
|
|
|
384
433
|
default = "aurora-serverless"
|
|
385
434
|
}
|
|
386
435
|
|
|
436
|
+
variable "external_kb_source_arns" {
|
|
437
|
+
description = "DEPRECATED (THINK-402): Knowledge Bases were removed from the product; this input is inert and ignored. Declaration retained so existing customer-stage -var passthroughs keep working."
|
|
438
|
+
type = list(string)
|
|
439
|
+
default = []
|
|
440
|
+
}
|
|
441
|
+
|
|
387
442
|
variable "enable_hindsight" {
|
|
388
|
-
description = "
|
|
443
|
+
description = "DEPRECATED (THINK-407): the Hindsight memory engine and its infrastructure were removed; this input is inert and ignored. Declaration retained so existing customer-stage -var passthroughs and tfvars keep working."
|
|
389
444
|
type = bool
|
|
390
|
-
default =
|
|
445
|
+
default = false
|
|
391
446
|
}
|
|
392
447
|
|
|
393
448
|
variable "enable_agentcore_harness" {
|
|
@@ -432,46 +487,29 @@ variable "enable_capability_broker" {
|
|
|
432
487
|
default = false
|
|
433
488
|
}
|
|
434
489
|
|
|
435
|
-
variable "
|
|
436
|
-
description = "
|
|
490
|
+
variable "auth_state_store" {
|
|
491
|
+
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."
|
|
437
492
|
type = string
|
|
438
|
-
default = ""
|
|
493
|
+
default = "postgres"
|
|
439
494
|
|
|
440
495
|
validation {
|
|
441
|
-
condition =
|
|
442
|
-
error_message = "
|
|
496
|
+
condition = contains(["postgres", "dynamo"], var.auth_state_store)
|
|
497
|
+
error_message = "auth_state_store must be \"postgres\" or \"dynamo\"."
|
|
443
498
|
}
|
|
444
499
|
}
|
|
445
500
|
|
|
446
|
-
variable "hindsight_image_tag" {
|
|
447
|
-
description = "Hindsight Docker image tag (used when enable_hindsight = true). 0.8.4 upgrade validated 2026-07-06 (THINK-201): migration rehearsal over a dev-data copy passed (orphan-observation backsweep deletes ~650 broken-provenance rows — expected); retain/recall/consolidation verified; 0.8.4 fixes the Bedrock-Anthropic extraction tool schema AND fails retain loudly (500) instead of silently storing zero units. Known upstream gap: maintenance discovery routines (reconcile sweep, mental-model cron, llm_requests retention) expect functions in the public schema and no-op with warnings when HINDSIGHT_API_DATABASE_SCHEMA != public."
|
|
448
|
-
type = string
|
|
449
|
-
default = "0.8.4"
|
|
450
|
-
}
|
|
451
501
|
|
|
452
|
-
variable "
|
|
453
|
-
description = "
|
|
502
|
+
variable "memory_engine" {
|
|
503
|
+
description = "DEPRECATED (THINK-407): AgentCore managed memory is the only engine; this input is inert and ignored. Declaration retained so existing customer-stage -var passthroughs and tfvars keep working. Legacy values ('hindsight', 'managed') are accepted and discarded."
|
|
454
504
|
type = string
|
|
455
505
|
default = ""
|
|
456
|
-
}
|
|
457
506
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
variable "hindsight_consolidation_dedup_threshold" {
|
|
465
|
-
description = "Cosine-similarity threshold for Hindsight near-duplicate observation reconciliation (0.0-1.0; 1.0 disables)."
|
|
466
|
-
type = string
|
|
467
|
-
default = "0.97"
|
|
507
|
+
validation {
|
|
508
|
+
condition = var.memory_engine == "" || contains(["managed", "hindsight", "agentcore"], var.memory_engine)
|
|
509
|
+
error_message = "memory_engine must be empty, 'agentcore', or a legacy value ('hindsight', 'managed'). The input is ignored either way."
|
|
510
|
+
}
|
|
468
511
|
}
|
|
469
512
|
|
|
470
|
-
variable "hindsight_observations_mission" {
|
|
471
|
-
description = "Service-level default observations mission for Hindsight consolidation. Empty string falls back to the image default. Per-bank config overrides apply on top."
|
|
472
|
-
type = string
|
|
473
|
-
default = "Synthesize durable, institutional facts about the business: customers, projects, decisions, processes, tools, relationships, and recurring patterns. Filter out ephemeral state, secrets, and personal small talk."
|
|
474
|
-
}
|
|
475
513
|
variable "twenty_provisioned" {
|
|
476
514
|
description = "Provision the retained Twenty CRM managed-app substrate. Runtime can be parked independently with twenty_runtime_enabled."
|
|
477
515
|
type = bool
|
|
@@ -890,6 +928,17 @@ variable "enable_workspace_orchestration" {
|
|
|
890
928
|
default = false
|
|
891
929
|
}
|
|
892
930
|
|
|
931
|
+
variable "agentcore_session_scope" {
|
|
932
|
+
description = "THINK-909/THINK-946 AgentCore runtime session scope. \"thread\" (default) keys the session per thread; \"user\" keys it per (tenant, agent, user) so a new thread lands on the user's warm microVM and reuses its retained MCP connections and toolset (THINK-946). Set \"user\" only after the stage's Pi runtime image dual-accepts both session ids. mcpherson runs \"user\"; every other stage keeps the default."
|
|
933
|
+
type = string
|
|
934
|
+
default = "thread"
|
|
935
|
+
|
|
936
|
+
validation {
|
|
937
|
+
condition = contains(["thread", "user"], var.agentcore_session_scope)
|
|
938
|
+
error_message = "agentcore_session_scope must be \"thread\" or \"user\"."
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
|
|
893
942
|
variable "requester_idle_memory_learning_enabled" {
|
|
894
943
|
description = "Enable requester-scoped 15-minute idle memory learning."
|
|
895
944
|
type = bool
|
|
@@ -967,6 +1016,24 @@ variable "plugin_catalog_github_token_secret_arn" {
|
|
|
967
1016
|
default = ""
|
|
968
1017
|
}
|
|
969
1018
|
|
|
1019
|
+
variable "brain_m2m_platform_agent_secret_arn" {
|
|
1020
|
+
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."
|
|
1021
|
+
type = string
|
|
1022
|
+
default = ""
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
variable "brain_ops_api_url" {
|
|
1026
|
+
description = "Optional Company Brain ops-api base URL for the Send-to-the-Brain flag path (THINK-781). Empty disables the action."
|
|
1027
|
+
type = string
|
|
1028
|
+
default = ""
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
variable "brain_ops_m2m_secret_arn" {
|
|
1032
|
+
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)."
|
|
1033
|
+
type = string
|
|
1034
|
+
default = ""
|
|
1035
|
+
}
|
|
1036
|
+
|
|
970
1037
|
variable "database_name" {
|
|
971
1038
|
description = "Aurora database name"
|
|
972
1039
|
type = string
|
|
@@ -1001,6 +1068,12 @@ variable "skill_trust_runner_enabled" {
|
|
|
1001
1068
|
default = true
|
|
1002
1069
|
}
|
|
1003
1070
|
|
|
1071
|
+
variable "release_image_mirror_principal_arns" {
|
|
1072
|
+
description = "IAM principals allowed to push release runtime images (`<releaseVersion>-pi-arm64`) into this stage's AgentCore ECR repository, so the vendor's release pipeline can mirror the arm64 AgentCore Runtime image into this account (THINK-616). Empty by default: cross-account push is opt-in per stage, never implied by deploying this module. ThinkWork-operated customer stages set this to the ThinkWork release account (arn:aws:iam::487219502366:root)."
|
|
1073
|
+
type = list(string)
|
|
1074
|
+
default = []
|
|
1075
|
+
}
|
|
1076
|
+
|
|
1004
1077
|
variable "manage_bedrock_invocation_logging" {
|
|
1005
1078
|
description = "Own the account/region-level Bedrock model-invocation logging (log group /thinkwork/bedrock/model-invocations, IAM role, and the account logging configuration). Exactly ONE stage per account+region may manage it — a second stack collides on the log group and would clobber/destroy the account-level config (harness cycle-5 ledger entry)."
|
|
1006
1079
|
type = bool
|
|
@@ -1056,13 +1129,16 @@ variable "admin_logout_urls" {
|
|
|
1056
1129
|
]
|
|
1057
1130
|
}
|
|
1058
1131
|
|
|
1059
|
-
variable "
|
|
1060
|
-
type
|
|
1061
|
-
default
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1132
|
+
variable "additional_admin_callback_urls" {
|
|
1133
|
+
type = list(string)
|
|
1134
|
+
default = []
|
|
1135
|
+
description = "Extra OAuth callback URLs appended to the web-family Cognito clients, beyond the computed defaults (localhost, customer/app domains, dev console). Customer stacks host the Company Brain console in their own account, so those origins can't be derived here and arrive from the deployment runner (runner-secrets `adminCallbackUrls`). Supply both the bare origin and its /auth/callback variant. Purely additive — empty leaves behavior unchanged."
|
|
1136
|
+
}
|
|
1137
|
+
|
|
1138
|
+
variable "additional_admin_logout_urls" {
|
|
1139
|
+
type = list(string)
|
|
1140
|
+
default = []
|
|
1141
|
+
description = "Extra OAuth logout URLs appended to the web-family Cognito clients (companion to additional_admin_callback_urls; runner-secrets `adminLogoutUrls`)."
|
|
1066
1142
|
}
|
|
1067
1143
|
|
|
1068
1144
|
variable "cli_callback_urls" {
|
|
@@ -1081,6 +1157,24 @@ variable "cli_logout_urls" {
|
|
|
1081
1157
|
]
|
|
1082
1158
|
}
|
|
1083
1159
|
|
|
1160
|
+
variable "console_client_enabled" {
|
|
1161
|
+
description = "Create the optional Company Brain console Cognito app client (U13). Default false = ship-inert; nothing is created and console_client_id is null."
|
|
1162
|
+
type = bool
|
|
1163
|
+
default = false
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
variable "console_callback_urls" {
|
|
1167
|
+
description = "OAuth callback URLs for the console client — must include the console hosting URL BEFORE first login (redirect_mismatch otherwise). Required non-empty when console_client_enabled."
|
|
1168
|
+
type = list(string)
|
|
1169
|
+
default = []
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
variable "console_logout_urls" {
|
|
1173
|
+
description = "OAuth logout URLs for the console client"
|
|
1174
|
+
type = list(string)
|
|
1175
|
+
default = []
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1084
1178
|
variable "mobile_callback_urls" {
|
|
1085
1179
|
type = list(string)
|
|
1086
1180
|
default = ["exp://localhost:8081", "thinkwork://", "thinkwork://auth/callback"]
|
|
@@ -1137,22 +1231,6 @@ variable "cognito_denied_app_client_ids" {
|
|
|
1137
1231
|
default = []
|
|
1138
1232
|
}
|
|
1139
1233
|
|
|
1140
|
-
# ---------------------------------------------------------------------------
|
|
1141
|
-
# Docs site (custom domain — optional)
|
|
1142
|
-
# ---------------------------------------------------------------------------
|
|
1143
|
-
|
|
1144
|
-
variable "docs_domain" {
|
|
1145
|
-
description = "Custom domain for the docs site (e.g. docs.thinkwork.ai). Leave empty for CloudFront default."
|
|
1146
|
-
type = string
|
|
1147
|
-
default = ""
|
|
1148
|
-
}
|
|
1149
|
-
|
|
1150
|
-
variable "docs_certificate_arn" {
|
|
1151
|
-
description = "ACM certificate ARN for the docs domain (us-east-1, required for CloudFront custom domains)"
|
|
1152
|
-
type = string
|
|
1153
|
-
default = ""
|
|
1154
|
-
}
|
|
1155
|
-
|
|
1156
1234
|
# ---------------------------------------------------------------------------
|
|
1157
1235
|
# Public website (custom domain — optional)
|
|
1158
1236
|
# ---------------------------------------------------------------------------
|
|
@@ -1243,7 +1321,7 @@ variable "computer_sandbox_certificate_arn" {
|
|
|
1243
1321
|
}
|
|
1244
1322
|
|
|
1245
1323
|
variable "computer_sandbox_allowed_parent_origins" {
|
|
1246
|
-
description = "Comma-separated list of trusted web parent origins that may frame the sandbox iframe (e.g. 'https://thinkwork.ai,https://dev.thinkwork.ai').
|
|
1324
|
+
description = "Comma-separated list of trusted web parent origins that may frame the sandbox iframe (e.g. 'https://thinkwork.ai,https://dev.thinkwork.ai'). Wired into the sandbox CSP frame-ancestors directive AND mirrored at iframe-shell build time as __ALLOWED_PARENT_ORIGINS__. The two trust sets MUST stay in sync. Leave empty to disallow framing entirely."
|
|
1247
1325
|
type = string
|
|
1248
1326
|
default = ""
|
|
1249
1327
|
}
|
|
@@ -1366,8 +1444,8 @@ variable "cognito_invite_sms_message" {
|
|
|
1366
1444
|
}
|
|
1367
1445
|
}
|
|
1368
1446
|
|
|
1369
|
-
variable "
|
|
1370
|
-
description = "
|
|
1447
|
+
variable "ontology_scan_model_id" {
|
|
1448
|
+
description = "DEPRECATED (THINK-408): the ontology / knowledge-graph subsystem was removed; this variable is accepted for compatibility and has no effect."
|
|
1371
1449
|
type = string
|
|
1372
1450
|
default = "openai.gpt-oss-120b-1:0"
|
|
1373
1451
|
}
|
|
@@ -1379,13 +1457,19 @@ variable "brain_source_agent_model_id" {
|
|
|
1379
1457
|
}
|
|
1380
1458
|
|
|
1381
1459
|
variable "knowledge_graph_observations_ingest_enabled" {
|
|
1382
|
-
description = "
|
|
1460
|
+
description = "DEPRECATED (THINK-408): the ontology / knowledge-graph subsystem was removed; this variable is accepted for compatibility and has no effect."
|
|
1383
1461
|
type = bool
|
|
1384
1462
|
default = false
|
|
1385
1463
|
}
|
|
1386
1464
|
|
|
1387
1465
|
variable "ontology_scan_sweep_enabled" {
|
|
1388
|
-
description = "
|
|
1466
|
+
description = "DEPRECATED (THINK-408): the ontology / knowledge-graph subsystem was removed; this variable is accepted for compatibility and has no effect."
|
|
1467
|
+
type = bool
|
|
1468
|
+
default = false
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
variable "identity_drift_match_enabled" {
|
|
1472
|
+
description = "Enable the recurring per-tenant identity drift match sweep (THINK-321 U7/KTD-7). Ships disabled."
|
|
1389
1473
|
type = bool
|
|
1390
1474
|
default = false
|
|
1391
1475
|
}
|
|
@@ -1413,12 +1497,6 @@ variable "wiki_deterministic_linking_enabled" {
|
|
|
1413
1497
|
default = "true"
|
|
1414
1498
|
}
|
|
1415
1499
|
|
|
1416
|
-
variable "google_places_api_key" {
|
|
1417
|
-
description = "Google Places API (New) key used by wiki-compile for POI → city/state/country hierarchy enrichment. Stored as SSM SecureString at /thinkwork/<stage>/google-places/api-key. Empty string = parameter created with a placeholder; operator populates via `aws ssm put-parameter --overwrite`. Compile gracefully degrades to metadata-only rows when the key is absent — never fails compile."
|
|
1418
|
-
type = string
|
|
1419
|
-
default = ""
|
|
1420
|
-
sensitive = true
|
|
1421
|
-
}
|
|
1422
1500
|
|
|
1423
1501
|
variable "mapbox_public_token" {
|
|
1424
1502
|
description = "Mapbox public pk.* token consumed by the apps/web MapView primitive (in @thinkwork/computer-stdlib) for inline map tile rendering inside generated applets. Flows from this variable → terraform output → scripts/build-web.sh → apps/web/.env.production as VITE_MAPBOX_PUBLIC_TOKEN. URL-restrict on the Mapbox dashboard to the deployed `computer.<apex>` host (and any dev hosts) — the token ships in the public Vite bundle, so URL allowlist is the security boundary. Empty string is acceptable: MapView falls back to OpenStreetMap tiles when the env var is unset, so dev environments without an operator-provisioned token still render maps."
|
|
@@ -1460,30 +1538,109 @@ variable "compliance_anchor_object_lock_mode" {
|
|
|
1460
1538
|
}
|
|
1461
1539
|
}
|
|
1462
1540
|
|
|
1463
|
-
variable "
|
|
1464
|
-
description = "
|
|
1465
|
-
type =
|
|
1466
|
-
default =
|
|
1541
|
+
variable "compliance_anchor_retention_days" {
|
|
1542
|
+
description = "Default Object Lock retention in days for the compliance audit-anchor bucket. SOC2 Type 1 baseline is 12 months (365)."
|
|
1543
|
+
type = number
|
|
1544
|
+
default = 365
|
|
1467
1545
|
|
|
1468
1546
|
validation {
|
|
1469
|
-
condition =
|
|
1470
|
-
error_message = "
|
|
1547
|
+
condition = var.compliance_anchor_retention_days > 0
|
|
1548
|
+
error_message = "compliance_anchor_retention_days must be greater than 0."
|
|
1471
1549
|
}
|
|
1472
1550
|
}
|
|
1473
1551
|
|
|
1474
|
-
|
|
1475
|
-
|
|
1552
|
+
# ---------------------------------------------------------------------------
|
|
1553
|
+
# Company Brain twin (plan 2026-07-21-001): Neptune wiring for the
|
|
1554
|
+
# identity-graph-projector. Values come from the etl-platform neptune stack's
|
|
1555
|
+
# outputs; all default-empty so stages without the twin deploy unchanged.
|
|
1556
|
+
# ---------------------------------------------------------------------------
|
|
1557
|
+
|
|
1558
|
+
variable "neptune_endpoint" {
|
|
1559
|
+
type = string
|
|
1560
|
+
default = ""
|
|
1561
|
+
description = "Neptune twin cluster writer endpoint (etl-platform neptune stack output; empty = twin disabled)"
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
variable "brain_mcp_url" {
|
|
1476
1565
|
type = string
|
|
1477
1566
|
default = ""
|
|
1567
|
+
description = "Platform-served Brain MCP endpoint (consolidation U14). When set, twin-connector provisioning registers agents against it instead of the product /mcp/twin route. Empty = legacy product-served default."
|
|
1478
1568
|
}
|
|
1479
1569
|
|
|
1480
|
-
variable "
|
|
1481
|
-
|
|
1570
|
+
variable "neptune_cluster_resource_id" {
|
|
1571
|
+
type = string
|
|
1572
|
+
default = ""
|
|
1573
|
+
description = "Neptune cluster resource id (etl-platform neptune stack output) for neptune-db IAM ARNs"
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
variable "neptune_client_security_group_id" {
|
|
1577
|
+
type = string
|
|
1578
|
+
default = ""
|
|
1579
|
+
description = "neptune-client SG id (etl-platform neptune stack output) attached to the identity-graph-projector"
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
variable "neptune_load_bucket" {
|
|
1583
|
+
type = string
|
|
1584
|
+
default = ""
|
|
1585
|
+
description = "Neptune bulk-load staging bucket name (etl-platform neptune stack; empty = bulk-rebuild disabled)"
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
variable "neptune_loader_role_arn" {
|
|
1589
|
+
type = string
|
|
1590
|
+
default = ""
|
|
1591
|
+
description = "IAM role ARN the Neptune cluster assumes to read the load bucket (etl-platform neptune stack; empty = bulk-rebuild disabled)"
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
|
|
1595
|
+
variable "lambda_max_memory_mb" {
|
|
1482
1596
|
type = number
|
|
1483
|
-
default =
|
|
1597
|
+
default = 10240
|
|
1598
|
+
description = "Account-level Lambda memory ceiling in MB. Legacy AWS accounts cap function memory at 3008 (raised only via AWS support case); handlers requesting more are clamped so a capped account's deploy doesn't fail mid-apply. Set via the runner-secrets key lambdaMaxMemoryMb on managed deployments."
|
|
1599
|
+
}
|
|
1484
1600
|
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1601
|
+
variable "agentcore_runtime_dispatch_enabled" {
|
|
1602
|
+
description = "THINK-585 U6: stage kill-switch for AgentCore Runtime chat dispatch (see lambda-api module)."
|
|
1603
|
+
type = bool
|
|
1604
|
+
default = false
|
|
1605
|
+
}
|
|
1606
|
+
|
|
1607
|
+
################################################################################
|
|
1608
|
+
# THINK-915 — chat turn-latency observability (passthrough to the lambda-api
|
|
1609
|
+
# module; see terraform/modules/app/lambda-api/chat-latency-observability.tf).
|
|
1610
|
+
################################################################################
|
|
1611
|
+
|
|
1612
|
+
variable "enable_chat_turn_latency_observability" {
|
|
1613
|
+
description = "THINK-915: create the per-stage chat turn-latency dashboard, the saved turn-timeline Logs Insights query, and the Lambda-native dispatch p95 alarm."
|
|
1614
|
+
type = bool
|
|
1615
|
+
default = true
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
variable "enable_chat_turn_latency_metric_filters" {
|
|
1619
|
+
description = "THINK-915: create the agentcore_phase log metric filters (TurnRuntimeInvokeMs, AgentLoopMs) and the metric-filter-backed p95 alarm. OFF by default because the Lambda log groups are implicit and PutMetricFilter fails on a stage that has never served a chat turn."
|
|
1620
|
+
type = bool
|
|
1621
|
+
default = false
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
variable "chat_turn_latency_metric_namespace" {
|
|
1625
|
+
description = "THINK-915: CloudWatch namespace prefix for the chat phase metrics; the stage is appended (Thinkwork/Chat/<stage>)."
|
|
1626
|
+
type = string
|
|
1627
|
+
default = "Thinkwork/Chat"
|
|
1628
|
+
}
|
|
1629
|
+
|
|
1630
|
+
variable "chat_turn_runtime_log_group_name" {
|
|
1631
|
+
description = "THINK-915: explicit AgentCore Pi runtime log group name. Empty discovers it by prefix at plan time."
|
|
1632
|
+
type = string
|
|
1633
|
+
default = ""
|
|
1634
|
+
}
|
|
1635
|
+
|
|
1636
|
+
variable "chat_turn_p95_alarm_threshold_ms" {
|
|
1637
|
+
description = "THINK-915: p95 threshold (ms) for the whole AgentCore runtime call, breaching on 2 of 3 five-minute periods."
|
|
1638
|
+
type = number
|
|
1639
|
+
default = 30000
|
|
1640
|
+
}
|
|
1641
|
+
|
|
1642
|
+
variable "chat_turn_latency_alarm_actions" {
|
|
1643
|
+
description = "THINK-915: SNS topic ARNs notified by the chat turn-latency alarms. Empty by default (no general alarm topic exists in the stack)."
|
|
1644
|
+
type = list(string)
|
|
1645
|
+
default = []
|
|
1489
1646
|
}
|
|
@@ -154,16 +154,16 @@ fabricate results.
|
|
|
154
154
|
|
|
155
155
|
You have access to ThinkWork Brain, the platform context layer:
|
|
156
156
|
|
|
157
|
-
- **Memory** —
|
|
158
|
-
context after normal turns so future conversations can recall
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
`MEMORY_GUIDE.md` for the memory contract.
|
|
157
|
+
- **Memory** — platform-owned memory is the durable Brain. The platform
|
|
158
|
+
extracts learned context after normal turns so future conversations can recall
|
|
159
|
+
what you learned. Use `recall()` to look memory up and `remember()` only for
|
|
160
|
+
facts the requester explicitly asks you to keep. Do not manually retain or
|
|
161
|
+
journal turns; see `MEMORY_GUIDE.md` for the memory contract.
|
|
162
162
|
- **Requester profile** — `USER.md` is already in your current prompt when a
|
|
163
163
|
requester is known. In the rendered workspace, the source file lives at
|
|
164
164
|
route/path `User/USER.md` (`User/` root, `USER.md` file). Use it directly for
|
|
165
|
-
profile, preference, and family facts; do not call memory
|
|
166
|
-
|
|
165
|
+
profile, preference, and family facts; do not call memory tools to re-fetch
|
|
166
|
+
facts already present there.
|
|
167
167
|
- **Workspace notes** — Use workspace file tools for structured working notes,
|
|
168
168
|
contact lists, and procedural knowledge. Root `memory/` is Agent-owned,
|
|
169
169
|
`User/memory/` is requester-owned, and `Thread/notes/` is for raw findings
|
|
@@ -174,7 +174,7 @@ You have access to ThinkWork Brain, the platform context layer:
|
|
|
174
174
|
If `query_context` is available, use it for external or lazy-loaded context such
|
|
175
175
|
as compiled pages, workspace files, approved search-safe MCP tools, source
|
|
176
176
|
agents, or web/search providers. It is read-only and returns cited results plus
|
|
177
|
-
provider status. Do not use Context Engine queries as a durable
|
|
177
|
+
provider status. Do not use Context Engine queries as a durable memory
|
|
178
178
|
backend; use direct memory tools for user and Space memory.
|
|
179
179
|
|
|
180
180
|
### Thread Management
|
|
@@ -191,10 +191,8 @@ workspace style guide says otherwise.
|
|
|
191
191
|
|
|
192
192
|
### Brain Sources
|
|
193
193
|
|
|
194
|
-
Space reference documents are retained into
|
|
194
|
+
Space reference documents are retained into platform memory as Brain Sources. Use
|
|
195
195
|
direct memory lookup for durable Space document memory.
|
|
196
|
-
Use any legacy `knowledge_base_search` tool only if the workspace explicitly
|
|
197
|
-
provides it for compatibility.
|
|
198
196
|
|
|
199
197
|
### Computer Apps
|
|
200
198
|
|