@assemblyline-agents/s3 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 OpenEve contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # @assemblyline-agents/s3
2
+
3
+ Official Assembly Line S3-compatible blob-storage plugin.
4
+
5
+ It implements the runtime's blob adapter interface against any S3-compatible object store, giving agents durable storage for attachments and other binary artifacts. It also serves as the base for provider-specific wrappers such as `@assemblyline-agents/r2` (Cloudflare R2).
6
+
7
+ ## Install
8
+
9
+ ```sh
10
+ npm install @assemblyline-agents/s3
11
+ ```
12
+
13
+ ## Part of Assembly Line
14
+
15
+ This package is part of [Assembly Line](https://github.com/jasonbadeaux/openeve), a vendor-neutral, filesystem-first framework for durable AI agents. See the developer documentation in [docs/developers/](https://github.com/jasonbadeaux/openeve/tree/main/docs/developers) for setup, agent authoring, and deployment guides.
16
+
17
+ ## License
18
+
19
+ MIT
@@ -0,0 +1,92 @@
1
+ import { type AdapterDefinition, type AdapterProviderMetadata, type JsonObject, type ProviderModule } from "@assemblyline-agents/core";
2
+ import type { BlobAdapter, BlobPutOptions, BlobRecord } from "@assemblyline-agents/runtime";
3
+ /** Metadata owned by this package; the core registry mirrors it as an offline default. */
4
+ export declare const S3_BLOB_PROVIDER_METADATA: AdapterProviderMetadata;
5
+ /** R2 metadata lives here because the shared R2 blob helpers do; @assemblyline-agents/r2 registers it. */
6
+ export declare const R2_BLOB_PROVIDER_METADATA: AdapterProviderMetadata;
7
+ export declare const openeveProvider: ProviderModule;
8
+ export interface S3Adapter extends AdapterDefinition {
9
+ kind: "s3";
10
+ }
11
+ export interface R2Adapter extends AdapterDefinition {
12
+ kind: "r2";
13
+ }
14
+ export interface S3ObjectStoreLike {
15
+ put(key: string, value: Uint8Array | string, options?: {
16
+ contentType?: string;
17
+ }): Promise<unknown>;
18
+ get(key: string): Promise<{
19
+ arrayBuffer(): Promise<ArrayBuffer>;
20
+ } | null>;
21
+ }
22
+ export interface S3BlobOptions {
23
+ prefix?: string;
24
+ publicBaseUrl?: string;
25
+ uriScheme?: string;
26
+ }
27
+ export interface S3FetchStoreOptions {
28
+ endpoint: string;
29
+ bucket: string;
30
+ region: string;
31
+ accessKeyId: string;
32
+ secretAccessKey: string;
33
+ forcePathStyle?: boolean;
34
+ fetch?: typeof fetch;
35
+ }
36
+ export interface S3Environment {
37
+ S3_BUCKET?: string;
38
+ S3_REGION?: string;
39
+ S3_ACCESS_KEY_ID?: string;
40
+ S3_SECRET_ACCESS_KEY?: string;
41
+ S3_ENDPOINT?: string;
42
+ S3_FORCE_PATH_STYLE?: string;
43
+ S3_PREFIX?: string;
44
+ S3_PUBLIC_BASE_URL?: string;
45
+ R2_ACCOUNT_ID?: string;
46
+ R2_ACCESS_KEY_ID?: string;
47
+ R2_SECRET_ACCESS_KEY?: string;
48
+ R2_BUCKET?: string;
49
+ R2_PREFIX?: string;
50
+ R2_PUBLIC_BASE_URL?: string;
51
+ }
52
+ export declare function s3Blob(options?: JsonObject): S3Adapter;
53
+ export declare function awsS3Blob(options?: JsonObject): S3Adapter;
54
+ export declare function minioBlob(options?: JsonObject): S3Adapter;
55
+ export declare function r2Blob(options?: JsonObject): R2Adapter;
56
+ export declare class S3BlobAdapter implements BlobAdapter {
57
+ private readonly store;
58
+ private readonly options;
59
+ constructor(store: S3ObjectStoreLike, options?: S3BlobOptions);
60
+ put(key: string, value: string | Uint8Array, contentTypeOrOptions?: string | BlobPutOptions): Promise<BlobRecord>;
61
+ get(key: string): Promise<Uint8Array | undefined>;
62
+ private key;
63
+ private uri;
64
+ }
65
+ export declare class InMemoryS3ObjectStore implements S3ObjectStoreLike {
66
+ private readonly objects;
67
+ put(key: string, value: Uint8Array | string): Promise<void>;
68
+ get(key: string): Promise<{
69
+ arrayBuffer(): Promise<ArrayBuffer>;
70
+ } | null>;
71
+ }
72
+ export declare class S3FetchObjectStore implements S3ObjectStoreLike {
73
+ private readonly options;
74
+ constructor(options: S3FetchStoreOptions);
75
+ put(key: string, value: Uint8Array | string, options?: {
76
+ contentType?: string;
77
+ }): Promise<unknown>;
78
+ get(key: string): Promise<{
79
+ arrayBuffer(): Promise<ArrayBuffer>;
80
+ } | null>;
81
+ }
82
+ export declare function createS3ObjectStoreFromEnv(env: S3Environment, fetchImpl?: typeof fetch): S3FetchObjectStore;
83
+ export declare function createR2ObjectStoreFromEnv(env: S3Environment, fetchImpl?: typeof fetch): S3FetchObjectStore;
84
+ export declare function createS3BlobAdapterFromEnv(env: S3Environment, fetchImpl?: typeof fetch): S3BlobAdapter;
85
+ export declare function createR2BlobAdapterFromEnv(env: S3Environment, fetchImpl?: typeof fetch): S3BlobAdapter;
86
+ export declare function signedS3Fetch(options: S3FetchStoreOptions & {
87
+ method: "GET" | "PUT";
88
+ key: string;
89
+ body?: Buffer;
90
+ contentType?: string;
91
+ }): Promise<Response>;
92
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,264 @@
1
+ import { createHash, createHmac, randomUUID } from "node:crypto";
2
+ import { adapter } from "@assemblyline-agents/core";
3
+ /** Metadata owned by this package; the core registry mirrors it as an offline default. */
4
+ export const S3_BLOB_PROVIDER_METADATA = {
5
+ kind: "s3",
6
+ role: "blob",
7
+ packageName: "@assemblyline-agents/s3",
8
+ requiredEnv: ["S3_BUCKET", "S3_REGION", "S3_ACCESS_KEY_ID", "S3_SECRET_ACCESS_KEY"],
9
+ optionalEnv: ["S3_ENDPOINT", "S3_FORCE_PATH_STYLE", "S3_PREFIX", "S3_PUBLIC_BASE_URL"],
10
+ capabilities: ["blob", "attachments", "artifacts"]
11
+ };
12
+ /** R2 metadata lives here because the shared R2 blob helpers do; @assemblyline-agents/r2 registers it. */
13
+ export const R2_BLOB_PROVIDER_METADATA = {
14
+ kind: "r2",
15
+ role: "blob",
16
+ packageName: "@assemblyline-agents/r2",
17
+ requiredEnv: ["R2_ACCOUNT_ID", "R2_ACCESS_KEY_ID", "R2_SECRET_ACCESS_KEY", "R2_BUCKET"],
18
+ optionalEnv: ["R2_PREFIX", "R2_PUBLIC_BASE_URL"],
19
+ capabilities: ["blob", "attachments", "artifacts", "s3-compatible"]
20
+ };
21
+ export const openeveProvider = {
22
+ providers: [
23
+ {
24
+ metadata: S3_BLOB_PROVIDER_METADATA,
25
+ create(ctx) {
26
+ return createS3BlobAdapterFromEnv(ctx.env, ctx.fetch);
27
+ }
28
+ }
29
+ ]
30
+ };
31
+ export function s3Blob(options = {}) {
32
+ const metadata = S3_BLOB_PROVIDER_METADATA;
33
+ const definition = { ...adapter("s3", options), kind: "s3" };
34
+ if (metadata.requiredEnv)
35
+ definition.requiredEnv = metadata.requiredEnv;
36
+ if (metadata.capabilities)
37
+ definition.capabilities = metadata.capabilities;
38
+ return definition;
39
+ }
40
+ export function awsS3Blob(options = {}) {
41
+ return s3Blob({ provider: "aws", ...options });
42
+ }
43
+ export function minioBlob(options = {}) {
44
+ return s3Blob({ provider: "minio", forcePathStyle: true, ...options });
45
+ }
46
+ export function r2Blob(options = {}) {
47
+ const metadata = R2_BLOB_PROVIDER_METADATA;
48
+ const definition = { ...adapter("r2", options), kind: "r2" };
49
+ if (metadata.requiredEnv)
50
+ definition.requiredEnv = metadata.requiredEnv;
51
+ if (metadata.capabilities)
52
+ definition.capabilities = metadata.capabilities;
53
+ return definition;
54
+ }
55
+ export class S3BlobAdapter {
56
+ store;
57
+ options;
58
+ constructor(store, options = {}) {
59
+ this.store = store;
60
+ this.options = options;
61
+ }
62
+ async put(key, value, contentTypeOrOptions) {
63
+ const options = normalizeBlobPutOptions(contentTypeOrOptions);
64
+ const safeKey = this.key(key);
65
+ const bytes = typeof value === "string" ? Buffer.from(value) : Buffer.from(value);
66
+ await this.store.put(safeKey, bytes, options.contentType ? { contentType: options.contentType } : undefined);
67
+ const record = {
68
+ id: randomUUID(),
69
+ key: safeKey,
70
+ uri: this.uri(safeKey, options.visibility),
71
+ sha256: createHash("sha256").update(bytes).digest("hex"),
72
+ size: bytes.byteLength
73
+ };
74
+ if (options.contentType)
75
+ record.contentType = options.contentType;
76
+ if (options.visibility)
77
+ record.visibility = options.visibility;
78
+ return record;
79
+ }
80
+ async get(key) {
81
+ const object = await this.store.get(this.key(key));
82
+ if (!object)
83
+ return undefined;
84
+ return new Uint8Array(await object.arrayBuffer());
85
+ }
86
+ key(key) {
87
+ const normalized = key.replace(/^\/+/, "");
88
+ return this.options.prefix ? `${this.options.prefix.replace(/\/$/, "")}/${normalized}` : normalized;
89
+ }
90
+ uri(key, visibility = "private") {
91
+ if (visibility === "public" && this.options.publicBaseUrl)
92
+ return `${this.options.publicBaseUrl.replace(/\/$/, "")}/${key}`;
93
+ return `${this.options.uriScheme ?? "s3"}://${key}`;
94
+ }
95
+ }
96
+ function normalizeBlobPutOptions(contentTypeOrOptions) {
97
+ if (typeof contentTypeOrOptions === "string")
98
+ return { contentType: contentTypeOrOptions, visibility: "private" };
99
+ const options = { visibility: contentTypeOrOptions?.visibility ?? "private" };
100
+ if (contentTypeOrOptions?.contentType)
101
+ options.contentType = contentTypeOrOptions.contentType;
102
+ return options;
103
+ }
104
+ export class InMemoryS3ObjectStore {
105
+ objects = new Map();
106
+ async put(key, value) {
107
+ this.objects.set(key, typeof value === "string" ? Buffer.from(value) : Buffer.from(value));
108
+ }
109
+ async get(key) {
110
+ const value = this.objects.get(key);
111
+ if (!value)
112
+ return null;
113
+ return {
114
+ async arrayBuffer() {
115
+ const copy = new Uint8Array(value.byteLength);
116
+ copy.set(value);
117
+ return copy.buffer;
118
+ }
119
+ };
120
+ }
121
+ }
122
+ export class S3FetchObjectStore {
123
+ options;
124
+ constructor(options) {
125
+ this.options = options;
126
+ }
127
+ async put(key, value, options) {
128
+ const body = typeof value === "string" ? Buffer.from(value) : Buffer.from(value);
129
+ const request = {
130
+ method: "PUT",
131
+ ...this.options,
132
+ key,
133
+ body
134
+ };
135
+ if (options?.contentType)
136
+ request.contentType = options.contentType;
137
+ const response = await signedS3Fetch(request);
138
+ if (!response.ok)
139
+ throw new Error(`S3 put failed for ${key}: ${response.status} ${await response.text()}`);
140
+ return {};
141
+ }
142
+ async get(key) {
143
+ const response = await signedS3Fetch({
144
+ method: "GET",
145
+ ...this.options,
146
+ key
147
+ });
148
+ if (response.status === 404)
149
+ return null;
150
+ if (!response.ok)
151
+ throw new Error(`S3 get failed for ${key}: ${response.status} ${await response.text()}`);
152
+ const data = await response.arrayBuffer();
153
+ return {
154
+ async arrayBuffer() {
155
+ return data;
156
+ }
157
+ };
158
+ }
159
+ }
160
+ export function createS3ObjectStoreFromEnv(env, fetchImpl = fetch) {
161
+ const bucket = requiredEnv(env, "S3_BUCKET");
162
+ const region = requiredEnv(env, "S3_REGION");
163
+ return new S3FetchObjectStore({
164
+ endpoint: env.S3_ENDPOINT ?? `https://s3.${region}.amazonaws.com`,
165
+ bucket,
166
+ region,
167
+ accessKeyId: requiredEnv(env, "S3_ACCESS_KEY_ID"),
168
+ secretAccessKey: requiredEnv(env, "S3_SECRET_ACCESS_KEY"),
169
+ forcePathStyle: env.S3_FORCE_PATH_STYLE === "true" || env.S3_FORCE_PATH_STYLE === "1",
170
+ fetch: fetchImpl
171
+ });
172
+ }
173
+ export function createR2ObjectStoreFromEnv(env, fetchImpl = fetch) {
174
+ const accountId = requiredEnv(env, "R2_ACCOUNT_ID");
175
+ return new S3FetchObjectStore({
176
+ endpoint: `https://${accountId}.r2.cloudflarestorage.com`,
177
+ bucket: requiredEnv(env, "R2_BUCKET"),
178
+ region: "auto",
179
+ accessKeyId: requiredEnv(env, "R2_ACCESS_KEY_ID"),
180
+ secretAccessKey: requiredEnv(env, "R2_SECRET_ACCESS_KEY"),
181
+ forcePathStyle: true,
182
+ fetch: fetchImpl
183
+ });
184
+ }
185
+ export function createS3BlobAdapterFromEnv(env, fetchImpl = fetch) {
186
+ const options = {};
187
+ if (env.S3_PREFIX)
188
+ options.prefix = env.S3_PREFIX;
189
+ if (env.S3_PUBLIC_BASE_URL)
190
+ options.publicBaseUrl = env.S3_PUBLIC_BASE_URL;
191
+ return new S3BlobAdapter(createS3ObjectStoreFromEnv(env, fetchImpl), options);
192
+ }
193
+ export function createR2BlobAdapterFromEnv(env, fetchImpl = fetch) {
194
+ const options = { uriScheme: "r2" };
195
+ if (env.R2_PREFIX)
196
+ options.prefix = env.R2_PREFIX;
197
+ if (env.R2_PUBLIC_BASE_URL)
198
+ options.publicBaseUrl = env.R2_PUBLIC_BASE_URL;
199
+ return new S3BlobAdapter(createR2ObjectStoreFromEnv(env, fetchImpl), options);
200
+ }
201
+ export async function signedS3Fetch(options) {
202
+ const now = new Date();
203
+ const amzDate = now.toISOString().replace(/[:-]|\.\d{3}/g, "");
204
+ const dateStamp = amzDate.slice(0, 8);
205
+ const endpoint = new URL(options.endpoint);
206
+ const encodedKey = options.key.split("/").map(encodePathSegment).join("/");
207
+ const canonicalUri = options.forcePathStyle
208
+ ? `/${encodePathSegment(options.bucket)}/${encodedKey}`
209
+ : `/${encodedKey}`;
210
+ const host = options.forcePathStyle
211
+ ? endpoint.host
212
+ : `${options.bucket}.${endpoint.host}`;
213
+ const requestUrl = options.forcePathStyle
214
+ ? `${endpoint.origin}${canonicalUri}`
215
+ : `${endpoint.protocol}//${host}${canonicalUri}`;
216
+ const payloadHash = createHash("sha256").update(options.body ?? "").digest("hex");
217
+ const headers = {
218
+ host,
219
+ "x-amz-content-sha256": payloadHash,
220
+ "x-amz-date": amzDate
221
+ };
222
+ if (options.contentType)
223
+ headers["content-type"] = options.contentType;
224
+ const signedHeaderNames = Object.keys(headers).sort();
225
+ const canonicalHeaders = signedHeaderNames.map((name) => `${name}:${headers[name]}\n`).join("");
226
+ const signedHeaders = signedHeaderNames.join(";");
227
+ const canonicalRequest = [options.method, canonicalUri, "", canonicalHeaders, signedHeaders, payloadHash].join("\n");
228
+ const credentialScope = `${dateStamp}/${options.region}/s3/aws4_request`;
229
+ const stringToSign = [
230
+ "AWS4-HMAC-SHA256",
231
+ amzDate,
232
+ credentialScope,
233
+ createHash("sha256").update(canonicalRequest).digest("hex")
234
+ ].join("\n");
235
+ const signingKey = awsSigningKey(options.secretAccessKey, dateStamp, options.region, "s3");
236
+ headers.authorization = [
237
+ `AWS4-HMAC-SHA256 Credential=${options.accessKeyId}/${credentialScope}`,
238
+ `SignedHeaders=${signedHeaders}`,
239
+ `Signature=${createHmac("sha256", signingKey).update(stringToSign).digest("hex")}`
240
+ ].join(", ");
241
+ const requestOptions = {
242
+ method: options.method,
243
+ headers
244
+ };
245
+ if (options.body)
246
+ requestOptions.body = options.body;
247
+ return (options.fetch ?? fetch)(requestUrl, requestOptions);
248
+ }
249
+ function awsSigningKey(secretAccessKey, dateStamp, region, service) {
250
+ const dateKey = createHmac("sha256", `AWS4${secretAccessKey}`).update(dateStamp).digest();
251
+ const dateRegionKey = createHmac("sha256", dateKey).update(region).digest();
252
+ const dateRegionServiceKey = createHmac("sha256", dateRegionKey).update(service).digest();
253
+ return createHmac("sha256", dateRegionServiceKey).update("aws4_request").digest();
254
+ }
255
+ function encodePathSegment(value) {
256
+ return encodeURIComponent(value).replace(/[!'()*]/g, (character) => `%${character.charCodeAt(0).toString(16).toUpperCase()}`);
257
+ }
258
+ function requiredEnv(env, name) {
259
+ const value = env[name];
260
+ if (!value)
261
+ throw new Error(`Missing required environment variable ${name}.`);
262
+ return value;
263
+ }
264
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@assemblyline-agents/s3",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "default": "./dist/index.js"
9
+ }
10
+ },
11
+ "dependencies": {
12
+ "@assemblyline-agents/core": "0.1.0",
13
+ "@assemblyline-agents/runtime": "0.1.0"
14
+ },
15
+ "description": "Official OpenEve S3-compatible blob-storage plugin.",
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "engines": {
20
+ "node": ">=22.19.0"
21
+ },
22
+ "license": "MIT",
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/jasonbadeaux/openeve.git",
26
+ "directory": "packages/s3"
27
+ },
28
+ "bugs": {
29
+ "url": "https://github.com/jasonbadeaux/openeve/issues"
30
+ },
31
+ "homepage": "https://github.com/jasonbadeaux/openeve#readme",
32
+ "author": "OpenEve contributors",
33
+ "keywords": [
34
+ "openeve",
35
+ "ai",
36
+ "agents",
37
+ "s3",
38
+ "aws",
39
+ "blob-storage",
40
+ "plugin"
41
+ ],
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.json",
47
+ "check": "tsc -p tsconfig.json --noEmit"
48
+ }
49
+ }