@assemblyline-agents/node 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 +21 -0
- package/README.md +19 -0
- package/dist/adapters.d.ts +17 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +122 -0
- package/dist/adapters.js.map +1 -0
- package/dist/auth.d.ts +45 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +196 -0
- package/dist/auth.js.map +1 -0
- package/dist/direct-conversations-http.d.ts +40 -0
- package/dist/direct-conversations-http.d.ts.map +1 -0
- package/dist/direct-conversations-http.js +140 -0
- package/dist/direct-conversations-http.js.map +1 -0
- package/dist/http-io.d.ts +20 -0
- package/dist/http-io.d.ts.map +1 -0
- package/dist/http-io.js +101 -0
- package/dist/http-io.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +750 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle.d.ts +56 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +112 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/multipart.d.ts +3 -0
- package/dist/multipart.d.ts.map +1 -0
- package/dist/multipart.js +125 -0
- package/dist/multipart.js.map +1 -0
- package/dist/provider-resolver.d.ts +17 -0
- package/dist/provider-resolver.d.ts.map +1 -0
- package/dist/provider-resolver.js +94 -0
- package/dist/provider-resolver.js.map +1 -0
- package/dist/rate-limit.d.ts +60 -0
- package/dist/rate-limit.d.ts.map +1 -0
- package/dist/rate-limit.js +98 -0
- package/dist/rate-limit.js.map +1 -0
- package/dist/route-match.d.ts +21 -0
- package/dist/route-match.d.ts.map +1 -0
- package/dist/route-match.js +89 -0
- package/dist/route-match.js.map +1 -0
- package/dist/run-stream-http.d.ts +13 -0
- package/dist/run-stream-http.d.ts.map +1 -0
- package/dist/run-stream-http.js +145 -0
- package/dist/run-stream-http.js.map +1 -0
- package/dist/usage-http.d.ts +9 -0
- package/dist/usage-http.d.ts.map +1 -0
- package/dist/usage-http.js +184 -0
- package/dist/usage-http.js.map +1 -0
- package/package.json +96 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct-conversations-http.js","sourceRoot":"","sources":["../src/direct-conversations-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { JsonObject } from "@assemblyline-agents/core";
|
|
3
|
+
import type { OpenEveRuntime, RunAgentResult } from "@assemblyline-agents/runtime";
|
|
4
|
+
import type { NodeRuntimeServerOptions } from "./index.js";
|
|
5
|
+
export declare class HttpRequestError extends Error {
|
|
6
|
+
readonly status: number;
|
|
7
|
+
constructor(status: number, message: string);
|
|
8
|
+
}
|
|
9
|
+
export declare function maxRequestBodyBytes(runtime: OpenEveRuntime, options: NodeRuntimeServerOptions): number;
|
|
10
|
+
export declare function readBody(request: IncomingMessage, maxBytes: number): Promise<{
|
|
11
|
+
rawBody: string;
|
|
12
|
+
rawBodyBytes: Uint8Array;
|
|
13
|
+
body: JsonObject;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function normalizeHeaders(headers: IncomingMessage["headers"]): Record<string, string>;
|
|
16
|
+
export declare function send(response: ServerResponse, status: number, body: unknown, headers?: Record<string, string>): void;
|
|
17
|
+
export declare function summarizeRun(result: RunAgentResult): JsonObject;
|
|
18
|
+
export declare function headerValue(value: string | string[] | undefined): string;
|
|
19
|
+
export declare function firstHeaderValue(value: string | string[] | undefined): string | undefined;
|
|
20
|
+
//# sourceMappingURL=http-io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-io.d.ts","sourceRoot":"","sources":["../src/http-io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAK3D,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM;CAKlB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAItG;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAuBnJ;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO5F;AAMD,wBAAgB,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,IAAI,CAWxH;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAW/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAGxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGzF"}
|
package/dist/http-io.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { parseMultipartFormData } from "./multipart.js";
|
|
2
|
+
const DEFAULT_MAX_REQUEST_BODY_BYTES = 10_485_760;
|
|
3
|
+
export class HttpRequestError extends Error {
|
|
4
|
+
status;
|
|
5
|
+
constructor(status, message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.status = status;
|
|
8
|
+
this.name = "HttpRequestError";
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function maxRequestBodyBytes(runtime, options) {
|
|
12
|
+
if (options.maxRequestBodyBytes !== undefined)
|
|
13
|
+
return positiveInteger(options.maxRequestBodyBytes, DEFAULT_MAX_REQUEST_BODY_BYTES);
|
|
14
|
+
const env = options.env ?? runtime.env ?? process.env;
|
|
15
|
+
return positiveInteger(env.OPENEVE_HTTP_MAX_BODY_BYTES, DEFAULT_MAX_REQUEST_BODY_BYTES);
|
|
16
|
+
}
|
|
17
|
+
export async function readBody(request, maxBytes) {
|
|
18
|
+
const chunks = [];
|
|
19
|
+
let totalBytes = 0;
|
|
20
|
+
for await (const chunk of request) {
|
|
21
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
22
|
+
totalBytes += buffer.byteLength;
|
|
23
|
+
if (totalBytes > maxBytes) {
|
|
24
|
+
throw new HttpRequestError(413, `Request body exceeds max bytes (${maxBytes}).`);
|
|
25
|
+
}
|
|
26
|
+
chunks.push(buffer);
|
|
27
|
+
}
|
|
28
|
+
const rawBuffer = Buffer.concat(chunks);
|
|
29
|
+
const rawBody = rawBuffer.toString("utf8");
|
|
30
|
+
if (rawBuffer.byteLength === 0)
|
|
31
|
+
return { rawBody, rawBodyBytes: rawBuffer, body: {} };
|
|
32
|
+
const contentType = headerValue(request.headers["content-type"]);
|
|
33
|
+
if (contentType.includes("multipart/form-data")) {
|
|
34
|
+
return { rawBody, rawBodyBytes: rawBuffer, body: parseMultipartFormData(rawBuffer, contentType) };
|
|
35
|
+
}
|
|
36
|
+
if (contentType.includes("application/x-www-form-urlencoded")) {
|
|
37
|
+
return { rawBody, rawBodyBytes: rawBuffer, body: Object.fromEntries(new URLSearchParams(rawBody).entries()) };
|
|
38
|
+
}
|
|
39
|
+
const parsed = JSON.parse(rawBody);
|
|
40
|
+
return { rawBody, rawBodyBytes: rawBuffer, body: isJsonObject(parsed) ? parsed : {} };
|
|
41
|
+
}
|
|
42
|
+
function positiveInteger(value, fallback) {
|
|
43
|
+
const number = typeof value === "string" && value.trim() !== "" ? Number(value) : value;
|
|
44
|
+
if (typeof number !== "number" || !Number.isFinite(number) || number <= 0)
|
|
45
|
+
return fallback;
|
|
46
|
+
return Math.floor(number);
|
|
47
|
+
}
|
|
48
|
+
export function normalizeHeaders(headers) {
|
|
49
|
+
const out = {};
|
|
50
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
51
|
+
if (Array.isArray(value))
|
|
52
|
+
out[key.toLowerCase()] = value.join(", ");
|
|
53
|
+
else if (value !== undefined)
|
|
54
|
+
out[key.toLowerCase()] = value;
|
|
55
|
+
}
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
function isJsonObject(value) {
|
|
59
|
+
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
60
|
+
}
|
|
61
|
+
export function send(response, status, body, headers = {}) {
|
|
62
|
+
const responseHeaders = { ...headers };
|
|
63
|
+
if (typeof body === "string" || body instanceof Uint8Array) {
|
|
64
|
+
if (!hasHeader(responseHeaders, "content-type"))
|
|
65
|
+
responseHeaders["content-type"] = "text/plain; charset=utf-8";
|
|
66
|
+
response.writeHead(status, responseHeaders);
|
|
67
|
+
response.end(body);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (!hasHeader(responseHeaders, "content-type"))
|
|
71
|
+
responseHeaders["content-type"] = "application/json; charset=utf-8";
|
|
72
|
+
response.writeHead(status, responseHeaders);
|
|
73
|
+
response.end(JSON.stringify(body, null, 2));
|
|
74
|
+
}
|
|
75
|
+
function hasHeader(headers, name) {
|
|
76
|
+
const normalized = name.toLowerCase();
|
|
77
|
+
return Object.keys(headers).some((key) => key.toLowerCase() === normalized);
|
|
78
|
+
}
|
|
79
|
+
export function summarizeRun(result) {
|
|
80
|
+
return {
|
|
81
|
+
runId: result.run.id,
|
|
82
|
+
status: result.run.status,
|
|
83
|
+
response: result.response ?? "",
|
|
84
|
+
waitingForApproval: result.waitingForApproval ?? false,
|
|
85
|
+
waitingForInput: result.waitingForInput ?? false,
|
|
86
|
+
waitingForConnection: result.waitingForConnection ?? false,
|
|
87
|
+
eventCount: result.events.length,
|
|
88
|
+
toolCallCount: result.toolCalls.length
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function headerValue(value) {
|
|
92
|
+
if (Array.isArray(value))
|
|
93
|
+
return value[0] ?? "";
|
|
94
|
+
return value ?? "";
|
|
95
|
+
}
|
|
96
|
+
export function firstHeaderValue(value) {
|
|
97
|
+
if (Array.isArray(value))
|
|
98
|
+
return value[0];
|
|
99
|
+
return value;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=http-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-io.js","sourceRoot":"","sources":["../src/http-io.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type Server } from "node:http";
|
|
2
|
+
import { type AdapterDefinition, type JsonObject } from "@assemblyline-agents/core";
|
|
3
|
+
import { OpenEveRuntime, type RuntimeOptions } from "@assemblyline-agents/runtime";
|
|
4
|
+
import { type RuntimeAuthPolicy } from "./auth.js";
|
|
5
|
+
import { type IngressRateLimitPolicy } from "./rate-limit.js";
|
|
6
|
+
import { type NodeRuntimeHandle } from "./lifecycle.js";
|
|
7
|
+
export { resolveProvider, type ProviderResolution } from "./provider-resolver.js";
|
|
8
|
+
export { createMemoryRateLimiterStore, parseRateLimitSpec, resolveIngressRateLimit, type IngressRateLimitClass, type IngressRateLimitPolicy, type IngressRateLimitRequest, type RateLimitDecision, type RateLimitTakeOptions, type RateLimiterStore, type ResolvedIngressRateLimit } from "./rate-limit.js";
|
|
9
|
+
export { createNodeRuntimeHandle, installSignalHandlers, type NodeRuntimeHandle, type NodeRuntimeHandleInput, type NodeRuntimeShutdownOptions, type RuntimeDrainState, type SignalHandlerOptions } from "./lifecycle.js";
|
|
10
|
+
export type { RuntimeAuthDecision, RuntimeAuthPolicy, RuntimeAuthRequest, RuntimeRouteClass } from "./auth.js";
|
|
11
|
+
export interface NodeAdapter extends AdapterDefinition {
|
|
12
|
+
kind: "node";
|
|
13
|
+
}
|
|
14
|
+
export interface NodeRuntimeServerOptions extends RuntimeOptions {
|
|
15
|
+
port?: number;
|
|
16
|
+
host?: string;
|
|
17
|
+
runtime?: OpenEveRuntime;
|
|
18
|
+
auth?: RuntimeAuthPolicy;
|
|
19
|
+
allowApiRuns?: boolean;
|
|
20
|
+
/** Accept the POST /runs `eval` block (stubs/auto-approve/record-only). Env: OPENEVE_ENABLE_EVAL_RUNS. */
|
|
21
|
+
allowEvalRuns?: boolean;
|
|
22
|
+
maxRequestBodyBytes?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Ingress rate limiting for provider-channel/run-create/scheduler routes.
|
|
25
|
+
* Default off; `false` disables even the `OPENEVE_*_RATE_LIMIT` env config.
|
|
26
|
+
*/
|
|
27
|
+
rateLimit?: IngressRateLimitPolicy | false;
|
|
28
|
+
/**
|
|
29
|
+
* Install SIGTERM/SIGINT graceful-shutdown handlers so a redeploy/restart
|
|
30
|
+
* drains in-flight runs instead of hard-killing them. Default on; set to
|
|
31
|
+
* `false` (or `OPENEVE_SIGNAL_HANDLERS=false`) to opt out, e.g. when the host
|
|
32
|
+
* process manages signals itself.
|
|
33
|
+
*/
|
|
34
|
+
installSignalHandlers?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export interface ProductionRuntimeOptions {
|
|
37
|
+
artifactRoot: string;
|
|
38
|
+
env?: NodeJS.ProcessEnv;
|
|
39
|
+
devMode?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function nodeAdapter(options?: JsonObject): NodeAdapter;
|
|
42
|
+
/** Install Node-hosted model harnesses without changing Pi's provider defaults. */
|
|
43
|
+
export declare function withNodeModelHarnesses<T extends RuntimeOptions>(options: T): T & {
|
|
44
|
+
modelHarnesses: NonNullable<RuntimeOptions["modelHarnesses"]>;
|
|
45
|
+
};
|
|
46
|
+
export declare function createProductionRuntimeOptions(options: ProductionRuntimeOptions): Promise<RuntimeOptions>;
|
|
47
|
+
export declare function createNodeRuntimeServer(options: NodeRuntimeServerOptions): Server;
|
|
48
|
+
export declare function listenNodeRuntime(rawOptions: NodeRuntimeServerOptions): Promise<NodeRuntimeHandle>;
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAML,KAAK,iBAAiB,EAEtB,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EAMd,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAStC,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAanB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,gBAAgB,CAAC;AAexB,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,WAAY,SAAQ,iBAAiB;IACpD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0GAA0G;IAC1G,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;IAC3C;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,UAAe,GAAG,WAAW,CAMjE;AAED,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,cAAc,EAAE,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAA;CAAE,CAQlJ;AAED,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CA8B/G;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAKjF;AAkjBD,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiExG"}
|