@agentuity/runtime 0.0.35 → 0.0.37
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/dist/_config.d.ts +6 -0
- package/dist/_config.d.ts.map +1 -1
- package/dist/_server.d.ts +1 -1
- package/dist/_server.d.ts.map +1 -1
- package/dist/_services.d.ts +2 -0
- package/dist/_services.d.ts.map +1 -1
- package/dist/_unauthenticated.d.ts +26 -0
- package/dist/_unauthenticated.d.ts.map +1 -0
- package/dist/app.d.ts +10 -0
- package/dist/app.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/_config.ts +9 -0
- package/src/_server.ts +10 -4
- package/src/_services.ts +52 -5
- package/src/_unauthenticated.ts +126 -0
- package/src/app.ts +15 -0
package/dist/_config.d.ts
CHANGED
|
@@ -58,4 +58,10 @@ export declare function getCLIVersion(): string;
|
|
|
58
58
|
* @returns string
|
|
59
59
|
*/
|
|
60
60
|
export declare function getEnvironment(): string;
|
|
61
|
+
/**
|
|
62
|
+
* Returns true if the AGENTUITY_SDK_KEY is set
|
|
63
|
+
*
|
|
64
|
+
* @returns boolean
|
|
65
|
+
*/
|
|
66
|
+
export declare function isAuthenticated(): boolean;
|
|
61
67
|
//# sourceMappingURL=_config.d.ts.map
|
package/dist/_config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_config.d.ts","sourceRoot":"","sources":["../src/_config.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
|
1
|
+
{"version":3,"file":"_config.d.ts","sourceRoot":"","sources":["../src/_config.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|
package/dist/_server.d.ts
CHANGED
|
@@ -13,5 +13,5 @@ export declare function getTracer(): Tracer | null;
|
|
|
13
13
|
* called before the createApp is called for it to be added.
|
|
14
14
|
*/
|
|
15
15
|
export declare function addSpanProcessor(processor: SpanProcessor): void;
|
|
16
|
-
export declare const createServer: <E extends Env>(app: Hono<E>,
|
|
16
|
+
export declare const createServer: <E extends Env>(app: Hono<E>, config?: AppConfig) => Bun.Server<BunWebSocketData>;
|
|
17
17
|
//# sourceMappingURL=_server.d.ts.map
|
package/dist/_server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_server.d.ts","sourceRoot":"","sources":["../src/_server.ts"],"names":[],"mappings":"AACA,OAAO,EAKN,KAAK,MAAM,EAGX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"_server.d.ts","sourceRoot":"","sources":["../src/_server.ts"],"names":[],"mappings":"AACA,OAAO,EAKN,KAAK,MAAM,EAGX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAInE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAcvC,wBAAgB,SAAS,wCAExB;AAED,wBAAgB,MAAM,4DAErB;AAED,wBAAgB,SAAS,kBAExB;AAED,wBAAgB,SAAS,kBAExB;AAcD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,aAAa,QAExD;AA2CD,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,SAAS,iCAwJ3E,CAAC"}
|
package/dist/_services.d.ts
CHANGED
package/dist/_services.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_services.d.ts","sourceRoot":"","sources":["../src/_services.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"_services.d.ts","sourceRoot":"","sources":["../src/_services.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAsIvC,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,SAAS,QAkChD;AAGD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,GAAG,QAqBtC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { KeyValueStorage, ObjectStorage, StreamStorage, VectorStorage, DataResult, KeyValueStorageSetParams, ObjectResult, ObjectStorePutParams, CreatePublicURLParams, Stream, CreateStreamProps, ListStreamsParams, ListStreamsResponse, VectorUpsertParams, VectorUpsertResult, VectorResult, VectorSearchResultWithDocument, VectorSearchParams, VectorSearchResult } from '@agentuity/core';
|
|
2
|
+
export declare class UnauthenticatedKeyValueStorage implements KeyValueStorage {
|
|
3
|
+
get<T>(_name: string, _key: string): Promise<DataResult<T>>;
|
|
4
|
+
set<T = unknown>(_name: string, _key: string, _value: T, _params?: KeyValueStorageSetParams): Promise<void>;
|
|
5
|
+
delete(_name: string, _key: string): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
export declare class UnauthenticatedObjectStorage implements ObjectStorage {
|
|
8
|
+
get(_bucket: string, _key: string): Promise<ObjectResult>;
|
|
9
|
+
put(_bucket: string, _key: string, _data: Uint8Array | ArrayBuffer | ReadableStream, _params?: ObjectStorePutParams): Promise<void>;
|
|
10
|
+
delete(_bucket: string, _key: string): Promise<boolean>;
|
|
11
|
+
createPublicURL(_bucket: string, _key: string, _params?: CreatePublicURLParams): Promise<string>;
|
|
12
|
+
}
|
|
13
|
+
export declare class UnauthenticatedStreamStorage implements StreamStorage {
|
|
14
|
+
create(_name: string, _props?: CreateStreamProps): Promise<Stream>;
|
|
15
|
+
list(_params?: ListStreamsParams): Promise<ListStreamsResponse>;
|
|
16
|
+
delete(_id: string): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
export declare class UnauthenticatedVectorStorage implements VectorStorage {
|
|
19
|
+
upsert(_name: string, ..._documents: VectorUpsertParams[]): Promise<VectorUpsertResult[]>;
|
|
20
|
+
get<T extends Record<string, unknown> = Record<string, unknown>>(_name: string, _key: string): Promise<VectorResult<T>>;
|
|
21
|
+
getMany<T extends Record<string, unknown> = Record<string, unknown>>(_name: string, ..._keys: string[]): Promise<Map<string, VectorSearchResultWithDocument<T>>>;
|
|
22
|
+
search<T extends Record<string, unknown> = Record<string, unknown>>(_name: string, _params: VectorSearchParams<T>): Promise<VectorSearchResult<T>[]>;
|
|
23
|
+
delete(_name: string, ..._keys: string[]): Promise<number>;
|
|
24
|
+
exists(_name: string): Promise<boolean>;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=_unauthenticated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_unauthenticated.d.ts","sourceRoot":"","sources":["../src/_unauthenticated.ts"],"names":[],"mappings":"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"}
|
package/dist/app.d.ts
CHANGED
|
@@ -2,12 +2,22 @@ import { type Env as HonoEnv, Hono } from 'hono';
|
|
|
2
2
|
import { cors } from 'hono/cors';
|
|
3
3
|
import type { Logger } from './logger';
|
|
4
4
|
import { type Meter, type Tracer } from '@opentelemetry/api';
|
|
5
|
+
import { type KeyValueStorage, type ObjectStorage, type StreamStorage, type VectorStorage } from '@agentuity/core';
|
|
5
6
|
type CorsOptions = Parameters<typeof cors>[0];
|
|
6
7
|
export interface AppConfig {
|
|
7
8
|
/**
|
|
8
9
|
* Override the default cors settings
|
|
9
10
|
*/
|
|
10
11
|
cors?: CorsOptions;
|
|
12
|
+
/**
|
|
13
|
+
* Override the default services
|
|
14
|
+
*/
|
|
15
|
+
services?: {
|
|
16
|
+
keyvalue?: KeyValueStorage;
|
|
17
|
+
object?: ObjectStorage;
|
|
18
|
+
stream?: StreamStorage;
|
|
19
|
+
vector?: VectorStorage;
|
|
20
|
+
};
|
|
11
21
|
}
|
|
12
22
|
export interface Variables {
|
|
13
23
|
logger: Logger;
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,IAAI,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,IAAI,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9C,MAAM,WAAW,SAAS;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,MAAM,CAAC,EAAE,aAAa,CAAC;QACvB,MAAM,CAAC,EAAE,aAAa,CAAC;KACvB,CAAC;CACF;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,GAAI,SAAQ,OAAO;IACnC,SAAS,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,SAAS;;;;EAK3C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/runtime",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.37",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./src/index.ts",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -23,8 +23,8 @@
|
|
|
23
23
|
"prepublishOnly": "bun run clean && bun run build"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@agentuity/core": "0.0.
|
|
27
|
-
"@agentuity/server": "0.0.
|
|
26
|
+
"@agentuity/core": "0.0.35",
|
|
27
|
+
"@agentuity/server": "0.0.35",
|
|
28
28
|
"@opentelemetry/api": "^1.9.0",
|
|
29
29
|
"@opentelemetry/api-logs": "^0.207.0",
|
|
30
30
|
"@opentelemetry/auto-instrumentations-node": "^0.66.0",
|
package/src/_config.ts
CHANGED
|
@@ -99,3 +99,12 @@ export function getCLIVersion(): string {
|
|
|
99
99
|
export function getEnvironment(): string {
|
|
100
100
|
return process.env.AGENTUITY_ENVIRONMENT || process.env.NODE_ENV || 'development';
|
|
101
101
|
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Returns true if the AGENTUITY_SDK_KEY is set
|
|
105
|
+
*
|
|
106
|
+
* @returns boolean
|
|
107
|
+
*/
|
|
108
|
+
export function isAuthenticated(): boolean {
|
|
109
|
+
return !!process.env.AGENTUITY_SDK_KEY;
|
|
110
|
+
}
|
package/src/_server.ts
CHANGED
|
@@ -24,6 +24,7 @@ import type { Logger } from './logger';
|
|
|
24
24
|
import { isIdle } from './_idle';
|
|
25
25
|
import * as runtimeConfig from './_config';
|
|
26
26
|
import { inAgentContext, getAgentContext } from './_context';
|
|
27
|
+
import { createServices } from './_services';
|
|
27
28
|
|
|
28
29
|
let globalServerInstance: Bun.Server<BunWebSocketData> | null = null;
|
|
29
30
|
|
|
@@ -110,11 +111,12 @@ function registerAgentuitySpanProcessor() {
|
|
|
110
111
|
addSpanProcessor(new RegisterAgentSpanProcessor());
|
|
111
112
|
}
|
|
112
113
|
|
|
113
|
-
export const createServer = <E extends Env>(app: Hono<E>,
|
|
114
|
+
export const createServer = <E extends Env>(app: Hono<E>, config?: AppConfig) => {
|
|
114
115
|
if (globalServerInstance) {
|
|
115
116
|
return globalServerInstance;
|
|
116
117
|
}
|
|
117
118
|
|
|
119
|
+
createServices(config);
|
|
118
120
|
registerAgentuitySpanProcessor();
|
|
119
121
|
|
|
120
122
|
const server = Bun.serve({
|
|
@@ -140,6 +142,10 @@ export const createServer = <E extends Env>(app: Hono<E>, _config?: AppConfig) =
|
|
|
140
142
|
otel.logger.error('HTTP Error: %s (%d)', error.cause, error.status);
|
|
141
143
|
return error.getResponse();
|
|
142
144
|
}
|
|
145
|
+
if (error.name === 'UnauthenticatedError') {
|
|
146
|
+
otel.logger.error('Unauthenticated Error: %s', error.message);
|
|
147
|
+
return new Response(error.message, { status: 501 });
|
|
148
|
+
}
|
|
143
149
|
if (
|
|
144
150
|
error instanceof ServiceException ||
|
|
145
151
|
('statusCode' in error && typeof error.statusCode === 'number')
|
|
@@ -180,8 +186,8 @@ export const createServer = <E extends Env>(app: Hono<E>, _config?: AppConfig) =
|
|
|
180
186
|
app.use(
|
|
181
187
|
'*',
|
|
182
188
|
cors({
|
|
183
|
-
origin:
|
|
184
|
-
allowHeaders:
|
|
189
|
+
origin: config?.cors?.origin ?? ((origin) => origin),
|
|
190
|
+
allowHeaders: config?.cors?.allowHeaders ?? [
|
|
185
191
|
'Content-Type',
|
|
186
192
|
'Authorization',
|
|
187
193
|
'Accept',
|
|
@@ -192,7 +198,7 @@ export const createServer = <E extends Env>(app: Hono<E>, _config?: AppConfig) =
|
|
|
192
198
|
exposeHeaders: ['Content-Length'],
|
|
193
199
|
maxAge: 600,
|
|
194
200
|
credentials: true,
|
|
195
|
-
...(
|
|
201
|
+
...(config?.cors ?? {}), // allow the app config to override
|
|
196
202
|
})
|
|
197
203
|
);
|
|
198
204
|
|
package/src/_services.ts
CHANGED
|
@@ -4,6 +4,10 @@ import {
|
|
|
4
4
|
ObjectStorageService,
|
|
5
5
|
StreamStorageService,
|
|
6
6
|
VectorStorageService,
|
|
7
|
+
type KeyValueStorage,
|
|
8
|
+
type ObjectStorage,
|
|
9
|
+
type StreamStorage,
|
|
10
|
+
type VectorStorage,
|
|
7
11
|
type ListStreamsResponse,
|
|
8
12
|
type VectorUpsertResult,
|
|
9
13
|
type VectorSearchResult,
|
|
@@ -11,7 +15,14 @@ import {
|
|
|
11
15
|
import { createServerFetchAdapter, getServiceUrls } from '@agentuity/server';
|
|
12
16
|
import { injectTraceContextToHeaders } from './otel/http';
|
|
13
17
|
import { getLogger, getTracer } from './_server';
|
|
14
|
-
import { getSDKVersion } from './_config';
|
|
18
|
+
import { getSDKVersion, isAuthenticated } from './_config';
|
|
19
|
+
import type { AppConfig } from './app';
|
|
20
|
+
import {
|
|
21
|
+
UnauthenticatedKeyValueStorage,
|
|
22
|
+
UnauthenticatedObjectStorage,
|
|
23
|
+
UnauthenticatedStreamStorage,
|
|
24
|
+
UnauthenticatedVectorStorage,
|
|
25
|
+
} from './_unauthenticated';
|
|
15
26
|
|
|
16
27
|
const userAgent = `Agentuity SDK/${getSDKVersion()}`;
|
|
17
28
|
const bearerKey = `Bearer ${process.env.AGENTUITY_SDK_KEY}`;
|
|
@@ -134,10 +145,46 @@ const adapter = createServerFetchAdapter({
|
|
|
134
145
|
},
|
|
135
146
|
});
|
|
136
147
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
148
|
+
let kv: KeyValueStorage;
|
|
149
|
+
let objectStore: ObjectStorage;
|
|
150
|
+
let stream: StreamStorage;
|
|
151
|
+
let vector: VectorStorage;
|
|
152
|
+
|
|
153
|
+
export function createServices(config?: AppConfig) {
|
|
154
|
+
const authenticated = isAuthenticated();
|
|
155
|
+
|
|
156
|
+
if (config?.services?.keyvalue) {
|
|
157
|
+
kv = config.services.keyvalue;
|
|
158
|
+
} else if (authenticated) {
|
|
159
|
+
kv = new KeyValueStorageService(kvBaseUrl, adapter);
|
|
160
|
+
} else {
|
|
161
|
+
kv = new UnauthenticatedKeyValueStorage();
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (config?.services?.object) {
|
|
165
|
+
objectStore = config.services.object;
|
|
166
|
+
} else if (authenticated) {
|
|
167
|
+
objectStore = new ObjectStorageService(objectBaseUrl, adapter);
|
|
168
|
+
} else {
|
|
169
|
+
objectStore = new UnauthenticatedObjectStorage();
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (config?.services?.stream) {
|
|
173
|
+
stream = config.services.stream;
|
|
174
|
+
} else if (authenticated) {
|
|
175
|
+
stream = new StreamStorageService(streamBaseUrl, adapter);
|
|
176
|
+
} else {
|
|
177
|
+
stream = new UnauthenticatedStreamStorage();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (config?.services?.vector) {
|
|
181
|
+
vector = config.services.vector;
|
|
182
|
+
} else if (authenticated) {
|
|
183
|
+
vector = new VectorStorageService(vectorBaseUrl, adapter);
|
|
184
|
+
} else {
|
|
185
|
+
vector = new UnauthenticatedVectorStorage();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
141
188
|
|
|
142
189
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
143
190
|
export function registerServices(o: any) {
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
KeyValueStorage,
|
|
3
|
+
ObjectStorage,
|
|
4
|
+
StreamStorage,
|
|
5
|
+
VectorStorage,
|
|
6
|
+
DataResult,
|
|
7
|
+
KeyValueStorageSetParams,
|
|
8
|
+
ObjectResult,
|
|
9
|
+
ObjectStorePutParams,
|
|
10
|
+
CreatePublicURLParams,
|
|
11
|
+
Stream,
|
|
12
|
+
CreateStreamProps,
|
|
13
|
+
ListStreamsParams,
|
|
14
|
+
ListStreamsResponse,
|
|
15
|
+
VectorUpsertParams,
|
|
16
|
+
VectorUpsertResult,
|
|
17
|
+
VectorResult,
|
|
18
|
+
VectorSearchResultWithDocument,
|
|
19
|
+
VectorSearchParams,
|
|
20
|
+
VectorSearchResult,
|
|
21
|
+
} from '@agentuity/core';
|
|
22
|
+
|
|
23
|
+
const UNAUTHENTICATED_ERROR =
|
|
24
|
+
'You must authenticate to use Agentuity services. Set the AGENTUITY_SDK_KEY environment variable or provide custom service implementations in your app config.';
|
|
25
|
+
|
|
26
|
+
class UnauthenticatedError extends Error {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(UNAUTHENTICATED_ERROR);
|
|
29
|
+
this.name = 'UnauthenticatedError';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export class UnauthenticatedKeyValueStorage implements KeyValueStorage {
|
|
34
|
+
async get<T>(_name: string, _key: string): Promise<DataResult<T>> {
|
|
35
|
+
throw new UnauthenticatedError();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async set<T = unknown>(
|
|
39
|
+
_name: string,
|
|
40
|
+
_key: string,
|
|
41
|
+
_value: T,
|
|
42
|
+
_params?: KeyValueStorageSetParams
|
|
43
|
+
): Promise<void> {
|
|
44
|
+
throw new UnauthenticatedError();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async delete(_name: string, _key: string): Promise<void> {
|
|
48
|
+
throw new UnauthenticatedError();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export class UnauthenticatedObjectStorage implements ObjectStorage {
|
|
53
|
+
async get(_bucket: string, _key: string): Promise<ObjectResult> {
|
|
54
|
+
throw new UnauthenticatedError();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async put(
|
|
58
|
+
_bucket: string,
|
|
59
|
+
_key: string,
|
|
60
|
+
_data: Uint8Array | ArrayBuffer | ReadableStream,
|
|
61
|
+
_params?: ObjectStorePutParams
|
|
62
|
+
): Promise<void> {
|
|
63
|
+
throw new UnauthenticatedError();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async delete(_bucket: string, _key: string): Promise<boolean> {
|
|
67
|
+
throw new UnauthenticatedError();
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
async createPublicURL(
|
|
71
|
+
_bucket: string,
|
|
72
|
+
_key: string,
|
|
73
|
+
_params?: CreatePublicURLParams
|
|
74
|
+
): Promise<string> {
|
|
75
|
+
throw new UnauthenticatedError();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export class UnauthenticatedStreamStorage implements StreamStorage {
|
|
80
|
+
async create(_name: string, _props?: CreateStreamProps): Promise<Stream> {
|
|
81
|
+
throw new UnauthenticatedError();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async list(_params?: ListStreamsParams): Promise<ListStreamsResponse> {
|
|
85
|
+
throw new UnauthenticatedError();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async delete(_id: string): Promise<void> {
|
|
89
|
+
throw new UnauthenticatedError();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export class UnauthenticatedVectorStorage implements VectorStorage {
|
|
94
|
+
async upsert(_name: string, ..._documents: VectorUpsertParams[]): Promise<VectorUpsertResult[]> {
|
|
95
|
+
throw new UnauthenticatedError();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async get<T extends Record<string, unknown> = Record<string, unknown>>(
|
|
99
|
+
_name: string,
|
|
100
|
+
_key: string
|
|
101
|
+
): Promise<VectorResult<T>> {
|
|
102
|
+
throw new UnauthenticatedError();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
async getMany<T extends Record<string, unknown> = Record<string, unknown>>(
|
|
106
|
+
_name: string,
|
|
107
|
+
..._keys: string[]
|
|
108
|
+
): Promise<Map<string, VectorSearchResultWithDocument<T>>> {
|
|
109
|
+
throw new UnauthenticatedError();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async search<T extends Record<string, unknown> = Record<string, unknown>>(
|
|
113
|
+
_name: string,
|
|
114
|
+
_params: VectorSearchParams<T>
|
|
115
|
+
): Promise<VectorSearchResult<T>[]> {
|
|
116
|
+
throw new UnauthenticatedError();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async delete(_name: string, ..._keys: string[]): Promise<number> {
|
|
120
|
+
throw new UnauthenticatedError();
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async exists(_name: string): Promise<boolean> {
|
|
124
|
+
throw new UnauthenticatedError();
|
|
125
|
+
}
|
|
126
|
+
}
|
package/src/app.ts
CHANGED
|
@@ -3,6 +3,12 @@ import { cors } from 'hono/cors';
|
|
|
3
3
|
import { createServer, getLogger } from './_server';
|
|
4
4
|
import type { Logger } from './logger';
|
|
5
5
|
import { type Meter, type Tracer } from '@opentelemetry/api';
|
|
6
|
+
import {
|
|
7
|
+
type KeyValueStorage,
|
|
8
|
+
type ObjectStorage,
|
|
9
|
+
type StreamStorage,
|
|
10
|
+
type VectorStorage,
|
|
11
|
+
} from '@agentuity/core';
|
|
6
12
|
|
|
7
13
|
type CorsOptions = Parameters<typeof cors>[0];
|
|
8
14
|
|
|
@@ -11,6 +17,15 @@ export interface AppConfig {
|
|
|
11
17
|
* Override the default cors settings
|
|
12
18
|
*/
|
|
13
19
|
cors?: CorsOptions;
|
|
20
|
+
/**
|
|
21
|
+
* Override the default services
|
|
22
|
+
*/
|
|
23
|
+
services?: {
|
|
24
|
+
keyvalue?: KeyValueStorage;
|
|
25
|
+
object?: ObjectStorage;
|
|
26
|
+
stream?: StreamStorage;
|
|
27
|
+
vector?: VectorStorage;
|
|
28
|
+
};
|
|
14
29
|
}
|
|
15
30
|
|
|
16
31
|
export interface Variables {
|