@browserlessapi/inferlo 0.4.0 → 0.6.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/README.md +21 -3
- package/dist/adonisjs.d.ts +33 -0
- package/dist/adonisjs.js +30 -0
- package/dist/adonisjs.js.map +1 -0
- package/dist/ai/index.d.ts +22 -8
- package/dist/ai/index.js +107 -15
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/providers.js +5 -4
- package/dist/ai/providers.js.map +1 -1
- package/dist/ai/public.d.ts +21 -0
- package/dist/ai/public.js +17 -0
- package/dist/ai/public.js.map +1 -0
- package/dist/ai/tool.d.ts +47 -0
- package/dist/ai/tool.js +85 -0
- package/dist/ai/tool.js.map +1 -0
- package/dist/ai-client.d.ts +3 -0
- package/dist/ai-client.js +8 -0
- package/dist/ai-client.js.map +1 -0
- package/dist/api-version.d.ts +32 -0
- package/dist/api-version.js +45 -0
- package/dist/api-version.js.map +1 -0
- package/dist/app.d.ts +117 -5
- package/dist/app.js +667 -156
- package/dist/app.js.map +1 -1
- package/dist/audit.d.ts +50 -0
- package/dist/audit.js +92 -0
- package/dist/audit.js.map +1 -0
- package/dist/cache.d.ts +92 -0
- package/dist/cache.js +245 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli/main.js +45 -5
- package/dist/cli/main.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.js +101 -0
- package/dist/config.js.map +1 -0
- package/dist/db/table.d.ts +31 -0
- package/dist/db/table.js +140 -1
- package/dist/db/table.js.map +1 -1
- package/dist/deprecation.d.ts +23 -0
- package/dist/deprecation.js +70 -0
- package/dist/deprecation.js.map +1 -0
- package/dist/describe.d.ts +68 -5
- package/dist/describe.js +38 -3
- package/dist/describe.js.map +1 -1
- package/dist/elysia.d.ts +49 -0
- package/dist/elysia.js +10 -0
- package/dist/elysia.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.js +5 -4
- package/dist/env.js.map +1 -1
- package/dist/express.d.ts +38 -0
- package/dist/express.js +18 -0
- package/dist/express.js.map +1 -0
- package/dist/fastify.d.ts +52 -0
- package/dist/fastify.js +65 -0
- package/dist/fastify.js.map +1 -0
- package/dist/h3.d.ts +76 -0
- package/dist/h3.js +61 -0
- package/dist/h3.js.map +1 -0
- package/dist/hapi.d.ts +45 -0
- package/dist/hapi.js +57 -0
- package/dist/hapi.js.map +1 -0
- package/dist/hono.d.ts +26 -0
- package/dist/hono.js +10 -0
- package/dist/hono.js.map +1 -0
- package/dist/index.d.ts +27 -5
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/jobs.d.ts +24 -0
- package/dist/jobs.js +35 -6
- package/dist/jobs.js.map +1 -1
- package/dist/koa.d.ts +51 -0
- package/dist/koa.js +45 -0
- package/dist/koa.js.map +1 -0
- package/dist/lambda.d.ts +110 -0
- package/dist/lambda.js +169 -0
- package/dist/lambda.js.map +1 -0
- package/dist/logging.d.ts +23 -0
- package/dist/logging.js +87 -0
- package/dist/logging.js.map +1 -0
- package/dist/mcp.d.ts +1 -7
- package/dist/mcp.js +18 -4
- package/dist/mcp.js.map +1 -1
- package/dist/metrics.d.ts +48 -0
- package/dist/metrics.js +184 -0
- package/dist/metrics.js.map +1 -0
- package/dist/module.d.ts +52 -0
- package/dist/module.js +152 -0
- package/dist/module.js.map +1 -0
- package/dist/nestjs.d.ts +43 -0
- package/dist/nestjs.js +47 -0
- package/dist/nestjs.js.map +1 -0
- package/dist/nextjs.d.ts +35 -0
- package/dist/nextjs.js +33 -0
- package/dist/nextjs.js.map +1 -0
- package/dist/openapi.d.ts +3 -1
- package/dist/openapi.js +16 -3
- package/dist/openapi.js.map +1 -1
- package/dist/permissions.d.ts +26 -0
- package/dist/permissions.js +78 -0
- package/dist/permissions.js.map +1 -0
- package/dist/react-router.d.ts +41 -0
- package/dist/react-router.js +42 -0
- package/dist/react-router.js.map +1 -0
- package/dist/redact.d.ts +19 -0
- package/dist/redact.js +150 -0
- package/dist/redact.js.map +1 -0
- package/dist/request-matcher.d.ts +4 -0
- package/dist/request-matcher.js +14 -0
- package/dist/request-matcher.js.map +1 -0
- package/dist/route.d.ts +54 -1
- package/dist/route.js +24 -0
- package/dist/route.js.map +1 -1
- package/dist/secure-headers.d.ts +8 -0
- package/dist/secure-headers.js +61 -0
- package/dist/secure-headers.js.map +1 -0
- package/dist/serve.d.ts +72 -1
- package/dist/serve.js +201 -61
- package/dist/serve.js.map +1 -1
- package/dist/sessions.d.ts +72 -0
- package/dist/sessions.js +171 -0
- package/dist/sessions.js.map +1 -0
- package/dist/sveltekit.d.ts +72 -0
- package/dist/sveltekit.js +68 -0
- package/dist/sveltekit.js.map +1 -0
- package/dist/tracing.d.ts +118 -0
- package/dist/tracing.js +204 -0
- package/dist/tracing.js.map +1 -0
- package/dist/trpc.d.ts +57 -0
- package/dist/trpc.js +142 -0
- package/dist/trpc.js.map +1 -0
- package/dist/tsed.d.ts +32 -0
- package/dist/tsed.js +13 -0
- package/dist/tsed.js.map +1 -0
- package/llms.txt +15 -5
- package/package.json +99 -3
- package/templates/app/AGENTS.md +12 -6
- package/templates/app/_env.example +2 -0
- package/templates/app/src/app.ts +15 -8
- package/templates/app/src/config.ts +17 -0
- package/templates/app/src/server.ts +9 -9
- package/templates/app/src/routes/health.ts +0 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,31 +1,53 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inferlo: the TypeScript backend framework with
|
|
2
|
+
* Inferlo: the enterprise-ready TypeScript backend framework, with AI models built in.
|
|
3
3
|
* https://github.com/BrowserlessAPI/Inferlo
|
|
4
4
|
*/
|
|
5
5
|
export { createApp } from "./app.ts";
|
|
6
|
-
export type {
|
|
6
|
+
export type { LogFields, LoggingConfig } from "./logging.ts";
|
|
7
|
+
export type { MetricsConfig } from "./metrics.ts";
|
|
8
|
+
export type { Deprecation } from "./deprecation.ts";
|
|
9
|
+
export type { App, AppConfig, AuthConfig, CorsConfig, Middleware, MiddlewareContext, RequestOptions, RouteSource, Logger, HealthConfig, HealthCheck, CheckResult, ReadinessReport, CloseOptions } from "./app.ts";
|
|
10
|
+
export type { SecureHeadersConfig } from "./secure-headers.ts";
|
|
11
|
+
export { module, isModule } from "./module.ts";
|
|
12
|
+
export type { Module, ModuleOptions, AnyModule, ModuleModels } from "./module.ts";
|
|
13
|
+
export { apiVersion } from "./api-version.ts";
|
|
14
|
+
export type { ApiVersionOptions } from "./api-version.ts";
|
|
7
15
|
export { route, isRoute } from "./route.ts";
|
|
8
|
-
export type { Register, Context, RouteDef, RouteOptions, Auth, Method, ToolOptions, AppUser, AppDb } from "./route.ts";
|
|
16
|
+
export type { Register, Context, RouteDef, RouteOptions, Auth, Method, ToolOptions, AppUser, AppDb, AppPermission } from "./route.ts";
|
|
9
17
|
export { t, Schema, ObjectSchema, ArraySchema, RefSchema, ValidationError, toJSONSchema } from "./schema.ts";
|
|
10
18
|
export type { Infer, InferInput, Issue, JSONSchema, ParseResult, Shape, AnySchema } from "./schema.ts";
|
|
11
19
|
export { model, Model, columnName } from "./model.ts";
|
|
12
20
|
export type { Row, CreateInput, UpdateInput, AnyModel } from "./model.ts";
|
|
13
21
|
export { memory } from "./db/memory.ts";
|
|
14
22
|
export { createDb, Table } from "./db/table.ts";
|
|
15
|
-
export type { Db, Where, OrderBy, FindManyOptions, FindOptions, Include, Relations, ReverseRelations, WithInclude } from "./db/table.ts";
|
|
23
|
+
export type { Db, Where, OrderBy, FindManyOptions, FindOptions, PaginateOptions, Page, Include, Relations, ReverseRelations, WithInclude } from "./db/table.ts";
|
|
16
24
|
export type { Adapter, Condition, Query, DbRecord } from "./db/types.ts";
|
|
17
25
|
export { planMigration, applyMigrations } from "./db/migrate.ts";
|
|
18
26
|
export type { ApplyMigrationsOptions, Migration, MigrationPlan, MigrationSnapshot, MigrationSnapshotColumn, MigrationSnapshotV1, PlanMigrationOptions, } from "./db/migrate.ts";
|
|
19
27
|
export { createAI, cosineSimilarity, extractJson, openai, openaiCompatible, anthropic, gemini, ollama, mockProvider, ProviderError } from "./ai/index.ts";
|
|
28
|
+
export { tool, isTool, ToolBuilder } from "./ai/tool.ts";
|
|
29
|
+
export type { ToolDef, FunctionToolOptions, ToolContext } from "./ai/tool.ts";
|
|
20
30
|
export type { AI, AIConfig, GenerateOptions, GenerateResult, StreamResult, Usage, Pricing, Provider, ProviderRequest, ProviderResponse, Image, ImageMediaType, Message, MockReply, Step, ToolCall, ToolCallResult, ToolSpec, } from "./ai/index.ts";
|
|
21
31
|
export type { RateLimit, RateLimitConfig } from "./rate-limit.ts";
|
|
22
32
|
export { job, isJob, retryDelayMs } from "./jobs.ts";
|
|
23
33
|
export { cron, isCron } from "./cron.ts";
|
|
24
34
|
export type { CronDef } from "./cron.ts";
|
|
35
|
+
export type { JobTraceContext } from "./tracing.ts";
|
|
25
36
|
export type { JobDef, JobOptions, JobContext, JobInput, JobRecord, JobStatus, JobSource, JobQueueConfig, Jobs, AppJobs, EnqueueOptions, RunResult, Worker } from "./jobs.ts";
|
|
37
|
+
export { AuditLog, auditChanges } from "./audit.ts";
|
|
38
|
+
export type { Audit, AuditEntry, AuditChange } from "./audit.ts";
|
|
39
|
+
export type { Cache, CacheConfig, CacheSetOptions, RouteCache } from "./cache.ts";
|
|
40
|
+
export { permissions, isPermissions } from "./permissions.ts";
|
|
41
|
+
export type { Permissions, PermissionRule, PermissionInput } from "./permissions.ts";
|
|
26
42
|
export { bearer, hashToken, createToken, hashPassword, verifyPassword, safeEqual } from "./auth.ts";
|
|
43
|
+
export { sessions } from "./sessions.ts";
|
|
44
|
+
export type { TracingConfig, OtelApi, OtelSpan } from "./tracing.ts";
|
|
45
|
+
export type { Sessions, SessionsOptions, SessionData, SessionCookieOptions, SessionResponseContext } from "./sessions.ts";
|
|
27
46
|
export { env, setEnv } from "./env.ts";
|
|
47
|
+
export { config } from "./config.ts";
|
|
48
|
+
export type { Config, ConfigOptions } from "./config.ts";
|
|
28
49
|
export { InferloError, httpError, notFound, forbidden, badRequest, docsUrl } from "./errors.ts";
|
|
29
|
-
export { serve } from "./serve.ts";
|
|
50
|
+
export { serve, toNodeHandler, fromNodeRequest } from "./serve.ts";
|
|
51
|
+
export type { ServeOptions, Server, NodeRequest, NodeResponse, NodeHandler, NodeHandlerOptions, FromNodeRequestOptions } from "./serve.ts";
|
|
30
52
|
export { INFERLO_VERSION } from "./describe.ts";
|
|
31
53
|
export type { AppDescription } from "./describe.ts";
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Inferlo: the TypeScript backend framework with
|
|
2
|
+
* Inferlo: the enterprise-ready TypeScript backend framework, with AI models built in.
|
|
3
3
|
* https://github.com/BrowserlessAPI/Inferlo
|
|
4
4
|
*/
|
|
5
5
|
export { createApp } from "./app.js";
|
|
6
|
+
export { module, isModule } from "./module.js";
|
|
7
|
+
export { apiVersion } from "./api-version.js";
|
|
6
8
|
export { route, isRoute } from "./route.js";
|
|
7
9
|
export { t, Schema, ObjectSchema, ArraySchema, RefSchema, ValidationError, toJSONSchema } from "./schema.js";
|
|
8
10
|
export { model, Model, columnName } from "./model.js";
|
|
@@ -10,11 +12,16 @@ export { memory } from "./db/memory.js";
|
|
|
10
12
|
export { createDb, Table } from "./db/table.js";
|
|
11
13
|
export { planMigration, applyMigrations } from "./db/migrate.js";
|
|
12
14
|
export { createAI, cosineSimilarity, extractJson, openai, openaiCompatible, anthropic, gemini, ollama, mockProvider, ProviderError } from "./ai/index.js";
|
|
15
|
+
export { tool, isTool, ToolBuilder } from "./ai/tool.js";
|
|
13
16
|
export { job, isJob, retryDelayMs } from "./jobs.js";
|
|
14
17
|
export { cron, isCron } from "./cron.js";
|
|
18
|
+
export { AuditLog, auditChanges } from "./audit.js";
|
|
19
|
+
export { permissions, isPermissions } from "./permissions.js";
|
|
15
20
|
export { bearer, hashToken, createToken, hashPassword, verifyPassword, safeEqual } from "./auth.js";
|
|
21
|
+
export { sessions } from "./sessions.js";
|
|
16
22
|
export { env, setEnv } from "./env.js";
|
|
23
|
+
export { config } from "./config.js";
|
|
17
24
|
export { InferloError, httpError, notFound, forbidden, badRequest, docsUrl } from "./errors.js";
|
|
18
|
-
export { serve } from "./serve.js";
|
|
25
|
+
export { serve, toNodeHandler, fromNodeRequest } from "./serve.js";
|
|
19
26
|
export { INFERLO_VERSION } from "./describe.js";
|
|
20
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAOrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7G,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAWjE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1J,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAwBzD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACpG,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAChG,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/jobs.d.ts
CHANGED
|
@@ -11,10 +11,13 @@
|
|
|
11
11
|
* jobs in this process, app.jobs.runDue() runs them once (tests).
|
|
12
12
|
*/
|
|
13
13
|
import type { AI } from "./ai/index.ts";
|
|
14
|
+
import type { Audit } from "./audit.ts";
|
|
15
|
+
import type { Cache } from "./cache.ts";
|
|
14
16
|
import { type CronDef } from "./cron.ts";
|
|
15
17
|
import type { Adapter } from "./db/types.ts";
|
|
16
18
|
import type { AppDb } from "./route.ts";
|
|
17
19
|
import { type AnySchema, type Infer, type InferInput } from "./schema.ts";
|
|
20
|
+
import type { JobTraceContext, JobTracing } from "./tracing.ts";
|
|
18
21
|
export interface JobOptions<I extends AnySchema> {
|
|
19
22
|
/** Schema of the job's input. Checked when the job is enqueued and again when it runs. */
|
|
20
23
|
input: I;
|
|
@@ -30,10 +33,17 @@ export interface JobContext<Input> {
|
|
|
30
33
|
ai: AI;
|
|
31
34
|
/** Enqueue follow-up jobs. */
|
|
32
35
|
jobs: Jobs;
|
|
36
|
+
/** The app cache, the same as ctx.cache in routes and app.cache. */
|
|
37
|
+
cache: Cache;
|
|
33
38
|
/** Job id. */
|
|
34
39
|
id: string;
|
|
35
40
|
/** 1 on the first run, 2 on the first retry, and so on. */
|
|
36
41
|
attempt: number;
|
|
42
|
+
/**
|
|
43
|
+
* Write an audit log entry (needs AuditLog in createApp({ models })). Jobs have no signed-in user: pass the
|
|
44
|
+
* userId of the user who asked for the work, or leave it out for work the system does on its own.
|
|
45
|
+
*/
|
|
46
|
+
audit: Audit;
|
|
37
47
|
}
|
|
38
48
|
export interface JobDef<Input = any, Output = any> {
|
|
39
49
|
readonly kind: "inferlo.job";
|
|
@@ -64,6 +74,8 @@ export interface JobRecord {
|
|
|
64
74
|
runAt: Date;
|
|
65
75
|
/** Message of the last failure. */
|
|
66
76
|
lastError?: string;
|
|
77
|
+
/** With createApp({ tracing }): the trace (W3C traceparent and tracestate) of the request or job that enqueued it, which its runs continue. */
|
|
78
|
+
trace?: JobTraceContext;
|
|
67
79
|
createdAt: Date;
|
|
68
80
|
updatedAt: Date;
|
|
69
81
|
}
|
|
@@ -120,6 +132,8 @@ export interface AppJobs extends Jobs {
|
|
|
120
132
|
pollMs?: number;
|
|
121
133
|
}): Worker;
|
|
122
134
|
}
|
|
135
|
+
/** Stop every worker started with jobs.start() and wait for their running jobs (used by app.close()). */
|
|
136
|
+
export declare function stopWorkers(jobs: AppJobs): Promise<void>;
|
|
123
137
|
/** Delay before retry n (1-based): 10s, 20s, 40s, ... at most one hour. */
|
|
124
138
|
export declare function retryDelayMs(attempt: number): number;
|
|
125
139
|
export declare class JobBuilder<I extends AnySchema> {
|
|
@@ -159,6 +173,12 @@ export declare function jobStoreFor(config: JobQueueConfig | undefined, adapter:
|
|
|
159
173
|
export interface JobRuntime {
|
|
160
174
|
db: AppDb;
|
|
161
175
|
ai: AI;
|
|
176
|
+
cache: Cache;
|
|
177
|
+
/** Builds ctx.audit for one run. */
|
|
178
|
+
audit(job: {
|
|
179
|
+
name: string;
|
|
180
|
+
id: string;
|
|
181
|
+
}): Audit;
|
|
162
182
|
store: JobStore;
|
|
163
183
|
/** Name of the store, shown as app.jobs.queue. Default "memory". */
|
|
164
184
|
queue?: "memory" | "database";
|
|
@@ -168,6 +188,10 @@ export interface JobRuntime {
|
|
|
168
188
|
info(message: string, data?: unknown): void;
|
|
169
189
|
error(message: string, data?: unknown): void;
|
|
170
190
|
};
|
|
191
|
+
/** Called after each attempt with its outcome and duration (metrics). */
|
|
192
|
+
onRun?(name: string, outcome: keyof RunResult, durationMs: number): void;
|
|
193
|
+
/** With createApp({ tracing }): a span per attempt that continues the trace the job was enqueued in. */
|
|
194
|
+
tracing?: JobTracing;
|
|
171
195
|
}
|
|
172
196
|
/** app.jobs plus what the framework tests reach directly. */
|
|
173
197
|
export interface InternalJobs extends AppJobs {
|
package/dist/jobs.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { cronTickId, isCron } from "./cron.js";
|
|
2
2
|
import { InferloError } from "./errors.js";
|
|
3
3
|
import { ValidationError } from "./schema.js";
|
|
4
|
+
/** Workers started with app.jobs.start() that have not been stopped, so app.close() can stop them. */
|
|
5
|
+
const workers = new WeakMap();
|
|
6
|
+
/** Stop every worker started with jobs.start() and wait for their running jobs (used by app.close()). */
|
|
7
|
+
export async function stopWorkers(jobs) {
|
|
8
|
+
await Promise.all([...(workers.get(jobs) ?? [])].map((w) => w.stop()));
|
|
9
|
+
}
|
|
4
10
|
const MAX_RETRIES = 25;
|
|
5
11
|
const BASE_DELAY_MS = 10_000;
|
|
6
12
|
const MAX_DELAY_MS = 3_600_000;
|
|
@@ -119,7 +125,7 @@ export const STALE_AFTER_MS = 5 * 60_000;
|
|
|
119
125
|
/** How often a worker reports that a running job is still alive. */
|
|
120
126
|
export const HEARTBEAT_MS = 30_000;
|
|
121
127
|
export const STOPPED_MESSAGE = "The worker stopped while running this job (the process exited or lost its database connection).";
|
|
122
|
-
const JOB_COLUMNS = `"id", "name", "input", "status", "attempts", "max_attempts", "run_at", "last_error", "created_at", "updated_at"`;
|
|
128
|
+
const JOB_COLUMNS = `"id", "name", "input", "status", "attempts", "max_attempts", "run_at", "last_error", "created_at", "updated_at", "traceparent", "tracestate"`;
|
|
123
129
|
function fromRow(row) {
|
|
124
130
|
const record = {
|
|
125
131
|
id: String(row.id),
|
|
@@ -134,6 +140,11 @@ function fromRow(row) {
|
|
|
134
140
|
};
|
|
135
141
|
if (row.last_error !== null && row.last_error !== undefined)
|
|
136
142
|
record.lastError = String(row.last_error);
|
|
143
|
+
if (typeof row.traceparent === "string") {
|
|
144
|
+
record.trace = { traceparent: row.traceparent };
|
|
145
|
+
if (typeof row.tracestate === "string")
|
|
146
|
+
record.trace.tracestate = row.tracestate;
|
|
147
|
+
}
|
|
137
148
|
return record;
|
|
138
149
|
}
|
|
139
150
|
/**
|
|
@@ -155,7 +166,10 @@ export function databaseJobStore(adapter, options = {}) {
|
|
|
155
166
|
await sql(`CREATE TABLE IF NOT EXISTS "inferlo_jobs" (
|
|
156
167
|
"id" uuid PRIMARY KEY, "name" text NOT NULL, "input" jsonb NOT NULL, "status" text NOT NULL,
|
|
157
168
|
"attempts" integer NOT NULL, "max_attempts" integer NOT NULL, "run_at" timestamptz NOT NULL,
|
|
158
|
-
"last_error" text, "created_at" timestamptz NOT NULL, "updated_at" timestamptz NOT NULL
|
|
169
|
+
"last_error" text, "created_at" timestamptz NOT NULL, "updated_at" timestamptz NOT NULL,
|
|
170
|
+
"traceparent" text, "tracestate" text)`);
|
|
171
|
+
// Tables created by Inferlo 0.5 and earlier get the trace columns.
|
|
172
|
+
await sql('ALTER TABLE "inferlo_jobs" ADD COLUMN IF NOT EXISTS "traceparent" text, ADD COLUMN IF NOT EXISTS "tracestate" text');
|
|
159
173
|
await sql('CREATE INDEX IF NOT EXISTS "inferlo_jobs_due_idx" ON "inferlo_jobs" ("status", "run_at")');
|
|
160
174
|
}
|
|
161
175
|
catch {
|
|
@@ -173,8 +187,8 @@ export function databaseJobStore(adapter, options = {}) {
|
|
|
173
187
|
return {
|
|
174
188
|
async add(r) {
|
|
175
189
|
await table();
|
|
176
|
-
await sql(`INSERT INTO "inferlo_jobs" (${JOB_COLUMNS}) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) ON CONFLICT ("id") DO NOTHING`, [
|
|
177
|
-
r.id, r.name, JSON.stringify(r.input), r.status, r.attempts, r.maxAttempts, r.runAt, r.lastError ?? null, r.createdAt, r.updatedAt,
|
|
190
|
+
await sql(`INSERT INTO "inferlo_jobs" (${JOB_COLUMNS}) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) ON CONFLICT ("id") DO NOTHING`, [
|
|
191
|
+
r.id, r.name, JSON.stringify(r.input), r.status, r.attempts, r.maxAttempts, r.runAt, r.lastError ?? null, r.createdAt, r.updatedAt, r.trace?.traceparent ?? null, r.trace?.tracestate ?? null,
|
|
178
192
|
]);
|
|
179
193
|
},
|
|
180
194
|
async claim(now, limit, names) {
|
|
@@ -235,6 +249,7 @@ export function jobStoreFor(config, adapter) {
|
|
|
235
249
|
export function createJobs(list, runtime, crons = []) {
|
|
236
250
|
const byName = new Map(list.map((j) => [j.name, j]));
|
|
237
251
|
const names = list.map((j) => j.name);
|
|
252
|
+
const running = new Set();
|
|
238
253
|
const registered = (j) => {
|
|
239
254
|
const found = isJob(j) ? byName.get(j.name) : undefined;
|
|
240
255
|
if (!found) {
|
|
@@ -289,6 +304,9 @@ export function createJobs(list, runtime, crons = []) {
|
|
|
289
304
|
throw new InferloError("IL6009", `runAt for job "${def.name}" must be a valid Date.`, { fix: "Pass runAt: new Date(Date.now() + 60_000) or leave it out to run now." });
|
|
290
305
|
}
|
|
291
306
|
const queued = record(def, input, options.runAt, crypto.randomUUID());
|
|
307
|
+
const trace = runtime.tracing?.capture();
|
|
308
|
+
if (trace?.traceparent)
|
|
309
|
+
queued.trace = trace;
|
|
292
310
|
await runtime.store.add(queued);
|
|
293
311
|
return queued;
|
|
294
312
|
},
|
|
@@ -331,29 +349,40 @@ export function createJobs(list, runtime, crons = []) {
|
|
|
331
349
|
});
|
|
332
350
|
}
|
|
333
351
|
})();
|
|
334
|
-
|
|
352
|
+
const worker = {
|
|
335
353
|
async stop() {
|
|
336
354
|
stopped = true;
|
|
337
355
|
if (timer)
|
|
338
356
|
clearTimeout(timer);
|
|
339
357
|
wake?.();
|
|
340
358
|
await loop;
|
|
359
|
+
running.delete(worker);
|
|
341
360
|
},
|
|
342
361
|
};
|
|
362
|
+
running.add(worker);
|
|
363
|
+
return worker;
|
|
343
364
|
},
|
|
344
365
|
};
|
|
366
|
+
workers.set(jobs, running);
|
|
345
367
|
async function run(record, now) {
|
|
368
|
+
const started = performance.now();
|
|
369
|
+
const outcome = runtime.tracing ? await runtime.tracing.run(record, (fail) => attempt(record, now, fail)) : await attempt(record, now);
|
|
370
|
+
runtime.onRun?.(record.name, outcome, performance.now() - started);
|
|
371
|
+
return outcome;
|
|
372
|
+
}
|
|
373
|
+
async function attempt(record, now, fail) {
|
|
346
374
|
const def = byName.get(record.name);
|
|
347
375
|
const touch = runtime.store.touch?.bind(runtime.store);
|
|
348
376
|
const heartbeat = touch ? setInterval(() => void touch(record.id).catch(() => { }), runtime.heartbeatMs ?? HEARTBEAT_MS) : undefined;
|
|
349
377
|
try {
|
|
350
378
|
if (!def)
|
|
351
379
|
throw new InferloError("IL6010", `"${record.name}" is not a registered job.`, { fix: "Add the job to createApp({ jobs: [...] }) in the process that runs jobs." });
|
|
352
|
-
await def.handler({ input: parse(def, record.input), db: runtime.db, ai: runtime.ai, jobs, id: record.id, attempt: record.attempts });
|
|
380
|
+
await def.handler({ input: parse(def, record.input), db: runtime.db, ai: runtime.ai, jobs, cache: runtime.cache, id: record.id, attempt: record.attempts, audit: runtime.audit({ name: record.name, id: record.id }) });
|
|
353
381
|
await runtime.store.update(record.id, { status: "done" });
|
|
354
382
|
return "done";
|
|
355
383
|
}
|
|
356
384
|
catch (error) {
|
|
385
|
+
fail?.(error);
|
|
357
386
|
const message = error instanceof Error ? error.message : String(error);
|
|
358
387
|
if (record.attempts < record.maxAttempts) {
|
|
359
388
|
await runtime.store.update(record.id, { status: "pending", lastError: message, runAt: new Date(now.getTime() + retryDelayMs(record.attempts)) });
|
package/dist/jobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
|
package/dist/koa.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inferlo inside Koa (2 and 3), without a runtime dependency on Koa:
|
|
3
|
+
*
|
|
4
|
+
* import Koa from "koa";
|
|
5
|
+
* import { createAI, anthropic } from "@browserlessapi/inferlo/ai";
|
|
6
|
+
* import { inferloAI, sendResponse, toKoaMiddleware } from "@browserlessapi/inferlo/koa";
|
|
7
|
+
*
|
|
8
|
+
* const koa = new Koa();
|
|
9
|
+
* koa.use(inferloAI(ai)); // ctx.ai in every middleware
|
|
10
|
+
* koa.use(toKoaMiddleware(inferloApp, { prefix: "/api" })); // or a whole Inferlo app under a path
|
|
11
|
+
* // stream AI text: sendResponse(ctx, ctx.ai.stream({ model: "fast", prompt }).toResponse())
|
|
12
|
+
*
|
|
13
|
+
* Importing this entry point adds `ai` to Koa's context type. It never loads the router, database or jobs code.
|
|
14
|
+
*/
|
|
15
|
+
import type { AI } from "./ai/index.ts";
|
|
16
|
+
import type { App } from "./app.ts";
|
|
17
|
+
import { type NodeHandlerOptions, type NodeRequest, type NodeResponse } from "./serve.ts";
|
|
18
|
+
declare module "koa" {
|
|
19
|
+
interface DefaultContext {
|
|
20
|
+
/** The AI client set by inferloAI() from @browserlessapi/inferlo/koa. */
|
|
21
|
+
ai: AI;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** The parts of a Koa context that this entry point uses. */
|
|
25
|
+
export interface KoaContextLike {
|
|
26
|
+
ai?: AI;
|
|
27
|
+
req: NodeRequest & {
|
|
28
|
+
readableEnded?: boolean;
|
|
29
|
+
};
|
|
30
|
+
res: NodeResponse;
|
|
31
|
+
method: string;
|
|
32
|
+
respond?: boolean;
|
|
33
|
+
/** Koa's request; a body parser puts the parsed body on request.body. */
|
|
34
|
+
request: object;
|
|
35
|
+
}
|
|
36
|
+
/** A Koa middleware: koa.use(...). */
|
|
37
|
+
export type KoaMiddleware = (ctx: KoaContextLike, next: () => Promise<unknown>) => Promise<void>;
|
|
38
|
+
/** Puts an AI client (createAI(...) or an Inferlo app's app.ai) on every Koa context as ctx.ai. */
|
|
39
|
+
export declare function inferloAI(ai: AI): KoaMiddleware;
|
|
40
|
+
/**
|
|
41
|
+
* Runs a whole Inferlo app (routes, auth, validation, OpenAPI and MCP) as Koa middleware. With prefix, only
|
|
42
|
+
* requests under it reach the app (the prefix is removed before routing) and the rest go to the next
|
|
43
|
+
* middleware. With fallthrough: true, requests the app has no route for go to the next middleware too.
|
|
44
|
+
* A body that a body parser already read (ctx.request.body) is used instead of the request stream.
|
|
45
|
+
*/
|
|
46
|
+
export declare function toKoaMiddleware(app: Pick<App<any>, "fetch">, options?: NodeHandlerOptions): KoaMiddleware;
|
|
47
|
+
/**
|
|
48
|
+
* Send a Web Response from a Koa middleware: status, headers (every Set-Cookie) and the body, streamed. Use it
|
|
49
|
+
* for AI streams: await sendResponse(ctx, ctx.ai.stream({ model: "fast", prompt }).toResponse()).
|
|
50
|
+
*/
|
|
51
|
+
export declare function sendResponse(ctx: Pick<KoaContextLike, "res" | "method" | "respond">, response: Response): Promise<void>;
|
package/dist/koa.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { assertAIClient } from "./ai-client.js";
|
|
2
|
+
import { toNodeHandler, writeResponse } from "./serve.js";
|
|
3
|
+
/** Puts an AI client (createAI(...) or an Inferlo app's app.ai) on every Koa context as ctx.ai. */
|
|
4
|
+
export function inferloAI(ai) {
|
|
5
|
+
assertAIClient(ai, 'Pass createAI({ providers, models }) from "@browserlessapi/inferlo/ai", or an Inferlo app\'s app.ai: koa.use(inferloAI(ai)).');
|
|
6
|
+
return async (ctx, next) => {
|
|
7
|
+
ctx.ai = ai;
|
|
8
|
+
await next();
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Runs a whole Inferlo app (routes, auth, validation, OpenAPI and MCP) as Koa middleware. With prefix, only
|
|
13
|
+
* requests under it reach the app (the prefix is removed before routing) and the rest go to the next
|
|
14
|
+
* middleware. With fallthrough: true, requests the app has no route for go to the next middleware too.
|
|
15
|
+
* A body that a body parser already read (ctx.request.body) is used instead of the request stream.
|
|
16
|
+
*/
|
|
17
|
+
export function toKoaMiddleware(app, options = {}) {
|
|
18
|
+
const handler = toNodeHandler(app, options);
|
|
19
|
+
return async (ctx, next) => {
|
|
20
|
+
let passed = false;
|
|
21
|
+
const req = ctx.req;
|
|
22
|
+
// koa-bodyparser and @koa/bodyparser read the stream and keep the result on ctx.request.body.
|
|
23
|
+
const parsed = ctx.request.body;
|
|
24
|
+
if (req.body === undefined && req.readableEnded && parsed !== undefined)
|
|
25
|
+
req.body = parsed;
|
|
26
|
+
await handler(req, ctx.res, () => {
|
|
27
|
+
passed = true;
|
|
28
|
+
});
|
|
29
|
+
if (passed) {
|
|
30
|
+
await next();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Inferlo wrote the response itself.
|
|
34
|
+
ctx.respond = false;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Send a Web Response from a Koa middleware: status, headers (every Set-Cookie) and the body, streamed. Use it
|
|
39
|
+
* for AI streams: await sendResponse(ctx, ctx.ai.stream({ model: "fast", prompt }).toResponse()).
|
|
40
|
+
*/
|
|
41
|
+
export async function sendResponse(ctx, response) {
|
|
42
|
+
ctx.respond = false;
|
|
43
|
+
await writeResponse(ctx.res, response, ctx.method);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=koa.js.map
|
package/dist/koa.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"koa.js","sourceRoot":"","sources":["../src/koa.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAgE,MAAM,YAAY,CAAC;AA0BxH,mGAAmG;AACnG,MAAM,UAAU,SAAS,CAAC,EAAM;IAC9B,cAAc,CAAC,EAAE,EAAE,8HAA8H,CAAC,CAAC;IACnJ,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;QACZ,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAA4B,EAAE,UAA8B,EAAE;IAC5F,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAgD,CAAC;QACjE,8FAA8F;QAC9F,MAAM,MAAM,GAAI,GAAG,CAAC,OAA8B,CAAC,IAAI,CAAC;QACxD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,IAAI,MAAM,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;QAC3F,MAAM,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;YAC/B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,qCAAqC;QACrC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAuD,EAAE,QAAkB;IAC5G,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC"}
|
package/dist/lambda.d.ts
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inferlo on AWS Lambda, without a dependency on the AWS SDK or any Lambda package:
|
|
3
|
+
*
|
|
4
|
+
* // src/lambda.ts
|
|
5
|
+
* import { toLambdaHandler } from "@browserlessapi/inferlo/lambda";
|
|
6
|
+
* import { app } from "./app.ts";
|
|
7
|
+
*
|
|
8
|
+
* export const handler = toLambdaHandler(app);
|
|
9
|
+
*
|
|
10
|
+
* The handler takes Lambda function URL and API Gateway events (HTTP API payload 2.0 and REST API payload 1.0),
|
|
11
|
+
* runs the whole Inferlo app (routes, auth, validation, rate limits, OpenAPI and MCP) and answers in the
|
|
12
|
+
* matching response format. With { streaming: true } it streams the answer (AI streams included) through Lambda
|
|
13
|
+
* response streaming, for function URLs with the RESPONSE_STREAM invoke mode.
|
|
14
|
+
*/
|
|
15
|
+
import type { App } from "./app.ts";
|
|
16
|
+
/** A Lambda function URL or API Gateway HTTP API event (payload format 2.0). */
|
|
17
|
+
export interface LambdaHttpEventV2 {
|
|
18
|
+
version: "2.0";
|
|
19
|
+
rawPath: string;
|
|
20
|
+
rawQueryString?: string;
|
|
21
|
+
headers?: Record<string, string | undefined>;
|
|
22
|
+
cookies?: string[];
|
|
23
|
+
body?: string | null;
|
|
24
|
+
isBase64Encoded?: boolean;
|
|
25
|
+
requestContext: {
|
|
26
|
+
domainName?: string;
|
|
27
|
+
http: {
|
|
28
|
+
method: string;
|
|
29
|
+
sourceIp?: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** An API Gateway REST API event (payload format 1.0). */
|
|
34
|
+
export interface LambdaHttpEventV1 {
|
|
35
|
+
version?: "1.0";
|
|
36
|
+
httpMethod: string;
|
|
37
|
+
path: string;
|
|
38
|
+
headers?: Record<string, string | undefined> | null;
|
|
39
|
+
multiValueHeaders?: Record<string, string[] | undefined> | null;
|
|
40
|
+
queryStringParameters?: Record<string, string | undefined> | null;
|
|
41
|
+
multiValueQueryStringParameters?: Record<string, string[] | undefined> | null;
|
|
42
|
+
body?: string | null;
|
|
43
|
+
isBase64Encoded?: boolean;
|
|
44
|
+
requestContext?: {
|
|
45
|
+
domainName?: string;
|
|
46
|
+
identity?: {
|
|
47
|
+
sourceIp?: string;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export type LambdaHttpEvent = LambdaHttpEventV2 | LambdaHttpEventV1;
|
|
52
|
+
/** The answer for a function URL or HTTP API event. */
|
|
53
|
+
export interface LambdaResultV2 {
|
|
54
|
+
statusCode: number;
|
|
55
|
+
headers: Record<string, string>;
|
|
56
|
+
cookies?: string[];
|
|
57
|
+
body: string;
|
|
58
|
+
isBase64Encoded: boolean;
|
|
59
|
+
}
|
|
60
|
+
/** The answer for a REST API event. */
|
|
61
|
+
export interface LambdaResultV1 {
|
|
62
|
+
statusCode: number;
|
|
63
|
+
headers: Record<string, string>;
|
|
64
|
+
multiValueHeaders: Record<string, string[]>;
|
|
65
|
+
body: string;
|
|
66
|
+
isBase64Encoded: boolean;
|
|
67
|
+
}
|
|
68
|
+
export type LambdaResult = LambdaResultV2 | LambdaResultV1;
|
|
69
|
+
/** A Lambda handler for HTTP events: export const handler = toLambdaHandler(app). */
|
|
70
|
+
export type LambdaHandler = (event: LambdaHttpEvent, context?: unknown) => Promise<LambdaResult>;
|
|
71
|
+
/** The writable stream Lambda passes to a streaming handler (the parts Inferlo uses). */
|
|
72
|
+
export interface LambdaResponseStream {
|
|
73
|
+
write(chunk: Uint8Array): boolean;
|
|
74
|
+
end(): void;
|
|
75
|
+
once?(event: "drain" | "error" | "close", listener: (...args: unknown[]) => void): unknown;
|
|
76
|
+
}
|
|
77
|
+
/** A streaming handler, already wrapped with awslambda.streamifyResponse. */
|
|
78
|
+
export type LambdaStreamingHandler = (event: LambdaHttpEvent, responseStream: LambdaResponseStream, context?: unknown) => Promise<void>;
|
|
79
|
+
/** The parts of the awslambda global (in the Lambda Node.js runtime) that streaming uses. */
|
|
80
|
+
export interface AwsLambdaGlobal {
|
|
81
|
+
streamifyResponse(handler: LambdaStreamingHandler): LambdaStreamingHandler;
|
|
82
|
+
HttpResponseStream: {
|
|
83
|
+
from(stream: LambdaResponseStream, metadata: {
|
|
84
|
+
statusCode: number;
|
|
85
|
+
headers: Record<string, string>;
|
|
86
|
+
cookies?: string[];
|
|
87
|
+
}): LambdaResponseStream;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export interface LambdaHandlerOptions {
|
|
91
|
+
/**
|
|
92
|
+
* A path prefix removed before the app routes the request, such as "/prod" for an HTTP API stage that is not
|
|
93
|
+
* $default, or "/api" when the function serves only that path. Requests outside it keep their path.
|
|
94
|
+
*/
|
|
95
|
+
prefix?: string;
|
|
96
|
+
/** Stream the answer with Lambda response streaming (function URLs with InvokeMode RESPONSE_STREAM). Default false. */
|
|
97
|
+
streaming?: boolean;
|
|
98
|
+
/** The awslambda global, for tests. Default: the one the Lambda Node.js runtime provides. */
|
|
99
|
+
awslambda?: AwsLambdaGlobal;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* A Lambda handler that runs a whole Inferlo app for function URL and API Gateway events:
|
|
103
|
+
* export const handler = toLambdaHandler(app). With { streaming: true }, answers stream through Lambda response streaming.
|
|
104
|
+
*/
|
|
105
|
+
export declare function toLambdaHandler(app: Pick<App<any>, "fetch">, options?: LambdaHandlerOptions & {
|
|
106
|
+
streaming?: false;
|
|
107
|
+
}): LambdaHandler;
|
|
108
|
+
export declare function toLambdaHandler(app: Pick<App<any>, "fetch">, options: LambdaHandlerOptions & {
|
|
109
|
+
streaming: true;
|
|
110
|
+
}): LambdaStreamingHandler;
|