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,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,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.
|