thinkwork-cli 0.13.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/README.md +3 -14
  2. package/dist/{api-client-JYZXYQJR.js → api-client-4P4JZOBX.js} +1 -1
  3. package/dist/{chunk-Z2F6RJFR.js → chunk-4OMDWYZQ.js} +4 -5
  4. package/dist/{chunk-ILZKG5WV.js → chunk-AD2NIWB5.js} +434 -69
  5. package/dist/chunk-MWQ7RO76.js +137 -0
  6. package/dist/{chunk-DVPBI5HM.js → chunk-OLUQ4U2Z.js} +26 -26
  7. package/dist/{chunk-QOERT44A.js → chunk-YQCYD6NE.js} +57 -44
  8. package/dist/cli.js +4400 -16431
  9. package/dist/commands/enterprise/templates/deploy-repo/scripts/apply-release.mjs +0 -1
  10. package/dist/commands/enterprise/templates/deploy-repo/scripts/smoke.mjs +0 -1
  11. package/dist/commands/enterprise/templates/deploy-repo/terraform/main.tf +0 -14
  12. package/dist/{dist-es-CRV46D5B.js → dist-es-2OTNTL4N.js} +4 -4
  13. package/dist/{dist-es-ENBUC3JP.js → dist-es-2XVAH4BQ.js} +2 -2
  14. package/dist/{dist-es-DCY4IC3Y.js → dist-es-3DPDUJAH.js} +2 -2
  15. package/dist/{dist-es-G7PTG75M.js → dist-es-BNZTBBVC.js} +1 -1
  16. package/dist/{dist-es-GKDBE7E6.js → dist-es-CD2RBDAC.js} +1 -1
  17. package/dist/{dist-es-R7FGL2IB.js → dist-es-I4FW57PS.js} +1 -1
  18. package/dist/{dist-es-USORBXZ5.js → dist-es-KVFWJNDY.js} +4 -4
  19. package/dist/{dist-es-HY3535OI.js → dist-es-PS73DWNL.js} +2 -2
  20. package/dist/{dist-es-LDE437AM.js → dist-es-S3NZQFGT.js} +1 -1
  21. package/dist/{dist-es-G54LBMRN.js → dist-es-SGCA4P32.js} +1 -1
  22. package/dist/{dist-es-Q57SZXZ7.js → dist-es-WBM6J4RA.js} +2 -2
  23. package/dist/{dist-es-P26FWFLT.js → dist-es-ZGVADYIF.js} +8 -8
  24. package/dist/drizzle/0227_analyst_reader_role.sql +17 -26
  25. package/dist/drizzle/0230_analyst_rls.sql +28 -45
  26. package/dist/drizzle/0261_native_auth_control_plane.sql +7 -3
  27. package/dist/drizzle/0270_tool_execution_ledger.sql +115 -0
  28. package/dist/drizzle/0271_ontology_twin_declarations.sql +47 -0
  29. package/dist/drizzle/0272_identity_graph_projection_cursor.sql +23 -0
  30. package/dist/drizzle/0273_twin_materialization_suggestions.sql +29 -0
  31. package/dist/drizzle/0274_tenant_mcp_twin_keys.sql +59 -0
  32. package/dist/drizzle/0275_identity_bulk_rebuild_fence.sql +30 -0
  33. package/dist/drizzle/0276_tool_execution_ledger_allow_cascade_delete.sql +18 -0
  34. package/dist/drizzle/0277_knowledge_base_sources.sql +107 -0
  35. package/dist/drizzle/0278_kb_page_transcription.sql +55 -0
  36. package/dist/drizzle/0279_mcp_servers_off_plugin_provenance.sql +93 -0
  37. package/dist/drizzle/0280_work_item_external_refs_drop_plane_provider.sql +46 -0
  38. package/dist/drizzle/0281_tenant_mcp_twin_keys_expiry_suffix.sql +9 -0
  39. package/dist/drizzle/0282_tenant_mcp_twin_keys_grants.sql +24 -0
  40. package/dist/drizzle/0283_agents_agentcore_runtime_dispatch.sql +13 -0
  41. package/dist/drizzle/0284_user_brain_claims.sql +69 -0
  42. package/dist/drizzle/0285_tenant_mcp_twin_keys_trusted_subsystem.sql +30 -0
  43. package/dist/drizzle/0286_brain_analytics_key.sql +26 -0
  44. package/dist/drizzle/0287_brain_subject.sql +25 -0
  45. package/dist/drizzle/0288_multi_lane_identities.sql +25 -0
  46. package/dist/{loadSso-DJVB7BXE.js → loadSso-ETCXTR4I.js} +2 -2
  47. package/dist/{loadSso-JAMNA3WY.js → loadSso-UBD7KUHE.js} +2 -2
  48. package/dist/plugins/README.md +2 -2
  49. package/dist/plugins/catalog/package.json +0 -3
  50. package/dist/plugins/catalog/src/__tests__/build-catalog.test.ts +6 -3
  51. package/dist/plugins/catalog/src/__tests__/catalog.test.ts +21 -21
  52. package/dist/plugins/catalog/src/__tests__/contracts.test.ts +102 -25
  53. package/dist/plugins/catalog/src/__tests__/plugin-package.test.ts +7 -6
  54. package/dist/plugins/catalog/src/__tests__/plugin-registry.test.ts +0 -15
  55. package/dist/plugins/catalog/src/contracts.ts +15 -0
  56. package/dist/plugins/catalog/src/registry/generated-first-party.ts +0 -18
  57. package/dist/plugins/n8n/test/integrated-app-contract.test.ts +1 -1
  58. package/dist/plugins/twenty/package.json +2 -1
  59. package/dist/plugins/twenty/scripts/LAMBDA_DEPLOY.md +114 -0
  60. package/dist/plugins/twenty/scripts/build-lambda.sh +29 -0
  61. package/dist/plugins/twenty/scripts/configure-product-views.ts +195 -0
  62. package/dist/plugins/twenty/scripts/lambda-handler.ts +49 -0
  63. package/dist/plugins/twenty/scripts/lib/__tests__/load-attachments.test.ts +38 -0
  64. package/dist/plugins/twenty/scripts/lib/__tests__/load-records.test.ts +145 -2
  65. package/dist/plugins/twenty/scripts/lib/__tests__/mappers.test.ts +397 -151
  66. package/dist/plugins/twenty/scripts/lib/__tests__/members-ensure.test.ts +28 -129
  67. package/dist/plugins/twenty/scripts/lib/__tests__/provision-members-db.test.ts +10 -0
  68. package/dist/plugins/twenty/scripts/lib/__tests__/schema-ensure.test.ts +13 -8
  69. package/dist/plugins/twenty/scripts/lib/lastmile-reader.ts +222 -2
  70. package/dist/plugins/twenty/scripts/lib/load-attachments.ts +29 -0
  71. package/dist/plugins/twenty/scripts/lib/load-records.ts +160 -43
  72. package/dist/plugins/twenty/scripts/lib/mappers.ts +368 -152
  73. package/dist/plugins/twenty/scripts/lib/members-ensure.ts +43 -268
  74. package/dist/plugins/twenty/scripts/lib/provision-members-db.ts +57 -0
  75. package/dist/plugins/twenty/scripts/lib/schema-ensure.ts +136 -31
  76. package/dist/plugins/twenty/scripts/migrate-lastmile.ts +254 -152
  77. package/dist/plugins/twenty/scripts/provision-twenty-members.ts +44 -1
  78. package/dist/plugins/twenty/scripts/purge-lastmile-import.ts +178 -0
  79. package/dist/plugins/twenty/scripts/restructure-products.ts +312 -0
  80. package/dist/plugins/twenty/scripts/retag-stage-values.ts +362 -0
  81. package/dist/plugins/twenty/test/manifest.test.ts +2 -4
  82. package/dist/scripts/post-deploy.sh +79 -1
  83. package/dist/{signin-UGDWTGS4.js → signin-5QZNRSOO.js} +2 -2
  84. package/dist/{sso-oidc-Q4VXANXY.js → sso-oidc-XK673P54.js} +2 -2
  85. package/dist/{sts-CWLSE3GH.js → sts-OXI2UALF.js} +6 -134
  86. package/dist/{sts-DNZLNVOV.js → sts-SQW4NBK3.js} +6 -134
  87. package/dist/terraform/examples/greenfield/main.tf +233 -175
  88. package/dist/terraform/examples/greenfield/terraform.tfvars.example +12 -8
  89. package/dist/terraform/modules/app/agentcore-admin/main.tf +47 -0
  90. package/dist/terraform/modules/app/agentcore-code-interpreter/README.md +39 -47
  91. package/dist/terraform/modules/app/agentcore-code-interpreter/main.tf +13 -66
  92. package/dist/terraform/modules/app/agentcore-identity/main.tf +106 -26
  93. package/dist/terraform/modules/app/agentcore-identity/outputs.tf +6 -6
  94. package/dist/terraform/modules/app/agentcore-identity/scripts/bootstrap_twenty_oauth_client.sh +216 -99
  95. package/dist/terraform/modules/app/agentcore-identity/scripts/delete_identity.sh +6 -9
  96. package/dist/terraform/modules/app/agentcore-identity/scripts/delete_workload_identity.sh +19 -0
  97. package/dist/terraform/modules/app/agentcore-identity/scripts/ensure_workload_identity.sh +29 -0
  98. package/dist/terraform/modules/app/agentcore-identity/scripts/read_identity.sh +22 -7
  99. package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_identity.sh +17 -46
  100. package/dist/terraform/modules/app/agentcore-identity/scripts/reconcile_twenty_provider.mjs +65 -3
  101. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/after.tf +15 -0
  102. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/before.tf +7 -0
  103. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/identity-after.tf +8 -0
  104. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/identity-before.tf +9 -0
  105. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/thinkwork-after.tf +3 -0
  106. package/dist/terraform/modules/app/agentcore-identity/tests/tainted-marker/thinkwork-before.tf +3 -0
  107. package/dist/terraform/modules/app/agentcore-identity/variables.tf +6 -0
  108. package/dist/terraform/modules/app/agentcore-memory/README.md +46 -9
  109. package/dist/terraform/modules/app/agentcore-memory/main.tf +27 -10
  110. package/dist/terraform/modules/app/agentcore-memory/scripts/create_or_find_memory.sh +156 -24
  111. package/dist/terraform/modules/app/agentcore-pi/README.md +1 -3
  112. package/dist/terraform/modules/app/agentcore-pi/main.tf +42 -52
  113. package/dist/terraform/modules/app/agentcore-pi/outputs.tf +3 -3
  114. package/dist/terraform/modules/app/agentcore-pi/scripts/reconcile_pi_runtime.mjs +175 -0
  115. package/dist/terraform/modules/app/agentcore-pi/variables.tf +35 -28
  116. package/dist/terraform/modules/app/agentcore-platform/main.tf +68 -0
  117. package/dist/terraform/modules/app/agentcore-runtime/main.tf +4 -20
  118. package/dist/terraform/modules/app/capability-broker/main.tf +2 -2
  119. package/dist/terraform/modules/app/capability-broker/variables.tf +11 -0
  120. package/dist/terraform/modules/app/deployment-control-plane/README.md +264 -0
  121. package/dist/terraform/modules/app/deployment-control-plane/buildspec.yml +4 -1
  122. package/dist/terraform/modules/app/deployment-control-plane/main.tf +94 -0
  123. package/dist/terraform/modules/app/deployment-control-plane/outputs.tf +5 -0
  124. package/dist/terraform/modules/app/deployment-control-plane/runner.py +2641 -124
  125. package/dist/terraform/modules/app/deployment-control-plane/test_runner_bundle.py +2034 -154
  126. package/dist/terraform/modules/app/deployment-control-plane/variables.tf +33 -0
  127. package/dist/terraform/modules/app/lambda-api/auth-state.tf +72 -0
  128. package/dist/terraform/modules/app/lambda-api/chat-latency-observability.tf +466 -0
  129. package/dist/terraform/modules/app/lambda-api/dispatch-dlq.tf +55 -0
  130. package/dist/terraform/modules/app/lambda-api/handlers.tf +411 -723
  131. package/dist/terraform/modules/app/lambda-api/iam-grouped.tf +262 -198
  132. package/dist/terraform/modules/app/lambda-api/main.tf +51 -13
  133. package/dist/terraform/modules/app/lambda-api/mcp-oauth.tf +4 -181
  134. package/dist/terraform/modules/app/lambda-api/memory-alarms.tf +3 -28
  135. package/dist/terraform/modules/app/lambda-api/oauth-secrets.tf +1 -2
  136. package/dist/terraform/modules/app/lambda-api/outputs.tf +17 -45
  137. package/dist/terraform/modules/app/lambda-api/turn-assertion.tf +45 -0
  138. package/dist/terraform/modules/app/lambda-api/variables.tf +219 -126
  139. package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/README.md +1 -1
  140. package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/main.tf +18 -18
  141. package/dist/terraform/modules/app/sandbox-log-scrubber/README.md +11 -10
  142. package/dist/terraform/modules/app/sandbox-log-scrubber/main.tf +5 -5
  143. package/dist/terraform/modules/app/static-site/main.tf +1 -1
  144. package/dist/terraform/modules/app/www-dns/main.tf +9 -27
  145. package/dist/terraform/modules/app/www-dns/variables.tf +4 -10
  146. package/dist/terraform/modules/data/aurora-postgres/README.md +34 -0
  147. package/dist/terraform/modules/data/aurora-postgres/alarms.tf +82 -0
  148. package/dist/terraform/modules/data/aurora-postgres/main.tf +27 -57
  149. package/dist/terraform/modules/data/aurora-postgres/outputs.tf +0 -9
  150. package/dist/terraform/modules/data/aurora-postgres/variables.tf +41 -0
  151. package/dist/terraform/modules/data/s3-buckets/main.tf +5 -6
  152. package/dist/terraform/modules/foundation/cognito/main.tf +81 -8
  153. package/dist/terraform/modules/foundation/cognito/outputs.tf +5 -0
  154. package/dist/terraform/modules/foundation/cognito/variables.tf +24 -12
  155. package/dist/terraform/modules/thinkwork/README.md +5 -1
  156. package/dist/terraform/modules/thinkwork/main.tf +376 -374
  157. package/dist/terraform/modules/thinkwork/outputs.tf +12 -158
  158. package/dist/terraform/modules/thinkwork/variables.tf +246 -89
  159. package/dist/workspace-defaults/files/INSTRUCTIONS.md +9 -11
  160. package/dist/workspace-defaults/files/MEMORY_GUIDE.md +38 -35
  161. package/dist/workspace-defaults/files/ROUTER.md +1 -1
  162. package/dist/workspace-defaults/files/TOOLS.md +9 -39
  163. package/dist/workspace-defaults/files/agents/analyst/INSTRUCTIONS.md +6 -3
  164. package/dist/workspace-defaults/files/catalog-skills/brain-brief-builder/SKILL.md +165 -0
  165. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/SKILL.md +75 -0
  166. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/mcp-tooling.md +40 -0
  167. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/validation-and-handoff.md +40 -0
  168. package/dist/workspace-defaults/files/catalog-skills/n8n-workflow-operator/references/workflow-authoring.md +46 -0
  169. package/dist/workspace-defaults/files/skills/artifact-builder/references/crm-dashboard.md +1 -1
  170. package/dist/workspace-defaults/files/skills/document-composer/SKILL.md +22 -3
  171. package/package.json +1 -1
  172. package/dist/drizzle/0261_managed_harness_multiplayer.sql +0 -313
  173. package/dist/drizzle/0262_parallel_harness_threads.sql +0 -9
  174. package/dist/drizzle/0264_harness_tool_execution_ledger.sql +0 -113
  175. package/dist/plugins/company-data/README.md +0 -49
  176. package/dist/plugins/company-data/package.json +0 -21
  177. package/dist/plugins/company-data/src/index.ts +0 -30
  178. package/dist/plugins/company-data/src/manifest.ts +0 -26
  179. package/dist/plugins/company-data/test/manifest.test.ts +0 -116
  180. package/dist/plugins/company-data/tsconfig.json +0 -8
  181. package/dist/plugins/company-etl/README.md +0 -46
  182. package/dist/plugins/company-etl/package.json +0 -21
  183. package/dist/plugins/company-etl/src/index.ts +0 -29
  184. package/dist/plugins/company-etl/src/manifest.ts +0 -26
  185. package/dist/plugins/company-etl/test/manifest.test.ts +0 -108
  186. package/dist/plugins/company-etl/tsconfig.json +0 -8
  187. package/dist/plugins/lastmile/README.md +0 -50
  188. package/dist/plugins/lastmile/package.json +0 -23
  189. package/dist/plugins/lastmile/smoke/lastmile-plugin-smoke.mjs +0 -661
  190. package/dist/plugins/lastmile/src/api/tasks-adapter.ts +0 -572
  191. package/dist/plugins/lastmile/src/discovery.fixture.ts +0 -64
  192. package/dist/plugins/lastmile/src/index.ts +0 -46
  193. package/dist/plugins/lastmile/src/manifest.ts +0 -139
  194. package/dist/plugins/lastmile/test/api/tasks-adapter.test.ts +0 -266
  195. package/dist/plugins/lastmile/test/discovery.test.ts +0 -88
  196. package/dist/plugins/lastmile/tsconfig.json +0 -8
  197. package/dist/plugins/n8n/smoke/n8n-managed-app-smoke.mjs +0 -409
  198. package/dist/plugins/twenty/smoke/twenty-managed-app-smoke.mjs +0 -359
  199. package/dist/terraform/modules/app/agentcore-code-interpreter/Dockerfile.sandbox-base +0 -61
  200. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/sitecustomize.py +0 -227
  201. package/dist/terraform/modules/app/agentcore-code-interpreter/sandbox/test_sitecustomize.py +0 -277
  202. package/dist/terraform/modules/app/agentcore-code-interpreter/scripts/build_and_push_sandbox_base.sh +0 -70
  203. package/dist/terraform/modules/app/agentcore-gateway/main.tf +0 -305
  204. package/dist/terraform/modules/app/agentcore-gateway/outputs.tf +0 -44
  205. package/dist/terraform/modules/app/agentcore-gateway/scripts/delete_gateway.sh +0 -93
  206. package/dist/terraform/modules/app/agentcore-gateway/scripts/read_gateway.sh +0 -33
  207. package/dist/terraform/modules/app/agentcore-gateway/scripts/reconcile_gateway.sh +0 -543
  208. package/dist/terraform/modules/app/agentcore-gateway/variables.tf +0 -70
  209. package/dist/terraform/modules/app/agentcore-harness/main.tf +0 -330
  210. package/dist/terraform/modules/app/agentcore-harness/outputs.tf +0 -72
  211. package/dist/terraform/modules/app/agentcore-harness/scripts/delete_harness.sh +0 -5
  212. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-lifecycle.mjs +0 -430
  213. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-readback.mjs +0 -180
  214. package/dist/terraform/modules/app/agentcore-harness/scripts/harness-tool-contract.mjs +0 -193
  215. package/dist/terraform/modules/app/agentcore-harness/scripts/prune_harness.sh +0 -5
  216. package/dist/terraform/modules/app/agentcore-harness/scripts/read_harness.sh +0 -5
  217. package/dist/terraform/modules/app/agentcore-harness/scripts/reconcile_harness.sh +0 -5
  218. package/dist/terraform/modules/app/agentcore-harness/variables.tf +0 -96
  219. package/dist/terraform/modules/app/hindsight-memory/README.md +0 -89
  220. package/dist/terraform/modules/app/hindsight-memory/main.tf +0 -411
  221. package/dist/terraform/modules/app/lambda-api/agentcore-harness-alarms.tf +0 -88
  222. package/dist/terraform/modules/app/lambda-api/agentcore-identity-alarms.tf +0 -91
  223. package/dist/terraform/modules/data/bedrock-knowledge-base/main.tf +0 -102
  224. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/outputs.tf +0 -0
  225. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/scripts/sync-database.py +0 -0
  226. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/scripts/test_sync_database.py +0 -0
  227. /package/dist/{plugins/n8n/terraform → terraform/modules/app}/n8n/variables.tf +0 -0
  228. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/README.md +0 -0
  229. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/main.tf +0 -0
  230. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/outputs.tf +0 -0
  231. /package/dist/{plugins/twenty/terraform → terraform/modules/app}/twenty/variables.tf +0 -0
@@ -1,193 +0,0 @@
1
- import { createHash } from "node:crypto";
2
-
3
- export const GOVERNED_TOOL_TYPES = new Map([
4
- ["thinkwork_gateway", "agentcore_gateway"],
5
- ["browser", "agentcore_browser"],
6
- ["emit_document", "inline_function"],
7
- ["goal_complete", "inline_function"],
8
- ["submit_skill_draft", "inline_function"],
9
- ]);
10
-
11
- export function canonicalJson(value) {
12
- if (Array.isArray(value)) {
13
- return `[${value.map(canonicalJson).join(",")}]`;
14
- }
15
- if (value && typeof value === "object") {
16
- return `{${Object.keys(value)
17
- .sort()
18
- .map((key) => `${JSON.stringify(key)}:${canonicalJson(value[key])}`)
19
- .join(",")}}`;
20
- }
21
- return JSON.stringify(value);
22
- }
23
-
24
- export function fingerprintGovernedHarnessTools(value) {
25
- return createHash("sha256").update(canonicalJson(value)).digest("hex");
26
- }
27
-
28
- export function selectHarnessEndpointsForRetention(
29
- endpoints,
30
- { activeEndpointName, endpointPrefix, legacyEndpointName },
31
- ) {
32
- const managed = endpoints.filter(
33
- (endpoint) =>
34
- endpoint.endpointName === legacyEndpointName ||
35
- endpoint.endpointName?.startsWith(endpointPrefix),
36
- );
37
- const rollbackEndpointName = managed
38
- .filter((endpoint) => endpoint.endpointName !== activeEndpointName)
39
- .sort((left, right) =>
40
- String(right.liveVersion ?? right.targetVersion ?? "").localeCompare(
41
- String(left.liveVersion ?? left.targetVersion ?? ""),
42
- undefined,
43
- { numeric: true },
44
- ),
45
- )[0]?.endpointName;
46
- const retainedEndpointNames = new Set(
47
- [activeEndpointName, rollbackEndpointName].filter(
48
- (value) => typeof value === "string",
49
- ),
50
- );
51
- return {
52
- rollbackEndpointName,
53
- retainedEndpointNames: [...retainedEndpointNames],
54
- deletedEndpointNames: managed
55
- .map((endpoint) => endpoint.endpointName)
56
- .filter(
57
- (endpointName) =>
58
- endpointName && !retainedEndpointNames.has(endpointName),
59
- ),
60
- };
61
- }
62
-
63
- /**
64
- * One canonical producer contract for both Harness reconciliation and
65
- * immutable-version readback. Keeping the complete inline schemas here makes
66
- * schema drift a deployment failure instead of re-attesting it into SSM.
67
- */
68
- export function buildGovernedHarnessTools({ gatewayArn, providerArn }) {
69
- return [
70
- {
71
- type: "agentcore_gateway",
72
- name: "thinkwork_gateway",
73
- config: {
74
- agentCoreGateway: {
75
- gatewayArn,
76
- outboundAuth: {
77
- oauth: {
78
- providerArn,
79
- scopes: ["gateway:invoke"],
80
- customParameters: {
81
- subject_token_type: "urn:ietf:params:oauth:token-type:jwt",
82
- },
83
- grantType: "TOKEN_EXCHANGE",
84
- },
85
- },
86
- },
87
- },
88
- },
89
- {
90
- type: "agentcore_browser",
91
- name: "browser",
92
- config: { agentCoreBrowser: {} },
93
- },
94
- {
95
- type: "inline_function",
96
- name: "emit_document",
97
- config: {
98
- inlineFunction: {
99
- description:
100
- "Emit a durable ThinkWork HTML plate from markdown. Use genre report, plan, brief, or ideation. The platform compiles, validates, persists, and attaches it to the thread. On rejection, fix every diagnostic and call again with document_id when supplied.",
101
- inputSchema: {
102
- type: "object",
103
- properties: {
104
- genre: {
105
- type: "string",
106
- enum: ["report", "plan", "brief", "ideation"],
107
- },
108
- title: { type: "string" },
109
- abstract: { type: "string" },
110
- digest_markdown: {
111
- type: "string",
112
- description: "Complete markdown document body.",
113
- },
114
- status: { type: "string", enum: ["draft", "final"] },
115
- document_id: { type: "string" },
116
- space_id: { type: "string" },
117
- },
118
- required: ["genre", "title", "abstract", "digest_markdown"],
119
- additionalProperties: false,
120
- },
121
- },
122
- },
123
- },
124
- {
125
- type: "inline_function",
126
- name: "goal_complete",
127
- config: {
128
- inlineFunction: {
129
- description:
130
- "Mark the current ThinkWork-managed Goal mode objective complete. Call exactly once only after the objective is fully satisfied.",
131
- inputSchema: {
132
- type: "object",
133
- properties: {
134
- summary: {
135
- type: "string",
136
- description: "Concise user-facing completion summary.",
137
- },
138
- completion_notes: {
139
- type: "string",
140
- description: "Optional bounded completion details.",
141
- },
142
- verification_notes: {
143
- type: "array",
144
- items: { type: "string" },
145
- maxItems: 5,
146
- description: "Concrete checks proving completion.",
147
- },
148
- },
149
- required: ["summary"],
150
- additionalProperties: false,
151
- },
152
- },
153
- },
154
- },
155
- {
156
- type: "inline_function",
157
- name: "submit_skill_draft",
158
- config: {
159
- inlineFunction: {
160
- description:
161
- "Submit a complete Agent Skills draft to ThinkWork's governed review and trust queue. Available only during a trusted /skill-creator turn; this does not publish the skill.",
162
- inputSchema: {
163
- type: "object",
164
- properties: {
165
- skill_markdown: {
166
- type: "string",
167
- description:
168
- "Complete SKILL.md including valid name and description frontmatter.",
169
- },
170
- supporting_files: {
171
- type: "array",
172
- maxItems: 20,
173
- items: {
174
- type: "object",
175
- properties: {
176
- path: { type: "string" },
177
- content: { type: "string" },
178
- },
179
- required: ["path", "content"],
180
- additionalProperties: false,
181
- },
182
- description:
183
- "Optional bounded text references, scripts, or assets required by the skill.",
184
- },
185
- },
186
- required: ["skill_markdown"],
187
- additionalProperties: false,
188
- },
189
- },
190
- },
191
- },
192
- ];
193
- }
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
- exec node "$script_dir/harness-lifecycle.mjs" prune
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
- exec node "$script_dir/harness-lifecycle.mjs" read
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
- exec node "$script_dir/harness-lifecycle.mjs" reconcile
@@ -1,96 +0,0 @@
1
- variable "enabled" {
2
- description = "Create the AgentCore Harness execution IAM surface. The role is independent of whether a managed tenant/profile runtime is enabled."
3
- type = bool
4
- default = true
5
- }
6
-
7
- variable "stage" {
8
- description = "Deployment stage (dev, prod, etc.)"
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 "bucket_name" {
23
- description = "Stage workspace S3 bucket name — Harness microVMs read tenant skill sources under tenants/*"
24
- type = string
25
- }
26
-
27
- variable "managed_runtime_enabled" {
28
- description = "Reconcile the managed tenant/profile AgentCore Harness runtime. The base IAM role may remain enabled while this is false."
29
- type = bool
30
- default = false
31
- }
32
-
33
- variable "tenant_slug" {
34
- description = "Tenant slug whose skill prefix and managed Harness profile are admitted."
35
- type = string
36
- default = ""
37
-
38
- validation {
39
- condition = var.tenant_slug == "" || can(regex("^[a-z0-9][a-z0-9-]{0,47}$", var.tenant_slug))
40
- error_message = "tenant_slug must be a lowercase slug up to 48 characters."
41
- }
42
- }
43
-
44
- variable "trust_profile" {
45
- description = "Stable execution/trust profile. Ordinary agent/user/tool differences do not create more Harnesses."
46
- type = string
47
- default = "default"
48
-
49
- validation {
50
- condition = can(regex("^[a-z][a-z0-9-]{0,31}$", var.trust_profile))
51
- error_message = "trust_profile must be a lowercase slug up to 32 characters."
52
- }
53
- }
54
-
55
- variable "discovery_url" {
56
- description = "OIDC discovery URL used by the Harness CUSTOM_JWT authorizer."
57
- type = string
58
- default = ""
59
- }
60
-
61
- variable "harness_audience" {
62
- description = "Exact audience accepted by the Harness CUSTOM_JWT authorizer."
63
- type = string
64
- default = ""
65
- }
66
-
67
- variable "gateway_arn" {
68
- description = "Exact selected AgentCore Gateway ARN exposed as the native Harness tool."
69
- type = string
70
- default = ""
71
- }
72
-
73
- variable "oauth_credential_provider_arn" {
74
- description = "Identity provider ARN used for the Harness on-behalf-of Gateway token exchange."
75
- type = string
76
- default = ""
77
- }
78
-
79
- variable "oauth_credential_secret_arn" {
80
- description = "AgentCore-managed Secrets Manager ARN backing the selected OAuth provider."
81
- type = string
82
- default = ""
83
- sensitive = true
84
- }
85
-
86
- variable "oauth_return_url" {
87
- description = "Application callback that verifies the active user and completes AgentCore Identity OAuth session binding."
88
- type = string
89
- default = ""
90
- }
91
-
92
- variable "model_id" {
93
- description = "Safe baseline Bedrock model for the managed Harness profile. Per-turn trusted projection may narrow/replace it."
94
- type = string
95
- default = "us.anthropic.claude-haiku-4-5-20251001-v1:0"
96
- }
@@ -1,89 +0,0 @@
1
- # Hindsight Memory Module (canonical user and Space memory)
2
-
3
- Thinkwork provisions AgentCore managed memory as an AWS platform primitive, but
4
- full ThinkWork installs use **Hindsight** as the canonical user and Space memory
5
- provider. AgentCore-only memory remains available as an explicit
6
- low-cost/development opt-out.
7
-
8
- ## Memory layers
9
-
10
- | Layer | Backend | Always on | What it stores |
11
- | --------------------- | ----------------------- | ----------------------------- | ------------------------------------------------------------------------------ |
12
- | 1. Workspace files | S3 per-agent | Yes | Scratchpad, working files |
13
- | 2. Thread history | Aurora `messages` table | Yes | Last 30 turns per thread |
14
- | 3a. Managed long-term | AgentCore Memory | **Yes** | AWS platform memory primitive and low-cost/development fallback |
15
- | 3b. Product long-term | Hindsight ECS service | **Default for full installs** | Canonical user/Space memory with entity graph + BM25 + cross-encoder reranking |
16
-
17
- ## How retention works
18
-
19
- The agent container automatically emits a `CreateEvent` into AgentCore
20
- Memory after every turn (user message + assistant response), via
21
- `memory.store_turn_pair` in `packages/agentcore/agent-container/memory.py`.
22
- AgentCore's background strategies extract facts into four namespaces:
23
-
24
- - `assistant_{actorId}` — semantic facts
25
- - `preferences_{actorId}` — user preferences
26
- - `session_{sessionId}` — session summaries
27
- - `episodes_{actorId}/{sessionId}` — episodic memory
28
-
29
- The agent reads them back via the `recall()` tool. There is no need for
30
- the model to call `remember()` for routine facts — it only exists for
31
- user-driven "please remember X" requests.
32
-
33
- When Hindsight is enabled, the container ALSO registers
34
- `hindsight_retain`, `hindsight_recall`, and `hindsight_reflect` tools that
35
- route to the Hindsight service. `remember()` dual-writes to both backends
36
- so explicit memories land in both systems.
37
-
38
- ## Usage
39
-
40
- ### Default — Hindsight canonical memory
41
-
42
- ```hcl
43
- module "thinkwork" {
44
- source = "thinkwork-ai/thinkwork/aws"
45
-
46
- stage = "prod"
47
- # enable_hindsight defaults to true
48
- }
49
- ```
50
-
51
- The `terraform/modules/app/agentcore-memory` module is still instantiated, but
52
- the active user/Space memory engine resolves to Hindsight.
53
-
54
- ### Low-cost/development AgentCore-only opt-out
55
-
56
- ```hcl
57
- module "thinkwork" {
58
- source = "thinkwork-ai/thinkwork/aws"
59
-
60
- stage = "prod"
61
- enable_hindsight = false
62
- memory_engine = "agentcore"
63
-
64
- # This is not the full product memory path.
65
- }
66
- ```
67
-
68
- When `enable_hindsight = true`, Terraform creates:
69
-
70
- - ECS Fargate cluster + service (ARM64, 2 vCPU, 4 GB)
71
- - Application Load Balancer
72
- - Security groups (ALB → Hindsight → Aurora ingress)
73
- - CloudWatch log group
74
-
75
- Cost: ~$75/mo (ARM64 Fargate + ALB hours).
76
-
77
- ## Turning Hindsight on/off
78
-
79
- Toggling `enable_hindsight` and re-running `thinkwork deploy`:
80
-
81
- - **false → true**: creates the ECS + ALB infra. Agents gain the three
82
- `hindsight_*` tools on their next invoke. The active memory engine resolves
83
- to Hindsight when `memory_engine` is empty.
84
- - **true → false**: destroys the ECS + ALB infra. Agents lose the
85
- `hindsight_*` tools. This should be paired with `memory_engine = "agentcore"`
86
- for explicit low-cost/development deployments.
87
-
88
- Memory data is not migrated between backends. Hindsight records and
89
- AgentCore records live in separate stores.