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
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
variable "enabled" {
|
|
2
|
-
description = "Reconcile the non-production THINK-316 Gateway proof resources."
|
|
3
|
-
type = bool
|
|
4
|
-
default = false
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
variable "stage" {
|
|
8
|
-
description = "Deployment stage."
|
|
9
|
-
type = string
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
variable "region" {
|
|
13
|
-
description = "AWS region."
|
|
14
|
-
type = string
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
variable "account_id" {
|
|
18
|
-
description = "AWS account id."
|
|
19
|
-
type = string
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
variable "discovery_url" {
|
|
23
|
-
description = "CUSTOM_JWT OIDC discovery URL for the purpose-bound Gateway assertion issuer."
|
|
24
|
-
type = string
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
variable "gateway_audience" {
|
|
28
|
-
description = "Exact audience accepted by this proof Gateway."
|
|
29
|
-
type = string
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
variable "target_base_url" {
|
|
33
|
-
description = "Owned HTTPS API base URL hosting the controlled proof target."
|
|
34
|
-
type = string
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
variable "oauth_credential_provider_arn" {
|
|
38
|
-
description = "Exact AgentCore Identity OAuth provider ARN used for the target."
|
|
39
|
-
type = string
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
variable "oauth_credential_secret_arn" {
|
|
43
|
-
description = "Exact AgentCore-managed secret backing the OAuth provider."
|
|
44
|
-
type = string
|
|
45
|
-
sensitive = true
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
variable "oauth_return_url" {
|
|
49
|
-
description = "Application callback URL allowed for the 3LO user-federation flow."
|
|
50
|
-
type = string
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
variable "proof_owner_allowlist" {
|
|
54
|
-
description = "Comma-separated exact OAuthUser subjects admitted by the proof Cedar policy."
|
|
55
|
-
type = string
|
|
56
|
-
default = ""
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
variable "observability_retention_days" {
|
|
60
|
-
description = "Retention for AgentCore Gateway application logs delivered to CloudWatch."
|
|
61
|
-
type = number
|
|
62
|
-
default = 90
|
|
63
|
-
|
|
64
|
-
validation {
|
|
65
|
-
condition = contains([
|
|
66
|
-
1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653,
|
|
67
|
-
], var.observability_retention_days)
|
|
68
|
-
error_message = "observability_retention_days must be a CloudWatch Logs-supported retention period."
|
|
69
|
-
}
|
|
70
|
-
}
|
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
################################################################################
|
|
2
|
-
# AgentCore Harness — App Module (THINK-316 managed multiplayer runtime)
|
|
3
|
-
#
|
|
4
|
-
# Stable execution role plus the optional managed tenant/profile Harness and
|
|
5
|
-
# named immutable-version endpoint.
|
|
6
|
-
#
|
|
7
|
-
# Trust-policy note: sibling agentcore roles (agentcore-pi, agentcore-runtime)
|
|
8
|
-
# trust the bare `bedrock-agentcore.amazonaws.com` service principal with no
|
|
9
|
-
# account/source-arn conditions; this role mirrors that repo pattern.
|
|
10
|
-
################################################################################
|
|
11
|
-
|
|
12
|
-
terraform {
|
|
13
|
-
required_providers {
|
|
14
|
-
external = {
|
|
15
|
-
source = "hashicorp/external"
|
|
16
|
-
version = ">= 2.3.0"
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
locals {
|
|
22
|
-
normalized_stage = replace(var.stage, "-", "_")
|
|
23
|
-
normalized_tenant = replace(var.tenant_slug, "-", "_")
|
|
24
|
-
normalized_profile = replace(var.trust_profile, "-", "_")
|
|
25
|
-
harness_name = "Thinkwork_${local.normalized_stage}_${local.normalized_tenant}_${local.normalized_profile}"
|
|
26
|
-
# InvokeHarness accepts an endpoint name, not an immutable version. Give
|
|
27
|
-
# every immutable Harness version its own endpoint so the old SSM profile
|
|
28
|
-
# remains valid until the new endpoint snapshot is durably published.
|
|
29
|
-
endpoint_prefix = "ThinkworkProofV"
|
|
30
|
-
gateway_target_tool_names = [
|
|
31
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___owner_probe",
|
|
32
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___mixed_disclosure",
|
|
33
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___list_connector_tools",
|
|
34
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___call_connector_tool",
|
|
35
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___execute_code",
|
|
36
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___web_search",
|
|
37
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___web_extract",
|
|
38
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___query_brain",
|
|
39
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___list_workspace_skills",
|
|
40
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___load_workspace_skill",
|
|
41
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___list_message_attachments",
|
|
42
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___read_message_attachment",
|
|
43
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___ask_user_question",
|
|
44
|
-
"Thinkwork${replace(title(replace(var.stage, "-", " ")), " ", "")}OwnerProof___send_email",
|
|
45
|
-
]
|
|
46
|
-
tenant_skill_prefix = var.tenant_slug != "" ? (
|
|
47
|
-
"tenants/${var.tenant_slug}/"
|
|
48
|
-
) : "tenants/"
|
|
49
|
-
# These scripts are the executable Harness contract. Include their content
|
|
50
|
-
# in the trigger so a normal deploy reconciles prompt, tool, and lifecycle
|
|
51
|
-
# changes even when no symbolic contract-version string was bumped.
|
|
52
|
-
reconciler_hash = sha256(join("", [
|
|
53
|
-
filesha256("${path.module}/scripts/reconcile_harness.sh"),
|
|
54
|
-
filesha256("${path.module}/scripts/harness-lifecycle.mjs"),
|
|
55
|
-
filesha256("${path.module}/scripts/harness-tool-contract.mjs"),
|
|
56
|
-
]))
|
|
57
|
-
configuration_hash = nonsensitive(sha256(jsonencode({
|
|
58
|
-
tenant_slug = var.tenant_slug
|
|
59
|
-
profile = var.trust_profile
|
|
60
|
-
discovery = var.discovery_url
|
|
61
|
-
audience = var.harness_audience
|
|
62
|
-
gateway_arn = var.gateway_arn
|
|
63
|
-
provider_arn = var.oauth_credential_provider_arn
|
|
64
|
-
return_url = var.oauth_return_url
|
|
65
|
-
target_tools = local.gateway_target_tool_names
|
|
66
|
-
model_id = var.model_id
|
|
67
|
-
memory = "disabled"
|
|
68
|
-
tool_policy = "gateway-and-cedar-authoritative"
|
|
69
|
-
connector_facade = "intent-ranked-direct-v1"
|
|
70
|
-
sandbox_facade = "bounded-internal-python-v1"
|
|
71
|
-
browser = "agentcore-browser-v3-canonical-name-and-participant-context"
|
|
72
|
-
invocation_tools = "control-plane-attested-full-override-v1"
|
|
73
|
-
builtin_web = "tenant-policy-secret-bound-v1"
|
|
74
|
-
platform_tools = "brain-email-workspace-skills-message-attachments-user-questions-v6"
|
|
75
|
-
artifact_facade = "caller-fulfilled-emit-document-v1"
|
|
76
|
-
goal_mode = "thinkwork-managed-fresh-turn-goal-complete-v1"
|
|
77
|
-
skill_creator = "governed-review-draft-v1"
|
|
78
|
-
reconciler = local.reconciler_hash
|
|
79
|
-
})))
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
check "managed_harness_configuration" {
|
|
83
|
-
assert {
|
|
84
|
-
condition = !var.managed_runtime_enabled || (
|
|
85
|
-
var.enabled &&
|
|
86
|
-
var.tenant_slug != "" &&
|
|
87
|
-
can(regex("^https://", var.discovery_url)) &&
|
|
88
|
-
var.harness_audience != "" &&
|
|
89
|
-
can(regex("^arn:aws:bedrock-agentcore:", var.gateway_arn)) &&
|
|
90
|
-
can(regex("^arn:aws:bedrock-agentcore:", var.oauth_credential_provider_arn)) &&
|
|
91
|
-
can(regex("^arn:aws:secretsmanager:", var.oauth_credential_secret_arn))
|
|
92
|
-
&& can(regex("^https://", var.oauth_return_url))
|
|
93
|
-
)
|
|
94
|
-
error_message = "The managed AgentCore Harness requires the base role, tenant, HTTPS discovery, exact audience, Gateway, OAuth provider, and provider secret."
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
################################################################################
|
|
99
|
-
# Harness execution role — assumed by Harness microVMs
|
|
100
|
-
################################################################################
|
|
101
|
-
|
|
102
|
-
resource "aws_iam_role" "harness_execution" {
|
|
103
|
-
count = var.enabled ? 1 : 0
|
|
104
|
-
|
|
105
|
-
name = "thinkwork-${var.stage}-agentcore-harness-role"
|
|
106
|
-
|
|
107
|
-
assume_role_policy = jsonencode({
|
|
108
|
-
Version = "2012-10-17"
|
|
109
|
-
Statement = [{
|
|
110
|
-
Effect = "Allow"
|
|
111
|
-
Principal = { Service = "bedrock-agentcore.amazonaws.com" }
|
|
112
|
-
Action = "sts:AssumeRole"
|
|
113
|
-
}]
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
tags = {
|
|
117
|
-
Name = "thinkwork-${var.stage}-agentcore-harness-role"
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
resource "aws_iam_role_policy" "harness_execution" {
|
|
122
|
-
count = var.enabled ? 1 : 0
|
|
123
|
-
|
|
124
|
-
name = "agentcore-harness-permissions"
|
|
125
|
-
role = aws_iam_role.harness_execution[0].id
|
|
126
|
-
|
|
127
|
-
policy = jsonencode({
|
|
128
|
-
Version = "2012-10-17"
|
|
129
|
-
Statement = [
|
|
130
|
-
{
|
|
131
|
-
# Cross-region inference profiles (us.anthropic.claude-*) require
|
|
132
|
-
# `bedrock:InvokeModel` on the *inference-profile* ARN AND on the
|
|
133
|
-
# underlying foundation-model ARN in every region the profile can
|
|
134
|
-
# route to — same resource list the api Lambda's grouped ai policy
|
|
135
|
-
# uses (see ../lambda-api/iam-grouped.tf "bedrock-invoke").
|
|
136
|
-
Sid = "BedrockInvoke"
|
|
137
|
-
Effect = "Allow"
|
|
138
|
-
Action = ["bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream"]
|
|
139
|
-
Resource = [
|
|
140
|
-
"arn:aws:bedrock:*::foundation-model/*",
|
|
141
|
-
"arn:aws:bedrock:*:${var.account_id}:inference-profile/*",
|
|
142
|
-
]
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
# Tenant skill catalog sources + materialized workspace skill folders
|
|
146
|
-
# live under tenants/* in the stage workspace bucket. Read-only —
|
|
147
|
-
# Harness microVMs never write back to the workspace bucket.
|
|
148
|
-
Sid = "WorkspaceSkillSourcesRead"
|
|
149
|
-
Effect = "Allow"
|
|
150
|
-
Action = ["s3:GetObject"]
|
|
151
|
-
Resource = "arn:aws:s3:::${var.bucket_name}/${local.tenant_skill_prefix}*"
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
Sid = "WorkspaceSkillSourcesList"
|
|
155
|
-
Effect = "Allow"
|
|
156
|
-
Action = ["s3:ListBucket"]
|
|
157
|
-
Resource = "arn:aws:s3:::${var.bucket_name}"
|
|
158
|
-
Condition = {
|
|
159
|
-
StringLike = {
|
|
160
|
-
"s3:prefix" = "${local.tenant_skill_prefix}*"
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
# Harness containers log to the service-managed bedrock-agentcore
|
|
166
|
-
# log-group namespace, mirroring the agentcore-pi role's runtimes
|
|
167
|
-
# grant.
|
|
168
|
-
Sid = "CloudWatchLogs"
|
|
169
|
-
Effect = "Allow"
|
|
170
|
-
Action = [
|
|
171
|
-
"logs:CreateLogGroup",
|
|
172
|
-
"logs:CreateLogStream",
|
|
173
|
-
"logs:DescribeLogGroups",
|
|
174
|
-
"logs:DescribeLogStreams",
|
|
175
|
-
"logs:PutLogEvents",
|
|
176
|
-
]
|
|
177
|
-
Resource = [
|
|
178
|
-
"arn:aws:logs:${var.region}:${var.account_id}:log-group:/aws/bedrock-agentcore/*",
|
|
179
|
-
"arn:aws:logs:${var.region}:${var.account_id}:log-group:/aws/bedrock-agentcore/*:*",
|
|
180
|
-
]
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
Sid = "SelectedTenantGateway"
|
|
184
|
-
Effect = "Allow"
|
|
185
|
-
Action = ["bedrock-agentcore:InvokeGateway"]
|
|
186
|
-
Resource = var.managed_runtime_enabled ? var.gateway_arn : "arn:aws:bedrock-agentcore:${var.region}:${var.account_id}:gateway/disabled"
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
Sid = "ExactUserIdentityExchange"
|
|
190
|
-
Effect = "Allow"
|
|
191
|
-
Action = [
|
|
192
|
-
"bedrock-agentcore:GetResourceOauth2Token",
|
|
193
|
-
"bedrock-agentcore:GetWorkloadAccessToken",
|
|
194
|
-
"bedrock-agentcore:GetWorkloadAccessTokenForJWT",
|
|
195
|
-
]
|
|
196
|
-
Resource = var.managed_runtime_enabled ? [
|
|
197
|
-
"arn:aws:bedrock-agentcore:${var.region}:${var.account_id}:token-vault/default",
|
|
198
|
-
var.oauth_credential_provider_arn,
|
|
199
|
-
"arn:aws:bedrock-agentcore:${var.region}:${var.account_id}:workload-identity-directory/default",
|
|
200
|
-
# AgentCore prefixes the managed runtime workload identity with
|
|
201
|
-
# `harness_`, then appends its generated runtime id.
|
|
202
|
-
"arn:aws:bedrock-agentcore:${var.region}:${var.account_id}:workload-identity-directory/default/workload-identity/harness_${local.harness_name}-*",
|
|
203
|
-
] : ["arn:aws:bedrock-agentcore:${var.region}:${var.account_id}:workload-identity-directory/default/workload-identity/disabled"]
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
Sid = "ExactOauthProviderSecret"
|
|
207
|
-
Effect = "Allow"
|
|
208
|
-
Action = ["secretsmanager:GetSecretValue"]
|
|
209
|
-
Resource = var.managed_runtime_enabled ? var.oauth_credential_secret_arn : "arn:aws:secretsmanager:${var.region}:${var.account_id}:secret:disabled"
|
|
210
|
-
},
|
|
211
|
-
{
|
|
212
|
-
# Native Harness Browser Automation. The Harness tool uses the
|
|
213
|
-
# service-managed Browser by default and executes under this role.
|
|
214
|
-
Sid = "AgentCoreBrowser"
|
|
215
|
-
Effect = "Allow"
|
|
216
|
-
Action = [
|
|
217
|
-
"bedrock-agentcore:StartBrowserSession",
|
|
218
|
-
"bedrock-agentcore:StopBrowserSession",
|
|
219
|
-
"bedrock-agentcore:GetBrowserSession",
|
|
220
|
-
"bedrock-agentcore:ListBrowserSessions",
|
|
221
|
-
"bedrock-agentcore:InvokeBrowser",
|
|
222
|
-
"bedrock-agentcore:UpdateBrowserStream",
|
|
223
|
-
]
|
|
224
|
-
Resource = [
|
|
225
|
-
"arn:aws:bedrock-agentcore:${var.region}:aws:browser/aws.browser.v1",
|
|
226
|
-
"arn:aws:bedrock-agentcore:${var.region}:${var.account_id}:browser/*",
|
|
227
|
-
]
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
# The service-managed Harness container resolves its public base image
|
|
231
|
-
# at startup under the execution role.
|
|
232
|
-
Sid = "PublicHarnessImage"
|
|
233
|
-
Effect = "Allow"
|
|
234
|
-
Action = [
|
|
235
|
-
"ecr-public:GetAuthorizationToken",
|
|
236
|
-
"sts:GetServiceBearerToken",
|
|
237
|
-
]
|
|
238
|
-
Resource = "*"
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
Sid = "HarnessRuntimeTelemetry"
|
|
242
|
-
Effect = "Allow"
|
|
243
|
-
Action = [
|
|
244
|
-
"cloudwatch:PutMetricData",
|
|
245
|
-
"xray:PutTraceSegments",
|
|
246
|
-
"xray:PutTelemetryRecords",
|
|
247
|
-
"xray:GetSamplingRules",
|
|
248
|
-
"xray:GetSamplingTargets",
|
|
249
|
-
]
|
|
250
|
-
Resource = "*"
|
|
251
|
-
},
|
|
252
|
-
]
|
|
253
|
-
})
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
################################################################################
|
|
257
|
-
# One stable tenant/profile Harness with immutable-version endpoint names.
|
|
258
|
-
################################################################################
|
|
259
|
-
|
|
260
|
-
moved {
|
|
261
|
-
from = terraform_data.managed_multiplayer_harness
|
|
262
|
-
to = terraform_data.managed_multiplayer_harness_identity
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
# Owns deletion of the stable stage/tenant/profile identity. Configuration
|
|
266
|
-
# revisions are reconciled separately so an ordinary prompt/tool/model update
|
|
267
|
-
# creates a new immutable Harness version without replacing the Harness ARN.
|
|
268
|
-
resource "terraform_data" "managed_multiplayer_harness_identity" {
|
|
269
|
-
count = var.managed_runtime_enabled ? 1 : 0
|
|
270
|
-
|
|
271
|
-
input = {
|
|
272
|
-
region = var.region
|
|
273
|
-
harness_name = local.harness_name
|
|
274
|
-
endpoint_prefix = local.endpoint_prefix
|
|
275
|
-
}
|
|
276
|
-
provisioner "local-exec" {
|
|
277
|
-
when = destroy
|
|
278
|
-
command = "bash ${path.module}/scripts/delete_harness.sh"
|
|
279
|
-
environment = {
|
|
280
|
-
AWS_REGION = self.input.region
|
|
281
|
-
HARNESS_NAME = self.input.harness_name
|
|
282
|
-
ENDPOINT_PREFIX = self.input.endpoint_prefix
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
depends_on = [aws_iam_role_policy.harness_execution]
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
resource "terraform_data" "managed_multiplayer_harness_configuration" {
|
|
290
|
-
count = var.managed_runtime_enabled ? 1 : 0
|
|
291
|
-
|
|
292
|
-
input = local.configuration_hash
|
|
293
|
-
triggers_replace = [local.configuration_hash]
|
|
294
|
-
|
|
295
|
-
provisioner "local-exec" {
|
|
296
|
-
command = "bash ${path.module}/scripts/reconcile_harness.sh"
|
|
297
|
-
environment = {
|
|
298
|
-
AWS_REGION = var.region
|
|
299
|
-
HARNESS_NAME = local.harness_name
|
|
300
|
-
ENDPOINT_PREFIX = local.endpoint_prefix
|
|
301
|
-
EXECUTION_ROLE_ARN = aws_iam_role.harness_execution[0].arn
|
|
302
|
-
DISCOVERY_URL = var.discovery_url
|
|
303
|
-
HARNESS_AUDIENCE = var.harness_audience
|
|
304
|
-
GATEWAY_ARN = var.gateway_arn
|
|
305
|
-
GATEWAY_TARGET_TOOL_NAMES = join(",", local.gateway_target_tool_names)
|
|
306
|
-
OAUTH_CREDENTIAL_PROVIDER_ARN = var.oauth_credential_provider_arn
|
|
307
|
-
OAUTH_RETURN_URL = var.oauth_return_url
|
|
308
|
-
MODEL_ID = var.model_id
|
|
309
|
-
TENANT_SLUG = var.tenant_slug
|
|
310
|
-
TRUST_PROFILE = var.trust_profile
|
|
311
|
-
CONFIGURATION_HASH = local.configuration_hash
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
depends_on = [terraform_data.managed_multiplayer_harness_identity]
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
data "external" "harness_state" {
|
|
319
|
-
count = var.managed_runtime_enabled ? 1 : 0
|
|
320
|
-
depends_on = [terraform_data.managed_multiplayer_harness_configuration]
|
|
321
|
-
program = ["bash", "${path.module}/scripts/read_harness.sh"]
|
|
322
|
-
|
|
323
|
-
query = {
|
|
324
|
-
region = var.region
|
|
325
|
-
harness_name = local.harness_name
|
|
326
|
-
endpoint_prefix = local.endpoint_prefix
|
|
327
|
-
gateway_arn = var.gateway_arn
|
|
328
|
-
oauth_provider_arn = var.oauth_credential_provider_arn
|
|
329
|
-
}
|
|
330
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
output "execution_role_arn" {
|
|
2
|
-
description = "ARN of the Harness execution role (CreateHarness executionRoleArn). Empty string when the module is disabled."
|
|
3
|
-
value = var.enabled ? aws_iam_role.harness_execution[0].arn : ""
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
output "execution_role_name" {
|
|
7
|
-
description = "Name of the Harness execution role. Empty string when the module is disabled."
|
|
8
|
-
value = var.enabled ? aws_iam_role.harness_execution[0].name : ""
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
output "managed_harness_id" {
|
|
12
|
-
description = "Service-generated managed Harness id. Empty when the managed runtime is disabled."
|
|
13
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.harness_id : ""
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
output "managed_harness_arn" {
|
|
17
|
-
description = "One tenant/profile Harness ARN. Empty when disabled."
|
|
18
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.harness_arn : ""
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
output "managed_endpoint_name" {
|
|
22
|
-
description = "Immutable-version Harness endpoint qualifier. Empty when disabled."
|
|
23
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.endpoint_name : ""
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
output "managed_endpoint_arn" {
|
|
27
|
-
description = "Named Harness endpoint ARN. Empty when disabled."
|
|
28
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.endpoint_arn : ""
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
output "managed_target_version" {
|
|
32
|
-
description = "Immutable Harness version attested by the named endpoint. Empty when disabled."
|
|
33
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.target_version : ""
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
output "managed_live_version" {
|
|
37
|
-
description = "Live version returned by the endpoint readback. Must equal managed_target_version for readiness."
|
|
38
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.live_version : ""
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
output "managed_model_id" {
|
|
42
|
-
description = "Actual Bedrock model configured on the immutable Harness version."
|
|
43
|
-
value = var.managed_runtime_enabled ? var.model_id : ""
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
output "managed_status" {
|
|
47
|
-
description = "Derived safe readiness state: disabled, provisioning, ready, drifted, or misconfigured."
|
|
48
|
-
value = !var.managed_runtime_enabled ? "disabled" : (
|
|
49
|
-
data.external.harness_state[0].result.harness_status != "READY" || data.external.harness_state[0].result.endpoint_status != "READY" ? "provisioning" : (
|
|
50
|
-
data.external.harness_state[0].result.target_version != data.external.harness_state[0].result.live_version ? "drifted" : "ready"
|
|
51
|
-
)
|
|
52
|
-
)
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
output "managed_configuration_fingerprint" {
|
|
56
|
-
description = "Non-secret fingerprint binding desired configuration to the immutable endpoint tool snapshot."
|
|
57
|
-
value = var.managed_runtime_enabled ? sha256(jsonencode({
|
|
58
|
-
desired_configuration = local.configuration_hash
|
|
59
|
-
harness_version = data.external.harness_state[0].result.harness_version
|
|
60
|
-
invocation_tools = jsondecode(data.external.harness_state[0].result.invocation_tools_json)
|
|
61
|
-
})) : ""
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
output "managed_invocation_tools_json" {
|
|
65
|
-
description = "Exact non-secret live Harness tool configuration serialized for the managed data-plane profile."
|
|
66
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.invocation_tools_json : "[]"
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
output "managed_invocation_tools_fingerprint" {
|
|
70
|
-
description = "JavaScript-canonical SHA-256 digest of the immutable endpoint invocation-tool snapshot."
|
|
71
|
-
value = var.managed_runtime_enabled ? data.external.harness_state[0].result.invocation_tools_fingerprint : ""
|
|
72
|
-
}
|