thinkwork-cli 0.13.0 → 0.13.2

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 (178) hide show
  1. package/dist/{api-client-JUBCQQDF.js → api-client-JYZXYQJR.js} +3 -1
  2. package/dist/bowser-6Z6JFAIR.js +2822 -0
  3. package/dist/chunk-DV3MRBR5.js +43 -0
  4. package/dist/chunk-DVPBI5HM.js +1728 -0
  5. package/dist/chunk-EI5ZX7CN.js +522 -0
  6. package/dist/chunk-EUJ7X6YD.js +126 -0
  7. package/dist/chunk-GG5WKBOX.js +436 -0
  8. package/dist/chunk-I64EZSU5.js +358 -0
  9. package/dist/chunk-ILZKG5WV.js +6151 -0
  10. package/dist/chunk-KMIJ5KGT.js +128 -0
  11. package/dist/chunk-OCPHU34C.js +996 -0
  12. package/dist/chunk-QOERT44A.js +3286 -0
  13. package/dist/chunk-XYM7PE2A.js +2264 -0
  14. package/dist/{chunk-STY44FQO.js → chunk-Z2F6RJFR.js} +12 -18
  15. package/dist/cli.js +72564 -18884
  16. package/dist/dist-es-CRV46D5B.js +315 -0
  17. package/dist/dist-es-DCY4IC3Y.js +2000 -0
  18. package/dist/dist-es-ENBUC3JP.js +14726 -0
  19. package/dist/dist-es-G54LBMRN.js +48 -0
  20. package/dist/dist-es-G7PTG75M.js +176 -0
  21. package/dist/dist-es-GKDBE7E6.js +88 -0
  22. package/dist/dist-es-HY3535OI.js +70 -0
  23. package/dist/dist-es-KL7Y5NB2.js +377 -0
  24. package/dist/dist-es-LDE437AM.js +170 -0
  25. package/dist/dist-es-P26FWFLT.js +485 -0
  26. package/dist/dist-es-Q57SZXZ7.js +70 -0
  27. package/dist/dist-es-R7FGL2IB.js +88 -0
  28. package/dist/dist-es-USORBXZ5.js +318 -0
  29. package/dist/dist-es-ZKC2QKD2.js +377 -0
  30. package/dist/drizzle/0076_scheduled_jobs_marco_backfill.sql +2 -1
  31. package/dist/drizzle/0079_seed_tenant_customize_catalog.sql +1 -0
  32. package/dist/drizzle/0090_brain_schema_extraction.sql +10 -0
  33. package/dist/drizzle/0132_drop_computer_tables.sql +3 -0
  34. package/dist/drizzle/0160_compliance_event_types_plugins.sql +2 -0
  35. package/dist/drizzle/0214_think137_drop_judge_evidence_roi.sql +1 -0
  36. package/dist/drizzle/0216_drop_agent_loop_versions_goal_worker_policy.sql +1 -0
  37. package/dist/drizzle/0227_analyst_reader_role.sql +106 -38
  38. package/dist/drizzle/0230_analyst_rls.sql +192 -66
  39. package/dist/drizzle/0232_memory_source_thin_ledger.sql +176 -0
  40. package/dist/drizzle/0232_message_source_event_id.sql +9 -0
  41. package/dist/drizzle/0233_msteams_install_and_links.sql +151 -0
  42. package/dist/drizzle/0233_workflow_memory_stage_tokens.sql +20 -0
  43. package/dist/drizzle/0234_memory_claim_lifecycle.sql +160 -0
  44. package/dist/drizzle/0235_workflow_token_execution_claim.sql +34 -0
  45. package/dist/drizzle/0236_memory_retraction_fencing.sql +50 -0
  46. package/dist/drizzle/0237_memory_claims_active_value_uidx.sql +172 -0
  47. package/dist/drizzle/0238_memory_erase_generation_fence.sql +97 -0
  48. package/dist/drizzle/0239_canonical_entity_identity.sql +257 -0
  49. package/dist/drizzle/0240_memory_personal_scope.sql +45 -0
  50. package/dist/drizzle/0241_knowledge_base_document_manifest.sql +67 -0
  51. package/dist/drizzle/0242_search_queries.sql +28 -0
  52. package/dist/drizzle/0243_section_sources_thread_refs.sql +12 -0
  53. package/dist/drizzle/0244_system_automations_and_memory_stage_overrides.sql +45 -0
  54. package/dist/drizzle/0245_wiki_page_render.sql +21 -0
  55. package/dist/drizzle/0246_automation_workflow_ownership.sql +30 -0
  56. package/dist/drizzle/0247_capability_runtime.sql +402 -0
  57. package/dist/drizzle/0248_capability_private_interpreter.sql +13 -0
  58. package/dist/drizzle/0249_capability_headless_execution_evidence.sql +40 -0
  59. package/dist/drizzle/0250_kg_schema_extraction.sql +576 -0
  60. package/dist/drizzle/0251_agents_json_render_ui.sql +25 -0
  61. package/dist/drizzle/0251_brain_stragglers.sql +263 -0
  62. package/dist/drizzle/0252_drop_kg_and_straggler_compat_views.sql +100 -0
  63. package/dist/drizzle/0253_drop_brain_substrate.sql +93 -0
  64. package/dist/drizzle/0254_capability_autonomous_admission.sql +29 -0
  65. package/dist/drizzle/0255_capability_autonomous_approval_mode.sql +16 -0
  66. package/dist/drizzle/0256_agent_profile_manifest_authority.sql +18 -0
  67. package/dist/drizzle/0257_agents_runtime_allow_harness.sql +24 -0
  68. package/dist/drizzle/0257_capability_approvals.sql +53 -0
  69. package/dist/drizzle/0258_pending_tool_approvals.sql +84 -0
  70. package/dist/drizzle/0259_tenant_capability_registry_trust.sql +19 -0
  71. package/dist/drizzle/0260_scheduled_jobs_run_as_user.sql +20 -0
  72. package/dist/drizzle/0261_managed_harness_multiplayer.sql +313 -0
  73. package/dist/drizzle/0261_native_auth_control_plane.sql +328 -0
  74. package/dist/drizzle/0262_auth_subscription_tickets.sql +59 -0
  75. package/dist/drizzle/0262_parallel_harness_threads.sql +9 -0
  76. package/dist/drizzle/0263_agentcore_runtime_identifier.sql +69 -0
  77. package/dist/drizzle/0263_drop_workos_auth_runtime.sql +236 -0
  78. package/dist/drizzle/0264_auth_enrollment_attempt_limits.sql +15 -0
  79. package/dist/drizzle/0264_harness_tool_execution_ledger.sql +113 -0
  80. package/dist/drizzle/0265_eval_runs_requester_identity.sql +28 -0
  81. package/dist/drizzle/0265_require_fully_valid_auth_publication.sql +27 -0
  82. package/dist/drizzle/0266_auth_identity_recovery_grants.sql +9 -0
  83. package/dist/drizzle/0266_eval_profiles_runtime_type.sql +12 -0
  84. package/dist/drizzle/0267_ontology_candidate_rejections.sql +53 -0
  85. package/dist/drizzle/0268_identity_crosswalk_routing.sql +182 -0
  86. package/dist/drizzle/0269_ontology_system_map.sql +31 -0
  87. package/dist/event-streams-7JNLJEEL.js +894 -0
  88. package/dist/event-streams-KDF5RWR6.js +1515 -0
  89. package/dist/loadSso-DJVB7BXE.js +576 -0
  90. package/dist/loadSso-JAMNA3WY.js +583 -0
  91. package/dist/plugins/catalog/package.json +1 -2
  92. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +0 -1
  93. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +0 -69
  94. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +0 -2
  95. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +0 -5
  96. package/dist/plugins/catalog/src/contracts.ts +2 -179
  97. package/dist/plugins/catalog/src/registry/generated-first-party.ts +0 -6
  98. package/dist/signin-UGDWTGS4.js +821 -0
  99. package/dist/sso-oidc-Q4VXANXY.js +837 -0
  100. package/dist/sts-CWLSE3GH.js +1241 -0
  101. package/dist/sts-DNZLNVOV.js +1245 -0
  102. package/dist/terraform/examples/greenfield/main.tf +247 -50
  103. package/dist/terraform/examples/greenfield/terraform.tfvars.example +15 -1
  104. package/dist/terraform/modules/app/agentcore-admin/main.tf +341 -0
  105. package/dist/terraform/modules/app/agentcore-admin/outputs.tf +20 -0
  106. package/dist/terraform/modules/app/agentcore-code-interpreter/main.tf +61 -0
  107. package/dist/terraform/modules/app/agentcore-gateway/main.tf +305 -0
  108. package/dist/terraform/modules/app/agentcore-gateway/outputs.tf +44 -0
  109. package/dist/terraform/modules/app/agentcore-gateway/scripts/delete_gateway.sh +93 -0
  110. package/dist/terraform/modules/app/agentcore-gateway/scripts/read_gateway.sh +33 -0
  111. package/dist/terraform/modules/app/agentcore-gateway/scripts/reconcile_gateway.sh +543 -0
  112. package/dist/terraform/modules/app/agentcore-gateway/variables.tf +70 -0
  113. package/dist/terraform/modules/app/agentcore-harness/main.tf +330 -0
  114. package/dist/terraform/modules/app/agentcore-harness/outputs.tf +72 -0
  115. package/dist/terraform/modules/app/agentcore-harness/scripts/delete_harness.sh +5 -0
  116. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-lifecycle.mjs +430 -0
  117. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-readback.mjs +180 -0
  118. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-tool-contract.mjs +193 -0
  119. package/dist/terraform/modules/app/agentcore-harness/scripts/prune_harness.sh +5 -0
  120. package/dist/terraform/modules/app/agentcore-harness/scripts/read_harness.sh +5 -0
  121. package/dist/terraform/modules/app/agentcore-harness/scripts/reconcile_harness.sh +5 -0
  122. package/dist/terraform/modules/app/agentcore-harness/variables.tf +96 -0
  123. package/dist/terraform/modules/app/agentcore-identity/main.tf +173 -0
  124. package/dist/terraform/modules/app/agentcore-identity/outputs.tf +51 -0
  125. package/dist/terraform/modules/app/agentcore-identity/scripts/bootstrap_twenty_oauth_client.sh +122 -0
  126. package/dist/terraform/modules/app/agentcore-identity/scripts/delete_identity.sh +25 -0
  127. package/dist/terraform/modules/app/agentcore-identity/scripts/delete_twenty_identity.sh +16 -0
  128. package/dist/terraform/modules/app/agentcore-identity/scripts/read_identity.sh +40 -0
  129. package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_identity.sh +73 -0
  130. package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_identity.sh +74 -0
  131. package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_provider.mjs +61 -0
  132. package/dist/terraform/modules/app/agentcore-identity/variables.tf +54 -0
  133. package/dist/terraform/modules/app/agentcore-pi/main.tf +7 -0
  134. package/dist/terraform/modules/app/appsync-subscriptions/main.tf +127 -21
  135. package/dist/terraform/modules/app/appsync-subscriptions/outputs.tf +0 -6
  136. package/dist/terraform/modules/app/appsync-subscriptions/variables.tf +5 -0
  137. package/dist/terraform/modules/app/capability-broker/main.tf +393 -0
  138. package/dist/terraform/modules/app/capability-broker/outputs.tf +54 -0
  139. package/dist/terraform/modules/app/capability-broker/variables.tf +98 -0
  140. package/dist/terraform/modules/app/deployment-control-plane/runner.py +1011 -31
  141. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +655 -2
  142. package/dist/terraform/modules/app/lambda-api/agentcore-harness-alarms.tf +88 -0
  143. package/dist/terraform/modules/app/lambda-api/agentcore-identity-alarms.tf +91 -0
  144. package/dist/terraform/modules/app/lambda-api/capability-search-alarms.tf +60 -0
  145. package/dist/terraform/modules/app/lambda-api/handlers.tf +606 -37
  146. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +192 -21
  147. package/dist/terraform/modules/app/lambda-api/main.tf +35 -0
  148. package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +181 -4
  149. package/dist/terraform/modules/app/lambda-api/memory-alarms.tf +92 -0
  150. package/dist/terraform/modules/app/lambda-api/msteams-app-secrets.tf +46 -0
  151. package/dist/terraform/modules/app/lambda-api/outputs.tf +35 -0
  152. package/dist/terraform/modules/app/lambda-api/runtime-config.tf +3 -21
  153. package/dist/terraform/modules/app/lambda-api/variables.tf +188 -3
  154. package/dist/terraform/modules/app/workflow-interpreter-stepfunctions/alarms.tf +47 -0
  155. package/dist/terraform/modules/app/workflow-interpreter-stepfunctions/main.tf +43 -2
  156. package/dist/terraform/modules/foundation/cognito/main.tf +319 -73
  157. package/dist/terraform/modules/foundation/cognito/outputs.tf +42 -0
  158. package/dist/terraform/modules/foundation/cognito/variables.tf +124 -2
  159. package/dist/terraform/modules/foundation/vpc/outputs.tf +5 -0
  160. package/dist/terraform/modules/thinkwork/main.tf +396 -26
  161. package/dist/terraform/modules/thinkwork/outputs.tf +188 -5
  162. package/dist/terraform/modules/thinkwork/variables.tf +154 -5
  163. package/dist/terraform/schema.graphql +69 -36
  164. package/dist/workspace-defaults/files/TOOLS.md +39 -0
  165. package/dist/workspace-defaults/files/USER.md +1 -0
  166. package/dist/workspace-defaults/files/agents/analyst/INSTRUCTIONS.md +18 -0
  167. package/dist/workspace-defaults/files/agents/coding/INSTRUCTIONS.md +11 -0
  168. package/dist/workspace-defaults/files/agents/research/INSTRUCTIONS.md +12 -0
  169. package/dist/workspace-defaults/files/agents/reviewer/INSTRUCTIONS.md +15 -0
  170. package/dist/workspace-defaults/files/skills/document-composer/SKILL.md +6 -2
  171. package/package.json +6 -3
  172. package/dist/plugins/workos-auth/package.json +0 -22
  173. package/dist/plugins/workos-auth/src/index.ts +0 -30
  174. package/dist/plugins/workos-auth/src/manifest.ts +0 -40
  175. package/dist/plugins/workos-auth/src/provider-contract.ts +0 -39
  176. package/dist/plugins/workos-auth/test/manifest.test.ts +0 -94
  177. package/dist/plugins/workos-auth/tsconfig.json +0 -8
  178. /package/dist/workspace-defaults/files/{AGENTS.md → INSTRUCTIONS.md} +0 -0
@@ -0,0 +1,88 @@
1
+ ################################################################################
2
+ # AgentCore Harness retirement-soak operational gates.
3
+ #
4
+ # These use native AWS/Lambda metrics so they work on a fresh stage without
5
+ # pre-creating or importing implicit log groups. alarm_actions remain empty,
6
+ # consistent with the other non-cost operational alarms in this module.
7
+ ################################################################################
8
+
9
+ resource "aws_cloudwatch_metric_alarm" "agentcore_harness_runner_errors" {
10
+ count = local.deploy_lambda_handlers && var.enable_agentcore_multiplayer_proof ? 1 : 0
11
+
12
+ alarm_name = "thinkwork-${var.stage}-agentcore-harness-runner-errors"
13
+ alarm_description = "The AgentCore Harness runner crashed. The turn fails closed and must be reconciled before the retirement soak can pass."
14
+ namespace = "AWS/Lambda"
15
+ metric_name = "Errors"
16
+ statistic = "Sum"
17
+ period = 60
18
+ evaluation_periods = 1
19
+ threshold = 1
20
+ comparison_operator = "GreaterThanOrEqualToThreshold"
21
+ treat_missing_data = "notBreaching"
22
+ alarm_actions = []
23
+
24
+ dimensions = {
25
+ FunctionName = aws_lambda_function.handler["harness-runner"].function_name
26
+ }
27
+ }
28
+ resource "aws_cloudwatch_metric_alarm" "agentcore_harness_runner_throttles" {
29
+ count = local.deploy_lambda_handlers && var.enable_agentcore_multiplayer_proof ? 1 : 0
30
+
31
+ alarm_name = "thinkwork-${var.stage}-agentcore-harness-runner-throttles"
32
+ alarm_description = "AgentCore Harness turns are being throttled before execution; capacity admission or account concurrency is insufficient."
33
+ namespace = "AWS/Lambda"
34
+ metric_name = "Throttles"
35
+ statistic = "Sum"
36
+ period = 60
37
+ evaluation_periods = 1
38
+ threshold = 1
39
+ comparison_operator = "GreaterThanOrEqualToThreshold"
40
+ treat_missing_data = "notBreaching"
41
+ alarm_actions = []
42
+
43
+ dimensions = {
44
+ FunctionName = aws_lambda_function.handler["harness-runner"].function_name
45
+ }
46
+ }
47
+
48
+ resource "aws_cloudwatch_metric_alarm" "agentcore_harness_runner_p95" {
49
+ count = local.deploy_lambda_handlers && var.enable_agentcore_multiplayer_proof ? 1 : 0
50
+
51
+ alarm_name = "thinkwork-${var.stage}-agentcore-harness-runner-p95"
52
+ alarm_description = "AgentCore Harness runner p95 exceeded the 120-second retirement-certification threshold."
53
+ namespace = "AWS/Lambda"
54
+ metric_name = "Duration"
55
+ extended_statistic = "p95"
56
+ period = 300
57
+ evaluation_periods = 5
58
+ datapoints_to_alarm = 3
59
+ threshold = 120000
60
+ comparison_operator = "GreaterThanThreshold"
61
+ treat_missing_data = "notBreaching"
62
+ alarm_actions = []
63
+
64
+ dimensions = {
65
+ FunctionName = aws_lambda_function.handler["harness-runner"].function_name
66
+ }
67
+ }
68
+
69
+ resource "aws_cloudwatch_metric_alarm" "agentcore_harness_runner_async_age" {
70
+ count = local.deploy_lambda_handlers && var.enable_agentcore_multiplayer_proof ? 1 : 0
71
+
72
+ alarm_name = "thinkwork-${var.stage}-agentcore-harness-runner-async-age"
73
+ alarm_description = "AgentCore Harness Event invocations waited more than 60 seconds before execution; the runtime path is backlogged."
74
+ namespace = "AWS/Lambda"
75
+ metric_name = "AsyncEventAge"
76
+ extended_statistic = "p95"
77
+ period = 60
78
+ evaluation_periods = 3
79
+ datapoints_to_alarm = 2
80
+ threshold = 60000
81
+ comparison_operator = "GreaterThanThreshold"
82
+ treat_missing_data = "notBreaching"
83
+ alarm_actions = []
84
+
85
+ dimensions = {
86
+ FunctionName = aws_lambda_function.handler["harness-runner"].function_name
87
+ }
88
+ }
@@ -0,0 +1,91 @@
1
+ ################################################################################
2
+ # THINK-316 U9 — assertion mint operational gates
3
+ #
4
+ # The mint emits redacted EMF metrics around only the KMS Sign call. These
5
+ # alarms encode the frozen U9 latency and failure thresholds; no assertion,
6
+ # subject, tenant, key id, or other caller material is emitted as a dimension.
7
+ ################################################################################
8
+
9
+ resource "aws_cloudwatch_metric_alarm" "agentcore_turn_assertion_kms_p95" {
10
+ count = var.enable_agentcore_multiplayer_proof ? 1 : 0
11
+
12
+ alarm_name = "thinkwork-${var.stage}-agentcore-turn-assertion-kms-p95"
13
+ alarm_description = "AgentCore turn assertion KMS signing p95 exceeded the frozen 100 ms U9 gate."
14
+ namespace = "ThinkWork/AgentCore"
15
+ metric_name = "TurnAssertionKmsSignLatency"
16
+ extended_statistic = "p95"
17
+ comparison_operator = "GreaterThanThreshold"
18
+ threshold = 100
19
+ period = 60
20
+ evaluation_periods = 5
21
+ datapoints_to_alarm = 3
22
+ treat_missing_data = "notBreaching"
23
+ alarm_actions = []
24
+
25
+ dimensions = {
26
+ Stage = var.stage
27
+ }
28
+ }
29
+
30
+ resource "aws_cloudwatch_metric_alarm" "agentcore_turn_assertion_kms_p99" {
31
+ count = var.enable_agentcore_multiplayer_proof ? 1 : 0
32
+
33
+ alarm_name = "thinkwork-${var.stage}-agentcore-turn-assertion-kms-p99"
34
+ alarm_description = "AgentCore turn assertion KMS signing p99 exceeded the frozen 250 ms U9 gate."
35
+ namespace = "ThinkWork/AgentCore"
36
+ metric_name = "TurnAssertionKmsSignLatency"
37
+ extended_statistic = "p99"
38
+ comparison_operator = "GreaterThanThreshold"
39
+ threshold = 250
40
+ period = 60
41
+ evaluation_periods = 5
42
+ datapoints_to_alarm = 3
43
+ treat_missing_data = "notBreaching"
44
+ alarm_actions = []
45
+
46
+ dimensions = {
47
+ Stage = var.stage
48
+ }
49
+ }
50
+
51
+ resource "aws_cloudwatch_metric_alarm" "agentcore_turn_assertion_kms_failures" {
52
+ count = var.enable_agentcore_multiplayer_proof ? 1 : 0
53
+
54
+ alarm_name = "thinkwork-${var.stage}-agentcore-turn-assertion-kms-failures"
55
+ alarm_description = "AgentCore turn assertion KMS signing failed; new Harness/Gateway assertions fail closed."
56
+ namespace = "ThinkWork/AgentCore"
57
+ metric_name = "TurnAssertionKmsSignFailures"
58
+ statistic = "Sum"
59
+ comparison_operator = "GreaterThanThreshold"
60
+ threshold = 0
61
+ period = 60
62
+ evaluation_periods = 1
63
+ datapoints_to_alarm = 1
64
+ treat_missing_data = "notBreaching"
65
+ alarm_actions = []
66
+
67
+ dimensions = {
68
+ Stage = var.stage
69
+ }
70
+ }
71
+
72
+ resource "aws_cloudwatch_metric_alarm" "agentcore_turn_assertion_lambda_errors" {
73
+ count = var.enable_agentcore_multiplayer_proof ? 1 : 0
74
+
75
+ alarm_name = "thinkwork-${var.stage}-agentcore-turn-assertion-errors"
76
+ alarm_description = "The internal AgentCore assertion mint Lambda failed. No fallback assertion is issued."
77
+ namespace = "AWS/Lambda"
78
+ metric_name = "Errors"
79
+ statistic = "Sum"
80
+ comparison_operator = "GreaterThanThreshold"
81
+ threshold = 0
82
+ period = 60
83
+ evaluation_periods = 1
84
+ datapoints_to_alarm = 1
85
+ treat_missing_data = "notBreaching"
86
+ alarm_actions = []
87
+
88
+ dimensions = {
89
+ FunctionName = aws_lambda_function.handler["turn-assertion-mint"].function_name
90
+ }
91
+ }
@@ -0,0 +1,60 @@
1
+ # THINK-280 U8 — governed capability runtime external-search observability.
2
+ #
3
+ # The external MCP search facade (/mcp/capabilities) and the confidential
4
+ # client_credentials token leg are the LAST rollout stage. These alarms fire
5
+ # from AWS/Lambda Errors metrics that EXIST without any log-group management
6
+ # (handler crashes, including ones that never reach a log line) — the same
7
+ # constraint memory-alarms.tf documents. Log-metric filters over the broker's
8
+ # structured replay/policy/readiness/adapter/provider failure codes require the
9
+ # /aws/lambda/<function> groups (created only after first invocation) and are a
10
+ # coordinated follow-up; until then those failure classes are observable through
11
+ # the structured logs + the capability_broker_calls evidence table.
12
+ #
13
+ # DISABLE PATH: flip `enable_capability_broker = false` (or the tenant/env gate
14
+ # CAPABILITY_EXTERNAL_SEARCH_ENABLED). The handler + route stay deployed but
15
+ # return an empty, no-data projection, so no new external access is granted —
16
+ # while all historical capability_broker_calls / compliance evidence remains
17
+ # queryable. These alarms only exist while the broker is enabled.
18
+ #
19
+ # alarm_actions are intentionally empty (see memory-alarms.tf): operators wire
20
+ # an SNS topic when the rollout needs paging.
21
+
22
+ resource "aws_cloudwatch_metric_alarm" "capability_search_lambda_errors" {
23
+ count = local.deploy_lambda_handlers && var.enable_capability_broker ? 1 : 0
24
+
25
+ alarm_name = "thinkwork-${var.stage}-mcp-capability-search-lambda-errors"
26
+ alarm_description = "mcp-capability-search (external capability search facade) crashed. External hosts see a failed search; no capability data is exposed on error (fail closed). Investigate before continuing the external-search rollout."
27
+ namespace = "AWS/Lambda"
28
+ metric_name = "Errors"
29
+ statistic = "Sum"
30
+ period = 300
31
+ evaluation_periods = 1
32
+ threshold = 1
33
+ comparison_operator = "GreaterThanOrEqualToThreshold"
34
+ treat_missing_data = "notBreaching"
35
+ alarm_actions = []
36
+
37
+ dimensions = {
38
+ FunctionName = aws_lambda_function.handler["mcp-capability-search"].function_name
39
+ }
40
+ }
41
+
42
+ resource "aws_cloudwatch_metric_alarm" "capability_oauth_token_errors" {
43
+ count = local.deploy_lambda_handlers && var.enable_capability_broker ? 1 : 0
44
+
45
+ alarm_name = "thinkwork-${var.stage}-mcp-oauth-lambda-errors"
46
+ alarm_description = "mcp-oauth crashed — includes the confidential client_credentials token leg for external capability clients. Token minting failing hard (never issuing on a bad secret is expected + returns 401, not an Error). Investigate credential/DB reachability."
47
+ namespace = "AWS/Lambda"
48
+ metric_name = "Errors"
49
+ statistic = "Sum"
50
+ period = 300
51
+ evaluation_periods = 1
52
+ threshold = 3
53
+ comparison_operator = "GreaterThanOrEqualToThreshold"
54
+ treat_missing_data = "notBreaching"
55
+ alarm_actions = []
56
+
57
+ dimensions = {
58
+ FunctionName = aws_lambda_function.handler["mcp-oauth"].function_name
59
+ }
60
+ }