Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 27 additions & 29 deletions bun.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
},
"dependencies": {
"@aws-sdk/client-bedrock-agentcore": "^3.1092.0",
"@aws-sdk/client-bedrock-agentcore-control": "^3.1079.0",
"@aws-sdk/client-bedrock-agentcore-control": "^3.1102.0",
"@aws-sdk/client-iam": "^3.1080.0",
"@smithy/core": "3.29.3",
"@tanstack/react-query": "^5.101.2",
Expand Down
44 changes: 43 additions & 1 deletion src/core/gateway.tsx
Original file line number Diff line number Diff line change
@@ -1,24 +1,50 @@
import {
CreateGatewayCommand,
CreateGatewayRuleCommand,
CreateGatewayTargetCommand,
GetGatewayCommand,
GetGatewayRuleCommand,
GetGatewayTargetCommand,
ListGatewayRulesCommand,
ListGatewaysCommand,
ListGatewayTargetsCommand,
type CreateGatewayResponse,
type CreateGatewayRuleResponse,
type CreateGatewayTargetResponse,
type GetGatewayResponse,
type GetGatewayRuleResponse,
type GetGatewayTargetResponse,
type ListGatewayRulesResponse,
type ListGatewaysResponse,
type ListGatewayTargetsResponse,
} from "@aws-sdk/client-bedrock-agentcore-control";
import type { CoreGatewayClient } from "../handlers/gateway/types";
import type {
CoreGatewayClient,
CreateGatewayInput,
CreateGatewayRuleInput,
CreateGatewayTargetInput,
} from "../handlers/gateway/types";
import type { AwsClients, CoreOptions } from "./types";
import { toClientConfig } from "./utils";

export class GatewayClient implements CoreGatewayClient {
constructor(private readonly clients: AwsClients) {}

async createGateway(
input: CreateGatewayInput,
options: CoreOptions,
): Promise<CreateGatewayResponse> {
const control = this.clients.control(toClientConfig(options));
const { protocol, roleArn, ...request } = input;
return control.send(
new CreateGatewayCommand({
...request,
roleArn,
...(protocol === "mcp" ? { protocolType: "MCP" as const } : {}),
}),
);
}

async getGateway(id: string, options: CoreOptions): Promise<GetGatewayResponse> {
return this.clients
.control(toClientConfig(options))
Expand Down Expand Up @@ -63,6 +89,15 @@ export class GatewayClient implements CoreGatewayClient {
);
}

async createGatewayTarget(
input: CreateGatewayTargetInput,
options: CoreOptions,
): Promise<CreateGatewayTargetResponse> {
return this.clients
.control(toClientConfig(options))
.send(new CreateGatewayTargetCommand(input));
Comment thread
aidandaly24 marked this conversation as resolved.
}

async getGatewayRule(
gatewayId: string,
ruleId: string,
Expand Down Expand Up @@ -90,4 +125,11 @@ export class GatewayClient implements CoreGatewayClient {
}),
);
}

async createGatewayRule(
input: CreateGatewayRuleInput,
options: CoreOptions,
): Promise<CreateGatewayRuleResponse> {
return this.clients.control(toClientConfig(options)).send(new CreateGatewayRuleCommand(input));
}
}
2 changes: 1 addition & 1 deletion src/core/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ export class CoreClient implements AwsClients {
}

// iam returns the IAM client for `config`, creating and caching it on first
// use (used to provision default harness execution roles).
// use (used to provision default execution roles).
iam(config: ClientConfig): IAMClient {
const key = cacheKey(config);
let client = this.iamClients.get(key);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"gatewayId": "agentcore-cli-gateway-create-fixture-bkf6yayfce",
"createdAt": {
"$date": "2026-08-06T17:25:41.425Z"
},
"updatedAt": {
"$date": "2026-08-06T17:25:41.425Z"
},
"status": "CREATING",
"name": "agentcore-cli-gateway-create-fixture",
"authorizerType": "NONE",
"gatewayUrl": "https://agentcore-cli-gateway-create-fixture-bkf6yayfce.gateway.bedrock-agentcore.us-east-1.amazonaws.com",
"description": "Disposable Gateway Create fixture",
"roleArn": "arn:aws:iam::685197708687:role/AgentCoreGateway-agentcore-cli-gateway-create-fix-f0aa3f799a4b",
"workloadIdentityDetails": {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"ruleId": "93d59ee8-8a9b-4535-9f11-df7006241fed",
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"priority": 10,
"actions": [
{
"routeToTarget": {
"staticRoute": {
"targetName": "http-fixture"
}
}
}
],
"createdAt": {
"$date": "2026-08-06T17:25:57.672Z"
},
"status": "CREATING",
"description": "Disposable Gateway Rule Create fixture"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"targetId": "U4ADV7VNSV",
"createdAt": {
"$date": "2026-08-06T17:25:52.273Z"
},
"updatedAt": {
"$date": "2026-08-06T17:25:52.273Z"
},
"status": "CREATING",
"name": "web-search-fixture",
"targetConfiguration": {
"mcp": {
"connector": {
"source": {
"connectorId": "web-search"
},
"configurations": [
{
"name": "WebSearch",
"parameterValues": {
"maxResults": 10
}
}
]
}
}
},
"credentialProviderConfigurations": [
{
"credentialProviderType": "GATEWAY_IAM_ROLE"
}
],
"description": "Disposable Gateway Connector Create fixture"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"targetId": "VZ7M0WBGJF",
"createdAt": {
"$date": "2026-08-06T17:25:46.743Z"
},
"updatedAt": {
"$date": "2026-08-06T17:25:46.743Z"
},
"status": "CREATING",
"name": "http-fixture",
"targetConfiguration": {
"http": {
"passthrough": {
"endpoint": "https://example.com",
"protocolType": "CUSTOM"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"gatewayId": "agentcore-cli-gateway-create-fixture-bkf6yayfce",
"createdAt": {
"$date": "2026-08-06T17:25:41.425Z"
},
"updatedAt": {
"$date": "2026-08-06T17:25:42.396Z"
},
"status": "READY",
"name": "agentcore-cli-gateway-create-fixture",
"authorizerType": "NONE",
"gatewayUrl": "https://agentcore-cli-gateway-create-fixture-bkf6yayfce.gateway.bedrock-agentcore.us-east-1.amazonaws.com",
"description": "Disposable Gateway Create fixture",
"roleArn": "arn:aws:iam::685197708687:role/AgentCoreGateway-agentcore-cli-gateway-create-fix-f0aa3f799a4b",
"workloadIdentityDetails": {
"workloadIdentityArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:workload-identity-directory/default/workload-identity/agentcore-cli-gateway-create-fixture-bkf6yayfce"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"ruleId": "93d59ee8-8a9b-4535-9f11-df7006241fed",
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"priority": 10,
"actions": [
{
"routeToTarget": {
"staticRoute": {
"targetName": "http-fixture"
}
}
}
],
"createdAt": {
"$date": "2026-08-06T17:25:57.672Z"
},
"status": "ACTIVE",
"description": "Disposable Gateway Rule Create fixture",
"updatedAt": {
"$date": "2026-08-06T17:25:57.672Z"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"targetId": "U4ADV7VNSV",
"createdAt": {
"$date": "2026-08-06T17:25:52.273Z"
},
"updatedAt": {
"$date": "2026-08-06T17:25:53.039Z"
},
"status": "READY",
"name": "web-search-fixture",
"targetConfiguration": {
"mcp": {
"connector": {
"source": {
"connectorId": "web-search"
},
"configurations": [
{
"name": "WebSearch",
"parameterValues": {
"maxResults": 10
}
}
]
}
}
},
"credentialProviderConfigurations": [
{
"credentialProviderType": "GATEWAY_IAM_ROLE"
}
],
"description": "Disposable Gateway Connector Create fixture"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"targetId": "VZ7M0WBGJF",
"createdAt": {
"$date": "2026-08-06T17:25:46.743Z"
},
"updatedAt": {
"$date": "2026-08-06T17:25:47.390Z"
},
"status": "READY",
"name": "http-fixture",
"targetConfiguration": {
"http": {
"passthrough": {
"endpoint": "https://example.com",
"protocolType": "CUSTOM"
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"targetId": "U4ADV7VNSV",
"createdAt": "2026-08-06T17:25:52.273Z",
"updatedAt": "2026-08-06T17:25:52.273Z",
"status": "CREATING",
"name": "web-search-fixture",
"targetConfiguration": {
"mcp": {
"connector": {
"source": {
"connectorId": "web-search"
},
"configurations": [
{
"name": "WebSearch",
"parameterValues": {
"maxResults": 10
}
}
]
}
}
},
"credentialProviderConfigurations": [
{
"credentialProviderType": "GATEWAY_IAM_ROLE"
}
],
"description": "Disposable Gateway Connector Create fixture"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"gatewayId": "agentcore-cli-gateway-create-fixture-bkf6yayfce",
"createdAt": "2026-08-06T17:25:41.425Z",
"updatedAt": "2026-08-06T17:25:41.425Z",
"status": "CREATING",
"name": "agentcore-cli-gateway-create-fixture",
"authorizerType": "NONE",
"gatewayUrl": "https://agentcore-cli-gateway-create-fixture-bkf6yayfce.gateway.bedrock-agentcore.us-east-1.amazonaws.com",
"description": "Disposable Gateway Create fixture",
"roleArn": "arn:aws:iam::685197708687:role/AgentCoreGateway-agentcore-cli-gateway-create-fix-f0aa3f799a4b",
"workloadIdentityDetails": {}
}
17 changes: 17 additions & 0 deletions src/handlers/gateway/__fixtures__/create/rule-create.golden.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"ruleId": "93d59ee8-8a9b-4535-9f11-df7006241fed",
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"priority": 10,
"actions": [
{
"routeToTarget": {
"staticRoute": {
"targetName": "http-fixture"
}
}
}
],
"createdAt": "2026-08-06T17:25:57.672Z",
"status": "CREATING",
"description": "Disposable Gateway Rule Create fixture"
}
16 changes: 16 additions & 0 deletions src/handlers/gateway/__fixtures__/create/target-create.golden.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"gatewayArn": "arn:aws:bedrock-agentcore:us-east-1:685197708687:gateway/agentcore-cli-gateway-create-fixture-bkf6yayfce",
"targetId": "VZ7M0WBGJF",
"createdAt": "2026-08-06T17:25:46.743Z",
"updatedAt": "2026-08-06T17:25:46.743Z",
"status": "CREATING",
"name": "http-fixture",
"targetConfiguration": {
"http": {
"passthrough": {
"endpoint": "https://example.com",
"protocolType": "CUSTOM"
}
}
}
}
Loading
Loading