@agent-relay/sandbox 0.1.2 → 0.1.3
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 +226 -5
- package/dist/agent37/client.d.ts +115 -0
- package/dist/agent37/client.d.ts.map +1 -0
- package/dist/agent37/client.js +270 -0
- package/dist/agent37/client.js.map +1 -0
- package/dist/agent37/runtime.d.ts +415 -0
- package/dist/agent37/runtime.d.ts.map +1 -0
- package/dist/agent37/runtime.js +855 -0
- package/dist/agent37/runtime.js.map +1 -0
- package/dist/agentcore/bench.d.ts +93 -0
- package/dist/agentcore/bench.d.ts.map +1 -0
- package/dist/agentcore/bench.js +125 -0
- package/dist/agentcore/bench.js.map +1 -0
- package/dist/agentcore/capabilities.d.ts +169 -0
- package/dist/agentcore/capabilities.d.ts.map +1 -0
- package/dist/agentcore/capabilities.js +153 -0
- package/dist/agentcore/capabilities.js.map +1 -0
- package/dist/agentcore/config.d.ts +156 -0
- package/dist/agentcore/config.d.ts.map +1 -0
- package/dist/agentcore/config.js +12 -0
- package/dist/agentcore/config.js.map +1 -0
- package/dist/agentcore/internal/sdk.d.ts +181 -0
- package/dist/agentcore/internal/sdk.d.ts.map +1 -0
- package/dist/agentcore/internal/sdk.js +223 -0
- package/dist/agentcore/internal/sdk.js.map +1 -0
- package/dist/agentcore/runtime.d.ts +177 -0
- package/dist/agentcore/runtime.d.ts.map +1 -0
- package/dist/agentcore/runtime.js +706 -0
- package/dist/agentcore/runtime.js.map +1 -0
- package/dist/daytona/runtime.d.ts +23 -0
- package/dist/daytona/runtime.d.ts.map +1 -1
- package/dist/daytona/runtime.js +167 -5
- package/dist/daytona/runtime.js.map +1 -1
- package/dist/daytona/wire-supplement.d.ts +25 -0
- package/dist/daytona/wire-supplement.d.ts.map +1 -0
- package/dist/daytona/wire-supplement.js +16 -0
- package/dist/daytona/wire-supplement.js.map +1 -0
- package/dist/e2b/runtime.d.ts +107 -72
- package/dist/e2b/runtime.d.ts.map +1 -1
- package/dist/e2b/runtime.js +675 -190
- package/dist/e2b/runtime.js.map +1 -1
- package/dist/freestyle/capabilities.d.ts +28 -0
- package/dist/freestyle/capabilities.d.ts.map +1 -0
- package/dist/freestyle/capabilities.js +42 -0
- package/dist/freestyle/capabilities.js.map +1 -0
- package/dist/freestyle/config.d.ts +36 -0
- package/dist/freestyle/config.d.ts.map +1 -0
- package/dist/freestyle/config.js +2 -0
- package/dist/freestyle/config.js.map +1 -0
- package/dist/freestyle/internal/sdk.d.ts +69 -0
- package/dist/freestyle/internal/sdk.d.ts.map +1 -0
- package/dist/freestyle/internal/sdk.js +19 -0
- package/dist/freestyle/internal/sdk.js.map +1 -0
- package/dist/freestyle/runtime.d.ts +163 -0
- package/dist/freestyle/runtime.d.ts.map +1 -0
- package/dist/freestyle/runtime.js +798 -0
- package/dist/freestyle/runtime.js.map +1 -0
- package/dist/index.d.ts +35 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/microsandbox/runtime.d.ts +793 -0
- package/dist/microsandbox/runtime.d.ts.map +1 -0
- package/dist/microsandbox/runtime.js +2303 -0
- package/dist/microsandbox/runtime.js.map +1 -0
- package/dist/modal/bench.d.ts +199 -0
- package/dist/modal/bench.d.ts.map +1 -0
- package/dist/modal/bench.js +450 -0
- package/dist/modal/bench.js.map +1 -0
- package/dist/modal/capabilities.d.ts +180 -0
- package/dist/modal/capabilities.d.ts.map +1 -0
- package/dist/modal/capabilities.js +159 -0
- package/dist/modal/capabilities.js.map +1 -0
- package/dist/modal/config.d.ts +192 -0
- package/dist/modal/config.d.ts.map +1 -0
- package/dist/modal/config.js +169 -0
- package/dist/modal/config.js.map +1 -0
- package/dist/modal/internal/sdk.d.ts +141 -0
- package/dist/modal/internal/sdk.d.ts.map +1 -0
- package/dist/modal/internal/sdk.js +51 -0
- package/dist/modal/internal/sdk.js.map +1 -0
- package/dist/modal/runtime.d.ts +271 -0
- package/dist/modal/runtime.d.ts.map +1 -0
- package/dist/modal/runtime.js +871 -0
- package/dist/modal/runtime.js.map +1 -0
- package/dist/mount-script.d.ts +16 -1
- package/dist/mount-script.d.ts.map +1 -1
- package/dist/mount-script.js +76 -15
- package/dist/mount-script.js.map +1 -1
- package/dist/orchestrator.d.ts +15 -0
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +13 -1
- package/dist/orchestrator.js.map +1 -1
- package/dist/port.d.ts +144 -6
- package/dist/port.d.ts.map +1 -1
- package/dist/port.js +27 -5
- package/dist/port.js.map +1 -1
- package/dist/types.d.ts +50 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vercel/bench.d.ts +169 -0
- package/dist/vercel/bench.d.ts.map +1 -0
- package/dist/vercel/bench.js +337 -0
- package/dist/vercel/bench.js.map +1 -0
- package/dist/vercel/capabilities.d.ts +106 -0
- package/dist/vercel/capabilities.d.ts.map +1 -0
- package/dist/vercel/capabilities.js +128 -0
- package/dist/vercel/capabilities.js.map +1 -0
- package/dist/vercel/config.d.ts +119 -0
- package/dist/vercel/config.d.ts.map +1 -0
- package/dist/vercel/config.js +8 -0
- package/dist/vercel/config.js.map +1 -0
- package/dist/vercel/internal/sdk.d.ts +173 -0
- package/dist/vercel/internal/sdk.d.ts.map +1 -0
- package/dist/vercel/internal/sdk.js +117 -0
- package/dist/vercel/internal/sdk.js.map +1 -0
- package/dist/vercel/runtime.d.ts +305 -0
- package/dist/vercel/runtime.d.ts.map +1 -0
- package/dist/vercel/runtime.js +1169 -0
- package/dist/vercel/runtime.js.map +1 -0
- package/docs/freestyle.md +110 -0
- package/package.json +35 -4
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-free configuration for the AWS Bedrock AgentCore Code Interpreter adapter.
|
|
3
|
+
*
|
|
4
|
+
* Nothing in this module imports `@aws-sdk/client-bedrock-agentcore` or
|
|
5
|
+
* `@aws-sdk/client-bedrock-agentcore-control`. Consumers can construct and
|
|
6
|
+
* type-check a configuration without either optional peer dependency
|
|
7
|
+
* installed.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Credentials for the AgentCore control- and data-plane APIs.
|
|
11
|
+
*
|
|
12
|
+
* AWS auth is not a single token, and this adapter never falls back to
|
|
13
|
+
* ambient process state implicitly. A caller gets exactly one of two
|
|
14
|
+
* explicit choices:
|
|
15
|
+
*
|
|
16
|
+
* - `static`: long-lived IAM user keys, or STS/SSO temporary credentials
|
|
17
|
+
* (add `sessionToken` for the latter).
|
|
18
|
+
* - `default-chain`: explicit opt-in to the AWS SDK's own credential
|
|
19
|
+
* resolution (env vars, shared config file, EC2/ECS/Lambda role, SSO
|
|
20
|
+
* cache, etc). This is the standard way to run under an assumed IAM role,
|
|
21
|
+
* and it is common enough in AWS-native deployments that refusing it
|
|
22
|
+
* outright would be dogmatic — but the adapter never *defaults* to it.
|
|
23
|
+
* The caller names it, exactly like every other field here.
|
|
24
|
+
*/
|
|
25
|
+
export type AgentCoreCredentials = {
|
|
26
|
+
type: "static";
|
|
27
|
+
accessKeyId: string;
|
|
28
|
+
secretAccessKey: string;
|
|
29
|
+
/** Required for STS/SSO temporary credentials; omitted for IAM user keys. */
|
|
30
|
+
sessionToken?: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: "default-chain";
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Network mode for an owned code interpreter.
|
|
36
|
+
*
|
|
37
|
+
* `VPC` is the only mode reachable without an explicit, named opt-in to a
|
|
38
|
+
* riskier mode. This is deliberate: public research disclosed in March 2026
|
|
39
|
+
* (BeyondTrust Phantom Labs, corroborated by Unit 42 and the Cloud Security
|
|
40
|
+
* Alliance) showed that AgentCore's `SANDBOX` network mode still permits
|
|
41
|
+
* outbound DNS A/AAAA queries even though it blocks general internet
|
|
42
|
+
* traffic, and that this residual DNS path is enough to build a full
|
|
43
|
+
* covert command-and-control and data-exfiltration channel out of a
|
|
44
|
+
* "sandboxed" code interpreter. AWS's own guidance in response was not a
|
|
45
|
+
* platform-level fix but a documentation update recommending `VPC` mode
|
|
46
|
+
* plus Route 53 Resolver DNS Firewall for customers who need real
|
|
47
|
+
* isolation. This adapter encodes that recommendation as the type-level
|
|
48
|
+
* default: constructing a runtime with `network` omitted, or with `mode`
|
|
49
|
+
* omitted inside it, resolves to `VPC` and requires `vpc` details, because
|
|
50
|
+
* there is no safe subnet/security-group default to invent. Reaching
|
|
51
|
+
* `SANDBOX` (or `PUBLIC`) requires spelling out `mode` explicitly, and doing
|
|
52
|
+
* so logs a warning that names the hazard.
|
|
53
|
+
*/
|
|
54
|
+
export type AgentCoreNetworkConfig = {
|
|
55
|
+
mode?: "VPC";
|
|
56
|
+
vpc: AgentCoreVpcConfig;
|
|
57
|
+
} | {
|
|
58
|
+
mode: "SANDBOX";
|
|
59
|
+
} | {
|
|
60
|
+
mode: "PUBLIC";
|
|
61
|
+
};
|
|
62
|
+
export interface AgentCoreVpcConfig {
|
|
63
|
+
/** At least one subnet the code interpreter's ENIs are placed in. */
|
|
64
|
+
subnetIds: readonly string[];
|
|
65
|
+
/** At least one security group applied to those ENIs. */
|
|
66
|
+
securityGroupIds: readonly string[];
|
|
67
|
+
/**
|
|
68
|
+
* Require traffic to Amazon S3 to stay on the service's VPC endpoint
|
|
69
|
+
* rather than transiting the public internet. Defaults to the provider's
|
|
70
|
+
* own default when omitted (not asserted here, since that default is not
|
|
71
|
+
* independently verified).
|
|
72
|
+
*/
|
|
73
|
+
requireServiceS3Endpoint?: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Identifies which code interpreter *environment* a session runs against.
|
|
77
|
+
*
|
|
78
|
+
* - `system`: the AWS-managed default environment (`aws.codeinterpreter.v1`).
|
|
79
|
+
* It accepts no execution role and no network configuration of its own —
|
|
80
|
+
* those are exclusively properties of a *custom* code interpreter — so
|
|
81
|
+
* this adapter's VPC-default and sandbox-mode-warning logic does not
|
|
82
|
+
* apply to it. Use it only for workloads with no S3/network requirements.
|
|
83
|
+
* - `owned`: a custom code interpreter this runtime creates (once, lazily,
|
|
84
|
+
* cached for the life of the runtime instance) and every session it
|
|
85
|
+
* starts runs against. This is the path that carries `network` and
|
|
86
|
+
* `executionRoleArn`, and the one this adapter is built around.
|
|
87
|
+
*/
|
|
88
|
+
export type AgentCoreInterpreterSource = {
|
|
89
|
+
type: "system";
|
|
90
|
+
} | {
|
|
91
|
+
type: "owned";
|
|
92
|
+
/**
|
|
93
|
+
* Deterministic name for the owned code interpreter. Fixed rather than
|
|
94
|
+
* randomly suffixed so a fresh process can rediscover and reuse the
|
|
95
|
+
* same environment (via `GetCodeInterpreter`) instead of creating a new
|
|
96
|
+
* one on every restart — AgentCore names must be unique per account and
|
|
97
|
+
* match `[a-zA-Z][a-zA-Z0-9_]{0,47}`.
|
|
98
|
+
*/
|
|
99
|
+
name: string;
|
|
100
|
+
description?: string;
|
|
101
|
+
/**
|
|
102
|
+
* IAM role the code interpreter assumes to reach AWS services from
|
|
103
|
+
* inside a session — required for the S3 large-file path (uploads over
|
|
104
|
+
* the 100 MB inline limit, up to 5 GB) documented at
|
|
105
|
+
* https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/code-interpreter-s3-integration.html.
|
|
106
|
+
* The adapter does not create this role: provisioning it (trust policy
|
|
107
|
+
* for `bedrock-agentcore.amazonaws.com`, `s3:GetObject`/`s3:PutObject`
|
|
108
|
+
* scoped to the target bucket/prefix) is the caller's or operator's
|
|
109
|
+
* responsibility, same as `namePrefix` is for other providers' identity
|
|
110
|
+
* scoping.
|
|
111
|
+
*/
|
|
112
|
+
executionRoleArn?: string;
|
|
113
|
+
network: AgentCoreNetworkConfig;
|
|
114
|
+
tags?: Readonly<Record<string, string>>;
|
|
115
|
+
};
|
|
116
|
+
export interface AgentCoreRuntimeOptions {
|
|
117
|
+
credentials: AgentCoreCredentials;
|
|
118
|
+
region: string;
|
|
119
|
+
interpreter: AgentCoreInterpreterSource;
|
|
120
|
+
/**
|
|
121
|
+
* Home directory sessions boot into. Required because no default is
|
|
122
|
+
* correct for every language runtime the code interpreter selects.
|
|
123
|
+
*/
|
|
124
|
+
defaultHomeDir: string;
|
|
125
|
+
/**
|
|
126
|
+
* Wall-clock lifetime of a session in seconds. AgentCore defaults to 900
|
|
127
|
+
* (15 minutes) and caps at 28,800 (8 hours) when omitted. Set explicitly
|
|
128
|
+
* per `launch()` via `LaunchOptions.createTimeoutSeconds`, which takes
|
|
129
|
+
* precedence when supplied.
|
|
130
|
+
*/
|
|
131
|
+
sessionTimeoutSeconds?: number;
|
|
132
|
+
/**
|
|
133
|
+
* Default environment variables inherited by every command. AgentCore has
|
|
134
|
+
* no native per-command env parameter (see `runtime.ts`), so these are
|
|
135
|
+
* applied by shell-prefixing each invocation.
|
|
136
|
+
*/
|
|
137
|
+
env?: Readonly<Record<string, string>>;
|
|
138
|
+
/** Fallback per-request deadline for operations without a specific one. */
|
|
139
|
+
requestTimeoutMs?: number;
|
|
140
|
+
/** Total deadline for creating (or discovering) the owned code interpreter. */
|
|
141
|
+
createInterpreterTimeoutMs?: number;
|
|
142
|
+
/** Total deadline for starting a session. */
|
|
143
|
+
launchTimeoutMs?: number;
|
|
144
|
+
/** Total deadline for a lookup (`GetCodeInterpreterSession`). */
|
|
145
|
+
lookupTimeoutMs?: number;
|
|
146
|
+
/** Default total deadline for a command when the caller supplies none. */
|
|
147
|
+
execTimeoutMs?: number;
|
|
148
|
+
/** Total deadline for a single file upload or download. */
|
|
149
|
+
fileTimeoutMs?: number;
|
|
150
|
+
/** Total deadline for stopping a session (destroy). */
|
|
151
|
+
destroyTimeoutMs?: number;
|
|
152
|
+
}
|
|
153
|
+
export declare function isStaticCredentials(credentials: AgentCoreCredentials): credentials is Extract<AgentCoreCredentials, {
|
|
154
|
+
type: "static";
|
|
155
|
+
}>;
|
|
156
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/agentcore/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,sBAAsB,GAC9B;IAAE,IAAI,CAAC,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,kBAAkB,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,yDAAyD;IACzD,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IACE,IAAI,EAAE,OAAO,CAAC;IACd;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,sBAAsB,CAAC;IAChC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzC,CAAC;AAEN,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,oBAAoB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,0BAA0B,CAAC;IACxC;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IASvC,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,oBAAoB,GAChC,WAAW,IAAI,OAAO,CAAC,oBAAoB,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAElE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK-free configuration for the AWS Bedrock AgentCore Code Interpreter adapter.
|
|
3
|
+
*
|
|
4
|
+
* Nothing in this module imports `@aws-sdk/client-bedrock-agentcore` or
|
|
5
|
+
* `@aws-sdk/client-bedrock-agentcore-control`. Consumers can construct and
|
|
6
|
+
* type-check a configuration without either optional peer dependency
|
|
7
|
+
* installed.
|
|
8
|
+
*/
|
|
9
|
+
export function isStaticCredentials(credentials) {
|
|
10
|
+
return credentials.type === "static";
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/agentcore/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2JH,MAAM,UAAU,mBAAmB,CACjC,WAAiC;IAEjC,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import type { AgentCoreCredentials } from "../config.js";
|
|
2
|
+
/**
|
|
3
|
+
* The vendor SDK boundary.
|
|
4
|
+
*
|
|
5
|
+
* This is the only module in the package that imports
|
|
6
|
+
* `@aws-sdk/client-bedrock-agentcore` or
|
|
7
|
+
* `@aws-sdk/client-bedrock-agentcore-control`, and both imports are dynamic
|
|
8
|
+
* so the dependency stays genuinely optional. Everything above this file
|
|
9
|
+
* talks to the structural `*Like` interfaces below, which is what makes the
|
|
10
|
+
* adapter testable without either SDK installed and pinnable to one version.
|
|
11
|
+
*
|
|
12
|
+
* AWS splits this surface across two services on purpose: the control plane
|
|
13
|
+
* (`bedrock-agentcore-control`) manages the code interpreter *resource*
|
|
14
|
+
* (create/get/delete/list), and the data plane (`bedrock-agentcore`) manages
|
|
15
|
+
* *sessions* against that resource (start/get/stop/list/invoke). This
|
|
16
|
+
* module keeps that split rather than flattening it, because the two planes
|
|
17
|
+
* have different quotas, different endpoints, and — relevant to the
|
|
18
|
+
* idle-billing question this adapter exists partly to answer — different
|
|
19
|
+
* billing meters.
|
|
20
|
+
*/
|
|
21
|
+
export type AgentCoreInterpreterStatus = "CREATING" | "CREATE_FAILED" | "READY" | "DELETING" | "DELETE_FAILED" | "DELETED" | (string & {});
|
|
22
|
+
/** Per `GetCodeInterpreterSession`'s documented `Valid Values`. */
|
|
23
|
+
export type AgentCoreSessionStatus = "READY" | "TERMINATED" | (string & {});
|
|
24
|
+
export type AgentCoreNetworkMode = "VPC" | "SANDBOX" | "PUBLIC";
|
|
25
|
+
export interface AgentCoreVpcConfigParams {
|
|
26
|
+
subnets: string[];
|
|
27
|
+
securityGroups: string[];
|
|
28
|
+
requireServiceS3Endpoint?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface AgentCoreNetworkConfigParams {
|
|
31
|
+
networkMode: AgentCoreNetworkMode;
|
|
32
|
+
vpcConfig?: AgentCoreVpcConfigParams;
|
|
33
|
+
}
|
|
34
|
+
export interface AgentCoreCreateInterpreterParams {
|
|
35
|
+
name: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
executionRoleArn?: string;
|
|
38
|
+
networkConfiguration: AgentCoreNetworkConfigParams;
|
|
39
|
+
tags?: Record<string, string>;
|
|
40
|
+
clientToken?: string;
|
|
41
|
+
abortSignal?: AbortSignal;
|
|
42
|
+
}
|
|
43
|
+
export interface AgentCoreCreateInterpreterResult {
|
|
44
|
+
codeInterpreterArn: string;
|
|
45
|
+
codeInterpreterId: string;
|
|
46
|
+
createdAt?: Date;
|
|
47
|
+
status: AgentCoreInterpreterStatus;
|
|
48
|
+
}
|
|
49
|
+
export interface AgentCoreGetInterpreterResult {
|
|
50
|
+
codeInterpreterId: string;
|
|
51
|
+
codeInterpreterArn?: string;
|
|
52
|
+
status: AgentCoreInterpreterStatus;
|
|
53
|
+
executionRoleArn?: string;
|
|
54
|
+
networkConfiguration?: AgentCoreNetworkConfigParams;
|
|
55
|
+
createdAt?: Date;
|
|
56
|
+
lastUpdatedAt?: Date;
|
|
57
|
+
}
|
|
58
|
+
export interface AgentCoreControlApiLike {
|
|
59
|
+
createCodeInterpreter(params: AgentCoreCreateInterpreterParams): Promise<AgentCoreCreateInterpreterResult>;
|
|
60
|
+
getCodeInterpreter(params: {
|
|
61
|
+
codeInterpreterId: string;
|
|
62
|
+
abortSignal?: AbortSignal;
|
|
63
|
+
}): Promise<AgentCoreGetInterpreterResult>;
|
|
64
|
+
deleteCodeInterpreter(params: {
|
|
65
|
+
codeInterpreterId: string;
|
|
66
|
+
clientToken?: string;
|
|
67
|
+
abortSignal?: AbortSignal;
|
|
68
|
+
}): Promise<{
|
|
69
|
+
status: AgentCoreInterpreterStatus;
|
|
70
|
+
}>;
|
|
71
|
+
listCodeInterpreters(params: {
|
|
72
|
+
maxResults?: number;
|
|
73
|
+
nextToken?: string;
|
|
74
|
+
abortSignal?: AbortSignal;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
items: Array<{
|
|
77
|
+
codeInterpreterId: string;
|
|
78
|
+
name?: string;
|
|
79
|
+
status?: AgentCoreInterpreterStatus;
|
|
80
|
+
}>;
|
|
81
|
+
nextToken?: string;
|
|
82
|
+
}>;
|
|
83
|
+
}
|
|
84
|
+
export interface AgentCoreStartSessionParams {
|
|
85
|
+
codeInterpreterIdentifier: string;
|
|
86
|
+
name?: string;
|
|
87
|
+
sessionTimeoutSeconds?: number;
|
|
88
|
+
clientToken?: string;
|
|
89
|
+
abortSignal?: AbortSignal;
|
|
90
|
+
}
|
|
91
|
+
export interface AgentCoreStartSessionResult {
|
|
92
|
+
codeInterpreterIdentifier: string;
|
|
93
|
+
sessionId: string;
|
|
94
|
+
createdAt?: Date;
|
|
95
|
+
}
|
|
96
|
+
export interface AgentCoreGetSessionResult {
|
|
97
|
+
codeInterpreterIdentifier: string;
|
|
98
|
+
sessionId: string;
|
|
99
|
+
name?: string;
|
|
100
|
+
status: AgentCoreSessionStatus;
|
|
101
|
+
sessionTimeoutSeconds?: number;
|
|
102
|
+
createdAt?: Date;
|
|
103
|
+
}
|
|
104
|
+
export interface AgentCoreInvokeContentItem {
|
|
105
|
+
type: string;
|
|
106
|
+
text?: string;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Result of one `InvokeCodeInterpreter` call.
|
|
110
|
+
*
|
|
111
|
+
* `structuredContent` is populated for `executeCode`/`executeCommand`
|
|
112
|
+
* (`stdout`/`stderr`/`exitCode`/`executionTime`, per the AWS Strands/
|
|
113
|
+
* LangChain integration examples); other actions (`writeFiles`,
|
|
114
|
+
* `listFiles`) report only `content`/`isError`.
|
|
115
|
+
*/
|
|
116
|
+
export interface AgentCoreInvokeResult {
|
|
117
|
+
/**
|
|
118
|
+
* Optional in the vendor type (`CodeInterpreterResult.isError?: boolean`),
|
|
119
|
+
* not just here — an absent value means "not reported", and callers treat
|
|
120
|
+
* it as falsy rather than assuming success.
|
|
121
|
+
*/
|
|
122
|
+
isError?: boolean;
|
|
123
|
+
content: AgentCoreInvokeContentItem[];
|
|
124
|
+
structuredContent?: {
|
|
125
|
+
stdout?: string;
|
|
126
|
+
stderr?: string;
|
|
127
|
+
exitCode?: number;
|
|
128
|
+
executionTime?: number;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export interface AgentCoreInvokeParams {
|
|
132
|
+
codeInterpreterIdentifier: string;
|
|
133
|
+
sessionId: string;
|
|
134
|
+
/** Tool/action name: `executeCommand`, `executeCode`, `writeFiles`, `listFiles`, ... */
|
|
135
|
+
name: string;
|
|
136
|
+
arguments: Record<string, unknown>;
|
|
137
|
+
abortSignal?: AbortSignal;
|
|
138
|
+
}
|
|
139
|
+
export interface AgentCoreDataApiLike {
|
|
140
|
+
startSession(params: AgentCoreStartSessionParams): Promise<AgentCoreStartSessionResult>;
|
|
141
|
+
getSession(params: {
|
|
142
|
+
codeInterpreterIdentifier: string;
|
|
143
|
+
sessionId: string;
|
|
144
|
+
abortSignal?: AbortSignal;
|
|
145
|
+
}): Promise<AgentCoreGetSessionResult>;
|
|
146
|
+
stopSession(params: {
|
|
147
|
+
codeInterpreterIdentifier: string;
|
|
148
|
+
sessionId: string;
|
|
149
|
+
abortSignal?: AbortSignal;
|
|
150
|
+
}): Promise<void>;
|
|
151
|
+
invoke(params: AgentCoreInvokeParams): Promise<AgentCoreInvokeResult>;
|
|
152
|
+
}
|
|
153
|
+
export interface AgentCoreApi {
|
|
154
|
+
control: AgentCoreControlApiLike;
|
|
155
|
+
data: AgentCoreDataApiLike;
|
|
156
|
+
}
|
|
157
|
+
export type AgentCoreApiFactory = () => Promise<AgentCoreApi> | AgentCoreApi;
|
|
158
|
+
/**
|
|
159
|
+
* True when the provider reports the named resource (interpreter or
|
|
160
|
+
* session) as absent.
|
|
161
|
+
*
|
|
162
|
+
* Delete verification needs to tell "gone" apart from "the lookup failed";
|
|
163
|
+
* treating a transport error as absence is how a leaked resource gets
|
|
164
|
+
* reported as cleaned up.
|
|
165
|
+
*/
|
|
166
|
+
export declare function isAgentCoreNotFoundError(error: unknown): boolean;
|
|
167
|
+
/**
|
|
168
|
+
* The official clients, bound to injected credentials and region.
|
|
169
|
+
*
|
|
170
|
+
* Credentials are resolved exactly once here, from the explicit
|
|
171
|
+
* `AgentCoreCredentials` union — never from ambient environment variables —
|
|
172
|
+
* except when the caller has explicitly opted into `{ type: "default-chain" }`,
|
|
173
|
+
* in which case the AWS SDK's own resolution is exactly what was asked for.
|
|
174
|
+
*
|
|
175
|
+
* Each vendor result is assigned **through** the structural type above
|
|
176
|
+
* rather than cast, so a signature change in the vendor SDK breaks the build
|
|
177
|
+
* here, in the one file that owns the boundary, instead of surfacing later
|
|
178
|
+
* as a runtime failure against a live session.
|
|
179
|
+
*/
|
|
180
|
+
export declare function createOfficialAgentCoreApi(credentials: AgentCoreCredentials, region: string): Promise<AgentCoreApi>;
|
|
181
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../src/agentcore/internal/sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* True when the provider reports the named resource (interpreter or
|
|
3
|
+
* session) as absent.
|
|
4
|
+
*
|
|
5
|
+
* Delete verification needs to tell "gone" apart from "the lookup failed";
|
|
6
|
+
* treating a transport error as absence is how a leaked resource gets
|
|
7
|
+
* reported as cleaned up.
|
|
8
|
+
*/
|
|
9
|
+
export function isAgentCoreNotFoundError(error) {
|
|
10
|
+
if (!error || typeof error !== "object") {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const name = error.name;
|
|
14
|
+
if (name === "ResourceNotFoundException") {
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
const status = error.$metadata
|
|
18
|
+
?.httpStatusCode;
|
|
19
|
+
return status === 404;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The official clients, bound to injected credentials and region.
|
|
23
|
+
*
|
|
24
|
+
* Credentials are resolved exactly once here, from the explicit
|
|
25
|
+
* `AgentCoreCredentials` union — never from ambient environment variables —
|
|
26
|
+
* except when the caller has explicitly opted into `{ type: "default-chain" }`,
|
|
27
|
+
* in which case the AWS SDK's own resolution is exactly what was asked for.
|
|
28
|
+
*
|
|
29
|
+
* Each vendor result is assigned **through** the structural type above
|
|
30
|
+
* rather than cast, so a signature change in the vendor SDK breaks the build
|
|
31
|
+
* here, in the one file that owns the boundary, instead of surfacing later
|
|
32
|
+
* as a runtime failure against a live session.
|
|
33
|
+
*/
|
|
34
|
+
export async function createOfficialAgentCoreApi(credentials, region) {
|
|
35
|
+
const [{ BedrockAgentCoreControlClient, CreateCodeInterpreterCommand, GetCodeInterpreterCommand, DeleteCodeInterpreterCommand, ListCodeInterpretersCommand }, { BedrockAgentCoreClient, StartCodeInterpreterSessionCommand, GetCodeInterpreterSessionCommand, StopCodeInterpreterSessionCommand, InvokeCodeInterpreterCommand }] = await Promise.all([
|
|
36
|
+
import("@aws-sdk/client-bedrock-agentcore-control"),
|
|
37
|
+
import("@aws-sdk/client-bedrock-agentcore"),
|
|
38
|
+
]);
|
|
39
|
+
const clientConfig = {
|
|
40
|
+
region,
|
|
41
|
+
...(credentials.type === "static"
|
|
42
|
+
? {
|
|
43
|
+
credentials: {
|
|
44
|
+
accessKeyId: credentials.accessKeyId,
|
|
45
|
+
secretAccessKey: credentials.secretAccessKey,
|
|
46
|
+
...(credentials.sessionToken
|
|
47
|
+
? { sessionToken: credentials.sessionToken }
|
|
48
|
+
: {}),
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
: {}),
|
|
52
|
+
};
|
|
53
|
+
const controlClient = new BedrockAgentCoreControlClient(clientConfig);
|
|
54
|
+
const dataClient = new BedrockAgentCoreClient(clientConfig);
|
|
55
|
+
const control = {
|
|
56
|
+
createCodeInterpreter: async (params) => {
|
|
57
|
+
const res = await controlClient.send(new CreateCodeInterpreterCommand({
|
|
58
|
+
name: params.name,
|
|
59
|
+
...(params.description ? { description: params.description } : {}),
|
|
60
|
+
...(params.executionRoleArn
|
|
61
|
+
? { executionRoleArn: params.executionRoleArn }
|
|
62
|
+
: {}),
|
|
63
|
+
networkConfiguration: params.networkConfiguration,
|
|
64
|
+
...(params.tags ? { tags: params.tags } : {}),
|
|
65
|
+
...(params.clientToken ? { clientToken: params.clientToken } : {}),
|
|
66
|
+
}), { abortSignal: params.abortSignal });
|
|
67
|
+
if (!res.codeInterpreterId || !res.status) {
|
|
68
|
+
throw new Error("AgentCore CreateCodeInterpreter response is missing required fields");
|
|
69
|
+
}
|
|
70
|
+
const checked = {
|
|
71
|
+
codeInterpreterArn: res.codeInterpreterArn ?? "",
|
|
72
|
+
codeInterpreterId: res.codeInterpreterId,
|
|
73
|
+
...(res.createdAt ? { createdAt: new Date(res.createdAt) } : {}),
|
|
74
|
+
status: res.status,
|
|
75
|
+
};
|
|
76
|
+
return checked;
|
|
77
|
+
},
|
|
78
|
+
getCodeInterpreter: async (params) => {
|
|
79
|
+
const res = await controlClient.send(new GetCodeInterpreterCommand({ codeInterpreterId: params.codeInterpreterId }), { abortSignal: params.abortSignal });
|
|
80
|
+
if (!res.codeInterpreterId || !res.status) {
|
|
81
|
+
throw new Error("AgentCore GetCodeInterpreter response is missing required fields");
|
|
82
|
+
}
|
|
83
|
+
const checked = {
|
|
84
|
+
codeInterpreterId: res.codeInterpreterId,
|
|
85
|
+
...(res.codeInterpreterArn ? { codeInterpreterArn: res.codeInterpreterArn } : {}),
|
|
86
|
+
status: res.status,
|
|
87
|
+
...(res.executionRoleArn ? { executionRoleArn: res.executionRoleArn } : {}),
|
|
88
|
+
...(res.networkConfiguration
|
|
89
|
+
? { networkConfiguration: res.networkConfiguration }
|
|
90
|
+
: {}),
|
|
91
|
+
...(res.createdAt ? { createdAt: new Date(res.createdAt) } : {}),
|
|
92
|
+
...(res.lastUpdatedAt ? { lastUpdatedAt: new Date(res.lastUpdatedAt) } : {}),
|
|
93
|
+
};
|
|
94
|
+
return checked;
|
|
95
|
+
},
|
|
96
|
+
deleteCodeInterpreter: async (params) => {
|
|
97
|
+
const res = await controlClient.send(new DeleteCodeInterpreterCommand({
|
|
98
|
+
codeInterpreterId: params.codeInterpreterId,
|
|
99
|
+
...(params.clientToken ? { clientToken: params.clientToken } : {}),
|
|
100
|
+
}), { abortSignal: params.abortSignal });
|
|
101
|
+
return { status: res.status ?? "DELETING" };
|
|
102
|
+
},
|
|
103
|
+
listCodeInterpreters: async (params) => {
|
|
104
|
+
const res = await controlClient.send(new ListCodeInterpretersCommand({
|
|
105
|
+
...(params.maxResults ? { maxResults: params.maxResults } : {}),
|
|
106
|
+
...(params.nextToken ? { nextToken: params.nextToken } : {}),
|
|
107
|
+
}), { abortSignal: params.abortSignal });
|
|
108
|
+
const summaries = res.codeInterpreterSummaries ?? [];
|
|
109
|
+
return {
|
|
110
|
+
items: summaries.map((item) => ({
|
|
111
|
+
codeInterpreterId: item.codeInterpreterId ?? "",
|
|
112
|
+
...(item.name ? { name: item.name } : {}),
|
|
113
|
+
...(item.status ? { status: item.status } : {}),
|
|
114
|
+
})),
|
|
115
|
+
...(res.nextToken ? { nextToken: res.nextToken } : {}),
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
const data = {
|
|
120
|
+
startSession: async (params) => {
|
|
121
|
+
const res = await dataClient.send(new StartCodeInterpreterSessionCommand({
|
|
122
|
+
codeInterpreterIdentifier: params.codeInterpreterIdentifier,
|
|
123
|
+
...(params.name ? { name: params.name } : {}),
|
|
124
|
+
...(params.sessionTimeoutSeconds
|
|
125
|
+
? { sessionTimeoutSeconds: params.sessionTimeoutSeconds }
|
|
126
|
+
: {}),
|
|
127
|
+
...(params.clientToken ? { clientToken: params.clientToken } : {}),
|
|
128
|
+
}), { abortSignal: params.abortSignal });
|
|
129
|
+
if (!res.sessionId || !res.codeInterpreterIdentifier) {
|
|
130
|
+
throw new Error("AgentCore StartCodeInterpreterSession response is missing required fields");
|
|
131
|
+
}
|
|
132
|
+
const checked = {
|
|
133
|
+
codeInterpreterIdentifier: res.codeInterpreterIdentifier,
|
|
134
|
+
sessionId: res.sessionId,
|
|
135
|
+
...(res.createdAt ? { createdAt: new Date(res.createdAt) } : {}),
|
|
136
|
+
};
|
|
137
|
+
return checked;
|
|
138
|
+
},
|
|
139
|
+
getSession: async (params) => {
|
|
140
|
+
const res = await dataClient.send(new GetCodeInterpreterSessionCommand({
|
|
141
|
+
codeInterpreterIdentifier: params.codeInterpreterIdentifier,
|
|
142
|
+
sessionId: params.sessionId,
|
|
143
|
+
}), { abortSignal: params.abortSignal });
|
|
144
|
+
if (!res.sessionId || !res.codeInterpreterIdentifier || !res.status) {
|
|
145
|
+
throw new Error("AgentCore GetCodeInterpreterSession response is missing required fields");
|
|
146
|
+
}
|
|
147
|
+
const checked = {
|
|
148
|
+
codeInterpreterIdentifier: res.codeInterpreterIdentifier,
|
|
149
|
+
sessionId: res.sessionId,
|
|
150
|
+
...(res.name ? { name: res.name } : {}),
|
|
151
|
+
status: res.status,
|
|
152
|
+
...(res.sessionTimeoutSeconds
|
|
153
|
+
? { sessionTimeoutSeconds: res.sessionTimeoutSeconds }
|
|
154
|
+
: {}),
|
|
155
|
+
...(res.createdAt ? { createdAt: new Date(res.createdAt) } : {}),
|
|
156
|
+
};
|
|
157
|
+
return checked;
|
|
158
|
+
},
|
|
159
|
+
stopSession: async (params) => {
|
|
160
|
+
await dataClient.send(new StopCodeInterpreterSessionCommand({
|
|
161
|
+
codeInterpreterIdentifier: params.codeInterpreterIdentifier,
|
|
162
|
+
sessionId: params.sessionId,
|
|
163
|
+
}), { abortSignal: params.abortSignal });
|
|
164
|
+
},
|
|
165
|
+
invoke: async (params) => {
|
|
166
|
+
const res = await dataClient.send(new InvokeCodeInterpreterCommand({
|
|
167
|
+
codeInterpreterIdentifier: params.codeInterpreterIdentifier,
|
|
168
|
+
sessionId: params.sessionId,
|
|
169
|
+
// `ToolName` is a closed enum in the vendor types (no `(string &
|
|
170
|
+
// {})` escape hatch), but `AgentCoreInvokeParams.name` stays a
|
|
171
|
+
// plain `string` on this side of the boundary so fakes in tests
|
|
172
|
+
// aren't forced to import the vendor enum. The cast lives here,
|
|
173
|
+
// at the one place that constructs the vendor command.
|
|
174
|
+
name: params.name,
|
|
175
|
+
arguments: params.arguments,
|
|
176
|
+
}), { abortSignal: params.abortSignal });
|
|
177
|
+
return collectInvokeStream(res.stream);
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
return { control, data };
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* `InvokeCodeInterpreter` returns an AWS SDK event stream whose events are a
|
|
184
|
+
* discriminated union: a success `result` member, or one of several
|
|
185
|
+
* exception members (`accessDeniedException`, `conflictException`,
|
|
186
|
+
* `internalServerException`, `resourceNotFoundException`,
|
|
187
|
+
* `serviceQuotaExceededException`, `throttlingException`,
|
|
188
|
+
* `validationException`). The AWS SDK is expected to throw these as
|
|
189
|
+
* rejected promises rather than deliver them as stream data, but the vendor
|
|
190
|
+
* type models them as reachable stream events regardless — this drains the
|
|
191
|
+
* whole stream (so the underlying HTTP/2 stream is not left half-read),
|
|
192
|
+
* surfaces any exception member it finds explicitly rather than silently
|
|
193
|
+
* skipping it, and keeps the last `result` event otherwise, which is where
|
|
194
|
+
* a multi-chunk response's final `structuredContent` lands.
|
|
195
|
+
*/
|
|
196
|
+
async function collectInvokeStream(
|
|
197
|
+
// Typed loosely and inspected defensively on purpose: the vendor union
|
|
198
|
+
// (`CodeInterpreterStreamOutput`) has no index signature, and this
|
|
199
|
+
// function's job is precisely to duck-type across its members without
|
|
200
|
+
// depending on which one showed up.
|
|
201
|
+
stream) {
|
|
202
|
+
let last;
|
|
203
|
+
if (stream) {
|
|
204
|
+
for await (const raw of stream) {
|
|
205
|
+
const event = raw;
|
|
206
|
+
if (event.result) {
|
|
207
|
+
last = event.result;
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const exceptionKey = Object.keys(event).find((key) => key !== "$unknown" && event[key] !== undefined);
|
|
211
|
+
if (exceptionKey) {
|
|
212
|
+
const detail = event[exceptionKey];
|
|
213
|
+
throw new Error(`AgentCore InvokeCodeInterpreter stream reported ${exceptionKey}: `
|
|
214
|
+
+ `${detail?.message ?? "(no message)"}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (!last) {
|
|
219
|
+
throw new Error("AgentCore InvokeCodeInterpreter returned no result event");
|
|
220
|
+
}
|
|
221
|
+
return last;
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/agentcore/internal/sdk.ts"],"names":[],"mappings":"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"}
|